收到我们微信群里一个网友的提问,她使用 Y叔的 clusterProfiler包做KEGG Pathway的富集分析,发现结果的通路分级中含有NA值,如下图。 那为什么KEGG富集通路结果中的分类有NA呢?


看看这个通路:Neuroactive ligand signaling
官网:https://www.genome.jp/kegg/pathway.html
查询结果:

结果:
官网有这个信息,我还查了其他通路,确定官网所有的通路都有这个层级分类!
一开始我没在意,以为是版本的原因呢。我看了下自己的版本,不是最新的。
packageVersion("clusterProfiler")
# [1] ‘4.16.0’
更新到最新,步骤如下:
devtools::install_local("clusterProfiler-devel.zip",updata = FALSE )
packageVersion("clusterProfiler")

但是没有解决问题,还是会有NA,看来不是版本的问题了。
这下没办法,只能抠一下作者的源码了,先找到添加分类的地方:

找到这个函数:res <- append_kegg_category(res)
在代码:clusterProfiler-devel/R/kegg-utilities.R:append_kegg_category 中

看看这个函数:append_kegg_category函数

作者用的这个包里面内置的整理好的层级分类!
clusterProfiler-devel/data/kegg_category.rda
utils::data(list="kegg_category", package="clusterProfiler")
get("kegg_category", envir = .GlobalEnv)
## 看看在不在里面
data_sub$Description
data_sub$Description %in% kegg_category$name

此外,我们生信技能树每月都有一期针对0基础的生信入门培训班,12月份开始招生啦,快来瞧一瞧:生信入门&数据挖掘线上直播课12月班。