空间转录组学概述与Visium平台介绍

大家好,欢迎来到这门实战课。

在正式敲命令之前,我觉得有必要先聊清楚一个问题:我们到底在复现什么?

空间转录组学,说白了,就是给传统的转录组数据加上一个“GPS坐标”。

传统单细胞RNA测序,你只能知道每个细胞里基因表达了多少,但不知道这个细胞原来长在组织里的哪个位置。空间转录组,正好补上了这一环。它能告诉你——某个基因的高表达区域,是不是刚好在肿瘤的边缘,或者某个神经元的亚型是不是只出现在大脑皮层第IV层。

一句话总结:空间转录组 = 组织切片图像 + 基因表达矩阵 + 空间坐标。

1.1 空间转录组技术到底是怎么工作的?

记得我刚接触这个领域时,看的第一张数据图,就是我眼前这个SVG框架所描绘的流程。从组织切片到热图产出,每一步都环环相扣。我把它画出来,你配合着看,会好理解很多。

空间转录组学核心工作流程 ① 新鲜冰冻 / FFPE 组织样本 ② 切片 10μm → 放置在 Visium 捕获玻片上 ③ mRNA 捕获 → 空间条形码 (Spatial Barcode) 标记 通孔载玻片上的点阵 (spots) 原位反转录 ④ 组织 H&E 染色 / 免疫荧光成像 ④ 文库构建 → Illumina 测序 ⑤ 空间基因表达热图 + H&E 组织图像叠合

这个图里展示的空间转录组核心流程,是很多下游分析的根本。

我个人习惯把上图的逻辑再精简一下:先把组织切薄片,放到带有条形码的玻片上,让 mRNA 被捕获并反转录;同时拍下组织切片的 H&E 图像;最后把测序得到的基因表达矩阵,映射回图像上的每一个点位(Spot)。

提示:10x Visium 每个捕获点 (spot) 的直径是 55μm,两个相邻 spot 的中心距是 100μm。一个 spot 内通常包含 1-10 个细胞。这个分辨率,叫做“近单细胞水平”。

1.2 Visium 平台到底是什么?

Visium 是 10x Genomics 公司在 2019 年左右推出的商业化空间转录组检测平台。它接替了早期的 Spatial Transcriptomics 技术(就是那个还在用玻璃片手工点样的版本)。

Visium 最大的改进是:把捕获流程封装成了标准化的试剂盒,加上一套自动化的数据分析软件(Space Ranger)。

好,那 Visium 产出的数据长什么样?

我直接列出三个核心文件,你在后续聚类分析中会反复跟它们打交道:

文件 格式 内容
feature-barcode matrix MTX / HDF5 基因表达计数矩阵(行=基因,列=spot)
tissue_positions_list.csv CSV 每个 spot 在组织图像上的像素 X/Y 坐标
tissue_hires_image.png PNG 高分辨率 H&E 组织图像

这三个文件,缺一不可。你想想看,如果没有基因表达矩阵,你没法做聚类;没有坐标信息,你画不出空间热图;没有组织图像,你没法把聚类结果跟组织形态对应起来。

避坑指南: 我曾经在一个项目中,直接从公开数据库下载了 Visium 的数据,结果发现 tissue_positions_list.csv 里有一半的 spot 坐标标注的是“不在组织上”(即 fiducial 标记点)。如果不做过滤,这些背景点的表达量是极低的,会严重干扰后续的聚类结果。

1.3 为什么用 Docker 来复现聚类?

我刚开始做生物信息学分析时,最头疼的就是环境问题。

Python 2 还是 Python 3? R 包 Seurat 版本是 4.x 还是 5.x? SPATA 依赖的 S4 对象有没有更新?

每个实验室的服务器环境都不一样。你跑得好好的代码,换台机器就报错。具体到 Visium 数据处理,情况只会更复杂:

  • 底层依赖多:Scanpy、squidpy、SpaGCN、Seurat、Giotto……这些库的版本号互相掐架。
  • GPU 与 CUDA:如果你要跑 SpaGCN 或者 DeepST,还得配好 CUDA 和 cuDNN。
  • 聚类算法参数:Leiden 算法的分辨率稍微调一下,聚类结果天差地别。

Docker 的出现,恰好解决了这个问题。你把整套环境——操作系统、Python、依赖库、代码、配置文件——全部打包成一个镜像。别人拉下来就能跑,结果完全可复现。

我个人的经验是,在发表论文或者开源代码时,如果没提供 Docker 镜像,审稿人或同行基本没法直接验证你的结果。提供一个 Dockerfile,比写十页“环境配置说明”都管用。

1.4 课程目标与前置知识

这门课,我会带着你从最原始的数据开始,一步一步搭建 Docker 环境,处理 Visium 的数据,用几种主流方法做聚类,最后把结果可视化出来。

你需要具备以下基础:

  • Linux 命令行基本操作:cd、ls、vim 这些总得顺手。
  • Python 基础:至少能看懂 pandas 和 numpy 的用法。
  • Docker 入门:知道 docker pull、docker run 是什么意思。如果你还不太熟,没关系,我会在第 2 章带大家快速回顾。

嗯,该说的背景都说完了。我们这就进入正题,先从 Docker 环境说起。