??距離上次畫circos圖,已經(jīng)4個(gè)月了,至今仍然記得當(dāng)時(shí)在Linux下裝Perl模塊時(shí)的慘烈。最后果斷選擇用Windows版的,至于如何在Windows下配置circos運(yùn)行環(huán)境,有時(shí)間再寫一篇吧。
菜鳥的吐槽:Linux系統(tǒng)下不是root用戶就是麻煩,不過后來聽說了一種無痛安裝Perl模塊的方法,就是非root用戶自己下載安裝一個(gè)perl,添加到環(huán)境變量中,CPAN什么的都依賴這個(gè)自己專屬的perl。我還沒試過。
??circos圖其實(shí)本質(zhì)跟其他描述基因組特征的軟件包差不多,只需要知道一個(gè)區(qū)間/位置加上該區(qū)間/位置對(duì)應(yīng)的屬性就可以了,展現(xiàn)方式有多種多樣,比如:線圖、柱形圖、熱圖、弦圖等等。之前看到一些評(píng)論說circos圖“裝13大于實(shí)用”,我不太贊成這種說法,因?yàn)楹芏鄷r(shí)候circos圖確實(shí)可以很好地展現(xiàn)值的大小和交互關(guān)系。
??最開始接觸這種圖的時(shí)候也覺得挺復(fù)雜的,后來理解了其配置文件之后,發(fā)現(xiàn)也沒那么難。
1. 需要準(zhǔn)備哪些數(shù)據(jù)
1.1 karyotype.txt
這個(gè)文件用來描述染色體,一般放在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列是其它畫圖數(shù)據(jù)文件中的染色體名稱,第4列表示換個(gè)名字,5、6列染色體起止位置,7列描述顏色(目前我可以確定的是chr1-chr22各表示一種顏色)。
1.2 每一圈需要什么樣的數(shù)據(jù)
以snp密度的圈圖為例,我需要知道在特定大小的窗口內(nèi),有多少個(gè)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的區(qū)間,再將區(qū)間highlight出來。因?yàn)閰^(qū)間不大,一個(gè)gene看上去就像一條細(xì)線
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. 基本的配置文件
先來看看軟件安裝成功后有哪些子文件夾,如下:

我的習(xí)慣是把所有配置寫到一個(gè)文件中去。
#以下幾列和<ideogram>部分是畫染色體的
karyotype = my_data/my_karyotype/karyotype.txt #karyotype.txt的路徑
chromosomes_order_by_karyotype = yes #是否按照karyotype.txt文件中的順序來畫染色體
chromosomes_units = 1000000 #將1000000堿基看作一個(gè)染色體單元
chromosomes_display_default = yes #是否展示全部染色體
#如果是no,則需要重新設(shè)置染色體,比如: chromosomes = 染色體1名稱;染色體2名稱
#設(shè)置染色體顏色chromosomes_color = 染色體1名稱=red;染色體2名稱=vvdred;染色體3名稱=vvlred
#其實(shí)只要將karyotype.txt最后一列定義為chr1-chrN即可;當(dāng)然上面這種方法是可以的,不過很麻煩,且一時(shí)也想不到那么多顏色
######################################################
<ideogram>
show = yes
radius=0.90r
thickness = 25p #染色體的寬度
fill = yes #是否填充
#設(shè)定ideograms輪廓,就是在染色體外邊框加線
#stroke_thickness = 1
#stroke_color = black
#染色體外圈的標(biāo)簽,比如chr1A、chr2A......
show_label = yes
label_font = default
label_radius=1r+90p
label_size=40
label_parallel = yes
#染色體之間的間隔
<spacing>
default = 0.005r
#<pairwise "/chr1A/ /chr2A/"> #在特定的兩條染色體之間加上自定義的距離
#spacing = 3r
#</pairwise>
</spacing>
</ideogram>
######################################################
#以下部分是畫染色體刻度的
show_ticks = yes
show_tick_labels = yes
<ticks>
tick_label_font = light
radius=1r
color = black
thickness = 2p
multiplier = 1e-6 #物理位置乘以這個(gè)數(shù)來表示刻度位置,比如物理位置是10000000位堿基,則在刻度上為10
format=%d #刻度位置顯示為十進(jìn)制整數(shù)
#設(shè)置標(biāo)尺上的大刻度
<tick>
spacing = 10u #10個(gè)染色體單元,即10000000堿基長(zhǎng)度
size = 12p
show_label=yes
#設(shè)置ticks'label離ticks的距離
label_offset = 10p
#設(shè)置ticks'label的字體大小
label_size = 20p
</tick>
#設(shè)置標(biāo)尺上的小刻度
<tick>
spacing = 1u
size = 6p
</tick>
</ticks>
######################################################
#下面就是plot部分了,比如我要畫一個(gè)snp密度圖,和gene密度圖
<plots>
<plot>
type = line
thickness = 2
max_gap = 1u
file = my_data/wes_snpden.cir.txt
color = vvlpblue
min = 0
max = 1000 #設(shè)置y軸的范圍,超過的部分顯示不了
r0 = 0.75r
r1 = 0.85r
</plot>
<plot>
type = highlight
file = my_data/gene.cir.txt
r1 = 0.95r
r0 = 0.9r
stroke_color = green
stroke_thickness = 0.05
fill_color = green
</plot>
</plots>
######################################################
#以下部分可以不用更改
<image>
<<include etc/image.conf>>
</image>
<<include etc/colors_fonts_patterns.conf>>
<<include etc/housekeeping.conf>>
3. cmd命令行下運(yùn)行
當(dāng)然先要cd到指定目錄下,再運(yùn)行程序,比如:
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——是我的當(dāng)前目錄
# ..\bin\circos——用相對(duì)路徑調(diào)用circos程序
# -conf ..\my_conf\circos_test.conf——添加配置文件
# -outputfile test——在當(dāng)前目錄下生成名為test的結(jié)果文件
之后在當(dāng)前目錄下就能看到兩個(gè)結(jié)果文件了

4. 結(jié)果展示
祝各位畫圖愉快!
