注释概念入门:什么是功能注释?为什么需要注释?常用注释类型

刚才我们聊完了数据库整合的底层逻辑,现在该碰一个更实际的问题了:你手里拿着一堆VCF文件,里面全是染色体、位置、REF、ALT这种表格数据。嗯,光看这个能知道什么?什么都不知道。这就像你拿到了一个坐标,但没地图,完全不知道这个点在哪儿、是干啥的。

所以我们需要功能注释。说白了,就是把VCF里每个变异位点翻译成生物学意义上的描述。这个过程会告诉你:这个变异落在哪个基因上?它会不会改变蛋白质?有没有可能致病?

什么是功能注释?

先给个定义:功能注释就是给每个变异位点贴上生物信息标签。我习惯把它比作给一个陌生人填简历——姓名(基因名)、职位(转录本ID)、技能(功能影响)、风险等级(致病性预测)。

举个实际例子,一条原始VCF记录可能是这样的:

chr1  123456  .  A  G  .  .  GT  0/1

你看到这个除了知道第1号染色体123456位点有一个A→G的杂合变异,别的信息为零。经过功能注释后,这条记录会变成:

chr1  123456  .  A  G  .  .  GT  0/1  ANN=G|missense_variant|MODERATE|TP53|...|p.Arg273His|...

看到没?一下子就知道是TP53基因的错义突变,导致第273位精氨酸变成组氨酸。这根本不是一个层面的信息。

我在项目中遇到过的情况是:一个初学者拿到注释后的VCF,只看AD/DP这些深度指标,完全忽略ANN字段。结果发现一个已知的致病变异被当成普通变异过滤掉了。你说冤不冤?

为什么需要注释?

说直白点,没有注释的VCF就是一堆数字垃圾。为什么?我给你列三个理由:

  • 基因定位:变异的生物学位置才决定它有没有意义。一个位于基因间区的同义突变和另一个位于外显子剪接位点的非同义突变,危害程度天差地别。你不注释,怎么区分?
  • 临床解读:医生或者遗传咨询师需要知道这个变异会不会致病。没有致病性数据库的注释,你给的报告别人没法用。
  • 优先级排序:全基因组测序一次能出来几百万个变异。你不可能一个一个看。你需要把高风险的(比如无义突变、剪位点变异)排到前面,低风险的(内含子深处、同义突变)沉到底部。注释就是干这个的。
核心原则:注释不是锦上添花,是必不可少。没有注释的VCF,无法进行任何有意义的遗传分析。

常用注释类型

注释的类型其实很多,但万变不离其宗。我个人把这个常见注解分为三大类:基因区域、氨基酸变化、致病性。下面逐个拆。

基因区域注释

这种注释回答一个问题:这个变异落在基因的哪个功能区域?

常见的区域包括:

  • 外显子 — 编码蛋白质的区域,最敏感
  • 内含子 — 非编码区,靠近外显子的内含子也可能影响剪接
  • UTR(5'UTR / 3'UTR) — 调控区域,可能影响mRNA稳定性或翻译效率
  • 启动子 — 基因表达开关
  • 基因间区 — 远离任何基因,通常影响最小
  • 剪接位点 — 外显子-内含子边界,破坏剪接会产生产生异常的转录本

不同工具的注释格式略有区别,但大体一致。比如SnpEff的输出里会有类似这样的标注:

missense_variant   MODERATE   TP53   transcript:ENST00000269305   c.818G>A   p.Arg273His

区域信息(这里只写了missense_variant,其实隐含了外显子)加上转录本和变化描述。

一点经验:我经常看到有人忽略“影响剪接的深度内含子变异”。其实在内含子头2bp或尾2bp内的变异,威力仅次于无义突变。我曾经在项目里排查一个家系数据,外显子区域一个候选都没找到,最后用SpliceAI注释发现了个内含子-3位的变异。这种坑,踩过一次就不会忘了。

氨基酸变化注释

对于外显子区域的变异,我们还需要知道它如何改变蛋白质序列。常见的氨基酸变化类型:

类型 描述 影响程度
同义突变 密码子变了但编码的氨基酸不变 通常无影响
错义突变 一个氨基酸被换成另一个 可能影响功能
无义突变 产生提前终止密码子 严重,通常导致蛋白截短
移码突变 插入/删除非3的倍数,导致阅读框偏移 严重,常使蛋白丧失功能
框内缺失/插入 插入/删除3的倍数,不破坏阅读框 可能保留部分功能

在VCF的ANN字段里,你会看到类似:

missense_variant|MODERATE|TP53|ENST00000269305|c.818G>A|p.Arg273His|...

我这里多说一句:MODERATE 是SnpEff的后果分类等级之一(HIGH/MODERATE/LOW/MODIFIER)。MODERATE代表错义突变,不算毁灭性但也不是无害。遇到这种的时候,一定要结合保守性、蛋白结构域和群体频率综合判断。

致病性注释

这类注释直接告诉你,某个变异在已有数据库里是否被认为是致病的。常用的来源有:

  • ClinVar — 临床级数据库,有证据等级和星标(1-4星)
  • dbSNP — 群体频率和少量功能注释
  • HGMD — 商业数据库,非常全但需要授权
  • LOVD — 开源致病位点数据库

注意:致病性注释并不是绝对的。同一个变异,在不同数据库里可能标注不同的分类。我遇到过:ClinVar标为VUS(意义不明确),而HGMD却标为DM(致病突变)。这时候需要查阅原始文献,手动判定。

工具做的通常是将这些数据库的ID和分类直接追加到VCF的INFO里。比如用VEP或SnpEff配合dbNSFP,你会得到:

CLNSIG=Pathogenic;CLNREVSTAT=reviewed_by_expert_panel;CLNDISDB=MONDO:000...
警告:不要迷信数据库的标注!尤其是ClinVar的1星或无星记录,可能来自单个submitter且没有专家复审。我曾经因为信任未复核的ClinVar记录,把一个良性变异误判为致病,最后在后续的Sanger验证中翻车。记住:数据库注释只是参考,最终判断要结合家系共分离、蛋白功能预测和群体频率。

三种注释类型的关系

如果把变异分析比作破案,三种注释的关系是这样:

  • 基因区域注释帮你锁定“作案地点”
  • 氨基酸变化注释帮你描述“作案手法”
  • 致病性注释告诉你“前科记录”

三者缺一不可。只看区域不看氨基酸变化,你可能错过一个错义突变。只看氨基酸变化不看致病性,你无法判断这个位点是否已被学界定论。而只看致病性不看区域,你可能会把一个位于内含子的假基因注释当成致病位点——这种乌龙我见过好多次。

下面这张图总结了功能注释的完整流程和三种注释类型间的层次关系:

功能注释的层次结构 VCF 原始变异 注释引擎 (SnpEff / VEP / ANNOVAR) 基因区域注释 外显子/内含子/UTR/剪接位点 氨基酸变化注释 同义/错义/无义/移码 致病性注释 ClinVar / dbSNP / HGMD 基因注释数据库 蛋白功能预测工具 人群频率数据库 注释后 VCF (包含ANN等字段) 三种注释类型并联运行,最终汇聚为一条完整的注释记录

这张图把整个注释流程串起来了。你从VCF出发,经过注释引擎,同时获得三个维度的注释信息,每个维度又各自依赖不同的数据库,最后合并回VCF里。说白了,这就是把原始位点变成“有故事的变异”的过程。