前面我們簡單介紹過ggplot2畫KEGG富集柱形圖,其實GO富集結(jié)果的展示相對于KEGG來說要復雜一點點,因為GO又進一步可以劃分成三個類暖夭。
BP:biological process,生物學過程论矾。
MF:molecular function,分子功能我擂。
CC:cellular component, 細胞成分阱洪。
因此在畫圖的時候侮腹,我們需要將這三類給區(qū)分開來又厉。下面分別用了三種不同的方式來展示GO富集分析的結(jié)果九府。
下面我們結(jié)合富集分析的結(jié)果表,來分別解釋一下這三張圖中橫坐標的具體含義覆致。
首先來看看這張表中每一列所代表的含義
ONTOLOGY:區(qū)分是BP侄旬,MF還是CC
ID:具體的GO條目的ID號
Description:GO條目的描述
GeneRatio:這里是一個分數(shù),分子是富集到這個GO條目上的gene的數(shù)目煌妈,
分母是所有輸入的做富集分析的gene的數(shù)目儡羔,可以是差異表達
分析得到的gene
BgRatio:Background Ratio. 這里也是一個分數(shù)宣羊,分母是人的所有編碼蛋白的
基因中有GO注釋的gene的數(shù)目,這里是19623個汰蜘,分子是這19623個
gene中注釋到這個GO條目上面的gene的數(shù)目
pvalue:富集的p值
p.adjust:校正之后的p值
qvalue:q值
geneID:輸入的做富集分析的gene中富集到這個GO條目上面的具體的
gene名字
Count:輸入的做富集分析的gene中富集到這個GO條目上面的gene的數(shù)目
這張表里面沒有提到富集倍數(shù)(fold enrichment)
fold enrichment = GeneRatio / BgRatio
那么我們就很容易理解上面三張圖的橫坐標了仇冯,分別為Count,GeneRatio和Fold enrichment族操。
那么問題來了苛坚,既然這張表里面沒有Fold enrichment,那么我們?nèi)绾斡嬎愀患稊?shù)呢色难?
下面小編給大家介紹三種方法來計算Fold enrichment泼舱,任君挑選
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
})
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)
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)
參看下面這篇文章獲取獲取KEGG-enrich.csv