# 第 02 章 空间转录组技术原理：从单细胞到 10x Visium

> 本章回答三个问题：单细胞测序差在哪？空间转录组有哪些技术？本书用的 10x Visium 到底怎么工作？

## 本章目标

读完本章后，你应该能：

1. 说出单细胞测序的成就与“丢失空间位置”这个盲区；
2. 用表格对比原位捕获、原位成像、空间蛋白三条技术路线，并说出本书为什么聚焦 Visium；
3. 准确复述 10x Visium 的硬指标（捕获区、spot 数、直径、中心距）；
4. 说出 Visium 数据文件的四个组成部分及各自作用；
5. 说出空间转录组的三个局限，并解释“去卷积”为什么必要。

## 2.1 单细胞测序的成就与盲区

**单细胞 RNA 测序**（single-cell RNA sequencing, scRNA-seq）是过去十年生物学的里程碑：把组织解离成单个细胞，逐个测量转录组，从而回答“组织里有哪些细胞类型、各占多少、各表达什么”。它回答的问题是“**谁**在表达什么”。

但它有一个结构性的盲区：**解离把空间位置永久抹掉了**。解离后的细胞进了液滴或孔板，你无法知道它原来在组织的哪个位置——肿瘤核心的癌细胞和侵袭前沿的癌细胞，在解离后看起来“一样远”。而很多关键问题恰恰依赖位置：PD-L1 高表达的肿瘤细胞是否紧挨着 CD8 T 细胞？CAF 是否聚集在侵袭前沿？这些“空间关系”，单细胞数据回答不了。

![图 2-1 单细胞测序与空间转录组的对比。左侧：组织被解离成单个细胞（液滴），聚类成 UMAP 后丢失了原始空间位置；右侧：组织切片保持原位，spot 网格上的每个点都保留坐标。](figures/fig02_sc_vs_spatial.png){width=85%}

**空间转录组**（spatial transcriptomics）的诞生正是为了补上这一课：不破坏组织，在切片上原位测量表达，每个测量点都带着坐标。

## 2.2 空间转录组技术谱系

空间转录组不是单一技术，而是一个家族，大致分三条路线：

- **原位捕获**（in situ capture）：用带空间条形码的捕获点“抓取”组织释放的 mRNA。代表：10x Visium（spot 网格）、Slide-seq（DNA 微珠，分辨率更高）、Visium HD（1.8 μm 六边形 bin）。
- **原位成像**（in situ imaging）：用荧光显微镜直接“看”组织里的转录本。代表：MERFISH、seqFISH、10x Xenium。分辨率可达单细胞甚至亚细胞，但一次只能测固定数量的基因（panel）。
- **空间蛋白**（spatial protein）：用抗体在组织上检测蛋白。代表：CODEX、MIBI。与转录组互补，但检测的蛋白数量有限。

| 技术路线 | 代表技术 | 分辨率 | 通量（基因数） | 优点 | 缺点 |
| --- | --- | --- | --- | --- | --- |
| 原位捕获 | 10x Visium | spot 级（≈55 μm，含多个细胞） | 全转录组 | 全转录组无偏、流程成熟、公开数据多 | 多细胞混合、分辨率有限 |
| 原位捕获 | Slide-seq | 微珠级（≈10 μm） | 全转录组 | 分辨率更高 | 制备复杂、成本高 |
| 原位成像 | MERFISH / seqFISH / Xenium | 单细胞/亚细胞 | 数百至数千（panel） | 分辨率高 | 基因数受限、需预设 panel |
| 空间蛋白 | CODEX / MIBI | 单细胞级 | 数十至上百个蛋白 | 直接测蛋白 | 蛋白数有限、需抗体 panel |

**本书聚焦 10x Visium**，原因有三：全转录组（无偏，不需要预设基因）、流程成熟（官方工具链完善）、公开数据丰富（人乳腺癌 demo 等，第 07 章下载）。学会了 Visium，再看其他技术只是“换个尺子”。

## 2.3 10x Visium 原理详解

Visium 的核心思想一句话：**把“空间坐标”编码进测序读段**。原理分四步（对照图 2-2）：

![图 2-2 10x Visium 原理四联图。(a) 捕获区 6.5 × 6.5 mm，约 5000 个六边形 spot（直径 ≈ 55 μm、中心距 100 μm）；(b) 单个 spot 上的捕获探针 = 空间条形码 + UMI + poly-T；(c) 组织贴片后 mRNA 原位捕获；(d) 测序后得到 spot × 基因表达矩阵。](figures/fig03_visium_principle.png){width=85%}

1. **捕获芯片**：载玻片上有 4 个捕获区（capture area），每个 **6.5 × 6.5 mm**，内含约 **5000 个**六边形 spot。每个 spot 的**直径约 55 μm**，**中心间距 100 μm**。
2. **探针结构**：每个 spot 上密布捕获探针。探针 = 空间条形码（spatial barcode，16 bp，标记“我在哪个 spot”）+ UMI（唯一分子标识符，12 bp，标记“这是哪一条 mRNA 分子”）+ poly-T 尾巴。
3. **原位捕获**：把组织切片贴到芯片上、透化处理，mRNA 释放后被就近 spot 的 poly-T 捕获。**新鲜冷冻（FF）样本**直接捕获 mRNA 的 poly-A 尾巴；**FFPE 样本**则需先做探针杂交（Visium FFPE 流程，另需去石蜡与抗原修复），因为石蜡包埋会降解 mRNA、破坏 poly-A 尾。
4. **测序与矩阵**：洗去组织、原位逆转录、建库测序。每个读段读出“空间条形码 + UMI + 基因序列”，汇总后得到 **spot × 基因** 的表达矩阵。

务必记住一个关键事实（第 08 章质控要用）：每个 spot 覆盖约 **1–10 个细胞**，所以 spot 本质是**多细胞混合信号**。Visium 的“分辨率”是 spot 级，不是单细胞级。

## 2.4 Visium 数据文件结构

从 10x 官网下载的 Visium 数据（第 07 章）包含两类内容：表达矩阵 + spatial 目录。

```bash
# 第 07 章下载并解压后，目录结构如下（示意；Windows 用 dir 查看）
data/visium/
├── filtered_feature_bc_matrix.h5   # 表达矩阵（h5 单文件版）
├── filtered_feature_bc_matrix/
│   ├── barcodes.tsv.gz             # spot 条形码（每行一个 spot ID）
│   ├── features.tsv.gz             # 基因（Ensembl ID、基因名等）
│   └── matrix.mtx.gz               # 稀疏计数矩阵（行=基因，列=spot）
└── spatial/
    ├── tissue_positions_list.csv   # 每个 spot 的组织内坐标
    ├── scalefactors_json.json      # 图像缩放因子（坐标与像素换算）
    ├── tissue_hires_image.png      # 高分辨率组织 H&E 图像
    └── tissue_lowres_image.png     # 低分辨率组织图像
```

**运行结果解读：** 这是第 07 章下载完成后的目录长这样（现在没有数据也没关系，先记住结构）。逐项说明：

- `barcodes.tsv.gz`：一列，每个 spot 的唯一 ID（形如 `AAACAAGTATCTCCCA-1`），就是矩阵的列名；
- `features.tsv.gz`：每行一个基因，含 Ensembl ID 与基因名。人类样本里有 `MT-` 开头的线粒体基因，第 08 章质控要用；
- `matrix.mtx.gz`：Market Exchange Format 的稀疏矩阵。绝大多数元素是 0（dropout，见 2.5 节），用稀疏格式存储以节省内存；
- `spatial/`：`tissue_positions_list.csv` 给出每个 spot 在组织切片上的像素坐标，`scalefactors_json.json` 用于坐标与不同分辨率图像之间的换算，两张 PNG 是组织 H&E 图像——空间可视化的“底图”。

加载数据通常用 h5 单文件版（第 08 章的 `Load10X_Spatial`），先预览一下维度：

```r
# 如果已下载数据（第 07 章），可以预览矩阵维度
if (file.exists("data/visium/filtered_feature_bc_matrix.h5")) {
  library(Seurat)
  obj <- Load10X_Spatial(data.dir = "data/visium/",
                         filename = "filtered_feature_bc_matrix.h5")
  dim(obj)                 # 输出：基因数 × spot 数
} else {
  message("数据还没下载，先看文字说明（第 07 章会下载）。")
}
```

**运行结果解读：** 人乳腺癌 demo 大约 36,000 个基因 × 约 5,000 个 spot。行数（基因）远大于列数（spot），这是 Visium 数据的典型形态。

## 2.5 空间转录组的三个局限

**局限一：spot 是多细胞混合（需要去卷积）。** 一个 spot 里可能有 1–10 个不同种类的细胞，测到的是它们的“平均信号”。要回答“这个 spot 里主要是肿瘤细胞还是免疫细胞”，需要**去卷积**（deconvolution）：借助单细胞参考数据，把混合信号拆回各细胞类型的比例。第 09 章的 cell2location 就是干这个的。

**局限二：dropout 与低灵敏度。** 捕获效率有限，低表达基因经常测不到，矩阵里 0 非常多。这意味着“没测到 ≠ 不表达”。分析时要用专门的统计方法处理稀疏性（第 08 章会讲），不能把 0 当绝对。

**局限三：批次效应。** 不同切片、不同实验批次之间存在系统性差异。多切片比较（比如本书“生态位之间”的比较）之前必须做批次校正，否则差异可能来自技术而不是生物学。

记住这三个局限，你就理解了后面所有方法选择的动机：**去卷积解决分辨率、统计方法处理 dropout、批次校正保证可比性**。

## 本章小结

- 单细胞测序回答“谁在表达什么”，但解离丢失了空间位置；
- 空间转录组三条路线：原位捕获（Visium、Slide-seq）、原位成像（MERFISH、seqFISH、Xenium）、空间蛋白（CODEX、MIBI），本书聚焦 Visium；
- Visium 硬指标：捕获区 6.5 × 6.5 mm、约 5000 个 spot、spot 直径 ≈ 55 μm、中心距 100 μm、每个 spot 含 1–10 个细胞；
- 数据 = barcodes + features + matrix（或 h5）+ spatial 目录（坐标、缩放因子、组织图像）；
- 三个局限：多细胞混合（去卷积）、dropout、批次效应。

## 练习与思考

1. （动脑题）为什么说“spot 是多细胞混合信号”？这对第 09 章“细胞类型注释”提出了什么要求？
2. （动脑题）空间条形码（16 bp）与 UMI（12 bp）分别解决什么问题？芯片上约 5000 个 spot，16 bp 条形码（最多 2^16 = 65536 种）够用吗？
3. （动手题）去 10x Genomics 官网 Datasets 页面找到 Visium 人乳腺癌 demo，下载“filtered feature-barcode matrix (H5)”与 spatial 目录（详细步骤第 07 章），对照 2.4 节核对目录结构。
4. （思考题）FFPE 样本为什么不能直接用 poly-dT 捕获？提示：石蜡包埋会降解 mRNA、破坏 poly-A 尾，探针法如何绕过这个问题？
5. （动脑题）如果换成 MERFISH 数据（数千基因的 panel），2.5 节的三个局限中哪些会变轻、哪些会变重？
