2. 空间转录组技术基础
说实话,光靠 H&E 染色看细胞形态,就像只看一个人的背影——你知道他大概多高、胖瘦,但不知道他在想什么。空间转录组技术补的就是这个缺口:它让每个细胞的位置和基因表达对得上号。这一讲咱们就把主流的几种技术掰开揉碎,讲清楚它们的原理和坑。
技术路线总览
目前市面上主流的技术大致分三类:基于原位捕获(10x Visium、Slide-seq)、基于原位杂交/测序(MERFISH、seqFISH+),以及基于激光显微切割(LCM-seq)。咱们做图像对齐最常打交道的是前两类,尤其是 10x Visium——我个人项目中超过一半的数据都来自它。
核心共识:所有空间转录组技术的目标都一样——给每个细胞或每个组织 spot 打上“坐标 + 基因表达”的标签。区别只在于分辨率和通量。
10x Visium 的原理与实战细节
10x Visium 的前身叫 Spatial Transcriptomics,2016 年发在 Science 上。后来被 10x Genomics 收购,商业化了。原理其实不复杂:
- 把新鲜冷冻或 FFPE 组织切片(5–10 μm)贴在带捕获探针的玻片上。
- 玻片表面有数百万个 捕获点(spots),每个 spot 直径 55 μm,中心间距 100 μm。每个 spot 上固连着带有空间条形码(spatial barcode)的 poly(dT) 探针。
- 组织切片透化后,mRNA 释放并被相邻 spot 上的 poly(dT) 捕获。
- 反转录后生成带空间标签的 cDNA 文库,最后用 NGS 测序。
| 参数 | 10x Visium(标准) | 10x Visium HD(新) | 备注 |
|---|---|---|---|
| Spot 直径 | 55 μm | 2 μm | HD 版分辨率接近单细胞 |
| Spot 间距 | 100 μm | 连续六边形填充 | HD 无间隙 |
| 组织类型 | 冷冻/FFPE | FFPE 优先 | 冷冻也可用 |
| 捕获原理 | poly(dT) 捕获 mRNA | poly(dT) + 探针 | HD 探针设计不同 |
嗯,这里有个重要的事。10x Visium 的 spot 尺寸是 55 μm,这意味着一个 spot 下面可能覆盖 1–10 个细胞(取决于组织密度)。如果你以为这个技术能做到单细胞分辨率,那就错了。我曾经有个学生拿 Visium 数据做单细胞分析,结果硬是跑出十几个假细胞类型……避坑指南:不要把 Visium 的 spot 当作单个细胞,它本质是“多细胞混合表达谱”。
透化时间——最关键的一步
Visium 实验里,透化时间决定了 mRNA 捕获效率。时间太短,mRNA 出不来;时间太长,mRNA 扩散到相邻 spot,空间分辨率下降。官方建议做 透化时间梯度实验,用荧光强度判断最佳时间。我自己做的时候,一般设 6、12、18、24、30 分钟五个点,选出荧光最强且 spot 边界清晰的。
技巧:拿到组织切片后,先做一张 H&E 染色看看形态。如果组织内有大量脂肪或坏死区域,透化时间要适当延长(脂肪细胞膜更难破)。
Slide-seq 原理——换个思路
Slide-seq 是哈佛在 2019 年推出的方法(后来有了 Slide-seqV2)。它的思路更直接:用玻璃珠代替 spot。
- 每个玻璃珠直径约 10 μm,表面连有带空间条形码的 poly(dT) 探针。
- 玻璃珠随机铺在玻片上,然后通过原位测序(in situ sequencing)读取每个玻璃珠的条形码,建立“位置 ↔ 条形码”的对照表。
- 把组织切片贴在玻璃珠层上,透化、捕获 mRNA。
这件事的关键区别:10x Visium 的 spot 坐标是光刻固定的,Slide-seq 的珠子坐标是随机铺的。随机铺意味着你必须在实验后才能知道每个珠子在哪——这步叫做“解码”。
我一同事做过 Slide-seq,他吐槽解码的复杂度堪比破解一个简单密码。不过好处也很明显:珠子直径 10 μm,分辨率比 Visium 高得多,接近单细胞水平。
两种技术的对比与选择
| 对比维度 | 10x Visium | Slide-seq (V2) |
|---|---|---|
| 分辨率 | 55 μm(多细胞) | 10 μm(近单细胞) |
| 捕获效率 | 较高(优化充分后约 10–20%) | 较低(约 1–5%) |
| 实验复杂度 | 中等(需透化梯度) | 高(需原位解码) |
| 商业化成熟度 | 高(试剂盒、软件齐全) | 低(基本是实验室自建) |
| 图像对齐友好度 | 强(玻片有 fiducial marker) | 中(需自行对齐 beads 图像) |
说白了,追求通量和稳定性选 Visium,追求分辨率可以上 Slide-seq。我个人的选择习惯是:探索性研究用 Visium(快、稳),特定区域验证用 Slide-seq(准、细)。
其他技术概览
提一下 MERFISH 和 seqFISH+。它们用多重 FISH 成像直接读基因表达,不需要测序。分辨率可以达到单细胞甚至亚细胞级别,但通量有限(一次看几十到几百种基因)。如果你只关心几十个 marker 基因在特定区域的分布,可以用它们。不过,它们产生的原始数据是图像 stack,不需要做“图像对齐”,因为基因表达信息已经嵌在图像本身了——这跟 Visium/Slide-seq 的逻辑完全不同。
警告:做图像对齐教程时,我们聚焦的是 需要将 H&E 图像映射到空间转录组捕获位置的场景。MERFISH 这类原位成像技术不需要额外的图像对齐(它们本身就是显微镜图像),所以本篇教程后续不展开。请记住这个前提。
核心知识体系流程图
下面这张 SVG 图总结了本章涉及的技术分类和它们之间的定位关系:
对齐前的数据准备——你得知道的文件结构
拿到 10x Visium 数据后,文件夹里一般有这几个东西:
sample/
├── filtered_feature_bc_matrix.h5 # 表达矩阵(按 spot barcode 索引)
├── spatial/
│ ├── tissue_lowres_image.png # 低分辨率 H&E 缩略图
│ ├── tissue_hires_image.png # 高分辨率 H&E 图
│ ├── scalefactors_json.json # 缩放因子(用于对齐)
│ ├── tissue_positions_list.csv # spot 坐标(在图像中的像素位置 + 组织内标志)
│ └── aligned_fiducials.jpg # 用于空间对齐的 fiducial 标记图像
└── raw_feature_bc_matrix.h5 # (可选)未过滤的原始矩阵
tissue_positions_list.csv 是关键文件。它每一行对应一个 spot,包含:
- barcode:该 spot 的唯一条形码
- in_tissue:0 或 1,表示该 spot 是否在组织区域内
- array_row, array_col:技术上 spot 在玻片阵列中的位置
- pxl_row_in_fullres, pxl_col_in_fullres:spot 中心在高分辨率 H&E 图像上的像素坐标
对齐算法要做的就是:把 pxl_row/col 映射到我们读入的 H&E 图像坐标系里。你想想看,实际过程中图像可能有旋转、缩放、甚至组织折叠——这就是我们后续几章要解决的问题。
小提示:Slide-seq 的数据格式不太一样。它一般给一个 beads_position.txt 文件,里面是每个珠子的物理坐标(单位 μm)。你需要通过扫描电镜图像(SEM)或荧光图像把这些坐标对齐到你的 H&E 图上。流程更繁琐,但原理相似。
好了,本章的基础知识就到这里。你心里应该清楚:每种技术的空间分辨率和数据格式都不同,图像对齐的策略也要随之调整。千万别拿 Visium 的对齐参数直接套给 Slide-seq——我试过一次,结果惨不忍睹。