2. Visium 技术原理与数据特点归纳总结
聊多批次质控之前,咱们得先把 Visium 这门手艺的底牌看明白。你想想看,一片组织切片,怎么能变成一张基因表达热图?背后靠的就是空间条形码(Spatial Barcoding)这套机制。我个人习惯把这套机制拆成三个层面来理解:物理捕获、化学解码、数据产出。下面咱们一个一个说。
2.1 核心技术原理:捕获与解码
Visium 的捕获区域是一个 6.5mm × 6.5mm 的方格,上面密密麻麻排着大约 5000 个捕获点(spots)。每个 spot 直径 55μm,中心间距 100μm。每个 spot 上预先固定了数百万条探针,这些探针都带有一段独一无二的空间条形码序列。
组织切片被贴在捕获区域后,经过透化处理,mRNA 从组织内释放出来,被下方对应位置的探针捕获。这一步决定了:“哪个基因是从哪个物理位置来的”。
关键物理参数速查:
- 捕获区域尺寸:6.5mm × 6.5mm
- 捕获点总数:约 5000 个(视芯片版本略有浮动)
- 单个点直径:55μm
- 点间距(中心到中心):100μm
- 每个点的探针分子数:数百万条
探针结构我画个图你更容易理解。每条探针从 5' 端到 3' 端,依次包含:
- Illumina P5 接头:用于文库扩增和测序结合
- 空间条形码:唯一标识该 spot 位置的 16bp 序列
- UMI(Unique Molecular Identifier):12bp 的随机序列,用来区分每一条原始 mRNA 分子
- Poly-dT 尾巴:30 个 T 碱基,用于捕获 mRNA 的 poly-A 尾
下面这张架构图总结了从组织到数据的核心流程:
2.2 数据特点总结
理解了原理,咱们再来看数据长什么样。Visium 产出的数据本质上是一个 稀疏矩阵,行是基因,列是 spot,每个元素代表某个基因在某个 spot 中被捕获到的 UMI 计数。
这里有几个关键特点你需要记住:
- 空间稀疏性:组织只覆盖部分 spots,背景 spots 计数为零。质控时背景和组织的区分是第一关。
- 文库复杂度较低:每个 spot 平均检测到几百到几千个基因,远低于单细胞数据。这是由每个 spot 内包含约 1-10 个细胞的物理限制决定的。
- 技术噪声来源多样:透化过度或不足、组织褶皱、气泡、边缘效应、批次间试剂批号差异,都会影响数据质量。
- 多批次整合需求强烈:单个样本只能覆盖 6.5mm × 6.5mm 区域,研究较大组织或多样本比较时,必须合并多个批次的数据。
一个实用的视角: 我个人习惯把 Visium 数据看作“低分辨率的原位 RNA-seq”。虽然每个 spot 包含多个细胞,但空间位置信息弥补了单细胞数据丢失的形态学背景。多批次质控的核心,就是保证不同批次之间的“空间背景”可比较。
2.3 数据矩阵结构
Space Ranger 输出的标准文件有三个,你最好对它们有直觉上的理解:
| 文件 | 格式 | 内容说明 |
|---|---|---|
filtered_feature_bc_matrix.h5 |
HDF5 | 过滤后的基因-spot 表达矩阵(已去除背景 spots) |
spatial/tissue_positions_list.csv |
CSV | 所有 spots 的空间坐标(px, py)和组织内/外标记 |
spatial/scalefactors_json.json |
JSON | 图像像素到 spot 坐标的缩放系数(用于下游可视化对齐) |
看看 tissue_positions_list.csv 的前几行长什么样:
barcode,in_tissue,array_row,array_col,pxl_row_in_fullres,pxl_col_in_fullres
AACAGGACGCTCCGAG-1,1,0,0,12134,14872
AACCCAAGTGGTGTAC-1,1,0,1,12134,15072
AACCCGAGTTTGCATG-1,1,0,2,12134,15272
...
TATATCCAGTCGCCAA-1,0,0,73,0,0
注意 in_tissue 这一列:1 表示该 spot 位于组织区域内,0 表示背景。质控的第一步就是基于这个标记来做数据筛选。
还有一个重要的 JSON 文件,记录 spot 直径、组织区域等缩放信息:
{
"spot_diameter_fullres": 100.888,
"tissue_hires_scalef": 0.0637,
"fiducial_diameter_fullres": 514.295,
"tissue_lowres_scalef": 0.0199
}
我曾经踩过一个坑: 多批次比较时,不同芯片的 spot 直径和缩放系数可能略有不同,尤其是在不同版本 Visium 芯片之间。直接拼合图像坐标而不做尺度归一化,会误导后续的空间对齐分析。建议在拼接前统一除以 spot_diameter_fullres,让坐标单位变为“spot 直径倍数”。
2.4 多批次数据怎么拼接?
好,现在假设你手上有 3 张不同小鼠脑片的 Visium 数据。它们各自的组织切片形态、捕获效率、芯片批次都不同。直接横向对比基因表达是危险的。
多批次质控的核心痛点是:
- 批次间绝对 UMI 计数不可比(总 UMI 差异可以很大)
- 批次间背景噪声分布不一致(透化时间、探针效率)
- 批次间的 spot 覆盖区域不完全重叠(不同切片位置不同)
处理这个问题的标准做法,是先将每个批次内部做好质控(我们后续章节会详细讲),然后使用基于 互邻近图(MNN) 或 Harmony 的方法做批次矫正。不过这些是后面几章的事,你现在只要记住:质控是分两层的——批次内质控 + 批次间可比性检查。
总 UMI 计数(nCount_UMI) 和 检测基因数(nFeature_RNA) 是每个 spot 最基本的两个质控指标。在单样本内部,我们通常用它们的分布来识别离群 spots;在多样本之间,我们则关注这两个指标的批次间分布是否一致——如果某批次的中位 UMI 明显偏低,说明那个批次的捕获效率可能有问题。
2.5 总结
Visium 数据的核心特征可以概括为三点:
- 物理约束下的稀疏计数——数据解构受限于 spot 直径和细胞密度
- 空间坐标与表达数据的强绑定——每个数据点都有一对空间坐标
- 批次效应的天然存在——技术变量远多于生物学变量,质控是整合的第一步
嗯,原理层面的内容到这里就铺垫完了。记住这些底层逻辑,后面讲质控指标和流程时,你就能理解每一个阈值背后的“为什么”了。