首先安装RepeatModeler2,RepeatMasker4
建议直接去官网下载,解压安装。同时安装其他包。安装流程这里不详细介绍了,网上有很多。
假设现在已经安装完毕,并且依赖包也配置完毕。
1、下载最新Dfam库和Repbase库并配置
这里使用的是3.4版本的Dfam库(https://www.dfam.org/home),.h5, .hmm, .embl 三个文件都要下载。
这里使用的是v20181026版本的Repbase库。最新的RepBase库是要收钱的,这个2018的版本是目前广为流传的免费库。
这两个库包含了目前较为完整的物种重复序列数据。
1.1 RepBase
进入RepeatMasker目录:
cd path_to_RepeatMasker
wget https://github.com/chenyangkang/Repbase-Dfam/blob/main/RepBaseRepeatMaskerEdition-20181026.tar.gz
tar -zxvf RepBaseRepeatMaskerEdition-20181026.tar.gz
这时压缩包里的两个文件RMRBSeqs.embl
和README.RMRBSeqs
应该已经被放置到RepeatMasker/Libraries
里面了,cd进去检查一下。
1.2 Dfam
Dfam(.h5文件)太大了,上传不了,从官网下吧
wget -c https://www.dfam.org/releases/Dfam_3.4/families/Dfam_curatedonly.embl.gz
wget -c https://www.dfam.org/releases/Dfam_3.4/families/Dfam_curatedonly.h5.gz
wget -c https://www.dfam.org/releases/Dfam_3.4/families/Dfam_curatedonly.hmm.gz
这里下载的都是Curated的(也就是不包含从头预测的物种)。如果需要从头预测的数据库可以从Dfam官网下载,包含更多物种。但因为本文讨论非模式物种的注释,RepeatModeler2基本可以完成从头预测的工作,因此只用curated数据库。后期整合到一起就行了。
gunzip Dfam_curatedonly.embl.gz
gunzip Dfam_curatedonly.h5.gz
gunzip Dfam_curatedonly.hmm.gz
mv Dfam_curatedonly.embl Dfam.embl
mv Dfam_curatedonly.h5 Dfam.h5
mv Dfam_curatedonly.hmm Dfam.hmm
这里只有改了名字,RepeatMasker才能识别。
1.3 重新congifure RepeatMasker
./configure
路径配置跟之前都一样。看到combining Dfam+RepBase
之类的字样,以及配置结束以后Dfam和RepBase的版本号,说明成功了。在Libraries
里会生成一个RepeatMaskerLib.h5
文件,这就是Dfam+RepBase的整合。
2、导出目标非模式物种的对应上下节点Repeat families
Dfam库以及RepBase库中大多数物种都是模式物种,对于非模式物种,有两种策略进行注释:
- 使用已有homology-based库中的近源物种,直接使用该物种的库进行注释。
- 使用RepeatModeler2鉴别出的De novo序列加上homology-based库中部分序列进行注释(这里的“部分”指的是该类群祖先及衍生节点的序列families,当然,如果需要控制变量,也可以只用祖先节点的共有序列)。
本文只讨论第二种方法。因为注释会更加完整一些。RepeatMasker4.1.1可以使用famdb.py来访问构建的RepeatMaskerLib.h5数据库。famdb.py就在RepeatMasker文件夹里。
查看鸟类repeat families树:
famdb.py -i RepeatMaskerLib.h5 lineage \
-ad Aves
查找并导出鸟类及其上祖先节点、其下所有类群的repeat families:
famdb.py -i RepeatMaskerLib.h5 families \
-f embl -a -d Aves > Aves_ad.embl
只查找并导出鸟类及其上祖先节点(可以避免衍生节点物种分布不均匀问题。当有多个物种需要注释,并且需要对比注释的比例及总量时,这样可以控制变量):
famdb.py -i RepeatMaskerLib.h5 families \
-f embl -a Aves > Aves_a.embl
-a
为ancestor的意思,-d
为descendent的意思。-ad
可以一起写。
将embl格式转化为fasta格式,方便后期与RepeatModeler2结果合并
buildRMLibFromEMBL.pl Aves_a.embl> Aves_a.fasta
buildRMLibFromEMBL.pl
脚本在RepeatMasker/util文件夹里
3、RepeatModeler2从头预测
假设已经configure结束。没有安装或configure的朋友可以看看晚上其他安装教程。
###用序列文件构建数据库
BuildDatabase -name ${i} -engine rmblast ${i}.fna
###RepeatModeler根据数据库比对预测repeats
RepeatModeler -database ${i} -pa 5
其中${i}
为基因组文件名
也可以添加LTR结构搜索pipeline:
RepeatModeler -database ${i} -pa 5 -LTRStruct
我没用过这个-LTRStruct
参数,不知道效果如何。
这里的-pa是并行数。如果是rmblast/ncbi搜索引擎的话每个pa是4个线程。所以这里-pa设置为5,在提交脚本时就要请求20个线程。
顺利的话最后得到一个文件夹,以及一个${i}-families.fa
,一个${i}-families.stk
文件。
4、整合de novo预测数据库及homology-based数据库
因为都是fasta格式(Aves_a.embl转化为fasta了,见上文),cat到一起就行了
cat ${i}-families.fa Aves_a.fasta > all_${i}_final.fasta
5、RepeatMasker注释
RepeatMasker -xsmall -poly \
-pa 5 -lib ${i}.all.repeat.db.fasta -engine ncbi ${i}.fna
参数就不说了,RepeatMasker -h
看一下吧。
大功告成
结果显示,de novo-based和homology-based一起用比单个用要多注释30%-50%(对我的数据而言)。
欢迎讨论