用途
Tangram(tangram-sc)用于把 scRNA-seq 参考数据映射到空间转录组切片上,支持 Visium、Slide-seq、MERFISH、Xenium 等平台。其核心是拟合一个“细胞×空间位点”的概率矩阵,使映射后的单细胞表达能够重现共享训练基因的空间表达。所有下游任务都从该矩阵出发。
主要能力
- 计算每个空间位点的细胞类型比例,或在单细胞分辨率数据上给出标签。
- 预测 panel 未测量或受 dropout 影响的基因表达(基因插补)。
- 在 Visium 全分辨率图像可用时,为每个分割细胞核分配一个细胞类型。
- 通过留出基因验证映射质量,包括 k 折交叉验证、细胞与聚类对比、随机种子稳定性等更深入的质量检查。
- 将同一参考映射到多个切片,以便进行一致比较。
使用方式
工作流共 7 步:加载空间数据与参考;归一化并保留原始计数的密度先验;选择训练基因并运行 tg.pp_adatas;将细胞映射到空间;投影细胞类型注释;在训练基因与留出基因上验证;绘图并保存。
安装命令:
pixi add --pypi squidpy scanpy tangram-sc
依赖 Python 包 tangram-sc、squidpy、scanpy,它们并非预装;tangram-sc 会拉取 PyTorch,其 Linux wheel 会带入 CUDA 库(数 GB),首次安装需要数分钟。
关键参数包括:TASK(任务类型)、referenceSource(参考来源)、CELL_TYPE_KEY(细胞类型列)、MODE(cells 或 clusters)、density_prior(密度先验)、TARGETS(插补目标基因)、STAIN(染色类型)、N_MARKERS(每类标记基因数,默认 100)、num_epochs(默认 500,constrained 模式为 1000)。设备自动选择 CUDA 或 CPU。
适用场景
- 将 scRNA-seq 细胞类型放置到 Visium、Slide-seq、MERFISH 或 Xenium 切片上。
- 在没有组织学图像的情况下获得每个位点的细胞类型比例。
- 展示靶向 panel 未测量或 Visium 因 dropout 丢失的基因的空间模式。
- 在全分辨率图像可用时,为 Visium 位点中的每个分割细胞核打标签。
- 根据留出基因判断 Tangram 映射是否足够好到可以报告。
- 将同一参考映射到多个切片以进行一致比较。
限制
- 参考数据必须与切片来自同一组织与状态,并共享信息基因。
- 映射总会收敛,因此必须用留出基因验证后才能报告结果。
- 训练基因少于约 100 个会使映射不稳定。
- 基因插补没有真实值,留出分数只是代理指标;在参考细胞中表达低于约 5% 的基因会得到噪声较大的图。
mode="cells"在单细胞分辨率切片(10 万以上细胞)上可能占用数十 GB 内存,此时应使用mode="clusters"或对参考进行子采样。- 若需要位点丰度的后验不确定性,应改用 spatial-transcriptomics-deconvolution-cell2location;若要在 Xenium/MERFISH 上做主要注释的标签转移,应使用 spatial-transcriptomics-cell-type-annotation。
质量判断参考
平均训练分数:>0.7 为好,0.5–0.7 需谨慎使用,<0.5 为差。留出 AUC:>0.6 为好,0.4–0.6 需谨慎,<0.4 为差。留出标记基因相关系数:明显为正为好,弱为需谨慎,接近 0 或负为差。训练与测试差距过大意味着映射记住了标记基因,应扩大标记集、使用 mode="clusters" 或设置 lambda_r > 0。