1、基因组注释概述:从原始序列到功能蓝图
大家好,我是老陈。做了十几年基因组注释,今天咱们聊聊最基础也最关键的问题——到底什么是基因组注释。
说白了,基因组注释就是把一段段ATCG的序列,翻译成我们能理解的生物学语言。你拿到一个物种的基因组草图,不能只盯着碱基看吧?我们要知道哪个位置是基因,哪个区域是非编码RNA,哪个片段是重复序列。这些信息,就是注释要干的事。
1.1 什么是基因组注释?
基因组注释,我的理解是:给DNA序列赋予生物学意义。就像拿到一本外文书,你需要标注词汇、语法、篇章结构,才能弄懂它讲什么。基因组注释也是类似的道理。
我在刚入行那会儿,给一个细菌基因组做注释。当时不懂,跑完流程就算了。结果同行一看,说你这某个区域明明是假基因,怎么标成蛋白编码了?从那以后我明白了,注释不只是跑软件,需要理解背后的生物学逻辑。
注释的输入是组装好的基因组序列(FASTA格式),输出是各种特征的坐标、类型、功能描述。常见的输出格式包括GFF3、GTF、BED等。举个例子:
##gff-version 3
chr1 . gene 1001 5000 . + . ID=gene1;Name=BRCA1
chr1 . mRNA 1001 5000 . + . ID=mRNA1;Parent=gene1
chr1 . exon 1001 1500 . + . ID=exon1;Parent=mRNA1
chr1 . CDS 1101 1500 . + 0 ID=cds1;Parent=mRNA1
这个GFF3文件记录了基因、转录本、外显子、CDS的位置信息。每一行代表一个特征,9列信息清清楚楚。
1.2 核心任务:三大块
基因组注释的核心任务,我个人分成三大块。你在任何一个项目中,都绕不开它们。
1. 基因预测 —— 找基因的位置和结构
2. 功能注释 —— 给基因贴功能标签
3. 非编码元件注释 —— 找那些不编码蛋白但很关键的元件
1.2.1 基因预测
基因预测是注释的第一步,也是我最看重的环节。它的目标是找到基因组中所有蛋白编码基因的准确边界和结构。
常用的方法有三类:
- 从头预测(ab initio):基于训练好的模型,根据序列特征直接预测。代表软件有Augustus、GlimmerHMM、SNAP。
- 同源预测(homology-based):拿已知的蛋白或EST序列做比对,推断基因结构。常用Exonerate、Genewise、BLAST。
- 转录组辅助预测:用RNA-seq数据指导基因模型构建。StringTie、BRAKER都是这类工具。
你想想看,这三种方法各有长短。从头预测速度快,但容易漏掉特殊基因;同源预测准确度高,但依赖参考数据库;转录组方法能反映实际表达,但需要高质量测序数据。
我记得之前做过一个植物基因组的项目。Augustus跑出来的模型,跟RNA-seq数据对不上。后来发现问题出在训练集上——Augustus的物种参数没调整好,导致很多真实的剪接位点被忽略了。所以说,参数调优这件事,真的不能偷懒。
典型的基因预测流程,我习惯用一个简单的命令组合:
# 从头预测
augustus --species=arabidopsis scaffold.fa --predictionStart=AUGUSTUS_OUT.gff
# 同源比对
exonerate --model protein2genome query_protein.fa target_genome.fa > homology.gff3
# 最后用EVM或Mikado合并结果
evidencemodeler --gene_predictions augustus.gff \
--protein_alignments exonerate.gff \
--transcript_alignments stringtie.gtf \
--output final_genes.gff3
1.2.2 功能注释
基因预测完了,我们拿到一大堆"未知功能"的基因模型。功能注释就是给这些基因贴标签——这个基因编码什么蛋白?参与什么通路?有什么结构域?
做法说起来不复杂:把预测的蛋白序列去跟各种数据库比对:
| 数据库 | 用途 | 常用工具 |
|---|---|---|
| UniProt/Swiss-Prot | 高质量人工注释蛋白 | BLASTP / DIAMOND |
| Pfam | 蛋白结构域 | HMMER / pfam_scan |
| GO | 基因功能分类 | InterProScan |
| KEGG | 代谢通路 | KAAS / GhostKOALA |
| EggNOG | 直系同源集群 | eggNOG-mapper |
嗯,这里要注意。功能注释的靠谱程度取决于数据库的质量和覆盖度。我之前遇到过一个极端情况——某个新分离的海洋微生物基因组,90%的基因在Swiss-Prot里找不到同源序列。这种情况下,只能依靠Pfam结构域和跨物种的EggNOG注释来给出一些模糊的功能推断。
一个典型的功能注释命令:
# 使用DIAMOND进行快速蛋白比对
diamond blastp -d /db/uniprot_ref.dmnd \
-q predicted_proteins.faa \
-o blast_results.tsv \
-e 1e-5 --outfmt 6
# 使用InterProScan做结构域预测
interproscan.sh -i predicted_proteins.faa \
-f GFF3 \
-dp \
-o interproscan_results.gff3
1.2.3 非编码元件注释
这部分经常被忽视,但我个人觉得它越来越重要。非编码元件包括:
- rRNA、tRNA、snRNA、snoRNA:经典的管家非编码RNA
- miRNA、lncRNA:调控性非编码RNA
- 重复序列:转座元件、卫星DNA
- 调控区域:启动子、增强子、CpG岛
我曾经参加一个比较基因组学项目,团队花了大半年做蛋白编码基因注释,结果写文章时才发现,那个物种的基因组里有高达70%的重复序列,大量转座元件插入到基因附近,影响了基因结构和表达。当时只能连夜补做RepeatMasker,重新修正基因模型。唉,这个坑踩得挺深的。
常用的非编码元件注释工具:
# 鉴定tRNA
tRNAscan-SE -G -o tRNA.out -f tRNA.ss genome.fa
# 鉴定rRNA
barrnap genome.fa > rRNA.gff3
# 预测重复序列
RepeatMasker -species arabidopsis -pa 8 -gff genome.fa
# 预测调控区域(以转录起始位点预测为例)
promoterP -seq genome.fa -formats GFF -out promoter.gff3
1.3 注释流程:一个完整的管线
注释流程不是一锤子买卖。我习惯把它分成几个阶段:
一个比较成熟的基因组注释流程,大致长这样:
- 输入准备:组装好的基因组FASTA,质量评估
- 重复序列注释:先用RepeatMasker注释已知重复,再用RepeatModeler从头识别新重复
- RNA-seq处理:比对到基因组,组装转录本
- 从头基因预测:训练模型,预测基因
- 同源证据收集:比对已知蛋白、EST
- 证据整合:用EVM或Mikado合并所有证据,生成一致性基因模型
- 功能注释:比对数据库,分配功能
- 质量评估:统计基因数量、BUSCO完整性评估
- 输出:GFF3、FASTA蛋白序列、功能注释表
你可能会问,这么多步骤,有没有一键搞定的工具?有的。比如BRAKER2、Funannotate这些管线,能自动化大部分流程。但我建议你,刚开始还是手动走一遍每个环节,理解每一步在做什么。
这是整个流程的可视化结构:
注释流程跑完后,我们会得到一系列文件:基因模型GFF3、蛋白序列FASTA、CDS序列FASTA、功能注释表格、非编码元件注释文件等。这些就是后续所有分析的起点。
说到评估指标,很多人以为注释跑完就结束了。实际上,评估才是注释质量的关键。怎么判断你注释得好不好?用BUSCO看基因完整性,用转录组数据检验剪接位点准确性,用已知的参考基因集算敏感性和特异性——这些指标,才是我们说"注释做得好"的依据。