L LingoCell guide · 02
portal/ guides/ 02 · spatial-niche
GUIDE 02 · Visium HD → e_niche

把空间转录组里的
每一个位置 放回它的组织语境

Stage 2 模型把每个细胞的 64 邻居图、4 象限 H&E patch 与 Stage 1.5 嵌入融合,输出 e_nichee_combined。 本指南演示一份完整的 Visium HD 样本从原始 spaceranger 输出到 niche cluster 图的全过程。

Guide spec
checkpoint
best_phase2.pt · v5_final
pipeline
prepare_stage2_data.py
input
spaceranger out/ + H&E .tif
output
e_niche, e_combined, niche cluster
K (neighbors)
20 (attn), 64 (composition)
typical runtime
~ 11 min / 150K cells
vRAM
≥ 24 GB
01 ─
输入规格

Visium HD 需要哪些文件?

直接对接 10x Space Ranger ≥ 3.0 的输出目录;最少需要 binned matrix、空间坐标与一张高分辨率 H&E 图像。 数据预处理流水线把它们打包成单一 HDF5,再喂入 Stage 2。

spaceranger out/binned_outputs/square_002um/filtered_feature_bc_matrix.h5
2 μm bins · 推荐 50–100 μm cell-aggregation 后送入模型
空间坐标spatial/tissue_positions.csv · μm 坐标
脚本会从 scale_factors.json 自动换算
H&E 图像tissue_hires_image.png 或自带 .tif
≥ 2000 px short side;冻结 ViT-L 抽取 4 象限 patch (4 × 1024d)
QC 阈值min 50 UMI · min 20 genes · per-cell binning(51)
prepare_stage2_data.py 第 0–1 步默认应用
邻居图KDTree · K_comp = 64 · R = 50 μm
composition 目标用全部 64 邻居;attention 仅用最近 K_attn = 20
teacher 嵌入Stage 1.5 离线推理产物 (512d, fp16)
第 4 步 prepare 阶段缓存
02 ─
九步数据流水线

从 spaceranger 到 HDF5。

下面是 prepare_stage2_data.py 中真实执行的九步处理;每一步对应 HDF5 中产生的字段,因此你可以随时打断后续再续。

STEP 0
QC filter
min 50 UMI · 20 genes
STEP 1
normalize + bin
log1p · per-cell bin(51)
STEP 1+
gene sampling
CRC32 deterministic · 1200
STEP 2
KDTree neighbors
K_comp=64 · R=50 μm
STEP 3
H&E ViT
4 quadrants × 1024d
STEP 4
teacher inference
Stage 1.5 → 512d
STEP 5
purity score
margin · mixing
STEP 6
AUCell pathways
Hallmark + Reactome
STEP 7+8
LLaMA tokens + HDF5
256 tok · pack
03 ─
交互演示

选一个真实样本,看一次 niche 出图。

下面这四个样本来自 0429 训练集 registry(共 11 个)。点击运行将模拟 prepare → Stage 2 forward → niche clustering 的整链路。

STEP
01

选择 Visium HD 样本

每个样本来自一个真实组织切片;编号与仓库 dataset_registry.json 中一致。

就绪 · 选定: Breast IDC · sample_12_dzoe
STEP
02

流水线执行

下面把九步预处理 + Stage 2 前向折叠为 6 个进度条;终端显示对应仓库脚本的实际日志格式。

$ python scripts/prepare_stage2_data.py --sample sample_12_dzoe && python scripts/export_stage2_embeddings.py --ckpt best_phase2.pt idle
# 等待运行 …
QC + bin— ms
KDTree K=64— ms
H&E ViT patches— ms
Stage 1.5 teacher— ms
Stage 2 forward— ms
Leiden 0.8 + save— ms
STEP
03

读图与读邻居组成

左侧是按 niche 上色的组织图(叠在 H&E 之上);右侧是模型对每个 niche 的邻居组成预测——可与 ground-truth 病理标注对比。

niche map · sample_12_dzoe · 12 clusters
H&E + e_niche overlay
100 μm
Top niche · neighbor composition
cell typefraction%
Output tensors
e_cell
e_niche
e_combined
niche clusters
NMI vs pathologist
mean purity
n_cells
runtime
下游使用建议
  • → 用 e_combined 做病理区分类(identity + niche)
  • → 用 e_niche 做跨样本 niche 对齐
  • → neighbor composition 可与 IHC 对照评估
04 ─
关键参数

v5_final 调度下的可调旋钮。

--k_attn20 (默认) · 参与 spatial attention 的最近邻数;增大稍提精度但显存翻倍
--leiden_res0.8 (默认) · 控制 niche cluster 数量;上调 → 更多更细的 niche
--use_hetrue (默认) · 关闭后忽略 H&E 分支,仅靠基因 + 空间
--panel_dropout0 (推理) · 训练时为 10%,推理勿开
--neighbor_dropout0 (推理) · 训练时 15–20%,推理勿开
--niche_aggregatorattn-pool (默认) · 备选 mean/weighted
v5_final 仅支持 attn-pool
05 ─
常见问题

在 Issues 之前先看这里。

没有 H&E 图像可以跑吗?

可以。--use_he false 时 image token 会被 zero-mask,对应 dropout 模式。NMI 通常下降 2–4 个点。

邻居数 K_attn 增加到 40 会更好吗?

在我们的 11 个样本上 K=20 与 K=40 的 NMI 几乎重合;K=40 的显存翻倍且训练并未在该设定下收敛,不推荐推理。

样本不是 Visium HD(比如 Visium 标准版 / Xenium)?

Visium 标准版可以通过同流水线,把 bin 设为 55 μm 即可;Xenium 因为是 single-cell-resolution,需要先汇总成 ~50 μm cell-agg 后送入。我们正在准备 Xenium 兼容器,预计 0530 发布。