anemoi-datasets 0.3.5__tar.gz → 0.3.7__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.3.5 → anemoi_datasets-0.3.7}/.github/workflows/python-publish.yml +1 -2
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/.pre-commit-config.yaml +4 -3
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/PKG-INFO +7 -11
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/pyproject.toml +6 -11
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/__init__.py +2 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/_version.py +2 -2
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/commands/compare.py +2 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/commands/copy.py +60 -14
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/compute/recentre.py +1 -1
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/filters/rename.py +14 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/loaders.py +6 -3
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/__init__.py +7 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/dataset.py +3 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/forwards.py +7 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/masked.py +6 -2
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/misc.py +3 -3
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/statistics.py +4 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/stores.py +10 -1
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi_datasets.egg-info/PKG-INFO +7 -11
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi_datasets.egg-info/requires.txt +5 -9
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/.gitignore +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/.readthedocs.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/LICENSE +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/README.md +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/Makefile +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/filters/empty.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/filters/noop.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/filters/rename.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/filters/rotate_winds.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/filters/select.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/filters/unrotate_winds.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/filters.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/introduction.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/operations.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/accumulations1.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/accumulations2.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/forcings.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/hindcasts.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/mars1.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/mars2.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/netcdf.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/opendap.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/sources.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/statistics.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/syntax.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/syntax.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/Makefile +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/building1.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/building2.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/building3.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/input.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/building/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/cli/create.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/cli/inspect.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/cli/introduction.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/conf.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/images.pptx +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/index.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/installing.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/overview.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/overview_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/requirements.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/schemas/matrix.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/schemas/overview.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/schemas/recipe.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/test.ipynb +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/area1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/area2_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/chain_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/combine_example.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/concat1.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/cutout_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/drop_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/end_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/ensembles1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/frequency_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/grids1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/join1.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/matching0_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/matching1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/matching2_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/matching3_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/matching4_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/misc1.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/misc2.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/missing_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_cloud.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_combine1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_combine2_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_complex.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_dict_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_first_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_list_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_name.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_other.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_path.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/open_yaml_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/rename_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/reorder1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/reorder2_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/select1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/select2_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/shuffle_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/some_attributes_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/start_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/statistics_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/subset_example.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/thinning_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/zip1_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/code/zip2_.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/combining.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/configuration.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/configuration.toml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/grids.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/area-1.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/concat.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/cutout-1.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/cutout-2.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/cutout-3.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/cutout-4.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/join.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/overlay.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/thinning-after.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/images/thinning-before.png +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/introduction.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/matching.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/methods.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/opening.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/other.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/selecting.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/statistics.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/docs/using/subsetting.rst +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/setup.cfg +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/commands/create.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/commands/inspect.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/compute/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/check.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/chunks.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/config.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/accumulations.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/grib.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/hindcasts.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/mars.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/functions/sources/tendencies.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/input.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/patch.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/persistent.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/size.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/statistics/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/template.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/utils.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/create/zarr.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/concat.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/debug.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/ensemble.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/grids.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/indexing.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/join.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/select.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/subset.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/data/unchecked.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/dates/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/dates/groups.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/grids.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi/datasets/utils/__init__.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi_datasets.egg-info/SOURCES.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/data_sources.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create/test_create.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/test_chunks.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/test_data.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/test_dates.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tools/.gitignore +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.3.5 → anemoi_datasets-0.3.7}/tools/grids/grids2.yaml +0 -0
|
@@ -37,7 +37,8 @@ repos:
|
|
|
37
37
|
rev: v0.4.6
|
|
38
38
|
hooks:
|
|
39
39
|
- id: ruff
|
|
40
|
-
|
|
40
|
+
# Next line if for documenation cod snippets
|
|
41
|
+
exclude: '^(dev/.*|[A-Za-z].*_)\.py$'
|
|
41
42
|
args:
|
|
42
43
|
- --line-length=120
|
|
43
44
|
- --fix
|
|
@@ -59,10 +60,10 @@ repos:
|
|
|
59
60
|
- id: docconvert
|
|
60
61
|
args: ["numpy"]
|
|
61
62
|
- repo: https://github.com/b8raoult/optional-dependencies-all
|
|
62
|
-
rev: "0.0.
|
|
63
|
+
rev: "0.0.6"
|
|
63
64
|
hooks:
|
|
64
65
|
- id: optional-dependencies-all
|
|
65
|
-
args: ["--inplace", "--
|
|
66
|
+
args: ["--inplace", "--exclude-keys=dev,docs,tests", "--group=dev=all,docs,tests"]
|
|
66
67
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
67
68
|
rev: "2.1.3"
|
|
68
69
|
hooks:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.7
|
|
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,28 +223,21 @@ 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.4
|
|
227
227
|
Requires-Dist: numpy
|
|
228
228
|
Requires-Dist: pyyaml
|
|
229
229
|
Requires-Dist: semantic-version
|
|
230
230
|
Requires-Dist: tqdm
|
|
231
231
|
Requires-Dist: zarr<=2.17
|
|
232
232
|
Provides-Extra: all
|
|
233
|
-
Requires-Dist: anemoi-utils[provenance]>=0.3; extra == "all"
|
|
234
233
|
Requires-Dist: boto3; extra == "all"
|
|
235
234
|
Requires-Dist: climetlab>=0.23.2; extra == "all"
|
|
236
235
|
Requires-Dist: earthkit-meteo; extra == "all"
|
|
237
236
|
Requires-Dist: ecmwflibs>=0.6.3; extra == "all"
|
|
238
237
|
Requires-Dist: entrypoints; extra == "all"
|
|
239
|
-
Requires-Dist: numpy; extra == "all"
|
|
240
238
|
Requires-Dist: pyproj; extra == "all"
|
|
241
|
-
Requires-Dist: pytest; extra == "all"
|
|
242
|
-
Requires-Dist: pyyaml; extra == "all"
|
|
243
239
|
Requires-Dist: requests; extra == "all"
|
|
244
240
|
Requires-Dist: s3fs; extra == "all"
|
|
245
|
-
Requires-Dist: semantic-version; extra == "all"
|
|
246
|
-
Requires-Dist: tqdm; extra == "all"
|
|
247
|
-
Requires-Dist: zarr<=2.17; extra == "all"
|
|
248
241
|
Provides-Extra: create
|
|
249
242
|
Requires-Dist: climetlab>=0.23.2; extra == "create"
|
|
250
243
|
Requires-Dist: earthkit-meteo; extra == "create"
|
|
@@ -253,11 +246,14 @@ Requires-Dist: entrypoints; extra == "create"
|
|
|
253
246
|
Requires-Dist: pyproj; extra == "create"
|
|
254
247
|
Provides-Extra: dev
|
|
255
248
|
Requires-Dist: boto3; extra == "dev"
|
|
249
|
+
Requires-Dist: climetlab>=0.23.2; extra == "dev"
|
|
256
250
|
Requires-Dist: earthkit-meteo; extra == "dev"
|
|
257
251
|
Requires-Dist: ecmwflibs>=0.6.3; extra == "dev"
|
|
252
|
+
Requires-Dist: entrypoints; extra == "dev"
|
|
258
253
|
Requires-Dist: nbsphinx; extra == "dev"
|
|
259
254
|
Requires-Dist: pandoc; extra == "dev"
|
|
260
255
|
Requires-Dist: pyproj; extra == "dev"
|
|
256
|
+
Requires-Dist: pytest; extra == "dev"
|
|
261
257
|
Requires-Dist: requests; extra == "dev"
|
|
262
258
|
Requires-Dist: s3fs; extra == "dev"
|
|
263
259
|
Requires-Dist: sphinx; extra == "dev"
|
|
@@ -273,5 +269,5 @@ Provides-Extra: remote
|
|
|
273
269
|
Requires-Dist: boto3; extra == "remote"
|
|
274
270
|
Requires-Dist: requests; extra == "remote"
|
|
275
271
|
Requires-Dist: s3fs; extra == "remote"
|
|
276
|
-
Provides-Extra:
|
|
277
|
-
Requires-Dist: pytest; extra == "
|
|
272
|
+
Provides-Extra: tests
|
|
273
|
+
Requires-Dist: pytest; extra == "tests"
|
|
@@ -50,7 +50,7 @@ dynamic = [
|
|
|
50
50
|
"version",
|
|
51
51
|
]
|
|
52
52
|
dependencies = [
|
|
53
|
-
"anemoi-utils[provenance]>=0.3",
|
|
53
|
+
"anemoi-utils[provenance]>=0.3.4",
|
|
54
54
|
"numpy",
|
|
55
55
|
"pyyaml",
|
|
56
56
|
"semantic-version",
|
|
@@ -59,24 +59,17 @@ dependencies = [
|
|
|
59
59
|
]
|
|
60
60
|
|
|
61
61
|
optional-dependencies.all = [
|
|
62
|
-
"anemoi-utils[provenance]>=0.3",
|
|
63
62
|
"boto3",
|
|
64
63
|
"climetlab>=0.23.2",
|
|
65
64
|
"earthkit-meteo",
|
|
66
65
|
"ecmwflibs>=0.6.3",
|
|
67
66
|
"entrypoints",
|
|
68
|
-
"numpy",
|
|
69
67
|
"pyproj",
|
|
70
|
-
"pytest",
|
|
71
|
-
"pyyaml",
|
|
72
68
|
"requests",
|
|
73
69
|
"s3fs",
|
|
74
|
-
"semantic-version",
|
|
75
|
-
"tqdm",
|
|
76
|
-
"zarr<=2.17",
|
|
77
70
|
]
|
|
78
71
|
optional-dependencies.create = [
|
|
79
|
-
"climetlab>=0.23.2",
|
|
72
|
+
"climetlab>=0.23.2",
|
|
80
73
|
"earthkit-meteo",
|
|
81
74
|
"ecmwflibs>=0.6.3",
|
|
82
75
|
"entrypoints",
|
|
@@ -85,12 +78,14 @@ optional-dependencies.create = [
|
|
|
85
78
|
|
|
86
79
|
optional-dependencies.dev = [
|
|
87
80
|
"boto3",
|
|
88
|
-
|
|
81
|
+
"climetlab>=0.23.2",
|
|
89
82
|
"earthkit-meteo",
|
|
90
83
|
"ecmwflibs>=0.6.3",
|
|
84
|
+
"entrypoints",
|
|
91
85
|
"nbsphinx",
|
|
92
86
|
"pandoc",
|
|
93
87
|
"pyproj",
|
|
88
|
+
"pytest",
|
|
94
89
|
"requests",
|
|
95
90
|
"s3fs",
|
|
96
91
|
"sphinx",
|
|
@@ -109,7 +104,7 @@ optional-dependencies.remote = [
|
|
|
109
104
|
"requests",
|
|
110
105
|
"s3fs",
|
|
111
106
|
]
|
|
112
|
-
optional-dependencies.
|
|
107
|
+
optional-dependencies.tests = [
|
|
113
108
|
"pytest",
|
|
114
109
|
]
|
|
115
110
|
urls.Documentation = "https://anemoi-datasets.readthedocs.io/"
|
|
@@ -9,6 +9,7 @@ from ._version import __version__
|
|
|
9
9
|
from .data import MissingDateError
|
|
10
10
|
from .data import add_dataset_path
|
|
11
11
|
from .data import add_named_dataset
|
|
12
|
+
from .data import list_dataset_names
|
|
12
13
|
from .data import open_dataset
|
|
13
14
|
|
|
14
15
|
__all__ = [
|
|
@@ -16,4 +17,5 @@ __all__ = [
|
|
|
16
17
|
"MissingDateError",
|
|
17
18
|
"add_dataset_path",
|
|
18
19
|
"add_named_dataset",
|
|
20
|
+
"list_dataset_names",
|
|
19
21
|
]
|
|
@@ -14,6 +14,8 @@ from . import Command
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class Compare(Command):
|
|
17
|
+
"""Compare two datasets. This command compares the variables in two datasets and prints the mean of the common variables. It does not compare the data itself (yet)."""
|
|
18
|
+
|
|
17
19
|
def add_arguments(self, command_parser):
|
|
18
20
|
command_parser.add_argument("dataset1")
|
|
19
21
|
command_parser.add_argument("dataset2")
|
|
@@ -12,6 +12,8 @@ from concurrent.futures import ThreadPoolExecutor
|
|
|
12
12
|
from concurrent.futures import as_completed
|
|
13
13
|
|
|
14
14
|
import tqdm
|
|
15
|
+
from anemoi.utils.s3 import download
|
|
16
|
+
from anemoi.utils.s3 import upload
|
|
15
17
|
|
|
16
18
|
from . import Command
|
|
17
19
|
|
|
@@ -22,26 +24,48 @@ try:
|
|
|
22
24
|
except AttributeError:
|
|
23
25
|
isatty = False
|
|
24
26
|
|
|
25
|
-
"""
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
class S3Downloader:
|
|
29
|
+
def __init__(self, source, target, transfers, overwrite, resume, progress, **kwargs):
|
|
30
|
+
self.source = source
|
|
31
|
+
self.target = target
|
|
32
|
+
self.transfers = transfers
|
|
33
|
+
self.overwrite = overwrite
|
|
34
|
+
self.resume = resume
|
|
35
|
+
self.progress = progress
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
def run(self):
|
|
38
|
+
download(
|
|
39
|
+
self.source + "/" if not self.source.endswith("/") else self.source,
|
|
40
|
+
self.target,
|
|
41
|
+
overwrite=self.overwrite,
|
|
42
|
+
ignore_existing=self.resume,
|
|
43
|
+
threads=self.transfers,
|
|
44
|
+
show_progress=self.progress,
|
|
45
|
+
)
|
|
33
46
|
|
|
34
|
-
Then:
|
|
35
47
|
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
class S3Uploader:
|
|
49
|
+
def __init__(self, source, target, transfers, overwrite, resume, progress, **kwargs):
|
|
50
|
+
self.source = source
|
|
51
|
+
self.target = target
|
|
52
|
+
self.transfers = transfers
|
|
53
|
+
self.overwrite = overwrite
|
|
54
|
+
self.resume = resume
|
|
55
|
+
self.progress = progress
|
|
38
56
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
def run(self):
|
|
58
|
+
upload(
|
|
59
|
+
self.source,
|
|
60
|
+
self.target,
|
|
61
|
+
overwrite=self.overwrite,
|
|
62
|
+
ignore_existing=self.resume,
|
|
63
|
+
threads=self.transfers,
|
|
64
|
+
show_progress=self.progress,
|
|
65
|
+
)
|
|
42
66
|
|
|
43
67
|
|
|
44
|
-
class
|
|
68
|
+
class DefaultCopier:
|
|
45
69
|
def __init__(self, source, target, transfers, block_size, overwrite, resume, progress, nested, rechunk, **kwargs):
|
|
46
70
|
self.source = source
|
|
47
71
|
self.target = target
|
|
@@ -295,7 +319,29 @@ class CopyMixin:
|
|
|
295
319
|
command_parser.add_argument("target", help="Target location.")
|
|
296
320
|
|
|
297
321
|
def run(self, args):
|
|
298
|
-
|
|
322
|
+
if args.source == args.target:
|
|
323
|
+
raise ValueError("Source and target are the same.")
|
|
324
|
+
|
|
325
|
+
kwargs = vars(args)
|
|
326
|
+
|
|
327
|
+
if args.overwrite and args.resume:
|
|
328
|
+
raise ValueError("Cannot use --overwrite and --resume together.")
|
|
329
|
+
|
|
330
|
+
source_in_s3 = args.source.startswith("s3://")
|
|
331
|
+
target_in_s3 = args.target.startswith("s3://")
|
|
332
|
+
|
|
333
|
+
copier = None
|
|
334
|
+
|
|
335
|
+
if args.rechunk or (source_in_s3 and target_in_s3):
|
|
336
|
+
copier = DefaultCopier(**kwargs)
|
|
337
|
+
else:
|
|
338
|
+
if source_in_s3:
|
|
339
|
+
copier = S3Downloader(**kwargs)
|
|
340
|
+
|
|
341
|
+
if target_in_s3:
|
|
342
|
+
copier = S3Uploader(**kwargs)
|
|
343
|
+
|
|
344
|
+
copier.run()
|
|
299
345
|
|
|
300
346
|
|
|
301
347
|
class Copy(CopyMixin, Command):
|
|
@@ -29,7 +29,7 @@ CLIP_VARIABLES = (
|
|
|
29
29
|
"swl1",
|
|
30
30
|
)
|
|
31
31
|
|
|
32
|
-
SKIP = ("class", "stream", "type", "number", "expver", "_leg_number", "anoffset")
|
|
32
|
+
SKIP = ("class", "stream", "type", "number", "expver", "_leg_number", "anoffset", "time", "date", "step")
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
def check_compatible(f1, f2, centre_field_as_mars, ensemble_field_as_mars):
|
|
@@ -13,6 +13,14 @@ from climetlab.indexing.fieldset import FieldArray
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class RenamedFieldMapping:
|
|
16
|
+
"""Rename a field based on the value of another field.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
field (Field): The field to be renamed.
|
|
20
|
+
what (str): The name of the field that will be used to rename the field.
|
|
21
|
+
renaming (dict): A dictionary mapping the values of 'what' to the new names.
|
|
22
|
+
"""
|
|
23
|
+
|
|
16
24
|
def __init__(self, field, what, renaming):
|
|
17
25
|
self.field = field
|
|
18
26
|
self.what = what
|
|
@@ -29,6 +37,12 @@ class RenamedFieldMapping:
|
|
|
29
37
|
|
|
30
38
|
|
|
31
39
|
class RenamedFieldFormat:
|
|
40
|
+
"""Rename a field based on a format string.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
format (str): A string that defines the new name of the field.
|
|
44
|
+
"""
|
|
45
|
+
|
|
32
46
|
def __init__(self, field, format):
|
|
33
47
|
self.field = field
|
|
34
48
|
self.format = format
|
|
@@ -177,11 +177,14 @@ class InitialiserLoader(Loader):
|
|
|
177
177
|
return
|
|
178
178
|
if isinstance(obj, (dict, DictObj)):
|
|
179
179
|
if "grid" in obj:
|
|
180
|
+
previous = obj["grid"]
|
|
180
181
|
obj["grid"] = "20./20."
|
|
181
|
-
LOG.warn(f"Running in test mode. Setting grid to {obj['grid']}")
|
|
182
|
+
LOG.warn(f"Running in test mode. Setting grid to {obj['grid']} instead of {previous}")
|
|
182
183
|
if "number" in obj:
|
|
183
|
-
obj["number"]
|
|
184
|
-
|
|
184
|
+
if isinstance(obj["number"], (list, tuple)):
|
|
185
|
+
previous = obj["number"]
|
|
186
|
+
obj["number"] = previous[0:3]
|
|
187
|
+
LOG.warn(f"Running in test mode. Setting number to {obj['number']} instead of {previous}")
|
|
185
188
|
for k, v in obj.items():
|
|
186
189
|
set_to_test_mode(v)
|
|
187
190
|
|
|
@@ -30,3 +30,10 @@ def open_dataset(*args, **kwargs):
|
|
|
30
30
|
ds.arguments = {"args": args, "kwargs": kwargs}
|
|
31
31
|
ds._check()
|
|
32
32
|
return ds
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def list_dataset_names(*args, **kwargs):
|
|
36
|
+
ds = _open_dataset(*args, **kwargs)
|
|
37
|
+
names = set()
|
|
38
|
+
ds.get_dataset_names(names)
|
|
39
|
+
return sorted(names)
|
|
@@ -103,6 +103,9 @@ class Forwards(Dataset):
|
|
|
103
103
|
f"subclass_metadata_specific() must be implemented in derived class {self.__class__.__name__}"
|
|
104
104
|
)
|
|
105
105
|
|
|
106
|
+
def get_dataset_names(self, names):
|
|
107
|
+
self.forward.get_dataset_names(names)
|
|
108
|
+
|
|
106
109
|
|
|
107
110
|
class Combined(Forwards):
|
|
108
111
|
def __init__(self, datasets):
|
|
@@ -193,6 +196,10 @@ class Combined(Forwards):
|
|
|
193
196
|
offset += len(d)
|
|
194
197
|
return result
|
|
195
198
|
|
|
199
|
+
def get_dataset_names(self, names):
|
|
200
|
+
for d in self.datasets:
|
|
201
|
+
d.get_dataset_names(names)
|
|
202
|
+
|
|
196
203
|
|
|
197
204
|
class GivenAxis(Combined):
|
|
198
205
|
"""Given a given axis, combine the datasets along that axis."""
|
|
@@ -70,8 +70,12 @@ class Thinning(Masked):
|
|
|
70
70
|
self.thinning = thinning
|
|
71
71
|
self.method = method
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
shape = forward.field_shape
|
|
74
|
+
if len(shape) != 2:
|
|
75
|
+
raise ValueError("Thinning only works latitude/longitude fields")
|
|
76
|
+
|
|
77
|
+
latitudes = forward.latitudes.reshape(shape)
|
|
78
|
+
longitudes = forward.longitudes.reshape(shape)
|
|
75
79
|
latitudes = latitudes[::thinning, ::thinning].flatten()
|
|
76
80
|
longitudes = longitudes[::thinning, ::thinning].flatten()
|
|
77
81
|
|
|
@@ -133,9 +133,9 @@ def _as_date(d, dates, last):
|
|
|
133
133
|
|
|
134
134
|
if "-" in d and ":" in d:
|
|
135
135
|
date, time = d.replace(" ", "T").split("T")
|
|
136
|
-
year, month, day = date.split("-")
|
|
137
|
-
hour, minute, second = time.split(":")
|
|
138
|
-
return np.datetime64(f"{year:04}-{month:02}-{day:02}T{hour}:{minute}:{second}")
|
|
136
|
+
year, month, day = [int(_) for _ in date.split("-")]
|
|
137
|
+
hour, minute, second = [int(_) for _ in time.split(":")]
|
|
138
|
+
return np.datetime64(f"{year:04}-{month:02}-{day:02}T{hour:02}:{minute:02}:{second:02}")
|
|
139
139
|
|
|
140
140
|
if "-" in d:
|
|
141
141
|
assert ":" not in d
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
# nor does it submit to any jurisdiction.
|
|
7
7
|
|
|
8
8
|
import logging
|
|
9
|
+
import os
|
|
9
10
|
import warnings
|
|
10
11
|
from functools import cached_property
|
|
11
12
|
|
|
@@ -235,7 +236,11 @@ class Zarr(Dataset):
|
|
|
235
236
|
|
|
236
237
|
@property
|
|
237
238
|
def field_shape(self):
|
|
238
|
-
|
|
239
|
+
try:
|
|
240
|
+
return tuple(self.z.attrs["field_shape"])
|
|
241
|
+
except KeyError:
|
|
242
|
+
LOG.warning("No 'field_shape' in %r, assuming 1D fields", self)
|
|
243
|
+
return (self.shape[-1],)
|
|
239
244
|
|
|
240
245
|
@property
|
|
241
246
|
def frequency(self):
|
|
@@ -288,6 +293,10 @@ class Zarr(Dataset):
|
|
|
288
293
|
def tree(self):
|
|
289
294
|
return Node(self, [], path=self.path)
|
|
290
295
|
|
|
296
|
+
def get_dataset_names(self, names):
|
|
297
|
+
name, _ = os.path.splitext(os.path.basename(self.path))
|
|
298
|
+
names.add(name)
|
|
299
|
+
|
|
291
300
|
|
|
292
301
|
class ZarrWithMissingDates(Zarr):
|
|
293
302
|
def __init__(self, path):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.7
|
|
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,28 +223,21 @@ 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.4
|
|
227
227
|
Requires-Dist: numpy
|
|
228
228
|
Requires-Dist: pyyaml
|
|
229
229
|
Requires-Dist: semantic-version
|
|
230
230
|
Requires-Dist: tqdm
|
|
231
231
|
Requires-Dist: zarr<=2.17
|
|
232
232
|
Provides-Extra: all
|
|
233
|
-
Requires-Dist: anemoi-utils[provenance]>=0.3; extra == "all"
|
|
234
233
|
Requires-Dist: boto3; extra == "all"
|
|
235
234
|
Requires-Dist: climetlab>=0.23.2; extra == "all"
|
|
236
235
|
Requires-Dist: earthkit-meteo; extra == "all"
|
|
237
236
|
Requires-Dist: ecmwflibs>=0.6.3; extra == "all"
|
|
238
237
|
Requires-Dist: entrypoints; extra == "all"
|
|
239
|
-
Requires-Dist: numpy; extra == "all"
|
|
240
238
|
Requires-Dist: pyproj; extra == "all"
|
|
241
|
-
Requires-Dist: pytest; extra == "all"
|
|
242
|
-
Requires-Dist: pyyaml; extra == "all"
|
|
243
239
|
Requires-Dist: requests; extra == "all"
|
|
244
240
|
Requires-Dist: s3fs; extra == "all"
|
|
245
|
-
Requires-Dist: semantic-version; extra == "all"
|
|
246
|
-
Requires-Dist: tqdm; extra == "all"
|
|
247
|
-
Requires-Dist: zarr<=2.17; extra == "all"
|
|
248
241
|
Provides-Extra: create
|
|
249
242
|
Requires-Dist: climetlab>=0.23.2; extra == "create"
|
|
250
243
|
Requires-Dist: earthkit-meteo; extra == "create"
|
|
@@ -253,11 +246,14 @@ Requires-Dist: entrypoints; extra == "create"
|
|
|
253
246
|
Requires-Dist: pyproj; extra == "create"
|
|
254
247
|
Provides-Extra: dev
|
|
255
248
|
Requires-Dist: boto3; extra == "dev"
|
|
249
|
+
Requires-Dist: climetlab>=0.23.2; extra == "dev"
|
|
256
250
|
Requires-Dist: earthkit-meteo; extra == "dev"
|
|
257
251
|
Requires-Dist: ecmwflibs>=0.6.3; extra == "dev"
|
|
252
|
+
Requires-Dist: entrypoints; extra == "dev"
|
|
258
253
|
Requires-Dist: nbsphinx; extra == "dev"
|
|
259
254
|
Requires-Dist: pandoc; extra == "dev"
|
|
260
255
|
Requires-Dist: pyproj; extra == "dev"
|
|
256
|
+
Requires-Dist: pytest; extra == "dev"
|
|
261
257
|
Requires-Dist: requests; extra == "dev"
|
|
262
258
|
Requires-Dist: s3fs; extra == "dev"
|
|
263
259
|
Requires-Dist: sphinx; extra == "dev"
|
|
@@ -273,5 +269,5 @@ Provides-Extra: remote
|
|
|
273
269
|
Requires-Dist: boto3; extra == "remote"
|
|
274
270
|
Requires-Dist: requests; extra == "remote"
|
|
275
271
|
Requires-Dist: s3fs; extra == "remote"
|
|
276
|
-
Provides-Extra:
|
|
277
|
-
Requires-Dist: pytest; extra == "
|
|
272
|
+
Provides-Extra: tests
|
|
273
|
+
Requires-Dist: pytest; extra == "tests"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
anemoi-utils[provenance]>=0.3
|
|
1
|
+
anemoi-utils[provenance]>=0.3.4
|
|
2
2
|
numpy
|
|
3
3
|
pyyaml
|
|
4
4
|
semantic-version
|
|
@@ -6,21 +6,14 @@ tqdm
|
|
|
6
6
|
zarr<=2.17
|
|
7
7
|
|
|
8
8
|
[all]
|
|
9
|
-
anemoi-utils[provenance]>=0.3
|
|
10
9
|
boto3
|
|
11
10
|
climetlab>=0.23.2
|
|
12
11
|
earthkit-meteo
|
|
13
12
|
ecmwflibs>=0.6.3
|
|
14
13
|
entrypoints
|
|
15
|
-
numpy
|
|
16
14
|
pyproj
|
|
17
|
-
pytest
|
|
18
|
-
pyyaml
|
|
19
15
|
requests
|
|
20
16
|
s3fs
|
|
21
|
-
semantic-version
|
|
22
|
-
tqdm
|
|
23
|
-
zarr<=2.17
|
|
24
17
|
|
|
25
18
|
[create]
|
|
26
19
|
climetlab>=0.23.2
|
|
@@ -31,11 +24,14 @@ pyproj
|
|
|
31
24
|
|
|
32
25
|
[dev]
|
|
33
26
|
boto3
|
|
27
|
+
climetlab>=0.23.2
|
|
34
28
|
earthkit-meteo
|
|
35
29
|
ecmwflibs>=0.6.3
|
|
30
|
+
entrypoints
|
|
36
31
|
nbsphinx
|
|
37
32
|
pandoc
|
|
38
33
|
pyproj
|
|
34
|
+
pytest
|
|
39
35
|
requests
|
|
40
36
|
s3fs
|
|
41
37
|
sphinx
|
|
@@ -54,5 +50,5 @@ boto3
|
|
|
54
50
|
requests
|
|
55
51
|
s3fs
|
|
56
52
|
|
|
57
|
-
[
|
|
53
|
+
[tests]
|
|
58
54
|
pytest
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|