MCscan踩坑记录

作者: 卖萌哥 | 来源:发表于2018-12-04 20:51 被阅读351次

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

    软件是由大拿唐海宝老师写的。
    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踩坑记录

        本文链接:https://www.haomeiwen.com/subject/bqovcqtx.html