By liyupeng, 30 July, 2025
Forums

脚本repeatmodeler.sh:鉴定重复序列流程

  1. 既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。
  2. repeatmodeler.sh则是把把鉴定流程,鉴定出来的重复序列分类打包等等步骤合并到一起,配合镜像repeat_mark3b提前准备好的数据库,能够实现自动化的鉴定及分类工作。
  3. 参考文档;https://www.kdocs.cn/l/caE41kwA97SB
  4. 参数设定
    1. i,指定输入参数,这里默认是ltr.sh运行后的target.rmmasked.fasta;而且,默认会进入前者创建好的文件夹当中。至此,肯定存在这样的一个问题:为什么不把这两个脚本合并到一起?对此,回答是为了尽可能的压榨服务器的算力资源。经常用一些pipiline的bro应该知道,即使设定了30线程,在pipieline的一些进程中,有时只会出现一个cpu在干活的情况,这个时段的进程无法使用多线程。这里也是一样,一开始的设定是一整个的重复序列鉴定流程,但这么做不仅出错部分改起来麻烦,效率也比较低,所以拆成3部分的内容。
    2. t,线程参数
  5. 使用方法
bash repeatmodeler2.sh -i target.rmmasked.fasta -t 20 &
  1. 脚本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 ../../