Releases: j-haacker/CryoSwath
v0.2.5
Changelog
All notable changes are documented in this file.
v0.2.5 (2026-02-15)
- Range:
v0.2.4..ee58532 - Snapshot commit date: 2026-02-15
User impact summary
This change set is primarily a stability and portability update rather than a major new algorithm release.
What it means for CryoSwath usage
- Day-to-day processing in
l1b,l2,l3,l4,gis, andmiscis more robust on edge cases (empty chunks/windows, missing columns, unnamed indexes, scalar coordinates, and missing region matches). - Error handling is clearer in several paths that previously relied on assertions; failures should now be easier to diagnose in production runs.
l2multiprocessing is safer across platforms (spawncontext + CPU core detection), which helps on macOS/Windows and mixed cluster environments.l3chunk-time reindexing for zarr should reduce write/read issues related to non-contiguous chunk regions.- Tutorial notebooks were updated to current APIs and now have automated workflow coverage, making the tutorial path more reliable as a usage reference.
New features
- Pixi-first environment support and workflow hardening were added and expanded (including locked runtime solve strategy and feature-scoped tasks).
- A
productionoptional dependency group was introduced. - Tutorial workflow automation was expanded with Snakemake and tox entrypoints for notebook/pipeline validation.
- A CRISTAL mission portability checklist was added to docs.
Compatibility notes
- Dependency manifests now pin
xarray < 2025.12due to upstream regression handling in this cycle. - If your environment already uses newer
xarray, expect to align to the pinned version before running CryoSwath reliably.
Commits since v0.2.4
- 2025-08-31
2629767chore: add gitignores - 2025-08-31
4e8cb24chore: bump version - 2025-12-20
6d039f5misc: update rgi_code_translator - 2025-12-20
ea142feupdate pyproject.toml - 2025-12-20
d6c4bd8misc: fix previous commit - 2026-01-24
a8a2313fix(misc): allow scalar dimensions in fill_missing_coords - 2026-01-28
403658cfix: revise download_dem - 2026-01-29
8c55ef1chore(l1b): polish code a bit - 2026-01-29
296ec1afix(test_plots): correct label - 2026-01-29
1239d01fix(misc): use make_valid in load_glacier_outlines - 2026-01-29
81be744chore(misc): format - 2026-01-29
a9d55a7chore: update readme - 2026-01-29
d87a946chore: update docker - 2026-01-29
075adc2Add pixi compatibility and installation instructions - 2026-01-30
09f7c90fix(misc): fix index issue - 2026-01-30
bdd8a0cMerge pull request #52 from Tanmay-Ts/add-pixi-support - 2026-02-01
436de23!fix(misc): update default DEM names - 2026-02-01
5faa58aMerge remote-tracking branch 'origin' into develop - 2026-02-11
117c755chore: add opt.dep. group production - 2026-02-11
89d1447fix(misc): fix building paths from config - 2026-02-11
3a94789chore(l2): simplify code - 2026-02-11
27c7079fix(l3): fix handling even agg. windows - 2026-02-11
bb4d0f4fix(l2): guard grid chunk split for small data - 2026-02-11
a9a61d1fix(misc): handle default dir in ESRI conversion - 2026-02-11
e67840bfix(gis): robust ESRI feather target path - 2026-02-11
9973b3ffix(l4): guard optional filled_flag updates - 2026-02-11
97c1f26fix(l3): raise for unsupported joined L2 aggregation - 2026-02-11
a39ba02fix(l4): raise reference deviation sanity check - 2026-02-11
bf819ebfix(gis): accept scalar lon/lat in CRS selection - 2026-02-11
b2ccf6cfix(l2): replace assert-based stale cache checks - 2026-02-11
eab85a5fix(l2): handle unnamed index in l1b conversion - 2026-02-11
8e0f77afix(l2): guard empty grid aggregation paths - 2026-02-11
40ab2e4fix(l1b): replace assert-only threshold checks - 2026-02-11
ba8ea86fix(l4): call local elevation reference helper - 2026-02-11
f5860f6fix(l4): use coefficient arrays in trend reconstruction - 2026-02-11
cf15928fix(misc): fail clearly when region lookup is empty - 2026-02-11
4daf415fix(l3): honor l2_type when reading cache chunks - 2026-02-11
3d652bafix(gis): fail clearly when no o2 region matches - 2026-02-12
59443cbfix(l1b): narrow xarray timedelta patch version gate - 2026-02-12
a48cd87docs(cryoswath): revise RTD pages and API docstrings - 2026-02-12
13a0e48docs(sphinx): refine docs style and refresh README warnings - 2026-02-12
7af912ddocs(theme): switch to pydata and clean sidebar/header - 2026-02-13
d8ec019docs(linkcode): resolve source refs from git metadata - 2026-02-13
de9fda1docs: move env warning to install pages and align manager wording - 2026-02-13
d5e1cefmerge(main): integrate develop (docs refresh, linkcode hardening, and processing fixes) - 2026-02-14
8c86f40fix(l2): detect CPU cores cross-platform (refs #38) - 2026-02-14
100418cfix(l2): use spawn context for multiprocessing safety (refs #35) - 2026-02-14
eadd824fix(l3): reindex chunk time to contiguous zarr regions (refs #37) - 2026-02-14
5ce48ecdocs: add CRISTAL portability checklist (refs #42) - 2026-02-14
4e49632build: document and harden pixi workflow (refs #51) - 2026-02-14
bf771bcrefactor(l1b): clarify download status messages (refs #20) - 2026-02-14
7b1d3b8Pin xarray below 2025.12 across dependency manifests - 2026-02-14
b66e084chore: finalize xarray<2025.12 regression fix - 2026-02-14
0761831build(deps): align dependency policy and add py3.13 CI coverage - 2026-02-14
a00e721fix(test_plots): update dem_transect - 2026-02-14
e6aec9efix(l2): fix missing column issue - 2026-02-14
822a044test(reports): rename notebooks and add Snakemake conda workflow - 2026-02-15
7f36903fix(tests): remove debugging helpers - 2026-02-15
5d85e9echore(test): add non-failing anonymous FTP login probe - 2026-02-15
4e9d342fix(misc): recover stale cache backup and guard writes with lock - 2026-02-15
3eec709fix(l3): handle empty roll aggregations in build_dataset - 2026-02-15
f2da694fix(tutorial): use misc.fill_missing_coords in step-by-step notebook - 2026-02-15
c376355build(pixi): modernize pyproject metadata and dependency ownership - 2026-02-15
e8929b5fix(tutorial): call l4.append_elevation_reference in step-by-step notebook - 2026-02-15
637377afix(tutorial): call l4.fill_voids in step-by-step notebook - 2026-02-15
9905f68build: scope pixi tasks by feature and align setup docs - 2026-02-15
ad7410abuild(pixi): pin runtime solve strategy and add locked env workflow - 2026-02-15
6b98cc7fix(tutorial): replace removed misc.load_basins in process-first-swath - 2026-02-15
8c725d4test(tutorials): add snakemake workflow for tutorial notebooks - 2026-02-15
1840ad0test(pipeline): add tox entrypoint, config templates, and netrc helper tests - 2026-02-15
5bf70aftest(pipeline): add tutorial notebook workflow and update tutorial API calls - 2026-02-15
ee58532merge(build): integrate codex/pixi-followup-envdocs into main
v0.2.4
The release comprises a comprehensive update and refactor of the CryoSwath project, a Python package for processing CryoSat-2 satellite data. The changes focus on improving code clarity, modularity, and maintainability, as well as updating documentation and dependencies.
Key changes include:
- Consistent Naming: The project name is standardized from "cryoswath" to "CryoSwath" across documentation, code, and metadata, improving branding and clarity.
- Imports Refactored: Relative imports are replaced with absolute imports (e.g., from .misc becomes from cryoswath.misc), which helps avoid circular dependencies and makes the codebase more robust.
- Path Handling: Paths are now managed using Python's Path objects instead of raw strings, making file operations more reliable and platform-independent.
- Integrated DEM downloader: DEMs can now be downloaded automatically. However, this capability is not yet fully exploited.
- Empty DataFrames: A reusable empty_GeoDataFrame is introduced to handle cases where no data is available, reducing repetitive code and potential errors.
- Functionality Enhancements: Several functions are updated for flexibility, such as allowing custom arguments for phase smoothing and swath detection, and improving error handling for file downloads (including fallback to HTTPS if FTP fails).
- Documentation Updates: The README, Sphinx docs, and tutorials are revised for clarity, consistency, and to reflect new installation and usage instructions.
- Docker and Environment: The Dockerfile and environment files are updated to ensure a smoother setup, including necessary dependencies and initialization steps.
- Dependency Management: Optional dependencies are streamlined, and new ones (like pystac-client and stackstac) are added to support advanced geospatial data handling.
Overall, these changes modernize the codebase, improve user experience, and make the package easier to install, use, and extend. The refactor also prepares CryoSwath for broader adoption and future development by addressing common pain points in scientific Python projects.
Full Changelog: v0.2.3.post1...v0.2.4
Patched v0.2.2
This release fixes a single issue related to a published dataset[1]. The release merely serves reproducibility and transparency.
[1] https://doi.org/10.4121/955d7f5a-0e3f-4166-a411-f0dcc4557cb2
Fix dependency specification
Add dependency specification xarray<2025 to fix bug.
Fix xarray dependency specification
Add dependency specification xarray<2025 to fix bug.
v0.2.3
v0.2.2.post1
This release is almost identical to v0.2.2 except for dropping setting the user email, that is required for ESA downloads, during initialization. This was necessary to please conda-forge CI tests.
v0.2.2
v0.2.1
pip & PyPI
cryoswath is, now, installable - and available on PyPI. See the updated readme for install instructions.
directory structure
The directory and branch structure was refactored. The main branch, now, only includes the code. A new command line function cryoswath-init pulls the data and scripts branches, which contain the previous data and scripts directories, to set up an altimetry-project directory structure.
This allows to have one general virtual environment with the cryoswath installation and multiple projects using cryoswath in separated directories.
compatibility
cryoswath is, now, compatible back to python version 3.11 which is available in many repositories.
Full Changelog: v0.2.0...v0.2.1