基因組共線性分析-JCVI

由于忙課題的原因国章,斷更了好久,雖然斷更的時(shí)間內(nèi)學(xué)習(xí)到了很多東西豆村,但細(xì)想一下還是記錄在自己博客里比較好液兽,方便自己查閱也方便其他人學(xué)習(xí)

JCVI這個(gè)軟件網(wǎng)上有太多教程,再記錄一次是想按照自己平時(shí)的使用習(xí)慣把整個(gè)流程從頭到尾捋一遍

安裝

能conda就conda掌动,就一個(gè)字四啰,省心!

conda create -n jcvi
conda install jcvi

準(zhǔn)備文件

分析需要用到 最長的轉(zhuǎn)錄本粗恢,很多軟件分析時(shí)其實(shí)已經(jīng)內(nèi)置了相應(yīng)的程序柑晒,可以使用以下的方法來提取

less your_gff.gff |grep "mRNA"|cut -d ";" -f1|cut -f1,4,5,7,9|awk -vOFS="\t" '{print$1,($2-1),$3,$5,"0",$4}'|sed 's/ID=//g' > your.bed
conda activate jcvi
python -m jcvi.formats.bed uniq your.bed
seqkit grep -f <(cut -f4 your.uniq.bed) your_pep.fa > your_pep.long.fa

利用上面的方法把需要分析的物種的bed文件以及蛋白或cds的fasta文件準(zhǔn)備好
姑且稱之為A.bed, A.pep, B.bed, B.pep

分析

python -m jcvi.compara.catalog ortholog A B  --dbtype prot --cscore=.99

我用的是蛋白序列文件,所以加個(gè) --dbtype prot眷射,cds序列則不需要

1匙赞,先分析整體的共線性(可視化)

1.1
對(duì)上面分析的結(jié)果進(jìn)行一個(gè)簡單過濾

python -m jcvi.compara.synteny screen --minspan=30 --simple A.B.anchors A.B.anchors.new

--minspan: remove blocks with less span than this.跨度小于30個(gè)基因的block將會(huì)移除

1.2
創(chuàng)建seqid文件佛掖,想展示哪些染色體就將其寫入到這個(gè)文件中

Chr1A,Chr2A,Chr3A,Chr4A,Chr5A
Chr1B,Chr2B,Chr3B,Chr4B,Chr5B

1.3
創(chuàng)建layout文件,用于設(shè)置繪圖參數(shù)涌庭,最終出圖都是通過調(diào)整這個(gè)文件來達(dá)到自己想要的效果芥被。

# y, xstart, xend, rotation, color, label, va,  bed
 .6,     .2,    .8,       0,      , A, top, A.bed
 .4,     .2,    .8,       0,      , B, top, B.bed
# edges
e, 0, 1, aly.ath.anchors.simple

y為縱軸位置,x為橫軸位置坐榆,rotation為旋轉(zhuǎn)角度拴魄,比如45或者-45啥的,看自己需求席镀,label就是基因組名字了匹中,后面的top表示名字在染色體上方表示,也可以設(shè)置left愉昆,right职员,bottom麻蹋。
edges那里就是連線跛溉,0是第一個(gè)基因組,1是第二個(gè)扮授,然后就是3芳室,4...,想讓哪兩個(gè)連線就設(shè)置好對(duì)應(yīng)的edgessimple文件

最后運(yùn)行命令

python -m jcvi.graphics.karyotype seqids layout
2,局部共線性分析(可視化)

獲得block文件

python -m jcvi.compara.synteny mcscan A.bed A.B.lifted.anchors --iter=1 -o A.B.i1.blocks

解釋一下的話就是刹勃,以A基因組作為標(biāo)準(zhǔn)堪侯,從B中得到對(duì)應(yīng)的共線性基因,假如B中有的基因而A中沒有的話是無法知道的荔仁,--iter=1表示基因是一對(duì)一伍宦,參數(shù)調(diào)整范圍為1-100
如果有更多基因組的話,可以繼續(xù)按照上面的流程得到blocks

python -m jcvi.compara.synteny mcscan A.bed A.C.lifted.anchors --iter=1 -o A.C.i1.blocks
#然后將這些block合并到一起
paste *.i1.blocks|cut -f1,2,4 > all.i1.blocks
#合并bed文件
cat A.bed B.bed C.bed > all.bed

準(zhǔn)備layout文件

# x,   y, rotation,     ha,     va, color, ratio,            label
0.2, 0.3,        0,  center,    bottom,   ,    .8,         1A
0.8, 0.3,        0,  center,    bottom,   ,    .8,         1B
0.47, 0.3,        0,  center,    bottom,   ,    .8,         1C
# edges
e, 0, 1
e, 1, 2
e, 2, 3

三個(gè)基因組的話差不多就這樣乏梁,跟上面的差不多次洼,不做過多解釋了,這些數(shù)字是我亂寫的遇骑,畫的時(shí)候多試試就知道了

最后卖毁!畫圖!

python -m jcvi.graphics.synteny all.i1.blocks all.bed layout

寫在最后

以上就是全部內(nèi)容了落萎,除了沒放結(jié)果展示亥啦,基本上分析下來是沒有問題的,當(dāng)然主要是寫給我看的练链,所以不會(huì)像其他博主一樣面面俱到

更新一下內(nèi)容

之前一直用的舊版本的JCVI翔脱,今天才發(fā)現(xiàn)有更新
如果不想在共線性圖上展示染色體編號(hào)的話可以加一個(gè)--nocircles

python -m jcvi.graphics.karyotype seqids layout.2 --nocircle

如果不想用曲線,可以加--shadestyle=line
最后展示下多基因組的共線性圖

測試下

再次更新

展示整個(gè)基因組內(nèi)感興趣基因的共線性
近期想要在兩個(gè)小麥基因組間看一下感興趣基因的共線性媒鼓,并需要把相應(yīng)的基因標(biāo)識(shí)出來碍侦,有需求就有更新粱坤,這個(gè)操作跟全基因組展示基因家族的共線性是一個(gè)道理,做基因家族的朋友也可以參考一下瓷产。要畫這個(gè)圖其實(shí)很簡單站玄,跟 1.3 的流程是一樣的,關(guān)鍵是獲得xxx.simple文件濒旦,然后才能開始下面的繪圖株旷,現(xiàn)在需要獲得兩個(gè)基因組感興趣基因的1對(duì)1文件,那就需要走一遍 2尔邓,局部共線性分析(可視化) 這個(gè)流程晾剖,得到i1.blocks后,根據(jù)感興趣基因的列表來匹配1對(duì)1blocks中的基因梯嗽,很簡單齿尽,寫個(gè)程序就可以:

import sys
gene_list = open(sys.argv[1],'r')
blocks = open(sys.argv[2],'r')
list = []
for i in gene_list:
    i = i.strip()
    list.append(i)
for line in blocks:
    line = line.strip()
    item1 = line.split("\t")[0]
    item2 = line.split("\t")[1]
    if item1 in list and item2 != ".":
        print(item1+"\t"+item2)
    else:
        continue

python get_interestedGene_from_i1_blocks.py gene_list all.i1.blocks > interestedGene.i1.blocks

然后根據(jù)這個(gè)新blcoks弄成一個(gè)simple文件,可以使用以下代碼:

cat interestedGene.i1.blocks|awk -vOFS="\t" '{print"#FF0000*"$1,$1,$2,$2,"10","+"}' > interestedGene.simple

如果想在circos上展示共線性灯节,那就需要弄一個(gè)link文件循头,需要基因的bed文件,以及上面的interestedGene.i1.blocks炎疆,這里也把代碼貼上:

from sys import argv
bed = argv[1]
syn = argv[2]
ref_dict = {line.split("\t")[3]:line.split("\t")[0:3] for line in open(bed)}
for line in open(syn):
    items = line.strip().split("\t")
    s_gene = items[0]
    e_gene = items[1]
    s_chr,s_gene_s,s_gene_e = ref_dict[s_gene][0:3]
    e_chr,e_gene_s,e_gene_e = ref_dict[e_gene][0:3]
    circos_input = [s_chr,s_gene_s,s_gene_e,e_chr,e_gene_s,e_gene_e]
    out = '\t'.join(circos_input)
    print(out)

python get_link_from_i1.blocks.py all.gene.bed interestedGene.i1.blocks > interestedGene.links

微觀共線性分析就簡單了卡骂,直接在i1.blocks文件前面加上顏色就可以了,想看哪一段blocks形入,就去bed文件里找基因位置全跨,然后把這一段的截出來就行了

更新這一段內(nèi)容是因?yàn)榍岸螘r(shí)間看了發(fā)表在MP上的Genetribe軟件文章,這篇文章使用優(yōu)化的算法鑒定不同基因組之前的共線性基因亿遂,并將這些基因分為1對(duì)1最佳(RBH)基因浓若,單向最佳匹配基因(SBH),以及1對(duì)多基因等蛇数,最近在用這個(gè)軟件分析自己的課題挪钓,最后的可視化用jcvi的程序就可以做到,感興趣的可以看看https://doi.org/10.1016/j.molp.2020.09.019

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苞慢,一起剝皮案震驚了整個(gè)濱河市诵原,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挽放,老刑警劉巖绍赛,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辑畦,居然都是意外死亡吗蚌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門纯出,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚯妇,“玉大人敷燎,你說我怎么就攤上這事÷嵫裕” “怎么了硬贯?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陨收。 經(jīng)常有香客問我饭豹,道長,這世上最難降的妖魔是什么务漩? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任拄衰,我火速辦了婚禮,結(jié)果婚禮上饵骨,老公的妹妹穿的比我還像新娘翘悉。我一直安慰自己,他們只是感情好居触,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布妖混。 她就那樣靜靜地躺著,像睡著了一般饼煞。 火紅的嫁衣襯著肌膚如雪源葫。 梳的紋絲不亂的頭發(fā)上诗越,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天砖瞧,我揣著相機(jī)與錄音,去河邊找鬼嚷狞。 笑死块促,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的床未。 我是一名探鬼主播竭翠,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼薇搁!你這毒婦竟也來了斋扰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤啃洋,失蹤者是張志新(化名)和其女友劉穎传货,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宏娄,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡问裕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了孵坚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粮宛。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窥淆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巍杈,到底是詐尸還是另有隱情忧饭,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布筷畦,位于F島的核電站眷昆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏汁咏。R本人自食惡果不足惜亚斋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望攘滩。 院中可真熱鬧帅刊,春花似錦、人聲如沸漂问。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚤假。三九已至栏饮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磷仰,已是汗流浹背袍嬉。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灶平,地道東北人伺通。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像逢享,于是被迫代替她去往敵國和親罐监。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容