zoukankan      html  css  js  c++  java
  • 【基因组注释】RepeatMasker和RepeatModeler安装、配置与运行避坑

    1.conda安装

    conda安装虽然简单,但还是有很多坑,而且很多都是隐形的坑。

    # conda install -c bioconda repeatmasker
    conda install -c bioconda repeatmodeler
    

    repeatmodeler依赖于repeatmasker,因此其实你只要安装repeatmodeler就好。其中repeatmasker很大,270多Mb,网络不行的话你需要多换几个镜像试试。

    安装后,试运行各个程序没毛病,但其实隐藏杀机。

    2.配置RepBase

    RepBase注册下载需要审核等待,在网上找现成的就好。RepBaseRepeatMaskerEdition-20181026.tar.gz解压后,将其复制到RepeatMasker/Libraries下面。RepBase解压后主要文件是RMRBSeqs.emblREADME.RMRBSeqs,如有必要(目前我还没用到,所以这里可不用转化),可以通过以下脚本awk.sh转化为fasta:

    /^ID/   {printf(">%s;",$0); next;}
    /^(PT|PA)/  {printf(" %s;",$0); next;}
    /^/// {printf("
    "); next;}
    /^    / {printf("
    %s",substr($0,5)); next;}
        {   
        /* ignore default */
        }   
    END   {   
        printf("
    ");
        }
    

    运行:

    awk -f awk.sh RMRBSeqs.embl >raw.fasta
    cat raw.fasta | cut -f1-9 -d' '| sed -e 's/ID   //g' | sed -e 's/repeatmasker;//g'| sed -e 's/ //g' > RepBase.fasta
    

    然后在RepeatMasker目录下配置环境:

    cd /path/to/share/RepeatMasker
    perl ./configure
    

    image.png
    配置2就好,其他可不用管。所以先键入2,一路回车选中默认后,键入5,即可完成配置。
    image.png

    3.RepeatMasker避坑

    具体参数查看帮助,以下列出主要参数,最好根据资源多设几个线程。

    RepeatMasker -nolow -no_is -norna -e ncbi -parallel 30  genome.fa
    

    上面是没有指定物种的,结果证明不加物种名,我的重复序列总共只有0.1%,少得可怜。指定后,高达50%!

    RepeatMasker -nolow -no_is -norna -e ncbi -parallel 30  -species rice genome.fa
    

    这里对结果也不做说明,请查看官方文档或其他教程。

    4.RepeatProteinMask避坑

    repeatProteinMask比repeatMasker花费的时间要长得多(屏蔽简单串联重复)。悲哀的是,刚运行无错误,运行到一半时,出现如下错误:

    Masking Simple Repeats...
       - Tandem Repeats: 204178
    Masking Repeat Proteins...
    NCBIBlastXSearchEngine::search: Error...compressed subject database (/RepeatPeps.lib) does not exist!
     at /biosoft/anaconda3/envs/repeat/share/RepeatMasker/RepeatProteinMask line 371.
    

    找了一圈,GitHub上提了issue:RepeatProteinMask error in LIBDIR location #41
    ,有位大佬解决了这个问题,那就是将RepeatProteinMask程序的192行中的LIBDIR_DIR替换为LIBDIR

    my $LIBDIR = $config->{'LIBDIR_DIR'}->{'value'}
    #改为
    my $LIBDIR = $config->{'LIBDIR'}->{'value'}
    

    维护人员说已经在新版中修复此bug,很显然conda安装的不是新版。

    5.RepeatModeler避坑

    RepeatModeler denovo注释的命令很简单:

    BuildDatabase -name ricedb genome.fa
    RepeatModeler -database ricedb -pa 20 >run.out
    

    但是不会一帆风顺,运行到一半时,又出错:

    Number of sequences (bp) added to database: 144 ( 398253226 bp )
    Missing /biosoft/anaconda3/envs/repeat/share/RepeatMasker/Libraries/RepeatMasker.lib.nsq!
    Please rerun the configure program in the RepeatModeler directory
    before running this script.
    

    去RepeatMasker/Libraries目录下看了一下,RepeatMasker.lib文件是空的,没有内容,RepeatMasker.lib.nsq及其他索引文件都没有!

    说明RepeatMasker的安装就是有问题的。Libraries下完整的文件应该包含:

    
    Artefacts.embl  Dfam.hmm       RepeatAnnotationData.pm  RepeatMasker.lib.nin  RepeatPeps.lib      RepeatPeps.lib.psq
    CONS-Dfam_3.0   README.meta    RepeatMasker.lib         RepeatMasker.lib.nsq  RepeatPeps.lib.phr  RepeatPeps.readme
    Dfam.embl       RMRBMeta.embl  RepeatMasker.lib.nhr     RepeatMaskerLib.embl  RepeatPeps.lib.pin  taxonomy.dat
    

    同样地,Github上也有一个issue:Repeatmodeler package not working #9988
    但是内容太泛了,看多了头晕。

    最后在另一个地方看到答案解决:How to fix RepeatMasker.lib.nsq missing error when running RepeatModelor?

    在Libraries目录下,解决方法:

    pushd $CONDA_PREFIX/share/RepeatMasker
    ./util/buildRMLibFromEMBL.pl Libraries/RepeatMaskerLib.embl > Libraries/RepeatMasker.lib
    perl ./configure #同之前配置
    echo -e "
    2
    $(dirname $(which rmblastn))
    
    5
    " > tmp && ./configure < tmp
    

    关于最后一条命令的解释,文中也有说明。

    RepeatModeler 和RepeatProteinMask一样,也是没有多线程设置的,运行的时间非常漫长。中间出错十分头疼,难道又从头开始?

    此时,我的目录下已经有很多临时文件:
    image.png

    网上说,运行到报错这一步,应该是已经注释完,后续是用RepeatClassifier对consensi.fa进行分类,命令如下:

    RepeatClassifier -consensi consensi.fa
    

    此时,可以正常运行。但为了保证结果的完整性,我还是决定从头重跑。

    重跑开始出现如下错误:

    RepeatScout filter-stage-1 failed:
    Can't locate File/Which.pm in @INC (you may need to install the File::Which module) (@INC contains:
    

    conda安装的依赖Perl中并没有安装这个模块,需要手动再安装下。或者不用这个Perl。

    # 进入你的repeatmodeler环境
    conda install perl-file-which
    

    等待漫长的运行过程,最后结果如下:
    image.png

    6.自定义重复序列库

    repeatmasker同源注释默认使用的是Dfam和RepBase库(如果你有下载),其实我用这个两个自带库就已经能屏蔽水稻约46%左右的重复序列了,直接拿来用应该没问题。
    image.png

    可能有些物种信息并没有这么全吧,所以要结合其他库,比如repeatmodeler从头预测的库。

    我这里试图把homology和denovo库结合起来,将两者的重复序列都进行屏蔽。

    首先构建水稻自带库:

    /path/to/anaconda3/envs/repeat/share/RepeatMasker/util/queryRepeatDatabase.pl -species rice >rice_repeats.lib
    

    这里千万注意不要直接用queryRepeatDatabase.pl(默认调用的是/path/to/anaconda3/envs/repeat/bin/queryRepeatDatabase.pl),要用share中的程序。否则会报错,别问我怎么知道的,折腾良久,血泪教训。
    构建完成显示:

    queryRepeatDatabase
    ===================
    RepeatMasker Database: RepeatMaskerLib.embl
    RepeatMasker Combined Database: Dfam_3.1, RepBase-20181026
    Species: rice ( oryza sativa )
    

    然后将同源注释库和denovo库进行整合:

    cat rice_repeats.lib genome_db-families.fa >genome_custom_repeat.lib
    

    最后屏蔽:

    RepeatMasker -lib genome_custom_repeat.lib -pa 24 -xsmall genome.fa
    

    后记

    建议不要用conda安装,repeatmasker的维护人员也这么建议,有很多乱七八糟的问题没有解决。虽然手动安装比较麻烦,但它靠谱啊。

    生物信息太折腾,我要少活很多年。

    https://www.jianshu.com/p/2895a5e06b76
    https://blog.csdn.net/weixin_33915554/article/details/86399361
    https://www.jianshu.com/p/2cfc7638663d

  • 相关阅读:
    初级安全入门——安全漏洞的检测与利用
    Gazebo11的安装与启动
    ROS入门(四)——Gazebo的基本使用
    ROS入门(二)——服务和全局参数
    ROS入门(一)——基本概念和话题
    数据结构与算法(三+)——列表的Java实现
    Java EE入门(二十)——Maven基础
    Java EE入门(十九)——Redis基础
    Java EE入门(十八)——Ajax&JSON基础
    npm中如何更新自己已经发布的1.0.0的模块包?
  • 原文地址:https://www.cnblogs.com/jessepeng/p/14624488.html
Copyright © 2011-2022 走看看