前⾯我们简单介绍过ggplot2画KEGG富集柱形图,其实GO富集结果的展⽰相对于KEGG来说要复杂⼀点点,因为GO⼜进⼀步可以划分成BP:biological process,⽣物学过程。
图1:横轴为富集到每个GO条⽬上⾯的基因数⽬
图3:横轴为Fold enrichment(富集倍数)
下⾯我们结合富集分析的结果表,来分别解释⼀下这三张图中横坐标的具体含义。⾸先来看看这张表中每⼀列所代表的含义
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)
fold enrichment = GeneRatio / BgRatio
那么我们就很容易理解上⾯三张图的横坐标了,分别为Count,GeneRatio和Fold enrichment。那么问题来了,既然这张表⾥⾯没有Fold enrichment,那么我们如何计算富集倍数呢?eval是做什么的
下⾯⼩编给⼤家介绍三种⽅法来计算Fold enrichment,任君挑选
eval直接做计算
1.利⽤eval
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
})
strsplit按/分割成分⼦和分母
2.利⽤strsplit
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)
gsub替换,得到分⼦和分母
3. 利⽤gsub
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)
GO和KEGG富集倍数(Fold Enrichment)如何计算m p.weixin.qq
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论