1. 程式人生 > >{轉載}Circos繪圖(1)

{轉載}Circos繪圖(1)

Martin Krzywinski等人開發的Circos,一出現便引起轟動,它打破了常規基因組學資料視覺化的思路,通過對差異化互動資料的多維度展示,可以從不同層次全方位描述組學資訊,讓組學資料展示變成了藝術品。由於其實用性、美觀性,Circos如今也廣泛應用於社交網路、交通運輸等領域。 circos 下面,我們就一步一步做出這張圖(Circos包自帶的demo)。

配置安裝

最詳盡的介紹和資料都在官網,可以在這裡下載到最新的Circos軟體包。我使用的版本號為0.69,作業系統為Ubuntu16.04(xenial,64bit),Windows下配置略有不同,可參考官方說明。

Circos本身是基於Perl的,所以不需要編譯安裝。解壓下載的軟體包到你想要存放的位置,並將circos/bin加入環境變數即可。通過circos -modules

命令可以檢視相關Perl模組的安裝情況。Linux下CPAN可以通過$ 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 除了上述,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