anemoi-datasets 0.4.4__tar.gz → 0.4.5__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.4.5/.gitattributes +1 -0
- anemoi_datasets-0.4.5/.github/workflows/changelog-release-update.yml +34 -0
- anemoi_datasets-0.4.5/.github/workflows/python-publish.yml +22 -0
- anemoi_datasets-0.4.5/.github/workflows/python-pull-request.yml +23 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.gitignore +5 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.pre-commit-config.yaml +3 -3
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/CHANGELOG.md +20 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/PKG-INFO +5 -5
- anemoi_datasets-0.4.5/docs/building/incremental.rst +120 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/images.pptx +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/index.rst +6 -0
- anemoi_datasets-0.4.5/docs/using/code/fill_missing_gaps_.py +1 -0
- anemoi_datasets-0.4.5/docs/using/code/frequency2_.py +1 -0
- anemoi_datasets-0.4.5/docs/using/code/iterating_missing_dates1_.py +4 -0
- anemoi_datasets-0.4.5/docs/using/code/iterating_missing_dates2_.py +9 -0
- anemoi_datasets-0.4.5/docs/using/code/iterating_missing_dates3_.py +2 -0
- anemoi_datasets-0.4.5/docs/using/code/missing_dates_.py +1 -0
- anemoi_datasets-0.4.5/docs/using/code/xy1_.py +5 -0
- anemoi_datasets-0.4.5/docs/using/code/xy2_.py +4 -0
- anemoi_datasets-0.4.5/docs/using/code/zip_xy_.py +9 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/combining.rst +28 -1
- anemoi_datasets-0.4.5/docs/using/images/cutout-5.png +0 -0
- anemoi_datasets-0.4.5/docs/using/images/cutout-6.png +0 -0
- anemoi_datasets-0.4.5/docs/using/images/skip-missing.png +0 -0
- anemoi_datasets-0.4.5/docs/using/missing.rst +78 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/other.rst +0 -16
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/subsetting.rst +11 -1
- anemoi_datasets-0.4.5/docs/using/zip.rst +64 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/pyproject.toml +4 -4
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/_version.py +2 -2
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/cleanup.py +44 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/create.py +50 -20
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/finalise-additions.py +45 -0
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/finalise.py +39 -0
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/init-additions.py +45 -0
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/init.py +67 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/inspect.py +1 -1
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/load-additions.py +47 -0
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/load.py +47 -0
- anemoi_datasets-0.4.5/src/anemoi/datasets/commands/patch.py +39 -0
- anemoi_datasets-0.4.5/src/anemoi/datasets/create/__init__.py +1017 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/check.py +5 -3
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/config.py +53 -2
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/__init__.py +12 -2
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/coordinates.py +7 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/field.py +1 -1
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/fieldlist.py +0 -2
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/flavour.py +21 -1
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/metadata.py +27 -29
- anemoi_datasets-0.4.5/src/anemoi/datasets/create/functions/sources/xarray/time.py +131 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/variable.py +15 -38
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/input.py +23 -22
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/statistics/__init__.py +39 -23
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/utils.py +3 -2
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/__init__.py +1 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/concat.py +46 -2
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/dataset.py +109 -34
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/forwards.py +17 -8
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/grids.py +17 -3
- anemoi_datasets-0.4.5/src/anemoi/datasets/data/interpolate.py +133 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/misc.py +56 -66
- anemoi_datasets-0.4.5/src/anemoi/datasets/data/missing.py +240 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/select.py +7 -1
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/stores.py +3 -3
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/subset.py +47 -5
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/unchecked.py +20 -22
- anemoi_datasets-0.4.5/src/anemoi/datasets/data/xy.py +125 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/dates/__init__.py +13 -66
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/dates/groups.py +2 -2
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/grids.py +66 -48
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/PKG-INFO +5 -5
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/SOURCES.txt +32 -3
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/requires.txt +4 -4
- anemoi_datasets-0.4.5/tests/create/run.sh +20 -0
- anemoi_datasets-0.4.5/tests/create/test_create.py +252 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/test_chunks.py +4 -1
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/test_data.py +22 -5
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/xarray/test_kerchunk.py +4 -1
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/xarray/test_opendap.py +4 -1
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/xarray/test_zarr.py +22 -3
- anemoi_datasets-0.4.5/tools/upload-sample-dataset.py +41 -0
- anemoi_datasets-0.4.4/.github/workflows/python-publish.yml +0 -74
- anemoi_datasets-0.4.4/docs/building/syntax.rst +0 -6
- anemoi_datasets-0.4.4/src/anemoi/datasets/create/__init__.py +0 -202
- anemoi_datasets-0.4.4/src/anemoi/datasets/create/functions/sources/xarray/time.py +0 -98
- anemoi_datasets-0.4.4/src/anemoi/datasets/create/loaders.py +0 -936
- anemoi_datasets-0.4.4/tests/create/test_create.py +0 -239
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.github/ci-config.yml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.github/workflows/changelog-pr-update.yml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.github/workflows/ci.yml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.github/workflows/label-public-pr.yml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.github/workflows/readthedocs-pr-update.yml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.readthedocs.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/LICENSE +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/README.md +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/Makefile +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/advanced-options.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/filters/empty.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/filters/noop.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/filters/rename.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/filters/rotate_winds.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/filters/select.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/filters/unrotate_winds.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/filters.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/introduction.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/operations.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/accumulations1.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/accumulations2.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/forcings.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/hindcasts.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/hindcasts.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/mars1.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/mars2.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/netcdf.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/opendap.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/xarray-kerchunk.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/xarray-kerchunk.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/xarray-kerchunk.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/xarray-zarr.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/xarray-zarr.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/zenodo.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources/zenodo.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/sources.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/statistics.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/syntax.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/Makefile +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/building1.txt +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/building2.txt +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/building3.txt +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/input.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/building/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/cli/create.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/cli/inspect.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/cli/introduction.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/conf.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/installing.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/overview.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/overview_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/schemas/matrix.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/schemas/overview.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/schemas/recipe.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/area1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/area2_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/chain_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/combine_example.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/concat1.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/cutout_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/drop_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/end_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/ensembles1_.py +0 -0
- /anemoi_datasets-0.4.4/docs/using/code/frequency_.py → /anemoi_datasets-0.4.5/docs/using/code/frequency1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/grids1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/join1.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/matching0_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/matching1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/matching2_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/matching3_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/matching4_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/misc1.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/misc2.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/missing_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_cloud.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_combine1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_combine2_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_complex.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_dict_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_first_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_list_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_name.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_other.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_path.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/open_yaml_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/rename_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/reorder1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/reorder2_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/select1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/select2_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/shuffle_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/some_attributes_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/start_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/statistics_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/subset_example.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/thinning_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/zip1_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/code/zip2_.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/configuration.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/configuration.toml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/grids.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/area-1.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/concat.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/cutout-1.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/cutout-2.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/cutout-3.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/cutout-4.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/join.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/overlay.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/thinning-after.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/images/thinning-before.png +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/introduction.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/matching.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/methods.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/opening.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/selecting.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/docs/using/statistics.rst +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/setup.cfg +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/__init__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/compare.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/copy.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/compute/__init__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/compute/recentre.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/chunks.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/__init__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/rename.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/__init__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/accumulations.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/grib.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/hindcasts.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/mars.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/tendencies.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/grid.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray_kerchunk.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray_zarr.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/zenodo.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/patch.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/persistent.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/size.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/template.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/trace.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/zarr.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/debug.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/ensemble.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/indexing.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/join.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/masked.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/statistics.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi/datasets/utils/__init__.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create/data_sources.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/test_dates.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tests/xarray/test_netcdf.py +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tools/.gitignore +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.4.4 → anemoi_datasets-0.4.5}/tools/grids/grids2.yaml +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
CHANGELOG.md merge=union
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# .github/workflows/update-changelog.yaml
|
|
2
|
+
name: "Update Changelog"
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
release:
|
|
6
|
+
types: [released]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
pull-requests: write
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
update:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout code
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
with:
|
|
20
|
+
ref: ${{ github.event.release.target_commitish }}
|
|
21
|
+
|
|
22
|
+
- name: Update Changelog
|
|
23
|
+
uses: stefanzweifel/changelog-updater-action@v1
|
|
24
|
+
with:
|
|
25
|
+
latest-version: ${{ github.event.release.tag_name }}
|
|
26
|
+
heading-text: ${{ github.event.release.name }}
|
|
27
|
+
|
|
28
|
+
- name: Create Pull Request
|
|
29
|
+
uses: peter-evans/create-pull-request@v6
|
|
30
|
+
with:
|
|
31
|
+
branch: docs/changelog-update-${{ github.event.release.tag_name }}
|
|
32
|
+
title: '[Changelog] Update to ${{ github.event.release.tag_name }}'
|
|
33
|
+
add-paths: |
|
|
34
|
+
CHANGELOG.md
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This workflow will upload a Python Package using Twine when a release is created
|
|
2
|
+
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
|
3
|
+
|
|
4
|
+
name: Upload Python Package
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [created]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
quality:
|
|
12
|
+
uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-precommit-run.yml@v2
|
|
13
|
+
with:
|
|
14
|
+
skip-hooks: "no-commit-to-branch"
|
|
15
|
+
|
|
16
|
+
checks:
|
|
17
|
+
uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
|
|
18
|
+
|
|
19
|
+
deploy:
|
|
20
|
+
needs: [checks, quality]
|
|
21
|
+
uses: ecmwf-actions/reusable-workflows/.github/workflows/cd-pypi.yml@v2
|
|
22
|
+
secrets: inherit
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# This workflow will upload a Python Package using Twine when a release is created
|
|
2
|
+
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
|
3
|
+
|
|
4
|
+
name: Code Quality checks for PRs
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
pull_request_target:
|
|
9
|
+
types: [opened, synchronize, reopened]
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
quality:
|
|
13
|
+
uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-precommit-run.yml@v2
|
|
14
|
+
with:
|
|
15
|
+
skip-hooks: "no-commit-to-branch"
|
|
16
|
+
|
|
17
|
+
checks:
|
|
18
|
+
strategy:
|
|
19
|
+
matrix:
|
|
20
|
+
python-version: ["3.9", "3.10"]
|
|
21
|
+
uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
|
|
22
|
+
with:
|
|
23
|
+
python-version: ${{ matrix.python-version }}
|
|
@@ -21,7 +21,7 @@ repos:
|
|
|
21
21
|
- id: check-added-large-files # Check for large files added to git
|
|
22
22
|
- id: check-merge-conflict # Check for files that contain merge conflict
|
|
23
23
|
- repo: https://github.com/psf/black-pre-commit-mirror
|
|
24
|
-
rev: 24.
|
|
24
|
+
rev: 24.8.0
|
|
25
25
|
hooks:
|
|
26
26
|
- id: black
|
|
27
27
|
args: [--line-length=120]
|
|
@@ -34,7 +34,7 @@ repos:
|
|
|
34
34
|
- --force-single-line-imports
|
|
35
35
|
- --profile black
|
|
36
36
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
37
|
-
rev: v0.4
|
|
37
|
+
rev: v0.6.4
|
|
38
38
|
hooks:
|
|
39
39
|
- id: ruff
|
|
40
40
|
# Next line is to exclude for documentation code snippets
|
|
@@ -65,6 +65,6 @@ repos:
|
|
|
65
65
|
- id: optional-dependencies-all
|
|
66
66
|
args: ["--inplace", "--exclude-keys=dev,docs,tests", "--group=dev=all,docs,tests"]
|
|
67
67
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
68
|
-
rev: "2.
|
|
68
|
+
rev: "2.2.3"
|
|
69
69
|
hooks:
|
|
70
70
|
- id: pyproject-fmt
|
|
@@ -11,9 +11,29 @@ Keep it human-readable, your future self will thank you!
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
13
|
### Added
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Added incremental building of datasets
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
|
|
20
|
+
## [0.4.5]
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- New `interpolate_frequency` keyword in `open_dataset`
|
|
25
|
+
- CI workflow to update the changelog on release
|
|
26
|
+
- adds the reusable cd pypi workflow
|
|
27
|
+
- merge strategy for changelog in .gitattributes #25
|
|
14
28
|
|
|
15
29
|
### Changed
|
|
16
30
|
|
|
31
|
+
- update CI to reusable workflows for PRs and releases
|
|
32
|
+
- Support sub-hourly datasets.
|
|
33
|
+
- Change negative variance detection to make it less restrictive
|
|
34
|
+
- Fix cutout bug that left some global grid points in the lam part
|
|
35
|
+
- Fix bug in computing missing dates in cutout option
|
|
36
|
+
|
|
17
37
|
### Removed
|
|
18
38
|
|
|
19
39
|
## [0.4.4] Bug fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
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
|
|
@@ -223,7 +223,7 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
223
223
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
224
224
|
Requires-Python: >=3.9
|
|
225
225
|
License-File: LICENSE
|
|
226
|
-
Requires-Dist: anemoi-utils[provenance]>=0.3.
|
|
226
|
+
Requires-Dist: anemoi-utils[provenance]>=0.3.15
|
|
227
227
|
Requires-Dist: numpy
|
|
228
228
|
Requires-Dist: pyyaml
|
|
229
229
|
Requires-Dist: semantic-version
|
|
@@ -235,7 +235,7 @@ Requires-Dist: boto3; extra == "all"
|
|
|
235
235
|
Requires-Dist: earthkit-data[mars]>=0.9; extra == "all"
|
|
236
236
|
Requires-Dist: earthkit-geo>=0.2; extra == "all"
|
|
237
237
|
Requires-Dist: earthkit-meteo; extra == "all"
|
|
238
|
-
Requires-Dist:
|
|
238
|
+
Requires-Dist: eccodes>=2.37; extra == "all"
|
|
239
239
|
Requires-Dist: entrypoints; extra == "all"
|
|
240
240
|
Requires-Dist: gcsfs; extra == "all"
|
|
241
241
|
Requires-Dist: kerchunk; extra == "all"
|
|
@@ -246,7 +246,7 @@ Provides-Extra: create
|
|
|
246
246
|
Requires-Dist: earthkit-data[mars]>=0.9; extra == "create"
|
|
247
247
|
Requires-Dist: earthkit-geo>=0.2; extra == "create"
|
|
248
248
|
Requires-Dist: earthkit-meteo; extra == "create"
|
|
249
|
-
Requires-Dist:
|
|
249
|
+
Requires-Dist: eccodes>=2.37; extra == "create"
|
|
250
250
|
Requires-Dist: entrypoints; extra == "create"
|
|
251
251
|
Requires-Dist: pyproj; extra == "create"
|
|
252
252
|
Provides-Extra: dev
|
|
@@ -255,7 +255,7 @@ Requires-Dist: boto3; extra == "dev"
|
|
|
255
255
|
Requires-Dist: earthkit-data[mars]>=0.9; extra == "dev"
|
|
256
256
|
Requires-Dist: earthkit-geo>=0.2; extra == "dev"
|
|
257
257
|
Requires-Dist: earthkit-meteo; extra == "dev"
|
|
258
|
-
Requires-Dist:
|
|
258
|
+
Requires-Dist: eccodes>=2.37; extra == "dev"
|
|
259
259
|
Requires-Dist: entrypoints; extra == "dev"
|
|
260
260
|
Requires-Dist: gcsfs; extra == "dev"
|
|
261
261
|
Requires-Dist: kerchunk; extra == "dev"
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
.. _create-incremental:
|
|
2
|
+
|
|
3
|
+
##################################
|
|
4
|
+
Creating a dataset incrementally
|
|
5
|
+
##################################
|
|
6
|
+
|
|
7
|
+
This guide shows how to create a dataset incrementally. This is useful
|
|
8
|
+
when you have a large dataset that you want to load in parts, to avoid
|
|
9
|
+
running out of memory. Because parts can be loaded in parallel, this can
|
|
10
|
+
also speed up the process.
|
|
11
|
+
|
|
12
|
+
**********************
|
|
13
|
+
Building the dataset
|
|
14
|
+
**********************
|
|
15
|
+
|
|
16
|
+
You first need to create an empty dataset with the `init` command, which
|
|
17
|
+
is similar to the `create` command. If there is already a dataset with
|
|
18
|
+
the same name, you can use the `--overwrite` flag to replace it. The
|
|
19
|
+
`init` command requires a YAML file with the dataset configuration and a
|
|
20
|
+
name for the dataset. The content of the YAML file will be copied into
|
|
21
|
+
the dataset, so it will not be needed by following commands.
|
|
22
|
+
|
|
23
|
+
.. code:: bash
|
|
24
|
+
|
|
25
|
+
anemoi-datasets init dataset.yaml dataset.zarr --overwrite
|
|
26
|
+
|
|
27
|
+
You can then load the dataset in parts with the `load` command. You just
|
|
28
|
+
pass which part you want to load with the `--part` flag.
|
|
29
|
+
|
|
30
|
+
.. note::
|
|
31
|
+
|
|
32
|
+
Parts are numbered from 1 to N, where N is the total number of parts
|
|
33
|
+
(unlike Python, where they would start at zero). This is to make it
|
|
34
|
+
easier to use the `seq(1)` command in bash.
|
|
35
|
+
|
|
36
|
+
You can load multiple parts in any order and in parallel by running the
|
|
37
|
+
`load` command in different terminals, slurm jobs or any other
|
|
38
|
+
parallelisation tool. The library relies on the `zarr` library to handle
|
|
39
|
+
concurrent writes.
|
|
40
|
+
|
|
41
|
+
.. code:: bash
|
|
42
|
+
|
|
43
|
+
anemoi-datasets load dataset.zarr --part 1/20
|
|
44
|
+
|
|
45
|
+
.. code:: bash
|
|
46
|
+
|
|
47
|
+
anemoi-datasets load dataset.zarr --part 2/20
|
|
48
|
+
|
|
49
|
+
... and so on ... until:
|
|
50
|
+
|
|
51
|
+
.. code:: bash
|
|
52
|
+
|
|
53
|
+
anemoi-datasets load dataset.zarr --part 20/20
|
|
54
|
+
|
|
55
|
+
Once you have loaded all the parts, you can finalise the dataset with
|
|
56
|
+
the `finalise` command. This will write the metadata and the attributes
|
|
57
|
+
to the dataset, and consolidate the statistics and cleanup some
|
|
58
|
+
temporary files.
|
|
59
|
+
|
|
60
|
+
.. code:: bash
|
|
61
|
+
|
|
62
|
+
anemoi-datasets finalise dataset.zarr
|
|
63
|
+
|
|
64
|
+
You can follow the progress of the dataset creation with the `inspect`
|
|
65
|
+
command. This will show you the percentage of parts loaded.
|
|
66
|
+
|
|
67
|
+
.. code:: bash
|
|
68
|
+
|
|
69
|
+
anemoi-datasets inspect dataset.zarr
|
|
70
|
+
|
|
71
|
+
It is possible that some temporary files are left behind at the end of
|
|
72
|
+
the process. You can clean them up with the `cleanup` command.
|
|
73
|
+
|
|
74
|
+
.. code:: bash
|
|
75
|
+
|
|
76
|
+
anemoi-datasets cleanup dataset.zarr
|
|
77
|
+
|
|
78
|
+
***********************
|
|
79
|
+
Additional statistics
|
|
80
|
+
***********************
|
|
81
|
+
|
|
82
|
+
`anemoi-datasets` can compute additional statistics for the dataset,
|
|
83
|
+
mostly statistics of the increments between two dates (e.g. 6h or 12h).
|
|
84
|
+
|
|
85
|
+
To add statistics for 6h increments:
|
|
86
|
+
|
|
87
|
+
.. code:: bash
|
|
88
|
+
|
|
89
|
+
anemoi-datasets init-additions dataset.zarr --delta 6h anemoi-datasets
|
|
90
|
+
anemoi-datasets load-additions dataset.zarr --part 1/2 --delta 6h anemoi-datasets
|
|
91
|
+
anemoi-datasets load-additions dataset.zarr --part 2/2 --delta 6h
|
|
92
|
+
anemoi-datasets finalise-additions dataset.zarr --delta 6h
|
|
93
|
+
|
|
94
|
+
To add statistics for 12h increments:
|
|
95
|
+
|
|
96
|
+
.. code:: bash
|
|
97
|
+
|
|
98
|
+
anemoi-datasets init-additions dataset.zarr --delta 12h
|
|
99
|
+
anemoi-datasets load-additions dataset.zarr --part 1/2 --delta 12h anemoi-datasets
|
|
100
|
+
anemoi-datasets load-additions dataset.zarr --part 2/2 --delta 12h
|
|
101
|
+
anemoi-datasets finalise-additions dataset.zarr --delta 12h
|
|
102
|
+
|
|
103
|
+
If this process leaves temporary files behind, you can clean them up
|
|
104
|
+
with the `cleanup` command.
|
|
105
|
+
|
|
106
|
+
.. code:: bash
|
|
107
|
+
|
|
108
|
+
anemoi-datasets cleanup dataset.zarr
|
|
109
|
+
|
|
110
|
+
********************************
|
|
111
|
+
Patching the dataset metadata:
|
|
112
|
+
********************************
|
|
113
|
+
|
|
114
|
+
The following command will patch the dataset metadata. In particular, it
|
|
115
|
+
will remove any references to the YAML file used to initialise the
|
|
116
|
+
dataset.
|
|
117
|
+
|
|
118
|
+
.. code:: bash
|
|
119
|
+
|
|
120
|
+
anemoi-datasets patch dataset.zarr
|
|
Binary file
|
|
@@ -44,7 +44,9 @@ datasets <building-introduction>`.
|
|
|
44
44
|
- :doc:`using/combining`
|
|
45
45
|
- :doc:`using/selecting`
|
|
46
46
|
- :doc:`using/grids`
|
|
47
|
+
- :doc:`using/zip`
|
|
47
48
|
- :doc:`using/statistics`
|
|
49
|
+
- :doc:`using/missing`
|
|
48
50
|
- :doc:`using/other`
|
|
49
51
|
- :doc:`using/matching`
|
|
50
52
|
- :doc:`using/miscellaneous`
|
|
@@ -62,7 +64,9 @@ datasets <building-introduction>`.
|
|
|
62
64
|
using/combining
|
|
63
65
|
using/selecting
|
|
64
66
|
using/grids
|
|
67
|
+
using/zip
|
|
65
68
|
using/statistics
|
|
69
|
+
using/missing
|
|
66
70
|
using/other
|
|
67
71
|
using/matching
|
|
68
72
|
using/miscellaneous
|
|
@@ -75,6 +79,7 @@ datasets <building-introduction>`.
|
|
|
75
79
|
- :doc:`building/sources`
|
|
76
80
|
- :doc:`building/filters`
|
|
77
81
|
- :doc:`building/statistics`
|
|
82
|
+
- :doc:`building/incremental`
|
|
78
83
|
|
|
79
84
|
.. toctree::
|
|
80
85
|
:maxdepth: 1
|
|
@@ -89,6 +94,7 @@ datasets <building-introduction>`.
|
|
|
89
94
|
building/handling-missing-dates
|
|
90
95
|
building/handling-missing-values
|
|
91
96
|
building/statistics
|
|
97
|
+
building/incremental
|
|
92
98
|
building/advanced-options
|
|
93
99
|
|
|
94
100
|
**Command line tool**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ds = open_dataset(concat=[dataset1, dataset2, ...], fill_missing_gaps=True)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ds = open_dataset(dataset, interpolate_frequency="10m")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ds = open_dataset(dataset, missing_dates=["2010-01-01T12:00:00", "2010-02-01T12:00:00"])
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
input = open_dataset(zip=[low_res_dataset, high_res_orography_dataset])
|
|
2
|
+
output = open_dataset(high_res_dataset)
|
|
3
|
+
|
|
4
|
+
ds = open_dataset(x=input, y=output)
|
|
5
|
+
|
|
6
|
+
for (x, orography), y in ds:
|
|
7
|
+
y_hat = model(x, orography)
|
|
8
|
+
loss = criterion(y_hat, y)
|
|
9
|
+
loss.backward()
|
|
@@ -48,7 +48,9 @@ attempt to combine them:
|
|
|
48
48
|
You can concatenate two or more datasets along the dates dimension. The
|
|
49
49
|
package will check that all datasets are compatible (same resolution,
|
|
50
50
|
same variables, etc.). Currently, the datasets must be given in
|
|
51
|
-
chronological order with no gaps between them.
|
|
51
|
+
chronological order with no gaps between them. If you want to
|
|
52
|
+
concatenate datasets that have gaps between them, check the
|
|
53
|
+
:ref:`fill_missing_gaps <fill_missing_gaps>` option.
|
|
52
54
|
|
|
53
55
|
.. literalinclude:: code/concat1.py
|
|
54
56
|
:language: python
|
|
@@ -155,3 +157,28 @@ cutout:
|
|
|
155
157
|
:width: 75%
|
|
156
158
|
:align: center
|
|
157
159
|
:alt: Cutout
|
|
160
|
+
|
|
161
|
+
You can also pass a `min_distance_km` parameter to the `cutout`
|
|
162
|
+
function. Any grid points in the global dataset that are closer than
|
|
163
|
+
this distance to a grid point in the LAM dataset will be removed. This
|
|
164
|
+
can be useful to control the behaviour of the algorithm at the edge of
|
|
165
|
+
the cutout area. If no value is provided, the algorithm will compute its
|
|
166
|
+
value as the smallest distance between two grid points in the global
|
|
167
|
+
dataset over the cutout area. If you do not want to use this feature,
|
|
168
|
+
you can set `min_distance_km=0`, or provide your own value.
|
|
169
|
+
|
|
170
|
+
The plots below illustrate how the cutout differs if `min_distance_km`
|
|
171
|
+
is not given (top) or if `min_distance_km` is is set to `0` (bottom).
|
|
172
|
+
The difference can be seen at the boundary between the two grids:
|
|
173
|
+
|
|
174
|
+
.. image:: images/cutout-5.png
|
|
175
|
+
:align: center
|
|
176
|
+
:alt: Cutout
|
|
177
|
+
|
|
178
|
+
.. image:: images/cutout-6.png
|
|
179
|
+
:align: center
|
|
180
|
+
:alt: Cutout
|
|
181
|
+
|
|
182
|
+
To debug the combination, you can pass `plot=True` to the `cutout`
|
|
183
|
+
function (when running from a Notebook), of use `plot="prefix"` to save
|
|
184
|
+
the plots to series of PNG files in the current directory.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
.. _selecting-missing:
|
|
2
|
+
|
|
3
|
+
########################
|
|
4
|
+
Managing missing dates
|
|
5
|
+
########################
|
|
6
|
+
|
|
7
|
+
************************************************
|
|
8
|
+
Skipping missing when iterating over a dataset
|
|
9
|
+
************************************************
|
|
10
|
+
|
|
11
|
+
If you iterate over a dataset that has missing dates, the library will
|
|
12
|
+
raise a ``MissingDatesError`` exception if you attempt to access a
|
|
13
|
+
missing date.
|
|
14
|
+
|
|
15
|
+
This code below will throw an exception if ``ds[i]`` or ``ds[i+1]`` are
|
|
16
|
+
missing dates. Because we iterate over the whole dataset, we are
|
|
17
|
+
guaranteed to fail if there are any missing dates.
|
|
18
|
+
|
|
19
|
+
.. literalinclude:: code/iterating_missing_dates1_.py
|
|
20
|
+
|
|
21
|
+
You can skip missing dates by setting the ``skip_missing_dates`` option
|
|
22
|
+
to ``True``. You will have to also provide a hint about how you intent
|
|
23
|
+
to iterate over the dataset. The hint is given using the parameter
|
|
24
|
+
``expected_access`` which takes a ``slice`` as argument.
|
|
25
|
+
|
|
26
|
+
The library will check the slice against the missing dates and insure
|
|
27
|
+
that, when iterating over the dataset with that slice, no missing dates
|
|
28
|
+
are accessed.
|
|
29
|
+
|
|
30
|
+
The algorithm is illustrated in the picture below. The cells represents
|
|
31
|
+
the dates in the dataset, and the red cells are the missing dates. Given
|
|
32
|
+
``expected_access=slice(0, 2)``, the library will consider each group of
|
|
33
|
+
matching dates that are not missing (in blue). The interval between each
|
|
34
|
+
dates of a group is guaranteed to be constant across all groups.
|
|
35
|
+
|
|
36
|
+
.. image:: images/skip-missing.png
|
|
37
|
+
:align: center
|
|
38
|
+
|
|
39
|
+
.. literalinclude:: code/iterating_missing_dates2_.py
|
|
40
|
+
|
|
41
|
+
The code above will not raise an exception, even if there are missing
|
|
42
|
+
dates. The ``slice(0, 2)`` represents the ``i`` and ``i+1`` indices in
|
|
43
|
+
the loop (the Python :py:class:`slice` is similar to Python's
|
|
44
|
+
:py:class:`range`, as the first bound in included while the last bound
|
|
45
|
+
is excluded).
|
|
46
|
+
|
|
47
|
+
You can also provide a single integer to the ```expected_access``
|
|
48
|
+
parameter. The two forms below are identical:
|
|
49
|
+
|
|
50
|
+
.. literalinclude:: code/iterating_missing_dates3_.py
|
|
51
|
+
|
|
52
|
+
.. _fill_missing_gaps:
|
|
53
|
+
|
|
54
|
+
***********************************************
|
|
55
|
+
Concatenating datasets with gaps between them
|
|
56
|
+
***********************************************
|
|
57
|
+
|
|
58
|
+
When you concatenate two or more datasets, the library will check that
|
|
59
|
+
the dates are contiguous, i.e. that the last date of a dataset is one
|
|
60
|
+
`frequency` before the first date of the next dataset.
|
|
61
|
+
|
|
62
|
+
If the dates are not contiguous, the library will raise an error. You
|
|
63
|
+
can force the concatenation by setting the ``fill_missing_gaps`` option:
|
|
64
|
+
|
|
65
|
+
.. literalinclude:: code/fill_missing_gaps_.py
|
|
66
|
+
|
|
67
|
+
If there is a gap between the datasets, the library will fill the gap by
|
|
68
|
+
creating a virtual dataset with only missing dates, and add it between
|
|
69
|
+
the datasets to make the dates contiguous.
|
|
70
|
+
|
|
71
|
+
***********
|
|
72
|
+
Debugging
|
|
73
|
+
***********
|
|
74
|
+
|
|
75
|
+
You can set missing dates using the ``missing_dates`` option. This
|
|
76
|
+
option is for debugging purposes only.
|
|
77
|
+
|
|
78
|
+
.. literalinclude:: code/missing_dates_.py
|
|
@@ -9,22 +9,6 @@
|
|
|
9
9
|
The operations described in this section do not check that their
|
|
10
10
|
inputs are compatible.
|
|
11
11
|
|
|
12
|
-
*****
|
|
13
|
-
zip
|
|
14
|
-
*****
|
|
15
|
-
|
|
16
|
-
The `zip` operation is used to combine multiple datasets into a single
|
|
17
|
-
dataset.
|
|
18
|
-
|
|
19
|
-
.. literalinclude:: code/zip1_.py
|
|
20
|
-
:language: python
|
|
21
|
-
|
|
22
|
-
This operation is similar to Python's :py:func:`zip` function, but it
|
|
23
|
-
returns tuples of the selected indices instead of the values:
|
|
24
|
-
|
|
25
|
-
.. literalinclude:: code/zip2_.py
|
|
26
|
-
:language: python
|
|
27
|
-
|
|
28
12
|
*******
|
|
29
13
|
chain
|
|
30
14
|
*******
|
|
@@ -52,5 +52,15 @@ with a ``frequency`` of 6 hours is equivalent to ``end="2020-12-31
|
|
|
52
52
|
|
|
53
53
|
You can change the frequency of the dataset by passing a string with:
|
|
54
54
|
|
|
55
|
-
.. literalinclude:: code/
|
|
55
|
+
.. literalinclude:: code/frequency1_.py
|
|
56
|
+
:language: python
|
|
57
|
+
|
|
58
|
+
The new frequency must be a multiple of the original frequency.
|
|
59
|
+
|
|
60
|
+
To artificially increase the frequency, you can use the
|
|
61
|
+
``interpolate_frequency`` option. This will create new dates in the
|
|
62
|
+
dataset by linearly interpolating the data values between the original
|
|
63
|
+
dates.
|
|
64
|
+
|
|
65
|
+
.. literalinclude:: code/frequency2_.py
|
|
56
66
|
:language: python
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.. _selecting-zip:
|
|
2
|
+
|
|
3
|
+
#################################
|
|
4
|
+
Iterating over several datasets
|
|
5
|
+
#################################
|
|
6
|
+
|
|
7
|
+
Sometimes you need to iterate over several datasets at the same time.
|
|
8
|
+
The following functions will help you with that.
|
|
9
|
+
|
|
10
|
+
.. warning::
|
|
11
|
+
|
|
12
|
+
When iterating over several datasets, most of the functions and
|
|
13
|
+
properties of the dataset object returned by :py:func:`open_dataset`
|
|
14
|
+
will not return a :py:class:`tuple` instead of a single value. The
|
|
15
|
+
tuple will contain the values of the corresponding datasets. There
|
|
16
|
+
are a few exceptions, such as `dates` or `missing`.
|
|
17
|
+
|
|
18
|
+
**************
|
|
19
|
+
x=..., y=...
|
|
20
|
+
**************
|
|
21
|
+
|
|
22
|
+
In machine learning, you often need to iterate over two datasets at the
|
|
23
|
+
same time. One representing the input ``x`` and the other the output
|
|
24
|
+
``y``.
|
|
25
|
+
|
|
26
|
+
.. literalinclude:: code/xy1_.py
|
|
27
|
+
|
|
28
|
+
You will then be able to iterate over the datasets as follows:
|
|
29
|
+
|
|
30
|
+
.. literalinclude:: code/xy2_.py
|
|
31
|
+
|
|
32
|
+
**Note:** `xy` is currently a shortcut for `zip` below, and is intended
|
|
33
|
+
to make the code more readable.
|
|
34
|
+
|
|
35
|
+
*****
|
|
36
|
+
zip
|
|
37
|
+
*****
|
|
38
|
+
|
|
39
|
+
The `zip` option is used to combine multiple datasets into a single
|
|
40
|
+
dataset, that can be iterated over or indexed simultaneously.
|
|
41
|
+
|
|
42
|
+
.. literalinclude:: code/zip1_.py
|
|
43
|
+
|
|
44
|
+
The dataset can then be indexed as follows:
|
|
45
|
+
|
|
46
|
+
.. literalinclude:: code/zip2_.py
|
|
47
|
+
|
|
48
|
+
.. note::
|
|
49
|
+
|
|
50
|
+
The `zip` option is similar to Python's :py:func:`zip` function. The
|
|
51
|
+
main difference the datasets are checked to be compatible before
|
|
52
|
+
being combined (same ranges of dates, same frequency, etc.). Also,
|
|
53
|
+
Python's :py:func:`zip` only allows iteration, while the `zip` option
|
|
54
|
+
allows indexing as well.
|
|
55
|
+
|
|
56
|
+
****************
|
|
57
|
+
Combining both
|
|
58
|
+
****************
|
|
59
|
+
|
|
60
|
+
Both options can be combined. The example below is based on a model that
|
|
61
|
+
is trained to upscale a dataset. The input is the low resolution and a
|
|
62
|
+
high resolution orography. The output is the high resolution dataset.
|
|
63
|
+
|
|
64
|
+
.. literalinclude:: code/zip_xy_.py
|
|
@@ -50,7 +50,7 @@ dynamic = [
|
|
|
50
50
|
"version",
|
|
51
51
|
]
|
|
52
52
|
dependencies = [
|
|
53
|
-
"anemoi-utils[provenance]>=0.3.
|
|
53
|
+
"anemoi-utils[provenance]>=0.3.15",
|
|
54
54
|
"numpy",
|
|
55
55
|
"pyyaml",
|
|
56
56
|
"semantic-version",
|
|
@@ -64,7 +64,7 @@ optional-dependencies.all = [
|
|
|
64
64
|
"earthkit-data[mars]>=0.9",
|
|
65
65
|
"earthkit-geo>=0.2",
|
|
66
66
|
"earthkit-meteo",
|
|
67
|
-
"
|
|
67
|
+
"eccodes>=2.37",
|
|
68
68
|
"entrypoints",
|
|
69
69
|
"gcsfs",
|
|
70
70
|
"kerchunk",
|
|
@@ -77,7 +77,7 @@ optional-dependencies.create = [
|
|
|
77
77
|
"earthkit-data[mars]>=0.9",
|
|
78
78
|
"earthkit-geo>=0.2",
|
|
79
79
|
"earthkit-meteo",
|
|
80
|
-
"
|
|
80
|
+
"eccodes>=2.37",
|
|
81
81
|
"entrypoints",
|
|
82
82
|
"pyproj",
|
|
83
83
|
]
|
|
@@ -88,7 +88,7 @@ optional-dependencies.dev = [
|
|
|
88
88
|
"earthkit-data[mars]>=0.9",
|
|
89
89
|
"earthkit-geo>=0.2",
|
|
90
90
|
"earthkit-meteo",
|
|
91
|
-
"
|
|
91
|
+
"eccodes>=2.37",
|
|
92
92
|
"entrypoints",
|
|
93
93
|
"gcsfs",
|
|
94
94
|
"kerchunk",
|