diff --git a/README.md b/README.md index 1e625b5..06fed1e 100644 --- a/README.md +++ b/README.md @@ -660,6 +660,7 @@ The dependency graph is one-way: `data/` is the foundation; `criteria/` reads lo - **v1.4.2 — `n_per_region` default raised to 10 (matches Wueller's per-region site density).** ✅ Default `n_per_region` changed from 3 to 10. The selene methodology converges at any per-region density: selene-to-Wueller match rate is essentially flat across n (78 % at n=3, 78 % at n=5, 80 % at n=10), but Wueller-to-selene match rate climbs from 41 % to 63 % as more selene sites become available to pair with Wueller's 73-site in-scope catalog. **Result at the new default: 56/70 selene sites (80 %) match within 5 km of an in-scope Wueller site; median match distance 1.88 km; 46/73 (63 %) of in-scope Wueller sites match a selene site within 5 km.** Two regions (Mons Mouton, Peak Near Cabeus B) reach 100 % match-within-region at n=10; Nobile Rim 1 and Nobile Rim 2 reach 80 %+. de Gerlache Rim 2 stays at 0/2 (the polygon's HLS-eligible area caps at 2 sites at 2km NMS — its terrain is genuinely far from Wueller's dGR2 cluster, independent of n). Per-region site counts (NMS-capped at 2km separation): HW 10, MM 10, MMP 10, NR1 10, NR2 10, PCB 9, SP 9, dGR2 2 — total 70. - **v1.5 — 20 m Wueller-class resolution with GPU acceleration.** ✅ Per-region tiled driver runs the HLS filters at 20 m, the same native LOLA resolution Wueller et al. 2026 use. New CLI flags `--tiled-per-region --resolution 20` on `selene preprocess` and `selene rank-per-region`; new GPU path through `derive_horizon_profile` and `compute_earth_visibility_fraction` via CuPy + `cupyx.scipy.ndimage.map_coordinates`; new `pipeline/preprocess_tiled.py` and `pipeline/rank_per_region_tiled.py` covering each USGS polygon's bbox + 100 km horizon buffer with explicit cupy memory-pool drain between tiles. The 240 m global path is unchanged. **Result against Wueller 2026 at 20 m: 56/69 selene sites (81 %) match within 5 km, median matched-pair distance 1.76 km — tighter than v1.4.2's 1.88 km at 240 m by 6.5 %; selene-to-Wueller match rate flat (80 % → 81 %); Wueller-to-selene rate slips slightly (63 % → 60 %) because the finer slope/buffer re-ranks sites within MMP, SP, and CB to a different cell within the same polygon.** Six of eight regions tighten or hold their median matched-pair distance at 20 m; Malapert Massif still has zero HLS-compliant cells (genuine steep terrain, not a 240 m sampling effect); de Gerlache Rim 2 still produces only 2 sites with 0/2 within 5 km of Wueller's dGR2 cluster (genuine terrain divergence, persists at fine resolution). The methodology converges at peer-reviewed resolution; the residual disagreements at v1.4.2 are not 240 m sampling artefacts. v1.5 is opt-in and requires a CUDA GPU plus ~140 GB unified-memory headroom (developed on NVIDIA GB10 / DGX Spark; full 9-region run ~32 min preprocess + ~22 min rank). See "Resolution analysis (v1.5 — 20 m Wueller-class)" above for the per-region table and side-by-side plots. - **v1.5.1 — Artemis IV mission designation update + NASA Figures-of-Merit framework citation.** ✅ Docs-only patch release. NASA restructured the Artemis program in February 2026: the first crewed lunar landing at the south pole was reassigned from Artemis III to Artemis IV (target early 2028), Artemis III became an Earth-orbit test mission, and Lunar Gateway was canceled in March 2026. v1.5.1 reframes the project's forward-looking copy from "Artemis III" to "Artemis IV (formerly Artemis III)" across the README, the v1.5 catalog report, and user-facing CLI / module docstrings, while leaving citation titles, the USGS dataset name, NASA's October 2024 announcement URL, the Wueller 2026 paper's own framing, and the historical roadmap entries unchanged. Adds [Lawrence 2025](https://ntrs.nasa.gov/citations/20250008952) (NASA NTRS 20250008952) as a reference and a new "Mapping to NASA's Figures of Merit framework" subsection in the Methodology section that maps selene's seven criteria to NASA's published FOM categories. **The methodology, data, validation, and 69-site catalog are identical to v1.5; the headline numbers (56/69 = 81.2 % within 5 km, median 1.76 km) are unchanged.** +- **v1.6 — 10 m exploratory analysis (deferred — public mosaic coverage insufficient).** ⏸ Originally scoped as a partial-coverage rerun of the per-region pipeline at 10 m on PGDA's `LDEM_83S_10MPP_ADJ` mosaic (~432.8 km × 432.8 km square, ±216.4 km from the south pole in polar-stereographic Moon coordinates). Buffer-fits-inside-mosaic check against the 9 USGS polygons + 100 km horizon-march buffer (the LOS-to-Earth criterion's physical horizon-search radius, not a tunable knob): only **3 of 9 polygons (HW, SP, G2) clean**. **CB**'s buffered bbox over-runs the mosaic's west edge by 74 km; **N2**'s over-runs the east edge by 50 km; **N1, MM, MA, MP** all over-run the north edge by 4–60 km. Truncating the buffer would bias the LOS visibility fraction asymmetrically on the truncated side, contaminating every cell within ~100 km of the mosaic edge in the affected region. A 3-region release (HW + SP + G2) was technically possible but thin — G2 contributes 0/2 matched-within-5 km in v1.5, collapsing the comparison effectively to HW + SP. Not enough material for a release, and not a buffer-truncation methodology that holds against v1.5's clean 9-region 100 km horizon-march. Deferred indefinitely pending wider public mosaic coverage or NAC stereo DEM integration; see "Where this goes next" below for the coverage analysis. The 10 m work is genuinely blocked, not a bandwidth or scheduling issue. - **v1.7 — TOPSIS aggregator as opt-in alternative to weighted_sum.** ✅ Adds [`scoring/aggregate.topsis`](src/selene_base/scoring/aggregate.py) (Hwang & Yoon 1981) as a sibling of `weighted_sum`, with `selene score --method topsis` and `selene rank-per-region --method topsis` exposing it. Same input contract (per-criterion [0, 1] score grids + weights), same renormalise-on-missing-criteria semantics, same NaN propagation. Default stays `weighted_sum` — v1.5's 81.2 % / 1.76 km headline is unchanged. **TOPSIS result on the v1.5 20 m catalog: same 69 sites (HLS filters identical), same top-5 by score, 55 / 69 (79.7 %) matched within 5 km of an in-scope Wueller site (vs 56 at weighted_sum), median matched-pair distance 1.84 km vs 1.76 km globally** — but **three of seven active regions tighten significantly** (Haworth -0.51 km, Mons Mouton Plateau -0.40 km, Nobile Rim 1 -0.43 km) and **max pair distance improves -0.22 km**. Both aggregators agree on which cells are top-tier; they disagree at the 1.5–4 km margin. TOPSIS outputs land under `data/outputs/topsis/` so the two catalogs sit side-by-side. See "Aggregator: weighted_sum vs TOPSIS" in Methodology for the full table. - **v1.8 — Activate seismic criterion (eight of eight criteria live).** ✅ Adds distance-to-nearest-scarp as the eighth criterion via a logistic of distance to the nearest mapped lunar lobate scarp (midpoint 25 km, steepness 8 km — tuned to Civilini et al. 2023's documented shallow-moonquake-to-scarp clustering distance). Bundles the **Mishra & Kumar (2022)** south-polar scarp catalog ([GRL doi:10.1029/2022GL098505](https://doi.org/10.1029/2022GL098505), Zenodo [doi:10.5281/zenodo.6624114](https://doi.org/10.5281/zenodo.6624114), CC-BY 4.0) — 704 line segments combining Watters et al. (2015) global mapping with 75 new south-polar scarps Mishra & Kumar mapped from independent LROC NAC analysis — at `src/selene_base/criteria/data/scarps_mishra_kumar_2022/`, with the original LROC SOC `POLAR_SCARP_LOCATIONS` shapefile (citing Watters 2015 verbatim) bundled alongside as an attribution anchor at `scarps_watters_2015_polar/`. Default seismic weight 0.10, with the other seven weights scaled by 0.928 so the simplex still sums to 1.00. Methodology fully realised — eight of eight planned criteria contribute to the aggregate score. **Result: 56 / 69 selene sites (81.2 %) match within 5 km of an in-scope Wueller site — identical to v1.5's headline; 46 / 73 (63.0 %) Wueller-side match (up from 44 / 73 in v1.5, +2.7 pp); median matched-pair distance 1.69 km vs 1.76 km in v1.5 (-0.07 km).** Same site count, same top-3 in every region; 13 sites in HW/MMP/N1/N2 reshuffle within ranks 4-10. The criterion is most active where the Mishra/Kumar catalog has dense south-polar coverage and least active for cells far from any mapped scarp (most of the polar grid). See "Seismic criterion (v1.8)" in Methodology for the logistic scoring details and per-region table. @@ -670,6 +671,14 @@ The dependency graph is one-way: `data/` is the foundation; `criteria/` reads lo **v1.8 sensitivity rerun.** The 200-sample Latin-hypercube weight sweep in [`Robustness`](#robustness) was last run under the v1.5 seven-criterion vector. Re-running it on the v1.8 eight-criterion simplex (with seismic at 0.10) is a straightforward follow-up that would also refresh the diagnostic-comparison per-criterion table. +**Finer-than-20 m public mosaic coverage at the polygon scope (the v1.6 blocker).** v1.5 runs at 20 m on PDS's `ldem_80s_20m` (the south-pole 20 m polar mosaic) which covers all 9 USGS polygons with the full 100 km horizon-march buffer comfortably inside its extent. Going finer than 20 m at the same 9-polygon scope is gated on a public mosaic that doesn't currently exist: + +- **PGDA `LDEM_83S_10MPP_ADJ` (10 m).** ~432.8 km × 432.8 km square, ±216.4 km from the south pole. With the 100 km horizon-march buffer required by the LOS-to-Earth criterion, only **3 of 9 USGS polygons fit cleanly** (HW, SP, G2). CB and N2 sit at the west/east longitudinal extremes and lose 50–75 km of buffer room; N1, MM, MA, MP all over-run the mosaic's north edge. +- **PGDA `LDEM_87S_5MPP` (5 m).** Wider-resolution but narrower-coverage product covering only ~87°S to the pole. With the 100 km buffer, only **1 of 9 polygons fits** (G2). The other eight polygons all extend or buffer past 87°S and would lose substantial buffer or polygon coverage. +- **NAC stereo DEMs at 1–2 m.** PGDA product 78 (Bertone 2026) provides per-ROI NAC stereo DEMs but is not polygon-tiled — would need a parallel integration path distinct from selene's polygon-tiled flow, or NAC stereo mosaic generation through ASP (Ames Stereo Pipeline) to produce a wider-coverage mosaic from the underlying NAC pairs. + +A v2.x release at finer-than-20 m at the full 9-polygon scope depends on one of these becoming available or being constructed. A partial-coverage release at 10 m on (HW, SP, G2) was considered for v1.6 and rejected: with G2 contributing 0/2 matched-within-5 km against Wueller in v1.5, the comparison effectively collapses to two regions, which is too thin to be a release. + ### Smaller follow-ups - Auto-tune `--min-score` in the rank pipeline based on the aggregate's percentile distribution.