脚本repeatmodeler.sh:鉴定重复序列流程
- 既ltr.sh(https://www.kdocs.cn/l/cnR4LRGikbue?from=docs&reqtype=kdocs&startTime=1753862559090&createDirect=true&newFile=true)这个脚本之后,这次的脚本repeatmodeler.sh则是用于鉴定ltr重复序列以外的其他重复序列,因为前者占大头,特征性强,可预测,所以用专门的工具来预测,除了ltr之外还有其他很多类型的重复序列,这部分就用repeatmodeler来鉴定,说实在的,这个工具,实际上并不是一个工具,应该说是工具箱,或者说pipeline,集合了针对主要重复序列的鉴定软件而成的一个pipiline。
- repeatmodeler.sh则是把把鉴定流程,鉴定出来的重复序列分类打包等等步骤合并到一起,配合镜像repeat_mark3b提前准备好的数据库,能够实现自动化的鉴定及分类工作。
- 参考文档;https://www.kdocs.cn/l/caE41kwA97SB
- 参数设定
- i,指定输入参数,这里默认是ltr.sh运行后的target.rmmasked.fasta;而且,默认会进入前者创建好的文件夹当中。至此,肯定存在这样的一个问题:为什么不把这两个脚本合并到一起?对此,回答是为了尽可能的压榨服务器的算力资源。经常用一些pipiline的bro应该知道,即使设定了30线程,在pipieline的一些进程中,有时只会出现一个cpu在干活的情况,这个时段的进程无法使用多线程。这里也是一样,一开始的设定是一整个的重复序列鉴定流程,但这么做不仅出错部分改起来麻烦,效率也比较低,所以拆成3部分的内容。
- t,线程参数
- 使用方法
bash repeatmodeler2.sh -i target.rmmasked.fasta -t 20 &
- 脚本repeatmodeler2.sh
#!/bin/bash
# 初始化变量
input=""
threads=""
# 使用 getopts 来处理 -i 和 -t 参数,将参数后面的值付给变量
while getopts "i:t:" opt; do
case $opt in
i) # 处理 -i 参数
input=$OPTARG # 将 -i 参数后面的值存储在变量 input 中
;;
t) # 处理 -t 参数
threads=$OPTARG # 将 -t 参数后面的值存储在变量 threads 中
;;
\?) # 处理无效参数
echo "无效参数:-$OPTARG"
exit 1
;;
esac
done
#进入指定序列文件创建的文件夹中,这在ltr这一步已经创建
cd "${input}_dir"
#第二部分,repeatmodeler鉴定重复序列
#创建文件夹,进入文件夹
mkdir repeatmodeler
mv target.rmmasked.fasta repeatmodeler
cd repeatmodeler
#建立索引
BuildDatabase -engine ncbi -name target target.rmmasked.fasta
#运行repeatmodeler
RepeatModeler -threads $threads -engine ncbi -database target
#进入repeatmodeler的输出文件夹中,RM开头的
cd RM*
#按照标识符是否为unknown进行分类,分为已知和未知的文件
seqkit grep -nrp 'Unknown' consensi.fa.classified > repeatmodeler_unknowns.fasta
seqkit grep -vnrp 'Unknown' consensi.fa.classified > repeatmodeler_identities.fasta
#转座酶数据库建立索引
makeblastdb -in /home/data/Tpases020812 -dbtype prot -out Tpases020812
#和转座酶数据库进行比对,如果能够比对的上,就归类到已知的
blastx -query repeatmodeler_unknowns.fasta -db Tpases020812 -evalue 1e-10 -num_descriptions 10 -num_threads $threads -out modelerunknown_blast_results.txt
#解析比对结果,提取已知的转座子(重复序列的一种类型)
perl /home/soft/CRL_Scripts1.0/transposon_blast_parse.pl --blastx modelerunknown_blast_results.txt --modelerunknown repeatmodeler_unknowns.fasta
#文件重命名,顺便高亮,还有复制移动
cp unknown_elements.txt ModelerUnknown.lib
cat identified_elements.txt repeatmodeler_identities.fasta > ModelerID.lib
chmod 777 ModelerUnknown.lib ModelerID.lib
cp ModelerUnknown.lib ModelerID.lib ../../
cd ../../