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.embl
和README.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
配置2就好,其他可不用管。所以先鍵入2,一路回車選中默認后,鍵入5,即可完成配置。
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一樣,也是沒有多線程設置的,運行的時間非常漫長。中間出錯十分頭疼,難道又從頭開始?
此時,我的目錄下已經有很多臨時文件:
網上說,運行到報錯這一步,應該是已經注釋完,后續是用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
等待漫長的運行過程,最后結果如下:
6.自定義重復序列庫
repeatmasker同源注釋默認使用的是Dfam和RepBase庫(如果你有下載),其實我用這個兩個自帶庫就已經能屏蔽水稻約46%左右的重復序列了,直接拿來用應該沒問題。
可能有些物種信息並沒有這么全吧,所以要結合其他庫,比如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