Visium 的本质
🧠 一、Visium 的本质:“小块上的 bulk RNA”
✅ 关键事实:
| 特征 | 描述 |
|---|---|
| 单位 | 每个 Visium spot 约 55μm,包含 1–10 个细胞 |
| 本质 | 是一个局部 bulk RNA-seq,测量的是所有细胞表达的总和 |
| 输出矩阵 | Spot × Gene,无法直接提供单细胞层面的表达信息 |
📌 因此 Visium 的分析关键是 —— 如何反推出每个 spot 中的细胞类型构成(deconvolution)。
🔍 二、细胞类型的可视化:从“混合”中提取“单一信号”
❓问题回顾:
如果 spot 是混合的,那么我可视化某个细胞类型时,颜色是混合的吗?会不会误导?
✅ 回答核心:
- Spot 是混合的,这是 Visium 的本质;
- 可视化是单通道 signal intensity —— 即展示某一细胞类型的相对 abundance 强度;
- 不是颜色混合图像,而是单色热度图,避免解读混淆。
🔧三、常见解卷积工具与原理
| 工具名称 | 算法原理 | 输出形式 |
|---|---|---|
RCTD |
贝叶斯线性模型 | 每个 spot 的细胞类型概率 |
cell2location |
层级贝叶斯 + 负二项建模 | 每个 spot 每种细胞的“丰度” |
SPOTlight |
非负矩阵分解 + topic 模型 | 占比、贡献因子 |
Stereoscope |
使用 variational inference | 与 cell2location 类似,较轻量 |
解卷积输出示例:
text复制编辑Spot_ID T_cells CAFs B_cells Endo
Spot_001 3.4 0.2 0.0 1.0
Spot_002 0.1 5.0 0.0 0.0
Spot_003 2.1 2.5 1.2 0.3
- 每个值 = 某细胞类型在该 spot 中的 abundance(数量强度)
- 可进一步标准化为占比或标签(最大者标记)
🎨 四、可视化策略:不混色,但可以并排/叠加
✅ 方法一:单细胞类型热图(最常用)
sc.pl.spatial(adata, color="CAF_abundance", cmap="Reds")
- 每个 spot 按 CAF 丰度深浅着色;
- 不管是否混有 T 细胞或其他类型;
- 直观、清晰、解读准确 ✅
✅ 方法二:多图并排比较(推荐)
sc.pl.spatial(adata, color=["CAF_abundance", "Tcell_abundance", "Bcell_abundance"], ncols=3)
- 每种细胞类型出一张热图
- 比较各自空间分布,观察潜在共定位
✅ 方法三:组合标签图(共富集区域分析)
adata.obs["combo_label"] = (
adata.obs["CAF_abundance"] > 0.5).astype(str) + "_" +
(adata.obs["Tcell_abundance"] > 0.5).astype(str)
sc.pl.spatial(adata, color="combo_label")
- 表示哪些 spot 是 CAF-only,哪些是 CAF+Tcell 共富集;
- 用于局部空间共存模式识别
✅ 方法四:RGB 三通道叠加图(不推荐全图使用)
- 将 CAF、Tcell、Bcell 分别映射到 R/G/B 通道;
- 每 spot 的颜色混合反映成分,但不利于定量解读;
- 多用于小图展示(如论文图注、Figure 4f)
✅ 方法五:饼图 / 条形图显示细胞比例
Giotto/spatialLIBD支持每个 spot 画小饼图;- 适合区域放大分析,图像密集,不利于全图展示。
🧪 五、实战中还能做什么?
-
按 CAF 丰度筛选 CAF-rich spot:
adata.obs["CAF_high"] = adata.obs["CAF_abundance"] > 0.5 -
构建邻域 → 聚类邻域细胞组成:
import squidpy as sq sq.gr.spatial_neighbors(adata, coord_type="grid") -
构造组合富集图(“CAF+T”区域) → 空间机制假设验证。
🧠 六、终极总结
| 问题 | 正确理解方式 |
|---|---|
| Spot 是混合的吗? | ✅ 是,每个 spot 是多个细胞组成的 bulk 信号 |
| 可视化颜色是“混合”的吗? | ❌ 否,是单通道表达热图,不显示“颜色混合” |
| 能不能看多个细胞类型? | ✅ 能,用并列热图 / 饼图 / RGB 图来展示 |
| 颜色强度表示什么? | CAF abundance(或其他 cell type)在 spot 中的相对信号强度 |
| 最推荐的展示方式? | 多图并列、单一 cell type 强度热图、共富集区域 label 分群展示 |
七、完整分析流程模板(简略)
python复制编辑# 加载解卷积结果
adata.obs["CAF_abundance"] = result["CAF"]
adata.obs["Tcell_abundance"] = result["T_cells"]
# 可视化单细胞类型
sc.pl.spatial(adata, color="CAF_abundance", cmap="Reds")
# 多类型对比可视化
sc.pl.spatial(adata, color=["CAF_abundance", "Tcell_abundance"])
# 区域打标签
adata.obs["predicted_label"] = result.idxmax(axis=1)
sc.pl.spatial(adata, color="predicted_label")
✅ 一句话总结:
Visium 是 spot-level 混合表达测序,解卷积后我们看到的只是某种细胞在 spot 中的“推测丰度图”,而非真实位置图,更非混色图。
浙公网安备 33010602011771号