介绍
y叔的包,支持GO
,KEGG
,GSEA
等富集分析。同时还整合了gene id转换,富集结果可视化等等功能。
代码
首先当我们通过差异基因或者其他方式获得一个基因子集之后如果我们想要知道这些基因的功能这时候就需要对这些基因进行富集分析,一般常用的在线网站包括David
,kobas
等等,而在R语言中的富集分析则可以使用clusterProfiler
完成。
GO富集
#首先读入基因列表
rt = read.table('diff_gene_list.txt',header = T,sep = '\t')
x = rt$gene_id
#bitr函数进行id转换,使用的是bioconductor的db系列包
# fromType和toType包括:"ACCNUM, ALIAS, ENSEMBL, ENSEMBLPROT, ENSEMBLTRANS, ENTREZID,
# ENZYME, EVIDENCE, EVIDENCEALL, GENENAME, GO, GOALL, IPI, MAP, OMIM, ONTOLOGY,
# ONTOLOGYALL, PATH, PFAM, PMID, PROSITE, REFSEQ, SYMBOL, UCSCKG, UNIGENE, UNIPROT"
eg <- bitr(x,
fromType="SYMBOL",
toType=c("ENTREZID","ENSEMBL",'SYMBOL'),
OrgDb="org.Hs.eg.db")
head(eg)
# Run GO enrichment analysis
go <- enrichGO(eg$ENTREZID,
OrgDb = org.Hs.eg.db,
ont='ALL',
pAdjustMethod = 'BH',
pvalueCutoff = 0.05,
qvalueCutoff = 0.2,
keyType = 'ENTREZID')
dim(go)
#随后对富集结果进行总览,查看BP,CC,MF的个数
dim(go[go$ONTOLOGY=='BP',])
dim(go[go$ONTOLOGY=='CC',])
dim(go[go$ONTOLOGY=='MF',])
#结果可视化
barplot(go,showCategory=20,drop=T)
dotplot(go,showCategory=20)
kegg富集
#使用enrichKEGG函数,同样建议使用ENTREZID id
# Multiple samples KEGG analysis
#使用enrichKEGG函数,同样建议使用ENTREZID id
kegg <- enrichKEGG(eg$ENTREZID,
organism = 'hsa', ## hsa为人的简写,bta是牛的简写
keyType = 'kegg',
pvalueCutoff = 0.05,
pAdjustMethod = 'BH',
minGSSize = 3,
maxGSSize = 500,
qvalueCutoff = 0.2,
use_internal_data = FALSE)
head(kegg)
#可视化,和上面的一样
dotplot(kegg, showCategory=20) #气泡图
barplot(kegg,showCategory=20,drop=T) #柱状图
cnetplot(kegg, foldChange=geneList) #网络图
heatplot(kegg) #热力图
还有许多东西值得探索,更多内容请参考https://yulab-smu.github.io/clusterProfiler-book/