基因组注释流程(Prokka / BRAKER / MAKER)¶
一句话概述¶
基因组注释是将组装好的基因组序列"翻译"为生物学信息(基因位置、功能、调控元件等)的过程,本教程覆盖原核基因组(Prokka)和真核基因组(BRAKER/MAKER)的完整注释流程。
目录¶
1. 核心知识点¶
| 序号 | 步骤 | 工具 | 目的 | 输入 | 输出 | 关键参数 |
|---|---|---|---|---|---|---|
| 1 | 重复序列屏蔽 | RepeatMasker | 屏蔽重复序列避免干扰基因预测 | 基因组FASTA | 屏蔽后FASTA | -species, -pa |
| 2 | 原核基因预测 | Prodigal | 预测原核生物基因 | 基因组FASTA | GFF + 蛋白序列 | -p meta(宏基因组) |
| 3 | 原核全面注释 | Prokka | 一站式原核注释 | 基因组FASTA | GFF/GBK/FAA/FFN | --kingdom, --genus |
| 4 | RNA-seq证据生成 | HISAT2+StringTie | 生成转录组证据 | RNA-seq reads | BAM + GTF | 链特异性设置 |
| 5 | 蛋白证据比对 | GeneMarkS-T/miniprot | 蛋白同源证据 | 蛋白数据库 | GFF hints | --softmasking |
| 6 | 从头基因预测 | Augustus/GeneMark-ES | ab initio基因预测 | 屏蔽后基因组 | GFF预测 | 训练物种模型 |
| 7 | BRAKER注释 | BRAKER2/3 | 整合证据的真核注释 | 基因组+RNA/蛋白证据 | GFF + 蛋白序列 | --etpmode, --softmasking |
| 8 | MAKER注释 | MAKER | 循环迭代式真核注释 | 基因组+多源证据 | GFF + 蛋白序列 | 多轮训练 |
| 9 | 功能注释 | InterProScan/eggNOG | 预测蛋白功能和结构域 | 蛋白序列 | 功能注释表 | 数据库选择 |
| 10 | 注释质量评估 | BUSCO/AED | 评估注释完整性 | 注释GFF + 蛋白 | 完整性报告 | lineage数据集 |
2. 各步骤详解¶
步骤1:重复序列屏蔽¶
白话解释:基因组中有大量重复序列(转座子、卫星DNA等),如果不先标记出来,基因预测软件可能会把它们误认为基因。"屏蔽"就是用小写字母(soft masking)或N字符(hard masking)标记这些区域。
技术细节:
重复序列屏蔽对真核基因组注释至关重要(原核基因组重复较少,Prokka内部处理)。对于真核基因组,重复序列通常占30-80%。
两种屏蔽方式: - Soft masking:将重复区域改为小写字母(推荐,因为BRAKER/MAKER需要这些区域的序列信息) - Hard masking:将重复区域替换为N(某些工具需要)
建议先用RepeatModeler构建物种特异的重复序列库,再用RepeatMasker进行屏蔽。对于非模式生物,这一步尤为重要。
# RepeatModeler构建物种特异重复库
BuildDatabase -name genome_db genome.fa
RepeatModeler -database genome_db -pa 16 -LTRStruct
# RepeatMasker屏蔽(soft masking)
RepeatMasker -pa 16 \
-lib genome_db-families.fa \
-xsmall \
-gff \
genome.fa
# 如果是模式生物,可直接使用内置库
RepeatMasker -pa 16 \
-species "arabidopsis" \
-xsmall \
-gff \
genome.fa
步骤2:原核基因预测(Prodigal)¶
白话解释:原核生物的基因结构简单(没有内含子),Prodigal是一个快速准确的原核基因预测工具,它通过识别开放阅读框(ORF)和训练物种特异的参数来预测基因。
技术细节:
Prodigal的工作原理: 1. 从输入序列中学习GC含量、密码子使用偏好、RBS(核糖体结合位点)模式等参数 2. 使用动态规划算法在所有可能的ORF中找到最优基因集合 3. 考虑重叠基因、非标准起始密码子等原核特征
运行模式: - Normal模式(默认):适合单个基因组,会从数据中训练参数 - Meta模式(-p meta):适合宏基因组,使用预训练参数(因为宏基因组中每个物种的序列可能太少无法单独训练)
Prodigal是Prokka内部调用的核心基因预测引擎,通常不需要单独运行,除非只需要基因坐标而不需要完整注释。
# 标准模式(单个基因组)
prodigal -i genome.fa \
-o genes.gff \
-a proteins.faa \
-d nucleotides.fna \
-f gff \
-p single
# 宏基因组模式
prodigal -i metagenome_contigs.fa \
-o meta_genes.gff \
-a meta_proteins.faa \
-f gff \
-p meta
步骤3:原核全面注释(Prokka)¶
白话解释:Prokka是原核基因组注释的"全家桶"工具,一个命令就能完成基因预测、功能注释、rRNA/tRNA预测、信号肽预测等所有工作,输出标准的GenBank和GFF格式文件。
技术细节:
Prokka的内部流程: 1. 预测编码基因(Prodigal) 2. 预测rRNA(Barrnap) 3. 预测tRNA(Aragorn) 4. 预测非编码RNA(Infernal + Rfam) 5. 预测信号肽(SignalP,如可用) 6. 功能注释:逐层搜索数据库 - 小型可信数据库(ISfinder、HAMAP等)→ 高置信注释 - UniProt(带实验证据的条目)→ 中置信 - Pfam域→ 补充域注释 - 如无匹配 → "hypothetical protein"
关键参数: - --kingdom:Bacteria/Archaea/Viruses - --genus/--species:指定物种,用于选择注释数据库 - --proteins:额外的可信蛋白数据库(如近缘物种的注释蛋白) - --rfam:启用Rfam搜索(较慢但更完整)
# 基本运行
prokka genome.fa \
--outdir prokka_output \
--prefix my_genome \
--kingdom Bacteria \
--genus Escherichia \
--species coli \
--strain K12 \
--cpus 16 \
--rfam \
--addgenes
# 使用自定义蛋白数据库
prokka genome.fa \
--outdir prokka_output \
--prefix my_genome \
--kingdom Bacteria \
--proteins trusted_proteins.faa \
--cpus 16
# 输出文件说明:
# .gff - GFF3格式注释
# .gbk - GenBank格式(可用Artemis查看)
# .faa - 蛋白序列
# .ffn - 基因核酸序列
# .fna - 基因组序列(包含注释)
# .tbl - 特征表(GenBank提交格式)
# .tsv - 基因功能汇总表
# .txt - 统计摘要
步骤4:RNA-seq证据生成¶
白话解释:对于真核基因组注释,RNA-seq数据是最有力的证据之一——它直接告诉我们基因组的哪些区域被转录了、内含子在哪里(通过剪接junction reads)。将RNA-seq比对到基因组后,可以用StringTie组装转录本。
技术细节:
RNA-seq证据用于BRAKER/MAKER的方式: - Intron hints:剪接junction reads直接提供内含子边界信息(最有价值) - Exon hints:覆盖的区域提示外显子位置 - 组装的转录本:StringTie或Trinity组装的转录本提供完整基因模型参考
BRAKER可以直接接收BAM文件,内部会提取hints。MAKER需要额外提供组装好的转录本序列(如Trinity的EST evidence)。
链特异性建库的RNA-seq数据对注释特别有帮助,因为它能区分正负链上重叠的基因。
# 1. RNA-seq比对
hisat2-build genome_masked.fa genome_index
hisat2 -x genome_index \
-1 rnaseq_R1.fastq.gz \
-2 rnaseq_R2.fastq.gz \
--dta \
--rna-strandness RF \
-p 16 \
| samtools sort -@ 8 -o rnaseq_sorted.bam
samtools index rnaseq_sorted.bam
# 2. StringTie组装转录本
stringtie rnaseq_sorted.bam \
-o stringtie.gtf \
-p 16 \
--rf
# 3. 提取转录本序列(用于MAKER)
gffread stringtie.gtf -g genome.fa -w transcripts.fa
步骤5:蛋白证据比对¶
白话解释:除了RNA-seq,近缘物种的已知蛋白序列也是重要的注释证据。如果一段基因组序列能很好地比对到一个已知蛋白,那这段区域很可能包含一个同源基因。
技术细节:
蛋白证据可用于: - 验证从头预测的基因是否正确 - 发现从头预测遗漏的基因 - 辅助确定正确的外显子-内含子边界
推荐的蛋白数据库来源: - OrthoDB:正交同源蛋白数据库(BRAKER推荐使用) - 近缘物种的已注释蛋白集合 - SwissProt/UniProt经实验验证的蛋白
比对工具选择: - miniprot:速度快,适合大规模蛋白-基因组比对(BRAKER3推荐) - GenomeThreader:经典的蛋白-基因组拼接比对 - DIAMOND+Exonerate:先快速筛选再精确比对(MAKER使用)
# miniprot蛋白比对(BRAKER3使用)
miniprot -t 16 --gff genome_masked.fa proteins_db.fa > protein_hints.gff
# GenomeThreader蛋白比对
genomethreader -genomic genome_masked.fa \
-protein proteins_db.fa \
-gff3out \
-o protein_alignments.gff3
# DIAMOND预筛选 + Exonerate精确比对(MAKER方式)
diamond makedb --in proteins_db.fa -d proteins_db
diamond blastx -d proteins_db -q genome.fa -o diamond_hits.tab -f 6 -e 1e-5
步骤6:从头基因预测(Ab initio)¶
白话解释:从头预测(ab initio prediction)不依赖外部证据,而是根据DNA序列本身的统计特征(如密码子频率、剪接位点信号、基因长度分布等)来预测基因。它需要先"训练"一个物种特异的模型。
技术细节:
主要的从头预测工具: - Augustus:目前最准确的从头预测工具之一,支持多种证据整合 - GeneMark-ES/ET:自训练(self-training)工具,不需要预先的训练集 - SNAP:较老但简单快速,常用于MAKER的迭代训练
训练策略: - GeneMark-ES:完全无监督,从基因组序列中自动学习参数(蛋白编码序列 vs 非编码序列的特征差异) - Augustus训练:需要高质量的基因模型作为训练集(可来自RNA-seq支持的基因或OrthoDB同源蛋白) - BRAKER的自动训练:结合GeneMark和Augustus,自动迭代优化模型
对于非模式生物,从头预测的质量很大程度上取决于训练数据的质量。这就是为什么BRAKER/MAKER采用迭代策略——用第一轮的结果训练模型,再用新模型重新预测。
# GeneMark-ES自训练
gmes_petap.pl --ES \
--sequence genome_masked.fa \
--soft_mask auto \
--cores 16
# Augustus预测(使用已训练模型)
augustus --species=arabidopsis \
--softmasking=1 \
--gff3=on \
genome_masked.fa > augustus_predictions.gff3
# SNAP训练和预测
# 从已知基因模型训练SNAP
maker2zff -d maker_output.maker.output/maker_output_datastore_index.log
fathom genome.ann genome.dna -gene-stats > gene_stats.txt
fathom genome.ann genome.dna -validate > validate.txt
fathom genome.ann genome.dna -categorize 1000
fathom uni.ann uni.dna -export 1000 -plus
forge export.ann export.dna
hmm-assembler.pl my_species . > my_species.hmm
步骤7:BRAKER注释¶
白话解释:BRAKER是一个自动化的真核基因组注释管线,它整合了GeneMark和Augustus的从头预测能力与RNA-seq/蛋白证据,自动训练模型并产生最终注释。BRAKER3是最新版本,支持同时使用RNA-seq和蛋白证据。
技术细节:
BRAKER的版本和模式: - BRAKER1:仅使用RNA-seq证据 - BRAKER2:仅使用蛋白证据(通过ProtHint) - BRAKER3:同时使用RNA-seq和蛋白证据(推荐) - ETPmode(--etpmode):整合RNA-seq + 蛋白 + 从头预测(BRAKER3默认模式)
BRAKER的内部流程: 1. 从RNA-seq BAM提取intron hints 2. 用ProtHint/miniprot生成蛋白hints 3. 运行GeneMark-ET/EP训练基因模型 4. 将GeneMark预测的高质量基因作为Augustus训练集 5. 训练Augustus参数 6. 运行Augustus整合所有hints产生最终预测 7. 用TSEBRA选择最佳基因模型
# BRAKER3(同时使用RNA-seq和蛋白证据)
braker.pl \
--genome=genome_masked.fa \
--bam=rnaseq_sorted.bam \
--prot_seq=orthodb_proteins.fa \
--softmasking \
--etpmode \
--threads 16 \
--species=my_species \
--workingdir=braker_output
# BRAKER1模式(仅RNA-seq)
braker.pl \
--genome=genome_masked.fa \
--bam=rnaseq_sorted.bam \
--softmasking \
--threads 16 \
--species=my_species
# BRAKER2模式(仅蛋白证据,适合无RNA-seq的情况)
braker.pl \
--genome=genome_masked.fa \
--prot_seq=orthodb_proteins.fa \
--softmasking \
--epmode \
--threads 16 \
--species=my_species
步骤8:MAKER注释¶
白话解释:MAKER是另一个主流的真核基因组注释管线,特色是"迭代式"——第一轮用所有证据做初步注释,然后用这些结果训练预测模型,再用新模型做第二轮、第三轮注释,每轮质量递增。
技术细节:
MAKER与BRAKER的区别: - MAKER更灵活,支持更多类型的证据和预测工具 - MAKER需要更多手动配置(三个控制文件) - MAKER使用AED(Annotation Edit Distance)评估注释质量 - MAKER适合需要精细控制的复杂注释项目
MAKER的三个配置文件: - maker_opts.ctl:主要选项(输入文件路径、参数设置) - maker_bopts.ctl:BLAST相关参数 - maker_exe.ctl:外部程序路径
推荐的MAKER迭代策略(3轮): 1. 第1轮:仅使用EST/蛋白证据(不做ab initio),生成证据支持的基因模型 2. 用第1轮结果训练SNAP和Augustus 3. 第2轮:加入训练好的SNAP和Augustus 4. 用第2轮结果重新训练 5. 第3轮:最终注释
# 生成配置文件模板
maker -CTL
# 编辑maker_opts.ctl(关键参数)
# genome=genome_masked.fa
# est=transcripts.fa
# protein=proteins.fa
# rmlib=repeat_library.fa
# augustus_species=my_species
# snaphmm=my_species.hmm
# 第1轮运行(仅证据)
maker -cpus 16 maker_opts.ctl maker_bopts.ctl maker_exe.ctl
# 提取第1轮结果
gff3_merge -d my_genome.maker.output/my_genome_master_datastore_index.log
fasta_merge -d my_genome.maker.output/my_genome_master_datastore_index.log
# 训练SNAP
maker2zff -d my_genome.maker.output/my_genome_master_datastore_index.log
fathom genome.ann genome.dna -categorize 1000
fathom uni.ann uni.dna -export 1000 -plus
forge export.ann export.dna
hmm-assembler.pl my_species . > my_species_round1.hmm
# 修改maker_opts.ctl加入训练后模型,运行第2轮...
步骤9:功能注释¶
白话解释:结构注释(基因预测)告诉我们基因在哪里,功能注释则告诉我们这些基因做什么——是酶?是转录因子?属于什么代谢通路?有什么结构域?
技术细节:
功能注释的主要方法: 1. 序列相似性搜索:BLAST/DIAMOND比对SwissProt/NR数据库 2. 结构域/家族注释:InterProScan整合多个数据库(Pfam、TIGRFAM、CDD等) 3. 直系同源分组:eggNOG-mapper基于进化关系推断功能 4. GO/KEGG注释:通过上述工具获得Gene Ontology和KEGG通路注释 5. 特殊注释:信号肽(SignalP)、跨膜域(TMHMM)、亚细胞定位(DeepLoc)
推荐流程:InterProScan(最全面) + eggNOG-mapper(通路注释) + DIAMOND/BLAST(补充)
# InterProScan功能注释
interproscan.sh \
-i predicted_proteins.faa \
-o interproscan_results.tsv \
-f tsv,gff3 \
-goterms \
-iprlookup \
-pa \
-cpu 16
# eggNOG-mapper注释
emapper.py \
-i predicted_proteins.faa \
-o eggnog_results \
--cpu 16 \
-m diamond \
--tax_scope Bacteria \
--go_evidence non-electronic \
--pfam_realign denovo
# DIAMOND比对SwissProt
diamond blastp \
-d swissprot \
-q predicted_proteins.faa \
-o diamond_swissprot.tab \
-f 6 qseqid sseqid pident length evalue bitscore stitle \
-e 1e-5 \
--threads 16 \
--sensitive
步骤10:注释质量评估¶
白话解释:注释做完后需要评估质量:预测的基因数量合理吗?该有的保守基因都找到了吗?基因结构(外显子/内含子)看起来合理吗?BUSCO是评估基因组和注释完整性的金标准工具。
技术细节:
BUSCO(Benchmarking Universal Single-Copy Orthologs)原理: - 每个进化谱系都有一组"应该存在的"单拷贝保守基因 - 如果注释中能找到这些基因的大部分,说明注释质量好 - 结果分为:Complete (C)、Duplicated (D)、Fragmented (F)、Missing (M)
评判标准: - Complete > 90%:高质量注释 - Complete 70-90%:可接受 - Complete < 70%:可能存在问题
其他评估指标: - AED分布(MAKER):AED=0最完美(注释与证据完全一致),AED>0.5的基因可能有问题 - 基因数量:与近缘物种比较是否合理 - 基因结构统计:平均外显子数、平均基因长度、内含子长度分布 - 转录组支持率:多少预测基因有RNA-seq支持
# BUSCO评估注释的蛋白集
busco -i predicted_proteins.faa \
-o busco_proteins \
-m proteins \
-l bacteria_odb10 \
-c 16
# 对于真核生物
busco -i predicted_proteins.faa \
-o busco_proteins \
-m proteins \
-l embryophyta_odb10 \
-c 16
# 基因组水平BUSCO(评估组装+注释)
busco -i genome.fa \
-o busco_genome \
-m genome \
-l embryophyta_odb10 \
-c 16
# 注释统计
# 基因数、平均长度、外显子数等
awk '$3=="gene"' annotation.gff3 | wc -l
awk '$3=="exon"' annotation.gff3 | wc -l
3. 实战命令/代码(完整流程)¶
#!/bin/bash
# =====================================================
# 基因组注释完整流程
# Part A: 原核基因组注释(Prokka)
# Part B: 真核基因组注释(BRAKER3)
# =====================================================
set -euo pipefail
# ==========================
# Part A: 原核基因组注释
# ==========================
echo "=========================================="
echo " Part A: 原核基因组注释 (Prokka)"
echo "=========================================="
PROK_GENOME="bacterial_genome.fa"
PROK_OUT="annotation_prokaryote"
mkdir -p ${PROK_OUT}
# 运行Prokka
prokka ${PROK_GENOME} \
--outdir ${PROK_OUT}/prokka \
--prefix bacterium \
--kingdom Bacteria \
--genus Escherichia \
--species coli \
--cpus 16 \
--rfam \
--addgenes \
--compliant \
--force
# 查看注释统计
echo "--- Prokka注释统计 ---"
cat ${PROK_OUT}/prokka/bacterium.txt
# BUSCO评估
busco -i ${PROK_OUT}/prokka/bacterium.faa \
-o ${PROK_OUT}/busco_prokka \
-m proteins \
-l bacteria_odb10 \
-c 16
echo ""
echo "=========================================="
echo " Part B: 真核基因组注释 (BRAKER3)"
echo "=========================================="
# ==========================
# Part B: 真核基因组注释
# ==========================
EUK_GENOME="eukaryote_genome.fa"
RNASEQ_R1="rnaseq_R1.fastq.gz"
RNASEQ_R2="rnaseq_R2.fastq.gz"
PROTEIN_DB="orthodb_v11_plants.fa"
EUK_OUT="annotation_eukaryote"
THREADS=16
mkdir -p ${EUK_OUT}/{repeat_mask,rnaseq,braker,functional,evaluation}
# ---- Step 1: 重复序列屏蔽 ----
echo "[Step 1] 重复序列屏蔽..."
BuildDatabase -name ${EUK_OUT}/repeat_mask/genome_db ${EUK_GENOME}
RepeatModeler -database ${EUK_OUT}/repeat_mask/genome_db \
-pa ${THREADS} -LTRStruct
RepeatMasker -pa ${THREADS} \
-lib ${EUK_OUT}/repeat_mask/genome_db-families.fa \
-xsmall -gff \
-dir ${EUK_OUT}/repeat_mask \
${EUK_GENOME}
MASKED_GENOME="${EUK_OUT}/repeat_mask/$(basename ${EUK_GENOME}).masked"
echo "重复序列比例:"
grep -c "^>" ${EUK_OUT}/repeat_mask/*.tbl || true
# ---- Step 2: RNA-seq比对 ----
echo "[Step 2] RNA-seq比对..."
hisat2-build ${MASKED_GENOME} ${EUK_OUT}/rnaseq/genome_index
hisat2 -x ${EUK_OUT}/rnaseq/genome_index \
-1 ${RNASEQ_R1} -2 ${RNASEQ_R2} \
--dta --rna-strandness RF \
-p ${THREADS} \
| samtools sort -@ 8 -o ${EUK_OUT}/rnaseq/rnaseq.bam
samtools index ${EUK_OUT}/rnaseq/rnaseq.bam
# ---- Step 3: BRAKER3注释 ----
echo "[Step 3] BRAKER3注释..."
braker.pl \
--genome=${MASKED_GENOME} \
--bam=${EUK_OUT}/rnaseq/rnaseq.bam \
--prot_seq=${PROTEIN_DB} \
--softmasking \
--etpmode \
--threads ${THREADS} \
--species=my_eukaryote \
--workingdir=${EUK_OUT}/braker \
--gff3
# 提取蛋白序列
BRAKER_GFF="${EUK_OUT}/braker/braker.gtf"
gffread ${BRAKER_GFF} -g ${MASKED_GENOME} -y ${EUK_OUT}/braker/proteins.faa
echo "预测基因数: $(grep -c 'gene' ${BRAKER_GFF} | head -1)"
# ---- Step 4: 功能注释 ----
echo "[Step 4] 功能注释..."
# InterProScan
interproscan.sh \
-i ${EUK_OUT}/braker/proteins.faa \
-o ${EUK_OUT}/functional/interproscan.tsv \
-f tsv,gff3 \
-goterms -iprlookup -pa \
-cpu ${THREADS}
# eggNOG-mapper
emapper.py \
-i ${EUK_OUT}/braker/proteins.faa \
-o ${EUK_OUT}/functional/eggnog \
--cpu ${THREADS} \
-m diamond
# ---- Step 5: 质量评估 ----
echo "[Step 5] 质量评估..."
busco -i ${EUK_OUT}/braker/proteins.faa \
-o ${EUK_OUT}/evaluation/busco \
-m proteins \
-l embryophyta_odb10 \
-c ${THREADS}
echo ""
echo "=== 注释完成 ==="
echo "原核注释: ${PROK_OUT}/prokka/"
echo "真核注释: ${EUK_OUT}/braker/"
echo "功能注释: ${EUK_OUT}/functional/"
echo "质量评估: ${EUK_OUT}/evaluation/"
4. 面试常问点¶
Q1:原核和真核基因组注释的主要区别是什么?
原核基因结构简单(无内含子、操纵子组织),基因密度高(~85%编码),Prokka可在分钟内完成注释。真核基因结构复杂(多外显子、大量内含子),基因密度低(仅~2%编码),需要多源证据整合和迭代训练,注释耗时长(小时到天)。真核注释必须先屏蔽重复序列(可占50%+),原核则不太需要。
Q2:BRAKER和MAKER各自的优缺点是什么?什么情况下选择哪个?
BRAKER优点:自动化程度高、配置简单、对RNA-seq/蛋白证据利用充分。缺点:灵活性较低、不支持所有类型的证据。MAKER优点:高度可定制、支持多种预测工具和证据类型、迭代训练策略。缺点:配置复杂、运行时间长。选择建议:有RNA-seq和/或蛋白证据时首选BRAKER3;需要精细控制或特殊注释需求时用MAKER。
Q3:为什么从头基因预测需要物种特异的训练?
不同物种的基因组特征差异很大:GC含量、密码子偏好、内含子长度分布、剪接位点信号强度等都不同。用人的参数去预测植物基因会产生大量错误。训练让预测模型学习目标物种特有的统计特征。对于非模式生物,GeneMark-ES的自训练策略或BRAKER的自动训练流程解决了这个"先有鸡还是先有蛋"的问题。
Q4:Soft masking和Hard masking有什么区别?为什么推荐soft masking?
Soft masking将重复区域的碱基改为小写(atcg),Hard masking替换为N。推荐soft masking因为:(1)保留了序列信息,某些基因可能位于重复元素附近或部分重叠;(2)基因预测工具可以选择性忽略soft-masked区域(不在其中起始搜索),但允许基因模型延伸进入这些区域;(3)Hard masking会永久丢失信息,可能导致某些真实基因被截断。
Q5:BUSCO如何评估注释质量?Complete/Fragmented/Missing各代表什么?
BUSCO搜索预期在目标分类群中普遍存在的单拷贝直系同源基因。Complete:在注释中找到了完整的基因(全长匹配)。Fragmented:找到了部分匹配但不完整(可能基因模型有错误或基因组组装不完整)。Missing:完全找不到(可能注释遗漏或基因组缺失)。Duplicated:找到了多个拷贝(可能是组装冗余或真实的近期基因复制)。Complete>95%是高质量基因组注释的标志。
Q6:RNA-seq数据在基因组注释中有什么作用?
RNA-seq提供了直接的转录证据:(1)剪接junction reads精确定位内含子边界(最有价值);(2)覆盖模式指示外显子区域;(3)组装的转录本提供完整基因模型参考;(4)链特异性信息帮助区分重叠基因的方向。在没有RNA-seq时,真核基因组注释的准确率显著下降,特别是对于小外显子和非典型剪接位点。
Q7:InterProScan和eggNOG-mapper在功能注释中各自的优势是什么?
InterProScan整合了13+个数据库(Pfam、TIGRFAM、SUPERFAMILY、Gene3D等),对蛋白质结构域和家族的注释最全面,是域水平功能注释的首选。eggNOG-mapper基于正交同源组(Orthologous Groups)进行注释,特别擅长提供GO、KEGG、COG分类等通路级别的注释,且速度比InterProScan快。两者互补,建议同时使用。
5. 易错/易混淆点¶
忘记屏蔽重复序列就做真核注释:不屏蔽重复会导致大量虚假基因预测(转座子被预测为基因),且从头预测的模型训练会被重复序列污染。必须先做重复屏蔽。
基因组版本与RNA-seq比对不一致:如果基因组在比对后被修改(如scaffold命名变化),BAM文件中的坐标会与当前基因组不匹配。确保所有步骤使用同一版本的基因组。
BRAKER的物种名重复使用:如果之前用相同的
--species名运行过BRAKER/Augustus,新运行会失败或使用旧的训练参数。使用--species=new_unique_name或删除旧的Augustus config目录。Prokka对真核生物使用不当:Prokka是原核生物注释工具,不能预测内含子。对真核生物使用Prokka会产生完全错误的基因模型。反之,BRAKER对原核生物也不适用。
蛋白证据数据库选择不当:使用过于远缘物种的蛋白集会导致比对质量差,误导基因预测。使用OrthoDB同一分类群的蛋白子集(如植物用Viridiplantae,昆虫用Insecta)效果最好。
GFF格式混淆:GFF2、GFF3和GTF格式有微妙差异。不同工具可能输出不同格式,直接将一种格式传给期望另一种格式的工具会出错。使用gffread或AGAT进行格式转换。
忽略基因组组装质量对注释的影响:如果基因组组装高度碎片化(大量短contigs),基因可能被打断在多个contigs上,导致注释产生大量片段化基因。应在注释前评估组装连续性(N50、BUSCO)。
6. 补充知识¶
注释格式详解¶
- GFF3:通用基因特征格式,9列制表符分隔,支持层次关系(gene→mRNA→exon/CDS)
- GTF/GFF2:类似GFF3但属性格式不同,Ensembl常用
- GenBank:NCBI提交格式,包含序列+注释
- EMBL:EBI格式,类似GenBank
非编码RNA注释¶
除蛋白编码基因外,非编码RNA也是重要的注释目标: - rRNA:Barrnap(原核/真核)或RNAmmer - tRNA:tRNAscan-SE - miRNA:miRDeep2(需小RNA测序数据) - lncRNA:CPC2/CNCI区分编码与非编码 - 其他ncRNA:Infernal + Rfam数据库
推荐资源¶
- Prokka: https://github.com/tseemann/prokka
- BRAKER: https://github.com/Gaius-Augustus/BRAKER
- MAKER: https://www.yandell-lab.org/software/maker.html
- Augustus: https://github.com/Gaius-Augustus/Augustus
- BUSCO: https://busco.ezlab.org/
- InterProScan: https://www.ebi.ac.uk/interpro/
- 综述: Yandell & Ence (2012) "A beginner's guide to eukaryotic genome annotation" Nature Reviews Genetics