把空间转录组数据变成高清“组织地图”——SpaSEG 全流程白话指南
1. 为什么要关心空间转录组?
传统单细胞测序把组织“打碎”成单细胞悬液,好处是分辨率高,坏处是丢失了细胞原来的邻里关系。
空间转录组(Spatially Resolved Transcriptomics, SRT)反其道而行:让 RNA 在组织切片上“原位说话”,既能看基因表达,又能看表达发生在哪儿。
但数据量一上来,问题就来了:
-
50 万个点、2 万个基因,电脑先“喊卡”。 -
不同平台(10x Visium、Stereo-seq、MERFISH…)格式不统一,算法换平台就失灵。 -
想连续看几张相邻切片,对齐步骤能把人逼疯。
SpaSEG 就是 BGI 团队给出的“一站式”答案。
2. SpaSEG 是什么?一句话解释
它是一个 无监督深度学习框架,把空间转录组数据当成一张多通道“图片”,用卷积神经网络(CNN)完成四件事:
-
划分空间域(spatial domain identification) -
对齐多张切片(multi-section integration) -
找到空间差异基因(SVG detection) -
推断细胞-细胞相互作用(CCI inference)
3. 核心思路:把“点”变成“像素”
原始数据 | SpaSEG 里的对应 |
---|---|
每个点的基因表达向量 | 像素的 RGB 通道(几十维主成分) |
点的 x, y 坐标 | 像素在图像中的行列号 |
划分空间域 | 图像语义分割 |
这样做的好处:
-
CNN 天生擅长处理网格数据,速度比图网络快。 -
边缘强度正则化(edge-strength loss)让相邻像素尽量保持连续,避免把同一个组织区域拆得七零八落。
4. 两步训练法:先预习,再精修
阶段 | 目标 | 损失函数 | 作用 |
---|---|---|---|
预习 400 epoch | 让网络学会“自编码” | 均方误差 MSE | 得到合理的初始参数 |
精修 ≤2000 epoch | 分域同时保边缘 | α × 交叉熵 + β × 边缘强度 | 产生清晰边界 |
论文推荐超参数:
-
单张切片:α=0.4,β=0.7 -
多张切片整合:α=0.2,β=0.4
5. 安装与 5 行代码上手
SpaSEG 已集成进 BGI 的 Stereopy 工具包。
环境:Python ≥3.9,PyTorch ≥1.12,CUDA 可用更佳。
pip install stereopy
Jupyter Notebook 最小示例:
import stereopy as st
# 1. 读入 10x Visium 数据
data = st.io.read_10x_h5('dlpfc_151673.h5')
# 2. 预处理:归一化、PCA、z-score
st.pp.normalize_total(data)
st.pp.pca(data, n_comps=50)
# 3. 运行 SpaSEG,指定想要的空间域数量
st.tl.spa_seg(data, n_domains=7, alpha=0.4, beta=0.7)
# 4. 可视化
st.pl.domain(data, color='spa_seg')
# 5. 导出差异基因
svg = st.tl.spatial_variable_genes(data, domain_key='spa_seg')
6. 场景实战:4 个真实数据集结果速览
数据集 | 技术 | 点数 | SpaSEG 用时 | 关键发现 |
---|---|---|---|---|
人 DLPFC | 10x Visium | ~3,000 | <1 min | 6 层皮层 + 白质,ARI=0.554 |
小鼠全脑 | Stereo-seq Bin20 | 526,716 | 8 min | 26 倍快于 SpaGCN,内存占用 <16 GB |
小鼠胚胎 | seqFISH | ~6,400 | 30 s | 前/中/后脑区域精准分离 |
乳腺癌 IDC | 10x Visium | ~4,000 | 45 s | 区分侵袭癌、原位癌与正常区 |
7. 一张图看懂输出结果
图:人脑 DLPFC 第 151673 切片。左为人工标注,右为 SpaSEG 自动划分,颜色对应不同层。
8. 常见问题 FAQ
Q1:我只有 8 GB 显存,能跑百万级点吗?
可以。SpaSEG 的核心是 3×3 小卷积,显存占用随点数线性增长。526 k 点 50 维 PCA 在 16 GB GPU 上峰值显存约 9 GB;8 GB 时可把 batch_size
调小或改用 CPU。
Q2:怎么知道该分多少个域?
-
已知组织:按解剖区域设一个略大的数字,再让算法合并(后处理 100 epoch 自动完成)。 -
未知组织:用 elbow 方法观察 NMI-versus-k 曲线拐点。
Q3:Stereo-seq 的坐标不是矩形网格怎么办?
论文给出缩放因子 φ 把坐标归一化到 0-1,再填 0 补成矩形张量,误差可忽略。
9. 进阶玩法 1:多张切片一键 3D 对齐
把相邻切片编号作为 batch 维度,SpaSEG 会在训练时同时学习跨切片对应关系,无需额外配准算法。
# 假设 list_data 是 4 张相邻切片
st.tl.spa_seg(list_data, n_domains=7, alpha=0.2, beta=0.4,
batch_key='section_id')
结果:GCL、SEZ 等结构在 3D 重建中连续无错位,F1_LISI 提升 20-30%。
10. 进阶玩法 2:找“区域特异基因”
SpaSEG 在划分空间域后,用 Wilcoxon 检验 + 4 条过滤规则筛出 SVG:
-
log2FC > 1.5 且区域内表达比例 >75% -
区域间差异倍数或 CV 满足额外阈值
示例输出(小鼠胚胎):
基因 | 富集区域 | 已知功能 |
---|---|---|
Nnat | 脑区 | 神经发育 |
Krt10 | 表皮 | 角质化 |
Ibsp | 软骨 | 成骨分化 |
11. 进阶玩法 3:推断细胞“聊天”地图
流程:
-
用 SpaSEG 得空间域。 -
用 cell2location 把单细胞图谱映射到每个点多细胞组分。 -
用 Squidpy 取配体-受体对,计算邻域平均共表达 × 细胞熵 = LR score。 -
验证:计算 LR score 与下游基因表达的 Spearman 相关性。
在乳腺癌示例中,CXCL12-CXCR4 与 CD4+ T 细胞招募显著正相关(SCC=0.78)。
12. 局限与下一步
-
尚未直接利用 H&E 图像,未来版本计划融合多模态。 -
对高度稀疏的基因矩阵仍依赖 PCA 去噪;更激进的降噪策略在探索中。
13. 总结:什么时候选 SpaSEG?
需求 | 建议 |
---|---|
手里有 Stereo-seq 十万级点 | 直接上 SpaSEG,速度与精度兼得 |
想整合多张 10x Visium | 用 SpaSEG 的多切片模式,省去 PASTE 对齐 |
需要临床可解释性 | 先做 SpaSEG 分域,再配 cell2location 看细胞类型 |
一句话:把复杂空间组学数据变成看得懂的“高清组织地图”,SpaSEG 是目前门槛最低、通用性最强的方案之一。
附录:一键直达资源
-
论文原文: https://genomebiology.biomedcentral.com/articles/10.1186/s13059-025-03697-1 -
文档与示例: https://stereopy.readthedocs.io/en/v1.6.0/Tutorials(Multi-sample)/SpaSEG.html