Per-cell-vs-global-scalar ablation: per-cell IS load-bearing for the target params¶
Date: 2026-06-27 · Status: verified (n=10/arm, cluster, identical geo1 config) · Answers: the manuscript reviewer-panel's #2 attack ("per-cell load-bearing is a non-sequitur"), issue #116, #19.
Setup¶
Identical geo1 config (3-AOI eqpac/natl/SO, GEOTRACES_W=1, real Daniels CP:PP R_PICPOC
anchor, Eppley, n=10 seeds, 2000 epochs). Only the parameter source differs:
- PER-CELL — the per-cell DINN (1×1 convs; each cell its own Carroll-6 vector). Source:
the canonical geo1_dan1 run.
- GLOBAL-SCALAR — one global Carroll-6 vector per seed (GlobalScalarNet), broadcast to
every cell/AOI; the differentiable analogue of a single Green's-functions optimum.
(Cluster job 7907450, t4, verified end-to-end.)
Result — per-parameter Cal-grade+ over 10 seeds¶
| param | per-cell | global-scalar |
|---|---|---|
alpfe |
10 | 10 |
scav_rat |
8 | 0 |
Smallgrow |
1 | 10 |
Biggrow |
4 | 10 |
diatomgraz |
1 | 10 |
R_PICPOC |
9 | 0 |
| {alpfe, scav_rat, R_PICPOC} JOINT | 7/10 | 0/10 |
| mean n_cal/6 | 3.30 | 4.00 |
| mean loss_final | 42.9 | 65.1 |
Verdict¶
Per-cell is decisively load-bearing for the parameters the study targets. On the
{alpfe, scav_rat, R_PICPOC} joint it is 7/10 vs 0/10; specifically scav_rat
(8 vs 0) and R_PICPOC (9 vs 0) require the per-cell predictor — a single global vector
cannot match the spatially-varying absolute anchors (GEOTRACES dissolved iron, Daniels
calcite). E.g. global R_PICPOC drifts to 0.092 (2.2× Carroll); global scav_rat lands 41%
off. alpfe is recovered by both (10/10). The separations are clean at n=10 (Fisher exact
p < 0.01 for each of scav_rat, R_PICPOC, and the joint). This answers the panel's #2
attack with data: per-cell load-bearing is not a non-sequitur — it is real, for the target trio.
The nuance (honest — and itself the identifiability thesis confirmed)¶
Per-cell is not uniformly better. The global-scalar recovers the growth/grazing params
(Smallgrow, Biggrow, diatomgraz) within the (generous, ~40% rel) Cal-grade band at
10/10, where per-cell drifts them out (1, 4, 1). Mechanism: per-cell flexibility lets each
cell's growth rate overfit — the same equifinality the synthetic demo shows
([[2026-06-27_synthetic_equifinality_demo]]) — while the global scalar's single-value
rigidity regularizes them toward the global Carroll value. So the global arm's higher
mean n_cal (4.00 > 3.30) is misleading: it counts loose growth-param "recoveries" that
are not the study's target (the growth pair is unobservable by construction from real
data). On the trio that matters, global = 0/10.
This is the project's central claim, confirmed on real ECCO-Darwin data: identifiability is parameter-specific; the per-cell predictor is load-bearing precisely for the anchor-constrained params and a liability (equifinality) for the under-anchored ones.
Caveats¶
- n=10. The extreme separations (scav_rat 8/0, R_PICPOC 9/0) are robust; the growth-param recoveries sit inside a generous ~40% band, so read them as "near Carroll," not exact.
- Per-cell arm =
geo1_dan1(canonical,verify_run.py-gated). A fresh identical-config re-run (abl_percell, job 7907598) was queued to cross-confirm. - GPU note: the global arm ran on t4 (CC 7.5); the cluster torch (cu128) has no kernels for V100 (CC 7.0) — a real gotcha for future cluster jobs.
Reproduce¶
GlobalScalarNet (src/darwindiff/networks.py) + GLOBAL_SCALAR=1; the geo1 env; then
aggregate_ablation.py over abl_global vs geo1_dan1.