课程介绍:Seurat与Harmony简介及应用场景归纳总结

欢迎来到这门课。我先说说为什么要把Seurat和Harmony放一起讲。

做单细胞数据分析的同行应该都有体会:拿到一个10X或Smart-seq2的数据集,跑个标准流程能出图,但一碰上多批次、多物种、多组织的整合项目,立马就头疼。聚类分不清是生物差异还是批次效应,UMAP上同一个细胞群分成两坨,你说这是真的亚群还是技术噪音?

我在三年前接手过一个肿瘤免疫项目,三个中心送了六批样本,用常规Seurat整合之后,患者来源的T细胞按批次聚成了六个小岛。那时候我还没用Harmony,花了整整两周调Seurat的FindIntegrationAnchors参数,效果还是不理想。后来换成Harmony做校正,十分钟就跑完,UMAP上批次混得干干净净。从那以后,「Seurat做主体分析,Harmony做批次校正」就成了我的固定套路。

这门课就是要把这个套路拆开了揉碎了讲,包括每个参数到底在干什么、什么时候该调、调成多少合适。别担心,我会把踩过的坑都告诉你。

Seurat是什么?能解决什么问题?

Seurat是R语言里最主流的单细胞分析包。它把原始counts矩阵变成降维聚类后的可视化结果,整个流程可以概括为:

  • 质控与标准化 – 过滤doublets、低质量细胞
  • 高变基因选择 – 挑出最有信息量的基因
  • 降维 – PCA、UMAP、t-SNE
  • 聚类 – 基于图的Louvain算法
  • 差异表达与注释 – 找marker基因、推断细胞类型

但Seurat自己带的整合功能(FindIntegrationAnchors + IntegrateData)在某些场景下太「重」了。它会强迫所有数据对齐到一个共同的低维空间,计算量大,而且容易过拟合。说白了,如果你的批次数量不多(比如2~4批),样本间差异不大,用Seurat整合是ok的。一旦批次超过五六个、或者来自不同测序平台,它就容易翻车。

我记得有一次用Seurat整合16个骨髓样本,跑了12个小时还崩了内存。后来换成Harmony,15分钟搞定。

Harmony到底强在哪?

Harmony是一个轻量级的批次校正工具,可以嵌入到Seurat的流程里。它的核心思想是:不做全局对齐,而是迭代调整每个细胞的低维嵌入坐标,让来自不同批次的同类细胞在PCA空间里「互相靠近」。

它的计算流程非常简单:

  1. 用PCA降维后的矩阵作为输入
  2. 软聚类:把细胞分配到k个聚类中心(这里k默认是样本数的两倍)
  3. 计算每个聚类中心的批次比例,得到混合度
  4. 用混合度作为权重,调整每个细胞的坐标
  5. 重复迭代直到收敛

你看,它不碰原始表达矩阵,只在低维空间做「推拉」。所以速度极快,内存开销小。我在一个包含120,000个细胞、8个批次的数据集上跑过,默认参数下5分钟收敛,UMAP上批次标签分布均匀,而生物学亚群仍然清晰可辨。

一句话总结:Seurat负责分析流程,Harmony负责消除批次噪音。两者配合,1+1 > 2。

常见应用场景一览

下面这个表格列出了我遇到过的真实场景,以及推荐的工具组合:

场景推荐方式理由
单个样本,无需整合仅Seurat标准流程Harmony用不上
2~4批次,同一平台Seurat整合 + Harmony可选Seurat整合结果可接受,Harmony作为备用
5+批次,同一平台Harmony作为首选速度快,鲁棒性好
不同测序平台(10X、Smart-seq2、Drop-seq)Harmony + Seurat平台差异大,Harmony能更灵活校正
多物种/多组织整合Harmony + 进一步聚类验证生物差异大,不要过度校正
时间序列/发育轨迹Harmony + Monocle/Slingshot保留连续变化,不适合强制对齐
一个小技巧:不管用哪种整合方法,我都建议先跑一遍Seurat标准流程出初版聚类,再看UMAP上批次有没有聚集现象。确认有批次效应时再上Harmony。没必要每把菜都拿大刀宰。

一张图看懂全局

下面这张SVG结构图,把Seurat、Harmony以及它们在整个单细胞分析流程中的位置串起来了。你可以把它当作这门课的「地图」,每次学到新参数时回头看看它在哪个环节。

Seurat + Harmony 单细胞分析流程 原始表达矩阵 (counts) Seurat 质控 & 标准化 PCA 降维 Seurat 整合(ANOVA / CCA) Harmony 批次校正 聚类 / UMAP / 差异表达 本课程核心:调整Seurat和Harmony的参数 以获得最佳整合与聚类效果 常见坑:过校正 vs 欠校正 后面会教你怎么判断

从图上你能看到:数据先进Seurat做质控标准化,然后跑PCA。PCA之后,如果你有多个批次需要整合,你可以在Seurat的整合和Harmony之间二选一。我个人的建议是:先试Harmony,如果效果不好再退回去用Seurat的CCA整合。绝大多数情况下Harmony已经够用了。

为什么这门课叫「参数调优」?

很多教程只会教你运行一行代码:

RunHarmony(object, group.by.vars = "batch")

但跑完就完了吗?调过参数的人都知道,默认的lambda、theta、sigma不一定适合你的数据。比如肿瘤样本往往heterogeneity高,lambda(正则化强度)设得太大会把肿瘤亚群也抹平。又比如你只有两个批次,却用了默认的nclusters = 20,计算量浪费不说,还可能过校正。

我会在后面的章节里,一个一个参数讲清它的物理意义、默认值、调优范围,以及我怎么在实际项目中确定最终值。你不需要成为一个数学家,只要理解了背后的直觉,就能掌握调参的技巧。

避坑提示:我曾经因为lambda设得太小而放过了一批明显的批次效应,又因为lambda设得太大而把一个稀有亚群直接抹掉。调参数一定要结合生物学验证——如果你的CD8+T细胞突然消失了,那就是调过头了。

你将从这门课学到什么?

用一句话概括:拿到任何单细胞整合项目,你都能准确判断该调哪个参数、调到什么数值,以及如何快速验证结果是否合理。

具体来说,课程覆盖以下核心能力:

  • 理解Seurat的整合方法(CCA、RPCA、Harmony的对比)
  • 掌握Harmony的每个参数(lambda、theta、sigma、nclusters、max_iter等)
  • 学会调试流程:如何用诊断图、批混分布、生物学标记验证校正效果
  • 实战案例:免疫细胞、肿瘤、发育时间序列等经典数据集的手把手演示