解决方法
- 更改clusterProfiler包的源码并重新编译
-
下载源码: Bioconductor - clusterProfiler
解压后进入 \clusterProfiler\R,找到文件kegg-utilities.R
-
将131行和137行的http都改为https
卸载原来的clusterProfiler包
-
重新编译新的clusterProfiler包:在RStudio中选择File->New Project -> 选择下载的源码文件夹 ->
重新运行代码,不再报错
环境
- clusterProfiler版本:4.4.1
- R语言版本:4.2.0
- ClusterProfiler包的依赖均为最新版本
报错代码
kk.degene <- enrichKEGG(gene = c('12306','12307'),
organism = 'hsa',
#universe = gene_all,
pvalueCutoff = 0.05,
qvalueCutoff = 0.05)
报错信息
"Failed to download KEGG data.",
"Wrong 'species' or the network is unreachable.",
"The 'species' should be one of organisms listed in",
"'https://www.genome.jp/kegg/catalog/org_list.html'"
分析
因为是突然发生的问题,之前一直没有遇到过这个问题,所以考虑到是clusterProfiler包或者R语言的版本问题,于是先采用了更新R语言版本以及clusterProfiler包的方法但是没有能够解决。
进而搜索资料,网上的解决方法“换个网络”或者将“hsa改为human”都不work。通过查看API的更新信息以及源码发现可能出现问题:
-
KEGG的API发生变更,从HTTP to HTTPS
- 源码中download的地址还是使用http
尽管不熟悉网络请求的原理,但是抱着试一试的态度将源码中HTTP改为了HTTPS,发现能够成功请求,十分喜悦,特此记录。
“想到就去试一试”。 -2020602