4. 实验设计:批次效应的来源与影响因素

当你同时处理十几个 Visium 切片时,你很快会发现一个让人头疼的问题——明明是同一种组织、同一个处理方案,不同批次之间数据就是无法完美对齐。我刚开始带项目时也被这个困扰过,一度以为是算法不行,后来才搞清楚:批次效应是个设计问题,不是算法短板。

说白了,批次效应就是那些跟生物学变量无关、但由实验流程差异引入的系统性偏差。我们这节课就把它拆开来看——哪些环节在制造偏差,怎么在实验设计阶段就把它削弱掉。

4.1 什么是批次效应?

批次效应(Batch Effect)是指由于样品并非在完全相同的时间、环境、操作下处理而产生的技术变异。它不是你想要的生物学差异,而是干扰信号。举个例子,我把同样的小鼠肝组织分别在周一和周四上机,最终的基因表达矩阵就可能出现一群“周一肝”和一群“周四肝”的聚类——这不是生物学真相,只是实验节奏的反射。

我的经验:在早期一个8样本预实验里,我用UMAP看结果,居然能看到两个明显的簇。排查了一圈才发现,前4个样本用的是旧批次的扩增试剂,后4个换了新批号。那次之后,我习惯在每次实验记录里写清楚每张切片的试剂批号。

4.2 批次效应的典型来源

Visium 全流程长,批次效应可以藏进任何一个环节。我把它总结成下面几个来源,你对照着自己的实验流程看一看,有没有踩过类似的坑。

  • 切片与冻存步骤:组织块切割时间不同、OCT 包埋批次差异、冷冻速度不一致。我曾经见过同一组织块的后半部分因为反复冻融,基因降解明显,和自己前半部分的数据撞不上。
  • 透化条件:Visium 最关键的步骤之一。不同操作者配制的透化酶、孵育时间、温度,哪怕差2分钟,释放的 mRNA 量就会有差异。我一般在透化前会做一个小摸索,固定一个基准条件,全实验统一。
  • 反转录与扩增:反转录酶的批号、PCR 循环数、荧光标记批次——这些都是经典来源。你查查市面上 mRNASeq 的批次效应综述,基本上都会提到扩增步骤。
  • 捕获芯片批次:10x Genomics 的 Visium 芯片每一批的 spot 密度、捕获效率可能有 ≤5% 的波动。虽然官方会做标化,但我建议不同芯片批次尽量不混合在同一个分析中。
  • 测序批次:不同测序仪(even NovaSeq vs. HiSeq)、不同流动槽、不同试剂盒。这些偏差在 UMI 计数上表现得很明显。
  • 操作人员:人是最不稳定的变量。同样的 SOP,两人做出来数据轮廓都可能不一样。我在跨中心项目里会要求所有操作者先做两次练习切片,一致性过关再进入正式实验。

4.3 哪些因素最容易被忽视?

你想想看,上边列出的六类里,大家最常忽略的是什么?我个人认为是透化条件的“小波动”和样本到芯片的放置时间。

曾经有个项目:我们按组织批处理做,但在后期发现同一患者的两块组织(分别放在两张芯片上)数据完全无法 merge。查实验记录才找到——其中一张芯片的切片放置了 40 分钟才贴片,另一张只放了 5 分钟。这 35 分钟的空置导致了显著的 RNA 降解偏差。从那以后,我严格规定每张切片从切下到贴片的时间间隔不超过 10 分钟。

另外,芯片存储条件也容易出错。10x 的 Visium 芯片有有效期和存储湿度要求,如果有过期芯片或存储不当,捕获效率会直线下降,而这个效应在单张芯片上很难察觉,只有合并对比时才暴露。

4.4 如何量化批次效应?

光靠目测不够,我们需要一个量化指标。我习惯用两种方式:

  1. 主层次聚类 + 批次标签着色:跑 PCA 或 UMAP,用样品批次信息给点着色。如果相同批次的点明显聚成一团,就说明有批次效应。
  2. 批次的方差贡献比例:可以使用 R 包 sva 中的 ComBat 函数计算批次在基因表达方差中的占比,或者用 variancePartition 包做线性混合模型。

下面是我跑的一个快速检查脚本,适用于 Seurat 对象:

# 假设你的 Seurat 对象有 meta.data$Batch 列
# 使用 Harmony 内置的 RunHarmony 前,可先看原始 PCA 的 batch 分布
pca <- RunPCA(seurat_obj, npcs = 30)
DimPlot(pca, group.by = "Batch") + ggtitle("PCA by Batch (raw)")

如果看到明显的 batch cluster,那就需要在后续处理里做校正。但别忘了——预防永远比校正容易。

4.5 实验设计中的预防策略

既然知道了来源,就该在实验计划里把这些坑填平。下面是几个我验证过的有效策略:

策略 做法 适用场景
完全随机化 把所有样品按随机顺序分配到批次中,不按组别打包 小规模实验(样本 < 20)
交叉区组设计 每个批次都包含所有处理组的样品,形成 bloque 中等规模,有清晰处理组别
固定操作 SOP + 批号记录 记录每个样品的试剂批号、操作人员、时间、仪器 ID 所有实验
预实验校准 在正式实验前用2个样本跑一次全流程,检查批次间一致性 新实验室或新操作者加入时
使用批内对照 在每个芯片上放入一个相同来源的对照组织切片 跨周、跨月的长期项目
避坑指南:千万别把所有对照组放在第一周、所有处理组放在第二周。这样你就无法区分是处理效应还是时间效应。我曾经接手过一个这样的数据,花了大量时间做 batch correction,最后因为混杂太严重只能放弃一部分样本。

4.6 批次效应来源全景图

下面这张图帮你梳理从组织切片到测序数据整个流程中,批次效应的来源以及它们如何汇聚为最终的数据偏差。注意看,透化和扩增是偏差密度最高的两个节点。

批次效应来源全景图(Visium 多批次实验) 组织切片与冻存 透化条件 反转录 & 扩增 捕获芯片批次 测序批次 操作人员 批次效应 → 数据偏差 预防策略: 随机化 / 区组设计 批号记录 / 批内对照

从图中你能直观看到:从切片到测序,所有节点都能注入偏差,最终汇聚到分析结果中。预防的关键就是在每个节点上严格控制——说到底,实验设计决定了你后续能走多远。