news 2026/5/27 19:15:04

代码分享】“基因集单通路的泛癌GSEA富集分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码分享】“基因集单通路的泛癌GSEA富集分析

【代码分享]基因集单通路的泛癌GSEA富集分析#资料 如图

最近在整理TCGA多组学数据时,发现不少小伙伴对通路活性评估有需求。今天分享一个快速实现泛癌GSEA分析的方法,特别适合需要观察某个特定通路在多个癌症类型中激活状态的情况。这个方法不需要复杂的编程基础,咱们用R语言手把手走流程。

先看核心代码结构(完整脚本见文末github仓库):

library(clusterProfiler) library(org.Hs.eg.db) # 示例数据预处理 pancan_data <- read.csv("tcga_pancan_expression.csv", row.names=1) gene_list <- pancan_data$log2FC names(gene_list) <- rownames(pancan_data) gene_list <- sort(gene_list, decreasing=TRUE) # 执行GSEA分析 gsea_res <- gseGO(geneList = gene_list, ont = "BP", OrgDb = org.Hs.eg.db, keyType = "SYMBOL", pvalueCutoff = 0.05)

这段代码的玄机在geneList参数的构造。注意这里用的是排序后的基因列表(我习惯用log2FC降序排列),这样GSEA算法才能正确计算富集得分。遇到过新手直接把差异基因扔进去跑,结果出不来富集通路的情况,多半是这个排序步骤被忽略了。

可视化部分推荐用阶梯图展示核心富集区域:

library(enrichplot) gseaplot2(gsea_res, geneSetID = "GO:0007049", title = "Cell Cycle Pathway", color = "#E64B35", base_size = 12)

这里geneSetID需要替换成自己关注的通路编号。有个小技巧:用color参数指定颜色时,建议避开默认的红色系,特别是在需要区分上下调通路时,用对比色更直观。

【代码分享]基因集单通路的泛癌GSEA富集分析#资料 如图

实际操作时发现不同癌症类型的数据结构差异较大,建议在循环分析前统一格式:

cancer_types <- unique(meta_data$cancer_type) for (ctype in cancer_types) { subtype_data <- filter(pancan_data, cancer_type == ctype) # 后续分析步骤... saveRDS(gsea_res, paste0("gsea_",ctype,".rds")) }

这个循环框架可以扩展到33种TCGA癌症类型。注意保存中间结果时建议用.rds格式,比.csv节省空间且保留数据结构完整。

遇到过最坑的报错是基因ID转换问题。当使用不同的注释数据库时,一定要确认keyType参数与实际数据匹配。比如从ENSEMBL转SYMBOL时经常会有版本号问题,这时需要:

library(AnnotationDbi) gene_symbol <- mapIds(org.Hs.eg.db, keys=rownames(expr_matrix), column="SYMBOL", keytype="ENSEMBL")

这种ID映射的细节处理直接影响分析结果的可靠性,建议每次转换后都做缺失值检查。

最后说下结果解读。GSEA的NES(标准化富集分数)绝对值大于1通常认为有生物学意义,但具体阈值需要结合样本量调整。个人经验是泛癌分析中NES>1.5的通路更值得关注。附上一个结果速查表制作方法:

signif_res <- gsea_res[gsea_res$qvalues < 0.1 & abs(gsea_res$NES) >1.5,] DT::datatable(signif_res[,c("ID","Description","NES","qvalue")], options=list(pageLength=10))

用交互式表格呈现结果,点击表头还能按列排序,比静态表格方便得多。这套流程跑完,基本就能快速锁定目标通路在不同癌种中的激活模式了。完整代码和测试数据已上传到github(见评论区),遇到报错欢迎带图踢我。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 19:14:56

OpenClaw多模型切换:Qwen3.5-9B与本地LLM混合调用

OpenClaw多模型切换&#xff1a;Qwen3.5-9B与本地LLM混合调用 1. 为什么需要多模型混合调用 去年我在尝试用OpenClaw自动化处理日常工作报告时&#xff0c;发现一个尴尬的现象&#xff1a;简单的文件整理任务会不必要地消耗Qwen3.5-9B的高额token&#xff0c;而遇到需要深度分…

作者头像 李华
网站建设 2026/5/23 1:53:15

Ubuntu 20.04下Mathematica 12.3安装全攻略(附Jupyter集成技巧)

Ubuntu 20.04下Mathematica 12.3安装与Jupyter集成实战指南 在科研计算与符号数学领域&#xff0c;Mathematica始终保持着不可替代的地位。对于Ubuntu用户而言&#xff0c;安装特定历史版本&#xff08;如12.3&#xff09;往往比最新版本更具挑战性——官方默认提供最新版下载&…

作者头像 李华
网站建设 2026/5/23 1:53:06

基于Quansar的双自由度直升机离散时间控制器的设计与仿真分析

基于Quansar的双自由度直升机离散时间控制器 简介&#xff1a;基于Quansar的双自由度直升机&#xff0c;它有两个直流电机驱动器&#xff0c;俯仰角0和偏航角中 离散时间控制器是为这两个螺旋桨使用根轨迹法设计的 分别使用Matlab对所设计的两个控制器进行仿真&#xff0c;分析…

作者头像 李华
网站建设 2026/5/23 1:53:07

一键回滚方案:OpenClaw与Qwen3.5-9B的版本管理与降级

一键回滚方案&#xff1a;OpenClaw与Qwen3.5-9B的版本管理与降级 1. 为什么需要版本回滚机制&#xff1f; 上周三凌晨3点&#xff0c;我的OpenClaw自动化流程突然崩溃了。原本定时运行的周报生成任务连续失败&#xff0c;系统日志里堆满了模型调用超时的错误。经过排查&#…

作者头像 李华