{轉載}Circos繪圖(1)
由Martin Krzywinski等人開發的Circos,一出現便引起轟動,它打破了常規基因組學資料視覺化的思路,通過對差異化互動資料的多維度展示,可以從不同層次全方位描述組學資訊,讓組學資料展示變成了藝術品。由於其實用性、美觀性,Circos如今也廣泛應用於社交網路、交通運輸等領域。 下面,我們就一步一步做出這張圖(Circos包自帶的demo)。
配置安裝
最詳盡的介紹和資料都在官網,可以在這裡下載到最新的Circos軟體包。我使用的版本號為0.69,作業系統為Ubuntu16.04(xenial,64bit),Windows下配置略有不同,可參考官方說明。
Circos本身是基於Perl的,所以不需要編譯安裝。解壓下載的軟體包到你想要存放的位置,並將circos/bin加入環境變數即可。通過circos -modules
$ sudo perl -MCPAN -e shell
進入,然後執行install命令安裝相應模組。容易出問題的主要是GD,在CPAN中直接安裝GD可能出現錯誤:No success on command[/usr/bin/perl Build.PL –installdirs site],可以手動下載編譯GD包,不過個人建議直接安裝Ubuntu的libgd-perl包。
執行demo
我們需要認識到,Circos只是一個數據視覺化工具,並不對資料本身進行分析處理。從其執行命令circos -conf circos.conf
就可看出,所有的圖形配置資訊、資料檔案資訊等都可以儲存在*.conf檔案中。
如果直接執行circos
命令,程式會在預設的路徑下自動搜尋名為circos.conf的配置檔案,可通過命令circos -debug_group io
來檢視程式預設的搜尋路徑,為避免錯誤,還是推薦主動指定配置檔案。Circos包裡有自己的demo,可通過circos -conf yourpath/circos/example/etc/circos.conf
來執行,會在命令行當前目錄下生成png和svg兩個圖形檔案。
最簡配置
配置檔案中最少需要以下五個部分:
# Karyotypes karyotype = data/karyotype.human.txt,data/karyotype.mouse.txt,data/karyotype.rat.txt # Ideograms <ideogram> <spacing> default = 0.002r </spacing> thickness = 25p fill = yes radius = 0.80r </ideogram> # Image <image> <<include etc/image.conf>> </image> # RGB/HSV color definitions, color lists, location of fonts, fill patterns. <<include etc/colors_fonts_patterns.conf>> # Debugging, I/O and other system parameters <<include etc/housekeeping.conf>>
其中karyotype檔案描述了染色體的名字、大小等基本資訊,內容可以自主更改,不過這裡我們先使用Circos預設提供的資料。後續我們還可以把karyotype、ideogram等分別放入各自的.conf檔案中,通過<<include karyotype.conf>>
等來引用,便於分類管理。現在,我們得到了下圖,作為circos環圖的最基本狀態: 除了上述,Circos中進行圖層設定的還包含<ticks>
模組來描述染色體上的刻度及區塊,<zooms>
模組來描述擴大或壓縮的區域等;進行資料設定的還包含<highlights>
標識高亮顯示、<plots>
描述資料圖、<links>
新增網路連線等;另外還有子模組<rules>
描述註釋規則、<backgrounds>
描述背景圖層、<axes>
描述座標軸等。
資料檔案格式
Circos主要有四個模組需要輸入資料檔案,包括karyotype以及<highlight>
<plot>
<link>
,格式要求都很簡單,通過文字進行編輯即可。Circos預設使用空格作為分隔符,也可以在配置檔案中通過命令file_delim = \t
進行設定。
Karyotype可被視為circos環圖的資料基礎,描述了染色體的相關資訊,其基本資料格式如下:
chr - hs1 1 0 249250621 chr1
chr - hs2 2 0 243199373 chr2
chr - hs3 3 0 198022430 chr3
...
需要注意的是,Circos使用字首hs代表人類,而這裡的chr1實際代表顏色(使用chr表示非物種特異)。同時還可以新增別的資訊,如染色體條帶等:
band hs1 p36.33 p36.33 0 2300000 gneg
band hs1 p36.32 p36.32 2300000 5400000 gpos25
band hs1 p36.31 p36.31 5400000 7200000 gneg
...
其它資料的格式主要有:
#chr start end [options]
hs5 50 75
#chr start end value [options]
hs5 50 75 0.75
hs5 50 75 ABC
[options]
裡的資訊一般是<highlight> <plot> <link>
裡用到的變數或是顏色之類,如:
chr start end var1=value1,var2=value2,...
chr start end color=(R,G,B)
# 由於circos環圖中元素眾多,可能出現層次疊加問題,故可使用z值來界定,z值大的會覆蓋在小的上面顯示
chr start end z=1
對於連結資料links,格式有兩種,一種是兩個端點在同一行,即:
# chr1 start1 end1 chr2 start2 end2 [options]
hs1 200 300 hs10 1100 1300
hs7 50 150 hs 5000 6000 color=blue
另一種是通過唯一的id來標識兩個端點:
# id chr start end [options]
link01 hs1 200 300
link01 hs2 1200 1300
link02 hs11 2200 2300
link02 hs21 4200 4300