anemoi-datasets 0.5.24__tar.gz → 0.5.26__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.
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/pull_request_template.md +2 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.pre-commit-config.yaml +2 -2
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.release-please-config.json +6 -1
- anemoi_datasets-0.5.26/.release-please-manifest.json +3 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/CHANGELOG.md +41 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/PKG-INFO +3 -2
- anemoi_datasets-0.5.26/docs/adr/adr-1.md +63 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/anemoi-dataset.rst +6 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-zarr.rst +6 -0
- anemoi_datasets-0.5.26/docs/datasets/building/sources/yaml/anemoi-zarr-dataset.yaml +3 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/combining.rst +3 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/02-cf-data.rst +9 -0
- anemoi_datasets-0.5.26/docs/howtos/create/yaml/zarr2.yaml +8 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/code/cutout-complement1.py +1 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/yaml/cutout-complement1.yaml +1 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/pyproject.toml +9 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/_version.py +2 -2
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/finalise-additions.py +2 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/finalise.py +2 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/grib-index.py +1 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/init-additions.py +2 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/load-additions.py +2 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/load.py +2 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/__init__.py +24 -33
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/transform.py → anemoi_datasets-0.5.26/src/anemoi/datasets/create/filter.py +2 -5
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/__init__.py +0 -20
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/step.py +2 -16
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/accumulations.py +7 -6
- anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/planetary_computer.py +44 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +6 -22
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +8 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/field.py +1 -4
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +44 -6
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/patch.py +44 -1
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/variable.py +6 -2
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/complement.py +44 -10
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/dataset.py +29 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/forwards.py +8 -2
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/misc.py +74 -16
- anemoi_datasets-0.5.26/src/anemoi/datasets/data/observations/__init__.py +316 -0
- anemoi_datasets-0.5.26/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +200 -0
- anemoi_datasets-0.5.26/src/anemoi/datasets/data/observations/multi.py +64 -0
- anemoi_datasets-0.5.26/src/anemoi/datasets/data/padded.py +227 -0
- anemoi_datasets-0.5.26/src/anemoi/datasets/data/records/__init__.py +442 -0
- anemoi_datasets-0.5.26/src/anemoi/datasets/data/records/backends/__init__.py +157 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/stores.py +7 -56
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/subset.py +5 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/grids.py +6 -3
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/PKG-INFO +3 -2
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/SOURCES.txt +20 -37
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/requires.txt +2 -1
- anemoi_datasets-0.5.26/tests/conftest.py +1 -0
- anemoi_datasets-0.5.26/tests/create/__init__.py +0 -0
- anemoi_datasets-0.5.26/tests/create/test_create.py +83 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/test_sources.py +50 -17
- anemoi_datasets-0.5.26/tests/create/utils/__init__.py +0 -0
- anemoi_datasets-0.5.26/tests/create/utils/compare.py +218 -0
- anemoi_datasets-0.5.26/tests/create/utils/mock_sources.py +117 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_data.py +25 -1
- anemoi_datasets-0.5.26/tests/test_records.py +160 -0
- anemoi_datasets-0.5.26/tests/xarray/test_flavour.py +104 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_zarr.py +0 -28
- anemoi_datasets-0.5.26/tools/build-obs.py +52 -0
- anemoi_datasets-0.5.26/tools/check-obs.py +60 -0
- anemoi_datasets-0.5.24/.release-please-manifest.json +0 -3
- anemoi_datasets-0.5.24/docs/datasets/building/filters/empty.rst +0 -6
- anemoi_datasets-0.5.24/docs/datasets/building/filters/noop.rst +0 -6
- anemoi_datasets-0.5.24/docs/datasets/building/filters/orog_to_z.rst +0 -17
- anemoi_datasets-0.5.24/docs/datasets/building/filters/regrid.rst +0 -27
- anemoi_datasets-0.5.24/docs/datasets/building/filters/rename.rst +0 -20
- anemoi_datasets-0.5.24/docs/datasets/building/filters/rotate_winds.rst +0 -3
- anemoi_datasets-0.5.24/docs/datasets/building/filters/select.rst +0 -3
- anemoi_datasets-0.5.24/docs/datasets/building/filters/sum.rst +0 -13
- anemoi_datasets-0.5.24/docs/datasets/building/filters/unrotate_winds.rst +0 -3
- anemoi_datasets-0.5.24/docs/datasets/building/filters/wz_to_w.rst +0 -12
- anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/orog_to_z.yaml +0 -11
- anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/regrid1.yaml +0 -11
- anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/regrid2.yaml +0 -9
- anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/rename.yaml +0 -13
- anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/sum.yaml +0 -15
- anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/wz_to_w.yaml +0 -11
- anemoi_datasets-0.5.24/docs/datasets/building/filters.rst +0 -26
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filter.py +0 -50
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/__init__.py +0 -33
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/empty.py +0 -37
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/legacy.py +0 -93
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/noop.py +0 -37
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/orog_to_z.py +0 -58
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -83
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -84
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/rename.py +0 -205
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/rotate_winds.py +0 -105
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_dewpoint_to_relative_humidity.py +0 -78
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_relative_humidity_to_dewpoint.py +0 -84
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_relative_humidity_to_specific_humidity.py +0 -163
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_specific_humidity_to_relative_humidity.py +0 -451
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/speeddir_to_uv.py +0 -95
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/sum.py +0 -68
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/unrotate_winds.py +0 -105
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/uv_to_speeddir.py +0 -94
- anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/wz_to_w.py +0 -98
- anemoi_datasets-0.5.24/tests/create/test_create.py +0 -414
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.gitattributes +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/CODEOWNERS +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/ci-hpc-config.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/dependabot.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/labeler.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/downstream-ci-hpc.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-conventional-commit.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-label-conventional-commits.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-label-file-based.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-label-public.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/push-to-private.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/python-publish.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/python-pull-request.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/readthedocs-pr-update.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/release-please.yml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.gitignore +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.readthedocs.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/03-constant-fields.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/CONTRIBUTORS.md +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/LICENSE +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/README.md +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/Makefile +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/2t_map_example.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/area-1.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/concat.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-1.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-2.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-3.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-4.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-5.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-6.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/join.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/overlay.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/matrix.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/overview.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/recipe.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/skip-missing.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/thinning-after.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/thinning-before.png +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_templates/apidoc/package.rst.jinja +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/compare-lam.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/create.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/grib-index.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/inspect.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/introduction.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/patch.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/conf.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/advanced-options.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/incremental.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/introduction.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/naming-conventions.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/operations.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/cds.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/eccc-fstd.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/grib-index.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/hindcasts.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/repeated-dates.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-based.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-kerchunk.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-kerchunk.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/accumulations1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/accumulations2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/anemoi-dataset.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/eccc-fstd.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/forcings.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/mars-cds.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/mars1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/mars2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/netcdf.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/opendap.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates3.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates4.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/xarray-based.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/xarray-kerchunk.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/xarray-zarr.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/zenodo.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/zenodo.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/statistics.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/syntax.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/introduction.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/configuration.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/configuration.toml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/ensembles.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/grids.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/introduction.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/matching.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/methods.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/missing.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/opening.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/other.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/selecting.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/statistics.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/subsetting.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/zip.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/Makefile +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building1.txt +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building2.txt +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building3.txt +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/input.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/dev/contributing.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/01-grib-data.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/03-constant-fields.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/opendap1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/zarr1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/introduction.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/01-interpolate-step-dataset-combination.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/02-coutout-complement-combination.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/code/interpolate1.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/code/interpolate2.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/yaml/interpolate1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/yaml/interpolate2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/index.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/installing.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/modules/dataset.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/modules/filters.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/modules/sources.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/overview.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/pptx/images.pptx +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/scripts/api_build.sh +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/usage/getting_started.rst +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/usage/yaml/aifs-ea-an-oper-0001-mars-o48-2020-2021-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/using/code/trimedge1_.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/setup.cfg +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/check.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/check.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/cleanup.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/compare-lam.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/compare.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/copy.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/create.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/init.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/inspect.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/patch.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/publish.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/compute/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/compute/recentre.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/check.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/chunks.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/config.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/action.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/concat.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/context.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/data_sources.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/empty.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/filter.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/function.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/join.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/misc.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/pipe.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/repeated_dates.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/result.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/template.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/trace.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/patch.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/persistent.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/size.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/source.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/accumulations2.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/constants.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/empty.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/forcings.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/grib.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/grib_index.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/hindcasts.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/legacy.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/mars.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/netcdf.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/opendap.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/patterns.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/recentre.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/source.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/tendencies.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/grid.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/time.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_zarr.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/zenodo.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/statistics/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/typing.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/utils.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/zarr.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/concat.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/debug.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/ensemble.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/fill_missing.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/grids.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/indexing.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/interpolate.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/join.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/masked.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/merge.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/missing.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/rescale.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/select.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/statistics.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/unchecked.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/xy.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/dates/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/dates/groups.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/testing.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/utils/__init__.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/accumulation.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/regrid.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/run.sh +0 -0
- /anemoi_datasets-0.5.24/src/anemoi/datasets/create/testing.py → /anemoi_datasets-0.5.26/tests/create/utils/create.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_chunks.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_data_gridded.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_dates.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_netcdf.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_opendap.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_samples.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/.gitignore +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids2.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids3.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids4.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids5.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids6.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids7.yaml +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids_multilam.ipynb +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/make-sample-dataset.py +0 -0
- {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/upload-sample-dataset.py +0 -0
|
@@ -11,3 +11,5 @@
|
|
|
11
11
|
<!-- Include any additional information, caveats, or considerations that the reviewer should be aware of. -->
|
|
12
12
|
|
|
13
13
|
***As a contributor to the Anemoi framework, please ensure that your changes include unit tests, updates to any affected dependencies and documentation, and have been tested in a parallel setting (i.e., with multiple GPUs). As a reviewer, you are also responsible for verifying these aspects and requesting changes if they are not adequately addressed. For guidelines about those please refer to https://anemoi.readthedocs.io/en/latest/***
|
|
14
|
+
|
|
15
|
+
By opening this pull request, I affirm that all authors agree to the [Contributor License Agreement.](https://github.com/ecmwf/codex/blob/main/Legal/contributor_license_agreement.md)
|
|
@@ -41,7 +41,7 @@ repos:
|
|
|
41
41
|
- --profile black
|
|
42
42
|
- --project anemoi
|
|
43
43
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
44
|
-
rev: v0.11.
|
|
44
|
+
rev: v0.11.12
|
|
45
45
|
hooks:
|
|
46
46
|
- id: ruff
|
|
47
47
|
args:
|
|
@@ -65,7 +65,7 @@ repos:
|
|
|
65
65
|
- id: docconvert
|
|
66
66
|
args: ["numpy"]
|
|
67
67
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
68
|
-
rev: "v2.
|
|
68
|
+
rev: "v2.6.0"
|
|
69
69
|
hooks:
|
|
70
70
|
- id: pyproject-fmt
|
|
71
71
|
- repo: https://github.com/jshwi/docsig # Check docstrings against function sig
|
|
@@ -10,11 +10,16 @@
|
|
|
10
10
|
"draft-pull-request": true,
|
|
11
11
|
"pull-request-title-pattern": "chore${scope}: Release${component} ${version}",
|
|
12
12
|
"pull-request-header": ":robot: Automated Release PR\n\nThis PR was created by `release-please` to prepare the next release. Once merged:\n\n1. A new version tag will be created\n2. A GitHub release will be published\n3. The changelog will be updated\n\nChanges to be included in the next release:",
|
|
13
|
-
"pull-request-footer": "> [!IMPORTANT]\n> :warning: Merging this PR will:\n> - Create a new release\n> - Trigger deployment pipelines\n> - Update package versions\n\n **Before merging:**\n - Ensure all tests pass\n - Review the changelog carefully\n - Get required approvals\n\n [Release-please documentation](https://github.com/googleapis/release-please)",
|
|
13
|
+
"pull-request-footer": "> [!IMPORTANT]\n> Please do not change the PR title, manifest file, or any other automatically generated content in this PR unless you understand the implications. Changes here can break the release process.\n> :warning: Merging this PR will:\n> - Create a new release\n> - Trigger deployment pipelines\n> - Update package versions\n\n **Before merging:**\n - Ensure all tests pass\n - Review the changelog carefully\n - Get required approvals\n\n [Release-please documentation](https://github.com/googleapis/release-please)",
|
|
14
14
|
"packages": {
|
|
15
15
|
".": {
|
|
16
16
|
"package-name": "anemoi-datasets"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
|
+
"plugins": [
|
|
20
|
+
{
|
|
21
|
+
"type": "sentence-case"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
19
24
|
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
|
|
20
25
|
}
|
|
@@ -8,6 +8,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
Please add your functional changes to the appropriate section in the PR.
|
|
9
9
|
Keep it human-readable, your future self will thank you!
|
|
10
10
|
|
|
11
|
+
## [0.5.26](https://github.com/ecmwf/anemoi-datasets/compare/0.5.25...0.5.26) (2025-07-11)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* Add planetary planetary source ([#368](https://github.com/ecmwf/anemoi-datasets/issues/368)) ([c85337f](https://github.com/ecmwf/anemoi-datasets/commit/c85337f4b08381dc1e2e8ba71134c998c6258c2d))
|
|
17
|
+
* Extend xarray coordinate guesser to include pressure as a long_name ([#335](https://github.com/ecmwf/anemoi-datasets/issues/335)) ([bcbffaa](https://github.com/ecmwf/anemoi-datasets/commit/bcbffaa0b0ad011db5b1fd5879f9829f0d2e68af))
|
|
18
|
+
* Extented complement nearest functionality to support k>1 ([#371](https://github.com/ecmwf/anemoi-datasets/issues/371)) ([a2c5f92](https://github.com/ecmwf/anemoi-datasets/commit/a2c5f921f57fce60bd3fe728c21dc5e5b7d3a4a1))
|
|
19
|
+
* Point data ([#358](https://github.com/ecmwf/anemoi-datasets/issues/358)) ([78c4f85](https://github.com/ecmwf/anemoi-datasets/commit/78c4f85bf9cd4d6cc7f17268c8c526da32158220))
|
|
20
|
+
* Relaxed compatibility check for horizontal grid. ([#339](https://github.com/ecmwf/anemoi-datasets/issues/339)) ([a7dc859](https://github.com/ecmwf/anemoi-datasets/commit/a7dc859b6ec2fb0bad2ed7b7b8ee3c76034a258b))
|
|
21
|
+
* Sort xarray coordinate with patch ([#356](https://github.com/ecmwf/anemoi-datasets/issues/356)) ([638cbdb](https://github.com/ecmwf/anemoi-datasets/commit/638cbdb013b94b87748654ae338e0d02e69c1900))
|
|
22
|
+
* Use pytest-xdist to run tests in parallel. ([#346](https://github.com/ecmwf/anemoi-datasets/issues/346)) ([1d656ee](https://github.com/ecmwf/anemoi-datasets/commit/1d656ee62c51ee0cbe043943581cef16b2f7d7db))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* Deprecated filters in anemoi datasets ([#350](https://github.com/ecmwf/anemoi-datasets/issues/350)) ([d08c6f5](https://github.com/ecmwf/anemoi-datasets/commit/d08c6f55c3d983c930480bd777e74fd5a5bea6eb))
|
|
28
|
+
* **grib-index:** Match against filename, not full path ([#374](https://github.com/ecmwf/anemoi-datasets/issues/374)) ([e71a952](https://github.com/ecmwf/anemoi-datasets/commit/e71a95221493a703515d7a14a17f3dead06c8430))
|
|
29
|
+
* Missing method in xarray flavour ([#369](https://github.com/ecmwf/anemoi-datasets/issues/369)) ([d0b9588](https://github.com/ecmwf/anemoi-datasets/commit/d0b9588f0bff626ae751a74cf4cbbc373a2f67f4))
|
|
30
|
+
* Remove trailing slash from zarr paths. ([#362](https://github.com/ecmwf/anemoi-datasets/issues/362)) ([9a9bfe5](https://github.com/ecmwf/anemoi-datasets/commit/9a9bfe50406d299f44f7cce7e3befcabef6fefaf))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Documentation
|
|
34
|
+
|
|
35
|
+
* Fix pre-commit ([#367](https://github.com/ecmwf/anemoi-datasets/issues/367)) ([6e6ebe2](https://github.com/ecmwf/anemoi-datasets/commit/6e6ebe2e81fc735a2af422b8c222b0a2f229d8dc))
|
|
36
|
+
* Zarr dataset creation ([#365](https://github.com/ecmwf/anemoi-datasets/issues/365)) ([622c261](https://github.com/ecmwf/anemoi-datasets/commit/622c26156de44ae4eaa3359fef836741b1d81d67))
|
|
37
|
+
|
|
38
|
+
## [0.5.25](https://github.com/ecmwf/anemoi-datasets/compare/0.5.24...0.5.25) (2025-06-11)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### Features
|
|
42
|
+
|
|
43
|
+
* Integrating non-regular datasets in anemoi for observations. ([#306](https://github.com/ecmwf/anemoi-datasets/issues/306)) ([95a0fe4](https://github.com/ecmwf/anemoi-datasets/commit/95a0fe4bb10dc48469c0be0efad94f4d5e2a9fe8))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Bug Fixes
|
|
47
|
+
|
|
48
|
+
* Incremental dataset build tasks called regardless of presence of debug flag in CLI code ([#294](https://github.com/ecmwf/anemoi-datasets/issues/294)) ([37afc0d](https://github.com/ecmwf/anemoi-datasets/commit/37afc0d6489f2d6c4b3ce3f9901c40e4cec5c4eb))
|
|
49
|
+
* Regression in accumulations [#354](https://github.com/ecmwf/anemoi-datasets/issues/354) ([#355](https://github.com/ecmwf/anemoi-datasets/issues/355)) ([f9769d7](https://github.com/ecmwf/anemoi-datasets/commit/f9769d7944738ecbedb6b3cc1f78cd26de36a73f))
|
|
50
|
+
* Remove 2 layers of build function ([#348](https://github.com/ecmwf/anemoi-datasets/issues/348)) ([7a904c4](https://github.com/ecmwf/anemoi-datasets/commit/7a904c451772089f120419a9d39bff746e0aeebb))
|
|
51
|
+
|
|
11
52
|
## [0.5.24](https://github.com/ecmwf/anemoi-datasets/compare/0.5.23...0.5.24) (2025-05-23)
|
|
12
53
|
|
|
13
54
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.26
|
|
4
4
|
Summary: A package to hold various functions to support training of ML models on ECMWF data.
|
|
5
5
|
Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
|
|
6
6
|
License: Apache License
|
|
@@ -226,7 +226,7 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
226
226
|
Requires-Python: >=3.9
|
|
227
227
|
License-File: LICENSE
|
|
228
228
|
Requires-Dist: anemoi-transform>=0.1.10
|
|
229
|
-
Requires-Dist: anemoi-utils[provenance]>=0.4.
|
|
229
|
+
Requires-Dist: anemoi-utils[provenance]>=0.4.26
|
|
230
230
|
Requires-Dist: cfunits
|
|
231
231
|
Requires-Dist: numcodecs<0.16
|
|
232
232
|
Requires-Dist: numpy
|
|
@@ -262,6 +262,7 @@ Requires-Dist: requests; extra == "remote"
|
|
|
262
262
|
Provides-Extra: tests
|
|
263
263
|
Requires-Dist: anemoi-datasets[xarray]; extra == "tests"
|
|
264
264
|
Requires-Dist: pytest; extra == "tests"
|
|
265
|
+
Requires-Dist: pytest-xdist; extra == "tests"
|
|
265
266
|
Provides-Extra: xarray
|
|
266
267
|
Requires-Dist: adlfs; extra == "xarray"
|
|
267
268
|
Requires-Dist: gcsfs; extra == "xarray"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Support irregular observations datasets
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
<!--What is the status? -->
|
|
6
|
+
|
|
7
|
+
Proposed - 30/04/2025
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
<!--What is the issue that we are seeing that is motivating this decision or change?-->
|
|
12
|
+
|
|
13
|
+
The objective of this change is to support observations data which is not regular.
|
|
14
|
+
|
|
15
|
+
In contrast with the fields data where each date contain the same number of points,
|
|
16
|
+
in the observations data, the number of points can change for every time window.
|
|
17
|
+
|
|
18
|
+
The Zarr format fits well the fields data, but does not fit the observations data.
|
|
19
|
+
|
|
20
|
+
To allow storing data with irregular shape, we need to use another format than the zarr used for fields.
|
|
21
|
+
An experimental implementation using xarray-zarr has been developed and is not optimised for ML training.
|
|
22
|
+
|
|
23
|
+
## Decision
|
|
24
|
+
|
|
25
|
+
<!--Describe the change that you are proposing.-->
|
|
26
|
+
|
|
27
|
+
Add a functionality in anemoi-datasets to read observations datasets and provide the data as dictionary/mapper of numpy arrays.
|
|
28
|
+
|
|
29
|
+
Mimic as much as possible what is done for field datasets :
|
|
30
|
+
|
|
31
|
+
`ds = open_dataset(....)`
|
|
32
|
+
`ds[i]` -> provides the data for a given time window, related to a given reference date. As a dictionary-like object.
|
|
33
|
+
`ds.dates` -> list of reference date, `ds.dates[i]` is the reference date for the data provided in `ds[i]`
|
|
34
|
+
|
|
35
|
+
Also expose the latitudes, longitudes in a sensible way (as `ds.latitudes` and `ds.longitudes` now depend on the dates) and name_to_index and statistics and metadata, etc.
|
|
36
|
+
|
|
37
|
+
These API choices need to be made on an actual training use case.
|
|
38
|
+
|
|
39
|
+
Step to achieve this:
|
|
40
|
+
- Implement now a prototype format to allow developing ML training code on observation data.
|
|
41
|
+
- Performing extensive benchmarking with various formats (explore parquet, and other).
|
|
42
|
+
- As the final format is not defined yet, ensure a flexible architecture to allow switching (this will help for benchmarking).
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
## Scope of Change
|
|
46
|
+
|
|
47
|
+
<!--Specify which Anemoi packages/modules will be affected by this decision.-->
|
|
48
|
+
- anemoi-datasets
|
|
49
|
+
Not a breaking change, this only add functionality to read observations datasets.
|
|
50
|
+
|
|
51
|
+
Must be in line with the change related to multi-datasets.
|
|
52
|
+
|
|
53
|
+
## Consequences
|
|
54
|
+
|
|
55
|
+
<!--Discuss the impact of this decision, including benefits, trade-offs, and potential technical debt.-->
|
|
56
|
+
|
|
57
|
+
## Alternatives Considered [Optional]
|
|
58
|
+
|
|
59
|
+
<!--List alternative solutions and why they were not chosen.-->
|
|
60
|
+
|
|
61
|
+
## References [Optional]
|
|
62
|
+
|
|
63
|
+
<!--Links to relevant discussions, documentation, or external resources.-->
|
{anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/anemoi-dataset.rst
RENAMED
|
@@ -17,3 +17,9 @@ An anemoi-dataset can be a source for a dataset:
|
|
|
17
17
|
The parameters are the same as those used in the ``open_dataset``
|
|
18
18
|
function, which allows you to subset and combine datasets. See
|
|
19
19
|
:ref:`opening-datasets` for more information.
|
|
20
|
+
|
|
21
|
+
In particular, this is how local zarr datasets created with anemoi in a
|
|
22
|
+
can be used as a source, contrary to :ref:`xarray-zarr` :
|
|
23
|
+
|
|
24
|
+
.. literalinclude:: yaml/anemoi-zarr-dataset.yaml
|
|
25
|
+
:language: yaml
|
{anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-zarr.rst
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
.. _xarray-zarr:
|
|
2
|
+
|
|
1
3
|
#############
|
|
2
4
|
xarray-zarr
|
|
3
5
|
#############
|
|
@@ -17,4 +19,8 @@ it is necessary to use the :ref:`join <building-join>` operation to join
|
|
|
17
19
|
separate lists containing 2D variables and 3D variables. If all vertical
|
|
18
20
|
levels are desired, then it is acceptable to specify a single source.
|
|
19
21
|
|
|
22
|
+
Also, an ``xarray-zarr`` source uses the ``url`` keyword, and cannot be
|
|
23
|
+
used for accessing local datasets. For using local zarr datasets as
|
|
24
|
+
sources, use instead :ref:`anemoi-dataset_source`.
|
|
25
|
+
|
|
20
26
|
See :ref:`create-cf-data` for more information.
|
|
@@ -235,13 +235,15 @@ variables of `dataset1` and return the result.
|
|
|
235
235
|
source=dataset2,
|
|
236
236
|
what="variables",
|
|
237
237
|
interpolate="nearest",
|
|
238
|
+
k=1,
|
|
238
239
|
)
|
|
239
240
|
|
|
240
241
|
Currently ``what`` can only be ``variables`` and can be omitted.
|
|
241
242
|
|
|
242
243
|
The value for ``interpolate`` can be one of ``none`` (default) or
|
|
243
244
|
``nearest``. In the case of ``none``, the grids of the two datasets must
|
|
244
|
-
match.
|
|
245
|
+
match. In case of ``interpolate``, an additional parameter ``k`` can be
|
|
246
|
+
set to specify the number of nearest neighbors to use.
|
|
245
247
|
|
|
246
248
|
This feature was originally designed to be used in conjunction with
|
|
247
249
|
``cutout``, where `dataset1` is the lam, and `dataset2` is the global
|
|
@@ -46,9 +46,18 @@ can contain patterns. See :ref:`file-pattern` for more information.
|
|
|
46
46
|
Zarr
|
|
47
47
|
******
|
|
48
48
|
|
|
49
|
+
For using remote hosted zarr datasets as sources, use
|
|
50
|
+
:ref:`xarray-zarr`.
|
|
51
|
+
|
|
49
52
|
.. literalinclude:: yaml/zarr1.yaml
|
|
50
53
|
:language: yaml
|
|
51
54
|
|
|
55
|
+
For using local zarr datasets (such as anemoi-generated datasets), use
|
|
56
|
+
:ref:`anemoi-dataset_source`.
|
|
57
|
+
|
|
58
|
+
.. literalinclude:: yaml/zarr2.yaml
|
|
59
|
+
:language: yaml
|
|
60
|
+
|
|
52
61
|
*********************************************
|
|
53
62
|
Handling data that is not 100% CF-compliant
|
|
54
63
|
*********************************************
|
|
@@ -50,7 +50,7 @@ dynamic = [
|
|
|
50
50
|
]
|
|
51
51
|
dependencies = [
|
|
52
52
|
"anemoi-transform>=0.1.10",
|
|
53
|
-
"anemoi-utils[provenance]>=0.4.
|
|
53
|
+
"anemoi-utils[provenance]>=0.4.26",
|
|
54
54
|
"cfunits",
|
|
55
55
|
"numcodecs<0.16", # Until we move to zarr3
|
|
56
56
|
"numpy",
|
|
@@ -100,6 +100,7 @@ optional-dependencies.remote = [
|
|
|
100
100
|
optional-dependencies.tests = [
|
|
101
101
|
"anemoi-datasets[xarray]",
|
|
102
102
|
"pytest",
|
|
103
|
+
"pytest-xdist",
|
|
103
104
|
]
|
|
104
105
|
|
|
105
106
|
optional-dependencies.xarray = [
|
|
@@ -131,6 +132,13 @@ version_file = "src/anemoi/datasets/_version.py"
|
|
|
131
132
|
[tool.isort]
|
|
132
133
|
profile = "black"
|
|
133
134
|
|
|
135
|
+
[tool.pytest.ini_options]
|
|
136
|
+
testpaths = "tests"
|
|
137
|
+
addopts = [
|
|
138
|
+
"--numprocesses=auto",
|
|
139
|
+
"--strict-config",
|
|
140
|
+
]
|
|
141
|
+
|
|
134
142
|
[tool.mypy]
|
|
135
143
|
strict = false
|
|
136
144
|
exclude = [
|
{anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/grib-index.py
RENAMED
|
@@ -81,7 +81,7 @@ class GribIndexCmd(Command):
|
|
|
81
81
|
bool
|
|
82
82
|
True if the path matches, False otherwise.
|
|
83
83
|
"""
|
|
84
|
-
return fnmatch.fnmatch(path, args.match)
|
|
84
|
+
return fnmatch.fnmatch(os.path.basename(path), args.match)
|
|
85
85
|
|
|
86
86
|
from anemoi.datasets.create.sources.grib_index import GribIndex
|
|
87
87
|
|
|
@@ -44,7 +44,7 @@ from .check import check_data_values
|
|
|
44
44
|
from .chunks import ChunkFilter
|
|
45
45
|
from .config import build_output
|
|
46
46
|
from .config import loader_config
|
|
47
|
-
from .input import
|
|
47
|
+
from .input import InputBuilder
|
|
48
48
|
from .statistics import Summary
|
|
49
49
|
from .statistics import TmpStatistics
|
|
50
50
|
from .statistics import check_variance
|
|
@@ -101,7 +101,9 @@ def json_tidy(o: Any) -> Any:
|
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
def build_statistics_dates(
|
|
104
|
-
dates: list[datetime.datetime],
|
|
104
|
+
dates: list[datetime.datetime],
|
|
105
|
+
start: Optional[datetime.datetime],
|
|
106
|
+
end: Optional[datetime.datetime],
|
|
105
107
|
) -> tuple[str, str]:
|
|
106
108
|
"""Compute the start and end dates for the statistics.
|
|
107
109
|
|
|
@@ -551,36 +553,16 @@ class HasElementForDataMixin:
|
|
|
551
553
|
|
|
552
554
|
self.output = build_output(config.output, parent=self)
|
|
553
555
|
|
|
554
|
-
self.input =
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
The main configuration.
|
|
565
|
-
output_config : Any
|
|
566
|
-
The output configuration.
|
|
567
|
-
|
|
568
|
-
Returns
|
|
569
|
-
-------
|
|
570
|
-
Any
|
|
571
|
-
The input builder.
|
|
572
|
-
"""
|
|
573
|
-
builder = build_input(
|
|
574
|
-
main_config.input,
|
|
575
|
-
data_sources=main_config.get("data_sources", {}),
|
|
576
|
-
order_by=output_config.order_by,
|
|
577
|
-
flatten_grid=output_config.flatten_grid,
|
|
578
|
-
remapping=build_remapping(output_config.remapping),
|
|
579
|
-
use_grib_paramid=main_config.build.use_grib_paramid,
|
|
580
|
-
)
|
|
581
|
-
LOG.debug("✅ INPUT_BUILDER")
|
|
582
|
-
LOG.debug(builder)
|
|
583
|
-
return builder
|
|
556
|
+
self.input = InputBuilder(
|
|
557
|
+
config.input,
|
|
558
|
+
data_sources=config.get("data_sources", {}),
|
|
559
|
+
order_by=self.output.order_by,
|
|
560
|
+
flatten_grid=self.output.flatten_grid,
|
|
561
|
+
remapping=build_remapping(self.output.remapping),
|
|
562
|
+
use_grib_paramid=config.build.use_grib_paramid,
|
|
563
|
+
)
|
|
564
|
+
LOG.debug("✅ INPUT_BUILDER")
|
|
565
|
+
LOG.debug(self.input)
|
|
584
566
|
|
|
585
567
|
|
|
586
568
|
class Init(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixin):
|
|
@@ -1541,7 +1523,16 @@ class Statistics(Actor, HasStatisticTempMixin, HasRegistryMixin):
|
|
|
1541
1523
|
if not all(self.registry.get_flags(sync=False)):
|
|
1542
1524
|
raise Exception(f"❗Zarr {self.path} is not fully built, not writing statistics into dataset.")
|
|
1543
1525
|
|
|
1544
|
-
for k in [
|
|
1526
|
+
for k in [
|
|
1527
|
+
"mean",
|
|
1528
|
+
"stdev",
|
|
1529
|
+
"minimum",
|
|
1530
|
+
"maximum",
|
|
1531
|
+
"sums",
|
|
1532
|
+
"squares",
|
|
1533
|
+
"count",
|
|
1534
|
+
"has_nans",
|
|
1535
|
+
]:
|
|
1545
1536
|
self.dataset.add_dataset(name=k, array=stats[k], dimensions=("variable",))
|
|
1546
1537
|
|
|
1547
1538
|
self.registry.add_to_history("compute_statistics_end")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# (C) Copyright 2025
|
|
1
|
+
# (C) Copyright 2025- Anemoi contributors.
|
|
2
2
|
#
|
|
3
3
|
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
4
4
|
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
@@ -12,10 +12,8 @@ from typing import Dict
|
|
|
12
12
|
|
|
13
13
|
import earthkit.data as ekd
|
|
14
14
|
|
|
15
|
-
from ..filter import Filter
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
class TransformFilter(Filter):
|
|
16
|
+
class TransformFilter:
|
|
19
17
|
"""Calls filters from anemoi.transform.filters
|
|
20
18
|
|
|
21
19
|
Parameters
|
|
@@ -29,7 +27,6 @@ class TransformFilter(Filter):
|
|
|
29
27
|
"""
|
|
30
28
|
|
|
31
29
|
def __init__(self, context: Any, name: str, config: Dict[str, Any]) -> None:
|
|
32
|
-
|
|
33
30
|
from anemoi.transform.filters import create_filter
|
|
34
31
|
|
|
35
32
|
self.name = name
|
{anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/__init__.py
RENAMED
|
@@ -104,23 +104,3 @@ class InputBuilder:
|
|
|
104
104
|
Trace string.
|
|
105
105
|
"""
|
|
106
106
|
return f"InputBuilder({group_of_dates})"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
def build_input(config: dict, data_sources: Union[dict, list], **kwargs: Any) -> InputBuilder:
|
|
110
|
-
"""Build an InputBuilder instance.
|
|
111
|
-
|
|
112
|
-
Parameters
|
|
113
|
-
----------
|
|
114
|
-
config : dict
|
|
115
|
-
Configuration dictionary.
|
|
116
|
-
data_sources : Union[dict, list]
|
|
117
|
-
Data sources.
|
|
118
|
-
**kwargs : Any
|
|
119
|
-
Additional keyword arguments.
|
|
120
|
-
|
|
121
|
-
Returns
|
|
122
|
-
-------
|
|
123
|
-
InputBuilder
|
|
124
|
-
An instance of InputBuilder.
|
|
125
|
-
"""
|
|
126
|
-
return InputBuilder(config, data_sources, **kwargs)
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
# nor does it submit to any jurisdiction.
|
|
9
9
|
|
|
10
10
|
import logging
|
|
11
|
-
import warnings
|
|
12
11
|
from copy import deepcopy
|
|
13
12
|
from typing import Any
|
|
14
13
|
from typing import Dict
|
|
@@ -165,24 +164,11 @@ def step_factory(config: Dict[str, Any], context: ActionContext, action_path: Li
|
|
|
165
164
|
if cls is not None:
|
|
166
165
|
return cls(context, action_path, previous_step, *args, **kwargs)
|
|
167
166
|
|
|
168
|
-
# Try filters from
|
|
167
|
+
# Try filters from transform filter registry
|
|
169
168
|
from anemoi.transform.filters import filter_registry as transform_filter_registry
|
|
170
169
|
|
|
171
|
-
from ..filters import create_filter as create_datasets_filter
|
|
172
|
-
from ..filters import filter_registry as datasets_filter_registry
|
|
173
|
-
|
|
174
|
-
if datasets_filter_registry.is_registered(key):
|
|
175
|
-
|
|
176
|
-
if transform_filter_registry.is_registered(key):
|
|
177
|
-
warnings.warn(f"Filter `{key}` is registered in both datasets and transform filter registries")
|
|
178
|
-
|
|
179
|
-
filter = create_datasets_filter(None, config)
|
|
180
|
-
return FunctionStepAction(context, action_path + [key], previous_step, key, filter)
|
|
181
|
-
|
|
182
|
-
# Use filters from transform registry
|
|
183
|
-
|
|
184
170
|
if transform_filter_registry.is_registered(key):
|
|
185
|
-
from ..
|
|
171
|
+
from ..filter import TransformFilter
|
|
186
172
|
|
|
187
173
|
return FunctionStepAction(
|
|
188
174
|
context, action_path + [key], previous_step, key, TransformFilter(context, key, config)
|
|
@@ -459,12 +459,13 @@ class AccumulationFromStart(Accumulation):
|
|
|
459
459
|
A tuple representing the MARS date-time step.
|
|
460
460
|
"""
|
|
461
461
|
assert user_date is None, user_date
|
|
462
|
-
assert not frequency, frequency
|
|
463
462
|
|
|
464
463
|
steps = (step1 + add_step, step2 + add_step)
|
|
465
464
|
if steps[0] == 0:
|
|
466
465
|
steps = (steps[1],)
|
|
467
466
|
|
|
467
|
+
assert frequency == 0 or frequency == (step2 - step1), frequency
|
|
468
|
+
|
|
468
469
|
return (
|
|
469
470
|
base_date.year * 10000 + base_date.month * 100 + base_date.day,
|
|
470
471
|
base_date.hour * 100 + base_date.minute,
|
|
@@ -824,6 +825,11 @@ def _compute_accumulations(
|
|
|
824
825
|
step1, step2 = user_accumulation_period
|
|
825
826
|
assert step1 < step2, user_accumulation_period
|
|
826
827
|
|
|
828
|
+
if accumulations_reset_frequency is not None:
|
|
829
|
+
AccumulationClass = AccumulationFromLastReset
|
|
830
|
+
else:
|
|
831
|
+
AccumulationClass = AccumulationFromStart if data_accumulation_period in (0, None) else AccumulationFromLastStep
|
|
832
|
+
|
|
827
833
|
if data_accumulation_period is None:
|
|
828
834
|
data_accumulation_period = user_accumulation_period[1] - user_accumulation_period[0]
|
|
829
835
|
|
|
@@ -838,11 +844,6 @@ def _compute_accumulations(
|
|
|
838
844
|
|
|
839
845
|
base_times = [t // 100 if t > 100 else t for t in base_times]
|
|
840
846
|
|
|
841
|
-
if accumulations_reset_frequency is not None:
|
|
842
|
-
AccumulationClass = AccumulationFromLastReset
|
|
843
|
-
else:
|
|
844
|
-
AccumulationClass = AccumulationFromStart if data_accumulation_period in (0, None) else AccumulationFromLastStep
|
|
845
|
-
|
|
846
847
|
mars_date_time_steps = AccumulationClass.mars_date_time_steps(
|
|
847
848
|
dates=dates,
|
|
848
849
|
step1=step1,
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# (C) Copyright 2024 Anemoi contributors.
|
|
2
|
+
#
|
|
3
|
+
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
4
|
+
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
5
|
+
#
|
|
6
|
+
# In applying this licence, ECMWF does not waive the privileges and immunities
|
|
7
|
+
# granted to it by virtue of its status as an intergovernmental organisation
|
|
8
|
+
# nor does it submit to any jurisdiction.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
from . import source_registry
|
|
12
|
+
from .xarray import XarraySourceBase
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@source_registry.register("planetary_computer")
|
|
16
|
+
class PlanetaryComputerSource(XarraySourceBase):
|
|
17
|
+
"""An Xarray data source for the planetary_computer."""
|
|
18
|
+
|
|
19
|
+
emoji = "🪐"
|
|
20
|
+
|
|
21
|
+
def __init__(self, context, data_catalog_id, version="v1", *args, **kwargs: dict):
|
|
22
|
+
|
|
23
|
+
import planetary_computer
|
|
24
|
+
import pystac_client
|
|
25
|
+
|
|
26
|
+
self.data_catalog_id = data_catalog_id
|
|
27
|
+
self.flavour = kwargs.pop("flavour", None)
|
|
28
|
+
self.patch = kwargs.pop("patch", None)
|
|
29
|
+
self.options = kwargs.pop("options", {})
|
|
30
|
+
|
|
31
|
+
catalog = pystac_client.Client.open(
|
|
32
|
+
f"https://planetarycomputer.microsoft.com/api/stac/{version}/",
|
|
33
|
+
modifier=planetary_computer.sign_inplace,
|
|
34
|
+
)
|
|
35
|
+
collection = catalog.get_collection(self.data_catalog_id)
|
|
36
|
+
|
|
37
|
+
asset = collection.assets["zarr-abfs"]
|
|
38
|
+
|
|
39
|
+
if "xarray:storage_options" in asset.extra_fields:
|
|
40
|
+
self.options["storage_options"] = asset.extra_fields["xarray:storage_options"]
|
|
41
|
+
|
|
42
|
+
self.options.update(asset.extra_fields["xarray:open_kwargs"])
|
|
43
|
+
|
|
44
|
+
super().__init__(context, url=asset.href, *args, **kwargs)
|