【基因組注釋】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("\n"); next;}
/^    / {printf("\n%s",substr($0,5)); next;}
    {   
    /* ignore default */
    }   
END   {   
    printf("\n");
    }

運行:

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 "\n2\n$(dirname $(which rmblastn))\n\n5\n" > 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM