asp-plot 1.7.0__tar.gz → 1.9.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.
Files changed (32) hide show
  1. {asp_plot-1.7.0 → asp_plot-1.9.0}/.github/workflows/run-tests.yml +0 -1
  2. {asp_plot-1.7.0 → asp_plot-1.9.0}/.gitignore +5 -0
  3. asp_plot-1.9.0/.readthedocs.yaml +25 -0
  4. {asp_plot-1.7.0 → asp_plot-1.9.0}/CHANGELOG.md +57 -0
  5. asp_plot-1.9.0/PKG-INFO +88 -0
  6. asp_plot-1.9.0/README.md +45 -0
  7. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/altimetry.py +727 -154
  8. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/cli/asp_plot.py +112 -132
  9. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/report.py +37 -1
  10. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/stereo.py +68 -33
  11. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/utils.py +4 -3
  12. asp_plot-1.9.0/environment.yml +13 -0
  13. {asp_plot-1.7.0 → asp_plot-1.9.0}/pyproject.toml +19 -1
  14. asp_plot-1.7.0/PKG-INFO +0 -403
  15. asp_plot-1.7.0/README.md +0 -372
  16. asp_plot-1.7.0/environment.yml +0 -26
  17. {asp_plot-1.7.0 → asp_plot-1.9.0}/.flake8 +0 -0
  18. {asp_plot-1.7.0 → asp_plot-1.9.0}/.github/workflows/release.yml +0 -0
  19. {asp_plot-1.7.0 → asp_plot-1.9.0}/.pre-commit-config.yaml +0 -0
  20. {asp_plot-1.7.0 → asp_plot-1.9.0}/LICENSE +0 -0
  21. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/__init__.py +0 -0
  22. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/alignment.py +0 -0
  23. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/bundle_adjust.py +0 -0
  24. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/cli/__init__.py +0 -0
  25. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/cli/csm_camera_plot.py +0 -0
  26. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/cli/stereo_geom.py +0 -0
  27. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/csm_camera.py +0 -0
  28. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/processing_parameters.py +0 -0
  29. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/scenes.py +0 -0
  30. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/stereo_geometry.py +0 -0
  31. {asp_plot-1.7.0 → asp_plot-1.9.0}/asp_plot/stereopair_metadata_parser.py +0 -0
  32. {asp_plot-1.7.0 → asp_plot-1.9.0}/conda-forge-recipe/meta.yaml +0 -0
@@ -32,7 +32,6 @@ jobs:
32
32
  conda env create -f environment.yml
33
33
  source $CONDA/etc/profile.d/conda.sh
34
34
  conda activate asp_plot
35
- pip install .
36
35
  - name: Test with pytest
37
36
  run: |
38
37
  source $CONDA/etc/profile.d/conda.sh
@@ -70,6 +70,9 @@ instance/
70
70
 
71
71
  # Sphinx documentation
72
72
  docs/_build/
73
+ docs/examples/notebooks/
74
+ docs/_extra/
75
+ docs/_static/reports/
73
76
 
74
77
  # PyBuilder
75
78
  target/
@@ -137,3 +140,5 @@ notebooks/**/*.parquet
137
140
  notebooks/**/*.csv
138
141
  CLAUDE*
139
142
  .claude/**
143
+ scripts/
144
+ /*.parquet
@@ -0,0 +1,25 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: "ubuntu-24.04"
5
+ tools:
6
+ python: "3.12"
7
+ jobs:
8
+ pre_build:
9
+ - mkdir -p docs/examples/notebooks
10
+ - cp notebooks/WorldView/*.ipynb docs/examples/notebooks/
11
+ - cp notebooks/ASTER/*.ipynb docs/examples/notebooks/
12
+ - cp notebooks/LRO_NAC/*.ipynb docs/examples/notebooks/
13
+ - cp notebooks/Mars_MGS/*.ipynb docs/examples/notebooks/
14
+ - cp notebooks/Mars_MRO/*.ipynb docs/examples/notebooks/
15
+ - mkdir -p docs/_extra/examples/figures
16
+ - cp notebooks/figures/* docs/_extra/examples/figures/
17
+ - mkdir -p docs/_static/reports
18
+ - cp reports/*.pdf docs/_static/reports/
19
+
20
+ sphinx:
21
+ configuration: docs/conf.py
22
+
23
+ python:
24
+ install:
25
+ - requirements: docs/requirements.txt
@@ -5,6 +5,63 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.9.0] - 2026-03-10
9
+
10
+ ### Added
11
+ - Match points now overlay on non-mapprojected images using alignment transform matrices (`run-align-{L,R}.txt`), replacing the previous blank-right-panel behavior
12
+ - Report command string recorded in PDF report via new `report_command` parameter in `compile_report()`
13
+ - Pixel-unit scalebar for non-mapprojected disparity plots (mapprojected scenes continue to use GSD-based scalebar)
14
+ - Guard with `FileNotFoundError` when alignment matrix files are missing for non-mapprojected match point overlay
15
+ - Warning when `unit="meters"` is passed for non-mapprojected disparity (unsupported, falls back to pixels)
16
+ - Test coverage for non-mapprojected stereo code paths (9 new tests with resampled ASTER test data)
17
+
18
+ ### Changed
19
+ - Report figures are now fitted to page dimensions, preventing overflow and cutoff for large/wide figures
20
+ - Report caption reserve is now dynamically calculated from actual caption length instead of a hardcoded 20mm
21
+ - Input Scenes caption updated to explain alignment rotation applied to non-mapprojected imagery
22
+ - Match points right subplot title simplified from "Right (scenes shown only if mapprojected)" to "Right"
23
+ - `save_figure()` default DPI changed from hardcoded 150 to `None` (uses figure's own creation DPI), fixing pixelated ICESat-2 report figures
24
+ - ICESat-2 altimetry figures created at 220 DPI for high-quality PDF embedding
25
+ - CLI parameter values are now quoted with `shlex.quote()` for proper reconstruction of commands with spaces
26
+ - Cleaned up example notebook report links and removed stale PDF files
27
+ - Removed unnecessary `read_align_matrix()` method; alignment matrices are loaded inline via `np.loadtxt()`
28
+
29
+ ### Fixed
30
+ - Disparity plot scale for non-mapprojected scenes: GSD-based rescale was producing near-zero values from the identity transform; now skips rescaling and uses pixel-unit scalebar instead
31
+ - Match point plot whitespace for non-mapprojected scenes caused by a 1x1 dummy image plotted underneath scatter points
32
+ - Pixelated ICESat-2 ATL06-SR figures in PDF reports caused by `save_figure()` overriding figure DPI with 150
33
+
34
+ ## [1.8.0] - 2026-03-03
35
+
36
+ ### Added
37
+ - New `_select_best_track()` method to find the RGT/cycle/spot combination with the most valid ATL06-SR points for profile plotting
38
+ - New `histogram_by_landcover()` method producing a histogram of ICESat-2 vs DEM differences with per-landcover-class statistics (count, median, NMAD) using ESA WorldCover
39
+ - New `plot_atl06sr_dem_profile()` method with a three-row figure: combined elevation + dh profile with dual y-axes, two 1 km zoom segments (best/worst agreement scored by |median(dh)| + NMAD), and DEM hillshade map with track overlay
40
+ - Server-side time filtering for SlideRule API requests via new `_resolve_time_range()` method with three-tier cascade: explicit `scene_date` parameter, auto-detect from stereopair XML metadata, or 2-year fallback
41
+ - `scene_date` and `time_buffer_days` parameters added to `request_atl06sr_multi_processing()`
42
+ - Module-level `ICESAT2_MISSION_START` constant and `WORLDCOVER_NAMES` dictionary for reuse across methods
43
+ - Module-level `_nmad()` helper function (Normalized Median Absolute Deviation)
44
+ - Time range labels displayed on ICESat-2 plot titles
45
+ - Tests for `_select_best_track`, `histogram_by_landcover`, `plot_atl06sr_dem_profile`, and `_resolve_time_range`
46
+
47
+ ### Changed
48
+ - Migrated SlideRule API from legacy `icesat2.atl06p()` to x-series `sliderule_api.run("atl03x")` with automatic index and column normalization
49
+ - Simplified ICESat-2 report section: single `"all"` processing level with landcover histogram and profile plot, replacing the previous multi-level (all + ground) workflow with temporal filtering and plain histograms
50
+ - Report section ordering: bundle adjustment plots now appear after match points and before DEM hillshade
51
+ - Profile plot legend now includes axis labels (left/right) for all entries and embeds Med/NMAD statistics in the dh legend item
52
+
53
+ ### Removed
54
+ - `--icesat_filter_date` CLI option (time filtering is now automatic via `_resolve_time_range()`)
55
+ - Commented-out `plot_atl06sr_dem_profiles()` stub and ATL03 request stub (replaced by implemented methods)
56
+ - Duplicated WorldCover classification table from `filter_esa_worldcover()` docstring (now references `WORLDCOVER_NAMES`)
57
+
58
+ ### Fixed
59
+ - `TypeError: Cannot subtract tz-naive and tz-aware datetime-like objects` in `predefined_temporal_filter_atl06sr` when scene date is UTC-aware but DataFrame index is tz-naive
60
+ - `KeyError: 'translation_magnitude'` in `alignment_report()` when requested processing level has no data (now returns early with a warning)
61
+ - `TypeError: unhashable type: 'numpy.ndarray'` in `histogram_by_landcover` caused by parquet round-trip deserializing arrays as Python lists
62
+ - `TypeError: 'int' object is not callable` when builtin `len()` was shadowed by the `len=40` parameter inside `request_atl06sr_multi_processing`
63
+ - `OverflowError: cannot convert float infinity to integer` in profile segment selection when median point spacing is zero
64
+
8
65
  ## [1.7.0] - 2026-02-24
9
66
 
10
67
  ### Added
@@ -0,0 +1,88 @@
1
+ Metadata-Version: 2.4
2
+ Name: asp_plot
3
+ Version: 1.9.0
4
+ Summary: Package for plotting outputs Ames Stereo Pipeline processing
5
+ Project-URL: Homepage, https://github.com/uw-cryo/asp_plot
6
+ Project-URL: Documentation, https://asp-plot.readthedocs.io
7
+ Project-URL: Issues, https://github.com/uw-cryo/asp_plot/issues
8
+ Author-email: Ben Purinton <purinton@uw.edu>, David Shean <dshean@uw.edu>, Shashank Bhushan <sbhusha1@umd.edu>
9
+ License: BSD-3-Clause
10
+ License-File: LICENSE
11
+ Classifier: License :: OSI Approved :: BSD License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Requires-Python: >=3.11
15
+ Requires-Dist: click
16
+ Requires-Dist: contextily
17
+ Requires-Dist: fpdf2
18
+ Requires-Dist: gdal
19
+ Requires-Dist: geopandas
20
+ Requires-Dist: matplotlib
21
+ Requires-Dist: matplotlib-scalebar
22
+ Requires-Dist: numpy
23
+ Requires-Dist: pandas
24
+ Requires-Dist: pyproj
25
+ Requires-Dist: rasterio
26
+ Requires-Dist: rioxarray
27
+ Requires-Dist: scipy
28
+ Requires-Dist: shapely
29
+ Requires-Dist: sliderule
30
+ Requires-Dist: xarray
31
+ Provides-Extra: dev
32
+ Requires-Dist: pre-commit; extra == 'dev'
33
+ Requires-Dist: pytest; extra == 'dev'
34
+ Provides-Extra: docs
35
+ Requires-Dist: myst-nb; extra == 'docs'
36
+ Requires-Dist: sphinx-autoapi; extra == 'docs'
37
+ Requires-Dist: sphinx-autobuild; extra == 'docs'
38
+ Requires-Dist: sphinx-book-theme; extra == 'docs'
39
+ Requires-Dist: sphinx-copybutton; extra == 'docs'
40
+ Requires-Dist: sphinx-design; extra == 'docs'
41
+ Requires-Dist: sphinx>=7; extra == 'docs'
42
+ Description-Content-Type: text/markdown
43
+
44
+ # asp_plot
45
+
46
+ [![PyPI](https://img.shields.io/pypi/v/asp-plot.svg)](https://pypi.org/project/asp-plot/)
47
+ [![conda-forge](https://img.shields.io/conda/vn/conda-forge/asp-plot.svg)](https://anaconda.org/conda-forge/asp-plot)
48
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.14263121.svg)](https://doi.org/10.5281/zenodo.14263121)
49
+ [![Documentation](https://readthedocs.org/projects/asp-plot/badge/?version=latest)](https://asp-plot.readthedocs.io/en/latest/)
50
+
51
+ A Python package for visualizing output from the [NASA Ames Stereo Pipeline (ASP)](https://github.com/NeoGeographyToolkit/StereoPipeline). Generates diagnostic plots and comprehensive PDF reports for ASP stereo processing results, similar to reports from commercial SfM software like Agisoft Metashape.
52
+
53
+ ### **[View some example reports](https://asp-plot.readthedocs.io/en/latest/examples/reports.html)**
54
+
55
+ ### **[Full documentation at asp-plot.readthedocs.io](https://asp-plot.readthedocs.io)**
56
+
57
+ ## Installation
58
+
59
+ ```
60
+ conda install -c conda-forge asp-plot
61
+ ```
62
+
63
+ Or with pip:
64
+
65
+ ```
66
+ pip install asp-plot
67
+ ```
68
+
69
+ See the [installation guide](https://asp-plot.readthedocs.io/en/latest/installation.html) for more options.
70
+
71
+ ## Quick start
72
+
73
+ Generate a PDF report from an ASP processing directory:
74
+
75
+ ```
76
+ asp_plot --directory ./ --stereo_directory stereo
77
+ ```
78
+
79
+ See the [CLI documentation](https://asp-plot.readthedocs.io/en/latest/cli/index.html) for all options and additional tools (`stereo_geom`, `csm_camera_plot`).
80
+
81
+ ## Examples
82
+
83
+ - [Example reports](https://asp-plot.readthedocs.io/en/latest/examples/reports.html) — PDF reports for WorldView, ASTER, LRO NAC, and Mars sensors
84
+ - [Example notebooks](https://asp-plot.readthedocs.io/en/latest/examples/index.html) — Modular usage by sensor type
85
+
86
+ ## Contributing
87
+
88
+ See the [contributing guide](https://asp-plot.readthedocs.io/en/latest/contributing.html) for development setup, testing, and release process.
@@ -0,0 +1,45 @@
1
+ # asp_plot
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/asp-plot.svg)](https://pypi.org/project/asp-plot/)
4
+ [![conda-forge](https://img.shields.io/conda/vn/conda-forge/asp-plot.svg)](https://anaconda.org/conda-forge/asp-plot)
5
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.14263121.svg)](https://doi.org/10.5281/zenodo.14263121)
6
+ [![Documentation](https://readthedocs.org/projects/asp-plot/badge/?version=latest)](https://asp-plot.readthedocs.io/en/latest/)
7
+
8
+ A Python package for visualizing output from the [NASA Ames Stereo Pipeline (ASP)](https://github.com/NeoGeographyToolkit/StereoPipeline). Generates diagnostic plots and comprehensive PDF reports for ASP stereo processing results, similar to reports from commercial SfM software like Agisoft Metashape.
9
+
10
+ ### **[View some example reports](https://asp-plot.readthedocs.io/en/latest/examples/reports.html)**
11
+
12
+ ### **[Full documentation at asp-plot.readthedocs.io](https://asp-plot.readthedocs.io)**
13
+
14
+ ## Installation
15
+
16
+ ```
17
+ conda install -c conda-forge asp-plot
18
+ ```
19
+
20
+ Or with pip:
21
+
22
+ ```
23
+ pip install asp-plot
24
+ ```
25
+
26
+ See the [installation guide](https://asp-plot.readthedocs.io/en/latest/installation.html) for more options.
27
+
28
+ ## Quick start
29
+
30
+ Generate a PDF report from an ASP processing directory:
31
+
32
+ ```
33
+ asp_plot --directory ./ --stereo_directory stereo
34
+ ```
35
+
36
+ See the [CLI documentation](https://asp-plot.readthedocs.io/en/latest/cli/index.html) for all options and additional tools (`stereo_geom`, `csm_camera_plot`).
37
+
38
+ ## Examples
39
+
40
+ - [Example reports](https://asp-plot.readthedocs.io/en/latest/examples/reports.html) — PDF reports for WorldView, ASTER, LRO NAC, and Mars sensors
41
+ - [Example notebooks](https://asp-plot.readthedocs.io/en/latest/examples/index.html) — Modular usage by sensor type
42
+
43
+ ## Contributing
44
+
45
+ See the [contributing guide](https://asp-plot.readthedocs.io/en/latest/contributing.html) for development setup, testing, and release process.