# DeepGraph 免费层交付 · 空间域识别:零学习平滑基线 + 空模型对照(主预测被推翻)

**提交方向**: 单细胞数据分析
**交付时间**: 2026-08-07
**这一轮真跑了**: LIBD Human DLPFC 10x Visium 12 张切片(151507–151510 / 151669–151672 / 151673–151676,每张 n_cells 3431–4788),4 个臂,3 个种子(0/1/2),总耗时 682.5 秒;代码、完整日志、图与原始 `results.json` 随附

---

## 0. 结论(先说结果)

**我们押的主预测 P1 被推翻了,这条路替你试过,不成立。** 预注册的 P1 是:一个零参数的空间 kNN 平滑基线,在 12 张切片上平均 ARI ≥ 0.40 且相对不平滑基线提升 ≥ +0.10(配对 Wilcoxon p<0.05)。实跑结果:提升和检验都过了(+0.141,p=0.000488),**但绝对水平只有 0.348,没到 0.40 这条线,所以 P1 判为推翻**。含义是:"最土的邻居平滑就能顶掉那些复杂方法"这个故事讲不通——平滑确实拿走了很大一块,但拿不到能自称有用的绝对水平。

**次预测 P2 被证实,而且它才是那个坏消息。** 几何空模型(真坐标 + 随机高斯噪声表达)的 ARI 只有 0.0498,远在 0.15 阈值之内。我们本来押这里藏着一个"几何免费分"——如果它有 0.2,这条线上所有已发表的 ARI 比较都要重估,那是最有杀伤力的一篇。**它没有。这个缺口被我们自己的数据关掉了,别再往这投。**

**下一步该往哪拐**:① 这轮意外拿到一个还开着的口子——同一切片、同一配置、只换随机种子,ARI 标准差平均就有 0.0282(基线)/ 0.0309(平滑臂),单张切片最大到 0.0774;② 值得投的是把 GPU 方法在同一预处理下重跑,用 0.348 这个零参数下限去量化"深度到底换来多少增量"。详见第 3 节。

---

## 1. 我们替你跑了什么

**设计一句话**:同一套预处理、同一组降维/聚类/种子,唯一变量是"要不要把空间邻居的表达混进来",再加两个空模型量地板。

- **基线(`baseline-nonspatial`)**:k=0,完全不用坐标。log-normalize → top-2000 高变基因 → PCA-50 → 聚类(簇数取该切片真值)。
- **实验臂(`proposed-smooth-knn`)**:在 HVG 之后、PCA 之前插入 `X' = 0.5·X + 0.5·mean_kNN(X)`,**零训练参数**。k 在 {6, 12, 18, 24} × 聚类器 {kmeans, gmm_full} 上全扫,按平均 ARI 选出 k=24 + gmm_full。
- **为什么这个对照是公平的**:两臂共用完全相同的预处理、降维、聚类器和随机种子,差别只有平滑这一步;基线不是"默认参数糊弄一下"的弱对手,它和实验臂跑在同一个格点上。
- **空模型①(`null-shuffle-expr`)**:表达矩阵行相对坐标随机置换(坐标不动),走同一条 k=24 / gmm_full 流水线——测"平滑本身会不会凭空造出结构"。
- **空模型②(`null-geometry-only`)**:表达整体换成同形状的独立高斯噪声(坐标为真实坐标),走同一条流水线——直接回答 P2,测"任何空间连续的划分能白拿多少 ARI"。

### 主结果:ARI

每个种子的值 = 该种子下 12 张切片的均值;± 是 3 个种子之间的标准差(n=3,仅描述离散度,**不做显著性推断**)。

| 臂 | 配置 | seed 0 | seed 1 | seed 2 | 均值 ± 种子间标准差 |
|---|---|---|---|---|---|
| `baseline-nonspatial` | k=0, gmm_full | 0.205 | 0.203 | 0.212 | **0.207** ± 0.00377 |
| `proposed-smooth-knn` | k=24, gmm_full | 0.353 | 0.342 | 0.348 | **0.348** ± 0.00483 |
| `null-shuffle-expr` | k=24, gmm_full | 0.00499 | 0.00487 | 0.00516 | **0.00501** ± 0.000118 |
| `null-geometry-only` | k=24, gmm_full | 0.0495 | 0.0492 | 0.0506 | **0.0498** ± 0.000613 |

**差值与检验**:proposed − baseline = **+0.141**;12 张切片配对 Wilcoxon 符号秩检验,统计量 = 0.0,**p = 0.000488**(该检验是跨 12 张切片的配对检验,不是跨 3 个种子)。逐张切片的配对数值在随附的 `work/logs/per_sample_paired.csv` 和 `work/figs/per_sample_paired_ari.png` 里。

### 辅助指标(均值 ± 种子间标准差)

| 臂 | NMI | 空间连贯性 | `ari_seed_std`(逐切片,3 种子间 ARI 标准差) |
|---|---|---|---|
| `baseline-nonspatial` | 0.327 ± 0.00110 | 0.579 ± 0.00219 | 均值 0.0282(12 切片间标准差 0.0202) |
| `proposed-smooth-knn` | 0.512 ± 0.00617 | 0.925 ± 0.00159 | 均值 0.0309(12 切片间标准差 0.0193) |
| `null-shuffle-expr` | 0.0107 ± 0.000566 | 0.350 ± 0.00314 | 均值 0.00242(12 切片间标准差 0.00123) |
| `null-geometry-only` | 0.0908 ± 0.00201 | 0.827 ± 0.00289 | 均值 0.0148(12 切片间标准差 0.0109) |

> `ari_seed_std` 按定义就是逐切片统计量(每张切片一个"3 种子间标准差"),所以它的 12 个原始值是逐切片值,不是逐种子值——`results.json` 里对这一条有专门的 `note` 标注。

---

## 2. 怎么读这个结果

**这些数支持什么**

1. **空间平滑的收益是真的,但不够。** +0.141 的提升 + 12 切片配对 p=0.000488,不是被个别切片带起来的(符号秩统计量 = 0.0,意味着 12 个配对差值方向一致;逐张数值见随附 CSV)。同时绝对水平 0.348 停在预注册的 0.40 之下,所以我们只能说"平滑有效",不能说"零参数平滑够用"。
2. **两个空模型都塌得很干净。** 打乱表达 → 0.00501;真坐标 + 纯噪声表达 → 0.0498。所以 0.348 不是"变连续"这件事白捡来的分数。注意空间连贯性这一列:几何空模型的连贯性有 0.827(接近实验臂的 0.925),ARI 却只有 0.0498——**"看起来很连续"和"分对了"是两回事,连贯性不能替代 ARI**。
3. **种子噪声不小。** 同切片、同配置、只换种子,ARI 标准差平均 0.0282(基线)/ 0.0309(平滑臂),个别切片到 0.0774 / 0.0638。这直接关系到"两位小数比较方法优劣"到底有没有意义。

**这些数不支持什么**

- **不支持任何跨方法排名。** 我们没有重跑 STAGATE / GraphST / SpaGCN / BayesSpace(要 GPU 和各自的依赖环境),所以本轮数字和文献里发表的数字并排看**不是受控比较**(预处理、HVG 数、簇数策略都可能不同)。
- **不支持"零参数平滑的上限就是 0.348"。** k 扫到 24 是扫描区间的**端点**,更大的 k 没试过。要下"上限"这个结论,得把 k 继续往上扫——很便宜,CPU 就能做。
- **不支持外推。** 只有 10x Visium 一个平台、人前额叶皮层一种组织;不用 H&E;不做簇数自动选择(沿用真值 K)。
- 3 个种子只够描述离散度,任何"显著"的说法在本报告里只指那个跨 12 切片的配对检验。

**规模放大后可能变的部分**:P1 是被"绝对值 0.348 < 0.40"这一条卡掉的,而不是被提升幅度或检验卡掉的。所以更大的 k、扫 α、或换更强的聚类器,都有可能把它推过 0.40——这轮没试,所以这轮只能照报推翻。

**本轮相对方案的三处偏离(逐条交代)**

1. **top-2000 高变基因只在未平滑的 log-normalize 矩阵上选一次,两臂共用**;平滑作用在已经选出的 2000 基因矩阵上,而不是全部 ≥10 细胞的基因集。理由:方案里基线臂自己的描述就要求"与实验臂共用完全相同的预处理,唯一差别是不做邻居平滑",共用 HVG 才是那个读法;而且对全基因集稠密平滑在 CPU/内存预算里跑不动。**代价:HVG 选择本身从未在平滑后的数据上重跑过。**
2. **α(平滑权重)的稳健性扫描 {0.25, 0.5, 0.75} 被跳过**,α 固定 0.5。方案里这一项标的是"若时间有余",预算花在了完整的 12 切片 × 2 聚类器 × 多 k 扫描上。
3. **聚类器按方案扫了 {kmeans, gmm_full},但报告里的基线臂和实验臂都用扫描(k>0)胜出的那个聚类器(gmm_full)**,所以基线-实验对比是在一个固定的、表现最好的聚类器上隔离平滑效应,而不是把 kmeans 和 gmm_full 当两组独立的基线/实验对分别汇报。

---

## 3. 你现在可以拿它做什么

**最短路径(值得投)**

1. **把 GPU 方法在同一预处理下重跑。** 现在你手上有一个零参数、可复现的下限 0.348 和一个不用坐标的下限 0.207。深度方法真正该被问的是"比这两个下限多拿了多少",而不是"ARI 是多少"。这是审稿人的第一问,也是把这轮工作变成完整一篇的必经步骤——需要 GPU,是你自己有算力时的第一件事。
2. **接着写"种子间波动"这个点。** 0.0282 / 0.0309 这个量级是这轮顺手拿到的,而这条线上的新方法论文普遍只报单次运行的两位小数 ARI。"比较精度本身存疑"是可写的发现,而且完全不需要算力——把种子数加上去、逐切片报 ARI 分布即可。
3. **把 k 继续往上扫、顺带扫 α。** CPU 几分钟一轮。它要么把 P1 推过 0.40(那结论要改写),要么给出真正的饱和点(那"零参数平滑的天花板"这句话才能说)。

**先别投**

- **别再往"ARI 几何免费分"这条线投。** 这是我们原本判断杀伤力最大的一条(SCOPE.md 第 2 节缺口 B),但 0.0498 这个数把它关掉了:这个数据集上不存在值得重估已发表比较的几何白捡分。这是个负结果,但它替你省掉了一整条死路。
- **别正面去和时空动力学的生成式基础模型比模型大小。**(SCOPE.md 第 0 节)资源不对等,审稿人第一句话就是"和它比呢"。能差异化的位置是"可验证性",不是"更大的模型"。

**审稿人最可能打的地方**(SCOPE.md 第 3 节,本轮结果对应的堵法)

1. **"只有 DLPFC 一个数据集/一个平台。"** 最致命。本轮已做的:12 张切片全跑,不挑张。还需要做的:讨论里明确写死边界"本结论限于 10x Visium 分层组织"。主动划边界比被审稿人划便宜。
2. **"是不是拿弱基线打靶?"** 本轮已做的:自变量做成网格全扫、种子固定、每个格点的原始日志公开(随附 `sweep_detail.csv` / `run.log`),基线与实验臂共用同一聚类器和同一套预处理。
3. **"ARI 单指标,而且簇数用了真值 K。"** 本轮已做的:同时报 NMI 和无标签的空间连贯性,并且报了种子间标准差。真值 K 这一点没解决——它是这条线的通行做法,但确实是可被质疑的注水点,建议在讨论里自己先说。

---

## 4. 随附材料

| 文件 | 是什么 |
|---|---|
| `work/spatial_domain_experiment.py` | 主实验:数据加载 → 预处理 → 平滑 → PCA → 聚类 → 全扫描 → 空模型 → 配对检验 → 写 `results.json` |
| `work/make_figures.py` | 从 `results.json` + CSV 生成三张图 |
| `work/run.sh` | **一条命令复现**:`bash run.sh` —— 自动下载公开数据 → 跑完整实验 → 出图 |
| `work/results.json` | 原始结果。本报告里每一个数值都能在这里逐个查到 |
| `work/logs/run.log` | 完整日志,每一次拟合一行(样本 / k / 聚类器 / 种子 / ari / nmi / coh / 耗时) |
| `work/logs/sweep_detail.csv`、`sweep_detail.pkl` | 全扫描逐格点明细 |
| `work/logs/per_sample_paired.csv` | 12 张切片逐张的 baseline / proposed ARI |
| `work/logs/null_shuffle_detail.csv`、`null_geometry_detail.csv` | 两个空模型的逐切片逐种子明细 |
| `work/figs/ari_by_k_clusterer.png` | 平均 ARI 随 k 变化,两种聚类器各一条线 |
| `work/figs/arm_comparison.png` | 四个臂的 ARI 对比(误差棒 = 种子间标准差) |
| `work/figs/per_sample_paired_ari.png` | 逐切片配对连线图 |
| `work/NOTES.md` | 实验过程记录:做了什么、为什么这么判、踩了什么坑 |
| `SCOPE.md` | 前置的方向判断与文献查新(第 5 节是它的摘要) |

**环境**:Python 3.12.3,**全程 CPU,没有 GPU**。本实验不含深度学习,**未使用 torch**(`results.json.env` 里记的就是 `torch: not used`);只依赖 numpy / scipy / scikit-learn / matplotlib / pandas,额外装的只有 `h5py==3.16.0`。种子固定为 0 / 1 / 2,`bash run.sh` 可完整重跑,总耗时 682.5 秒。

**原始数据不随交付附带**(体积大),`run.sh` 会自动从公开地址重新下载:表达矩阵来自 `spatial-dlpfc.s3.us-east-2.amazonaws.com`,点坐标和人工分层真值来自 `LieberInstitute/HumanPilot`。

**我们不要你的数据、代码或稿子。** 这一轮的证据全部用公开数据集自己造,下载地址、代码、种子、日志都在上面,任何人都能自己重跑一遍并反驳我们。

---

## 5. 方向判断与文献(摘自随附的 SCOPE.md)

- 你提的三个关键词里,**只有 Spatial domain detection 能在 CPU 上做出结论站得住的东西**;Trajectory 和 GRN 这两条 CPU 上只能跑玩具规模,这轮不做。
- **不建议和北大周沛劼老师团队正面比模型**(时空动力学的生成式基础模型,理论+算力+长期积累),资源不对等。能差异化的位置是"可验证性",不是"更大的模型"。
- 这条线的基准事实上只有一个:**LIBD 人前额叶皮层 DLPFC 的 12 张 Visium 切片 + 人工皮层分层标注,指标 ARI**;审稿人默认你要比的是 SpaGCN / STAGATE / BayesSpace / GraphST。
- 系统评测的结论是"**没有方法在所有数据上最好,最优方法取决于平台**",但新方法论文仍普遍只汇报单次运行的两位小数 ARI——**这条线上的排行榜是不稳的**。
- **缺口 A(本轮已跑)**:零学习的平滑基线没人当对照完整报过。做它对方法学作者没好处(等于证明自己的复杂度不必要),所以缺口一直开着。
- **缺口 B(本轮已跑,已被本轮数据关掉)**:ARI 的"几何免费分"没人量化过——本轮量出来是小的,见第 0、2 节。
- **缺口 C(本轮不做)**:空间域 → 域内 GRN → 域间轨迹的端到端一致性,没人问"上游分域错了下游会错到什么程度"。需要多平台数据 + GPU,是你自己有算力时的下一步。
- 预判的三个审稿打击点:单数据集/单平台、基线是否调过参、ARI 单指标 + 用真值 K(逐条堵法见第 3 节)。
- 本轮明确做不到的:不重跑需要 GPU 的方法、不用 H&E 组织学图像、不做簇数自动选择、不外推到 Slide-seqV2 / Stereo-seq / seqFISH。

**参考来源(原样保留)**

- [Benchmarking computational methods for detecting spatial domains and domain-specific spatially variable genes from spatial transcriptomics data — Kang et al., *Nucleic Acids Research* 53(7), 2025](https://pmc.ncbi.nlm.nih.gov/articles/PMC12000868/) (DOI: 10.1093/nar/gkaf303)
- [Zero-shot evaluation reveals limitations of single-cell foundation models — Kedzierska et al., *Genome Biology*, 2025](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-025-03574-x)
- [Transcriptome-scale spatial gene expression in the human dorsolateral prefrontal cortex — Maynard et al., *Nature Neuroscience*, 2021(DLPFC 数据集原文)](https://www.nature.com/articles/s41593-020-00787-0)
- [LieberInstitute/HumanPilot — DLPFC 原始数据、点坐标与人工分层标注(本轮实验的数据入口)](https://github.com/LieberInstitute/HumanPilot)
- [SpaGCN: Integrating gene expression, spatial location and histology ... — Hu et al., *Nature Methods*, 2021](https://www.nature.com/articles/s41592-021-01255-8)
- [Deciphering spatial domains from spatially resolved transcriptomics with an adaptive graph attention auto-encoder (STAGATE) — Dong & Zhang, *Nature Communications*, 2022](https://www.nature.com/articles/s41467-022-29439-6)
- [SPCS: a spatial and pattern combined smoothing method for spatial transcriptomic expression — Liu et al., *Briefings in Bioinformatics* 23(3), 2022](https://pmc.ncbi.nlm.nih.gov/articles/PMC9116229/)
- [GraphPCA: a fast and interpretable dimension reduction algorithm for spatial transcriptomics data — *Genome Biology*, 2024](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-024-03429-x)
- [stVCR: spatiotemporal dynamics of single cells — Peng, Zhou & Li, *Nature Methods*, 2026(周沛劼团队)](https://www.nature.com/articles/s41592-026-03010-3)
- [周沛劼 · 北京大学定量生物学中心课题组主页](https://cqb.pku.edu.cn/info/1002/2869.htm)

---

*本文档由 JouleBeat · DeepGraph 出具。实验代码、日志与原始结果随附,结论可被复查与反驳。*
