重复序列注释RepeatMasker
一句话概述:RepeatMasker是基因组中重复序列(转座子、串联重复等)的标准鉴定与屏蔽工具,是基因组注释流程的第一步,目前人类基因组中超过56%的序列被识别为重复区域。
核心知识点速查表
| 概念 | 说明 |
|---|
| RepeatMasker | 重复序列鉴定和屏蔽的标准工具 |
| 转座子(TE) | 能在基因组中移动的DNA序列(白话:会跳的基因) |
| Hard-masking | 用N替换重复区域(下游工具无法利用这些区域) |
| Soft-masking | 用小写字母标记重复区域(下游工具可选择性使用) |
| RepeatModeler | 从头构建物种特异性重复序列库 |
| Dfam | RepeatMasker使用的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: 非模式生物怎么做重复注释?
- 先用RepeatModeler从基因组从头构建重复序列库
- 手动检查/整理生成的库(去除蛋白编码基因误判)
- 用自建库+最近缘物种的Dfam库合并运行RepeatMasker
- 这种组合策略能捕获最多的重复序列
常见报错与解决
| 报错 | 原因 | 解决方案 |
|---|
No search engine found | 未安装RMBlast/HMMER | conda 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 # 灵敏度:慢但全/快/最快