生物資訊-McScan(Python-jcvi)共線性畫圖

abysw發表於2020-10-17

比較基因組學中,共線性的分析的圖無疑是最漂亮的。

共線性分析可以很好地解釋進化關係和多倍化事件。

本文主要介紹的是唐老師的Python版McScan(jcvi工具包),這個包很強大,但是其功能在官網的說明並不詳細,在眾人的部落格中也比較零散。

我剛使用這個包的時候(2017年)還很難安裝,需要預裝各種依賴,不過現在的同學們很幸福了,可以直接用pip一鍵安裝了。

軟體包連結:https://github.com/tanghaibao/jcvi

安裝過程很簡單:

pip install jcvi
pip install git+git://github.com/tanghaibao/jcvi.git

如果安裝不成功,再執行一次上述命令即可。
python 用conda安裝即可。
官方配圖如下:

 

 鄙人拙作如下:

 


本文其實並沒有想用常規的方法告訴同學們怎麼用,我只是想告訴同學們一鍵生成最終結果的辦法:

1. 兩兩物種之間的共線性分析和畫圖:
諸君只需要準備好下載好的兩個需要比對的基因組序列檔案和註釋檔案(species.gff),進行格式化:
#下載基因組相關資料
get-genome.pl
#格式化基因組序列檔案
format_fa.pl
#格式化基因組註釋檔案
format_gff.pl
#共線性畫圖
perl synteny-jcvi.shell.pl species1 species2
#統計共線塊的分佈情況
stat_block.pl

2. 多物種基因組序列比對,保守序列/區域畫圖(準備好lastz軟體,不需要準備註釋檔案)
# 獲得物種兩兩比對結果
lastz-axt.sh reference species
# 獲得多序列比對結果
roast tree *sing.maf roast.maf
# 獲得各物種與reference的比對矩陣

cat roast.maf| awk 'BEGIN {OFS = "\t"} ; {if ($1~/a/){m++}}{if ($5 == "+") print $2, $3, $3 + $4, $2"-common_"m"\t0\t"$5; else print $2, $6 - $3 - $4, $6 - $3, $2"-common_"m"\t0\t"$5}' | grep -P "^\S" | grep -v score > mostcons.bed

grep Whear_chinese mostcons.bed | awk '{if ($3-$2 >= 2000){print }}' | perl -ne 'print "$1\n" if /(common_\d+)/' > Whear_chinese.2k.id

rm mostcons.bed.2k

for i in `cat Whear_chinese.2k.id`;do grep -P "$i\t" mostcons.bed >> mostcons.bed.2k  ;done

for i in `cut -f 1 mostcons.bed.2k | sort | uniq`;do grep $i mostcons.bed.2k > $i.bed ; done

sortBed -I mostcons.bed.2k > mostcons.bed.2k.sort

# 生成配置檔案

perl anch.pl mostcons.bed.2k.sort

# 畫多序列共線性圖(如下,可以直觀看到倒位,缺失等重要資訊,圖中註釋資訊位置均可以進行調整)
python -m jcvi.graphics anchors seqids layout
3. 多物種基因共線性圖(準備好blastp軟體,需要gff註釋檔案)
# blastp比對
# 獲取各物種與reference的RBH比對矩陣
# 生成配置檔案(anchors檔案由RBH矩陣替換)
perl anch.pl mostcons.bed.2k.sort
# 畫圖
python -m jcvi.graphics anchors seqids layout


本操作流程節約了各種配置編輯和試錯的時間和精力,增加了無註釋檔案或者非編碼區(全基因組序列,而非僅基因區)的共線性分析。
注意事項:
1. 雖然可以conda一鍵安裝python,pip一鍵安裝jcvi,但是如果有依賴在嘗試兩次安裝jcvi後依然無法自動安裝,請手動安裝。
2. 注意所有檔案在第一步的時候進行嚴格地格式化,請檔案中不要出現特殊字元,儘量只有資料/字母/下劃線(原始檔案只有兩個,基因組序列檔案和註釋的gff檔案)。
3. 如果要新增顏色,請在矩陣中加上註釋(紅色:r*;黃色:y*)
*. 有任何BUG,請及時與管理員聯絡。

指令碼將陸續公佈於網站cospure.cn和github中。
指令碼的寫作和解讀將陸續在微信公眾號中進行講解。
本部落格主要用於文章和軟體的前期撰寫和測試,後期整理的詳細版請關注微信公眾號swxxfxxx。

以上,
abysw







相關文章