167_植物基因组分析¶
一句话概述¶
植物基因组分析面对多倍体、高重复序列含量和大基因组等特殊挑战,通过EDTA(转座子注释)、BRAKER(基因预测)和BUSCO(完整性评估)构建高质量基因组注释,结合比较基因组学揭示进化关系和全基因组复制事件。
核心知识点总览¶
| 知识点 | 说明 |
|---|---|
| 多倍体 | 植物基因组常含2-6套染色体组(异源/同源多倍体) |
| 重复序列 | 占基因组50-85%(转座子为主) |
| EDTA | 综合转座子(TE)注释流水线 |
| BRAKER | 结合蛋白证据和RNA-seq的基因预测 |
| BUSCO | 基于保守直系同源基因的完整性评估 |
| 全基因组复制(WGD) | 植物进化中的多倍化事件 |
| 共线性分析 | 染色体间/种间的基因顺序保守性 |
| Ks分布 | 同义替换率分布检测WGD |
各步骤详解¶
第一步:植物基因组的特殊挑战¶
白话解释: 植物基因组是"地狱级"难度的生信分析:它们经常很大(小麦17Gb,是人类基因组的5倍)、充满重复序列(玉米基因组85%是转座子)、还可能是多倍体(六倍体小麦有3套同源基因组)。分析这样的基因组需要专门的工具和策略。
植物基因组特点: | 特点 | 影响 | 应对策略 | |------|------|---------| | 大基因组(1-30Gb) | 计算资源需求大 | HPC+长读长 | | 高重复(50-85%) | 组装碎片化 | 长reads+Hi-C | | 多倍体 | 同源序列混淆 | ALLHiC/hifiasm分离亚基因组 | | 高杂合度 | haplotig问题 | purge_dups | | 转座子活跃 | 基因被TE插入打断 | EDTA注释后mask |
第二步:转座子注释(EDTA)¶
代码示例:
# === 安装EDTA ===
conda install -c bioconda edta
# === 运行EDTA ===
EDTA.pl \
--genome genome.fasta \
--species others \
--step all \
--sensitive 1 \
--anno 1 \
--threads 32
# 参数:
# --species: Rice/Maize/others
# --sensitive 1: 高灵敏度模式
# --anno 1: 输出注释(mask文件等)
# --cds: 提供CDS文件排除基因(推荐)
# === 带CDS过滤(推荐) ===
EDTA.pl \
--genome genome.fasta \
--cds known_cds.fasta \
--species others \
--step all \
--sensitive 1 \
--anno 1 \
--threads 32
# === 输出文件 ===
# genome.fasta.mod.EDTA.TElib.fa : TE consensus库
# genome.fasta.mod.EDTA.TEanno.gff3 : TE注释GFF3
# genome.fasta.mod.EDTA.TEanno.sum : 统计摘要
# genome.fasta.mod.MAKER.masked : 硬mask基因组
# === 统计TE组成 ===
# EDTA输出包含分类统计:
# LTR retrotransposons: Copia, Gypsy
# DNA transposons: hAT, CACTA, Mutator, Harbinger
# MITE, Helitron, LINE, SINE
第三步:基因预测(BRAKER)¶
代码示例:
# === 安装BRAKER3 ===
# BRAKER3整合了GeneMark-ETP和Augustus
conda install -c bioconda braker3
# === 方法1: 仅用蛋白证据 ===
braker.pl \
--genome=genome_masked.fasta \
--prot_seq=proteins.fasta \
--softmasking \
--threads=32 \
--species=my_plant
# === 方法2: RNA-seq + 蛋白证据(推荐) ===
# 先比对RNA-seq
hisat2-build genome_masked.fasta genome_idx
hisat2 -x genome_idx \
-1 rnaseq_R1.fq.gz -2 rnaseq_R2.fq.gz \
-p 32 --dta | samtools sort -@ 8 -o rnaseq.bam
samtools index rnaseq.bam
# 运行BRAKER3
braker.pl \
--genome=genome_masked.fasta \
--bam=rnaseq.bam \
--prot_seq=OrthoDB_plants.fasta \
--softmasking \
--threads=32 \
--species=my_plant \
--gff3
# === 方法3: BRAKER结合Iso-Seq长读长 ===
braker.pl \
--genome=genome_masked.fasta \
--bam=rnaseq.bam \
--prot_seq=proteins.fasta \
--rnaseq_sets_ids=isoseq \
--rnaseq_sets_dirs=isoseq_aligned.bam \
--softmasking \
--threads=32
# === 输出 ===
# braker/augustus.hints.gff3 : 基因注释
# braker/augustus.hints.aa : 蛋白序列
# braker/augustus.hints.codingseq : CDS序列
第四步:BUSCO完整性评估¶
代码示例:
# === 安装BUSCO ===
conda install -c bioconda busco
# === 基因组完整性评估 ===
busco -i genome.fasta \
-l embryophyta_odb10 \
-o busco_genome \
-m genome \
-c 16
# === 蛋白/转录本完整性评估 ===
busco -i predicted_proteins.fasta \
-l embryophyta_odb10 \
-o busco_proteins \
-m protein \
-c 16
# === 解读BUSCO结果 ===
# C:95.2%[S:92.1%,D:3.1%],F:2.3%,M:2.5%,n:1614
# C = Complete (完整)
# S = Single-copy (单拷贝完整)
# D = Duplicated (重复完整) - 多倍体中D高是正常的
# F = Fragmented (片段化)
# M = Missing (缺失)
# 质量标准: C>95%为优秀; C>90%为良好
# === 多倍体注意 ===
# 六倍体小麦的BUSCO Duplicated可能>50%(因为3套同源基因)
# 这不是错误,而是多倍体的特征
第五步:比较基因组学¶
代码示例:
# === 共线性分析(MCScanX) ===
# 安装
git clone https://github.com/wyp1125/MCScanX.git
cd MCScanX && make
# 准备输入: 全蛋白BLASTp
makeblastdb -in all_proteins.fasta -dbtype prot -out blast_db
blastp -query all_proteins.fasta -db blast_db \
-outfmt 6 -evalue 1e-10 -num_threads 16 \
-out blast.out -max_target_seqs 5
# 准备GFF简化文件 (chr, gene, start, end)
awk '$3=="gene"' annotation.gff3 | \
awk -F'\t' '{print $1"\t"$9"\t"$4"\t"$5}' > genes.gff
# 运行MCScanX
MCScanX genes # 输入前缀
# 输出:
# genes.collinearity : 共线性块
# genes.tandem : 串联重复基因
# genes.html : 网页可视化
# === Ks分析检测WGD ===
# 使用wgd包或手动计算
library(ggplot2)
# 读取Ks值(从ParaAT+KaKs_Calculator获得)
ks_data <- read.delim("ks_values.tsv")
# Ks分布图
ggplot(ks_data, aes(x = Ks)) +
geom_density(fill = "steelblue", alpha = 0.5) +
xlim(0, 5) +
geom_vline(xintercept = c(0.3, 0.8, 1.5), linetype = "dashed", color = "red") +
annotate("text", x = c(0.3, 0.8, 1.5), y = rep(0.8, 3),
label = c("Recent WGD", "Ancient WGD", "Older WGD")) +
labs(x = "Ks (synonymous substitution rate)", y = "Density",
title = "Ks Distribution - WGD Detection") +
theme_minimal()
# 峰值对应全基因组复制事件时间点
实战命令¶
# === 植物基因组注释完整流程 ===
# 1. 转座子注释
EDTA.pl --genome genome.fa --cds cds.fa --sensitive 1 --anno 1 --threads 32
# 2. 软mask基因组
bedtools maskfasta -fi genome.fa -bed EDTA_TE.bed -soft -fo genome_softmasked.fa
# 3. 基因预测
braker.pl --genome=genome_softmasked.fa --bam=rnaseq.bam \
--prot_seq=proteins.fa --softmasking --threads=32 --gff3
# 4. BUSCO评估
busco -i braker/augustus.hints.aa -l embryophyta_odb10 -m protein -c 16
# 5. 功能注释
interproscan.sh -i predicted_proteins.fa -goterms -pa -f tsv
面试常问点¶
Q1:植物基因组注释中为什么要先做TE注释?¶
A: 植物基因组50-85%是转座子(TE)。如果不先mask TE:(1) 基因预测器会将TE开放阅读框误判为基因(假基因);(2) BLAST比对会被TE序列主导;(3) 基因数会虚高(真基因~30000,不mask可能预测出>100000)。正确流程:EDTA注释TE → softmask基因组 → BRAKER预测基因。
Q2:如何处理多倍体基因组的基因注释?¶
A: (1) 先将各亚基因组分离(ALLHiC scaffolding或subgenome assignment);(2) 对每个亚基因组分别进行TE注释和基因预测;(3) 注意同源基因对的分辨——BRAKER可能将高度相似的同源基因合并;(4) BUSCO评估时Duplicated比例高是正常的(六倍体可达>50%);(5) 使用亚基因组特异的RNA-seq证据辅助区分同源基因的表达模式。
Q3:BRAKER3相比BRAKER2有什么改进?¶
A: BRAKER3集成了GeneMark-ETP(Evidence-based Transcript Prediction),主要改进:(1) 同时利用RNA-seq和蛋白质证据进行训练和预测(BRAKER2需要分别运行再合并);(2) 更好地处理长读长RNA-seq(Iso-Seq)数据;(3) 改进的外显子-内含子边界预测;(4) 对植物特有的GT-AG/GC-AG剪接位点支持更好。
Q4:如何通过Ks分析检测全基因组复制(WGD)?¶
A: 对基因组内的旁系同源基因对(paralogs)计算同义替换率Ks。WGD事件使大量基因同时复制,这些基因对在WGD后积累的Ks值相似,在Ks分布图上表现为一个峰。峰的位置对应WGD发生的相对时间(Ks越小越近期)。多个峰=多次WGD。结合分子钟(1 Ks ≈ 某百万年)可估计绝对时间。
Q5:BUSCO评估结果中各数字如何解读?¶
A: 以embryophyta_odb10(1614个基因)为例:C:95%[S:90%,D:5%],F:3%,M:2% 表示——Complete 95%=1614中的95%在基因组中找到完整拷贝;Single 90%=以单拷贝存在(二倍体期望值);Duplicated 5%=以多拷贝存在(可能是WGD残留或assembly错误);Fragmented 3%=只找到部分;Missing 2%=完全未找到。多倍体中D高是正常的。
易错点¶
1. 未mask TE就做基因预测¶
错误: 在重复序列丰富的基因组上直接运行BRAKER。 正确做法: 必须先用EDTA注释TE并softmask基因组。未mask会导致大量假基因预测。
2. 使用错误的BUSCO lineage数据库¶
错误: 用metazoa_odb10评估植物基因组。 正确做法: 植物用embryophyta_odb10或更精确的谱系(如poales_odb10用于禾本科)。
3. 多倍体BUSCO Duplicated高被误判为组装错误¶
错误: 六倍体小麦BUSCO D=60%认为是冗余组装。 正确做法: 多倍体中同源基因确实多拷贝存在。区分方法:检查D的基因是否位于不同亚基因组/染色体。如果是且符合倍性期望则正常。
4. EDTA运行时CDS文件格式错误¶
错误: 提供的CDS文件含基因组序列而非CDS。 正确做法: CDS文件应只含编码序列(外显子拼接后),用于排除EDTA将基因误判为TE。
5. 比较基因组中未考虑基因组大规模重排¶
错误: 直接做全基因组点图(dot plot)不理解断裂模式。 正确做法: 植物基因组经历频繁的染色体重排(易位/倒位)。共线性应在block级别分析(MCScanX)而非期望完整染色体共线性。
补充知识¶
植物基因组注释工具生态¶
| 工具 | 功能 |
|---|---|
| EDTA | TE注释(整合LTR_retriever, RepeatModeler等) |
| BRAKER3 | 基因预测(GeneMark+Augustus) |
| BUSCO | 完整性评估 |
| MAKER | 注释整合流水线 |
| GeMoMa | 同源基因预测 |
| MCScanX | 共线性分析 |
| WGDI | 全基因组复制分析 |
| OrthoFinder | 直系同源基因推断 |
模式植物基因组资源¶
- Phytozome: 植物基因组门户
- Ensembl Plants: 植物基因组注释
- PLAZA: 植物比较基因组平台
- PlantTFDB: 植物转录因子数据库