MCscan踩坑记录

最近在帮忙做一个大文章,用到这个神奇的软件,做个踩坑记录。

软件是由大拿唐海宝老师写的。
ps: 见过唐老师本人,高高帅帅的,说话又好听,要被迷倒了(/ω\)

咳咳,言归正传。
参考教程:

https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)

https://www.jianshu.com/p/39448b970287?utm_source=desktop&utm_medium=timeline&tdsourcetag=s_pctim_aiomsg

以上两个链接,一个是官网wiki一个是我华华钟师姐的使用笔记,大家可以参考一下。

安装:

讲真,论有管理员权限的好处!

sudo apt install last-align
pip install jcvi

没有权限的旁友请自行通过wiki中的链接进行安装。记得把lastallastdb还有scip加入你的环境变量啊~
还有就是jcvi是用python2写的,记得用python2.7去运行,包括pip也调用python2的pip。记得用which查看一下python和pip的路径。
因为我的环境默认是用python3,此时我就想到要不用conda来创建一个python2的环境好了,这样比较方便管理。回头一想,万一jcvi可以用conda一键安装呢。

于是就用https://bioconda.github.io/recipes搜了一下conda的仓库,发现居然conda仓库里真的有jcvi!conda牛批!haibaotang牛批!

conda create -n jcvi jcvi

上面这条是说创建一个叫jcvi的软件并安装jcvi。
安装好软件并激活进入jcvi的环境之后就可以按照wiki的指示用示例物种文件试个水。

python -m jcvi.apps.fetch phytozome

jcvi可以直接从phytozome上下载物种的cds和gff3文件,可以说是很方便了。不过是用的v9.0版本的phytozome了。。有点古老。

phytozome v9.0

示例里是下载的葡萄和梨,我下面就贴一下文件准备的每一步的流程,就不详细写了。

#下载葡萄和梨的cds&gff3
python -m jcvi.apps.fetch phytozome Vvinifera,Ppersica

#将gff压缩文件直接转换成bed格式(解不解压结果都一样。根据物种的不同,有的时候type可以选择gene)
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

#将id行的描述信息删除。也可手动用vim进行替换。
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

结果查看:

$ ls *.???
grape.cds  peach.cds  grape.bed  peach.bed

ps: *是代表匹配任意个数的任意字符,?是代表匹配一个任意字符。

好了,经过这几步的准备,可以开始做Pairwise synteny search了。

$ python -m jcvi.compara.catalog ortholog grape peach

这一步,如果是用的pip安装很有可能会报错,虽然好像conda安装也会有点问题。

  • 报错一:缺少numpy模块

一开始也很懵,咋就缺模块了呢。行叭,你说缺就缺,安装就完事儿了。

pip install numpy
  • 报错二:缺少scipy模块
    报错信息如下:
ImportError: No module named scipy.spatial

行叭,如法炮制。

  • 报错三: 找不到叫kpsewhich的文件或者目录
[dviread] find_tex_file(phvr7t.vf): ['kpsewhich', u'phvr7t.vf']
No such file or directory called 'kpsewhich'

大概是这么一句话,已经找不到原来的报错信息了。我特意去查了这个找不到的kpsewhich是个啥。用apt,不行,找不到这个包;用conda搜,不行,没有这个东西,用pip安装,也没有。。没办法走投无路只能去看mcsan的issue了。翻到issue39找到了想要的东西:这玩意。。好像是因为字体找不到才报错的。。?这什么鬼啊。。才注意到刚才那句报错信息的上面是:

12:15:02 [texmanager] serif font is not compatible with usetex.
12:15:02 [texmanager] serif font is not compatible with usetex.
12:15:02 [texmanager] family: serif, font: Computer Modern Roman, info: ('cmr', '')
12:15:02 [texmanager] family: sans-serif, font: Helvetica, info: ('phv', '\\usepackage{helvet}')
12:15:02 [texmanager] cursive font is not compatible with usetex.
12:15:02 [texmanager] cursive font is not compatible with usetex.
12:15:02 [texmanager] family: cursive, font: Zapf Chancery, info: ('pzc', '\\usepackage{chancery}')
12:15:02 [texmanager] monospace font is not compatible with usetex.
12:15:02 [texmanager] monospace font is not compatible with usetex.
12:15:02 [texmanager] family: monospace, font: Computer Modern Typewriter, info: ('cmtt', '')

大意是草书字体与usetex不兼容云云。。还有这种操作??
解决这个问题的办法是:

sudo apt-get install -y texlive texlive-latex-extra texlive-latex-recommended

没有管理员权限的参考下面的命令:

$ docker pull tanghaibao/jcvi
$ docker run -it --rm -v `pwd`:/w -w /w tanghaibao/jcvi python -m jcvi.graphics.dotplot Ath.Aly.anchors

至此所有的报错都解决了,后面就按照wiki操作就可以了。偷个懒就不写了。


这是我用的layout

# y, xstart, xend, rotation, color, label, va,  bed
 .4,     .2,    .9,       0,      , waterlily, top, nym.bed
 .2,     .2,    .9,       0,      , shuilian, botton, nym.bed
# edges
e, 0, 1, nym.nym.anchors.simple

我发现haibaotang给的layout有点bug。如果xstart设置为.1的话你设置的label只能显示半个。所以调成了.2;这里的y值我的理解是纵向的位置,如果你把上下两个值填一样的(比如都是.4)上下两条会重叠在一起;xend不能调比.9大的值,否则会变得特别特别小,变成面条;
下面的edges不能瞎改,0和1的意思是把第一个和第二个连线,如果有三个物种一起做共线性的话,下面这行可以写成

# edges
e, 0, 1, file1.file2.anchors.simple
e, 1, 2, file2.file3.anchors.simple

原文:

Section # edges says that we should connect track 0 (grape) with 1 (peach), track 1 (peach) with 2 (cacao).

如果要强调颜色的话,编辑xx.xx.anchors.simple这个文件,在需要强调的block前面添加上g*或者r*
g=green r=red b=blue
……
我也不知道一共有多少种颜色可以用,反正可以搞得花花绿绿的特别高级

放一张半成品图


还挺好看的!

大概就是这样啦有问题的欢迎留言讨论

你可能感兴趣的:(MCscan踩坑记录)