一些GO及KEGG分析的知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些GO及KEGG分析的知识相关的知识,希望对你有一定的参考价值。

参考技术A 参考: https://www.omicshare.com/forum/thread-826-1-2.html
https://www.omicshare.com/forum/thread-955-1-1.html
https://www.jianshu.com/p/13f46bebebd4

类似的,在GO分析中:

KEGG通路中对富集的计算也十分类似。

因此通过上述一顿操作猛如虎后的,即可得到基因n是否在M/k 类中富集(N)的概率(P)。

既然P-value 针对的是极端情况,那就让情况更极端一些好了。

即从总的基因N(背景基因)中抽取n个基因(前景基因),其中由i个基因落在符合条件的总的M个基因里。而之前的式子所讨论的概率运算,则正是i=k/m 时的情况下,求得的概率。
为了验证这一概率是否具备显著性,就索性计算 (k/m ~ M)这段更加极端的概率之和,最终得到的P越小,则检验结果越显著。(P<0.5, P<0.1……)

GO富集分析

参考技术A GO富集是组学数据分析常用的手段,通常用来挖掘差异基因中GO term的富集程度。Fisher's exact test是常用的统计检验方法,但这种方法存在明显的缺点。很多公司提供的测序分析结果都普遍使用这样的方法,导致很多后续的分析与实验结果不一致的情况。对于这种情况,目前还有其他算法来弥补这些缺点。(文中例子来源于《the Gene Ontology handbook》)

fisher's exact test是基于超几何分布来计算的,单边检验就是超几何检验。通常用来检验两组分类是否有显著差异。
m:研究物种的基因数;
n:研究的样本中基因数;
mt:总体中被注释到term t(GO 词条t)的基因数;
nt:样本中被注释到term t的基因数。
随机变量Xt表示样本中被观察到的term t 的数目,所有根据超几何分别,观察到k个term t 的概率P(Xt)是:

零假设H0:样本中出现的term t 的数目与总体中总的term t数目没有正关联。也就是说样本中的term t数目的比例与总体中term t的接近。
为了拒绝H0,使用单尾检验:

一个简单的例子:假设总体中有18个基因,其中有5个被注释到binding这个term,转录组分析发现有5个差异表达的基因,其中有3个被注释到binding这个term,为了说明binding这个term是否是overrepresentation,用上面的Fisher's exact test计算p值:

在现实中,我们不可能只对某一个term进行检验,而是对很多term进行检测,即多重检验,但这样就会导致假阳性的term数目非常高。所以我们需要对p值进行校正。通常是使用Benjamini-Hochberg校正方法来控制预期的错误发现率(false discoveries rate-FDR)进行校正。( 如何通俗地解释错误发现率(FDR) )。尽管多重检验的校正可以减少假阳性,但并不能从根本上解决GO(或KEGG)富集的问题。

GO富集的根本问题在于一个基因对应的GO term有多个,一个term对应多个gene,同时还有层级关系。这样导致如果一个term显著富集,那和它共享很多基因的term也会显著富集。

有很多其他的算法来试图解决这个问题,其中包括parent-child approach、topology-based algorithms、model-based approaches和gene set enrichment analysis。下面是对这些算法的简单介绍:

该算法还是基于Fisher's exact test,只不过考虑了term的父节点。在计算概率时,不再是在总体m中取样,而是从term的父节点中取样,所以计算公式变成了:

当一个term有多个父节点时计算就变得复杂了,具体方法还得参考原始文献(improved detection of overrepresentation of Gene-Ontology annotatins with parent child analysis)

这两种方法原理反正我没看懂,有兴趣的可以看原始文献:
1、Improved scoring of functional groups from gene expression data by decorrelating GO graph structure.
2、GOing Bayesian: model-based gene set analysis of genome-scale data

该算法首先根据感兴趣的特征(比如差异基因的表达量)对基因进行排序,形成一个列表。零假设是某个基因集(genes encoding products in a metabolic pathway, located in the same cytogenetic band, or sharing the sam GO category)里基因顺序与这个列表没有关联,即排序是随机的。对应的备择假设是它们之间有关联。如果基因集里的基因都聚集在基因列表的前端或底端或者非随机分布,我们就倾向于相信它们之间有关联。
S:想研究的基因集;
L:整个排序的基因列表;
统计量:Kolmogorov-Smirnov(KS)

step 1:计算富集得分(Enrichment Score)。按顺序从头到尾逐个比较L中的基因与S中的基因,加和统计量,如果两者相同就增加KS统计量,反之就减少KS统计量。增加的多少与这个基因和表型的相关性有关。最后ES就是KS的最大方差值。

step 2、检验ES的显著性。重复k次随机选择的大小为nt的基因集(Nt1,...,Ntk),p值计算公式为:

step3、使用FDR进行多重检验的校正。
相关软件:GSEA-P software

1、Benjamini Y, Hochberg Y. Controlling the false discovery rate: a practercal and powerful approch to multiple testing.
2、 https://www.zhihu.com/question/3560619
3、Gene set enrichment analysis: A knowledge-based approach for interpreting genome-wide expression profiles
4、 《the Gene Ontology handbook》

以上是关于一些GO及KEGG分析的知识的主要内容,如果未能解决你的问题,请参考以下文章

GO/KEGG功能富集分析及气泡图

【R语言】解决GO富集分析绘图,标签重叠问题

RNA-Seq(9):使用GSEA做GO/KEGG富集分析

go,kegg,gsea的取舍(一)

一文极速读懂 Gene Ontology (GO)数据库

GO,KEGG,DO 富集分析