引言Introduction

在生信分析里,很多人卡在两件事。第一,GSEA结果看得懂,但复现不稳定。第二,聚类图能画出来,却不知道如何把分析流程串起来。如果你希望用更少代码复现一套可追溯、可视化完整的生信流程,这篇文章会直接帮你理清思路。
RStudio项目文件、GSEA富集曲线、聚类热图三联图,突出“复现流程”和“可视化结果”

1. 为什么“无代码复现”在GSEA和聚类分析里很重要

1.1 复现的核心,不是少写代码,而是少出错

在真实项目里,分析失败常常不是算法问题,而是流程问题。比如输入文件格式不统一,基因ID类型选错,排序规则不一致,都会让结果偏离预期。GSEA对排序向量非常敏感,基因集注释文件也必须与ID类型匹配。

这也是为什么无代码复现思路很有价值。它把关键步骤提前封装好。研究者只需要按顺序读取数据、运行脚本、查看结果,就能减少重复劳动。对于医学生、医生和科研人员来说,这种方式更适合在有限时间内完成稳定分析。

1.2 聚类分析和GSEA,其实可以放在同一条证据链里

GSEA回答的是“哪些通路被整体富集”。聚类分析回答的是“样本或特征是否自然分组”。两者不是孤立的。前者提供机制层面的解释,后者提供结构层面的证据。

在转录组项目中,常见做法是先用差异表达筛选候选基因,再做GSEA看通路方向,最后用聚类或热图展示样本分层和基因表达模式。这样组织出来的结果,逻辑更完整,也更适合论文和汇报。

2. clusterProfiler中的GSEA流程,如何做到可复现

2.1 输入文件准备是第一步,也是最关键的一步

在实操中,示例代码通常会先准备一个压缩包,解压后包含 datafiguresmsigdb_v7.0_GMTs 等文件夹。这里的设计很清晰。data 放输入和结果,figures 放图形,msigdb_v7.0_GMTs 放注释文件。

其中,GSEA_input.txt 是最核心的输入。它会用于 gseGOgseKEGGGSEA 三类分析。如果输入文件中基因名格式和gmt文件不一致,分析结果就会失真。 例如基因名是 Entrez Gene ID,就应选文件名包含 entrez 的gmt;如果是 Gene Symbol,就选 symbols 文件。

2.2 排序向量决定GSEA结果方向

GSEA不是简单的富集统计。它先把基因按照某个连续指标排序,再检查某个基因集是否集中出现在排序顶端或底端。实操中常见做法是按 logFC 排序。

通常步骤是:

  1. 提取 logFCgeneList
  2. 用基因名重命名 geneList
  3. 按降序排序。

这一步决定了后面富集曲线的方向。 如果排序错误,富集峰值和负向富集都会失去解释意义。对于做论文图的用户来说,这一步尤其不能省略。

2.3 三类GSEA分析,各有适用场景

clusterProfiler 中,常见的三个函数分别是:

  • gseGO,用于GO层面的富集。
  • gseKEGG,用于KEGG通路层面的富集。
  • GSEA,配合msigdb注释文件做自定义基因集分析。

课程示例中,gseGO 选择的是 org.Hs.eg.db,并指定 CC 细胞组分;gseKEGG 选择人类 hsaGSEA 则读取 msigdb.v7.0.entrez.gmt 后进行分析。这三类分析的共同点,是都依赖同一份排序后的基因列表。

实际操作里,结果会分别写出到文本文件,并且保存为 .Rda 二进制格式。这样做的好处是,后续画图时不需要重新跑分析,能显著提高复现效率。

3. GSEA结果可视化,如何让结论更容易被审稿人接受

3.1 结果图不是越多越好,而是要选对图

GSEA结果可视化常用图形包括 dotplot、cnetplot、heatplot、emapplot、upsetplot、gseaplot、gseaplot2、gsearank 和 ridgeplot。不同图形对应不同问题,不能把它们当成装饰图。

例如:

  • dotplot,适合看富集条目和显著性。
  • cnetplot,适合看基因和通路的连接关系。
  • heatplot,适合展示多个富集基因的表达模式。
  • gseaplot,最适合展示单个基因集的富集曲线。
  • gseaplot2,适合同时看多个基因集。
  • ridgeplot,适合快速比较多个富集条目的分布趋势。

对写文章的人来说,最重要的是让图服务于结论,而不是让图堆砌信息。

3.2 gseaplot系列图,最适合讲清“富集发生在哪里”

gseaplot 的上半部分是排序后的基因列表,下半部分是富集分数变化曲线。黑线表示基因在排序中的位置,红色虚线对应富集分数极值。 这个图最适合解释“某个通路是在排序前端富集,还是在后端富集”。

gseaplot2 可以在一张图里展示多个基因集,适合比较不同通路的变化趋势。若研究中想强调某些免疫通路、代谢通路或细胞周期通路的共同趋势,这类图非常实用。对于医学生和科研人员来说,这类图能把复杂结果压缩成一张可读性很高的证据图。

3.3 山脊图和热图,适合补充整体模式

ridgeplot 更偏向整体比较。它展示的是不同基因集的分布形态和富集趋势。颜色通常可反映 p 值大小,峰形则反映富集变化。 这类图在结果概览时很有价值。

而 heatplot 更适合补充“哪些基因在驱动这个通路”。如果是做机制讨论,热图能帮助你把富集结果和具体基因对应起来。相比只看P值,审稿人通常更愿意看到这种“通路+基因”的双层证据。

4. 聚类分析如何和GSEA结果联动,形成完整流程

4.1 聚类不是单独作图,而是用来验证分组和表达模式

在这套流程里,GSVA和聚类常常会被放在GSEA之后。GSVA先把基因集打分,得到新的表达矩阵,再用 limma 做差异分析,最后结合热图查看样本和基因集的分布模式。这一步的价值,是把“通路层面的富集”转化为“样本层面的聚类差异”。

课程中提到的 GSVA_heatmap.png,就是一个典型输出。它的作用不是单纯展示颜色,而是帮助判断样本是否按生物学分组聚在一起,差异通路是否在组间稳定变化。

4.2 结果文件和图形文件分离,便于回溯和协作

示例目录把结果、图像和代码分得很清楚。这种结构在团队协作中非常重要。data 里保存原始和中间结果,figures 里保存图,.Rproj 用来统一项目环境。这意味着每一步都可追踪,每一张图都能回到对应代码。

对于做课题的人来说,这种规范化管理可以减少“图对不上结果”的问题。尤其是在修改参数、替换样本、更新注释版本时,文件结构越清晰,复现越容易。

5. 适合医学生和科研人员的实操建议

5.1 先统一ID,再做排序,再做富集

很多分析报错,根源都在ID不统一。建议按这个顺序处理:

  1. 确认输入基因ID类型。
  2. 选择匹配的gmt文件。
  3. logFC 或其他连续指标排序。
  4. 先跑 gseGOgseKEGG
  5. 再跑 GSEA 做自定义基因集验证。
  6. 最后输出图形和结果表。

只要这条链条稳定,GSEA和聚类分析就能形成可复现的标准流程。

5.2 先保存结果,再做图,是更稳妥的做法

课程中把 gsekkgsegogsegmt 保存为二进制文件,这是很实用的设计。因为可视化时经常会反复调整参数,比如图例、标题、排序、配色。如果每次都重新跑分析,既浪费时间,也增加不一致风险。

因此,建议把分析和可视化分开。先固定结果,再生成图。这样更适合论文投稿前的多轮修改。

5.3 如果你想快速搭建规范流程,可以借助解螺旋

对于不想从零搭环境、又希望获得规范化GSEA与聚类分析流程的用户,解螺旋 可以作为一个更高效的起点。它能帮助你把分析步骤、结果输出和图形组织成更清晰的工作流,减少重复试错,把时间更多用在解释结果和设计课题上。

总结Conclusion

GSEA和聚类分析并不是两套割裂的流程。GSEA负责解释机制,聚类负责验证模式。 只要输入格式统一、排序规则明确、注释文件匹配,再配合规范的结果保存和可视化输出,就能形成一条完整、可复现、适合发表的生信分析链条。
如果你希望更快搭建这套流程,减少环境和脚本上的反复调试,可以进一步了解解螺旋 提供的生信工具与内容支持。

解螺旋科研助手企业微信二维码,扫码添加免费领取科研资料礼包,包含AI科研提效、SCI投稿技巧、国自然基金、医学科研绘图、科研软件工具等实用资料