軟件的安裝
Python版McScan(jcvi工具包):https://github.com/tanghaibao/jcvi
以前只有python2,現在已有python3版本,建議用py3。安裝可用pip:
pip install jcvi
##或開發版
pip install git+git://github.com/tanghaibao/jcvi.git
pip可能會安裝很慢。建議還是用conda,要快很多,最好新建環境。
conda install -c bioconda jcvi
這時,你已經能使用命令,表面上安裝成功了,實際上可能還缺少很多依賴。比如last,latex,dvipng等。否則在后面運行過程,可能遇到如下錯誤:
##未安裝last
/bin/bash: lastdb: command not found
##未安裝latex、dvipng
RuntimeError: Failed to process string with tex because latex could not be found
只有一個個解決,有的可以直接conda(如last),有些則需要編譯,若有root權限,倒也好辦。
conda install -c bioconda last
sudo yum install -y texlive texlive-latex texlive-xetex texlive-collection-latexrecommended
sudo yum install dvipng
基因組的准備
若是已知物種,直接可從公共數據庫中下載gff和cds序列,jcvi提供了下載方式:
$ python -m jcvi.apps.fetch
Usage:
python -m jcvi.apps.fetch ACTION
Available ACTIONs:
bisect | Determine the version of the accession by querying entrez
ensembl | Retrieve genomes and annotations from ensembl
entrez | Fetch records from entrez using a list of GenBank accessions
phytozome | Retrieve genomes and annotations from phytozome
phytozome9 | Retrieve genomes and annotations from phytozome version 9.0 (legacy)
sra | Retrieve files from SRA via the sra-instant FTP
比如從Phytozome下載,要提前注冊好,如下命令提示輸入賬號密碼。
python -m jcvi.apps.fetch phytozome Vvinifera,Ppersica
下載后無需解壓。
自己准備的基因組數據也只需gff3和cds.fa(蛋白序列也可)。
gff3只保留染色體水平的ID,如:
grep '^chr' Vvinifera_145_Genoscope.12X.gene.gff3 > apricot.filter.gff3
gff3文件轉化bed文件時注意type和key類型對應gff中第三列和第九列信息。type一般為mRNA,但是key注意你的gff文件是取Name還是ID。如:
python -m jcvi.formats.gff bed --type=mRNA --key=Name Vvinifera_145_Genoscope.12X.gene.gff3 -o grape.bed
python -m jcvi.formats.gff bed --type=mRNA --key=ID Ppersica_298_v2.1.gene.gff3 -o peach.bed
若后續作圖仍報錯,可嘗試去除fasta ID中多余的描述信息(我自己不用也可跑通)。如:
# clean headers to remove description fiedls from Phytozome FASTA files.
python -m jcvi.formats.fasta format --sep="|" Vvinifera_145_cds.fa.gz grape.cds
python -m jcvi.formats.fasta format --sep="|" Ppersica_139_cds.fa.gz peach.cds
一些細節
-
結果文件
last比對結果,last.filtered比對過濾串聯重復和低分比對結果,anchors: 高質量的共線性塊,lifted.anchors增加額外錨點的最終共線性區塊,simple簡化的anchors文件。anchors文件中每個共線性區塊以###分隔, 第一和第二列分別是兩基因組的基因ID,第三列BLAST的bit score,越大可靠性越高。 -
調圖細節
兩個配置文件seqid(展示染色體),layout(序列位置)。
seqid文件中,基因組的染色體編號與其gff3文件一致(按大小順序寫,而非gff文件染色體順序,轉化bed時軟件會排序)。如:
chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11,chr12,chr13,chr14,chr15,chr16,chr17,chr18,chr19
Pp01,Pp02,Pp03,Pp04,Pp05,Pp06,Pp07,Pp08
layout文件繪制一些選項,若要個性化,多多修改嘗試(尤其時三個物種比較時)。如:
# y, xstart, xend, rotation, color, label, va, bed
.6, .1, .8, 0, red, Grape, top, grape.bed
.4, .1, .8, 0, blue, Peach, bottom, peach.bed
# edges
e, 0, 1, grape.peach.anchors.simple
若要突出顯示某一共線性區塊,可以在anchors.simple文件對應的區塊前添加g*(g代表綠色,也可以改成其他顏色,如紅色r)。
建議和示例
建議先用示例數據跑一遍,也很快。再換自己的數據,報錯對照着尋找原因,總能解決。
示例代碼:
# 准備數據(輸入帳號密碼)
python -m jcvi.apps.fetch phytozome Vvinifera,Ppersica
#去掉chr以外的序列
grep '^chr' Vvinifera_145_Genoscope.12X.gene.gff3 > apricot.filter.gff3
#gff convert to bed
python -m jcvi.formats.gff bed --type=mRNA --key=Name Vvinifera_145_Genoscope.12X.gene.gff3 -o grape.bed
python -m jcvi.formats.gff bed --type=mRNA --key=Name Ppersica_298_v2.1.gene.gff3 -o peach.bed
#reformat fasta
python -m jcvi.formats.fasta format Vvinifera_145_Genoscope.12X.cds.fa.gz grape.cds
python -m jcvi.formats.fasta format Ppersica_298_v2.1.cds.fa.gz peach.cds
#identify blocks
python -m jcvi.compara.catalog ortholog grape peach --no_strip_names
#plot dotplot
python -m jcvi.graphics.dotplot grape.peach.anchors
# get synteny
python -m jcvi.compara.synteny screen --minspan=30 --simple grape.peach.anchors grape.peach.anchors.new
##prepare for seqid and layout file
# plot synteny
python -m jcvi.graphics.karyotype seqid layout
Ref:
https://www.jianshu.com/p/a748d3a5421d
https://www.cnblogs.com/zhanmaomao/p/12525411.html
https://sr-c.github.io/2019/01/11/jcvi-MCscan/