现如今,go或者kegg数据库富集已经是太平常不过的分析了。
绝大部分数据挖掘,不管是通过差异分析还是生存分析,都会拿到基因集,就可以进行这样的分析。
我们以DOSE包的内置数据集geneList为例:
library(DOSE)
data("geneList")
head(geneList)
gene_up=head(names(geneList),200)
gene_down=tail(names(geneList),200)
常规可视化
library(clusterProfiler)
library(ggplot2)
library(stringr)
go <- enrichGO(gene_up, OrgDb = "org.Hs.eg.db", ont="all")
barplot(go, split="ONTOLOGY")+ facet_grid(ONTOLOGY~., scale="free")
barplot(go, split="ONTOLOGY",font.size =10)+
facet_grid(ONTOLOGY~., scale="free") +
scale_x_discrete(labels=function(x) str_wrap(x, width=50))+
ggsave('gene_up_GO_all_barplot.png')
go <- enrichGO(gene_down, OrgDb = "org.Hs.eg.db", ont="all")
barplot(go, split="ONTOLOGY",font.size =10)+
facet_grid(ONTOLOGY~., scale="free") +
scale_x_discrete(labels=function(x) str_wrap(x, width=50))+
ggsave('gene_down_GO_all_barplot.png')
出图如下:
可以看到, 在CC那个部分,多次出现 chromosome regions,有点冗余,所以可以精简。
进阶可视化
主要是使用了 simplify 对GO富集分析结果进行精简。
go1 <- enrichGO(gene_up, OrgDb = "org.Hs.eg.db", ont="bp")
go1 <- simplify(go1)
go2 <- enrichGO(gene_up, OrgDb = "org.Hs.eg.db", ont="cc")
go2 <- simplify(go2)
go3 <- enrichGO(gene_up, OrgDb = "org.Hs.eg.db", ont="mf")
go3 <- simplify(go3)
go4 <- enrichGO(gene_down, OrgDb = "org.Hs.eg.db", ont="bp")
go4 <- simplify(go4)
go5 <- enrichGO(gene_down, OrgDb = "org.Hs.eg.db", ont="cc")
go5 <- simplify(go5)
go6 <- enrichGO(gene_down, OrgDb = "org.Hs.eg.db", ont="mf")
go6 <- simplify(go6)
library(patchwork)
dotplot(go1) / dotplot(go2)/dotplot(go3)
dotplot(go4) / dotplot(go5)/dotplot(go6)
出图如下:
这个时候,图仍然是有很多可以调整的地方,不过Y叔开发的这些包出图都是基于ggplot2语法,所以很容易修改。比如如果有一些GO条目的名字巨长,也可以很方便调整,如下所示:
library(patchwork)
library(stringr)
library(ggplot2)
p = dotplot(go1) + scale_y_discrete(labels=function(x) str_wrap(x, width=20))
p
p / dotplot(go2)/dotplot(go3)
p = dotplot(go4) + scale_y_discrete(labels=function(x) str_wrap(x, width=20))
p
p / dotplot(go5)/dotplot(go6)
cytoscape
发起了《使得go或者kegg数据库富集结果展现的更好》的讨论后,2021第一期生信入门学习班的小伙伴马上开了一个公众号来持续更新这方面资料,虽然第一个推文写的弱爆了:Understand_EA#GO,不过也算是分享了干货。enrichplot里emapplot这个图不是很方便调整,那么clueGO值得你体验。
网页工具
同样的,也是2018年《单细胞数据分析实战》学习班的学员,开通了自己的公众号,分享的教程:如何优雅展示GO富集结果,提到了这个网页工具: http://funset.uno/ ,如果你感兴趣它的表现,直接去看学员的公众号吧:如何优雅展示GO富集结果。
最高级的应该是AI或者PS啦
比如文章《Targeted immunotherapy for HER2-low breast cancer with 17p loss》里面的通路富集结果如下所示:
那么问题来了,AI或者PS该去哪里学呢?