复现 Moncada PDAC 单细胞与空间数据:spot 共表达能说明到哪一步
把单细胞亚群放回组织切片,是肿瘤研究里很有吸引力的一步。单细胞数据给出 ductal、immune、fibroblast 等 compartment,空间数据又提供一张组织坐标图。两类结果摆在一起,很容易顺势写出“共定位”“细胞接触”甚至“恶性细胞抑制成纤维细胞”这样的故事。
Moncada 等人的 PDAC 研究很适合检验这条推理链。公开数据同时包含 scRNA-seq 和早期空间转录组资源,但可用生物学重复很少,scRNA run 与患者完全嵌套,空间 spot 还是多细胞混合测量。只看一张颜色相反的空间图,无法判断它反映的是细胞接触、区域构成,还是少数 section 的组织结构。
分析先分别固定 scRNA 与 spatial 的真实分母,再对 patient×label 做 held-out evidence gate。空间部分把 exact_ab、exclude_c、predeclared 和 validation_passing 保留为四条证据定义不同的 chain:前三条是可计算的敏感性链,并不都满足 patient-label gate;validation_passing 因 Fibroblast program 不可评估而整条保持 NE。scRNA 端覆盖 A/B/C 三位患者;spatial 端覆盖 A/B/D/E/F/G 六位患者和十张切片,其中 predeclared 因 F_ST1 coverage failure 只有五位患者、九张可评估切片。现有结果支持区域混合关联,不提供细胞接触、配体受体或因果机制证据。
论文和数据来源
- 论文:Moncada R. et al. Integrating microarray-based spatial transcriptomics and single-cell RNA-seq reveals tissue architecture in pancreatic ductal adenocarcinomas. Nature Biotechnology, 2020。
- DOI:10.1038/s41587-019-0392-8
- PubMed:31932730
- GEO:GSE111672
分析读取的是 GEO processed per-barcode UMI count tables 和 spatial processed tables。没有从 FASTQ 重新比对,也不能重新审计 mapping、barcode correction 或 UMI collapsing。输入 manifest 覆盖 pipeline 实际读取的 42 个文件;数据目录里的上游 GSE111672_RAW.tar symlink 不在这 42 个输入中,因此没有被分析读取。
先把数据身份和输入范围锁住
分析直接读取 13 个 scRNA run 和 10 个 spatial section 的 processed 表。A/B 作者合并矩阵用于标签回配,其中 3,659 个细胞通过完整 count-vector hash 唯一回配到逐 run 输入,QC 后仍有 3,611 个 exact author-label 细胞。这一步让作者标签的来源可追溯,也避免把合并文件里无法解释的细胞直接当作独立新样本。
空间端保留了所有公开 section,并把 section、患者、坐标和来源文件作为不可丢失的字段。上游 RAW tar 的 symlink 只属于目录获取痕迹,没有进入 42-file input manifest;因此本文可以证明哪些 processed 文件被读取,不能声称对未读的 FASTQ 或 tar 做过质量审计。这个区别会影响“复现”的准确含义:这里复现的是公开 processed-count 层面的分析链。
研究问题也需要按数据层级拆开。scRNA 负责提供细胞状态与 marker evidence,spatial 表负责显示 spot/region 的混合表达;两者通过预先登记的 program genes 连接。若把这个连接直接写成“细胞回填到坐标”,就把 program score 当成了单细胞定位,超出了输入矩阵能提供的信息。
13 个 runs 只有 3 位患者
scRNA 原始汇总为 27,000 个细胞、20,330 个基因。baseline QC 后保留 6,332 个细胞。公开文件分成 13 个 runs,但这些 runs 完全嵌套在 A、B、C 三位患者中。run 可以用来观察技术和取样结构,不能当作 13 个独立病例。

图 1 同时展示 liberal、baseline 和 strict QC。它回答每个 run 在阈值变化下保留多少细胞,也把 27,000→6,332 的分母链摊开。这个图不提供人群层面的 QC 率,三位患者的结果也不能外推到 PDAC 总体。
这条 retention chain 要按 run 看,而不是只报一个总保留率。run 完全嵌套于 A、B、C,某个患者的多次取样会同时改变 run 数、细胞数和患者内 composition。baseline 6,332 个细胞是后续 scRNA 对象的工作分母;liberal 与 strict 版本用于检查阈值移动是否把某个患者或某类标签从分析中推走。它们不是三个独立实验,也不能被合并成一个“QC 后病例数”。
PCA、Harmony 和聚类稳定性先用来查混杂

图 2 检查 PCA 与 Harmony 中 13 个 run 的位置。run 分布与患者完全嵌套,图例完整列出所有 run;Harmony 后留下的结构只能提示混杂,不能换算成患者效应,患者标签也不能在这里充当批次校正后的独立真值。

图 3 用多组 resolution 和 seed 检查 cluster 分区是否容易重排。较高稳定性说明流程对这些参数变化较稳,不说明某个 cluster 数量就是唯一的生物分类;后续细标签仍要经过 patient×label 的 held-out gate。

PCA、Harmony 和 UMAP 在这里承担的是结构审计。患者和 run 的信息有明显重叠,Harmony 之后仍不能把“患者生物学”和“run effect”拆成两个独立来源。cluster 在多组 resolution/seed 下有技术稳定性,只说明流程没有在轻微参数变化时完全重排,不能把稳定 cluster 直接等同于生物学真值。
UMAP 也不支持轨迹或机制判断。它适合展示细胞在当前表达空间里的邻近关系,后续 composition、program 和 spatial association 仍要回到患者、section 和 source table。
结构敏感性表给出了可量化的范围:resolution 0.5 的 14 个 cluster 在三个 seed 间 pairwise ARI 中位数为 0.919561;相邻 resolution 的 ARI 在 0.3→0.5 为 0.746589,在 0.8→1.0 为 0.941009。A→B 与 B→A 的 reference transfer 也被单独计算,balanced accuracy 分别为 0.761423 和 0.858792,macro-F1 分别为 0.612202 和 0.879696。由于表示空间由全体细胞共同生成,这些结果是 transductive sensitivity,不是把患者当作从未见过的外部队列。
患者 C 没有作者标签。A-only、B-only 与 A+B full transfer 在 888 个 C 细胞上给出相同 top label,但加上 probability≥0.70、top-two margin≥0.25、leave-one-training-run agreement≥0.80 和同一 broad compartment marker support 后,只有 229/1,285 个候选满足 strict robust transfer。这个数字仍只是参考迁移候选,必须再经过 C 自身的 patient-level held-out gate,不能直接当成 C 的权威细胞类型。
标签门控:30 个 patient×label 只有 11 个 PASS
标签构建与 held-out 验证使用不同 marker sets。验证被放到 patient×label 层面,避免一个标签在某位患者里有证据、在另一位患者里证据不足,却被统一写成“已验证”。

30 个 patient-label combinations 中,11 个 PASS、12 个 FAIL、7 个 NE。FAIL 和 NE 对应的 fine labels 不进入后续细标签分析。患者 C 只保留 Myeloid 细标签,共 72 个细胞,其他细标签不能因为在 A/B 中出现过就自动转移到 C。
这里的 0.05 effect threshold 是工程门控,不是显著性 P 值。assignment markers 和 validation markers 不重叠,减少了同一 marker 自证循环;它仍属于同一 assay 内的验证,没有外部 atlas、组织学或功能实验支持。
患者组成和 enrichment 只能作描述

图 6 适合展示 A、B、C 的 composition 差异,却没有人群统计含义。三位患者的差别可能来自真实肿瘤异质性,也可能受取样位置、run 构成和 QC 影响。把这些 fraction 写成“PDAC 患者普遍增加某类细胞”会超过数据设计。
patient-stratified label-vs-rest enrichment 共 592,481 rows。它描述同一患者内某标签相对其余细胞的表达富集,不是病例组与对照组差异表达,也没有可校准的人群 P 值。文章可以用它解释 program 来源,不能把表里的排序包装成显著 DE gene list。
这 592,481 行的正确读法是“在患者内,某个已门控标签相对同一患者其他 eligible labels 的聚合表达差”。它混合了目标标签的表达、背景标签的组成和每位患者的测序深度,适合帮助检查 program 的来源,不适合回答“PDAC 患者普遍上调了哪些基因”。如果项目需要病例级差异表达,必须增加患者和对照,并在患者层面建立可估计的离散度模型。
细粒度标签为什么会在患者 C 失效

门控要求每个 patient-label 至少 20 个细胞、至少两个 run 各有 5 个细胞、目标 validation score 比最佳非目标 signature 高 0.05,并且至少 75% 的 eligible run 差值为正。30 个组合中只有 11 个满足;12 个 FAIL 和 7 个 NE 不会因为 A/B 有同名标签就自动继承到 C。最终 C 只保留 72 个通过门控的 Myeloid 细标签,其余细胞落到宽 compartment、Erythroid signal 或 Ambiguous。
这里的 0.05 是工程阈值,用来阻止低证据标签进入下游链,不是 P 值,也不是“置信度 95%”。阈值网格和 run-level validation 表均保留在分析结果中。assignment markers 与 validation markers 不重叠,减少同一 marker 自证;但 validation 仍来自同一 assay,没有外部 atlas、组织学或功能实验,所以不应写成独立验证。
scRNA program 的证据也受标签门控约束

图 8 只使用 evidence-gated final labels,并按 patient×label 汇总 program 中位数。它能展示三位患者内部的 program 差异和标签不确定性。exact author Fibroblast 只有 5 个细胞,并且全部来自 1 位患者,validation-passing Fibroblast program 因此不可评估。这个分母决定了后面的空间解释不能声称已经从单细胞层面得到一个跨患者稳定的 fibroblast program。
空间数据:10 张切片,3,254→3,223 个 spots
空间部分包含 10 个 sections,原始 3,254 个 spots,门控后保留 3,223 个 spots、19,738 个基因。spot 含有多种细胞,section 也不是独立患者。空间图上的强弱变化主要表示区域混合表达,不能直接指定到某一细胞对。

图 9 把每张切片的 QC 和保留量分开。后续相关性分析始终保留 section 身份,并补充 patient-equal 与 one-section-per-patient sensitivity,避免 spots 多的切片在汇总时获得过大权重。
空间端的分母与 scRNA 端不能互换。3,223 个 retained spots 是区域测量数,10 个 section 是切片层级,患者 A、B 各有三个 section,D、E、F、G 各有一个。spots 多的患者如果直接 pooled,会在相关系数中获得更大权重;因此主汇总先在 section 内计算 Spearman,再按患者等权汇总,并把每个 section 的原始值保留在表中。
coverage failure 要写成 NE,不能填成零
空间 program 采用四条预先登记的 chain:exact_ab、exclude_c、predeclared 和 validation_passing。前三条可计算,validation_passing 为 NE。F_ST1 源文件在 ETFB 附近截断,保留 5,757 个完整基因行,另有一个 malformed ETFB 行。predeclared malignant 的 13 个请求基因在 F_ST1 中没有可用项,因此相应 score/pair 是 NE。

图 10 把 predeclared malignant program 的空间分布与基因覆盖放在一起。F_ST1 的 13 个请求基因均不可用,因此该 section 保持 NE;其余可计算 section 的颜色也只能在各自 section 内解释。

NE 表示输入覆盖不足,不能改写成“该程序不表达”。图 10 和 11 每个 section 分别按自身分数范围定标颜色,因此颜色深浅只能在同一 section 内解释,不能跨 section 比较绝对 program 分数。颜色较高的 spots 也不是纯 malignant 或纯 fibroblast 区域;它们是多个基因在混合 spot 中的汇总分数。
F_ST1 的边界需要单独说明。源表有 5,757 个完整基因行,ETFB 附近还有一个 malformed 行;predeclared malignant 请求的 13 个基因在 F_ST1 中可用数为 0。程序因此返回 NE,后续 pair 也保持 NE。把缺失基因填成表达 0,会把“文件没有提供证据”伪装成“组织里没有表达”,并会人为改变相关方向。所有四条 chain 都登记了每个 section 的 gene coverage,validation-passing chain 因单细胞 Fibroblast 门控不足同样保持 NE。
三条可计算空间链都呈负相关,证据仍停在区域关联

exact_ab、exclude_c、predeclared 三条可计算链的 patient-equal rho 约为 −0.0852、−0.0814 和 −0.2326。方向都为负,效应量并不大,且来自 section/region mixture。图 12 只保留十个真实 section 列:predeclared 的 F_ST1 以斜线格和 NE 标出,validation_passing 整行也显式标为 NE;这些格子没有数值,不能与接近零的白色相关性格混为一谈。

图 13 按生物学患者分面,每个 section 只显示三个可计算 chain 的独立散点,不使用折线连接不同切片。F_ST1 的 predeclared 位置明确标为 NE,也没有从 E_ST1 跨过缺口连接到 G_ST1。有些切片负相关较明显,有些接近零;这种异质性提示关联依赖组织区域和切片组成。它没有告诉我们 malignant cells 与 fibroblasts 是否直接接触,也没有提供配体受体、方向性或抑制机制。
三条可计算 chain 的 patient-equal rho 分别为 exact-A/B-only −0.085226、exclude-C −0.081366、predeclared −0.232574。逐 section 的符号并不统一:三条链分别有 2/8、3/7 和 3/6 个正/负 section。方向一致只说明在这些 section-level summaries 中存在反向共变线索,不能把 rho 当作细胞数量或空间距离的函数,更不能把三条 chain 的相同方向解释成同一分子机制。data-derived 与 predeclared gene sets 的 Jaccard 和贡献患者也已分别登记。
one-section-per-patient sensitivity 检查切片权重

每位空间患者选一张 section 的组合被全部穷举,每条可计算 chain 恰有 9 个组合。exact_ab 与 exclude_c 的每个组合包含六位患者;predeclared 因 F_ST1 为 NE,每个组合包含五位患者。空间患者数量仍然很少,这 9 个组合也复用同一批患者和 sections,不是 9 个独立生物学重复。结果只能支持“方向对 section 选择不太敏感”的描述,不能生成可推广的人群 P 值。
对可计算链,exact-A/B-only 的组合范围为 −0.116655 至 −0.041317,exclude-C 为 −0.109988 至 −0.048048;predeclared malignant 在 F_ST1 因 coverage=0,只有其余五位患者的组合可评估,范围为 −0.269451 至 −0.192313。这个穷举敏感性回答的是“换一张切片后区域方向是否会完全改写”,没有把组合数当作新的患者样本。
与原文对照:公开数据允许走到哪一步
这项 processed-count 分析能够恢复 scRNA 与 spatial 分母、patient/run 结构、标签证据门控和区域 program association。原文中的空间关系需要拆成多个可核对条件:program gene coverage 是否足够,标签是否通过患者级门控,section 是否被少数患者或区域主导,换一张 section 后方向是否保持。
无法恢复的部分包括 FASTQ 级 preprocessing、作者内部完整对象、组织学对照和单细胞分辨率空间定位。当前数据也没有足够患者数支持 population-level DE、预后或机制推断。
与原文相比,本文保留了公开 processed 表能够支持的部分:13-run scRNA 与 10-section spatial 的真实读取范围、A/B 作者标签的 exact count-vector 回配、patient-label evidence gate、coverage-aware program chain 和 section-level sensitivity。本文没有复刻原文全部 multimodal intersection 或 deconvolution 算法,因为这些步骤需要作者内部对象、原始读取处理或额外参数。因此,“结果相容”不应被读成“算法逐行相同”。
深度解读:这篇复现应该怎么读
这篇分析回答了什么
文章回答的是“由单细胞数据导出或预先登记的 program 在空间混合测量中是否出现一致的区域关联”,并给出 coverage、patient、section 和标签门控边界。它没有回答两类细胞是否直接相邻、谁影响谁,或这种关系是否与预后相关。
processed counts 的边界
公开 per-barcode UMI counts 足以重建 QC、聚类、标签门控和 program score。缺少 FASTQ 与作者内部 pipeline 时,mapping、barcode correction、UMI collapsing 和 deposition 前过滤无法复核。空间 processed table 也不提供单细胞坐标。
主图怎样连起来读
Figure 05/07 决定哪些 fine labels 可以进入单细胞主分析,但不会把 exact_ab、exclude_c 或 predeclared 敏感性链升级为 validation-passing。Figure 10/11 说明空间 program 是否有足够基因覆盖;Figure 12/13 展示 section 内关联;Figure 14 检查 section 选择是否改变方向。跳过任意一层,都可能把标签不确定性或 coverage failure 误写成生物学结论。
最容易过度解释的地方
13 个 runs 不是 13 位患者,spots 不是患者重复,program correlation 也不是细胞接触。Fibroblast 的单细胞分母只有 5 个细胞/1 位患者;F_ST1 的残缺行和基因覆盖不足使部分 chain 必须保持 NE。Harmony 与 UMAP 无法消除这些设计限制。
继续深入需要什么
最直接的补强来自更多患者、独立空间平台、组织学或原位验证,以及能区分细胞类型的高分辨率空间数据。若要讨论细胞通讯,还需要单独的配体受体模型、空间邻域定义和独立验证,而不是从两个 program 的负相关直接外推。
对类似单细胞—空间项目的可复用工作单
这条证据链可以直接迁移到其他“单细胞标签 + 空间图”的旧项目。输入清单先固定每个文件是否真的被读取;scRNA 表保留 run、患者、author label 与当前 evidence-gated label 两套字段;空间表保留 section、患者、坐标、spot QC 和 gene coverage;program 表再登记 gene set 来源、缺失处理、matched controls、每 section 的贡献和汇总权重。这样才能在一个相关系数出现时追溯到它由哪些患者、哪些 section、哪些基因构成。
读者如果手里只有 processed counts,也可以先做三件可复核的工作:重建 retention chain,检查标签是否在每位患者都有 held-out 支持;把 spot program 的 coverage failure 写成 NE;在患者等权和 one-section sensitivity 下重算方向。若这三步无法闭合,继续增加颜色更丰富的空间图不会增加证据强度。
结论审计
当前数据支持
- 13 scRNA runs 嵌套于 A/B/C 三位患者,27,000→6,332 cells 的 QC chain;
- 30 patient-label combinations 的 11 PASS、12 FAIL、7 NE 处置;
- 三位患者内部的 composition、program 和 label-vs-rest descriptive enrichment;
- 10 sections、3,223 spots 的 coverage-aware spatial program;
- 三条可计算 chain 的 section/region mixture 负相关及 one-section sensitivity;
- F_ST1 coverage failure 和 validation-passing chain 的 NE 边界。
可以作为后续验证问题
- malignant 与 fibroblast program 的区域反向共变;
- data-derived 与 predeclared gene sets 的方向一致性;
- 患者 C 的 reference-transfer candidates。
当前不能说
- 13 runs 代表 13 位患者;
- label-vs-rest enrichment 是人群差异表达;
- program 负相关证明细胞接触、配体受体通讯、恶性细胞抑制成纤维细胞或因果机制;
- F_ST1 缺失的基因等于不表达;
- 当前结果可以解释预后、疗效或临床分层。
这批数据提供了一个很有用的边界案例。单细胞和空间数据确实能互相校验,校验发生在 program、coverage、患者和 section 层面。把每一层的分母和不确定性写清楚,空间相关图才有研究价值;省略这些条件,同一张图很快就会被解释成数据并未证明的细胞互作。