安装

软件推荐使用pip安装,但是作为普通用户,还是选择使用conda安装

1
2
3
4
5
conda create -n jcvi python=2.7
source activate jcvi
# 安装前需要确认存在bioconda和r channel,安装前先更新conda
conda --add-channel r
conda install jcvi last

后续还可能会由于缺少scipy在绘图时报错ImportError: No module named scipy.spatial,因此可提前安装

1
2
3
# 安装scipy
#conda-forge scipy-1.2.0
conda install scipy

准备数据

jcvi支持直接从phytozome下载数据

1
python -m jcvi.apps.fetch phytozome

按照名称查看

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
python -m jcvi.apps.fetch phytozome
...
         Acoerulea               Alyrata             Athaliana
       Bdistachyon                 Brapa           Cclementina
           Cpapaya          Creinhardtii              Crubella
          Csativus             Csinensis Csubellipsoidea_C-169
          Egrandis                Fvesca                  Gmax
        Graimondii        Lusitatissimum            Mdomestica
        Mesculenta             Mguttatus     Mpusilla_CCMP1545
   Mpusilla_RCC299           Mtruncatula          Olucimarinus
           Osativa               Ppatens              Ppersica
      Ptrichocarpa             Pvirgatum             Pvulgaris
         Rcommunis              Sbicolor              Sitalica
     Slycopersicum       Smoellendorffii            Stuberosum
            Tcacao            Thalophila              Vcarteri
         Vvinifera                 Zmays         early_release

常见的植物物种都可以直接下载

1
2
3
4
5
6
7
8
# download sequences and coordinates of grape and peach
python -m jcvi.apps.fetch phytozome Vvinifera,Ppersica
# convert the GFF to BED file
python -m jcvi.formats.gff bed --type=mRNA --key=Name Vvinifera_145_gene.gff3.gz -o grape.bed
python -m jcvi.formats.gff bed --type=mRNA --key=Name Ppersica_139_gene.gff3.gz -o peach.bed
# 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

共线性分析

1
2
3
python -m jcvi.compara.catalog ortholog grape peach
ls grape.peach.*
grape.peach.lifted.anchors  grape.peach.anchors  grape.peach.last.filtered grape.peach.last grape.peach.pdf

程序默认按照可用线程,调用全部进行LAST比对,速度很快。

可视化

点阵图

目前版本0.8.12在共线性分析后,自动绘制点阵图,手动运行方式如下

1
python -m jcvi.graphics.dotplot grape.peach.anchors

在两者的点阵图中,不论水平方向或者竖直方向查看,都可以发现不超过3次的共线性区域。这说明,🍇和🍑之间发生了基因组三倍体化的事件,使得出现了这样3:3的模式。

如果仔细观察,还可以发现3个共线性区域中常常有一个信号更强,对应着两个基因组之间的直系同源区域。如果我们只想要得到这些1:1直系同源的区域呢?我们只需要重复之前的比对,同时加上选项--cscore=.99即可。C-score是由LAST比对区域到BLAST比对区域的比值确定。(C-score is defined by the ratio of LAST hit to the best BLAST hits to either the query and hit. )0.99的C-score阈值有效地过滤LAST比对结果,从而得到最佳相互比对结果(reciprocal best hit, RBH)。

1
2
3
rm grape.peach.last.filtered 
python -m jcvi.compara.catalog ortholog grape peach --cscore=.99
python -m jcvi.graphics.dotplot grape.peach.anchors

Grape-peach-synteny-.99

还可以手动查看synteny depth分布

1
python -m jcvi.compara.synteny depth --histogram grape.peach.anchors

Grape-peach-depth

共线型图

同样由grape.peach.anchors生成,除了BED和共线性文件,还需要手动设置两个文件用于绘图

  1. seqids设定绘制哪些染色体,一般会去掉较小和未定位的scaffolds,下方设定了19个🍇的染色体与8个🍑的染色体

    1
    2
    
    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
    
  2. layout设定画板上如何绘制。整体上canvas绘图的x,y轴的定位在0-1之间,前三行设定了染色体轨道的位置,循环,颜色,标签,垂直排列以及对应的BED文件。下方的track0就是🍇,track1就是🍑。下一节就是设定在哪些tracks之间绘制共线性关系。e,0,1代表着绘制track0与track1之间的共线性,使用grape.peach.anchors.simple文件中的详细信息。

    1
    2
    3
    4
    5
    
    # y, xstart, xend, rotation, color, label, va,  bed
     .6,     .1,    .8,       0,      , Grape, top, grape.bed
     .4,     .1,    .8,       0,      , Peach, top, peach.bed
    # edges
    e, 0, 1, grape.peach.anchors.simple
    

注意,这两个设定文件末尾不能够存在多余的空行,否则会报错#56

1
LayoutLine' object has no attribute 'color'
  1. .anchors文件中产生更简要的.simple文件
1
python -m jcvi.compara.synteny screen --minspan=30 --simple grape.peach.anchors grape.peach.anchors.new 

绘图

1
python -m jcvi.graphics.karyotype seqids layout

Grape-peach-karyotype

局部可视化

首先从基因水平提取匹配的区块

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

参数--iter=1表明从每个🍇区域中提取1个最佳匹配区域。若将--iter设置为2,那么每个🍇区域就会有2个对应的🍑区域。这一点对于基因组重复区域的绘制很有帮助。

目前grape.peach.i1.blocks中包含有很多局部区域,我们可以手动选择需要绘制的部分。

1
head -50 grape.peach.i1.blocks > blocks

最终,我们仍然需要一个layout文件进行绘图,blocks.layout文件如下

1
2
3
4
5
# x,   y, rotation,   ha,     va,   color, ratio,            label
0.5, 0.6,        0, left, center,       m,     1,       grape Chr1
0.5, 0.4,        0, left, center, #fc8d62,     1, peach scaffold_1
# edges
e, 0, 1

然后,我们就可以进行绘制了

1
2
cat grape.bed peach.bed > grape_peach.bed
python -m jcvi.graphics.synteny blocks grape_peach.bed blocks.layout

Grape-peach-blocks

参考来源

https://github.com/tanghaibao/jcvi/wiki/MCscan-%28Python-version%29

https://www.jianshu.com/p/39448b970287