原来旧KEGG代码已经跑不通了
写在前面的
8年前在本科学校的植物分子生物学实验室因为需要处理大豆开花相关基因的转录组数据,一个人啃相关的资料,花了好长一段时间把常规转录组分析的比对、注释、GO和KEGG等跑通了,建立好了稳定的分析流程。后来这个流程也是帮助到博士期间的我挖掘微生物转录组和蛋白质组的GO和KEGG富集信息。之后因为关注生物问题的侧重点不同,很久没有用过相关流程了。直到最近我突然发现以前的代码不管用了。
旧KEGG代码报错记录
无论是转录组还是蛋白质组学数据,都是通过上游的流程得到定量矩阵,然后经过下游的个性化分析拿到自己关注的目标基因或者蛋白ID集合,探索这些集合是否与什么生物学过程有关。最近手里有一批小鼠的基因集合需要进行KEGG分析,我果断掏出了8年前的代码开始跑
KEGG_enrich <- enrichKEGG(gene= target$ENTREZID,organism='mmu',keyType='ENTREZID',pAdjustMethod="BH",pvalueCutoff=0.05,qvalueCutoff=0.2)
本来这一小段代码在我以前各种分析中都是如鱼得水,得心应手,但是这一次却翻车了,代码报错。
Reading KEGG annotation online: "https://rest.kegg.jp/link/mmu/pathway"...Reading KEGG annotation online: "https://rest.kegg.jp/list/pathway/mmu"...Reading KEGG annotation online: "https://rest.kegg.jp/conv/ENTREZID/mmu"...error in file(con, "r"):cannot open the connection to 'https://rest.kegg.jp/conv/ENTREZID/mmu'in addition: warnings:In file(con, "r") :cannot open URL 'https://rest.kegg.jp/conv/ENTREZID/mmu': HTTP status was '400 Bad Request'
报错提示在访问KEGG REST API的URL时无法遭遇了错误的请求格式,因为HTTP 400型错误是格式问题,于是我更换了大小写格式手动使用浏览器访问网页https://rest.kegg.jp/conv/entrezid/mmu,然而依然无法访问。此刻我才意识到可能是网页不管用了。
解决方案
查阅了好几篇资料后,在东林兄的公众号推送里面找到了解决方案。原来Y叔之前已经遇到这些问题了,并且给出了本地化下载注释包完成KEGG富集的方法
#set mirroroptions(BioC_mirror = "https://mirrors.tuna.tsinghua.edu.cn/bioconductor")options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))BiocManager::install(c("org.Mm.eg.db", "org.Hs.eg.db"))##创建和安装KEGG.dbdevtools::install_github("YuLab-SMU/DOSE")devtools::install_github("YuLab-SMU/HDO.db")devtools::install_github("YuLab-SMU/clusterProfiler")remotes::install_github("YuLab-SMU/createKEGGdb")library("DOSE")library("HDO.db")library("clusterProfiler")library(createKEGGdb)library(R.utils)R.utils::setOption("clusterProfiler.download.method",'auto')createKEGGdb::create_kegg_db('hsa')#createKEGGdb::create_kegg_db(c("mmu","hsa"))install.packages("./KEGG.db_1.0.tar.gz",type="source")library(KEGG.db)#移动这个包到指定目录(默认的包的路径在当前工作目录,根据实际情况修改路径)file.rename("./KEGG.db_1.0.tar.gz", "/home/administrator/anaconda3/envs/R42/lib/R/library/KEGG.db_1.0.tar.gz")install.packages("/home/administrator/anaconda3/envs/R42/lib/R/library/KEGG.db_1.0.tar.gz",repos=NULL,type="source")###完成安装后KEGG_enrich <- enrichKEGG(gene= target$ENTREZID,organism='mmu',keyType='ENTREZID',pAdjustMethod="BH",pvalueCutoff=0.05,qvalueCutoff=0.2,use_internal_data =T)
指定KEGG分析使用本地安装的内部数据库,无需联网即可丝滑填补新遇到的问题。看来生物信息数据分析的旧流程需要定期检验是否能稳定运行。否则当外部数据库或网站有变动时旧代码所需的依赖格式变化后很容易报错。

