1. 批次效应概述

大家好,我是你们这门课的主讲。咱们开门见山——批次效应(Batch Effect)是单细胞数据分析里最让人头疼的问题之一。说白了,它就是数据里混入的“系统误差”,跟生物学差异无关,纯粹是实验操作带来的噪音。

我刚开始接触单细胞数据时,就被它坑过一次。那时候拿到两个不同时间测的样本,聚类一看,哇,分得清清楚楚。当时还挺高兴,觉得找到了新细胞类群。后来一查记录,好家伙,原来是不同批次的试剂盒造成的差异。你想想看,要是直接拿这种数据去分析,结论能有几分可信?

批次效应产生的原因

为什么会这样?原因其实很“接地气”,大多来自实验室的日常操作细节。我把它分成几类:

  • 实验操作差异:不同人做细胞分离、建库,手法总有区别。就算同一个人,今天和明天的手感也可能不同。
  • 试剂批次不同:这是最常见的“元凶”。不同批号的试剂盒、抗体、酶,活性有细微差别。我在项目中遇到过,仅仅换了一批反转录酶,UMI 计数就整体偏高了 20%。
  • 仪器与耗材:不同测序仪、芯片批次、甚至是离心机的转速校准,都会引入偏差。千万别小看这些硬件因素。
  • 时间跨度:样本采集时间相隔几周甚至几个月,实验室环境(温度、湿度)也在变,数据自然会“长成”不同的样子。
  • 文库复杂度差异:不同的上机方案、PCR 循环数,直接导致每个细胞测到的基因数和 UMI 数明显不同。
个人小贴士: 我习惯在做任何校正之前,先看一眼实验记录。确认一下哪些样本是同一批测的,哪些是分开的。这一步能省去后面好多猜谜的时间。

批次效应的表现形式

它长什么样?最容易察觉的是数据可视化上的“假象”。最常见的三种表现:

  • t-SNE/UMAP上的“假分组”:不同批次的细胞,在降维图上各自抱团,形成明显分离的簇。但这些簇其实不该分开。
  • 基因表达量系统性偏移:同一个细胞类型,在批次 A 里某个基因表达很高,在批次 B 里却很低。这不是生物学原因,纯粹是批次效应。
  • 聚类结果的“假性发现”:你可能发现两个看起来全新的细胞亚群,结果一查,它们分别来自两个不同的批次。这就尴尬了。
记住一句话:生物学差异让你看到“真相”,批次效应让你看到“假象”。
效应类型典型表现如何判断
位置偏移不同批次在高维空间中完全分离UMAP/t-SNE颜色按批次分布
尺度偏移整体表达值成比例变化箱线图中位数明显不同
随机噪音低表达基因的波动增大高变基因列表中混乱

如何用代码“嗅”出批次效应?

光靠眼睛看不够靠谱。我习惯在预处理阶段就用代码定量检查。给你一个最简单的检查方法——用 R 的 Seurat 包画一张箱线图:

# 假设你已经有了 Seurat 对象
# 按批次查看 UMI 计数分布
p1 <- VlnPlot(seurat_obj, features = "nCount_RNA", 
              group.by = "batch") + NoLegend()

# 查看基因数分布
p2 <- VlnPlot(seurat_obj, features = "nFeature_RNA", 
              group.by = "batch") + NoLegend()

print(p1 / p2)

运行一下这个片段。如果不同批次的中位数有明显差距(比如差了 30% 以上),那批次效应就很明显了。嗯,这里要注意:箱线图看出大问题,不代表没有小问题。更严谨的做法是后续用主成分分析(PCA)看批次是否有明显分区。

对下游分析的影响

如果忽视批次效应直接往下走,后果挺严重的。我给你列几个:

  • 差异表达分析彻底跑偏:你找到的差异基因,可能大部分是批次间的技术噪音,而非真实的生物学信号。
  • 细胞注释张冠李戴:不同批次的相同细胞类型,因为表达值不同,被错误标注成不同亚群。
  • 伪时间分析崩塌:分化轨迹被批次效应打乱,你会看到多条从不同起点开始的“假轨迹”。
  • 整合数据集失败:跨研究、跨平台的数据强行合并,结果就像把橘子和苹果混在一起,谁也分不清谁。
我曾经踩过的坑: 几年前我做一个肿瘤免疫项目,没做批次校正就直接跑了差异分析。结果发现“新”的肿瘤浸润 T 细胞亚群,其实是两个不同批次的正常 T 细胞。那篇稿子被审稿人直接打回来,痛苦了一个月才改明白。

批次效应的知识体系

下面这张 SVG 图,把这些关系串起来了。从产生原因开始,到表现形式,再到对下游分析的影响,逻辑是单向递进的。

批次效应知识体系图 产生原因 实验操作 · 试剂批次 · 仪器 · 时间 表现形式 降维假分组 · 表达偏移 · 聚类假阳 下游影响 差异分析 · 注释 · 伪时间 检测方式 箱线图 · PCA · 可视化检查 校正策略 CCA · MNN · Harmony · scVI 核心思路 先检测(箱线图/PCA)→ 判断严重程度 → 选择合适方法 → 验证校正效果 最终目标:保留生物学变异,消除技术性噪音

校正的核心逻辑

我们这门课要讲的是 CCA(典型相关分析)和 MNN(互近邻)两种主流方法。它们的核心逻辑很相似:找到批次之间“共享”的生物学信息,然后用它来对齐数据。你可以想象成用一座“桥”把两个批次连接起来,这座桥就是那些在两种条件下都保持稳定的细胞对或基因关系。

避坑指南: 我曾经在矫正力度上翻过车。力度太轻,批次效应还在;力度太重,真实的细胞异质性也被抹平了。判断标准是什么?校正之后,相同细胞类型应该跨越批次混在一起,但不同细胞类型仍然分开。这就需要你对生物学背景有一些判断力。

最后提醒一句:批次校正不是万能药。如果两个批次的细胞组成差异过大(比如一个全是 T 细胞,另一个全是 B 细胞),再好的算法也救不回来。究其根本,实验设计阶段就该尽量保持批次间的一致性。