gene Ontology (基因本体论)

gene ontology为了查找某个研究领域的相关信息,生物学家往往要花费大量的时间,更糟糕的是,不同的生物学数据库可能会使用不同的术语,好比是一些方言一样,这让信息查找更加麻烦,尤其是使得机器查找无章可循。Gene Ontology就是为了解决这种问题而发起的一个项目。
    Gene Ontology中最基本的概念是term。GO里面的每一个entry都有一个唯一的数字标记,形如GO:nnnnnnn,还有一个term名,比如"cell", "fibroblast growth factor receptor binding",或者"signal transduction"。每个term都属于一个ontology,总共有三个ontology,它们分别是molecular function, cellular component和biological process。
    一个基因product可能会出现在不止一个cellular component里面,也可能会在很多biological process里面起作用,并且在其中发挥不同的molecular function。比如,基因product "cytochrome c" 用molecular function term描述是"oxidoreductase activity",而用biological process term描述就是"oxidative phosphorylation"和"induction of cell death",最后,它的celluar component term是"mitochondrial matrix"和"mitochondrial inner membrane"。
Ontology中的term有两种相互关系,它们分别是is_a关系和part_of关系。is_a关系是一种简单的包含关系,比如A is_a B表示A是B的一个子集。比如nuclear chromosome is_a chromosome。part_of关系要稍微复杂一点,C part_of_D意味着如果C出现,那么它就肯定是D的一部分,但C不一定总会出现。比如nucleus part_of cell,核肯定是细胞的一部分,但有的细胞没有核。
    Ontology的结构是一个有向无环图,有点类似于分类树,不同点在于Ontology的结构中一个term可以有不止一个parent。比如 biological process term "hexose biosynthesis" 有两个parents,它们分别是"hexose metabolism"和"monosaccharide biosynthesis",这是因为生物合成是代谢的一种,而己糖又是单糖的一种。
GO (gene ontology)对大家而言也许会是一个相对陌生的名词,但是它已经成为生物信息领域中一个极为重要的方法和工具,并正在逐步改变着我们对 biological data的组织和理解方式,它的存在已经大大加快了我们对所拥有的生物数据的整合和利用,我们应该逐步学会理解和掌握这种思想和工具。
众所周 知,sequence based biology中的核心内容即是对序列的Annotation(注释),其中主要包含structural annotation和functional annotation,前者涉及分析sequence在genome中的locus以及exon,intron,promoter等的location, 而后者则是推断序列编码产物的功能,也正是我们在六月论题中所着重探讨的。应该说,这二者是相互关联的。
随着多种生物genome的相继解 码,同时大量ESTs以及gene expression profile date的积累,使得annotation的工作量和复杂度大大增加。然而另一方面,大多数基因在不同真核生物中拥有共同的主要生物功能,通过在某些物种 中获得的基因或者蛋白质(shared protein)的生物学信息,可以用以解释其他物种中对应的基因或蛋白(especially in comparative genomics)。由于这些繁复的功能信息主要是包含在积累的文献之中,如何有效的提取和综合这些信息就是我们面临的核心困难,这也是GO所要着力解决 的问题。通过建立一套具有动态形式的控制字集(controlled vocabulary),来解释真核基因及蛋白在细胞内所扮演的角色,并随着生命科学研究的进步,不断积累和更新。一个ontology会被一个控制字集 来描述并给予一定的名称,通过制定“本体”ontologies并运用统计学方法及自然语言处理技术,可以实现知识管理的专家系统控制。
到目 前为止,Gene Ontology Consortium(GO的发起组织)的数据库中有3大独立的ontology被建立起来:biological process生物过程, molecular function分子功能及cellular component细胞组分。而这三个ontology下面又可以独立出不同的亚层次,层层向下构成一个ontologies的树型分支结构。可以说, GO是生物学的统一化工具。
http://www.geneontology.org/Gene Ontology使用Oxford Dictionary of Molecular Biology (1997)中的定义,在分选时还要参考SWISS-PROT, PIR, NCBI CGAP, EC…中的注释。建立起来的标准不是唯一的标准(这是GOC所一直强调的),自然也不规定每个研究者必须遵循这套控制字集系统。所采用的动态结构 (dynamic structure)使用DAGs(Directed Acyclic Graphs)方式的network,将每一个ontology串连起来,形成树状结构(hierarchical tree),也就是由前面所说的“is a”和“part of”两种关系。
由于GO是一种整合性的分类系统,其下的3类主 ontology我们前面说是独立的,但是无论是GOC原初的设计还是我们的使用中其实都还是存在一定的流程关系。一个基因/蛋白质或者一个 ontology在注解的过程中,首先是考虑涉及在构成细胞内的组分和元件(cellular component),其次就是此组分/元件在分子水平上所行使的功能(molecular function),最后能够呈现出该分子功能所直接参与的生物过程(biological process)。由于这是一种存在反馈机制的注释过程,并且整个系统是动态开放实时更新的,因此在某种程度上说它具有纠错的能力。
在spiro转贴的帖子中提到TAMBIS计划,这是目前唯一实现了在概念和联系层次上集成信息源的系统。但是还有其他一些相关计划正在研究之中。比如BioKleisli (宾夕法尼亚大学计算机系),采用Mediator(调节器)技术实现了若干数据源的集成,其后的K2/Kleisli系统还利用数据仓库实现了OLAP(联机分析处理)。
DiscoveryLink (IBM研究院),基于Wrapper/ Mediator(包装器/调节器)实现了信息源集成,提出了查询的分解和基于代价的优化策略 TAMBIS (曼彻斯特大学计算机系)基于Wrapper/ Mediator实现了信息源集成,借助BioKleisli中的CPL语言作为查询语言并给出了查询优化的方法。通过TaO(TAMBIS Ontology)本体定义为用户浏览和查询处理提供领域知识。TINet (GSK公司和IBM研究院),基于多数据库中间件OPM(Object-Protocol Model,对象协议模型)定义数据源的对象视图,其CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)服务器使各数据源Wrapper(包装器)更易于扩充。但是他们都存在一定的 缺陷。BioKleisli 系统查询能力相对较弱,而且并未给出查询优化策略;TAMBIS系统和DiscoveryLink系统集成的数据源数量相对还很少,后者在查询处理中并未 运用领域知识,因而查询分解也未从语义角度考虑;TINet系统中的查询处理能力不强。
现在面临的突出问题是在数据库查询中尤其是当 多个数据库存在信息重叠时,缺乏从中选择最佳检索成员,动态生成优化检索方案的能力。而且现有的工作主要面向数据集成,而对服务集成考虑不多。支持数据与 服务综合性集成的体系仍欠完备。因此这也将是GO未来发展和提升的一个重要方向。
Ontology: 哲学中称为本体论/存在论,这里本质是指一系列特定的文字可用来形容一些特定的模式、元件或角色,因此在国外的华人生物信息学家中试译为语义(学)。

*********************************************************************

Gene Ontology (GO) 之分析实作简介
在此先简介一下如何使用MySQL来做GO分析,首先,请到ensembl的BioMart下载所需要的基因。
这里下载时有些事项要注意,选好database以及dataset后,请在Filter的Gene子项目中勾选Limit to genes … with GO ID(s) only。
接着在Attribute的EXTERNAL子项目中勾选go biological process, go cellular component, and go molecular function这三个子项目的GO ID。
其他细节可以依各自实验所需来勾选 (如勾选染色体号码以及基因的起始及结尾坐标)。
做GO的基本材料准备好后,接着必须具备一些MySQL的操作知识,之后去GO Database (http://www.geneontology.org/GO.downloads.database.shtml)下载MySQL的数据库回来建 (下载时选择 go_200904-assocdb-tables.tar.gz 这种table档即可,里面包含了许多MySQL的建表格指令,网页中也有使用教学,照着操作即可)。
下载好基因数据,建立好GO的表格后,请利用一些MySQL的指令,再多建立一个表格来汇入刚刚从ensembl下载回来的那些基因。
结束以上的前处理动作,就可以开始做GO的分析了。
1. 根据你所需要的数据类型,去刚建好的ensenbl数据库中抓取所需要的基因出来。如:
Gene ID, Transcript ID, BiologicalProcess Cellular Component Molecular Function
ENSG00000196763 ENST00000359554 GO:0000012 GO:0005634 GO:0003684
ENSG00000119673 ENST00000238651 GO:0000038 GO:0005739 GO:0004091
ENSG00000119673 ENST00000238651 GO:0000038 GO:0005739 GO:0005515 …
在做GO分析时,会先挑选出某一类来做分析,看是要先做BP, CC, or MF。
所以就以上的例子,假如现在想先做BP的GO分析,想看这个基因在BP这个分类下,在某个level当中会有多少种功能。
于是就先挑出GO:0000012, GO:0000038这两个最下层的GO ID来爬GO树。
假设现在要做BP的level 2的话,先利用MySQL指令找出biological process这个root的id是多少。
select * from term where name='biological_process';
查询后可以得知biological process这个root的id是6067。
接着,查询出root到level 2的所有path是哪些。
select * from graph_path where term1_id=6067 and distance=1;
root=0, 所以distance=1表示在第二层。
纪录每一笔select出来的term2_id值,这id值表示root到第二层的GO ID有哪些 (child id)。
然后用一个循环把GO:0000012的id放入term2_id 跟刚刚找到的那些level 2的id去做一轮select。
如何找GO:0000012的id? 从GO 的term table当中去做select。
select * from term where acc='GO:0000012';
如此可得知GO:0000012的id为32。
//for loop
select * from graph_path where term1_id=4581(刚找到的那些level 2的id) and term2_id=32;
做个一轮完,纪录有select出来的结果
表示这个基因到level 2有个path在,纪录结果的term1_id值,此值丢入term table可以取出GO ID。
如此可得之此GO:0000012在levle 2有哪种功能的分类。
(方式大致如上,写的比较赶,之后会再详细修改)

原文地址:https://www.cnblogs.com/wangshicheng/p/10107958.html