转座子与重复序列注释(RepeatMasker / RepeatModeler / EDTA)¶
一句话概述¶
转座子和重复序列占据真核基因组的30-80%,本教程系统介绍利用RepeatMasker、RepeatModeler和EDTA进行重复序列从头鉴定、分类和注释的完整流程。
目录¶
1. 核心知识点¶
| 序号 | 步骤 | 工具 | 目的 | 输入 | 输出 | 关键参数 |
|---|---|---|---|---|---|---|
| 1 | 从头重复鉴定 | RepeatModeler | 构建物种特异重复序列库 | 基因组FASTA | 重复序列共识库 | -LTRStruct |
| 2 | LTR逆转录转座子鉴定 | LTR_retriever/LTRharvest | 精确鉴定LTR-RT | 基因组FASTA | LTR库+GFF | 插入时间估计 |
| 3 | TIR转座子鉴定 | TIR-Learner/MITE-Hunter | 鉴定DNA转座子 | 基因组FASTA | TIR库+GFF | TSD长度 |
| 4 | Helitron鉴定 | HelitronScanner | 鉴定滚环转座子 | 基因组FASTA | Helitron库 | 末端特征 |
| 5 | EDTA整合注释 | EDTA | 一站式TE注释管线 | 基因组FASTA | 非冗余TE库+GFF | --sensitive |
| 6 | 重复序列屏蔽 | RepeatMasker | 全基因组重复注释和屏蔽 | 基因组+重复库 | 屏蔽基因组+注释 | -xsmall, -pa |
| 7 | 分类与统计 | RepeatMasker/脚本 | 统计各类重复序列比例 | RM输出 | 分类统计表 | 分层分类 |
| 8 | 插入时间估计 | 自定义脚本 | 估计TE插入年龄 | LTR对齐 | 时间分布图 | 突变率 |
| 9 | 系统发育分析 | MAFFT+FastTree | TE家族进化关系 | TE序列 | 进化树 | RT/IN结构域 |
| 10 | 可视化与景观图 | R/Perl脚本 | 展示TE分布和演化景观 | 注释结果 | Repeat Landscape图 | Kimura距离 |
2. 各步骤详解¶
步骤1:从头重复序列鉴定(RepeatModeler)¶
白话解释:对于非模式生物,没有现成的重复序列数据库。RepeatModeler通过分析基因组中高频出现的序列模式,从头发现和构建一个物种特异的重复序列库。
技术细节:
RepeatModeler的工作原理: 1. 将基因组序列分割成小片段 2. 使用RECON和RepeatScout两种算法寻找重复模式 3. RECON:基于序列比对的全局搜索,发现较长的重复 4. RepeatScout:基于k-mer频率的快速搜索,发现较短的重复 5. 合并去冗余,生成共识序列(consensus) 6. 对共识序列进行初步分类(TE类型推断)
RepeatModeler2新增了LTRStruct模块: - 使用LTRharvest+LTR_retriever精确鉴定LTR逆转录转座子 - 与RECON/RepeatScout结果合并 - 显著提高了LTR-RT的鉴定准确性
运行时间:中等基因组(500Mb-1Gb)通常需要1-3天(16核)。
# 构建数据库
BuildDatabase -name genome_db -engine ncbi genome.fa
# 运行RepeatModeler2(包含LTRStruct)
RepeatModeler -database genome_db \
-pa 16 \
-LTRStruct
# 输出:
# genome_db-families.fa - 重复序列共识库
# genome_db-families.stk - Stockholm格式的种子比对
# RM_*/ - 中间文件目录
# 查看结果统计
grep -c "^>" genome_db-families.fa
grep "^>" genome_db-families.fa | grep -oP "#\S+" | sort | uniq -c | sort -rn
步骤2:LTR逆转录转座子鉴定¶
白话解释:LTR(Long Terminal Repeat)逆转录转座子是真核基因组中最丰富的TE类型之一,在植物中可占基因组的50%以上。它们两端有相同的长末端重复序列,内部编码逆转录酶等蛋白。LTR_retriever通过严格的结构验证来精确鉴定LTR-RT。
技术细节:
LTR-RT的结构特征: - 两端有LTR(数百bp到数kb,>80%序列相同) - LTR边界有TG...CA二核苷酸信号 - 插入时产生TSD(Target Site Duplication,通常4-6bp) - 内部编码gag、pol(含PR、RT、RH、IN结构域) - 进一步分为Copia(IN在RT之前)和Gypsy(IN在RT之后)
LTR_retriever的筛选流程: 1. 接收LTRharvest或LTR_FINDER的原始候选 2. 结构验证:检查TSD、末端基序、内部结构完整性 3. 去冗余和嵌套解析 4. 按RT结构域分类(Copia/Gypsy/unknown) 5. 估计插入时间:两个LTR之间的序列分歧度÷(2×突变率)
# Step 1: LTRharvest候选鉴定
gt suffixerator -db genome.fa -indexname genome_idx -tis -suf -lcp -des -ssp -sds -dna
gt ltrharvest -index genome_idx -minlenltr 100 -maxlenltr 7000 \
-mintsd 4 -maxtsd 6 -motif TGCA -motifmis 1 \
-similar 85 -vic 10 -seed 20 -seqids yes \
> ltrharvest_raw.gff3
gt ltrharvest -index genome_idx -minlenltr 100 -maxlenltr 7000 \
-mintsd 4 -maxtsd 6 \
-similar 85 -vic 10 -seed 20 -seqids yes \
> ltrharvest_nomotif.gff3
# Step 2: LTR_FINDER候选鉴定(补充)
ltr_finder genome.fa -w 2 -C -D 15000 -d 1000 -L 7000 -l 100 -p 20 -M 0.85 > ltr_finder.scn
# Step 3: LTR_retriever精确过滤和分类
cat ltrharvest_raw.gff3 ltrharvest_nomotif.gff3 > ltrharvest_all.gff3
LTR_retriever -genome genome.fa \
-inharvest ltrharvest_all.gff3 \
-infinder ltr_finder.scn \
-threads 16
# 输出:
# genome.fa.mod.LTRlib.fa - 非冗余LTR库
# genome.fa.mod.out - RepeatMasker格式注释
# genome.fa.mod.pass.list - 完整LTR列表+分类+插入时间
步骤3:TIR转座子鉴定¶
白话解释:TIR(Terminal Inverted Repeat)转座子属于DNA转座子(Class II),通过"剪切-粘贴"机制移动。它们两端有反向重复序列,内部编码转座酶。MITE(Miniature Inverted-repeat Transposable Element)是短小的非自主TIR转座子。
技术细节:
TIR转座子的结构特征: - 两端有TIR(Terminal Inverted Repeat),10-几百bp - 插入时产生TSD(因超家族不同:hAT=8bp, CACTA=3bp, Mutator=9bp, PIF/Harbinger=3bp, Tc1/Mariner=TA) - 内部编码DDE转座酶(自主型)或很短(非自主型MITE)
TIR-Learner是EDTA中使用的TIR鉴定模块: - 使用机器学习方法预测TIR元素 - 结合结构特征和TSD验证 - 对MITE的鉴定尤其有效
MITE-Hunter专注于鉴定MITE(<600bp的非自主DNA转座子)。
# TIR-Learner
TIR-Learner.sh -g genome.fa -s species_name -t 16 -l 500
# MITE-Hunter
MITE_Hunter_manager.pl \
-i genome.fa \
-g species_name \
-n 16 \
-S 12345678
# 或使用MITE-Tracker
python3 -m MITETracker -g genome.fa -j mite_output -w 16
步骤4:Helitron鉴定¶
白话解释:Helitron是一种通过滚环复制机制转座的DNA转座子,结构独特(不产生TSD,有特定的末端结构),在某些物种(如玉米)中含量丰富。因为没有TSD,它们比TIR转座子更难鉴定。
技术细节:
Helitron的结构特征: - 5'端:TC起始 - 3'端:CTRR末端(R=A/G),上游有发夹结构(stem-loop) - 无TSD(与其他转座子不同) - 可捕获宿主基因片段(基因劫持)
HelitronScanner通过训练模型识别Helitron末端结构: - 扫描5'端的TC-起始模式 - 扫描3'端的CTRR+发夹结构 - 配对5'和3'端确定完整元素
# HelitronScanner
java -jar HelitronScanner.jar scanHead \
-genome genome.fa \
-buffer_size 0 \
-output head.txt
java -jar HelitronScanner.jar scanTail \
-genome genome.fa \
-buffer_size 0 \
-output tail.txt
java -jar HelitronScanner.jar pairEnds \
-head head.txt \
-tail tail.txt \
-genome genome.fa \
-output helitrons.fa
步骤5:EDTA整合注释¶
白话解释:EDTA(Extensive de-novo TE Annotator)是一个整合了上述所有工具的自动化管线,从基因组序列一步到位完成全部TE注释。它内部协调LTR_retriever、TIR-Learner、HelitronScanner和RepeatModeler,输出非冗余的TE库和全基因组注释。
技术细节:
EDTA的完整流程: 1. LTR-RT鉴定(LTRharvest + LTR_retriever) 2. TIR鉴定(TIR-Learner + MITE-Hunter) 3. Helitron鉴定(HelitronScanner) 4. 合并去冗余 5. 对未分类序列补充搜索(RepeatModeler) 6. 全基因组注释(RepeatMasker) 7. 过滤基因误判(排除与已知蛋白相似的序列)
EDTA的优势: - 一站式解决方案,无需手动协调多个工具 - 产出高质量的非冗余TE库(适合直接用于基因组注释) - 内置质量控制(排除基因假阳性、评估库的灵敏度和特异性) - 支持提供CDS注释来排除基因区域
注意:EDTA运行时间较长(中等基因组约1-3天),但结果质量优于单独运行各工具。
# EDTA基本运行
EDTA.pl \
--genome genome.fa \
--threads 16 \
--overwrite 1 \
--sensitive 1
# 提供CDS信息以排除基因假阳性
EDTA.pl \
--genome genome.fa \
--cds gene_cds.fa \
--threads 16 \
--overwrite 1 \
--sensitive 1 \
--anno 1
# 如果已有curated TE库,可以合并
EDTA.pl \
--genome genome.fa \
--curatedlib curated_te.fa \
--threads 16 \
--anno 1
# 输出文件:
# genome.fa.mod.EDTA.TElib.fa - 非冗余TE库
# genome.fa.mod.EDTA.TEanno.gff3 - 全基因组TE注释
# genome.fa.mod.EDTA.TEanno.sum - 注释统计摘要
# genome.fa.mod.out - RepeatMasker格式输出
步骤6:重复序列屏蔽(RepeatMasker)¶
白话解释:有了重复序列库后,RepeatMasker将基因组中所有匹配的重复序列找出来、标注并屏蔽。这是基因组注释(避免TE被误预测为基因)和进化分析(排除重复区域)的关键前置步骤。
技术细节:
RepeatMasker的搜索引擎选择: - RMBlast(默认):基于NCBI BLAST的改良版,灵敏度高 - HMMER:使用HMM profile搜索,对divergent copies更敏感 - CrossMatch:最老的引擎,速度快但灵敏度较低 - ABBlast:商业版本
屏蔽选项: - -xsmall:soft masking(小写字母),推荐用于后续基因注释 - -x:hard masking(替换为X) - 默认:hard masking(替换为N)
RepeatMasker的分类系统使用Wicker et al. (2007)的TE分类标准,将重复序列分为: - Class I(逆转录转座子):LTR(Copia, Gypsy, Bel-Pao), LINE, SINE - Class II(DNA转座子):TIR, Helitron, Maverick - 其他:卫星DNA, 简单重复, 低复杂度序列
# 使用EDTA生成的TE库进行屏蔽
RepeatMasker -pa 16 \
-lib genome.fa.mod.EDTA.TElib.fa \
-xsmall \
-gff \
-dir repeat_masker_output \
genome.fa
# 使用Repbase+自定义库
RepeatMasker -pa 16 \
-species "zea mays" \
-lib custom_repeats.fa \
-xsmall \
-gff \
-a \
-dir repeat_masker_output \
genome.fa
# -a: 生成比对文件(.align),用于后续Kimura距离计算
步骤7:分类与统计¶
白话解释:统计基因组中各类重复序列的比例——LTR逆转录转座子占多少?DNA转座子占多少?简单重复占多少?这是基因组论文中必须报告的基本信息。
技术细节:
RepeatMasker输出的.tbl文件包含详细的分类统计,但可能需要进一步整理。
关键统计量: - 各大类TE的基因组占比(bp和百分比) - 各超家族的分布 - 完整vs片段化元素的比例 - 嵌套(nested)插入的频率
植物基因组的典型TE组成: - 大基因组(如玉米2.3Gb):TE>80%,LTR-Gypsy为主 - 中等基因组(如水稻430Mb):TE~35% - 小基因组(如拟南芥135Mb):TE~15%
# 查看RepeatMasker统计摘要
cat repeat_masker_output/genome.fa.tbl
# 或解析EDTA输出
cat genome.fa.mod.EDTA.TEanno.sum
# R中详细统计和可视化
library(tidyverse)
# 解析RepeatMasker .out文件
rm_out <- read.table("repeat_masker_output/genome.fa.out",
skip=3, fill=TRUE,
col.names=c("score","div","del","ins","query","begin","end",
"left","strand","repeat_name","class","rbegin","rend","rleft","ID"))
# 提取大类信息
rm_out <- rm_out %>%
mutate(
length = end - begin + 1,
superfamily = case_when(
grepl("LTR/Gypsy", class) ~ "LTR/Gypsy",
grepl("LTR/Copia", class) ~ "LTR/Copia",
grepl("LTR", class) ~ "LTR/Other",
grepl("LINE", class) ~ "LINE",
grepl("SINE", class) ~ "SINE",
grepl("DNA/TcMar", class) ~ "DNA/TcMar",
grepl("DNA/hAT", class) ~ "DNA/hAT",
grepl("DNA/MULE", class) ~ "DNA/MULE",
grepl("DNA/CACTA", class) ~ "DNA/CACTA",
grepl("DNA", class) ~ "DNA/Other",
grepl("Helitron", class) ~ "Helitron",
grepl("Simple_repeat", class) ~ "Simple_repeat",
TRUE ~ "Other"
)
)
# 统计各超家族
genome_size <- 500000000 # 基因组大小(bp)
summary_table <- rm_out %>%
group_by(superfamily) %>%
summarise(
count = n(),
total_bp = sum(length),
pct_genome = total_bp / genome_size * 100
) %>%
arrange(desc(total_bp))
print(summary_table)
# 饼图
ggplot(summary_table, aes(x="", y=pct_genome, fill=superfamily)) +
geom_col(width=1) +
coord_polar(theta="y") +
labs(title="基因组重复序列组成") +
theme_void()
步骤8:插入时间估计¶
白话解释:LTR逆转录转座子插入时两端的LTR序列是完全相同的,之后会独立积累突变。通过比较同一元素两端LTR的序列分歧度,可以估计这个TE是什么时候插入的——就像"分子钟"。
技术细节:
插入时间公式:T = K / (2 × μ) - T:插入时间(百万年) - K:两个LTR之间的核苷酸替代率(通常用Kimura 2-parameter模型校正) - μ:中性突变率(物种特异:水稻1.3×10⁻⁸/site/year,拟南芥7×10⁻⁹/site/year) - 因子2:两个LTR都在积累突变
局限性: - 依赖准确的突变率假设 - 基因转换可能"抹平"LTR间差异,导致低估插入时间 - 非常古老的LTR-RT可能因为突变饱和无法准确估计 - 只适用于有完整成对LTR的元素
LTR_retriever输出中已包含每个LTR-RT的插入时间估计。
# LTR_retriever已经计算了插入时间
# 查看结果
head genome.fa.mod.pass.list
# 列:chr start end internal_id LTR_id TSD motif strand superfamily insertion_time
# 自定义计算(如需不同突变率)
# 提取LTR对,做配对比对
# 使用Kimura 2-parameter距离
# 插入时间分布可视化
ltr_data <- read.table("genome.fa.mod.pass.list", header=FALSE, sep="\t")
colnames(ltr_data) <- c("chr","start","end","id","ltr_id","tsd","motif",
"strand","superfamily","insertion_time")
# 按超家族绘制插入时间分布
ggplot(ltr_data, aes(x=insertion_time, fill=superfamily)) +
geom_histogram(bins=50, alpha=0.7, position="stack") +
labs(x="插入时间 (MYA)", y="LTR-RT数量",
title="LTR逆转录转座子插入时间分布") +
scale_fill_brewer(palette="Set2") +
xlim(0, 10) +
theme_minimal(base_size=14)
步骤9:系统发育分析¶
白话解释:对TE家族内部的进化关系进行分析——同一个TE家族的不同拷贝之间有什么进化关系?哪些是最近扩增的?通常使用逆转录酶(RT)结构域序列构建进化树。
技术细节:
TE系统发育分析的应用: - 确认TE分类的正确性 - 识别活跃的TE家族(近期分支上的多个拷贝) - 追踪TE在物种间的水平转移 - 研究TE家族的进化历史
实践步骤: 1. 从TE序列中提取保守结构域(RT for LTR-RT, DDE for TIR) 2. 多序列比对(MAFFT/MUSCLE) 3. 构建进化树(FastTree/RAxML/IQ-TREE) 4. 与已知参考TE的分类进行验证
# 1. 提取RT结构域序列
# 使用TEsorter分类和提取
TEsorter genome.fa.mod.EDTA.TElib.fa -db rexdb -p 16
# 2. 提取Gypsy家族的RT序列
grep -A1 "Gypsy.*RT" TEsorter_output.fa > gypsy_RT.fa
# 3. 多序列比对
mafft --auto --thread 16 gypsy_RT.fa > gypsy_RT_aligned.fa
# 4. 构建进化树
FastTree -gamma gypsy_RT_aligned.fa > gypsy_RT.tree
# 或使用IQ-TREE(更准确)
iqtree -s gypsy_RT_aligned.fa -m MFP -bb 1000 -nt 16
步骤10:Repeat Landscape可视化¶
白话解释:Repeat Landscape图展示基因组中TE的"年龄分布"——横轴是序列分歧度(代表年龄:分歧度越大越古老),纵轴是占基因组的比例。这个图能直观反映TE的爆发历史和当前活跃程度。
技术细节:
Repeat Landscape的构建原理: - RepeatMasker输出的.align文件包含每个TE拷贝与共识序列的比对 - 从比对中计算Kimura 2-parameter距离(校正了转换/颠换比率差异) - 按Kimura距离分bin,统计每个bin中各类TE的总长度 - 横轴0代表最近插入(与共识序列几乎相同),高值代表古老插入
解读: - 左侧的峰:近期活跃的TE家族 - 右侧平缓的分布:古老的TE(已退化) - 尖锐的峰:特定时期的TE爆发事件
# 1. 运行RepeatMasker时使用-a选项生成align文件
RepeatMasker -pa 16 -lib TE_lib.fa -xsmall -a -gff genome.fa
# 2. 使用RepeatMasker自带脚本计算Kimura距离
calcDivergenceFromAlign.pl \
-s genome.fa.align.divsum \
genome.fa.align
# 3. 生成Landscape数据
createRepeatLandscape.pl \
-div genome.fa.align.divsum \
-g 500000000 \
> repeat_landscape.html
# R自定义Repeat Landscape图
library(ggplot2)
library(tidyverse)
# 解析divsum文件
parse_divsum <- function(divsum_file, genome_size) {
lines <- readLines(divsum_file)
# 找到coverage数据部分
data_start <- grep("^Div", lines) + 1
# 解析数据...
# (具体格式根据文件版本调整)
}
# 或从RepeatMasker .out文件直接计算
landscape_data <- rm_out %>%
mutate(kimura_bin = round(div)) %>%
group_by(kimura_bin, superfamily) %>%
summarise(total_bp = sum(length), .groups="drop") %>%
mutate(pct_genome = total_bp / genome_size * 100)
# Repeat Landscape堆叠面积图
ggplot(landscape_data, aes(x=kimura_bin, y=pct_genome, fill=superfamily)) +
geom_area(position="stack") +
scale_fill_manual(values=c(
"LTR/Gypsy"="darkblue", "LTR/Copia"="lightblue",
"DNA/hAT"="orange", "DNA/CACTA"="red",
"LINE"="green", "SINE"="yellow",
"Helitron"="purple", "Other"="grey"
)) +
labs(x="Kimura substitution level (%)", y="基因组占比 (%)",
title="Repeat Landscape") +
xlim(0, 50) +
theme_minimal(base_size=14) +
theme(legend.position="right")
ggsave("repeat_landscape.pdf", width=12, height=6)
3. 实战命令/代码(完整流程)¶
#!/bin/bash
# ====================================================
# 转座子与重复序列注释完整流程
# ====================================================
set -euo pipefail
THREADS=16
GENOME="genome.fa"
CDS="gene_cds.fa" # 可选:已知CDS用于排除假阳性
OUTDIR="repeat_annotation"
GENOME_SIZE=$(grep -v "^>" ${GENOME} | tr -d '\n' | wc -c)
mkdir -p ${OUTDIR}/{edta,repeatmasker,analysis,figures}
echo "基因组大小: ${GENOME_SIZE} bp"
# ==== 方法1: EDTA一站式(推荐) ====
echo "=== EDTA注释 ==="
EDTA.pl \
--genome ${GENOME} \
--cds ${CDS} \
--threads ${THREADS} \
--overwrite 1 \
--sensitive 1 \
--anno 1
# 移动结果
cp ${GENOME}.mod.EDTA.TElib.fa ${OUTDIR}/edta/
cp ${GENOME}.mod.EDTA.TEanno.gff3 ${OUTDIR}/edta/
cp ${GENOME}.mod.EDTA.TEanno.sum ${OUTDIR}/edta/
echo "--- EDTA注释统计 ---"
cat ${GENOME}.mod.EDTA.TEanno.sum
# ==== 方法2: RepeatModeler + RepeatMasker(经典方法) ====
echo ""
echo "=== RepeatModeler + RepeatMasker ==="
# RepeatModeler
BuildDatabase -name ${OUTDIR}/repeatmasker/genome_db ${GENOME}
RepeatModeler -database ${OUTDIR}/repeatmasker/genome_db -pa ${THREADS} -LTRStruct
# RepeatMasker
RepeatMasker -pa ${THREADS} \
-lib ${OUTDIR}/repeatmasker/genome_db-families.fa \
-xsmall -gff -a \
-dir ${OUTDIR}/repeatmasker \
${GENOME}
echo "--- RepeatMasker统计 ---"
cat ${OUTDIR}/repeatmasker/$(basename ${GENOME}).tbl
# ==== Repeat Landscape ====
echo ""
echo "=== Repeat Landscape ==="
calcDivergenceFromAlign.pl \
-s ${OUTDIR}/analysis/divsum.txt \
${OUTDIR}/repeatmasker/$(basename ${GENOME}).align
createRepeatLandscape.pl \
-div ${OUTDIR}/analysis/divsum.txt \
-g ${GENOME_SIZE} \
> ${OUTDIR}/figures/repeat_landscape.html
# ==== LTR插入时间 ====
echo ""
echo "=== LTR插入时间分析 ==="
if [ -f "${GENOME}.mod.pass.list" ]; then
cp ${GENOME}.mod.pass.list ${OUTDIR}/analysis/
echo "LTR-RT完整元素数: $(wc -l < ${OUTDIR}/analysis/$(basename ${GENOME}).mod.pass.list)"
fi
echo ""
echo "=== 注释完成 ==="
echo "TE库: ${OUTDIR}/edta/$(basename ${GENOME}).mod.EDTA.TElib.fa"
echo "注释GFF: ${OUTDIR}/edta/$(basename ${GENOME}).mod.EDTA.TEanno.gff3"
echo "Landscape: ${OUTDIR}/figures/repeat_landscape.html"
4. 面试常问点¶
Q1:转座子的主要分类系统是什么?Class I和Class II有什么区别?
按Wicker et al. (2007)分类:Class I(逆转录转座子)通过RNA中间体转座("复制-粘贴"),包括LTR(Copia,Gypsy)、LINE、SINE;Class II(DNA转座子)直接在DNA水平转座,包括TIR("剪切-粘贴")、Helitron(滚环复制)、Maverick。Class I每次转座产生新拷贝(拷贝数趋增),Class II中TIR类通常不增加拷贝。
Q2:RepeatModeler和EDTA的区别是什么?什么情况下选择哪个?
RepeatModeler使用通用的重复发现算法(RECON+RepeatScout),对所有类型的重复都有效,但TE分类精度有限。EDTA整合了结构化TE鉴定工具(LTR_retriever+TIR-Learner+HelitronScanner+RepeatModeler),对TE的分类更准确、假阳性更低。选择:需要全面且准确的TE注释选EDTA;时间有限或只需快速获得重复库选RepeatModeler。
Q3:如何估计LTR逆转录转座子的插入时间?原理是什么?
原理:LTR-RT插入时,两端LTR序列完全相同。插入后,两个LTR独立积累突变。通过比对同一元素两端的LTR序列,计算Kimura 2-parameter距离(K),然后用公式T = K/(2×μ)估计插入时间(μ为物种的中性突变率)。局限:需要准确的突变率假设;基因转换可能导致低估;古老TE的突变可能已饱和。
Q4:Soft masking和Hard masking对下游分析有什么影响?
Soft masking(小写字母)保留序列信息,推荐用于基因注释(BRAKER/MAKER需要soft-masked基因组来避免在TE中预测假基因,但允许基因模型延伸入TE-基因边界)。Hard masking(替换为N)完全删除序列信息,适合某些特殊分析。默认的N-masking在需要做序列比对的分析中可能导致问题。
Q5:为什么植物基因组的TE含量通常远高于动物基因组?
原因:(1)植物LTR-RT活性高且删除机制效率低,导致LTR-RT不断积累(如玉米基因组75%是LTR-RT);(2)植物缺乏类似动物的piRNA通路对TE的强力抑制;(3)多倍化事件后,冗余基因组空间中TE扩增阻力小;(4)植物不依赖DNA甲基化之外的表观遗传抑制机制。但也有例外(如河豚基因组400Mb中TE仅2.7%)。
Q6:NSTI在重复序列注释中如何影响结果?
对于从头鉴定(RepeatModeler/EDTA),NSTI不直接适用,但类似概念存在:如果物种没有近缘的参考TE库,分类精度会下降。对于直接使用Repbase等数据库的RepeatMasker搜索,如果目标物种与数据库中的物种距离远,搜索灵敏度会下降,可能遗漏高度divergent的古老TE。这就是为什么推荐先做物种特异的从头鉴定(RepeatModeler/EDTA),再用该库做RepeatMasker。
5. 易错/易混淆点¶
直接使用Repbase/Dfam对非模式生物做注释:通用数据库可能不包含目标物种的特有TE家族,导致大量遗漏。应先用RepeatModeler/EDTA构建物种特异库,再结合通用库使用。
混淆TE的自主型和非自主型:自主型TE编码自身转座所需的蛋白(如LTR-RT编码RT),非自主型(如MITE, LARD)不编码蛋白但借用自主型的转座机器。注释时两者都应包含。
将基因误判为TE:某些TE衍生的基因(domesticated TE)或含有TE来源结构域的宿主基因可能被错误注释为TE。使用EDTA的
--cds选项或手动排除与已知蛋白同源的"TE"可减少这类错误。忽略嵌套(nested)TE的影响:在大基因组中,一个TE内部可能插入了另一个TE,形成嵌套结构。如果不正确处理嵌套,会把一个长的嵌套TE拆分为多个片段,低估TE的真实长度和影响。
Hard masking后做基因注释:Hard masking将TE区域替换为N,如果基因的外显子部分位于TE附近或部分重叠,可能被截断或丢失。基因注释应使用soft masking。
Repeat Landscape的突变率选择错误:不同物种的中性突变率差异巨大(10⁻⁸到10⁻⁹/site/year)。使用错误的突变率会导致时间轴整体偏移。应使用该物种或近缘物种的已知突变率。
6. 补充知识¶
TE对基因组进化的影响¶
- 基因组大小变化:TE的积累和删除是基因组大小变化的主要驱动力
- 基因调控:TE插入调控区域可改变基因表达(增强子、启动子、绝缘子)
- 基因复制:Pack-MULE、Helitron可捕获和传播基因片段
- 表观遗传:TE是DNA甲基化和异染色质的主要靶标
- 物种形成:TE爆发可能与物种分化事件相关
推荐资源¶
- EDTA: https://github.com/oushujun/EDTA
- RepeatMasker: https://www.repeatmasker.org/
- RepeatModeler: https://www.repeatmasker.org/RepeatModeler/
- LTR_retriever: https://github.com/oushujun/LTR_retriever
- Dfam: https://www.dfam.org/ — TE序列和HMM数据库
- Repbase: https://www.girinst.org/repbase/ — 经典TE数据库(需订阅)
- 综述: Wicker et al. (2007) "A unified classification system for eukaryotic transposable elements" Nature Reviews Genetics