anemoi-datasets 0.5.12__tar.gz → 0.5.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- anemoi_datasets-0.5.14/.github/workflows/python-publish.yml +27 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.pre-commit-config.yaml +1 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/CHANGELOG.md +8 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/PKG-INFO +2 -2
- anemoi_datasets-0.5.14/docs/building/filters/orog_to_z.rst +17 -0
- anemoi_datasets-0.5.14/docs/building/filters/sum.rst +13 -0
- anemoi_datasets-0.5.14/docs/building/filters/wz_to_w.rst +12 -0
- anemoi_datasets-0.5.14/docs/building/filters/yaml/orog_to_z.yaml +10 -0
- anemoi_datasets-0.5.14/docs/building/filters/yaml/sum.yaml +13 -0
- anemoi_datasets-0.5.14/docs/building/filters/yaml/wz_to_w.yaml +10 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters.rst +3 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/introduction.rst +33 -32
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/accumulations1.yaml +1 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/accumulations2.yaml +1 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/index.rst +4 -0
- anemoi_datasets-0.5.14/docs/naming_conventions.rst +8 -0
- anemoi_datasets-0.5.14/docs/using/code/complement1_.py +6 -0
- anemoi_datasets-0.5.14/docs/using/code/complement2_.py +12 -0
- anemoi_datasets-0.5.14/docs/using/code/complement3_.py +4 -0
- anemoi_datasets-0.5.14/docs/using/code/number1_.py +4 -0
- anemoi_datasets-0.5.14/docs/using/code/number2_.py +4 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/combining.rst +29 -0
- anemoi_datasets-0.5.14/docs/using/ensembles.rst +27 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/selecting.rst +25 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/_version.py +2 -2
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/create.py +4 -2
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/__init__.py +22 -6
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/check.py +1 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/__init__.py +15 -1
- anemoi_datasets-0.5.14/src/anemoi/datasets/create/functions/filters/orog_to_z.py +58 -0
- anemoi_datasets-0.5.14/src/anemoi/datasets/create/functions/filters/sum.py +71 -0
- anemoi_datasets-0.5.14/src/anemoi/datasets/create/functions/filters/wz_to_w.py +79 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/accumulations.py +7 -2
- anemoi_datasets-0.5.14/src/anemoi/datasets/create/functions/sources/eccc_fstd.py +16 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/mars.py +5 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/__init__.py +3 -3
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/field.py +5 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/fieldlist.py +10 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/metadata.py +5 -11
- anemoi_datasets-0.5.14/src/anemoi/datasets/create/functions/sources/xarray/patch.py +44 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/time.py +15 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/variable.py +18 -2
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/repeated_dates.py +18 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/result.py +1 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/statistics/__init__.py +7 -4
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/utils.py +4 -0
- anemoi_datasets-0.5.14/src/anemoi/datasets/data/complement.py +164 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/dataset.py +68 -5
- anemoi_datasets-0.5.14/src/anemoi/datasets/data/ensemble.py +93 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/join.py +1 -2
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/merge.py +3 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/misc.py +34 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/grids.py +29 -10
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi_datasets.egg-info/PKG-INFO +2 -2
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi_datasets.egg-info/SOURCES.txt +20 -0
- anemoi_datasets-0.5.14/tests/create/regrid.yaml +31 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/test_data.py +45 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/xarray/test_opendap.py +6 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/xarray/test_samples.py +1 -1
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/xarray/test_zarr.py +3 -3
- anemoi_datasets-0.5.12/.github/workflows/python-publish.yml +0 -28
- anemoi_datasets-0.5.12/src/anemoi/datasets/data/ensemble.py +0 -38
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.gitattributes +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/CODEOWNERS +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/ci-config.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/ci-hpc-config.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/workflows/changelog-pr-update.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/workflows/changelog-release-update.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/workflows/ci.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/workflows/label-public-pr.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/workflows/push-to-private.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/workflows/python-pull-request.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.github/workflows/readthedocs-pr-update.yml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.gitignore +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.readthedocs.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/CONTRIBUTORS.md +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/LICENSE +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/README.md +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/Makefile +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/advanced-options.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters/empty.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters/noop.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters/rename.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters/rotate_winds.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters/select.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters/unrotate_winds.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/filters/yaml/rename.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/incremental.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/operations.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/hindcasts.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/repeated_dates.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/xarray-based.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/xarray-kerchunk.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/xarray-kerchunk.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/xarray-zarr.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/forcings.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/mars1.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/mars2.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/netcdf.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/opendap.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/repeated_dates1.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/repeated_dates2.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/repeated_dates3.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/repeated_dates4.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/xarray-based.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/xarray-kerchunk.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/xarray-zarr.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/yaml/zenodo.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources/zenodo.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/sources.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/statistics.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/syntax.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/Makefile +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/building1.txt +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/building2.txt +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/building3.txt +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/input.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/building/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/cli/create.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/cli/inspect.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/cli/introduction.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/conf.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/images.pptx +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/installing.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/overview.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/overview_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/schemas/matrix.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/schemas/overview.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/schemas/recipe.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/area1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/area2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/chain_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/combine_example.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/concat1.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/cutout_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/drop_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/end_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/ensembles1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/fill_missing_dates1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/fill_missing_dates2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/fill_missing_gaps_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/frequency1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/frequency2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/grids1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/iterating_missing_dates1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/iterating_missing_dates2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/iterating_missing_dates3_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/join1.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/matching0_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/matching1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/matching2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/matching3_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/matching4_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/misc1.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/misc2.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/missing_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_cloud.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_combine1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_combine2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_complex.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_dict_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_first_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_list_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_name.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_other.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_path.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/open_yaml_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/rename_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/reorder1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/reorder2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/rescale_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/select1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/select2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/set_missing_dates_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/shuffle_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/some_attributes_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/start_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/statistics_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/subset_example.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/thinning_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/xy1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/xy2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/zip1_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/zip2_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/code/zip_xy_.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/configuration.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/configuration.toml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/grids.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/area-1.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/concat.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/cutout-1.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/cutout-2.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/cutout-3.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/cutout-4.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/cutout-5.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/cutout-6.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/join.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/overlay.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/skip-missing.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/thinning-after.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/images/thinning-before.png +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/introduction.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/matching.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/methods.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/missing.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/opening.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/other.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/statistics.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/subsetting.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/docs/using/zip.rst +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/pyproject.toml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/setup.cfg +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/cleanup.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/compare.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/copy.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/finalise.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/init-additions.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/init.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/inspect.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/load-additions.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/load.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/patch.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/publish.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/compute/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/compute/recentre.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/chunks.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/config.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/rename.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/single_level_dewpoint_to_relative_humidity.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_dewpoint.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_specific_humidity.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/single_level_specific_humidity_to_relative_humidity.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/speeddir_to_uv.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/filters/uv_to_speeddir.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/grib.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/hindcasts.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/tendencies.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/coordinates.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/flavour.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray/grid.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray_kerchunk.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/xarray_zarr.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/sources/zenodo.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/action.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/concat.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/context.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/data_sources.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/empty.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/filter.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/function.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/join.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/misc.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/pipe.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/step.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/template.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/input/trace.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/patch.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/persistent.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/size.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/zarr.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/concat.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/debug.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/fill_missing.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/forwards.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/grids.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/indexing.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/interpolate.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/masked.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/missing.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/rescale.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/select.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/statistics.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/stores.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/subset.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/unchecked.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/data/xy.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/dates/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/dates/groups.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/testing.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/utils/__init__.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/utils/fields.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi_datasets.egg-info/requires.txt +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/run.sh +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create/test_create.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/test_chunks.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/test_dates.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/xarray/test_kerchunk.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tests/xarray/test_netcdf.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/.gitignore +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids2.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids3.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids4.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids5.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids6.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids7.yaml +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/grids/grids_multilam.ipynb +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/make-sample-dataset.py +0 -0
- {anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/tools/upload-sample-dataset.py +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
# if: ${{ !contains(github.repository, 'private') }}
|
|
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", "3.11", "3.12"]
|
|
21
|
+
# uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
|
|
22
|
+
# with:
|
|
23
|
+
# python-version: ${{ matrix.python-version }}
|
|
24
|
+
|
|
25
|
+
deploy:
|
|
26
|
+
uses: ecmwf-actions/reusable-workflows/.github/workflows/cd-pypi.yml@v2
|
|
27
|
+
secrets: inherit
|
|
@@ -13,12 +13,19 @@ Keep it human-readable, your future self will thank you!
|
|
|
13
13
|
## Changed
|
|
14
14
|
|
|
15
15
|
- Fix metadata serialization handling of numpy.integer (#140)
|
|
16
|
+
- Fix negative variance for constant variables (#148)
|
|
16
17
|
- Fix cutout slicing of grid dimension (#145)
|
|
18
|
+
- Use cKDTree instead of KDTree
|
|
19
|
+
- Implement 'complement' feature
|
|
20
|
+
- Add ability to patch xarrays (#160)
|
|
21
|
+
- Add support of ECCC file formats (fstd)
|
|
22
|
+
- Add `use_cdsapi_dataset` option to mars and accumulations
|
|
17
23
|
|
|
18
24
|
### Added
|
|
19
25
|
|
|
20
26
|
- Call filters from anemoi-transform
|
|
21
|
-
-
|
|
27
|
+
- Make test optional when adls is not installed Pull request #110
|
|
28
|
+
- Add wz_to_w, orog_to_z, and sum filters (#149)
|
|
22
29
|
|
|
23
30
|
## [0.5.8](https://github.com/ecmwf/anemoi-datasets/compare/0.5.7...0.5.8) - 2024-10-26
|
|
24
31
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.14
|
|
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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
###########
|
|
2
|
+
orog_to_z
|
|
3
|
+
###########
|
|
4
|
+
|
|
5
|
+
The ``orog_to_z`` filter converts orography (in meters) to surface
|
|
6
|
+
geopotential height (m^2/s^2) using the equation:
|
|
7
|
+
|
|
8
|
+
.. math::
|
|
9
|
+
|
|
10
|
+
z &= g \cdot \textrm{orog}\\
|
|
11
|
+
g &= 9.80665\ m \cdot s^{-1}
|
|
12
|
+
|
|
13
|
+
This filter needs to follow a source that provides orography, which is
|
|
14
|
+
replaced by surface geopotential height.
|
|
15
|
+
|
|
16
|
+
.. literalinclude:: yaml/orog_to_z.yaml
|
|
17
|
+
:language: yaml
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#####
|
|
2
|
+
sum
|
|
3
|
+
#####
|
|
4
|
+
|
|
5
|
+
The ``sum`` filter computes the sum over multiple variables. This can be
|
|
6
|
+
useful for computing total precipitation from its components (snow,
|
|
7
|
+
rain) or summing the components of total column integrated water. This
|
|
8
|
+
filter needs to follow a source that provides the list of variables to
|
|
9
|
+
be summed up. These variables are removed by the filter and replaced by
|
|
10
|
+
a single summed variable.
|
|
11
|
+
|
|
12
|
+
.. literalinclude:: yaml/sum.yaml
|
|
13
|
+
:language: yaml
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#########
|
|
2
|
+
wz_to_w
|
|
3
|
+
#########
|
|
4
|
+
|
|
5
|
+
The ``wz_to_w`` filter converts geometric vertical velocity (provided in
|
|
6
|
+
m/s) to vertical velocity in pressure coordinates (Pa/s). This filter
|
|
7
|
+
needs to follow a source that provides geometric vertical velocity.
|
|
8
|
+
Geometric vertical velocity is removed by the filter and pressure
|
|
9
|
+
vertical velocity is added.
|
|
10
|
+
|
|
11
|
+
.. literalinclude:: yaml/wz_to_w.yaml
|
|
12
|
+
:language: yaml
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
input:
|
|
2
|
+
pipe:
|
|
3
|
+
- source: # mars, grib, netcdf, etc.
|
|
4
|
+
# source attributes here
|
|
5
|
+
# ...
|
|
6
|
+
# Must load the variables to be summed
|
|
7
|
+
|
|
8
|
+
- sum:
|
|
9
|
+
params: # List of input variables
|
|
10
|
+
variable1
|
|
11
|
+
variable2
|
|
12
|
+
variable3
|
|
13
|
+
output: variable_total # Name of output variable
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
input:
|
|
2
|
+
pipe:
|
|
3
|
+
- source: # mars, grib, netcdf, etc.
|
|
4
|
+
# source attributes here
|
|
5
|
+
# ...
|
|
6
|
+
# Must load geometric vertical velocity
|
|
7
|
+
|
|
8
|
+
- wz_to_w:
|
|
9
|
+
wz: wz # Name of geometric vertical velocity (input) variable
|
|
10
|
+
x: z # Name of pressure vertical velocity (output) variable
|
|
@@ -15,8 +15,11 @@ Filters are used to modify the data or metadata in a dataset.
|
|
|
15
15
|
:maxdepth: 1
|
|
16
16
|
|
|
17
17
|
filters/select
|
|
18
|
+
filters/orog_to_z
|
|
18
19
|
filters/rename
|
|
19
20
|
filters/rotate_winds
|
|
21
|
+
filters/sum
|
|
20
22
|
filters/unrotate_winds
|
|
23
|
+
filters/wz_to_w
|
|
21
24
|
filters/noop
|
|
22
25
|
filters/empty
|
|
@@ -10,7 +10,7 @@ file, which is a YAML file that describes sources of meteorological
|
|
|
10
10
|
fields as well as the operations to perform on them, before they are
|
|
11
11
|
written to a zarr file. The input of the process is a range of dates and
|
|
12
12
|
some options to control the layout of the output. Statistics will be
|
|
13
|
-
computed as the dataset is
|
|
13
|
+
computed as the dataset is built, and stored in the metadata, with other
|
|
14
14
|
information such as the the locations of the grid points, the list of
|
|
15
15
|
variables, etc.
|
|
16
16
|
|
|
@@ -24,35 +24,35 @@ variables, etc.
|
|
|
24
24
|
|
|
25
25
|
date
|
|
26
26
|
Throughout this document, the term `date` refers to a date and time,
|
|
27
|
-
not just a date. A training dataset
|
|
27
|
+
not just a date. A training dataset covers a continuous range of
|
|
28
28
|
dates with a given frequency. Missing dates are still part of the
|
|
29
|
-
dataset, but
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
dataset, but missing data are marked as such using NaNs. Dates are
|
|
30
|
+
always in UTC, and refer to date at which the data is valid. For
|
|
31
|
+
accumulations and fluxes, that would be the end of the accumulation
|
|
32
|
+
period.
|
|
33
33
|
|
|
34
34
|
variable
|
|
35
|
-
A `variable` is meteorological parameter, such as temperature,
|
|
36
|
-
etc. Multilevel parameters are treated as separate variables,
|
|
37
|
-
each level. For example, temperature at 850 hPa and
|
|
38
|
-
500 hPa will be treated as two separate variables
|
|
39
|
-
`t_500`).
|
|
35
|
+
A `variable` is a meteorological parameter, such as temperature,
|
|
36
|
+
wind, etc. Multilevel parameters are treated as separate variables,
|
|
37
|
+
one for each level. For example, temperature at 850 hPa and
|
|
38
|
+
temperature at 500 hPa will be treated as two separate variables
|
|
39
|
+
(`t_850` and `t_500`).
|
|
40
40
|
|
|
41
41
|
field
|
|
42
|
-
A `field` is a variable at a given date. It is represented by
|
|
43
|
-
of values at each grid point.
|
|
42
|
+
A `field` is a variable at a given date. It is represented by an
|
|
43
|
+
array of values at each grid point.
|
|
44
44
|
|
|
45
45
|
source
|
|
46
|
-
The `source` is a software component that given a list of dates and
|
|
47
|
-
variables will return the corresponding fields.
|
|
46
|
+
The `source` is a software component that, given a list of dates and
|
|
47
|
+
variables will return the corresponding fields. An example of source
|
|
48
48
|
is ECMWF's MARS archive, a collection of GRIB or NetCDF files, a
|
|
49
49
|
database, etc. See :ref:`sources` for more information.
|
|
50
50
|
|
|
51
51
|
filter
|
|
52
52
|
A `filter` is a software component that takes as input the output of
|
|
53
|
-
a source or
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
a source or another filter and can modify the fields and/or their
|
|
54
|
+
metadata. For example, typical filters are interpolations, renaming
|
|
55
|
+
of variables, etc. See :ref:`filters` for more information.
|
|
56
56
|
|
|
57
57
|
************
|
|
58
58
|
Operations
|
|
@@ -62,19 +62,20 @@ In order to build a training dataset, sources and filters are combined
|
|
|
62
62
|
using the following operations:
|
|
63
63
|
|
|
64
64
|
join
|
|
65
|
-
The join is the process of combining several sources data. Each
|
|
66
|
-
source is expected to provide different variables
|
|
65
|
+
The join is the process of combining several sources of data. Each
|
|
66
|
+
source is expected to provide different variables for the same of
|
|
67
|
+
dates.
|
|
67
68
|
|
|
68
69
|
pipe
|
|
69
70
|
The pipe is the process of transforming fields using filters. The
|
|
70
|
-
first step of a pipe is typically a source, a join or another pipe.
|
|
71
|
-
|
|
71
|
+
first step of a pipe is typically a source, a join, or another pipe.
|
|
72
|
+
This can subsequently followed by more filters.
|
|
72
73
|
|
|
73
74
|
concat
|
|
74
75
|
The concatenation is the process of combining different sets of
|
|
75
|
-
|
|
76
|
-
build a dataset that spans several years, when
|
|
77
|
-
|
|
76
|
+
operations that handle different dates. This is typically used to
|
|
77
|
+
build a dataset that spans several years, when several sources are
|
|
78
|
+
involved, each providing data for different period.
|
|
78
79
|
|
|
79
80
|
Each operation is considered as a :ref:`source <sources>`, therefore
|
|
80
81
|
operations can be combined to build complex datasets.
|
|
@@ -87,7 +88,7 @@ First recipe
|
|
|
87
88
|
============
|
|
88
89
|
|
|
89
90
|
The simplest `recipe` file must contain a ``dates`` section and an
|
|
90
|
-
``input`` section. The latter must contain a `source
|
|
91
|
+
``input`` section. The latter must contain a `source`. In that case, the
|
|
91
92
|
source is ``mars``
|
|
92
93
|
|
|
93
94
|
.. literalinclude:: yaml/building1.yaml
|
|
@@ -132,15 +133,15 @@ This will build the following dataset:
|
|
|
132
133
|
Adding some forcing variables
|
|
133
134
|
=============================
|
|
134
135
|
|
|
135
|
-
When training a data-driven
|
|
136
|
+
When training a data-driven model, some forcing variables may be
|
|
136
137
|
required such as the solar radiation, the time of day, the day in the
|
|
137
138
|
year, etc.
|
|
138
139
|
|
|
139
|
-
These are provided by the ``forcings`` source.
|
|
140
|
-
|
|
141
|
-
in that case the first instance of ``mars``. This source is used
|
|
142
|
-
information about the grid points, as some of the forcing
|
|
143
|
-
grid dependent.
|
|
140
|
+
These are provided by the ``forcings`` source. Let us add a few of them
|
|
141
|
+
to the above example. The `template` option is used to point to another
|
|
142
|
+
source, in that case the first instance of ``mars``. This source is used
|
|
143
|
+
to get information about the grid points, as some of the forcing
|
|
144
|
+
variables are grid dependent.
|
|
144
145
|
|
|
145
146
|
.. literalinclude:: yaml/building3.yaml
|
|
146
147
|
:language: yaml
|
|
@@ -27,6 +27,7 @@ datasets <building-introduction>`.
|
|
|
27
27
|
|
|
28
28
|
- :doc:`overview`
|
|
29
29
|
- :doc:`installing`
|
|
30
|
+
- :doc:`naming_conventions`
|
|
30
31
|
|
|
31
32
|
.. toctree::
|
|
32
33
|
:maxdepth: 1
|
|
@@ -34,6 +35,7 @@ datasets <building-introduction>`.
|
|
|
34
35
|
|
|
35
36
|
overview
|
|
36
37
|
installing
|
|
38
|
+
naming_conventions
|
|
37
39
|
|
|
38
40
|
**Using training datasets**
|
|
39
41
|
|
|
@@ -43,6 +45,7 @@ datasets <building-introduction>`.
|
|
|
43
45
|
- :doc:`using/subsetting`
|
|
44
46
|
- :doc:`using/combining`
|
|
45
47
|
- :doc:`using/selecting`
|
|
48
|
+
- :doc:`using/ensembles`
|
|
46
49
|
- :doc:`using/grids`
|
|
47
50
|
- :doc:`using/zip`
|
|
48
51
|
- :doc:`using/statistics`
|
|
@@ -63,6 +66,7 @@ datasets <building-introduction>`.
|
|
|
63
66
|
using/subsetting
|
|
64
67
|
using/combining
|
|
65
68
|
using/selecting
|
|
69
|
+
using/ensembles
|
|
66
70
|
using/grids
|
|
67
71
|
using/zip
|
|
68
72
|
using/statistics
|
|
@@ -182,3 +182,32 @@ The difference can be seen at the boundary between the two grids:
|
|
|
182
182
|
To debug the combination, you can pass `plot=True` to the `cutout`
|
|
183
183
|
function (when running from a Notebook), of use `plot="prefix"` to save
|
|
184
184
|
the plots to series of PNG files in the current directory.
|
|
185
|
+
|
|
186
|
+
.. _complement:
|
|
187
|
+
|
|
188
|
+
************
|
|
189
|
+
complement
|
|
190
|
+
************
|
|
191
|
+
|
|
192
|
+
That feature will interpolate the variables of `dataset2` that are not
|
|
193
|
+
in `dataset1` to the grid of `dataset1` , add them to the list of
|
|
194
|
+
variable of `dataset1` and return the result.
|
|
195
|
+
|
|
196
|
+
.. literalinclude:: code/complement1_.py
|
|
197
|
+
|
|
198
|
+
Currently ``what`` can only be ``variables`` and can be omitted.
|
|
199
|
+
|
|
200
|
+
The value for ``interpolate`` can be one of ``none`` (default) or
|
|
201
|
+
``nearest``. In the case of ``none``, the grids of the two datasets must
|
|
202
|
+
match.
|
|
203
|
+
|
|
204
|
+
This feature was originally designed to be used in conjunction with
|
|
205
|
+
``cutout``, where `dataset1` is the lam, and `dataset2` is the global
|
|
206
|
+
dataset.
|
|
207
|
+
|
|
208
|
+
.. literalinclude:: code/complement2_.py
|
|
209
|
+
|
|
210
|
+
Another use case is to simply bring all non-overlapping variables of a
|
|
211
|
+
dataset into an other:
|
|
212
|
+
|
|
213
|
+
.. literalinclude:: code/complement3_.py
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.. _selecting-members:
|
|
2
|
+
|
|
3
|
+
###################
|
|
4
|
+
Selecting members
|
|
5
|
+
###################
|
|
6
|
+
|
|
7
|
+
This section describes how to subset data that are part of an ensemble.
|
|
8
|
+
To combine ensembles, see :ref:`ensembles` in the
|
|
9
|
+
:ref:`combining-datasets` section.
|
|
10
|
+
|
|
11
|
+
.. _number:
|
|
12
|
+
|
|
13
|
+
If a dataset is an ensemble, you can select one or more specific members
|
|
14
|
+
using the `number` option. You can also use ``numbers`` (which is an
|
|
15
|
+
alias for ``number``), and ``member`` (or ``members``). The difference
|
|
16
|
+
between the two is that ``number`` is **1-based**, while ``member`` is
|
|
17
|
+
**0-based**.
|
|
18
|
+
|
|
19
|
+
Select a single element:
|
|
20
|
+
|
|
21
|
+
.. literalinclude:: code/number1_.py
|
|
22
|
+
:language: python
|
|
23
|
+
|
|
24
|
+
... or a list:
|
|
25
|
+
|
|
26
|
+
.. literalinclude:: code/number2_.py
|
|
27
|
+
:language: python
|
|
@@ -67,6 +67,28 @@ You can also rename variables:
|
|
|
67
67
|
This will be useful when you join datasets and do not want variables
|
|
68
68
|
from one dataset to override the ones from the other.
|
|
69
69
|
|
|
70
|
+
********
|
|
71
|
+
number
|
|
72
|
+
********
|
|
73
|
+
|
|
74
|
+
If a dataset is an ensemble, you can select one or more specific members
|
|
75
|
+
using the `number` option. You can also use ``numbers`` (which is an
|
|
76
|
+
alias for ``number``), and ``member`` (or ``members``). The difference
|
|
77
|
+
between the two is that ``number`` is **1-based**, while ``member`` is
|
|
78
|
+
**0-based**.
|
|
79
|
+
|
|
80
|
+
Select a single element:
|
|
81
|
+
|
|
82
|
+
.. literalinclude:: code/number1_.py
|
|
83
|
+
:language: python
|
|
84
|
+
|
|
85
|
+
... or a list:
|
|
86
|
+
|
|
87
|
+
.. literalinclude:: code/number2_.py
|
|
88
|
+
:language: python
|
|
89
|
+
|
|
90
|
+
.. _rescale:
|
|
91
|
+
|
|
70
92
|
*********
|
|
71
93
|
rescale
|
|
72
94
|
*********
|
|
@@ -87,7 +109,9 @@ rescale the data.
|
|
|
87
109
|
.. warning::
|
|
88
110
|
|
|
89
111
|
When providing units, the library assumes that the mapping between
|
|
90
|
-
them is a linear transformation. No check is
|
|
112
|
+
them is a linear transformation. No check is done to ensure this is
|
|
91
113
|
the case.
|
|
92
114
|
|
|
93
115
|
.. _cfunits: https://github.com/NCAS-CMS/cfunits
|
|
116
|
+
|
|
117
|
+
.. _number:
|
|
@@ -83,11 +83,12 @@ class Create(Command):
|
|
|
83
83
|
task("load", options)
|
|
84
84
|
task("finalise", options)
|
|
85
85
|
|
|
86
|
-
task("patch", options)
|
|
87
|
-
|
|
88
86
|
task("init_additions", options)
|
|
89
87
|
task("run_additions", options)
|
|
90
88
|
task("finalise_additions", options)
|
|
89
|
+
|
|
90
|
+
task("patch", options)
|
|
91
|
+
|
|
91
92
|
task("cleanup", options)
|
|
92
93
|
task("verify", options)
|
|
93
94
|
|
|
@@ -153,6 +154,7 @@ class Create(Command):
|
|
|
153
154
|
|
|
154
155
|
with ExecutorClass(max_workers=1) as executor:
|
|
155
156
|
executor.submit(task, "finalise-additions", options).result()
|
|
157
|
+
executor.submit(task, "patch", options).result()
|
|
156
158
|
executor.submit(task, "cleanup", options).result()
|
|
157
159
|
executor.submit(task, "verify", options).result()
|
|
158
160
|
|
|
@@ -79,7 +79,10 @@ def json_tidy(o):
|
|
|
79
79
|
)
|
|
80
80
|
return o.isoformat()
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
if isinstance(o, (np.float32, np.float64)):
|
|
83
|
+
return float(o)
|
|
84
|
+
|
|
85
|
+
raise TypeError(f"{repr(o)} is not JSON serializable {type(o)}")
|
|
83
86
|
|
|
84
87
|
|
|
85
88
|
def build_statistics_dates(dates, start, end):
|
|
@@ -596,6 +599,8 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
|
|
|
596
599
|
# There is one cube to load for each result.
|
|
597
600
|
dates = list(result.group_of_dates)
|
|
598
601
|
|
|
602
|
+
LOG.debug(f"Loading cube for {len(dates)} dates")
|
|
603
|
+
|
|
599
604
|
cube = result.get_cube()
|
|
600
605
|
shape = cube.extended_user_shape
|
|
601
606
|
dates_in_data = cube.user_coords["valid_datetime"]
|
|
@@ -622,10 +627,14 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
|
|
|
622
627
|
|
|
623
628
|
check_shape(cube, dates, dates_in_data)
|
|
624
629
|
|
|
625
|
-
def check_dates_in_data(
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
assert
|
|
630
|
+
def check_dates_in_data(dates_in_data, requested_dates):
|
|
631
|
+
requested_dates = [np.datetime64(_) for _ in requested_dates]
|
|
632
|
+
dates_in_data = [np.datetime64(_) for _ in dates_in_data]
|
|
633
|
+
assert dates_in_data == requested_dates, (
|
|
634
|
+
"Dates in data are not the requested ones:",
|
|
635
|
+
dates_in_data,
|
|
636
|
+
requested_dates,
|
|
637
|
+
)
|
|
629
638
|
|
|
630
639
|
check_dates_in_data(dates_in_data, dates)
|
|
631
640
|
|
|
@@ -638,12 +647,14 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
|
|
|
638
647
|
indexes = dates_to_indexes(self.dates, dates_in_data)
|
|
639
648
|
|
|
640
649
|
array = ViewCacheArray(self.data_array, shape=shape, indexes=indexes)
|
|
650
|
+
LOG.info(f"Loading array shape={shape}, indexes={len(indexes)}")
|
|
641
651
|
self.load_cube(cube, array)
|
|
642
652
|
|
|
643
653
|
stats = compute_statistics(array.cache, self.variables_names, allow_nans=self._get_allow_nans())
|
|
644
654
|
self.tmp_statistics.write(indexes, stats, dates=dates_in_data)
|
|
645
|
-
|
|
655
|
+
LOG.info("Flush data array")
|
|
646
656
|
array.flush()
|
|
657
|
+
LOG.info("Flushed data array")
|
|
647
658
|
|
|
648
659
|
def _get_allow_nans(self):
|
|
649
660
|
config = self.main_config
|
|
@@ -736,6 +747,11 @@ class AdditionsMixin:
|
|
|
736
747
|
if not self.delta.total_seconds() % frequency.total_seconds() == 0:
|
|
737
748
|
LOG.debug(f"Delta {self.delta} is not a multiple of frequency {frequency}. Skipping.")
|
|
738
749
|
return True
|
|
750
|
+
|
|
751
|
+
if self.dataset.zarr_metadata.get("build", {}).get("additions", None) is False:
|
|
752
|
+
LOG.warning(f"Additions are disabled for {self.path} in the recipe.")
|
|
753
|
+
return True
|
|
754
|
+
|
|
739
755
|
return False
|
|
740
756
|
|
|
741
757
|
@cached_property
|
|
@@ -58,7 +58,7 @@ class DatasetName:
|
|
|
58
58
|
raise ValueError(self.error_message)
|
|
59
59
|
|
|
60
60
|
def _parse(self, name):
|
|
61
|
-
pattern = r"^(\w+)-([\w-]+)-(\w+)-(\w+)-(\d\d\d\d)-(\d\d\d\d)-(\d+h)-v(\d+)-?([a-zA-Z0-9-]+)?$"
|
|
61
|
+
pattern = r"^(\w+)-([\w-]+)-(\w+)-(\w+)-(\d\d\d\d)-(\d\d\d\d)-(\d+h|\d+m)-v(\d+)-?([a-zA-Z0-9-]+)?$"
|
|
62
62
|
match = re.match(pattern, name)
|
|
63
63
|
|
|
64
64
|
if not match:
|
{anemoi_datasets-0.5.12 → anemoi_datasets-0.5.14}/src/anemoi/datasets/create/functions/__init__.py
RENAMED
|
@@ -22,6 +22,7 @@ def assert_is_fieldlist(obj):
|
|
|
22
22
|
def import_function(name, kind):
|
|
23
23
|
|
|
24
24
|
from anemoi.transform.filters import filter_registry
|
|
25
|
+
from anemoi.transform.sources import source_registry
|
|
25
26
|
|
|
26
27
|
name = name.replace("-", "_")
|
|
27
28
|
|
|
@@ -45,7 +46,20 @@ def import_function(name, kind):
|
|
|
45
46
|
if filter_registry.lookup(name, return_none=True):
|
|
46
47
|
|
|
47
48
|
def proc(context, data, *args, **kwargs):
|
|
48
|
-
|
|
49
|
+
filter = filter_registry.create(name, *args, **kwargs)
|
|
50
|
+
filter.context = context
|
|
51
|
+
# filter = filter_registry.create(context, name, *args, **kwargs)
|
|
52
|
+
return filter.forward(data)
|
|
53
|
+
|
|
54
|
+
return proc
|
|
55
|
+
|
|
56
|
+
if kind == "sources":
|
|
57
|
+
if source_registry.lookup(name, return_none=True):
|
|
58
|
+
|
|
59
|
+
def proc(context, data, *args, **kwargs):
|
|
60
|
+
source = source_registry.create(name, *args, **kwargs)
|
|
61
|
+
# source = source_registry.create(context, name, *args, **kwargs)
|
|
62
|
+
return source.forward(data)
|
|
49
63
|
|
|
50
64
|
return proc
|
|
51
65
|
|