asp-plot 3.5.0__tar.gz → 3.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {asp_plot-3.5.0 → asp_plot-3.6.0}/ARCHITECTURE.md +1 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/CHANGELOG.md +9 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/PKG-INFO +1 -1
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/asp_report.py +8 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/report_pipeline.py +11 -5
- {asp_plot-3.5.0 → asp_plot-3.6.0}/pyproject.toml +1 -1
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.flake8 +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.github/ISSUE_TEMPLATE/problem-report.yml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.github/workflows/claude-code-review.yml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.github/workflows/claude.yml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.github/workflows/release.yml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.github/workflows/run-tests.yml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.gitignore +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.pre-commit-config.yaml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/.readthedocs.yaml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/AGENTS.md +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/CLAUDE.md +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/LICENSE +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/README.md +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/__init__.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/alignment.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/altimetry.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/altimetry_plots.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/altimetry_source.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/asp_log.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/bodies.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/bundle_adjust.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/__init__.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/bundle_adjust_cameras.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/csm_camera_plot.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/dem_benchmark.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/gallery.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/request_planetary_altimetry.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/cli/stereo_geom.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/csm_analysis.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/csm_camera.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/csm_io.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/dem_benchmark.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/gallery.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/icesat2_source.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/mapproject.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/planetary_source.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/processing_parameters.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/report.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/report_captions.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/scenes.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/selections.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/sensors/__init__.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/sensors/aster.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/sensors/base.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/sensors/dimap.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/sensors/dimap_v1.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/sensors/rpc.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/sensors/worldview.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/stereo.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/stereo_geometry.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/stereopair_metadata_parser.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/asp_plot/utils.py +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/conda-forge-recipe/meta.yaml +0 -0
- {asp_plot-3.5.0 → asp_plot-3.6.0}/environment.yml +0 -0
|
@@ -247,6 +247,7 @@ All CLI tools are in `asp_plot/cli/` and use Click for argument parsing:
|
|
|
247
247
|
- `--no-altimetry`: Skip the altimetry comparisons plotted by default. Auto-detects planetary body from DEM CRS: Earth → ICESat-2 (requires internet), Moon → LOLA, Mars → MOLA. For planetary DEMs, requires `--altimetry-csv`.
|
|
248
248
|
- `--altimetry-csv`: Path to a LOLA/MOLA CSV from the ODE GDS API. **Mars: must be the `*_pts_csv.csv` (not `*_topo_csv.csv`) — the loader requires the `PLANET_RAD` column to avoid the oblate-areoid offset.** Moon accepts either the `*_topo_simple_csv.csv` (results=u) or the `*_pts_csv.csv` (results=p). Obtained via the `request_planetary_altimetry` CLI tool.
|
|
249
249
|
- `--no-pc-align`: Skips the `pc_align` step; by default (when altimetry is on) the report runs `pc_align` against the reference altimetry (ICESat-2 for Earth, MOLA for Mars, LOLA for Moon) after the existing altimetry plots and appends an alignment report. **Earth success path**: adds four pages (alignment report page, pre/post landcover histogram, aligned profile, aligned best/worst segments). **Planetary success path**: adds three pages (alignment report page, pre/post mapview, pre/post histogram). `insufficient_points` and `no_improvement` outcomes emit a single alignment report page on either branch. Skipped automatically when `--no-altimetry` is set.
|
|
250
|
+
- `--pc-align-min-points`: Fewest altimetry points on the DEM for the `pc_align` step to run (`ReportConfig.pc_align_min_points`); `None`, the default, keeps the alignment methods' own minimums (500 ICESat-2 points, 20 LOLA/MOLA points). Below the minimum the alignment page says the step was skipped.
|
|
250
251
|
- `--no-geometry`: Skip the stereo geometry plots drawn by default (used for planetary missions)
|
|
251
252
|
- `--subset-km`: Hillshade subset size in km (default: 1.0)
|
|
252
253
|
- `--atl06sr-time-range`: Time range for ICESat-2 ATL06-SR requests. `"all"` (default) for full mission, `"auto"` for scene metadata ±1 year, `"START,END"` for a custom range, or a single date (buffered by ±1 year).
|
|
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.6.0] - 2026-10-30
|
|
11
|
+
|
|
12
|
+
In this release:
|
|
13
|
+
|
|
14
|
+
- `asp_report --pc-align-min-points` sets how many altimetry points the `pc_align` step needs before it runs, so small DEMs that ICESat-2 crosses only a few times can still be aligned.
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- **`asp_report --pc-align-min-points N` sets how many altimetry points the `pc_align` step needs before it runs** (`ReportConfig.pc_align_min_points`). The step skipped itself below a fixed 500 ICESat-2 points (20 for LOLA/MOLA), so a report on a DEM of about 1 km², which ICESat-2 crosses only a few times, compared against the points but never aligned to them. The default is unchanged.
|
|
18
|
+
|
|
10
19
|
## [3.5.0] - 2026-10-23
|
|
11
20
|
|
|
12
21
|
In this release:
|
|
@@ -92,6 +92,12 @@ def _reconstruct_command():
|
|
|
92
92
|
default=False,
|
|
93
93
|
help="Skip the pc_align step (run by default against the reference altimetry -- ICESat-2 for Earth, MOLA for Mars, LOLA for Moon -- appending the alignment-report pages; skipped automatically with --no-altimetry).",
|
|
94
94
|
)
|
|
95
|
+
@click.option(
|
|
96
|
+
"--pc-align-min-points",
|
|
97
|
+
type=int,
|
|
98
|
+
default=None,
|
|
99
|
+
help="Fewest altimetry points on the DEM for the pc_align step to run; below it the alignment page says the step was skipped. Default: 500 for ICESat-2, 20 for LOLA/MOLA.",
|
|
100
|
+
)
|
|
95
101
|
@click.option(
|
|
96
102
|
"--no-geometry",
|
|
97
103
|
is_flag=True,
|
|
@@ -155,6 +161,7 @@ def main(
|
|
|
155
161
|
no_altimetry,
|
|
156
162
|
altimetry_csv,
|
|
157
163
|
no_pc_align,
|
|
164
|
+
pc_align_min_points,
|
|
158
165
|
no_geometry,
|
|
159
166
|
subset_km,
|
|
160
167
|
atl06sr_time_range,
|
|
@@ -183,6 +190,7 @@ def main(
|
|
|
183
190
|
plot_altimetry=not no_altimetry,
|
|
184
191
|
altimetry_csv=altimetry_csv,
|
|
185
192
|
pc_align=not no_pc_align,
|
|
193
|
+
pc_align_min_points=pc_align_min_points,
|
|
186
194
|
plot_geometry=not no_geometry,
|
|
187
195
|
subset_km=subset_km,
|
|
188
196
|
atl06sr_time_range=atl06sr_time_range,
|
|
@@ -75,6 +75,9 @@ class ReportConfig:
|
|
|
75
75
|
plot_altimetry: bool = True
|
|
76
76
|
altimetry_csv: Optional[str] = None
|
|
77
77
|
pc_align: bool = True
|
|
78
|
+
# Fewest altimetry points on the DEM for pc_align to run. None keeps the
|
|
79
|
+
# alignment methods' own defaults: 500 for ICESat-2, 20 for LOLA/MOLA.
|
|
80
|
+
pc_align_min_points: Optional[int] = None
|
|
78
81
|
plot_geometry: bool = True
|
|
79
82
|
subset_km: float = 1.0
|
|
80
83
|
atl06sr_time_range: str = "all"
|
|
@@ -628,10 +631,10 @@ def _build_altimetry_earth(ctx: ReportContext, ctx_kwargs_altimetry: dict):
|
|
|
628
631
|
|
|
629
632
|
# ---- pc_align + ICESat-2 alignment report (Earth only) ----
|
|
630
633
|
if cfg.pc_align:
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
)
|
|
634
|
+
align_kwargs = {"processing_level": "all", "improvement_threshold_pct": 5.0}
|
|
635
|
+
if cfg.pc_align_min_points is not None:
|
|
636
|
+
align_kwargs["minimum_points"] = cfg.pc_align_min_points
|
|
637
|
+
align_result = icesat.align_and_evaluate(**align_kwargs)
|
|
635
638
|
stats_row = _stats_row_from_result(align_result)
|
|
636
639
|
|
|
637
640
|
align_title = "DEM Alignment with ICESat-2"
|
|
@@ -777,7 +780,10 @@ def _build_altimetry_planetary(ctx: ReportContext, body: str):
|
|
|
777
780
|
|
|
778
781
|
# ---- pc_align + planetary alignment report (Moon/Mars) ----
|
|
779
782
|
if cfg.pc_align:
|
|
780
|
-
|
|
783
|
+
align_kwargs = {}
|
|
784
|
+
if cfg.pc_align_min_points is not None:
|
|
785
|
+
align_kwargs["minimum_points"] = cfg.pc_align_min_points
|
|
786
|
+
align_result = alt.align_and_evaluate_planetary(**align_kwargs)
|
|
781
787
|
stats_row = _stats_row_from_result(align_result)
|
|
782
788
|
|
|
783
789
|
align_title = f"DEM Alignment with {instrument}"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|