案例 · 用户提交方向,已匿名
案例速览 判定 :负结果
数据源与对照规模 :LIBD Human DLPFC 12 张 10x Visium 切片,4 个实验臂 × 3 个随机种子,纯 CPU 682.5 秒
主要结论 :空间 kNN 平滑相对无空间基线提升 ARI +0.141,但均值 0.348 低于预注册的 0.40;几何空模型仅 0.0498。
这些结果不支持 :不支持零参数平滑已经足够、不支持跨方法排名,也不能外推到其他组织或空间组学平台。
代码 / 原始结果 / 日志 :代码、原始 results.json、运行日志、逐样本明细、图和一键复现脚本齐全。
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-nonspatialk=0, gmm_full 0.205 0.203 0.212 0.207 ± 0.00377proposed-smooth-knnk=24, gmm_full 0.353 0.342 0.348 0.348 ± 0.00483null-shuffle-exprk=24, gmm_full 0.00499 0.00487 0.00516 0.00501 ± 0.000118null-geometry-onlyk=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-nonspatial0.327 ± 0.00110 0.579 ± 0.00219 均值 0.0282(12 切片间标准差 0.0202) proposed-smooth-knn0.512 ± 0.00617 0.925 ± 0.00159 均值 0.0309(12 切片间标准差 0.0193) null-shuffle-expr0.0107 ± 0.000566 0.350 ± 0.00314 均值 0.00242(12 切片间标准差 0.00123) null-geometry-only0.0908 ± 0.00201 0.827 ± 0.00289 均值 0.0148(12 切片间标准差 0.0109)
> ari_seed_std 按定义就是逐切片统计量(每张切片一个"3 种子间标准差"),所以它的 12 个原始值是逐切片值,不是逐种子值——results.json 里对这一条有专门的 note 标注。
主结果图(本轮实验的关键对比)。原图见随附 figs/ 目录。 2. 怎么读这个结果
这些数支持什么
空间平滑的收益是真的,但不够。 +0.141 的提升 + 12 切片配对 p=0.000488,不是被个别切片带起来的(符号秩统计量 = 0.0,意味着 12 个配对差值方向一致;逐张数值见随附 CSV)。同时绝对水平 0.348 停在预注册的 0.40 之下,所以我们只能说"平滑有效",不能说"零参数平滑够用"。两个空模型都塌得很干净。 打乱表达 → 0.00501;真坐标 + 纯噪声表达 → 0.0498。所以 0.348 不是"变连续"这件事白捡来的分数。注意空间连贯性这一列:几何空模型的连贯性有 0.827(接近实验臂的 0.925),ARI 却只有 0.0498——"看起来很连续"和"分对了"是两回事,连贯性不能替代 ARI 。种子噪声不小。 同切片、同配置、只换种子,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——这轮没试,所以这轮只能照报推翻。
本轮相对方案的三处偏离(逐条交代)
top-2000 高变基因只在未平滑的 log-normalize 矩阵上选一次,两臂共用 ;平滑作用在已经选出的 2000 基因矩阵上,而不是全部 ≥10 细胞的基因集。理由:方案里基线臂自己的描述就要求"与实验臂共用完全相同的预处理,唯一差别是不做邻居平滑",共用 HVG 才是那个读法;而且对全基因集稠密平滑在 CPU/内存预算里跑不动。代价:HVG 选择本身从未在平滑后的数据上重跑过。 α(平滑权重)的稳健性扫描 {0.25, 0.5, 0.75} 被跳过 ,α 固定 0.5。方案里这一项标的是"若时间有余",预算花在了完整的 12 切片 × 2 聚类器 × 多 k 扫描上。聚类器按方案扫了 {kmeans, gmm_full},但报告里的基线臂和实验臂都用扫描(k>0)胜出的那个聚类器(gmm_full) ,所以基线-实验对比是在一个固定的、表现最好的聚类器上隔离平滑效应,而不是把 kmeans 和 gmm_full 当两组独立的基线/实验对分别汇报。
3. 你现在可以拿它做什么
最短路径(值得投)
把 GPU 方法在同一预处理下重跑。 现在你手上有一个零参数、可复现的下限 0.348 和一个不用坐标的下限 0.207。深度方法真正该被问的是"比这两个下限多拿了多少",而不是"ARI 是多少"。这是审稿人的第一问,也是把这轮工作变成完整一篇的必经步骤——需要 GPU,是你自己有算力时的第一件事。接着写"种子间波动"这个点。 0.0282 / 0.0309 这个量级是这轮顺手拿到的,而这条线上的新方法论文普遍只报单次运行的两位小数 ARI。"比较精度本身存疑"是可写的发现,而且完全不需要算力——把种子数加上去、逐切片报 ARI 分布即可。把 k 继续往上扫、顺带扫 α。 CPU 几分钟一轮。它要么把 P1 推过 0.40(那结论要改写),要么给出真正的饱和点(那"零参数平滑的天花板"这句话才能说)。
先别投
别再往"ARI 几何免费分"这条线投。 这是我们原本判断杀伤力最大的一条(SCOPE.md 第 2 节缺口 B),但 0.0498 这个数把它关掉了:这个数据集上不存在值得重估已发表比较的几何白捡分。这是个负结果,但它替你省掉了一整条死路。别正面去和时空动力学的生成式基础模型比模型大小。 (SCOPE.md 第 0 节)资源不对等,审稿人第一句话就是"和它比呢"。能差异化的位置是"可验证性",不是"更大的模型"。
审稿人最可能打的地方 (SCOPE.md 第 3 节,本轮结果对应的堵法)
"只有 DLPFC 一个数据集/一个平台。" 最致命。本轮已做的:12 张切片全跑,不挑张。还需要做的:讨论里明确写死边界"本结论限于 10x Visium 分层组织"。主动划边界比被审稿人划便宜。"是不是拿弱基线打靶?" 本轮已做的:自变量做成网格全扫、种子固定、每个格点的原始日志公开(随附 sweep_detail.csv / run.log),基线与实验臂共用同一聚类器和同一套预处理。"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.csv12 张切片逐张的 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 (DOI: 10.1093/nar/gkaf303)Zero-shot evaluation reveals limitations of single-cell foundation models — Kedzierska et al., Genome Biology , 2025 Transcriptome-scale spatial gene expression in the human dorsolateral prefrontal cortex — Maynard et al., Nature Neuroscience , 2021(DLPFC 数据集原文) LieberInstitute/HumanPilot — DLPFC 原始数据、点坐标与人工分层标注(本轮实验的数据入口) SpaGCN: Integrating gene expression, spatial location and histology ... — Hu et al., Nature Methods , 2021 Deciphering spatial domains from spatially resolved transcriptomics with an adaptive graph attention auto-encoder (STAGATE) — Dong & Zhang, Nature Communications , 2022 SPCS: a spatial and pattern combined smoothing method for spatial transcriptomic expression — Liu et al., Briefings in Bioinformatics 23(3), 2022 GraphPCA: a fast and interpretable dimension reduction algorithm for spatial transcriptomics data — Genome Biology , 2024 stVCR: spatiotemporal dynamics of single cells — Peng, Zhou & Li, Nature Methods , 2026(周沛劼团队) 周沛劼 · 北京大学定量生物学中心课题组主页
本文档由 JouleBeat · DeepGraph 出具。实验代码、日志与原始结果随附,结论可被复查与反驳。
口径与边界。 top-2000 HVG genes are selected ONCE per sample on the unsmoothed log-normalized matrix and reused for both baseline-nonspatial and proposed-smooth-knn (spec's own baseline description requires '与实验臂共用完全相同的预处理...唯一差别是不做邻居平滑', i.e. smoothing is the only difference); smoothing is applied to the already-HVG-selected 2000-gene matrix rather than the full >=10-cell gene set, to keep memory/compute tractable in the 45-minute CPU budget. This does not change what is being tested (does spatial averaging of the same features help) but does mean HVG selection itself is never re-run on smoothed data. alpha (smoothing weight) robustness sweep in {0.25,0.5,0.75} on slice 151673 was marked optional ('若时间有余') in the plan and was skipped to stay inside the time budget; alpha is fixed at 0.5. clusterer is swept over {kmeans, gmm_full} as specified, but the reported baseline/proposed arms both use whichever clusterer won the (k>0) sweep by mean ARI, so the baseline-vs-proposed comparison isolates the smoothing effect at a fixed, best-performing clusterer rather than reporting kmeans and gmm_full as separate baseline/proposed pairs. 这些限制与负结果均保留在原始材料中。