前言
最近进行基因组数据分析,绘制圈图,想做两个基因组的比较分析,通过查询文献,发现棉花基因组圈图在细节方面做的较好,主要就是染色体排布中间对称,这样共线性连线就不会出现交叉现象,于是尝试从头开始利用circos绘制圈图。通过不断调整,成品如下:
1. 软件安装:
conda install -c bioconda circos
可能会出现报错:GD模块没有安装,可以直接下载GD模块,手动安装。
2. 文件准备
安装好Circos以后,就可以进行绘图,首先创建一个文件夹,在文件夹中准备相关配置文件:
1.circos.conf
2.ideogram.conf
3.ideogram.label.conf
4.ideogram.position.conf
5.bands.conf
6.ticks.conf
另外,在当前文件夹在创建一个文件夹data,存放自己准备的数据文件,例如我的圈图准备画8层:
1.karyotype
2.Genedensity
3.GC_content
4.Expression1
5.Expression2
6.Expression3
7.Copia/Gypsy
8.link
准备好以上文件(文件基本格式:chr start end value,共4列\t隔开),运行以下命令即可输出图片circos.png和circos.svg:
circos -conf circos.conf
接下来详细介绍文件的准备
3. 配置文件:circos.conf
circos.conf是circos的主要配置文件,画图也是通过命令:circos -conf circos.conf来完成,但circos.conf引用了文件夹中其他配置文件,如:ideogram.conf,bands.conf等,另外还有安装文件etc中的一些配置文件(conda安装的位置:~/.conda/pkgs/circos-0.69.8-hdfd78af_1/etc/),如:housekeeping.conf,image.generic.conf等。
circos.conf文件格式:
show_scatter = yes
show_line = yes
show_histogram = yes
show_heatmap = yes
show_tile = yes
show_highlight = yes
use_rules = yes
<<include colors_fonts_patterns.conf>> #<<>>表示引用的其他配置文件,在当前文件和系统的etc文件中查找
<<include ideogram.conf>>
<<include ticks.conf>>
<<include etc/housekeeping.conf>>
<<include etc/image.conf>>
karyotype = data/1.karyotype
#1.karyotype为染色体信息文件,格式如下:
#chr - a1 a.Chr01 0 23931628 chr1
#chr - a2 a.Chr02 0 56312238 chr2
#chr - a3 a.Chr03 0 61034414 chr3
chromosomes_units = 2000000 #染色体的单位2M,如果是一个染色体可以设置为1M
#chromosomes_reverse = /b[1-18]/
chromosomes_reverse = b1,b2,b3... #设置染色体方向
chromosomes_order = a1,a2,...a18,b18,....b2,b1#设置染色体排列顺序,物种a:1-18,物种b:18-1,同时物种b通过chromosomes_reverse设置为染色体反向,这样保证了中间对称,更美观,
<links> #<links> 和</links>之间的部分是进行link的设置,格式和html相似
z = 0
radius = 0.39r #绘图半径0.39r
thickness = 1p #设置连线粗细
<link>
z = 50
color = grey #总体设置连线颜色,后面<rule>可以重新设置
thichness = 4
file = data/8.link #读取文件
#link文件格式:
#a1 6343321 6346963 b1 7987463 7991529
#a1 7081344 7082400 b1 8185204 8186260
#a1 7113128 7114630 b1 8217069 8218575
<rules>#个性化设置
<rule>
condition = var(chr1) eq "a1" #对染色体a1进行设置
color = 154,103,2 #对染色体a1颜色进行设置
</rule>
<rule>#<rule>到</rule>为一个设置单元
condition = var(chr1) eq "a2" #对染色体a1颜色进行设置
color = 102,102,0
</rule>
...
</rules>
</link>
</links>
#以上<links>到</links>是对中心link区域的设置,以下<plots>到</plots>是对其他层画图设置
<plots>
<plot>#<plot><plot>是对其中一层的画图设置,其他层类似设置
type = histogram #画图类型为柱状图
color = 190,166,46 #颜色
file = data/3.GC_content #读取文件
#文件格式,窗口为1M
#a5 1 1000000 0.0396
#a5 1000001 2000000 0.0435
#a5 2000001 3000000 0.0288
fill_color = 190,166,46#填充颜色
r0 = 0.40r #图层位置0.40r到 0.40r+100p之间
r1 = 0.40r+100p
orientation = out #朝向外
min = 0#显示最大最小值设置
max = 0.1
<backgrounds>
<background>#背景色设置
color = 241,239,239
</background>
</backgrounds>
</plot>
...#其他图层参考上面设置
<\plots>
注:以上是circos.conf文件设置,最重要,也是相对较为复杂的一个文件
4. 配置文件:ideogram.conf
以下是染色体配置文件:
<ideogram>
<spacing>
default = 0.005r#染色体之间间隔距离
<pairwise a1;b1>#设置其中两个染色体之间距离
spacing = 6r #在图形上面留下空白区域
</pairwise>
<pairwise a18;b18>
spacing = 6r#在图形下面对称留下空白区域
</pairwise>
</spacing>
<<include ideogram.position.conf>>
<<include ideogram.label.conf>>
<<include bands.conf>>
radius* = 0.825r
</ideogram>
5. 配置文件:ideogram.label.conf
染色体标签设置:
show_label = yes
label_font = bold#设置为黑体
label_radius = 1.075r#位置
label_size = 28#字体大小
label_parallel = yes #与圆相切
label_format = eval(sprintf("%s",var(label))) #标签格式为文本格式
6. 配置文件:ideogram.position.conf
染色体位置文件:
radius = 0.90r
thickness = 20p
fill = yes
fill_color = dgrey
stroke_thickness = 2p
troke_thickness = 0
7. 配置文件:bands.conf
show_bands = yes
fill_bands = yes
band_stroke_thickness = 2
band_stroke_color = white
band_transparency = 0
8. 配置文件:ticks.conf
对染色体刻度和刻度标签进行设置:
show_ticks = yes
show_tick_labels = yes
<ticks>
radius = dims(ideogram,radius_outer)
orientation = out
label_multiplier = 1e-6
color = black
size = 20p
thickness = 2p
label_offset = 4p
format = %d
<tick>
spacing = 1u
show_label = no
size = 10p
</tick>
<tick>
spacing = 5u
show_label = no
label_size = 20p
size = 15p
</tick>
<tick>
spacing = 10u
show_label = yes
label_size = 24p
</tick>
</ticks>
9. 配置文件:housekeeping.conf和image.generic.conf
配置文件housekeeping.conf和image.generic.conf,位于安装文件的etc文件中,一般不需要修改,有时候却可以修改,如:
(1). 在画图的时候如果一个文件的比如基因密度或GC含量,需要画图的位点超过25000个的时候就会报错,但我们可以在housekeeping.conf文件中,找到max_links,max_points_per_track的位置根据自己的情况进行修改:
max_links = 25000
max_points_per_track = 25000
(2). 在默认条件下绘制的第一个染色体的位置是从3点钟的位置开始,如果想调整起始位置,可以调整image.generic.conf文件中的参数,如angle_offset = -90 ,这时第一个染色体的位置是从12点钟的位置开始,如果我们想在上方留出空白区域可以设置:angle_offset = -85.