小白的circos学习笔记(一)

  距离上次画circos图,已经4个月了,至今仍然记得当时在Linux下装Perl模块时的惨烈。最后果断选择用Windows版的,至于如何在Windows下配置circos运行环境,有时间再写一篇吧。

菜鸟的吐槽:Linux系统下不是root用户就是麻烦,不过后来听说了一种无痛安装Perl模块的方法,就是非root用户自己下载安装一个perl,添加到环境变量中,CPAN什么的都依赖这个自己专属的perl。我还没试过。

  circos图其实本质跟其他描述基因组特征的软件包差不多,只需要知道一个区间/位置加上该区间/位置对应的属性就可以了,展现方式有多种多样,比如:线图、柱形图、热图、弦图等等。之前看到一些评论说circos图“装13大于实用”,我不太赞成这种说法,因为很多时候circos图确实可以很好地展现值的大小和交互关系。
  最开始接触这种图的时候也觉得挺复杂的,后来理解了其配置文件之后,发现也没那么难。

1. 需要准备哪些数据

1.1 karyotype.txt

这个文件用来描述染色体,一般放在circos图的外圈

chr -   NC_027757.2 A1  0   35822559    chr1
chr -   NC_027758.2 A2  0   35332830    chr2
chr -   NC_027759.2 A3  0   49139117    chr3
chr -   NC_027760.2 A4  0   23556786    chr4
chr -   NC_027761.2 A5  0   31473442    chr5

第1、2列一般不变,第3列是其它画图数据文件中的染色体名称,第4列表示换个名字,5、6列染色体起止位置,7列描述颜色(目前我可以确定的是chr1-chr22各表示一种颜色)。

1.2 每一圈需要什么样的数据

以snp密度的圈图为例,我需要知道在特定大小的窗口内,有多少个snp。就像这样,

NC_027757.2 1   10000   51
NC_027757.2 10001   20000   90
NC_027757.2 20001   30000   48
NC_027757.2 30001   40000   2
NC_027757.2 40001   50000   21

再比如,gene密度的圈图,需要知道gene的区间,再将区间highlight出来。因为区间不大,一个gene看上去就像一条细线

NC_027757.2 6637    9236
NC_027757.2 15630   16233
NC_027757.2 22106   23935
NC_027757.2 24221   25607
NC_027757.2 31070   40586

......

2. 基本的配置文件

先来看看软件安装成功后有哪些子文件夹,如下:

小白的circos学习笔记(一)_第1张图片

我的习惯是把所有配置写到一个文件中去。

#以下几列和部分是画染色体的
karyotype = my_data/my_karyotype/karyotype.txt #karyotype.txt的路径
chromosomes_order_by_karyotype = yes #是否按照karyotype.txt文件中的顺序来画染色体
chromosomes_units              = 1000000 #将1000000碱基看作一个染色体单元
chromosomes_display_default    = yes #是否展示全部染色体
                                     #如果是no,则需要重新设置染色体,比如: chromosomes = 染色体1名称;染色体2名称
#设置染色体颜色chromosomes_color = 染色体1名称=red;染色体2名称=vvdred;染色体3名称=vvlred
#其实只要将karyotype.txt最后一列定义为chr1-chrN即可;当然上面这种方法是可以的,不过很麻烦,且一时也想不到那么多颜色
######################################################

show = yes
radius=0.90r
thickness = 25p #染色体的宽度
fill = yes #是否填充

#设定ideograms轮廓,就是在染色体外边框加线
#stroke_thickness = 1
#stroke_color = black

#染色体外圈的标签,比如chr1A、chr2A......
show_label = yes
label_font = default
label_radius=1r+90p
label_size=40
label_parallel = yes

#染色体之间的间隔

default = 0.005r
# #在特定的两条染色体之间加上自定义的距离
#spacing = 3r
#


######################################################
#以下部分是画染色体刻度的
show_ticks = yes
show_tick_labels = yes

tick_label_font  = light
radius=1r
color = black
thickness = 2p
multiplier = 1e-6 #物理位置乘以这个数来表示刻度位置,比如物理位置是10000000位碱基,则在刻度上为10
format=%d #刻度位置显示为十进制整数

#设置标尺上的大刻度

spacing = 10u #10个染色体单元,即10000000碱基长度
size = 12p
show_label=yes
#设置ticks'label离ticks的距离
label_offset = 10p
#设置ticks'label的字体大小
label_size = 20p

#设置标尺上的小刻度

spacing = 1u
size = 6p


######################################################
#下面就是plot部分了,比如我要画一个snp密度图,和gene密度图


type = line
thickness = 2
max_gap = 1u
file = my_data/wes_snpden.cir.txt
color = vvlpblue
min    = 0
max    = 1000 #设置y轴的范围,超过的部分显示不了
r0     = 0.75r
r1     = 0.85r


type = highlight
file = my_data/gene.cir.txt
r1 = 0.95r
r0 = 0.9r
stroke_color = green
stroke_thickness = 0.05
fill_color = green


######################################################
#以下部分可以不用更改

<>

<>
<>

3. cmd命令行下运行

当然先要cd到指定目录下,再运行程序,比如:

E:\E盘备份\circos\circos-0.69-6\circos-0.69-6\my_circos>..\bin\circos -conf ..\my_conf\circos_test.conf -outputfile test
# E:\E盘备份\circos\circos-0.69-6\circos-0.69-6\my_circos——是我的当前目录
# ..\bin\circos——用相对路径调用circos程序
# -conf ..\my_conf\circos_test.conf——添加配置文件
# -outputfile test——在当前目录下生成名为test的结果文件

之后在当前目录下就能看到两个结果文件了

小白的circos学习笔记(一)_第2张图片

4. 结果展示

祝各位画图愉快!

小白的circos学习笔记(一)_第3张图片

你可能感兴趣的:(小白的circos学习笔记(一))