clusterProfiler是一个功能强大的R包,同时支持GO和KEGG的富集分析,而且可视化功能非常的优秀,本章主要介绍利用这个R包来进行Gene Ontology的富集分析。 进行GO分析时,需要考虑的一个基础因素就是基因的GO注释信息从何处获取。Bioconductor上提供了以下19个物种的Org类型的包,包含了这些物种的GO注释信息
clusterProfiler在做GO分析时,会读取这些包中的GO信息,从这里也可以看出,Bioconductor的生态体系,不同R包的数据传递和依赖组成了其生态环境。 对于以上19个物种,只需要安装对应的org包,clusterProfile就会自动从中获取GO注释信息,我们只需要差异基因的列表就可以了,使用起来非常方便。 在进行富集分析时,支持以下两种算法 1. Over-Representation Analysis过表达分析其实就是费舍尔精确检验,对于以上19个物种,分析的代码如下 ego <- enrichGO(
gene = gene,
keyType = "ENTREZID",
OrgDb = org.Hs.eg.db,
ont = "CC",
pAdjustMethod = "BH",
pvalueCutoff = 0.01,
qvalueCutoff = 0.05,
readable = TRUE)
2. Gene Set Enrichment Analysisego <- gseGO(
geneList = geneList,
OrgDb = org.Hs.eg.db,
ont = "CC",
nPerm = 1000,
minGSSize = 100,
maxGSSize = 500,
pvalueCutoff = 0.05,
verbose = FALSE) GSEA分析通过置换检验来计算p值, 对于这19个物种之外的其他物种,也支持读取基因的GO注释文件,然后进行分析,注释文件的格式如下
只需要3列信息即可,第一列为geneID, 第二列为基因对应的GO编号,第三列为GO的描述信息。这3列的顺序是无所谓的, 只要包含这3种信息就可以了。 data <- read.table(
"go_annotation.txt",
header = T,
sep = "\t")
go2gene <- data[, c(2, 1)]
go2name <- data[, c(2, 3)]
# 费舍尔精确检验
x <- enricher(
gene,
TERM2GENE = go2gene,
TERM2NAME = go2name)
# GSEA富集分析
x <- GSEA(
gene,
TERM2GENE = go2gene,
TERM2NAME = go2name) 对于GO富集分析的结果,clusterProfiler提供了以下几种可视化策略 1. barplot用散点图展示富集到的GO terms,用法如下 barplot(ego, showCategory = 10) 生成的图片如下 横轴为该GO term下的差异基因个数,纵轴为富集到的GO Terms的描述信息, 2. dotplot用散点图展示富集到的GO terms,用法如下 dotplot(ego, showCategory = 10) 生成的图片如下 横轴为 图中点的颜色对应p.adjust的值,从小到大,对应蓝色到红色,大小对应该GO terms下的差异基因个数,个数越多,点越大。 3. GO有向无环图调用topGO来实现GO有向无环图的绘制,代码如下 plotGOgraph(ego) 生成的图片如下 4. goplot和 goplot(ego) 生成的图片如下 5. emapplot对于富集到的GO terms之间的基因重叠关系进行展示,如果两个GO terms系的差异基因存在重叠,说明这两个节点存在overlap关系,在图中用线条连接起来,用法如下 emapplot(ego, showCategory = 30) 生成的图片如下 每个节点是一个富集到的GO term, 默认画top30个富集到的GO terms, 节点大小对应该GO terms下富集到的差异基因个数,节点的颜色对应p.adjust的值,从小到大,对应蓝色到红色。 6. cnetplot对于基因和富集的GO terms之间的对应关系进行展示,如果一个基因位于一个GO Terms下,则将该基因与GO连线,用法如下 cnetplot(ego, showCategory = 5) 生成的图片如下 图中灰色的点代表基因,黄色的点代表富集到的GO terms, 默认画top5富集到的GO terms, GO 节点的大小对应富集到的基因个数。 更多用法和细节请参考官方文档。 ·end· |
|