使用ClusterProfiler进行GSEA分析时输入基因报错求助
DESeq2结果做GSEA报错:无基因可映射的原因及解决办法
报错核心原因
你当前构建的gene_list_GSEA只是单纯的统计量数值向量,没有为向量添加基因名作为名称属性。gseGO要求输入的基因列表必须是「基因ID为名称、对应统计量为值」的命名向量——没有基因名的话,工具无法将数值与具体基因关联,自然找不到可映射的基因。
解决步骤及修正代码
关键修正点
给提取的stat向量添加基因名(DESeq2的res结果行名默认就是基因ID,这里你指定了keyType="SYMBOL",所以行名应为基因符号):
# 整理DESeq2结果 res.df <- as.data.frame(res) res.df <- na.omit(res.df) res.ordered <- res.df[order(-res.df$stat),] # 构建带基因名的命名向量(核心修正) gene_list_GSEA <- res.ordered$stat names(gene_list_GSEA) <- rownames(res.ordered) # GSEA分析 gse <- gseGO(gene_list_GSEA, ont="ALL", keyType="SYMBOL", OrgDb=org.Hs.eg.db, # 建议直接用对象而非字符串,避免加载问题 minGSSize=3, maxGSSize=800, pvalueCutoff=0.05, verbose=TRUE )
额外排查项
- 确认
res的行名确实是基因SYMBOL:如果行名是ENSEMBL ID,需将keyType改为"ENSEMBL",或者先通过org.Hs.eg.db把ENSEMBL转成SYMBOL。 - 更新
org.Hs.eg.db包:若包版本过旧,可能存在基因映射关系缺失,执行BiocManager::install("org.Hs.eg.db")更新后重试。
内容的提问来源于stack exchange,提问作者MarieSN
相关产品推荐
相关产品推荐

