前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO和KEGG富集倍数(Fold Enrichment)如何计算

GO和KEGG富集倍数(Fold Enrichment)如何计算

作者头像
生信交流平台
发布2020-10-23 11:36:52
8.5K0
发布2020-10-23 11:36:52
举报

前面我们简单介绍过ggplot2画KEGG富集柱形图,其实GO富集结果的展示相对于KEGG来说要复杂一点点,因为GO又进一步可以划分成三个类。

代码语言:javascript
复制
BP:biological process,生物学过程。
MF:molecular function,分子功能。
CC:cellular component, 细胞成分。

因此在画图的时候,我们需要将这三类给区分开来。下面分别用了三种不同的方式来展示GO富集分析的结果。

图1:横轴为富集到每个GO条目上面的基因数目

图2: 横轴为GeneRatio

图3:横轴为Fold enrichment(富集倍数)

下面我们结合富集分析的结果表,来分别解释一下这三张图中横坐标的具体含义。

首先来看看这张表中每一列所代表的含义

代码语言:javascript
复制
ONTOLOGY:区分是BP,MF还是CC
ID:具体的GO条目的ID号
Description:GO条目的描述
GeneRatio:这里是一个分数,分子是富集到这个GO条目上的gene的数目,
            分母是所有输入的做富集分析的gene的数目,可以是差异表达
            分析得到的gene
BgRatio:Background Ratio. 这里也是一个分数,分母是人的所有编码蛋白的
        基因中有GO注释的gene的数目,这里是19623个,分子是这19623个
        gene中注释到这个GO条目上面的gene的数目
pvalue:富集的p值
p.adjust:校正之后的p值
qvalue:q值
geneID:输入的做富集分析的gene中富集到这个GO条目上面的具体的
        gene名字
Count:输入的做富集分析的gene中富集到这个GO条目上面的gene的数目

这张表里面没有提到富集倍数(fold enrichment)

代码语言:javascript
复制
fold enrichment = GeneRatio / BgRatio

那么我们就很容易理解上面三张图的横坐标了,分别为Count,GeneRatio和Fold enrichment。

那么问题来了,既然这张表里面没有Fold enrichment,那么我们如何计算富集倍数呢?

下面小编给大家介绍三种方法来计算Fold enrichment,任君挑选

1.利用eval直接做计算

代码语言:javascript
复制
kegg=read.csv("KEGG-enrich.csv",stringsAsFactors = F)

enrichment_fold=apply(kegg,1,function(x){
  GeneRatio=eval(parse(text=x["GeneRatio"]))
  BgRatio=eval(parse(text=x["BgRatio"]))
  enrichment_fold=round(GeneRatio/BgRatio,2)
  enrichment_fold
})

2.利用strsplit按/分割成分子和分母

代码语言:javascript
复制
kegg=read.csv("KEGG-enrich.csv",stringsAsFactors = F)
fenshu2xiaoshu<-function(ratio){
  sapply(ratio,function(x) as.numeric(strsplit(x,"/")[[1]][1])/as.numeric(strsplit(x,"/")[[1]][2]))
}
enrichment_fold=fenshu2xiaoshu(kegg$GeneRatio)/fenshu2xiaoshu(kegg$BgRatio)
enrichment_fold=as.numeric(enrichment_fold)

3. 利用gsub替换,得到分子和分母

代码语言:javascript
复制
kegg=read.csv("KEGG-enrich.csv",stringsAsFactors = F)
fenshu2xiaoshu2<-function(ratio){
  sapply(ratio,function(x) as.numeric(gsub("/.*$","",x))/as.numeric(gsub("^.*/","",x)))
}
enrichment_fold=fenshu2xiaoshu2(kegg$GeneRatio)/fenshu2xiaoshu2(kegg$BgRatio)
enrichment_fold=as.numeric(enrichment_fold)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档