最近发现了python版的MCScan,是个大宝藏。由于走了不少弯路,终于画出美图,赶紧记录下来。github地址 https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)
安装
## 安装lastal
网址:http://last.cbrc.jp
unzip last-1060.zip
cd last-1060
make
# 把scripts, src 添加到环境变量
## jcvi
pip install jcvi
## 若出现 from rillib.parse import urlparse 缺少parse模块,则装parse模块,然后将urllib.parse 改为urlparse; 因为urlparse模块在Python 3中重命名为urllib.parse,所以模块在Python 2.7下应该使用urlparse。
简单使用
- 所需基因组的gff文件
- 所需基因组的pep或者cds序列
输入数据处理
将gff转变为bed格式
## 以spinach,和sugar为例子
python -m jcvi.formats.gff bed --type=mRNA --key=ID spinach_gene_v1.gff3 -o spinach.bed
python -m jcvi.formats.gff bed --type=mRNA --key=ID BeetSet-2.unfiltered_genes.1408.gff3.txt -o sugar.bed
##参数
--type:gff文件中第三列
--key:type对应的第九列信息前缀
我们分析只需要用到每个基因最长的转录本就行,在sugar中是以多个转录本进行存储,因为需要获取最长转录本
## 将sugar中bed进行去重复
python -m jcvi.formats.bed uniq sugar.bed
获取对应cds/pep序列
## cds和pep序列均可以进行共线性分析
## 根据上述得到的.bed文件调取对应cds和蛋白序列
# spinach
seqkit grep -f <(cut -f4 spianch.bed) spinach.cds.fa | seqkit seq -I >spinach.cds
seqkit grep -f <(cut -f4 spianch.bed) spinach.pep.fa | seqkit seq -I >spinach.pep
# sugar
seqkit grep -f <(cut -f4 sugar.uniq.bed) BeetSet-2.genes.1408.cds.fa | seqkit seq -i >sugar.cds
seqkit grep -f <(cut -f4 sugar.uniq.bed) BeetSet-2.genes.1408.pep.fa | seqkit seq -i >sugar.pep
也可以根据gff文件,基因组ref.fa文件中直接调取cds,和pep序列
## 需要安装cufflinks
## 提取cds
gffread in.gff3 -g ref.fa -x cds.fa
## 提取pep
gffread in.gff3 -g ref.fa -y pep.fa
共线性分析
## 新建一个文件夹,方便在报错的时候,把全部都给删了
mkdir cds && cd cds
ln -s ../sugar.cd ./
ln -s ../sugar.uniq.bed ./sugar.bed
ln -s ../spinach.cds ./
ln -s ../spinch.bed ./
## 运行代码
python -m jcvi.compara.catalog ortholog (--dbtype prot[蛋白分析]) --no_strip_names spinach sugar
结果:
spinach.sugar.anchors:共线性block区块(高质量)
spinach.sugar.last:原始的last输出
spinach.sugar.last.filtered:过滤后的last输出
spinach.sugar.pdf:点阵图
## 如果遇到报错,多半是要安装python包,更新Latex
可视化
## 首先生成.sinple文件
python -m jcvi.compara.synteny screen --minspan=30 --simple spinach.sugar.anchors spinach.sugar.anchors.new
## 编辑配置文件seqids 和layout
#设置需要展示染色体号
vi seqids
chr1,chr2,chr3,chr4,chr5,chr6 #spinach
Bvchr1.sca001,Bvchr2.sca001,Bvchr3.sca001 #sugar
# 设置颜色,长宽等
vi layout
# y, xstart, xend, rotation, color, label, va, bed
.6, .1, .8, 0, red, spinach, top, spinach.bed
.4, .1, ,8, 0, blue, sugar, top, sugar.bed
# edges
e, 0, 1, spinach.sugar.anchors.simple
注意, #edges下的每一行开头都不能有空格
## 运行代码
python -m jcvi.graphics.karyotype seqids layout
得到以下图片
![](https://img.haomeiwen.com/i19633912/399f708bf9b92923.png)
若想突出显示某一共线性则可以在对应的位置添加g*即可
vi spinach.sugar.anchors.simple
g*Spo03717 Spo03716 Bv3_048620_odzi.t1 Bv3_049090_cxmm.t1 46 +
Spo17356 Spo17350 Bv1_001140_tedw.t1 Bv1_001540_xzdn.t1 41 -
Spo13685 Spo13730 Bv5_123480_yfcy.t1 Bv5_123900_rucq.t1 46 -
Spo26250 Spo26280 Bv5_117270_qhwj.t1 Bv5_117680_iykf.t1 36 +
Spo19005 Spo06982 Bv7_173830_frmo.t1 Bv7_174150_pckw.t1 37 +
Spo19374 Spo20559 Bv4_081440_riqq.t1 Bv4_081750_yeuy.t1 32 -
#运行
python -m jcvi.graphics.karyotype seqids layout
若想比较3个物种共线性关系,则应两两比对,得到两个.simple文件,并对其进行配置
$ vi layout
# y, xstart, xend, rotation, color, label, va, bed
.7, .1, .8, 15, , Grape, top, grape.bed
.5, .1, .8, 0, , Peach, top, peach.bed
.3, .1, .8, -15, , Cacao, bottom, cacao.bed
# edges
e, 0, 1, grape.peach.anchors.simple
e, 1, 2, peach.cacao.anchors.simple
$ vi seqids
chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11,chr12,chr13,chr14,chr15,chr16,chr17,chr18,chr19
scaffold_1,scaffold_2,scaffold_3,scaffold_4,scaffold_5,scaffold_6,scaffold_7,scaffold_8
scaffold_1,scaffold_2,scaffold_3,scaffold_4,scaffold_5,scaffold_6,scaffold_7,scaffold_8,scaffold_9,scaffold_10r
$ python -m jcvi.graphics.karyotype seqids layout
可以得到以下结果
![](https://img.haomeiwen.com/i19633912/f06d3c7bf04975b6.png)
也可以调整配置文件,得到不同样式的图形
# y, xstart, xend, rotation, color, label, va, bed
.5, 0.025, 0.625, 60, , Grape, top, grape.bed
.2, 0.2, .8, 0, , Peach, top, peach.bed
.5, 0.375, 0.975, -60, , Cacao, top, cacao.bed
# edges
e, 0, 1, grape.peach.anchors.simple
e, 1, 2, peach.cacao.anchors.simple
#运行
python -m jcvi.graphics.karyotype seqids layout
得到如下结果
![](https://img.haomeiwen.com/i19633912/95ce55d04af0602c.png)
除此之外,可以用TBtools快速得到共线性图片可以参考用TBtools,快速高效实现基因组共线性分析与可视化, 赞!
参考
欢迎扫码交流
![](https://img.haomeiwen.com/i19633912/8b76ea99bfbfb85f.jpg)
网友评论