anemoi-datasets 0.5.27__tar.gz → 0.5.28__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.27 → anemoi_datasets-0.5.28}/.gitignore +10 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.pre-commit-config.yaml +5 -4
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.readthedocs.yaml +3 -3
- anemoi_datasets-0.5.28/.release-please-manifest.json +3 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/CHANGELOG.md +23 -0
- {anemoi_datasets-0.5.27/src/anemoi_datasets.egg-info → anemoi_datasets-0.5.28}/PKG-INFO +5 -2
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/Makefile +1 -1
- anemoi_datasets-0.5.28/docs/building/filters.rst +10 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/introduction.rst +1 -1
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/repeated-dates.rst +1 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/create.rst +1 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/grib-index.rst +1 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/inspect.rst +1 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/introduction.rst +3 -3
- anemoi_datasets-0.5.27/docs/usage/getting_started.rst → anemoi_datasets-0.5.28/docs/howtos/create/00-redo-sample-dataset.rst +4 -4
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/introduction.rst +1 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/index.rst +4 -17
- anemoi_datasets-0.5.28/docs/installing.rst +18 -0
- anemoi_datasets-0.5.28/docs/modules/dataset.rst +8 -0
- anemoi_datasets-0.5.28/docs/scripts/Makefile +8 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/scripts/api_build.sh +1 -1
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/combining.rst +9 -9
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/grids.rst +3 -3
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/missing.rst +1 -1
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/opening.rst +1 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/pyproject.toml +5 -2
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/_version.py +3 -3
- anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/__init__.py +93 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/format.py +55 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/migrate.py +555 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/__init__.py +42 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/config.py +2 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/__init__.py +85 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/action.py +317 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/context/__init__.py +71 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/context/field.py +54 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/data_sources.py +2 -1
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/misc.py +57 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/repeated_dates.py +0 -114
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/result/__init__.py +17 -0
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/result.py → anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/result/field.py +9 -89
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/accumulations.py +74 -94
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/accumulations2.py +16 -45
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/anemoi_dataset.py +77 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/constants.py +52 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/empty.py +40 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/forcings.py +42 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/grib.py +166 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/grib_index.py +46 -42
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/hindcasts.py +94 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/legacy.py +46 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/mars.py +107 -131
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/netcdf.py +45 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/opendap.py +45 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/recentre.py +42 -41
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/repeated_dates.py +44 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/source.py +47 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/tendencies.py +171 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +29 -24
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/field.py +4 -4
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/xarray_zarr.py +44 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/zenodo.py +71 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/utils.py +0 -42
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/dataset.py +6 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/grids.py +0 -152
- anemoi_datasets-0.5.28/src/anemoi/datasets/data/rolling_average.py +141 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/stores.py +7 -9
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/dates/__init__.py +2 -0
- anemoi_datasets-0.5.28/src/anemoi/datasets/dumper.py +76 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/grids.py +1 -178
- anemoi_datasets-0.5.28/src/anemoi/datasets/schemas/recipe.json +131 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28/src/anemoi_datasets.egg-info}/PKG-INFO +5 -2
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/SOURCES.txt +106 -107
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/requires.txt +4 -1
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/test_create.py +14 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/compare.py +8 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_data.py +14 -0
- anemoi_datasets-0.5.27/.release-please-manifest.json +0 -3
- anemoi_datasets-0.5.27/docs/datasets/introduction.rst +0 -21
- anemoi_datasets-0.5.27/docs/installing.rst +0 -85
- anemoi_datasets-0.5.27/docs/modules/dataset.rst +0 -10
- anemoi_datasets-0.5.27/docs/modules/filters.rst +0 -5
- anemoi_datasets-0.5.27/docs/modules/sources.rst +0 -5
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/filter.py +0 -47
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/__init__.py +0 -105
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/action.py +0 -257
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/concat.py +0 -161
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/context.py +0 -86
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/empty.py +0 -53
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/filter.py +0 -117
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/function.py +0 -232
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/join.py +0 -129
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/misc.py +0 -128
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/pipe.py +0 -66
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/step.py +0 -173
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/template.py +0 -161
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -73
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/constants.py +0 -51
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/empty.py +0 -36
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/forcings.py +0 -41
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/grib.py +0 -146
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/hindcasts.py +0 -93
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/legacy.py +0 -98
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/netcdf.py +0 -41
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/opendap.py +0 -41
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/source.py +0 -69
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/tendencies.py +0 -198
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/xarray_zarr.py +0 -40
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/zenodo.py +0 -67
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.gitattributes +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/CODEOWNERS +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/ci-hpc-config.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/dependabot.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/labeler.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/pull_request_template.md +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/downstream-ci-hpc.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-conventional-commit.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-ats.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-conventional-commits.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-file-based.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-public.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/push-to-private.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/python-publish.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/python-pull-request.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/readthedocs-pr-update.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/release-please.yml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.release-please-config.json +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/CONTRIBUTORS.md +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/LICENSE +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/README.md +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/2t_map_example.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/area-1.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/concat.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-1.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-2.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-3.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-4.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-5.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-6.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/join.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/overlay.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/matrix.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/overview.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/recipe.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/skip-missing.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/thinning-after.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/thinning-before.png +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_templates/apidoc/package.rst.jinja +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/adr/adr-1.md +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/advanced-options.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/incremental.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/naming-conventions.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/operations.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/anemoi-dataset.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/cds.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/eccc-fstd.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/grib-index.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/hindcasts.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-based.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-kerchunk.py +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-kerchunk.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-zarr.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/accumulations1.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/accumulations2.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/anemoi-dataset.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/anemoi-zarr-dataset.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/eccc-fstd.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/forcings.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars-cds.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars1.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars2.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/netcdf.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/opendap.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates1.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates2.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates3.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates4.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-based.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-kerchunk.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-zarr.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/zenodo.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/zenodo.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/statistics.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/syntax.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/compare-lam.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/patch.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/validate.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/conf.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/dev/contributing.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/01-grib-data.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/02-cf-data.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/03-constant-fields.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/04-create-with-filter.rst +0 -0
- {anemoi_datasets-0.5.27/docs/usage → anemoi_datasets-0.5.28/docs/howtos/create}/yaml/aifs-ea-an-oper-0001-mars-o48-2020-2021-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/opendap1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/recipe-filter1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/recipe-filter2.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/zarr1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/zarr2.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/01-interpolate-step-dataset-combination.rst +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/02-coutout-complement-combination.rst +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/cutout-complement1.py +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/interpolate1.py +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/interpolate2.py +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/cutout-complement1.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/interpolate1.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/interpolate2.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/overview.rst +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/pptx/images.pptx +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/using/code/trimedge1_.py +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/configuration.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/configuration.toml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/ensembles.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/introduction.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/matching.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/methods.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/other.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/selecting.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/statistics.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/subsetting.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/zip.rst +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/Makefile +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building1.txt +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building2.txt +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building3.txt +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/input.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/setup.cfg +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/check.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/check.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/cleanup.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/compare-lam.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/compare.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/copy.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/create.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/finalise.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/grib-index.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/init-additions.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/init.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/inspect.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/load-additions.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/load.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/patch.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/publish.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/validate.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/compute/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/compute/recentre.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/check.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/chunks.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/trace.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/patch.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/persistent.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/size.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/source.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/fdb.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/patterns.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/planetary_computer.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/grid.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/patch.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/time.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/variable.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/statistics/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/testing.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/typing.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/zarr.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/complement.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/concat.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/debug.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/ensemble.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/fill_missing.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/forwards.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/indexing.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/interpolate.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/join.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/masked.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/merge.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/misc.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/missing.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/multi.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/padded.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/records/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/records/backends/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/rescale.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/select.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/statistics.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/subset.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/unchecked.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/xy.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/dates/groups.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/testing.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/validate.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/conftest.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/accumulation.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/regrid.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/run.sh +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/test_sources.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/__init__.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/create.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/mock_sources.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_chunks.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_data_gridded.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_dates.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_records.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_validate.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_flavour.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_netcdf.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_opendap.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_variable.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_zarr.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/.gitignore +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/build-obs.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/check-obs.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids2.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids3.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids4.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids5.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids6.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids7.yaml +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids_multilam.ipynb +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/make-sample-dataset.py +0 -0
- {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/upload-sample-dataset.py +0 -0
|
@@ -27,12 +27,12 @@ repos:
|
|
|
27
27
|
- id: python-check-blanket-noqa # Check for # noqa: all
|
|
28
28
|
- id: python-no-log-warn # Check for log.warn
|
|
29
29
|
- repo: https://github.com/psf/black-pre-commit-mirror
|
|
30
|
-
rev: 25.
|
|
30
|
+
rev: 25.9.0
|
|
31
31
|
hooks:
|
|
32
32
|
- id: black
|
|
33
33
|
args: [--line-length=120]
|
|
34
34
|
- repo: https://github.com/pycqa/isort
|
|
35
|
-
rev: 6.0
|
|
35
|
+
rev: 6.1.0
|
|
36
36
|
hooks:
|
|
37
37
|
- id: isort
|
|
38
38
|
args:
|
|
@@ -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.
|
|
44
|
+
rev: v0.13.3
|
|
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.7.0"
|
|
69
69
|
hooks:
|
|
70
70
|
- id: pyproject-fmt
|
|
71
71
|
- repo: https://github.com/jshwi/docsig # Check docstrings against function sig
|
|
@@ -79,6 +79,7 @@ repos:
|
|
|
79
79
|
- --check-protected # Check protected methods
|
|
80
80
|
- --check-class # Check class docstrings
|
|
81
81
|
- --disable=SIG101,SIG102 # Disable empty docstrings
|
|
82
|
+
|
|
82
83
|
ci:
|
|
83
84
|
autoupdate_schedule: monthly
|
|
84
85
|
autoupdate_commit_msg: "chore(deps): pre-commit.ci autoupdate"
|
|
@@ -8,6 +8,29 @@ 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.28](https://github.com/ecmwf/anemoi-datasets/compare/0.5.27...0.5.28) (2025-10-30)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* Added rolling average on read ([#448](https://github.com/ecmwf/anemoi-datasets/issues/448)) ([5cef720](https://github.com/ecmwf/anemoi-datasets/commit/5cef7207b7900190272d970bf44f35a7011e3708))
|
|
17
|
+
* Fix repeat dates ([#458](https://github.com/ecmwf/anemoi-datasets/issues/458)) ([16b5c83](https://github.com/ecmwf/anemoi-datasets/commit/16b5c836172a37c13b210b35baee1a5e97731e5d))
|
|
18
|
+
* Refactor dataset create ([#379](https://github.com/ecmwf/anemoi-datasets/issues/379)) ([c5408da](https://github.com/ecmwf/anemoi-datasets/commit/c5408dafd34c80bcb4b0cd9623dbebfe00959151))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* Allow grib source to be used for constant data ([#428](https://github.com/ecmwf/anemoi-datasets/issues/428)) ([c1d7ff1](https://github.com/ecmwf/anemoi-datasets/commit/c1d7ff1035848e26d3034903577c267973985c07))
|
|
24
|
+
* Broken source imports ([#450](https://github.com/ecmwf/anemoi-datasets/issues/450)) ([#454](https://github.com/ecmwf/anemoi-datasets/issues/454)) ([d6ed174](https://github.com/ecmwf/anemoi-datasets/commit/d6ed174cf4f6da22464c050d3304b026fc0ae4a3))
|
|
25
|
+
* Ensure missing value indicator in not a valid value in accumulat… ([#316](https://github.com/ecmwf/anemoi-datasets/issues/316)) ([3541a1f](https://github.com/ecmwf/anemoi-datasets/commit/3541a1f7068b54ceeb35dff93c3f94b4b138cb9d))
|
|
26
|
+
* S3 access [#453](https://github.com/ecmwf/anemoi-datasets/issues/453) ([#459](https://github.com/ecmwf/anemoi-datasets/issues/459)) ([2d810e3](https://github.com/ecmwf/anemoi-datasets/commit/2d810e3775ace78ffe2c43cc9bac66d704c0754d))
|
|
27
|
+
* Xarray-zarr filters ([#457](https://github.com/ecmwf/anemoi-datasets/issues/457)) ([5f2973f](https://github.com/ecmwf/anemoi-datasets/commit/5f2973fb7d128a3f6de5ed538e39cc7421eeb5dc))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Documentation
|
|
31
|
+
|
|
32
|
+
* Documentation updates ([#419](https://github.com/ecmwf/anemoi-datasets/issues/419)) ([4588175](https://github.com/ecmwf/anemoi-datasets/commit/458817533e805652527945eef4de781c62d3abf9))
|
|
33
|
+
|
|
11
34
|
## [0.5.27](https://github.com/ecmwf/anemoi-datasets/compare/0.5.26...0.5.27) (2025-10-06)
|
|
12
35
|
|
|
13
36
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.28
|
|
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
|
|
@@ -225,11 +225,14 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
225
225
|
Requires-Python: >=3.10
|
|
226
226
|
License-File: LICENSE
|
|
227
227
|
Requires-Dist: anemoi-transform>=0.1.10
|
|
228
|
-
Requires-Dist: anemoi-utils[provenance]>=0.4.
|
|
228
|
+
Requires-Dist: anemoi-utils[provenance]>=0.4.38
|
|
229
229
|
Requires-Dist: cfunits
|
|
230
|
+
Requires-Dist: glom
|
|
231
|
+
Requires-Dist: jsonschema
|
|
230
232
|
Requires-Dist: numcodecs<0.16
|
|
231
233
|
Requires-Dist: numpy
|
|
232
234
|
Requires-Dist: pyyaml
|
|
235
|
+
Requires-Dist: ruamel-yaml
|
|
233
236
|
Requires-Dist: semantic-version
|
|
234
237
|
Requires-Dist: tqdm
|
|
235
238
|
Requires-Dist: zarr<=2.18.4
|
|
@@ -19,5 +19,5 @@ help:
|
|
|
19
19
|
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
20
20
|
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
21
21
|
%: Makefile
|
|
22
|
-
|
|
22
|
+
@cd scripts && $(MAKE) $@
|
|
23
23
|
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
.. _filters:
|
|
2
|
+
|
|
3
|
+
#########
|
|
4
|
+
Filters
|
|
5
|
+
#########
|
|
6
|
+
|
|
7
|
+
Filters can be used to perform data transformations when creating a
|
|
8
|
+
dataset. See the :ref:`anemoi-transform
|
|
9
|
+
<anemoi-transform:list-of-filters>` documentation for a list of filters
|
|
10
|
+
and example configurations.
|
{anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/introduction.rst
RENAMED
|
@@ -14,7 +14,7 @@ computed as the dataset is built, and stored in the metadata, with other
|
|
|
14
14
|
information such as the locations of the grid points, the list of
|
|
15
15
|
variables, etc.
|
|
16
16
|
|
|
17
|
-
.. figure::
|
|
17
|
+
.. figure:: ../_static/schemas/recipe.png
|
|
18
18
|
:alt: Building datasets
|
|
19
19
|
:align: center
|
|
20
20
|
|
|
@@ -10,7 +10,7 @@ dates of the dataset.
|
|
|
10
10
|
|
|
11
11
|
The general format of the `repeated-dates` source is:
|
|
12
12
|
|
|
13
|
-
.. literalinclude:: yaml/
|
|
13
|
+
.. literalinclude:: yaml/repeated-dates1.yaml
|
|
14
14
|
:language: yaml
|
|
15
15
|
|
|
16
16
|
where ``source`` is any of the :ref:`operations <operations>` or
|
|
@@ -4,7 +4,7 @@ Create Command
|
|
|
4
4
|
==============
|
|
5
5
|
|
|
6
6
|
Use this command to create a dataset from a recipe file.
|
|
7
|
-
The syntax of the recipe file is described in :
|
|
7
|
+
The syntax of the recipe file is described in :ref:`building-introduction`.
|
|
8
8
|
|
|
9
9
|
.. argparse::
|
|
10
10
|
:module: anemoi.datasets.__main__
|
|
@@ -15,7 +15,7 @@ This command will output the metadata of the dataset, including the variables, d
|
|
|
15
15
|
|
|
16
16
|
which will output something like the following. The output should be self-explanatory.
|
|
17
17
|
|
|
18
|
-
.. literalinclude:: ../
|
|
18
|
+
.. literalinclude:: ../yaml/building1.txt
|
|
19
19
|
:language: console
|
|
20
20
|
|
|
21
21
|
.. argparse::
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.. _cli-introduction:
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
############
|
|
4
|
+
Introduction
|
|
5
|
+
############
|
|
6
6
|
|
|
7
7
|
When you install the `anemoi-datasets` package, this will also install command line tool
|
|
8
8
|
called ``anemoi-datasets`` which can be used to manage the zarr datasets.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
..
|
|
1
|
+
.. _redo-sample-dataset:
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
##############################
|
|
4
|
+
Re-create the sample dataset
|
|
5
|
+
##############################
|
|
6
6
|
|
|
7
7
|
The following example presents a simple but comprehensive recipe to
|
|
8
8
|
create an Anemoi dataset based on the atmospheric reanalysis ERA5. Once
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
Welcome to `anemoi-datasets` documentation!
|
|
5
5
|
#############################################
|
|
6
6
|
|
|
7
|
-
.. warning::
|
|
8
|
-
|
|
9
|
-
This documentation is a work in progress.
|
|
10
|
-
|
|
11
7
|
An *Anemoi dataset* is a thin wrapper around a Zarr_ store that is
|
|
12
8
|
optimised for training data-driven weather forecasting models.
|
|
13
9
|
anemoi-datasets are organised in such a way that I/O operations are
|
|
@@ -58,8 +54,7 @@ datasets for compatibility with machine learning models.
|
|
|
58
54
|
In the rest of this documentation, you will learn how to configure and
|
|
59
55
|
create anemoi datasets using YAML files, as well as how to load and read
|
|
60
56
|
existing ones. A full example of a dataset preparation process can be
|
|
61
|
-
found in the :ref:`
|
|
62
|
-
section.
|
|
57
|
+
found in the :ref:`redo-sample-dataset` section.
|
|
63
58
|
|
|
64
59
|
************
|
|
65
60
|
Installing
|
|
@@ -125,24 +120,15 @@ You may also have to install pandoc on macOS:
|
|
|
125
120
|
:caption: Introduction
|
|
126
121
|
|
|
127
122
|
overview
|
|
128
|
-
cli/introduction
|
|
129
123
|
installing
|
|
130
124
|
|
|
131
|
-
.. toctree::
|
|
132
|
-
:maxdepth: 1
|
|
133
|
-
:hidden:
|
|
134
|
-
:caption: Recipe examples
|
|
135
|
-
|
|
136
|
-
usage/getting_started
|
|
137
|
-
|
|
138
125
|
.. toctree::
|
|
139
126
|
:maxdepth: 1
|
|
140
127
|
:hidden:
|
|
141
128
|
:caption: User Guide
|
|
142
129
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
datasets/using/introduction
|
|
130
|
+
building/introduction
|
|
131
|
+
using/introduction
|
|
146
132
|
|
|
147
133
|
.. toctree::
|
|
148
134
|
:maxdepth: 3
|
|
@@ -156,6 +142,7 @@ You may also have to install pandoc on macOS:
|
|
|
156
142
|
:hidden:
|
|
157
143
|
:caption: CLI
|
|
158
144
|
|
|
145
|
+
cli/introduction
|
|
159
146
|
cli/create
|
|
160
147
|
cli/inspect
|
|
161
148
|
cli/grib-index
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.. _installing:
|
|
2
|
+
|
|
3
|
+
############
|
|
4
|
+
Installing
|
|
5
|
+
############
|
|
6
|
+
|
|
7
|
+
To install the package, you can use the following command:
|
|
8
|
+
|
|
9
|
+
.. code:: bash
|
|
10
|
+
|
|
11
|
+
python -m pip install anemoi-datasets
|
|
12
|
+
|
|
13
|
+
If you are interested in creating datasets, you can install the package
|
|
14
|
+
with the following command:
|
|
15
|
+
|
|
16
|
+
.. code:: bash
|
|
17
|
+
|
|
18
|
+
pip install anemoi-datasets[create]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
.. _dataset-autodoc:
|
|
2
|
+
|
|
3
|
+
#########
|
|
4
|
+
Dataset
|
|
5
|
+
#########
|
|
6
|
+
|
|
7
|
+
.. autoclass:: anemoi.datasets.data.dataset.Dataset
|
|
8
|
+
:members: dates, latitudes, longitudes, dates_interval_to_indices, provenance, typed_variables, metadata, start_date, end_date, supporting_arrays, grids, variables, frequency, name_to_index, shape, field_shape, dtype, missing, statistics,statistics_tendencies
|
|
@@ -9,5 +9,5 @@ source_dir="$script_dir/../../src/"
|
|
|
9
9
|
|
|
10
10
|
trap 'rm -f $source_dir/anemoi/__init__.py' EXIT
|
|
11
11
|
|
|
12
|
-
touch "$source_dir/anemoi/__init__.py"
|
|
12
|
+
# touch "$source_dir/anemoi/__init__.py"
|
|
13
13
|
sphinx-apidoc -M -f -o "$docs_dir/_api" "$source_dir/anemoi" -t "$docs_dir/_templates/apidoc"
|
|
@@ -67,7 +67,7 @@ concatenate datasets that have gaps between them, check the
|
|
|
67
67
|
|
|
68
68
|
ds = open_dataset(concat=["dataset-1979-2000", "dataset-2001-2022"])
|
|
69
69
|
|
|
70
|
-
.. image::
|
|
70
|
+
.. image:: ../_static/concat.png
|
|
71
71
|
:align: center
|
|
72
72
|
:alt: Concatenation
|
|
73
73
|
|
|
@@ -101,7 +101,7 @@ variables.
|
|
|
101
101
|
|
|
102
102
|
ds = open_dataset(join=["dataset1-1979-2022", "dataset2-1979-2022"])
|
|
103
103
|
|
|
104
|
-
.. image::
|
|
104
|
+
.. image:: ../_static/join.png
|
|
105
105
|
:align: center
|
|
106
106
|
:alt: Join
|
|
107
107
|
|
|
@@ -109,7 +109,7 @@ If a variable is present in more than one file, the last occurrence of
|
|
|
109
109
|
that variable will be used and will be at the position of the first
|
|
110
110
|
occurrence of that name.
|
|
111
111
|
|
|
112
|
-
.. image::
|
|
112
|
+
.. image:: ../_static//overlay.png
|
|
113
113
|
:align: center
|
|
114
114
|
:alt: Overlay
|
|
115
115
|
|
|
@@ -164,14 +164,14 @@ the bounding box of the second dataset.
|
|
|
164
164
|
|
|
165
165
|
The image below shows the global dataset:
|
|
166
166
|
|
|
167
|
-
.. image::
|
|
167
|
+
.. image:: ../_static/cutout-1.png
|
|
168
168
|
:width: 75%
|
|
169
169
|
:align: center
|
|
170
170
|
:alt: Cutout
|
|
171
171
|
|
|
172
172
|
The image below shows the LAM dataset:
|
|
173
173
|
|
|
174
|
-
.. image::
|
|
174
|
+
.. image:: ../_static//cutout-2.png
|
|
175
175
|
:width: 75%
|
|
176
176
|
:align: center
|
|
177
177
|
:alt: Cutout
|
|
@@ -180,7 +180,7 @@ A 'cutout' is performed by removing the grid points from the global
|
|
|
180
180
|
dataset that are contained in the LAM dataset. The result is shown
|
|
181
181
|
below:
|
|
182
182
|
|
|
183
|
-
.. image::
|
|
183
|
+
.. image:: ../_static//cutout-3.png
|
|
184
184
|
:width: 75%
|
|
185
185
|
:align: center
|
|
186
186
|
:alt: Cutout
|
|
@@ -188,7 +188,7 @@ below:
|
|
|
188
188
|
The final dataset is the concatenation of the LAM dataset and the
|
|
189
189
|
cutout:
|
|
190
190
|
|
|
191
|
-
.. image::
|
|
191
|
+
.. image:: ../_static//cutout-4.png
|
|
192
192
|
:width: 75%
|
|
193
193
|
:align: center
|
|
194
194
|
:alt: Cutout
|
|
@@ -206,11 +206,11 @@ The plots below illustrate how the cutout differs if `min_distance_km`
|
|
|
206
206
|
is not given (top) or if `min_distance_km` is set to `0` (bottom). The
|
|
207
207
|
difference can be seen at the boundary between the two grids:
|
|
208
208
|
|
|
209
|
-
.. image::
|
|
209
|
+
.. image:: ../_static//cutout-5.png
|
|
210
210
|
:align: center
|
|
211
211
|
:alt: Cutout
|
|
212
212
|
|
|
213
|
-
.. image::
|
|
213
|
+
.. image:: ../_static//cutout-6.png
|
|
214
214
|
:align: center
|
|
215
215
|
:alt: Cutout
|
|
216
216
|
|
|
@@ -26,14 +26,14 @@ the thinning will apply to the only dimension.
|
|
|
26
26
|
The following example shows the effect of thinning a dataset with a 1
|
|
27
27
|
degree resolution:
|
|
28
28
|
|
|
29
|
-
.. image::
|
|
29
|
+
.. image:: ../_static/thinning-before.png
|
|
30
30
|
:width: 75%
|
|
31
31
|
:align: center
|
|
32
32
|
|
|
33
33
|
Thinning the dataset with ``thinning=4`` will result in the following
|
|
34
34
|
dataset:
|
|
35
35
|
|
|
36
|
-
.. image::
|
|
36
|
+
.. image:: ../_static/thinning-after.png
|
|
37
37
|
:width: 75%
|
|
38
38
|
:align: center
|
|
39
39
|
|
|
@@ -53,7 +53,7 @@ use:
|
|
|
53
53
|
|
|
54
54
|
Which will result in the following dataset:
|
|
55
55
|
|
|
56
|
-
.. image::
|
|
56
|
+
.. image:: ../_static/area-1.png
|
|
57
57
|
:width: 75%
|
|
58
58
|
:align: center
|
|
59
59
|
|
|
@@ -71,7 +71,7 @@ the dates in the dataset, and the red cells are the missing dates. Given
|
|
|
71
71
|
matching dates that are not missing (in blue). The interval between each
|
|
72
72
|
date of a group is guaranteed to be constant across all groups.
|
|
73
73
|
|
|
74
|
-
.. image::
|
|
74
|
+
.. image:: ../_static/skip-missing.png
|
|
75
75
|
:align: center
|
|
76
76
|
|
|
77
77
|
.. code:: python
|
|
@@ -157,7 +157,7 @@ it with standard Python tools. For example:
|
|
|
157
157
|
ax.gridlines(draw_labels=True)
|
|
158
158
|
plt.colorbar(p, label="K", orientation="horizontal")
|
|
159
159
|
|
|
160
|
-
.. figure::
|
|
160
|
+
.. figure:: ../_static/2t_map_example.png
|
|
161
161
|
:alt: example map plot
|
|
162
162
|
:align: center
|
|
163
163
|
|
|
@@ -49,18 +49,21 @@ dynamic = [
|
|
|
49
49
|
]
|
|
50
50
|
dependencies = [
|
|
51
51
|
"anemoi-transform>=0.1.10",
|
|
52
|
-
"anemoi-utils[provenance]>=0.4.
|
|
52
|
+
"anemoi-utils[provenance]>=0.4.38",
|
|
53
53
|
"cfunits",
|
|
54
|
+
"glom",
|
|
55
|
+
"jsonschema",
|
|
54
56
|
"numcodecs<0.16", # Until we move to zarr3
|
|
55
57
|
"numpy",
|
|
56
58
|
"pyyaml",
|
|
59
|
+
"ruamel-yaml",
|
|
57
60
|
"semantic-version",
|
|
58
61
|
"tqdm",
|
|
59
62
|
"zarr<=2.18.4",
|
|
60
63
|
]
|
|
61
64
|
|
|
62
65
|
optional-dependencies.all = [
|
|
63
|
-
"anemoi-datasets[create,remote,xarray
|
|
66
|
+
"anemoi-datasets[comparelam,create,remote,xarray]",
|
|
64
67
|
]
|
|
65
68
|
|
|
66
69
|
optional-dependencies.comparelam = [
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.5.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 5,
|
|
31
|
+
__version__ = version = '0.5.28'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 5, 28)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g2c8e4cd05'
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
import argparse
|
|
12
|
+
import logging
|
|
13
|
+
import sys
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
import yaml
|
|
17
|
+
|
|
18
|
+
from anemoi.datasets.create import validate_config
|
|
19
|
+
|
|
20
|
+
from .. import Command
|
|
21
|
+
from .format import format_recipe
|
|
22
|
+
from .migrate import migrate_recipe
|
|
23
|
+
|
|
24
|
+
LOG = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Recipe(Command):
|
|
28
|
+
def add_arguments(self, command_parser: Any) -> None:
|
|
29
|
+
"""Add arguments to the command parser.
|
|
30
|
+
|
|
31
|
+
Parameters
|
|
32
|
+
----------
|
|
33
|
+
command_parser : Any
|
|
34
|
+
Command parser object.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
command_parser.add_argument("--validate", action="store_true", help="Validate recipe.")
|
|
38
|
+
command_parser.add_argument("--format", action="store_true", help="Format the recipe.")
|
|
39
|
+
command_parser.add_argument("--migrate", action="store_true", help="Migrate the recipe to the latest version.")
|
|
40
|
+
|
|
41
|
+
group = command_parser.add_mutually_exclusive_group()
|
|
42
|
+
group.add_argument("--inplace", action="store_true", help="Overwrite the recipe file in place.")
|
|
43
|
+
group.add_argument("--output", type=str, help="Output file path for the converted recipe.")
|
|
44
|
+
|
|
45
|
+
command_parser.add_argument(
|
|
46
|
+
"path",
|
|
47
|
+
help="Path to recipe.",
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
def run(self, args: Any) -> None:
|
|
51
|
+
|
|
52
|
+
if not args.validate and not args.format and not args.migrate:
|
|
53
|
+
args.validate = True
|
|
54
|
+
|
|
55
|
+
with open(args.path) as file:
|
|
56
|
+
config = yaml.safe_load(file)
|
|
57
|
+
|
|
58
|
+
assert isinstance(config, dict)
|
|
59
|
+
|
|
60
|
+
if args.validate:
|
|
61
|
+
if args.inplace and (not args.format and not args.migrate):
|
|
62
|
+
argparse.ArgumentError(None, "--inplace is not supported with --validate.")
|
|
63
|
+
|
|
64
|
+
if args.output and (not args.format and not args.migrate):
|
|
65
|
+
argparse.ArgumentError(None, "--output is not supported with --validate.")
|
|
66
|
+
|
|
67
|
+
validate_config(config)
|
|
68
|
+
LOG.info(f"{args.path}: Recipe is valid.")
|
|
69
|
+
return
|
|
70
|
+
|
|
71
|
+
if args.migrate:
|
|
72
|
+
config = migrate_recipe(args, config)
|
|
73
|
+
if config is None:
|
|
74
|
+
LOG.info(f"{args.path}: No changes needed.")
|
|
75
|
+
return
|
|
76
|
+
|
|
77
|
+
args.format = True
|
|
78
|
+
|
|
79
|
+
if args.format:
|
|
80
|
+
formatted = format_recipe(args, config)
|
|
81
|
+
assert "dates" in formatted
|
|
82
|
+
f = sys.stdout
|
|
83
|
+
if args.output:
|
|
84
|
+
f = open(args.output, "w")
|
|
85
|
+
|
|
86
|
+
if args.inplace:
|
|
87
|
+
f = open(args.path, "w")
|
|
88
|
+
|
|
89
|
+
print(formatted, file=f)
|
|
90
|
+
f.close()
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
command = Recipe
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# (C) Copyright 2025 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
|
+
import datetime
|
|
12
|
+
import logging
|
|
13
|
+
|
|
14
|
+
from ...dumper import yaml_dump
|
|
15
|
+
|
|
16
|
+
LOG = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def make_dates(config):
|
|
20
|
+
if isinstance(config, dict):
|
|
21
|
+
return {k: make_dates(v) for k, v in config.items()}
|
|
22
|
+
if isinstance(config, list):
|
|
23
|
+
return [make_dates(v) for v in config]
|
|
24
|
+
if isinstance(config, str):
|
|
25
|
+
try:
|
|
26
|
+
return datetime.datetime.fromisoformat(config)
|
|
27
|
+
except ValueError:
|
|
28
|
+
return config
|
|
29
|
+
return config
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
ORDER = (
|
|
33
|
+
"name",
|
|
34
|
+
"description",
|
|
35
|
+
"dataset_status",
|
|
36
|
+
"licence",
|
|
37
|
+
"attribution",
|
|
38
|
+
"env",
|
|
39
|
+
"dates",
|
|
40
|
+
"common",
|
|
41
|
+
"data_sources",
|
|
42
|
+
"input",
|
|
43
|
+
"output",
|
|
44
|
+
"statistics",
|
|
45
|
+
"build",
|
|
46
|
+
"platform",
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def format_recipe(args, config: dict) -> str:
|
|
51
|
+
|
|
52
|
+
config = make_dates(config)
|
|
53
|
+
assert config
|
|
54
|
+
|
|
55
|
+
return yaml_dump(config, order=ORDER)
|