课程介绍: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空间里「互相靠近」。
它的计算流程非常简单:
- 用PCA降维后的矩阵作为输入
- 软聚类:把细胞分配到k个聚类中心(这里k默认是样本数的两倍)
- 计算每个聚类中心的批次比例,得到混合度
- 用混合度作为权重,调整每个细胞的坐标
- 重复迭代直到收敛
你看,它不碰原始表达矩阵,只在低维空间做「推拉」。所以速度极快,内存开销小。我在一个包含120,000个细胞、8个批次的数据集上跑过,默认参数下5分钟收敛,UMAP上批次标签分布均匀,而生物学亚群仍然清晰可辨。
常见应用场景一览
下面这个表格列出了我遇到过的真实场景,以及推荐的工具组合:
| 场景 | 推荐方式 | 理由 |
|---|---|---|
| 单个样本,无需整合 | 仅Seurat标准流程 | Harmony用不上 |
| 2~4批次,同一平台 | Seurat整合 + Harmony可选 | Seurat整合结果可接受,Harmony作为备用 |
| 5+批次,同一平台 | Harmony作为首选 | 速度快,鲁棒性好 |
| 不同测序平台(10X、Smart-seq2、Drop-seq) | Harmony + Seurat | 平台差异大,Harmony能更灵活校正 |
| 多物种/多组织整合 | Harmony + 进一步聚类验证 | 生物差异大,不要过度校正 |
| 时间序列/发育轨迹 | Harmony + Monocle/Slingshot | 保留连续变化,不适合强制对齐 |
一张图看懂全局
下面这张SVG结构图,把Seurat、Harmony以及它们在整个单细胞分析流程中的位置串起来了。你可以把它当作这门课的「地图」,每次学到新参数时回头看看它在哪个环节。
从图上你能看到:数据先进Seurat做质控标准化,然后跑PCA。PCA之后,如果你有多个批次需要整合,你可以在Seurat的整合和Harmony之间二选一。我个人的建议是:先试Harmony,如果效果不好再退回去用Seurat的CCA整合。绝大多数情况下Harmony已经够用了。
为什么这门课叫「参数调优」?
很多教程只会教你运行一行代码:
RunHarmony(object, group.by.vars = "batch")
但跑完就完了吗?调过参数的人都知道,默认的lambda、theta、sigma不一定适合你的数据。比如肿瘤样本往往heterogeneity高,lambda(正则化强度)设得太大会把肿瘤亚群也抹平。又比如你只有两个批次,却用了默认的nclusters = 20,计算量浪费不说,还可能过校正。
我会在后面的章节里,一个一个参数讲清它的物理意义、默认值、调优范围,以及我怎么在实际项目中确定最终值。你不需要成为一个数学家,只要理解了背后的直觉,就能掌握调参的技巧。
你将从这门课学到什么?
用一句话概括:拿到任何单细胞整合项目,你都能准确判断该调哪个参数、调到什么数值,以及如何快速验证结果是否合理。
具体来说,课程覆盖以下核心能力:
- 理解Seurat的整合方法(CCA、RPCA、Harmony的对比)
- 掌握Harmony的每个参数(lambda、theta、sigma、nclusters、max_iter等)
- 学会调试流程:如何用诊断图、批混分布、生物学标记验证校正效果
- 实战案例:免疫细胞、肿瘤、发育时间序列等经典数据集的手把手演示