寫在寫在前面的前面
我不喜歡調用外部程序,如果是簡單的事情。我覺得應該用最簡單的方式來實現。如果你只是想畫一個簡單的Circos圖,perl?不用的。R?不用的。網頁?不用的。復雜的配置文件?一樣不用的。
你只需要一個體積為 4,000KB+ 的 TBtools。
寫在前面
當矩形無法滿足你的時候,那么就掰彎他。
為了在一個中午的時間內寫一個所有人都可以秒速掌握的Circos圖繪制工具,事實上,我早已做好準備。詳細可見公眾號的歷史消息。
前期的準備,大體包括:
- JIGplot中SubPanel的掰彎
- 文本在笛卡爾坐標系中的重疊以及在極坐標系中的重疊處理(用了很長時間,想明白一個簡答的處理方式)
- 一個繪制Circos的需求
三者兼備,于是在前兩天學院每周一停電的中午,我就寫出了這個工具。工具是寫完了,然而能讓這個工具實現價值的數據,目前還在難產。我更新到社區,嗯。。。大體收獲了幾個圖,但目前似乎并沒有讓我驚艷的。
索性,就寫上一貼。我想試試看,
是否有可能讓Circos圖,正如基因家族分析一樣,變得任何人都輕易掌握和完成?。
進入主題
TBtools的所有工具,面向的都是絕對的生物學背景,所以每一個輸入格式的考量,都會盡可能地考慮到容易獲得或者容易整理。接下來逐點說明輸入文件格式,同時,給出一個所有人必然能直接重復出來的結果。
TBtools的Circos工具主界面如下
接下來逐點說明輸入
1.必須骨架文件,比如染色體長度文件,格式為,注意文本文件,制表符分隔
-
可選文件,比如基因展示在染色體的圈圖上,格式為,最后一列的顏色R,G,B值是可選的
3.可選文件,比如展示一些區域之間的關聯關系,如共線性基因或者大片段區域,如,顏色是可選的,開始是#號的行,會被忽略
點擊Add就可以增加Track,Track你是可以隨意增加,任何數目,直到你開心。點擊一次,出現一個Track的配置信息,
4.一個Track要對應一個文件(一個文件可以用多次,在不同的Track)
Track的類型有四種
- Line 線圖
- Bar 柱形圖
- Heatmap 熱圖
- Tile 畫矩形(在極坐標系下就變成Ring),主要是做注釋
前三種Track的輸入數據很簡單,區域帶上一個值
Tile的輸入數據有所不同,最后一列不是值,而是一個RGB字符串,如
多選框,設置Track的類型
主要是針對Tile以外的Track,設置無重疊滑窗之后匯總信息的模式,比如Sum,就是將一個區域的所有值加和,Mean就是取平均
設置滑窗的寬度,一般是10 000
其他四個摁鈕,點擊就是設置一些顏色
注意One Color Two Color Three Color 中
而One Color 對于除Tile外的所有Track的顏色生效
另外兩個Color 只對熱圖生效,用于生成熱階
寫的太多,不如一個示例操作
示例
下面的示例只以擬南芥的基因組展開,而我并沒有說,只能是一個基因組,或者只能是基因組信息。工具如何使用,是看個人,不是看開發者。
1.打開TBtools
2. 準備一個染色體長度文件
這是一個骨架,事實上,你可以自己編一個。這里我們假設,手上只有擬南芥的基因組序列,使用TBtools的Fasta Stater
拖進來基因組序列,設置輸出文件,點擊開始
用Excel打開,整理得到對應的每條染色體的長度信息
3. 準備一些track文件
假設我們手上也有擬南芥的基因注釋結果(.gff3)文件,那么我們可以看下擬南芥的基因密度
用TBtools的表格操作工具(或者Excel也可以)
使用Excel打開輸出文件,只保留著四列
增加一列,全部標記為 1
有了以上兩個信息,其實我們就可以做很多東西了,比如展示基因密度,首先是打開TBtools的Super Circos
設置輸入文件
然后點擊“Show My Circos Plot”,得到一個結果
這個沒啥用,因為根本沒顯示任何東西,我們剛才是對每一個基因寫了1,所以最終binning的結果,是Mean,并沒有意義
修改一下
于是基因密度的線圖就出來了
線圖不夠炫酷,我們畫個柱形圖
這個BInSize也放大一些
恩,柱形圖也不好看,要不就畫熱圖
看起來就像模像樣的,當然顏色可以隨便調
事實上,很多Track是可以組合的,比如
也可以是堆疊在一起
正負鏈放在一起還是比較丑的,事實上,你可以按照正負鏈分開,然后畫成兩個Track,這里就不展示了。
4. 展示一些有關聯的區域
比如共線性的一些基因,你通過各種方式得到基因對
那么可以在TBtools的幫助下,獲得LinkedRegion信息,
首先是獲取所有基因的位置信息
設置輸入的gff3文件,并設置兩個輸出文件
隨后只保留部分的列,
整理成Chr GeneID StartPos EndPos 格式
另存為文本制表符分隔
打開TBtools一個不錯的工具,將基因對信息,直接轉換為LinkedRegion信息
終于,我們得到這個文件
于是可以導入TBtools作為linkedInfo
于是Linked信息就展示出來了,雖然似乎沒什么用
一般你準備這些數據的過程中,有些linkedRegion是需要高亮的,比如一些基因對,那么可以在對應的lInkedInfo后面加顏色信息
保存文本文件,重新點擊Show My Circos Plot就可以了
配色是一個重要的問題....
這里只展示功能就不調了,有時候,你想要展示的是一個大的region
5.展示一些文本標簽上去
比如擬南芥的ARF基因家族....
然后我們保存一個文本文件,丟給TBtools就可以了
恩,都是黑色的,不太好看,所以我們在后面加一些顏色
比如我們順便改一下ID的標簽
于是顏色也修改了,。。配色看個人,不糾結
你以為這樣就完了,肯定不是!
看到
點擊這個彈出一些控制參數
這么多參數,你自己體會,這里就大概操作一下,搞的這張圖好像還可以看一樣,比如文本要移動出去
5.展示一些區域的注釋
你真的以為這樣就結束了嗎?當然不是!
你還可以配置一個文件,對region進行注釋,假設有QTL的區間對嗎?我來偽裝一個給你
也就是最后一列不再是數值,直接是顏色,然后...導入啊
然后你用面板的參數調整,按照參數,你應該會得到這么一張圖
6.似乎完了
你不會真的以為這樣就結束了?!當然不是啊。
還有JIGplot啊,不要忘了,這個圖是交互的啊
我鼠標拖以下,標簽就出來了
我右鍵一下,還可以改顏色啊
7.當然還有,但是我不想寫了....
事實上,基因密度什么的,你可以換成表達量?,GC含量等等,這些需要自己折騰了。
可能有人最關心的問題是,圖片導出
寫在最后
很多時候,看起來簡單的,或許很復雜;反之亦然。
Circos是一個Perl軟件,可以畫出極其復雜而炫酷的圖片。這個我可能暫時不會去追求(如果真的去追求那個,那么我肯定是要發CNS了吧...)
很多時候,很多生信分析,或者說圖形繪制,大多數人的需求是比較簡單的。正如perl的哲學一樣,可以很快速而方便地完成簡單的事情,而復雜的事情,努力一下,也不是不可以。
做生物學問題的朋友,其實并不可能有足夠的時間掌握各種工具,尤其是跟命令行操作相關的。即使使用Perl Circos繪制了一個圖,那下次呢?復雜的配置文件邏輯,不得不說太過麻煩。
Anyway,以上都是胡扯。
我只是想說,
畫一個圖,可能比較簡單,寫一個工具會比較麻煩,打一個GUI很 痛苦,而做一個所有人都能上手用的工具,。。。。
正如Horticulture Research主編程老師所說,既然你做了,那么就發表出來。
Done!
祝你們科研順利,這個工具的使用,暫時不會回復任何使用問題,因為我已經寫得很穩健了,按照這篇推文操作,不會有問題!
如果有問題,確實需要得到回復。歡迎大額支持我們課題組成員的戶外擴展活動。
詳細請訪問課題組網站 http://xialab.scau.edu.cn/