1. 空间转录组技术与应用概述

大家好,我是你们这趟课程的老朋友。先从最基础的说起——空间转录组技术是什么?

简单讲,就是在传统单细胞转录组的基础上,加上了“空间坐标”这个维度。你不仅知道某个细胞里哪些基因在表达,还能知道这个细胞在组织切片上的具体位置。说白了,就是把一张组织切片的基因表达量,像地图一样还原出来。

我做项目时经常遇到这样的场景:单细胞测序告诉你某个亚群有高表达的免疫因子,但你不知道它跟肿瘤边界靠得近不近。有了空间转录组,你就能直接看见“这个亚群是不是贴在血管旁边”。这感觉,就像从听收音机变成了看高清电视。

1.1 主流技术平台对比

目前市面上主流平台有这么几个,我列个表格方便你快速对比。

平台 分辨率 捕获方式 检测基因数 优缺点(我的经验)
10x Visium 55 μm 斑点 微阵列捕获 ~2000 基因/斑点 商用最成熟,但分辨率不够细
Slide-seq V2 10 μm 珠 随机珠阵列 ~500 基因/珠 分辨率高,但基因检出偏低
MERFISH 单细胞级别 多重荧光原位杂交 定制 panel 准确定量,但只能测预设基因
Stereo-seq 0.5–2 μm DNA纳米球阵列 ~1000 基因/bin 国产平台,分辨率极高,但分析工具少
DBiT-seq 10–50 μm 微流控条形码 ~500 基因/点 灵活低通量,适合小样本

你看,分辨率、基因检出数、捕获面积三者永远在博弈。没有完美的技术,只有适合你问题的工具。

个人建议:如果是初探空间转录组,先跑一跑 Visium 的公开数据,熟悉下游分析流程。别一上来就上高分辨平台,数据量会让你崩溃。

1.2 核心分析任务

拿到空间转录组数据后,我们要做什么?我总结成四个核心任务。

  1. 空间聚类:把空间邻近且表达模式相似的斑点或细胞聚成区域。这就是 BayesSpace 和 SpaGCN 的主战场。
  2. 差异表达与区域标志物:找出不同空间区域里特异表达的基因。
  3. 细胞类型反卷积:一个斑点可能包含好几个细胞,得估算每种细胞的比例。
  4. 空间通讯与微环境分析:看配体-受体共定位,推测细胞间互作。

我最早做空间聚类时,拿普通的单细胞聚类算法硬跑,结果一团糟。为什么?因为普通算法完全忽略了“邻居”关系。你想想看,两个细胞即便表达谱一模一样,如果一个在皮层、一个在白质,它们的功能肯定不同。

关键认知:空间转录组分析的本质,是把“基因表达相似性”和“空间相邻性”联合起来构建统一的聚类模型。忽略空间信息,就等于扔掉了一半的信息。

1.3 空间转录组数据分析流程概览

我习惯把流程画成一张图,这样脑子里的结构就清楚了。下面这张 SVG 是我自己一直在用的核心框架,你看着它理解,比读长篇文字管用。

空间转录组数据分析流程概览 原始空间转录组数据 质量控制 & 标准化 空间聚类(BayesSpace / SpaGCN) 差异表达 & 标志物 细胞类型反卷积 空间通讯分析 肿瘤微环境分析 空间可视化 生物学结论 本课程重点讲解 ★ 空间聚类这一步

这张图里,我最想让你关注的是第三行——空间聚类。它是整条分析链的基石。聚类不准,后面的差异、通讯、微环境全是白做。

1.4 空间聚类的核心挑战

为什么传统的聚类算法不适合空间转录组数据?我拿一个实际项目经历来说明。

曾经接手一个乳腺癌组织切片数据,Visium 平台,大概 4000 个斑点。我先用普通 k-means 跑了,结果出图一看,聚类边界跟组织学 H&E 染色完全对不上。有些区域明明应该是肿瘤,却被划到了基质。为什么?因为 k-means 只看基因表达,它不知道两个斑点虽然表达相似,但中间隔着一段组织边界,根本不是同一类。

空间聚类算法要解决两个问题:

  • 如何把空间信息纳入模型?——用马尔可夫随机场、图神经网络或者贝叶斯先验。
  • 如何在平滑性和边界检测之间平衡?——太平滑会抹掉真实区域边界,太敏感会引入噪声。
我曾经踩过的坑:在 BayesSpace 里过于相信默认的空间平滑参数,结果把两个相邻的皮层区域合并了。后来手动调整 sigma2 才找回边界。默认值永远只是起点,一定要结合你的组织学图像验证。

本课程聚焦的两个算法——BayesSpace 和 SpaGCN——恰好代表了两种不同的解决思路。BayesSpace 走的是贝叶斯统计路线,利用空间位置构建邻接矩阵,再用马尔可夫链蒙特卡洛采样。SpaGCN 走的是图卷积神经网络路线,把空间坐标和基因表达一起喂进图卷积层。后面几章我们会逐一拆解。

1.5 你该怎么学这门课?

我的建议是:别急着调代码。先把每个算法的核心公式理解三五分,然后用我提供的公开数据集跑一遍标准流程,再跟自己数据对比。遇到报错别慌,绝大多数问题是输入格式不匹配——我在第 5 章会专门讲数据预处理避坑指南。

课前准备:建议你先把 10x Visium 的 Space Ranger 输出格式(H5 + TIFF)搞清楚。有了这个基础,后面所有代码跑起来才顺。我最初花了一整天研究 H5 文件结构,后来发现很多问题出在坐标缩放不一致。