Skip to content

test(gldzm): vet 18 grey-level-distance-zone features vs IBSI -> gldzm 35/36 - #386

Open
darkclad wants to merge 4 commits into
PolusAI:mainfrom
darkclad:main-gldzm
Open

test(gldzm): vet 18 grey-level-distance-zone features vs IBSI -> gldzm 35/36#386
darkclad wants to merge 4 commits into
PolusAI:mainfrom
darkclad:main-gldzm

Conversation

@darkclad

Copy link
Copy Markdown

17 3D features (3GLDZM_{SDE,LDE,LGLZE,HGLZE,SDLGLE,SDHGLE,LDLGLE,LDHGLE,GLNU,GLNUN, ZDNU,ZDNUN,ZP,GLM,GLV,ZDV,ZDE}) plus 2D GLDZM_ZDV were regression, but their IBSI oracle tests already existed and were wired (test_3d_gldzm_ibsi.h at 10% on the 3D compat phantom; test_gldzm_ibsi.h for the 2D) and pass. Reconcile to vetted (ibsi).

3GLDZM_ZDM NOT promoted -- it is the only gldzm feature with no wired oracle test, and adding one shows the reference table value (222) is very likely WRONG rather than Nyxus: 3GLDZM_ZDV, the variance of the SAME zone-distance distribution, is 79.7 and passes => std ~= 8.9, so a mean zone distance of 222 is impossible (distances are bounded by ROI size), while Nyxus' mean 15.31 with variance 79.7 is self-consistent. Deliberately not pinning Nyxus' own output as the oracle; flagged suspected-bad-reference with candidate oracle MIRP, pending an independent GLDZM run on the 3D compat phantom.

gldzm 17->35 of 36 vetted. Registry + regenerated coverage_report.md only; no test or source change.

Demian Vladi added 3 commits July 22, 2026 11:03
…m 35/36

17 3D features (3GLDZM_{SDE,LDE,LGLZE,HGLZE,SDLGLE,SDHGLE,LDLGLE,LDHGLE,GLNU,GLNUN,
ZDNU,ZDNUN,ZP,GLM,GLV,ZDV,ZDE}) plus 2D GLDZM_ZDV were regression, but their IBSI
oracle tests already existed and were wired (test_3d_gldzm_ibsi.h at 10% on the 3D
compat phantom; test_gldzm_ibsi.h for the 2D) and pass. Reconcile to vetted (ibsi).

3GLDZM_ZDM NOT promoted -- it is the only gldzm feature with no wired oracle test,
and adding one shows the reference table value (222) is very likely WRONG rather than
Nyxus: 3GLDZM_ZDV, the variance of the SAME zone-distance distribution, is 79.7 and
passes => std ~= 8.9, so a mean zone distance of 222 is impossible (distances are
bounded by ROI size), while Nyxus' mean 15.31 with variance 79.7 is self-consistent.
Deliberately not pinning Nyxus' own output as the oracle; flagged
suspected-bad-reference with candidate oracle MIRP, pending an independent GLDZM run
on the 3D compat phantom.

gldzm 17->35 of 36 vetted. Registry + regenerated coverage_report.md only; no test or
source change.
Self-correction to the previous commit on this branch. The 17 3D GLDZM features were
promoted to vetted(ibsi) on the strength of the wired, passing tests in
test_3d_gldzm_ibsi.h. That was wrong: those tests are a drift guard, not an oracle.

Evidence:
- The reference table `d3gldzm_GT` carries NO provenance (no tool/version/config),
  contrary to SPEC 6.4, and is not named like the genuine IBSI tables.
- It is evaluated on the Nyxus coverage phantom ut_inten.nii, NOT the IBSI digital
  phantom, so IBSI consensus values cannot apply to it.
- An independent MIRP GLDZM run (IBSI implementation; pyradiomics has no GLDZM) on the
  same phantom at the same discretisation (fbn n=64) disagrees on EVERY feature:
  LDE 11.23 vs 314, SDE 0.382 vs 0.0224, ZDV 3.25 vs 79.7, ZP 0.270 vs 0.47.

So the 17 3D rows go back to regression with flag=unproven-reference and candidate
oracle MIRP. Harness added offline: morph_oracle/mirp_gldzm_3d.py.

Retained: 2D GLDZM_ZDV stays vetted(ibsi) -- test_gldzm_ibsi.h genuinely runs on the
IBSI digital phantom (ibsi_phantom_z1..z4) with documented consensus values.

3GLDZM_ZDM: now established to have NO external oracle at all -- IBSI's GLDZM set has
no zone-distance MEAN and MIRP emits only dzm_zd_var / dzm_zd_entr. Its 222 reference
is unusable (no provenance; internally inconsistent with the same distribution's
variance 79.7 => std ~8.9). Flagged no-external-oracle.

gldzm: 17 -> 18 of 36 vetted (net +1, the 2D ZDV only).

NOTE: test_3d_ngldm_ibsi.h has the SAME defect (`d3ngldm_GT`, no provenance, same
phantom, MIRP disagrees on every feature) -- the 18 ngldm 3D promotions on branch
main-ngldm need the same retraction.
Follow-up to the retraction in a9f79ad. Despite the "_ibsi" filename, the d3gldzm_GT
table in test_3d_gldzm_ibsi.h has no recorded tool/version/config (SPEC 6.4 requires
provenance for oracle goldens) and is evaluated on the Nyxus coverage phantom
ut_inten.nii, NOT the IBSI digital phantom -- so IBSI consensus values cannot apply.

Add a header documenting that, with the side-by-side MIRP comparison that disproves the
oracle claim (LDE 314 vs 11.235, SDE 0.0224 vs 0.382, ZDV 79.7 vs 3.246, ZP 0.47 vs
0.270, ZDE 10.23 vs 7.505; MIRP GLDZM, fbn n=64, same phantom -- pyradiomics has no
GLDZM). States explicitly that these tests are regression/drift guards and that features
must NOT be promoted to vetted on the strength of them passing.

Also records that 3GLDZM_ZDM has no counterpart anywhere: IBSI's GLDZM set defines no
zone-distance mean and MIRP emits only dzm_zd_var / dzm_zd_entr.

Comment-only; gldzm suite still 54/54.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant