R语言:clusterProfiler进行GO富集分析和Gene_ID转换

Python012

R语言:clusterProfiler进行GO富集分析和Gene_ID转换,第1张

ID转换用到的是 bitr() 函数,bitr()的使用方法:

org.Hs.eg.db包含有多种gene_name的类型

keytypes() :keytypes(x),查看注释包中可以使用的类型

columns() :类似于keytypes(),针对org.Hs.eg.db两个函数返回值一致

select() :select(x, keys, columns, keytype, ...) eg.

函数enrichGO()进行GO富集分析,enrichGO()的使用方法:

举例:

生物信息里面常见的就是KEGG GO 等通路富集时候用到的 超几何检验知识,为了便于理解 这里举个例子:

目前有200个基因具有GO注释,其中60个是GO04

我们得到20个差异基因,其中有11个是GO04,想问GO04这个通路是否在这20个基因中得到了富集??

(即公式中的,N=200,n=20,M=60,i=11);

我们先算抽取从200个基因里面抽20个基因,其中有11个基因具有GO04的概率:

即0.0093

下面为p值的计算公式:即 p-value=1-(p0+p1+p3+...+p10),可以看到如果括号里面的值越大,说明从200个基因里面抽20个,从抽到0个到抽10个基因是GO04通路里面的基因的概率很大,1-累加值就很小,说明我们的结果显著富集(越不可能发生的事情,我们却发生了)。

拓展R语言计算p值:

phyper(11-1,60,140,20,lower.tail = F)=0.0125还是蛮显著的。

如果还不好理解,你可以试试极端的例子,

总共有10个基因,其中5个基因是GO04,我们现在得到5个差异基因,刚好这5个基因都是GO04(不言而喻这绝对很显著了,p值理论上会趋近于0)

1-(p0+p1+p2+p3+p4) = 1-(1/252+25/252+100/252+100/252+25/252)=1/252=0.003968254很显著!

R语言实现:

phyper(5-1,5,5,5,log.p = F,lower.tail=F)

GO注释是对某个特定基因功能的描述。每一条GO注释由一个基因和相应的GO term组成。这些描述一起构成了当前的生物学认知的“快照”。关于基因功能的碎片化的认知可能建立在不同的等级之上,这就是为什么每条GO注释总是会引用其基础的证据。证据以GO“证据码”的形式呈现,具体可能是一个已发表的文献或者创建这条注释的方法。

所有的GO注释,最终都会被科学文献支持。GO证据码描述了证据并且粗略的反应了这条注释与直接的实验证据相距多远,以及这条注释是否被专家评估过。