zoukankan      html  css  js  c++  java
  • 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有哪种功能的分类。
    (方式大致如上,写的比较赶,之后会再详细修改)

  • 相关阅读:
    关于32位操作系统和64位操作系统对InstallShield打包的影响
    NEWS: Symantec宣布Wise Package Studio将终止
    InstallShield 2012新功能试用(2) 调用MsiGetProperty等MSI API发生变化
    Basic INFO 在命令行Build InstallShield安装包工程获得压缩安装包
    NEWS InstallShield 2012 Service Pack 1发布
    Basic INFO InstallShield Basic MSI工程中如何在SetupCompleteSuccess界面中启动Readme
    Basic INFO InstallShield的脚本编辑器中如何显示代码行号
    Basic INFO 关于在InstallShield制作的安装包界面中删除InstallShield文字的厂商回复
    Basic INFO InstallShield工程中如何让产品的快捷方式名称始终与产品名保持一致
    Basic INFO: 创建隐藏文件夹
  • 原文地址:https://www.cnblogs.com/wangshicheng/p/10107958.html
Copyright © 2011-2022 走看看