anemoi-datasets 0.4.3__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/ci-config.yml +9 -0
- anemoi_datasets-0.4.5/.github/workflows/changelog-pr-update.yml +15 -0
- anemoi_datasets-0.4.5/.github/workflows/changelog-release-update.yml +34 -0
- anemoi_datasets-0.4.5/.github/workflows/ci.yml +40 -0
- anemoi_datasets-0.4.5/.github/workflows/label-public-pr.yml +10 -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.5/.github/workflows/readthedocs-pr-update.yml +22 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/.gitignore +5 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/.pre-commit-config.yaml +3 -3
- anemoi_datasets-0.4.5/CHANGELOG.md +80 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/PKG-INFO +5 -5
- anemoi_datasets-0.4.5/docs/building/incremental.rst +120 -0
- anemoi_datasets-0.4.5/docs/building/sources/xarray-kerchunk.py +30 -0
- anemoi_datasets-0.4.5/docs/building/sources/xarray-kerchunk.rst +17 -0
- anemoi_datasets-0.4.5/docs/building/sources/xarray-kerchunk.yaml +10 -0
- anemoi_datasets-0.4.5/docs/building/sources/xarray-zarr.rst +6 -0
- anemoi_datasets-0.4.3/docs/building/sources/xarray.yaml → anemoi_datasets-0.4.5/docs/building/sources/xarray-zarr.yaml +1 -1
- anemoi_datasets-0.4.5/docs/building/sources/zenodo.rst +8 -0
- anemoi_datasets-0.4.5/docs/building/sources/zenodo.yaml +9 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources.rst +7 -4
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/images.pptx +0 -0
- {anemoi_datasets-0.4.3 → 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.3 → 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.3 → anemoi_datasets-0.4.5}/docs/using/other.rst +0 -16
- {anemoi_datasets-0.4.3 → 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.3 → anemoi_datasets-0.4.5}/pyproject.toml +4 -4
- {anemoi_datasets-0.4.3 → 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.3 → 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.3 → 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.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/compute/recentre.py +1 -1
- anemoi_datasets-0.4.5/src/anemoi/datasets/create/__init__.py +1017 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/check.py +5 -3
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/config.py +53 -2
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/accumulations.py +6 -22
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/hindcasts.py +27 -12
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/tendencies.py +1 -1
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/__init__.py +12 -2
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/coordinates.py +7 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/field.py +1 -1
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/fieldlist.py +0 -2
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/flavour.py +21 -1
- {anemoi_datasets-0.4.3 → 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.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/variable.py +15 -38
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/input.py +62 -25
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/statistics/__init__.py +39 -23
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/utils.py +3 -2
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/__init__.py +1 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/concat.py +46 -2
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/dataset.py +109 -34
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/forwards.py +17 -8
- {anemoi_datasets-0.4.3 → 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.3 → 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.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/select.py +7 -1
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/stores.py +3 -3
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/subset.py +47 -5
- {anemoi_datasets-0.4.3 → 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.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/dates/__init__.py +33 -20
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/dates/groups.py +2 -2
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/grids.py +66 -48
- anemoi_datasets-0.4.5/src/anemoi/datasets/utils/__init__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/PKG-INFO +5 -5
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/SOURCES.txt +46 -6
- {anemoi_datasets-0.4.3 → 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.3 → anemoi_datasets-0.4.5}/tests/test_chunks.py +4 -1
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/test_data.py +22 -5
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/xarray/test_kerchunk.py +4 -1
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/xarray/test_opendap.py +4 -1
- {anemoi_datasets-0.4.3 → 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.3/.github/workflows/python-publish.yml +0 -74
- anemoi_datasets-0.4.3/docs/building/sources/xarray.rst +0 -6
- anemoi_datasets-0.4.3/docs/building/syntax.rst +0 -6
- anemoi_datasets-0.4.3/docs/test.ipynb +0 -186
- anemoi_datasets-0.4.3/src/anemoi/datasets/create/__init__.py +0 -202
- anemoi_datasets-0.4.3/src/anemoi/datasets/create/functions/sources/xarray/time.py +0 -98
- anemoi_datasets-0.4.3/src/anemoi/datasets/create/loaders.py +0 -924
- anemoi_datasets-0.4.3/tests/create/test_create.py +0 -236
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/.readthedocs.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/LICENSE +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/README.md +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/Makefile +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/advanced-options.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/filters/empty.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/filters/noop.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/filters/rename.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/filters/rotate_winds.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/filters/select.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/filters/unrotate_winds.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/filters.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/introduction.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/operations.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/accumulations1.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/accumulations2.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/forcings.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/hindcasts.rst +0 -0
- /anemoi_datasets-0.4.3/src/anemoi/datasets/compute/__init__.py → /anemoi_datasets-0.4.5/docs/building/sources/hindcasts.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/mars1.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/mars2.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/netcdf.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/opendap.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/statistics.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/syntax.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/Makefile +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/building1.txt +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/building2.txt +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/building3.txt +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/input.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/building/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/cli/create.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/cli/inspect.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/cli/introduction.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/conf.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/installing.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/overview.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/overview_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/schemas/matrix.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/schemas/overview.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/schemas/recipe.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/area1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/area2_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/chain_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/combine_example.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/concat1.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/cutout_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/drop_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/end_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/ensembles1_.py +0 -0
- /anemoi_datasets-0.4.3/docs/using/code/frequency_.py → /anemoi_datasets-0.4.5/docs/using/code/frequency1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/grids1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/join1.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/matching0_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/matching1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/matching2_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/matching3_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/matching4_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/misc1.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/misc2.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/missing_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_cloud.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_combine1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_combine2_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_complex.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_dict_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_first_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_list_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_name.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_other.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_path.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/open_yaml_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/rename_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/reorder1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/reorder2_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/select1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/select2_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/shuffle_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/some_attributes_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/start_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/statistics_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/subset_example.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/thinning_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/zip1_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/code/zip2_.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/configuration.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/configuration.toml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/grids.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/area-1.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/concat.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/cutout-1.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/cutout-2.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/cutout-3.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/cutout-4.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/join.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/overlay.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/thinning-after.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/images/thinning-before.png +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/introduction.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/matching.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/methods.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/opening.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/selecting.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/docs/using/statistics.rst +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/setup.cfg +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/__init__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/compare.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/copy.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.4.3/src/anemoi/datasets/utils → anemoi_datasets-0.4.5/src/anemoi/datasets/compute}/__init__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/chunks.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/__init__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/rename.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/__init__.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/grib.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/mars.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray/grid.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray_kerchunk.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/xarray_zarr.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/functions/sources/zenodo.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/patch.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/persistent.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/size.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/template.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/trace.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/create/zarr.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/debug.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/ensemble.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/indexing.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/join.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/masked.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi/datasets/data/statistics.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create/data_sources.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/test_dates.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tests/xarray/test_netcdf.py +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tools/.gitignore +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.4.3 → anemoi_datasets-0.4.5}/tools/grids/grids2.yaml +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
CHANGELOG.md merge=union
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Check Changelog Update on PR
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
types: [assigned, opened, synchronize, reopened, labeled, unlabeled]
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
- develop
|
|
8
|
+
jobs:
|
|
9
|
+
Check-Changelog:
|
|
10
|
+
name: Check Changelog Action
|
|
11
|
+
runs-on: ubuntu-20.04
|
|
12
|
+
steps:
|
|
13
|
+
- uses: tarides/changelog-check-action@v2
|
|
14
|
+
with:
|
|
15
|
+
changelog: CHANGELOG.md
|
|
@@ -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,40 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
# Trigger the workflow on push to master or develop, except tag creation
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- 'main'
|
|
8
|
+
- 'develop'
|
|
9
|
+
tags-ignore:
|
|
10
|
+
- '**'
|
|
11
|
+
|
|
12
|
+
# Trigger the workflow on pull request
|
|
13
|
+
pull_request: ~
|
|
14
|
+
|
|
15
|
+
# Trigger the workflow manually
|
|
16
|
+
workflow_dispatch: ~
|
|
17
|
+
|
|
18
|
+
# Trigger after public PR approved for CI
|
|
19
|
+
pull_request_target:
|
|
20
|
+
types: [labeled]
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
# Run CI including downstream packages on self-hosted runners
|
|
24
|
+
downstream-ci:
|
|
25
|
+
name: downstream-ci
|
|
26
|
+
if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
|
|
27
|
+
uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci.yml@main
|
|
28
|
+
with:
|
|
29
|
+
anemoi-datasets: ecmwf/anemoi-datasets@${{ github.event.pull_request.head.sha || github.sha }}
|
|
30
|
+
codecov_upload: true
|
|
31
|
+
secrets: inherit
|
|
32
|
+
|
|
33
|
+
# Build downstream packages on HPC
|
|
34
|
+
downstream-ci-hpc:
|
|
35
|
+
name: downstream-ci-hpc
|
|
36
|
+
if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
|
|
37
|
+
uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci.yml@main
|
|
38
|
+
with:
|
|
39
|
+
anemoi-datasets: ecmwf/anemoi-datasets@${{ github.event.pull_request.head.sha || github.sha }}
|
|
40
|
+
secrets: inherit
|
|
@@ -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 }}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Read the Docs PR Preview
|
|
2
|
+
on:
|
|
3
|
+
pull_request_target:
|
|
4
|
+
types:
|
|
5
|
+
- opened
|
|
6
|
+
- synchronize
|
|
7
|
+
- reopened
|
|
8
|
+
# Execute this action only on PRs that touch
|
|
9
|
+
# documentation files.
|
|
10
|
+
paths:
|
|
11
|
+
- "docs/**"
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
pull-requests: write
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
documentation-links:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: readthedocs/actions/preview@v1
|
|
21
|
+
with:
|
|
22
|
+
project-slug: "anemoi-datasets"
|
|
@@ -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
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
Please add your functional changes to the appropriate section in the PR.
|
|
9
|
+
Keep it human-readable, your future self will thank you!
|
|
10
|
+
|
|
11
|
+
## [Unreleased]
|
|
12
|
+
|
|
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
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
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
|
+
|
|
37
|
+
### Removed
|
|
38
|
+
|
|
39
|
+
## [0.4.4] Bug fixes
|
|
40
|
+
|
|
41
|
+
- Bug fix in accumulations() that did not work with webmars
|
|
42
|
+
- Bug fix when using hindcasts input (missing dates on leap years)
|
|
43
|
+
|
|
44
|
+
## [0.4.0] Minor Release
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
- earthkit-data replaces climetlab
|
|
48
|
+
|
|
49
|
+
### Removed
|
|
50
|
+
- climetlab
|
|
51
|
+
|
|
52
|
+
## [0.3.0] Minor Release
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
- hindcast source
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
- updated documentation
|
|
59
|
+
|
|
60
|
+
## [0.2.0] Minor Release
|
|
61
|
+
|
|
62
|
+
### Added
|
|
63
|
+
- statistics tendencies
|
|
64
|
+
|
|
65
|
+
### Removed
|
|
66
|
+
- CubesFilter
|
|
67
|
+
|
|
68
|
+
## [0.1.0] Initial Release
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
- Documentation
|
|
72
|
+
- Initial code release for anemoi-datasets: create datasets for data-driven weather-models
|
|
73
|
+
- open datasets
|
|
74
|
+
- combine datasets
|
|
75
|
+
|
|
76
|
+
## Git Diffs:
|
|
77
|
+
[0.4.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.3.0...0.4.0
|
|
78
|
+
[0.3.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.2.0...0.3.0
|
|
79
|
+
[0.2.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.1.0...0.2.0
|
|
80
|
+
[0.1.0]: https://github.com/ecmwf/anemoi-models/releases/tag/0.1.0
|
|
@@ -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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
import fsspec
|
|
4
|
+
import tqdm
|
|
5
|
+
from kerchunk.combine import MultiZarrToZarr
|
|
6
|
+
from kerchunk.hdf import SingleHdf5ToZarr
|
|
7
|
+
|
|
8
|
+
fs = fsspec.filesystem("s3", anon=True)
|
|
9
|
+
|
|
10
|
+
pattern = "s3://nsf-ncar-era5/e5.oper.an.pl/202403/e5.oper.an.pl.*.ll025sc.2024????00_2024????23.nc"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
jsons = []
|
|
14
|
+
|
|
15
|
+
for file in tqdm.tqdm(fs.glob(pattern)):
|
|
16
|
+
with fs.open(file, "rb", anon=True) as f:
|
|
17
|
+
h5chunks = SingleHdf5ToZarr(f, file)
|
|
18
|
+
jsons.append(h5chunks.translate())
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
mzz = MultiZarrToZarr(
|
|
22
|
+
jsons,
|
|
23
|
+
remote_protocol="s3",
|
|
24
|
+
remote_options={"anon": True},
|
|
25
|
+
concat_dims=["time"],
|
|
26
|
+
identical_dims=["latitude", "longitude"],
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
with open("combined.json", "w") as f:
|
|
30
|
+
json.dump(mzz.translate(), f)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#################
|
|
2
|
+
xarray-kerchunk
|
|
3
|
+
#################
|
|
4
|
+
|
|
5
|
+
.. literalinclude:: xarray-kerchunk.yaml
|
|
6
|
+
:language: yaml
|
|
7
|
+
|
|
8
|
+
The code below is inspired by the `kerchunk tutorial`_, and makes use of
|
|
9
|
+
a subset of the `ERA5 dataset available on AWS`_. You may need to
|
|
10
|
+
install the relevant packages before running the code below.
|
|
11
|
+
|
|
12
|
+
.. literalinclude:: xarray-kerchunk.py
|
|
13
|
+
:language: python
|
|
14
|
+
|
|
15
|
+
.. _era5 dataset available on aws: https://registry.opendata.aws/ecmwf-era5/
|
|
16
|
+
|
|
17
|
+
.. _kerchunk tutorial: https://fsspec.github.io/kerchunk/tutorial.html
|
|
@@ -20,11 +20,14 @@ The following `sources` are currently available:
|
|
|
20
20
|
.. toctree::
|
|
21
21
|
:maxdepth: 1
|
|
22
22
|
|
|
23
|
-
sources/
|
|
23
|
+
sources/accumulations
|
|
24
|
+
sources/forcings
|
|
24
25
|
sources/grib
|
|
26
|
+
sources/hindcasts
|
|
27
|
+
sources/mars
|
|
25
28
|
sources/netcdf
|
|
26
|
-
sources/xarray
|
|
27
29
|
sources/opendap
|
|
28
|
-
sources/forcings
|
|
29
|
-
sources/accumulations
|
|
30
30
|
sources/recentre
|
|
31
|
+
sources/xarray-kerchunk
|
|
32
|
+
sources/xarray-zarr
|
|
33
|
+
sources/zenodo
|
|
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()
|