有一些软件做了检验之后,是不告诉你那些基因在某个富集的通路中,显然做为生物学家,是对此有兴趣的。clusterProfiler系列,全部函数都会输出,但看基因ID,比如ENTREZID或ENSEMBLE,这些都对人类不友好,看了你也不知道是什么,为了让大家看结果的时候,还能有点感觉,我们需要把基因翻译成symbol,有那么一批函数比如DO、GO、Reactome的分析都是有readable参数的,但有一些是没有这个参数的,我被问得最多的是KEGG的分析为什么没有!

首先GO为什么有?因为enrichGOgseGO都是使用OrgDb,而OrgDb本身带有ID转换的注释,而KEGG是在线去检索KEGG数据库的,KEGG并没有提供这些信息,当然对于少量大家比较熟悉的模式生物,要支持还是很容易的,然而有些物种支持,有些不支持,大家又会问了,凭什么我做的物种被BS了。所以啊,大家都不支持,挺公平。其实KEGG数据库里那么多的生物,很多物种是没有基因名的,有很多生物的注释还停留在基因座,你让我帮你转ID,臣妾做不到啊。

但起码对能支持的物种支持一下呗,以我一贯的作风,能帮小白解决的小问题,我都会去解决。于是我们有setReadable函数。但凡你能找到一个OrgDb,你就能用来转ID,就这样。

library(org.Hs.eg.db)
library(clusterProfiler)

data(geneList, package="DOSE")
de <- names(geneList)[1:100]
x <- enrichKEGG(de)
## The geneID column is ENTREZID
head(x, 3)

##                ID         Description GeneRatio  BgRatio
## hsa04110 hsa04110          Cell cycle      8/47 124/7466
## hsa04218 hsa04218 Cellular senescence      7/47 160/7466
## hsa04114 hsa04114      Oocyte meiosis      6/47 125/7466
##                pvalue     p.adjust       qvalue
## hsa04110 8.437729e-07 9.450256e-05 0.0000888182
## hsa04218 5.568944e-05 3.118608e-03 0.0029310229
## hsa04114 1.195585e-04 4.463517e-03 0.0041950345
##                                        geneID Count
## hsa04110 8318/991/9133/890/983/4085/7272/1111     8
## hsa04218    2305/4605/9133/890/983/51806/1111     7
## hsa04114         991/9133/983/4085/51806/6790     6

y <- setReadable(x, OrgDb = org.Hs.eg.db, keyType="ENTREZID")
## The geneID column is translated to symbol
head(y, 3)

##                ID         Description GeneRatio  BgRatio
## hsa04110 hsa04110          Cell cycle      8/47 124/7466
## hsa04218 hsa04218 Cellular senescence      7/47 160/7466
## hsa04114 hsa04114      Oocyte meiosis      6/47 125/7466
##                pvalue     p.adjust       qvalue
## hsa04110 8.437729e-07 9.450256e-05 0.0000888182
## hsa04218 5.568944e-05 3.118608e-03 0.0029310229
## hsa04114 1.195585e-04 4.463517e-03 0.0041950345
##                                                 geneID
## hsa04110 CDC45/CDC20/CCNB2/CCNA2/CDK1/MAD2L1/TTK/CHEK1
## hsa04218     FOXM1/MYBL2/CCNB2/CCNA2/CDK1/CALML5/CHEK1
## hsa04114          CDC20/CCNB2/CDK1/MAD2L1/CALML5/AURKA
##          Count
## hsa04110     8
## hsa04218     7
## hsa04114     6

这不仅限于KEGG,你用自己注释的时候,你也能用,即使你用了本来支持readable参数的函数,忘记加了,你也不用再跑一遍,因为你可以吃事后丸。正如《富集分析事后丸:过滤数据》一样。