clusterProfiler: No gene can be mapped | 怎么破?

日常瞎掰

  奇奇怪怪的事又发生了,真就应了那句话,不出意外的话,意外就会发生了。。。
  最近需要用clusterProfilerKEGG富集,然后就出现了意外,居然出现No gene can be mapped....状况。怎么肥事?用不了,要不换个工具试试?犹豫了片刻,心想来都来了,不能空手而归呀 (没办法就是这么有原则) !

  于是乎,又开始捣腾起来了。首先,网上一搜,这种情况不是个例,也给出了相应解决的方法。蛋似,方法着实有点让人难受,难道就没有其他办法了么?让我们一起来回顾一下。

起因

  基因集做一个KEEG富集,对于RNA-seq数据来说已经是常规操作了。本觉得用clusterProfiler来完成这个任务也就是分分钟的事,可谁成想却出现了下面的意外情况:

glist <- read.table('genes.txt',header=T,stringsAsFactors=F,sep='\t')
head(glist)
  SYMBOL ENTREZID
1  Foxd3    15221
2  Foxj3   230700
3  Dmrt1    50796
4   Lhx3    16871
5 Arid3b    56380
6  Foxl2    26927

enrich <- enrichKEGG(gene=glist$ENTREZID, organism='mmu', keyType="kegg")
Reading KEGG annotation online:
--> No gene can be mapped....
--> Expected input gene ID:
--> return NULL...

head(enrich)
NULL

  怎么会没有富集结果?No gene can be mapped....怎么回事?难道基因集的ID匹配不上,不可能吧,物种可是小鼠!一度自我怀疑,没办法,就用DOSE包里面的数据来测试一下:

data(geneList, package='DOSE')
de <- names(geneList)[1:100]
yy <- enrichKEGG(de, pvalueCutoff=0.01)
--> No gene can be mapped....
--> Expected input gene ID:
--> return NULL...

head(yy)
NULL

  事实摆在那里,不是基因ID的问题,一定是程序哪里出现了问题。网上一搜,给出的答案大都是KEGG数据库更新了,更新clusterProfiler后就能正常在线获取数据了。更新包原本多么简单的一件事,可无论如何也无法安装新版的clusterProfiler。看着眼前的R-4.0,再看看包的安装说明(R >= 3.5.0),一时间陷入了沉思。

  哪个环节出问题了?难道真要想网上说的那样将R升级到4.2?无语了。。。本来想炒个菜,没想到锅不行了!

方法

  此时,有两个选择:一,更新RclusterProfiler;二,换一个工具。那有没有第三个选择,既不用更新也不换工具呢?在enrichKEGG函数的参数里面已经给出答案,use_internal_data可以指定使用本地KEGG.db包的数据,这样就可以正常富集了:

enrich <- enrichKEGG(gene=glist$ENTREZID, organism='mmu', keyType="kegg", use_internal_data=T)
head(enrich)
               ID                Description GeneRatio  BgRatio       pvalue
mmu05200 mmu05200         Pathways in cancer       5/8 326/6698 1.314411e-05
mmu04630 mmu04630 Jak-STAT signaling pathway       3/8 153/6698 6.016399e-04
mmu05223 mmu05223 Non-small cell lung cancer       2/8  55/6698 1.796063e-03
mmu05220 mmu05220   Chronic myeloid leukemia       2/8  74/6698 3.229817e-03
mmu05222 mmu05222     Small cell lung cancer       2/8  87/6698 4.438720e-03
mmu05160 mmu05160                Hepatitis C       2/8 137/6698 1.072686e-02
             p.adjust       qvalue                         geneID Count
mmu05200 0.0002365941 0.0001245232 14013/20851/20181/218772/56458     5
mmu04630 0.0054147594 0.0028498734              20847/20851/20849     3
mmu05223 0.0107763806 0.0056717792                   20181/218772     2
mmu05220 0.0145341751 0.0076495658                    14013/20851     2
mmu05222 0.0159793921 0.0084102064                   20181/218772     2
mmu05160 0.0321805879 0.0169371515                    20847/20181     2

  这个办法虽然简单,但不建议使用。因为依赖的KEGG.db包更新不那么及时,可能会错过想要的结果。所以,clusterProfiler默认是在线获取KEGG数据,这样每次使用都是最新的数据库。
  科研嘛,虽然包容性很强,但还需要认真严谨一些比较好。下面,将clusterProfiler3.18.1更新到4.6.2后又做了一遍,对比上面的结果可知,排序靠前的富集通路变了:

packageVersion('clusterProfiler')
[1] ‘4.6.2’

enrich <- enrichKEGG(gene=glist$ENTREZID, organism='mmu', keyType="kegg")
Reading KEGG annotation online: "https://rest.kegg.jp/link/mmu/pathway"...
Reading KEGG annotation online: "https://rest.kegg.jp/list/pathway/mmu"...
head(enrich)
               ID                                                   Description
mmu05223 mmu05223       Non-small cell lung cancer - Mus musculus (house mouse)
mmu05161 mmu05161                      Hepatitis B - Mus musculus (house mouse)
mmu04630 mmu04630       JAK-STAT signaling pathway - Mus musculus (house mouse)
mmu04217 mmu04217                      Necroptosis - Mus musculus (house mouse)
mmu05220 mmu05220         Chronic myeloid leukemia - Mus musculus (house mouse)
mmu04658 mmu04658 Th1 and Th2 cell differentiation - Mus musculus (house mouse)
         GeneRatio  BgRatio       pvalue    p.adjust       qvalue
mmu05223       3/8  72/9327 2.402769e-05 0.001273467 0.0008599383
mmu05161       3/8 163/9327 2.751355e-04 0.004495214 0.0030354973
mmu04630       3/8 171/9327 3.169120e-04 0.004495214 0.0030354973
mmu04217       3/8 175/9327 3.392615e-04 0.004495214 0.0030354973
mmu05220       2/8  76/9327 1.777434e-03 0.018840803 0.0127226876
mmu04658       2/8  88/9327 2.375089e-03 0.019804257 0.0133732821
                     geneID Count
mmu05223 20851/20181/218772     3
mmu05161  20847/20851/20849     3
mmu04630  20847/20851/20849     3
mmu04217  20847/20851/20849     3
mmu05220        14013/20851     2
mmu04658        20851/20849     2

原因

  虽然KEGG富集的问题解决了,但有个问题还是没有答案。为什么R-4.0无法安装clusterProfiler-4.8.2?明明要求是R >= 3.5.0即可,什么原因导致的呢?对此,花费了一点时间寻找了一下原由,最终找到了答案。
  clusterProfiler包的要求R >= 3.5.0 (见上面的截图) 没有问题,可该包需要依赖其他的包,如DOSE(>= 3.23.2)。然后,进到DOSE介绍页面如下图,最新版也只要R >= 3.5.0,也没有问题:

  那接着往下找,可以看到DOSE也需要依赖其他的包,如HDO.db。没事,点进去看一下,意外就这么出现了。HDO.db要求R >= 4.2,惊不惊喜,意不意外?

  此时,R-4.0无法安装新版clusterProfiler的原因好像找到了。不过,看到这样的答案,内心的情绪相当丰富。。。

结束语

  R语言之所以受欢迎,大抵是因为有海量的扩展包可以利用,站在别人的肩膀上,不论是使用包还是开发包都可以很方便。蛋似,也正是有这么多的包可用,包与包之间依赖的关系才形成了套娃式的结构,真的是牵一发而动全身
  不过,这似乎并不影响R的好用,无非就是更新一下包,大不了就是切换一下版本,这都是不是什么问题。毕竟,天下无难事,只要肯放弃。做个KEGG富集,半天的时间又没了,时间都去哪了?


往期回顾

R语言的碎碎念
linux入门学习指南
武林大会之对角线热图
ggplot2 | 绘制双y轴的图型
tidydr | 一行代码搞定小坐标系

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容