1. 课程概述:空间转录组技术简介、批次效应来源、为什么需要消除批次效应

各位同学,欢迎来到这门实战课。我是你们的老朋友,一个在空间组学数据里泡了好几年的工程师。今天咱们先聊聊最基础的东西——你到底在跟什么样的数据打交道,那些让人头疼的批次效应从哪冒出来的,以及为什么非得花30章去折腾它。

1.1 空间转录组到底是个啥

说白了,空间转录组就是把组织切片上的每个“小点”(我们叫它 spot)的基因表达量测出来,同时还能知道这个点原来在组织哪个位置。你想想看,传统转录组(bulk RNA-seq)是把整个组织搅碎测个平均值,单细胞RNA-seq是知道每个细胞表达什么但不知道它待在哪儿。而空间转录组,既有位置信息又有表达信息,像一张基因表达的“地标图”。

我记得2018年第一次看到10x Visium的demo数据时,心里那个激动啊——每个spot直径55微米,覆盖大概1~10个细胞,还能拼回组织形态。后来陆续接触了其他技术,我整理了一张常用技术的对比表,帮你快速建立印象:

技术平台 分辨率 检测原理 通量(基因数)
10x Visium ~55 μm spot poly-dT + 空间条形码 ~20000
Slide-seq/V2 10 μm (bead) 随机条形码 + 原位合成 ~15000
MERFISH ~100 nm (单分子) 单分子荧光原位杂交 ~100~100001
Stereo-seq ~0.5~2 μm DNA纳米球 + 空间条形码 ~20000

1 MERFISH基因数取决于panel设计,这里取常见范围。

为什么列这个表?因为不同技术产生batch效应的表现形式完全不一样。Visium的批次主要来自芯片和反转录效率,Slide-seq的批次来自每张芯片上beads的覆盖均一性……后面章节你会一一领教。

💡 避坑指南
我曾经拿到一批用不同试剂盒批次做的Visium切片,只看表达量聚类完全看不出问题。但在UMAP上,不同芯片的spot各自抱团——这就是批次效应的“标准长相”。别慌,后面会教你怎么检测和修正。

1.2 批次效应从哪儿冒出来的

“批次”这个词听起来抽象,其实说穿了就是:不是你想要的生物学差异,而是实验操作/仪器/试剂带来的系统偏差。我总结了一下,空间转录组里批次效应的“元凶”主要有这几个:

  • 芯片/捕获介质差异:不同批次的Visium芯片,spot捕获效率可能有5~15%的波动。Slide-seq每张芯片的bead覆盖密度也不同。
  • 反转录与扩增效率:不同操作者、不同试剂品牌、甚至同试剂盒不同批次,反转录效率会变。这个偏差会直接叠加到每个基因的UMI计数上。
  • 测序深度:有的样本跑了5万reads/spot,有的只跑了2万——不校正的话,低深度样本的基因表达就会被“压扁”。
  • 组织处理差异:组织固定、包埋、切片厚度、石蜡去除步骤……每个环节都可能引入批次漂移。我遇到过从医院拿来的FFPE样本,因为固定时间差了两周,同一位置spot的基因检出率差了30%。
  • 多中心/多仪器:不同实验室的测序仪(NovaSeq vs. NextSeq)会有系统误差;不同分析人员的操作习惯也能造成隐性批次。

你可能会问:“这些东西在单细胞转录组里不也有吗?”没错,但空间转录组多了一个空间结构的约束——你去掉批次效应时不能把组织里真实的空间梯度也抹平了。这个挑战,后面实战章节会重点讲。

⚠️ 曾经踩过的坑
我曾经尝试用单细胞批次校正的常用方法(比如mnnCorrect)直接套到空间数据上。结果组织边缘的spot表达量被过度平滑,原本清晰的层状结构糊成一片。所以千万别无脑复用单细胞流程。

1.3 为什么非消除不可?

嗯,这个问题其实不需要太多理论,咱们直接看后果。假设你有两个芯片的乳腺癌样本,一个来自A医院,一个来自B医院。如果不消除批次效应:

  • 聚类会把批次标签当成“主要差异”——你得到的最明显分组不是“肿瘤vs正常”,而是“医院A vs 医院B”。
  • 差异表达基因全是假阳性——那些高差异的基因很可能只是反转录效率的噪声,不是真正的生物标志物。
  • 空间域(spatial domain)识别会失败——算法会把一块组织里不同批次的区域识别成“不同亚型”,但实际它们可能同一类细胞类型。

我参与过一个跨中心合作项目,四个团队分别用自己实验室的Visium平台分析同一套组织切片(分切后各测各的)。没校正前,用stLearn做空间聚类,四个批次各成一团——完全看不到预期的肿瘤边界。做到后面我们都想放弃了。后来花了两周设计了一套分层批次校正流程(后面章节会详细展开),才把真实的免疫浸润模式还原出来。不信你看下面这个流程图,就是当时我们梳理出来的核心逻辑:

空间转录组批次效应消除核心逻辑 多批次空间转录组数据 批次效应检测 选择校正策略 逐基因回归 低维嵌入对齐 空间感知校正 校正效果验证 ⚠ 批次效应不消除 → 聚类/差异分析/空间域识别全部失真;本课程覆盖图中三种主流校正策略的实现细节

你看,这个逻辑链很清晰:先检测、再选择对应策略、然后用空间感知的方法校正、最后必须验证。这里“空间感知校正”是最特殊的一步——它利用了spot的位置信息来区分批次噪声和真实空间梯度。我后面会用整整10章来讲这块。

📌 一句话总结本章
空间转录组给每个spot同时提供了表达和位置信息,但多源批次效应会严重污染这两个维度。忽略它,你得到的结果几乎不可信;正确处理它,你才能看到真实的生物学图景。

1.4 数据准备:看一眼你的批次信息

在进入正式校正之前,咱们最好先确认一下数据里有没有批次标签。下面是一个简单的Python片段,帮你快速检查:

import scanpy as sc
import pandas as pd

adata = sc.read_visium("你的数据路径")
# 假设metadata中有一列叫'batch'
print("批次标签唯一值:", adata.obs['batch'].unique())
print("每批次spot数量:")
print(adata.obs['batch'].value_counts())

# 用UMAP快速看看是否按批次聚集
sc.pp.pca(adata)
sc.pp.neighbors(adata)
sc.tl.umap(adata)
sc.pl.umap(adata, color='batch', title='批次效应快速检查')

如果你在UMAP图上看到不同颜色的点各自抱团,而且明显分离,那恭喜你——你遇到了批次效应,后面的章节正好有用。如果混得很好,也别高兴太早,可能只是没触发强烈的批次条件,或者数据量太小。实战中我建议即使看起来没分离,也做一轮轻度校正保底。

⚠️ 特别注意
不要在还没搞清批次来源时就盲目套用复杂校正方法。我曾经见过一个团队对所有数据直接用了Harmony,结果把真实的脑区层状结构都抹平了。先做EDA(探索性数据分析)永远是第一步。