1. 空间转录组学概述:从组织切片到分子图谱
空间转录组学,说白了就是给传统的转录组学加上坐标信息。你想想看,传统单细胞测序把组织打碎了测量,虽然能看到不同细胞类型,但细胞原本在组织里待的位置全丢了。空间转录组就是要补上这块拼图。
我刚开始接触这个领域时,其实挺困惑的——为什么有了单细胞测序还不够?后来在项目中做过一次肿瘤免疫分析才真正明白:细胞的位置信息,往往比它的分子身份更能决定功能。同一个T细胞,在肿瘤核心区和在基质边缘区,表达状态可能完全不同。
1.1 什么是空间转录组学
定义不复杂:在组织切片的原位,同时测量基因表达和空间坐标。跟传统转录组比,核心差异就两点:
- 位置保留:不消化组织,直接从切片上捕获RNA
- 形态关联:可以和H&E染色、免疫荧光等组织学图像配准
你可以把它理解成给每个基因表达值贴了个GPS标签。这个"GPS"的精度,决定了你能回答什么样的问题。
1.2 技术发展史:从手工到高通量
聊聊技术演变。我记得早期做空间基因表达分析,用的是激光显微切割(LCM)。那会儿我还在读博,手动在显微镜下一个细胞一个细胞地切,效率低得让人崩溃。切一个区域要半小时,通量基本是1~10个基因。
后来技术路线分成了两派:
- 原位杂交路线:用探针直接在组织里检测RNA,比如MERFISH、seqFISH。优点是分辨率高(单细胞甚至亚细胞),缺点是通量受限。
- 空间条形码路线:在芯片上铺带条形码的捕获点,组织切片贴上去反转录,比如10X Visium、Slide-seq。优点是通量高(全转录组),缺点是分辨率受限于捕获点大小。
关键时间节点我列在这里:
| 年份 | 技术 | 核心突破 |
|---|---|---|
| 2012 | MERFISH | 单细胞原位成像,误差编码纠错 |
| 2014 | seqFISH | 连续多轮杂交,大幅提升多重能力 |
| 2019 | Slide-seq | 10 μm珠分辨率,接近单细胞级别 |
| 2020 | 10X Visium | 商业级全转录组+组织学,55 μm捕获点 |
我个人觉得,2020年是个分水岭。10X Visium把空间转录组从实验室技术变成了商品化工具。虽然分辨率还不够完美,但它让大量生物学家能用得起、用得上了。
1.3 主流平台对比
我常被问到该选哪个平台。说实话,没有万能答案。我在项目中同时用过10X Visium和MERFISH,感受完全不同。下面这张表直接对比核心参数:
| 平台 | 分辨率 | 通量 | 检测方式 | 优势 | 局限性 |
|---|---|---|---|---|---|
| 10X Visium | 55 μm(~10–50细胞/点) | 全转录组 | 空间条形码 | 商业化成熟,组织学图像对齐 | 非单细胞分辨率 |
| Slide-seq | 10 μm(近单细胞) | 全转录组 | 空间条形码 | 高分辨率,灵活定制 | 覆盖面积小,处理复杂 |
| MERFISH | ~100 nm(亚细胞) | ~100–500基因 | 原位杂交成像 | 真正单细胞,可复用探针 | 基因通量受限 |
| seqFISH+ | ~100 nm(亚细胞) | ~10000基因 | 连续杂交成像 | 超高多重,亚细胞定位 | 实验周期长,成本高 |
1.4 核心应用场景
空间转录组能回答哪些生物学问题?我归纳了三个最成熟的场景:
- 肿瘤微环境:分析癌细胞、免疫细胞、基质细胞在空间上的互作关系。我在项目中做过三阴性乳腺癌的空间图谱,发现PD-L1+巨噬细胞聚集在肿瘤侵袭前沿——这个位置信息对免疫治疗反应预测很有价值。
- 发育生物学:追踪胚胎发育过程中细胞分化和组织模式形成。比如小鼠大脑皮层的层状结构,空间转录组可以清晰展示各层的分子标记梯度。
- 神经科学:绘制大脑不同区域的细胞类型图谱和神经环路。Allen脑科学研究所做的鼠脑空间图谱就是经典案例。
除此之外,数字病理学、感染性疾病、再生医学等方向也在快速跟进。说白了,只要组织空间结构跟功能相关,空间转录组就有用武之地。
1.5 数据特性与挑战
空间转录组数据有三大特性,也是三大坑。我曾经在分析时踩过其中两个,这里重点提醒:
- 空间稀疏性:大部分捕获点检测到的基因数很少(10X Visium约500–2000基因/点),跟scRNA-seq比稀疏得多。直接套用单细胞分析流程会出问题。
- 空间自相关:相邻捕获点的基因表达不独立。这既是信号(可以用来做空间聚类),也是噪声来源(统计检验要考虑空间FDR)。
- 多模态整合:需要同时处理基因表达矩阵、空间坐标、组织学图像。三种数据格式不统一,对齐和归一化容易出错。
下面这个例子展示10X Visium典型的数据组织结构,方便你快速上手:
sample/
├── filtered_feature_bc_matrix.h5 # 过滤后的表达矩阵
├── filtered_feature_bc_matrix/
│ ├── barcodes.tsv.gz # 捕获点条形码
│ ├── features.tsv.gz # 基因列表
│ └── matrix.mtx.gz # 稀疏矩阵
├── spatial/
│ ├── tissue_positions_list.csv # 空间坐标
│ ├── scalefactors_json.json # 图像缩放参数
│ └── tissue_hires_image.png # 组织学图像
└── raw_feature_bc_matrix.h5 # 未过滤的表达矩阵
我个人习惯用Scanpy读取,一行搞定:
import scanpy as sc
adata = sc.read_visium("sample/")
print(adata)
# 输出:AnnData object with n_obs × n_vars = 4992 × 31053
1.6 知识体系总览
上面讲的内容可以用一张结构图串起来。记住这个框架,后续章节就会往这些分支里填充具体的算法和代码。
这张图把本章的核心内容串了起来。后面的章节会沿着这些分支逐一展开——从数据预处理到空间聚类,从差异分析到多模态整合,每个算法都会结合具体平台的数据特性来讲解。学好这章的概念,后面你会走得更顺。