跳转至

重复序列注释RepeatMasker

一句话概述:RepeatMasker是基因组中重复序列(转座子、串联重复等)的标准鉴定与屏蔽工具,是基因组注释流程的第一步,目前人类基因组中超过56%的序列被识别为重复区域。

核心知识点速查表

概念说明
RepeatMasker重复序列鉴定和屏蔽的标准工具
转座子(TE)能在基因组中移动的DNA序列(白话:会跳的基因)
Hard-masking用N替换重复区域(下游工具无法利用这些区域)
Soft-masking用小写字母标记重复区域(下游工具可选择性使用)
RepeatModeler从头构建物种特异性重复序列库
DfamRepeatMasker使用的HMM重复序列数据库
Repbase经典重复序列数据库(需授权)
SINE/LINE短/长散在重复元件(白话:不同大小的跳跃基因)

一、重复序列分类

类型子类说明典型长度
DNA转座子hAT, Tc1/Mariner剪切粘贴机制0.5-10kb
逆转录转座子LINE(L1,L2)长散在元件,通过RNA中间体1-7kb
逆转录转座子SINE(Alu)短散在元件,依赖LINE机制100-400bp
LTR逆转录转座子Gypsy, Copia两端有长末端重复5-15kb
串联重复微卫星/小卫星短序列多次重复2-100bp单元
简单重复poly-A等低复杂度序列可变

二、安装与数据库配置

# === Conda安装RepeatMasker ===
conda create -n repeat -c bioconda repeatmasker repeatmodeler   # 创建环境
conda activate repeat                                            # 激活环境

# === 检查安装和配置 ===
RepeatMasker -v                    # 查看版本
RepeatMasker -e ncbi               # 指定搜索引擎为RMBlast

# === 查看可用的物种库 ===
# RepeatMasker内置了各物种的重复序列库
queryRepeatDatabase.pl -stat        # 查看数据库统计
queryRepeatDatabase.pl -species human   # 查看人类重复序列信息
# === 使用RepeatModeler构建物种特异性重复库 ===
# 非模式生物必须先用这步!否则可能漏掉28%以上的重复序列

# 第1步:建立数据库
BuildDatabase \
    -name my_species_db \        # 数据库名称
    -engine ncbi \               # 搜索引擎
    genome.fasta                  # 输入基因组

# 第2步:运行RepeatModeler(耗时较长)
RepeatModeler \
    -database my_species_db \    # 第1步建立的数据库
    -engine ncbi \               # 搜索引擎
    -pa 16 \                     # 并行线程数
    -LTRStruct                    # 同时检测LTR结构(推荐开启)

# 产出文件:my_species_db-families.fa(物种特异重复序列库)

三、运行RepeatMasker

3.1 使用内置库

# === 模式生物直接使用内置库 ===
RepeatMasker \
    -species "homo sapiens" \    # 指定物种名(用引号包裹)
    -pa 16 \                     # 并行线程数(实际用线程=pa×4)
    -xsmall \                    # soft-masking模式(推荐用于基因注释)
    -gff \                       # 同时输出GFF注释文件
    -dir rm_output \             # 输出目录
    genome.fasta                  # 输入基因组

3.2 使用自建库

# === 非模式生物用RepeatModeler生成的库 ===
RepeatMasker \
    -lib my_species_db-families.fa \   # 使用自建重复序列库
    -pa 16 \                            # 并行线程数
    -xsmall \                           # soft-masking
    -gff \                              # 输出GFF
    -dir rm_output \                    # 输出目录
    genome.fasta                         # 输入基因组

3.3 合并自建库与Dfam库

# === 最全面的策略:自建库 + 公共库合并 ===
# 先用自建库运行一次
RepeatMasker \
    -lib my_species_db-families.fa \   # 自建库
    -pa 16 -xsmall -gff \
    -dir round1 \
    genome.fasta

# 再用内置库对未mask区域补充扫描
RepeatMasker \
    -species "closest_species" \       # 最近缘的模式物种
    -pa 16 -xsmall -gff \
    -dir round2 \
    round1/genome.fasta.masked          # 第一轮结果作为输入

四、输出文件解读

# === RepeatMasker 输出文件 ===
# genome.fasta.masked    - 屏蔽后的基因组序列(★主要结果)
# genome.fasta.out       - 详细注释列表(每个重复元件的位置和类型)
# genome.fasta.tbl       - 统计汇总表(★快速查看结果)
# genome.fasta.out.gff   - GFF格式注释(加-gff参数时)
# === 查看统计汇总(.tbl文件) ===
cat genome.fasta.tbl
# 输出示例:
# ==================================================
# file name: genome.fasta
# sequences:            12        # 染色体/scaffold数
# total length:   119667750 bp    # 基因组总长
# GC level:         36.06 %       # GC含量
# bases masked:    56234567 bp    # 被mask的碱基数
# ==================================================
#                 Number   Length    Percentage
# SINEs:           12345   4567890    3.82 %
# LINEs:            8901   23456789   19.60 %
# LTR elements:     5678   12345678   10.32 %
# DNA elements:     3456    5678901    4.75 %
# Small RNA:         123     456789    0.38 %
# Simple repeats:   9012    1234567    1.03 %
# Total:                   56234567   47.00 %
# === 解析.out文件(Python脚本) ===
# 提取各类重复元件的长度分布
awk '{if(NR>3) print $11, $7-$6}' genome.fasta.out | \   # 提取类型和长度
    sort | \                                                # 排序
    awk '{sum[$1]+=$2; count[$1]++} END{              
        for(k in sum) print k, count[k], sum[k]            # 汇总每类数量和总长
    }' | sort -k3 -nr                                       # 按总长排序

五、高级用法

# === 按重复类型分别mask ===
# 只mask转座子,保留简单重复
RepeatMasker \
    -species "species_name" \
    -nolow \                     # 不mask低复杂度和简单重复
    -pa 16 -xsmall \
    genome.fasta

# === 按序列分歧度过滤 ===
# 只mask近期插入的重复(分歧度<10%)
RepeatMasker \
    -species "species_name" \
    -div 10 \                    # 只mask分歧度<10%的重复
    -pa 16 -xsmall \
    genome.fasta
# === 使用EDTA替代方案(植物基因组推荐) ===
# EDTA整合了多种TE检测工具,对植物基因组效果更好
EDTA.pl \
    --genome genome.fasta \      # 输入基因组
    --species Rice \             # 物种(可选)
    --step all \                 # 运行所有步骤
    --threads 16 \               # 线程数
    --anno 1                      # 同时做全基因组TE注释

六、面试高频考点

Q1: 为什么基因注释前必须做重复序列屏蔽?

  • 重复序列会干扰基因预测(把TE误判为基因)
  • 比对时重复区会产生大量假阳性
  • 不mask的话基因预测工具效率极低
  • 白话:先把杂草拔掉,才能看清庄稼在哪

Q2: Hard-masking和Soft-masking的区别?

  • Hard-masking(-x参数):重复区变成N,彻底不可用
  • Soft-masking(-xsmall参数):重复区变成小写字母,可选择性使用
  • 基因注释一般用soft-masking(有些基因在重复区附近)
  • 序列比对一般用hard-masking

Q3: 非模式生物怎么做重复注释?

  1. 先用RepeatModeler从基因组从头构建重复序列库
  2. 手动检查/整理生成的库(去除蛋白编码基因误判)
  3. 用自建库+最近缘物种的Dfam库合并运行RepeatMasker
  4. 这种组合策略能捕获最多的重复序列

常见报错与解决

报错原因解决方案
No search engine found未安装RMBlast/HMMERconda install rmblast
Can't find species物种名拼写错误或库中没有queryRepeatDatabase.pl查可用物种
RepeatModeler很慢正常,大基因组需要数天增加-pa参数或提交集群
Percentage masked太低使用了通用库而非物种特异库先运行RepeatModeler构建自建库
内存不足大基因组分染色体分别运行再合并

速查表

# === RepeatMasker 常用参数速查 ===
-species "name"    # 指定物种(模式生物用)
-lib file.fa       # 指定自建重复库(非模式生物用)
-pa N              # 并行数(实际线程=N×4)
-xsmall            # soft-masking(基因注释推荐)
-x                 # hard-masking(比对用)
-nolow             # 不mask简单重复和低复杂度
-noint             # 不mask散在重复(只mask简单重复)
-div N             # 只mask分歧度<N%的重复
-gff               # 输出GFF格式
-a                 # 输出比对详情
-s/-q/-qq          # 灵敏度:慢但全/快/最快