基因功能注释基础:GO(Gene Ontology)简介
做差异基因分析,说到底就是在海量基因里找那些表达量显著变化的家伙。但找到之后呢?你得知道这些基因到底在细胞里干了什么活。这就是基因功能注释要做的事。
我刚开始接触这行的时候,就吃过一个亏。拿到一堆差异基因,兴奋地跑去查每个基因的功能,一个一个查,折腾了三天。结果发现这些基因的功能描述来自不同的数据库,说法不统一,根本没法横向比较。嗯,那时候我就意识到,如果没有一套标准化的功能描述体系,差异基因的分析就是个灾难。
这套标准化的体系,就是GO(Gene Ontology)。
什么是GO?一句话说清楚
GO是一套全球通用的、标准化的基因功能分类系统。我经常跟团队新人说:你把GO理解为基因界的"国际标准职业分类"就行。瑞士军刀、螺丝刀、扳手各有各的功能,但如果你说"这是一把拧螺丝的工具",大家都懂。
GO就是这个作用。它用一套统一的术语来描述基因和蛋白质的功能,不管你是研究人类、小鼠还是拟南芥,大家说的是同一种语言。
核心要点:GO不是数据库,而是一套受控词汇表(controlled vocabulary)。它定义了每个功能术语的含义和范围,避免了一词多义或同义词混乱的问题。
目前GO由GO联盟(Gene Ontology Consortium)维护,覆盖了数十万个物种。说实话,你几乎不会遇到一个常见物种在GO里找不到注释的情况。
GO的三大分支
GO把基因功能分成三个完全不同的大类。我管它们叫"三个视角看基因"。为什么这么分?因为你想想看,一个基因在生物体内扮演的角色是立体的:
- 它参与了什么生物过程(Biological Process, BP)——比如细胞分裂、DNA修复、免疫反应
- 它在细胞的什么位置干活(Cellular Component, CC)——比如细胞核、线粒体、细胞膜
- 它本身有什么分子功能(Molecular Function, MF)——比如结合DNA、催化某个化学反应
我习惯把这三个分支比作一个人的信息:BP是"他的职业",CC是"他的工位",MF是"他手里拿的工具"。三者缺一不可。
| 分支 | 英文全称 | 通俗解释 | 例子 |
|---|---|---|---|
| BP | Biological Process | 基因参与的"大的生物事件" | 细胞凋亡、炎症反应、糖酵解 |
| CC | Cellular Component | 基因产物所在的"细胞位置" | 细胞核、高尔基体、细胞质 |
| MF | Molecular Function | 基因产物本身的"生化活性" | ATP结合、蛋白质激酶活性 |
每一个GO术语只能属于其中一个分支。比如"凋亡过程"是BP,"半胱氨酸型内肽酶活性"是MF,它们不会串门。这个设计保证了功能描述的清晰性。
实战经验:做富集分析时,我建议把BP、MF、CC分开看。BP往往最能回答"差异基因跟什么生物学通路相关"这种核心问题。MF和CC更适合用来做细粒度验证。比如你发现一群差异基因都定位在线粒体上,那大概率跟能量代谢有关。
GO的层级结构:有向无环图
GO的术语不是平铺的,而是组织成一套有向无环图(DAG)。什么意思呢?就是父节点到子节点的关系是单向的,而且不会形成循环。
举个例子:
- "细胞过程"(cell process)是父节点
- "细胞代谢过程"(cellular metabolic process)是它的子节点
- "碳水化合物代谢过程"又是"细胞代谢过程"的子节点
你可以从最宽泛的描述一直细化到非常具体的功能。每一个子节点都继承了父节点的属性。这就带来一个很重要的特性:一个基因如果注释到某个子节点,它自动就拥有了所有父节点的注释。
我记得有一次做富集分析,结果里出现了一个很宽泛的GO term"细胞过程",我当时觉得这信息量太低了。后来才意识到,这是因为注释系统自动向上继承的结果。嗯,遇到这种情况不用慌,直接忽略掉那些太宽泛的顶层术语就行,重点看中下层的特异性术语。
GO术语的结构与ID
每一个GO术语都有一个唯一的标识符,格式是GO:后面跟7位数字。比如:
- GO:0006915 → 凋亡过程(apoptotic process),属于BP
- GO:0005737 → 细胞质(cytoplasm),属于CC
- GO:0005524 → ATP结合(ATP binding),属于MF
每个术语还包括:术语名称、所属分支、定义、同义词、参考来源、以及与其他术语的关系(is_a、part_of、regulates等)。
注意:GO ID是永久稳定的。一旦分配,不会因为术语名称修改而改变。所以你在写论文或记录分析结果时,务必同时保留GO ID和术语名称。只写名字的话,将来版本更新可能有歧义。
我早期整理分析报告时就只写了术语名,结果后来GO更新了命名,回头再查的时候对不上号了。从那以后,我无论做什么报告,都是"ID + 名称"成对出现。
GO注释的基本逻辑
一个基因怎么跟GO术语关联起来的?这个过程叫GO注释。目前主要有两种方式:
- 实验验证(Experimental):通过湿实验直接证明这个基因参与了某个过程。证据代码(Evidence Code)会标记为IDA(直接实验证据)、IPI(物理相互作用)等。这是最可靠的一类。
- 计算推断(Computational):通过序列相似性、结构域预测等手段推断出来的。证据代码如ISS(序列相似性推断)、IEA(电子注释)等。这类注释覆盖更广,但可靠性相对低一些。
实用建议:做富集分析时,我默认会保留所有证据类型的注释,这样统计效力更高。如果发现结果里有几个核心术语特别可疑,再回去查一下它们的证据代码。如果都是IEA(电子注释)支撑的,那我会打个问号,找实验验证的术语来交叉验证。
为什么我们做差异基因分析离不开GO?
说白了,差异基因分析只是第一步。你拿到一个列表,里面有200个基因上调、150个基因下调。然后呢?
GO给了你一把"分类的尺子"。你可以问:
- 这些上调的基因是不是富集在"细胞周期"这个BP里?
- 下调的基因是不是都定位在"细胞膜"上(CC)?
- 它们有没有共同的"激酶活性"(MF)?
这就是GO富集分析要回答的问题。你拿着差异基因列表,跟背景基因(通常是基因组所有基因)做比较,看看哪些GO术语在你的差异基因里出现的频率显著高于随机预期。
我记得有一个项目,客户拿来的差异基因列表看起来毫无规律,我做了GO富集分析后发现全部富集在"内质网应激反应"这个BP里。跟客户一核对,原来是他们用的药物正好靶向内质网通路。这就是GO发挥作用的地方——把看似混乱的数据,提炼成生物学上可解释的故事。
小技巧:做富集分析时,我一般先用BP分支来看整体趋势,再用CC来确认这些基因工作的"场所"是否合理,最后用MF来做精细化的机制解释。三个分支配合使用,能讲出一个完整的故事。