Skip to content

feat(criteria): multi-class volatile access (v2.1) - #10

Merged
Alex0420W merged 1 commit into
mainfrom
feature/v2.1-multi-volatile
May 9, 2026
Merged

Alex0420W merged 1 commit into
mainfrom
feature/v2.1-multi-volatile

Conversation

@Alex0420W

Copy link
Copy Markdown
Owner

Replaces v1.x single ice criterion (Diviner PRP ice-depth + PSR-proximity bonus) with three-class volatile access inside the same 2 km EVA disc: H₂O cold trap (temp_max < 110 K), CO₂/NH₃ cold trap (temp_max < 66 K), and ultra-cold (temp_max < 60 K). Mirrors NASA's documented volatile-diversity priority (Lawrence 2025 FOM names "volatile diversity" as a first-class FOM category) and Wueller 2026's per-class treatment in the peer-reviewed reference. Cold-class thresholds come from Paige et al. 2010, Hayne et al. 2015, and the Hayne et al. 2020 micro-cold-trap classification.

Equal sub-weights (1/3 each) by default — agnostic on NASA's preference ordering between volatile classes; sub_weights= exposed for downstream sensitivity. Combined-score implementation reuses v2.0's scipy.ndimage.convolve circular-kernel pattern; compute_components returns the three sub-scores plus the combined for diagnostic visibility. Per-class component COGs persist alongside the combined score so the catalog surfaces which sites access multiple volatile classes vs single without rerunning preprocess+score. Weight slot unchanged at 0.17 (same as v1.x ice) so the v2.0 → v2.1 comparison is methodology-only.

20 m headline (default-weights, eight active criteria with multi_volatile): 69 sites (was 69 at v2.0); 54 / 69 = 78.3 % within 5 km of an in-scope Wueller site (was 79.7 %); median matched-pair distance 1.84 km (unchanged). Of 69 v2.1 20 m sites: 30 within 10 m of a v2.0 site (identical re-pick); 24 reranked < 1 km, 15 reranked 1-5 km, 0 reranked > 5 km — methodology swap is broader than v2.0's coupling → eva swap (which had 59 of 69 identical) but keeps every site inside its polygon. Per-region site counts unchanged from v2.0.

240 m baseline (full 240 m run, 70-site catalog): 52 / 70 = 74.3 % within 5 km, median 1.87 km, 42 / 73 = 57.5 % Wueller-side.

Per-class breakdown — substantive new content of v2.1: of 69 sites, 0 access all three thermal classes within 2 km EVA disc, 1 accesses two classes (H₂O + CO₂/NH₃), 5 access H₂O only, 63 have no cold-class neighbour within 2 km. The ISRU-volatile-rich subset is concentrated in Nobile Rim 2 (4 of 5 H₂O+ sites, including the only two-class site). The 0 / 69 all-three-classes count isn't a bug — it's the real finding that selene's HLS-compliant catalog is a habitable rim-band catalog, spatially separate from the deepest-cold-trap floors (1-10 km away). Surfaces a gap the v1.x ice criterion couldn't expose.

Per-launch-year HLS cross-check (20 m, matched sites): 23 / 54 pass HLS for 2028 (Artemis IV); 52 / 54 pass HLS in at least one launch year 2025-2032; per-year pass counts: 43 / 23 / 25 / 23 / 31 / 29 / 20 / 42 across 2025-2032.

Continuous-lit illumination metric and rock-abundance safety filter remain deferred indefinitely (data-blocked: PGDA hourly cube not distributed; all public Diviner rock-abundance products clip at ±60-70°). NASA-priority sub-weights remain a candidate follow-on if quantitative weighting becomes public.

Summary

What this PR does, in 1–3 sentences.

Motivation

Why this change is worth making (link the issue if there is one).

Checklist

  • ruff check . passes
  • ruff format --check . passes
  • pytest passes locally
  • New behaviour has a test (or an explicit # noqa reason if not)
  • Public-facing changes (CLI flags, criterion math, file layout) are
    reflected in the README or the relevant module docstring
  • No real-data fixtures were committed; new tests run in CI without
    downloaded data (or are guarded with pytest.mark.skipif)

Scope notes

  • Things this PR explicitly does not address (so reviewers know what
    to expect in follow-ups).

Replaces v1.x single ``ice`` criterion (Diviner PRP ice-depth +
PSR-proximity bonus) with three-class volatile access inside the same
2 km EVA disc: H₂O cold trap (temp_max < 110 K), CO₂/NH₃ cold trap
(temp_max < 66 K), and ultra-cold (temp_max < 60 K). Mirrors NASA's
documented volatile-diversity priority (Lawrence 2025 FOM names
"volatile diversity" as a first-class FOM category) and Wueller 2026's
per-class treatment in the peer-reviewed reference. Cold-class
thresholds come from Paige et al. 2010, Hayne et al. 2015, and the
Hayne et al. 2020 micro-cold-trap classification.

Equal sub-weights (1/3 each) by default — agnostic on NASA's preference
ordering between volatile classes; ``sub_weights=`` exposed for
downstream sensitivity. Combined-score implementation reuses v2.0's
``scipy.ndimage.convolve`` circular-kernel pattern; ``compute_components``
returns the three sub-scores plus the combined for diagnostic visibility.
Per-class component COGs persist alongside the combined score so the
catalog surfaces *which* sites access multiple volatile classes vs
single without rerunning preprocess+score. Weight slot unchanged at
0.17 (same as v1.x ``ice``) so the v2.0 → v2.1 comparison is
methodology-only.

20 m headline (default-weights, eight active criteria with
multi_volatile): 69 sites (was 69 at v2.0); 54 / 69 = 78.3 % within
5 km of an in-scope Wueller site (was 79.7 %); median matched-pair
distance 1.84 km (unchanged). Of 69 v2.1 20 m sites: 30 within 10 m
of a v2.0 site (identical re-pick); 24 reranked < 1 km, 15 reranked
1-5 km, 0 reranked > 5 km — methodology swap is broader than v2.0's
coupling → eva swap (which had 59 of 69 identical) but keeps every
site inside its polygon. Per-region site counts unchanged from v2.0.

240 m baseline (full 240 m run, 70-site catalog): 52 / 70 = 74.3 %
within 5 km, median 1.87 km, 42 / 73 = 57.5 % Wueller-side.

Per-class breakdown — substantive new content of v2.1: of 69 sites,
0 access all three thermal classes within 2 km EVA disc, 1 accesses
two classes (H₂O + CO₂/NH₃), 5 access H₂O only, 63 have no cold-class
neighbour within 2 km. The ISRU-volatile-rich subset is concentrated
in Nobile Rim 2 (4 of 5 H₂O+ sites, including the only two-class site).
The 0 / 69 all-three-classes count isn't a bug — it's the real finding
that selene's HLS-compliant catalog is a habitable rim-band catalog,
spatially separate from the deepest-cold-trap floors (1-10 km away).
Surfaces a gap the v1.x ``ice`` criterion couldn't expose.

Per-launch-year HLS cross-check (20 m, matched sites): 23 / 54 pass
HLS for 2028 (Artemis IV); 52 / 54 pass HLS in at least one launch
year 2025-2032; per-year pass counts: 43 / 23 / 25 / 23 / 31 / 29 /
20 / 42 across 2025-2032.

Continuous-lit illumination metric and rock-abundance safety filter
remain deferred indefinitely (data-blocked: PGDA hourly cube not
distributed; all public Diviner rock-abundance products clip at
±60-70°). NASA-priority sub-weights remain a candidate follow-on if
quantitative weighting becomes public.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Alex0420W
Alex0420W merged commit ad8295e into main May 9, 2026
3 checks passed
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