首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >三种方法解决KEGG功能富集总是出现的断网报错:cannot read from connection

三种方法解决KEGG功能富集总是出现的断网报错:cannot read from connection

作者头像
生信技能树
发布2025-11-20 12:04:18
发布2025-11-20 12:04:18
60
举报
文章被收录于专栏:生信技能树生信技能树

最近群里问的比较多的问题如下。如果大家有什么生信问题欢迎图文并茂给我发邮件jzhang910@qq.com 或者 微信 Biotree123。

非常经典的报错:这是由于功能富集分析的时候enrichKEGG函数没有接内置的通路与基因对应的关系数据包,都是从函数内部去调用KEGG网址在线去读数据的原因,遇到网络不好极其容易断联!

代码语言:javascript
复制
cannot read from connection

这个时候我们有三种方法解决上述问题,来看看。

第一种方法:设置option延长联网时间

读取 deg 结果,示例文件 DEG_edgeR_all.csv :https://pan.baidu.com/s/1BmaoASP7gsVg8LwlqawOYQ?pwd=wfsv 提取码: wfsv

代码语言:javascript
复制
rm(list=ls())
library(data.table)
library(clusterProfiler) #功能富集分析包,统计学原理累计超几何分布
library(org.Hs.eg.db) # 数据包,做基因ID转换,是物种特异性包Hs表示人
library(ggplot2)

deg <- fread("DEG_edgeR_all.csv",header = T,data.table = F)
deg <- deg[deg$regulated!="normal", ]
head(deg)

## 基因ID转换
genelist <- bitr(gene=deg$SYMBOL, fromType="SYMBOL", toType="ENTREZID", OrgDb='org.Hs.eg.db')
head(genelist)

上面的报错你可以看到 Timeout of 60 seconds was reached,默认只给你60秒的时间!延长它!

代码语言:javascript
复制
# https://www.kegg.jp/kegg/tables/br08606.html organism 参数不同物种
# enrichKEGG 函数需要连网去KEGG数据库下载基因和通路的对应关系
# Set timeout options
options(timeout = 99999)
# https://rest.kegg.jp/list/pathway/hsa 通路id与基因名对应关系表格
# https://rest.kegg.jp/link/hsa/pathway 通路id与通路名称对应关系
ekegg <- enrichKEGG(gene = genelist$ENTREZID, organism = 'hsa', pvalueCutoff = 1, qvalueCutoff = 1)

## 绘制条形图
p_kegg <- barplot(ekegg, showCategory=10,label_format = 100) + 
  ggtitle("KEGG Pathway")
p_kegg

这里会稍微等待一点时间,但是结果是成功的:

第二种方法:去下载gmt基因集本地读取

gmt基因集下载见:下载基因集,然后使用 enricher 函数进行富集。

代码语言:javascript
复制
library(devtools)
# install_github("jokergoo/GSEAtopics")
#### MSigDB
library(GSEAtopics)
list_msigdb_versions()
list_msigdb_collections("2025.1.Hs")
list_msigdb_collections("2025.1.Mm")
# 下载kegg
lt = get_msigdb(version = "2025.1.Hs", collection = "c2.cp.kegg_legacy", gene_id_type = c("symbols"),as_table = T)
dim(lt)
head(lt)
table(lt$gene_set)

## TERM2GENE: 可以自定义基因集,基因与通路的对应关系
my_path <- enricher(gene=deg$SYMBOL, pvalueCutoff = 1, qvalueCutoff = 1, TERM2GENE=lt)
p1 <- barplot(my_path, showCategory=15,color = "pvalue",,label_format = 100) + ggtitle("c2.cp.kegg_legacy")
p1

是不是非常方便:

第三种方法:Y叔的帖子

前往这里观看:KEGG的富集分析终于真的本地化了

今天分享到这里~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一种方法:设置option延长联网时间
  • 第二种方法:去下载gmt基因集本地读取
  • 第三种方法:Y叔的帖子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档