专栏首页生信修炼手册详解GO的层级关系在富集分析中的应用

详解GO的层级关系在富集分析中的应用

欢迎关注”生信修炼手册”!

对于Gene ontology 而言,目前共有2万多个Go trems。 做完富集分析后,我们可能会得到几百甚至几千个富集到的GO terms, 这样的一个数据量对于人工一个个检索而言,仍然是一个艰巨的任务。为了有效的利用GO富集分析的结果,我们势必需要对结果再次进行过滤。

所有GO的层次结构关系如下图所示

这样的结构我们称之为有向无环图DAG, 虽然在图这种数据结构中,节点并没有严格的层级关系,但是由于在GO这张图中,存在了祖先节点,即最上层的3个节点,其他的节点都可以看做是其子节点,从而引用了树状结构中的level的概念,定义子节点到祖先节点的路径上包含的节点数即为该节点的level,祖先节点的level为1. 示意图如下

需要注意的是,由于子节点到祖先节点的路径不止一条,所以一个子节点可能拥有用多个level, 这意味着GO terms的level不是一个值,在使用level对GO Terms进行过滤时就需要注意。

想象一下,对于一个有多个level的GO term, 我们采用哪个值来表征其level, 是取最大值,还是最小值,或者是均值,由于不同取值算法带来的不确定性,所以采用level对GO过滤会存在一定风险,特别是level很大时。比如我们只选取level > 7的GO terms, 无论是用哪个值作为level, 其过滤的结果和我们预期的都是不符合的。

GO官网对于GO level也进行了说明,参考以下链接

http://www.geneontology.org/faq/how-can-i-calculate-level-go-term

传统的费舍尔精确检验也好,GSEA也罢,这些富集分析的算法都只是为单个GO term进行分析,不会考虑该GO term在整个网状结果中的层级关系。对于这些分析的结果,采用上述的GO level 进行过滤时,只能是采用较小的level, 在一下R包中,比如goprofiler, 推荐的最小层级是level为2。

采用level对结果过滤效果有限,为了有效筛选结果,出现了Gene Ontolgy network analysis,示意图如下

根据所有富集到的GO terms, 从整个GO Graph中取出一个子图subgraph, 图中有颜色的节点为富集到的GO, 颜色的深浅有P值决定, 节点的大小由degree决定。

根据这个network, 应用图论的算法可以挖掘出其中重要的GO term,从而实现对GO富集结果的过滤。

·end·

—如果喜欢,快分享给你的朋友们吧—

本文分享自微信公众号 - 生信修炼手册(shengxinxiulian),作者:lzyg

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解如何获取物种所有基因对应的GO注释

    Gene Ontology是研究基因功能的重要数据库之一,在进行GO的富集分析时,需要提供所有基因对应的GO注释信息,本文介绍几种获取该信息的方式。

    生信修炼手册
  • 使用topGO进行GO富集分析

    topGO是一个专门用于做GO富集分析的R包,它默认从GO.db中读取GO的分类和结构信息,结合富集分析的结果,它可以画出如下所示的GO有向无环图

    生信修炼手册
  • Gene Ontology-基因产物功能数据库

    Gene Ontology, 中文名叫做基因本体论,采用GO terms描述基因产物的功能, 并且提供了不同GO terms 之间的关系。官网如下

    生信修炼手册
  • Data Structure前情提要——二叉树红黑树

    叶子节点就是左右孩子都是空的,但是并不是每一颗树都像上图所示的那样这么规整,有些树树可以只有左孩子没有右孩子的。二叉树的节点一定会大于左节点的值小于右节点的值,...

    西红柿炒鸡蛋
  • 《Learning Scrapy》(中文版)第1章 Scrapy介绍HelloScrapy喜爱Scrapy的其它理由关于此书:目标和用法掌握自动抓取数据的重要性开发高可靠高质量的应用 提供真实的开发进

    本书作者使用的Scrapy版本是1.0.3。感兴趣的话,还可以看看Scrapy1.4最新官方文档总结。 ---- ? 下载本书代码:https://git...

    SeanCheney
  • 用 100 行代码提升 10 倍的性能

    你需要在前端展示 5000 条甚至更多的数据,每一条数据的数据结构是一个对象,里面有格式各样的属性。每个属性的值又可以是基本类型,对象,甚至数组。这里的对象或者...

    格姗知识圈
  • 再也不用怕面试问二叉树了

    二叉树是一种非常重要的数据结构。在算法题中经常会使用到,在面试中的占比也是非常大的。

    不作声
  • pycharm的python_stubs问题

    最近在写udp socket程序时,对几个函数(如sendto)command+左击时,发现跳转到了这个python文件里面去了。(默认应该是到函数源码那里)

    砸漏
  • 如何才能快速做到图片转文字?

    不知道大家知不知道图片转文字的方法有很多,那么大家会操作的方法又有哪些呢?如果大家还不会操作的话,就可以跟随小编来看看吧!

    高效办公小助手
  • LeetCode 1038.从二叉搜索树到更大和树 - JavaScript

    给出二叉搜索树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node 的新值等于 原树中大于或等于 node.val 的值之和。

    心谭博客

扫码关注云+社区

领取腾讯云代金券