diff --git a/config/preprocess_netcdf.toml b/config/preprocess_netcdf.toml new file mode 100644 index 0000000..58216ce --- /dev/null +++ b/config/preprocess_netcdf.toml @@ -0,0 +1,4 @@ +[CropFiles] +input_dir = "ims_1km" +output_dir = "ims_netcdf_1km_cropped_4_000_000km_window" +window_size = 4000 diff --git a/icedyno/preprocess/crop.py b/icedyno/preprocess/crop.py new file mode 100644 index 0000000..0a5ea5f --- /dev/null +++ b/icedyno/preprocess/crop.py @@ -0,0 +1,80 @@ +""" +To run this as a Luigi DAG locally: +``pixi run python icedyno/preprocess/crop.py`` + +You may have to enable toml support with luigi by setting an variable in your terminal, like ``export LUIGI_CONFIG_PARSER=toml`` +""" +import glob +import os +import pathlib + +import luigi +import xarray as xr + + +class CropFiles(luigi.Task): + """ + Crop IMS and MASIE NetCDF files from the center of their grids (where x, y == 1/2*sie.shape) based on input window_size. + + """ + + input_dir = luigi.Parameter() + output_dir = luigi.Parameter() + + window_size = luigi.IntParameter(default=4000) + year = luigi.IntParameter() + + def output(self) -> luigi.LocalTarget: + return luigi.LocalTarget( + os.path.join("data", self.output_dir, f"_SUCCESS_{self.year}") + ) + + def run(self) -> None: + year_output_dir = os.path.join("data", self.output_dir, str(self.year)) + if not os.path.exists(year_output_dir): + os.makedirs(year_output_dir) + + input_cdf_files = glob.glob( + os.path.join("data", self.input_dir, str(self.year), "*.nc") + ) + + for cdf_filepath in input_cdf_files: + output_filename = ( + os.path.join(year_output_dir, pathlib.Path(cdf_filepath).stem) + + f"_grid{self.window_size}.nc" + ) + if os.path.exists(output_filename): + print(cdf_filepath, "already on disk, skipping...") + + # Open the original NetCDF file + ds = xr.open_dataset(cdf_filepath, engine="h5netcdf") + + x_coord = ds["x"].shape[0] // 2 + y_coord = ds["y"].shape[0] // 2 + window = self.window_size * 1000 + + cropped_ds = ds.sel( + x=slice(x_coord - window, x_coord + window), + y=slice(y_coord - window, y_coord + window), + ) + + # Write the cropped data to a new NetCDF file + cropped_ds.to_netcdf(output_filename, engine="h5netcdf") + + +if __name__ == "__main__": + os.environ["LUIGI_CONFIG_PARSER"] = "toml" + + config_path = os.path.join("config", "preprocess_netcdf.toml") + + config = luigi.configuration.get_config(parser="toml") + config.read(config_path) + + luigi.configuration.add_config_path(config_path) + + ## Change acording to your number of cores + n_workers = 10 + years = range(2014, 2025) + + tasks = [CropFiles(year=year) for year in years] + luigi.build(tasks, workers=n_workers, local_scheduler=True) diff --git a/pixi.lock b/pixi.lock index 2cd6f99..69d01ad 100644 --- a/pixi.lock +++ b/pixi.lock @@ -40,6 +40,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py312h8572e83_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py312h7900ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.1-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.6-py312h66d9856_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda @@ -139,6 +140,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.5-h232c23b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/luigi-3.5.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py312h98912ed_0.conda @@ -257,6 +259,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda @@ -285,6 +288,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lockfile-0.12.2-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2 @@ -316,7 +320,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 @@ -326,6 +330,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-daemon-3.0.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -409,6 +414,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda @@ -437,6 +443,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lockfile-0.12.2-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2 @@ -467,7 +474,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 @@ -477,6 +484,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-daemon-3.0.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -499,6 +507,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.20240106-pyhd8ed1ab_0.conda @@ -546,6 +555,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.3-py312h3f2338b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.2.0-py312hbf0bb39_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.1-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py312hb401068_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.1-h73e2aa4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.9.6-py312hc18349f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda @@ -617,6 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.10.1-hc158999_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.13-h8a1eda9_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-17.0.6-hb6ac08f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/luigi-3.5.0-py312hb401068_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-haf1e3a3_1000.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.5-py312h41838bb_0.conda @@ -714,6 +725,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda @@ -742,6 +754,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lockfile-0.12.2-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2 @@ -772,7 +785,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 @@ -782,6 +795,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-daemon-3.0.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -804,6 +818,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.20240106-pyhd8ed1ab_0.conda @@ -851,6 +866,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.3-py312hf635c46_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.2.0-py312h76e736e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.1-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py312h81bd7bf_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.1-hebf3989_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.6-py312hd158ed5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda @@ -922,6 +938,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.10.1-ha0bc3c6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.2.13-h53f4e23_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-17.0.6-hcd81f8e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/luigi-3.5.0-py312h81bd7bf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h642e427_1000.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.5-py312he37b823_0.conda @@ -1018,6 +1035,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda @@ -1076,7 +1094,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 @@ -1227,6 +1245,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.5-hc3477c8_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzip-1.10.1-h1d365fa_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.2.13-hcfcfb64_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/luigi-3.5.0-py312h2e8e312_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lzo-2.10-he774522_1000.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 @@ -3935,6 +3954,52 @@ packages: license_family: APACHE size: 274915 timestamp: 1702383349284 +- kind: conda + name: docutils + version: 0.20.1 + build: py312h7900ff3_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py312h7900ff3_3.conda + sha256: b9fb75d806afc53d9d7b98edb0c45ac38a3cc983916b8dac4ad7ddac5c18a024 + md5: 1b90835ae26b9b8250b302649359a989 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + size: 898253 + timestamp: 1701882735141 +- kind: conda + name: docutils + version: 0.20.1 + build: py312h81bd7bf_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py312h81bd7bf_3.conda + sha256: e1ad41c6401ab2ada143d6e1dbbe6ae8afbe3e651211bb414b9ae1f0f8c13249 + md5: 50ea9a1ab48349f343ca2ae82833bda4 + depends: + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + size: 901757 + timestamp: 1701883118423 +- kind: conda + name: docutils + version: 0.20.1 + build: py312hb401068_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py312hb401068_3.conda + sha256: 35b4dc2820e724be842f3987b9e9de57d9ab410d1f669d2a94ff997192281e70 + md5: 02a0e6021c5d5a3338775d0dfe3c4d6b + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + size: 900339 + timestamp: 1701883109471 - kind: conda name: entrypoints version: '0.4' @@ -5156,6 +5221,23 @@ packages: license_family: MIT size: 46754 timestamp: 1634280590080 +- kind: conda + name: h5netcdf + version: 1.3.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda + sha256: 0195b109e6b18d7efa06124d268fd5dd426f67e2feaee50a358211ba4a4b219b + md5: 6890388078d9a3a20ef793c5ffb169ed + depends: + - h5py + - packaging + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 42170 + timestamp: 1699412919171 - kind: conda name: h5py version: 3.10.0 @@ -10457,6 +10539,114 @@ packages: license_family: APACHE size: 274631 timestamp: 1701222947083 +- kind: conda + name: lockfile + version: 0.12.2 + build: py_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/lockfile-0.12.2-py_1.tar.bz2 + sha256: d3a68045ef74a2a7b8c8a55b242fdbc875d362e37adcf793613cf0d8c8e4fbf7 + md5: c104d98e09c47519950cffb8dd5b4f10 + depends: + - python + license: MIT + license_family: MIT + size: 10856 + timestamp: 1531372274693 +- kind: conda + name: luigi + version: 3.5.0 + build: py312h2e8e312_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/luigi-3.5.0-py312h2e8e312_0.conda + sha256: ef58be732d7aaf5cd57e4f23d99f43a77967c8e8966bdc9549f3d3906841c0f5 + md5: 9f658de27da5c64db9c7670c9f80beb6 + depends: + - jsonschema + - prometheus_client >=0.5.0,<0.15 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.7.5,<3 + - python_abi 3.12.* *_cp312 + - setuptools + - tenacity >=8,<9 + - toml <2.0.0 + - tornado >=5.0,<7 + license: Apache-2.0 + license_family: Apache + size: 1317712 + timestamp: 1705340569066 +- kind: conda + name: luigi + version: 3.5.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/luigi-3.5.0-py312h7900ff3_0.conda + sha256: 6ee26282116f16035d674502b28124810444e74cffee240c173269cba3fc6ac2 + md5: 58cd3cea6fbceebe970da7f050689b86 + depends: + - jsonschema + - prometheus_client >=0.5.0,<0.15 + - python >=3.12,<3.13.0a0 + - python-daemon + - python-dateutil >=2.7.5,<3 + - python_abi 3.12.* *_cp312 + - setuptools + - tenacity >=8,<9 + - toml <2.0.0 + - tornado >=5.0,<7 + license: Apache-2.0 + license_family: Apache + size: 1301655 + timestamp: 1705340017029 +- kind: conda + name: luigi + version: 3.5.0 + build: py312h81bd7bf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/luigi-3.5.0-py312h81bd7bf_0.conda + sha256: c962430b9fe81ce1ec8d19be2b2ccb58601d6a00fe77fb8d80a3560bd568a940 + md5: 08cf3dcd12261e802c890463ec229a1d + depends: + - jsonschema + - prometheus_client >=0.5.0,<0.15 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-daemon + - python-dateutil >=2.7.5,<3 + - python_abi 3.12.* *_cp312 + - setuptools + - tenacity >=8,<9 + - toml <2.0.0 + - tornado >=5.0,<7 + license: Apache-2.0 + license_family: Apache + size: 1305078 + timestamp: 1705340376949 +- kind: conda + name: luigi + version: 3.5.0 + build: py312hb401068_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/luigi-3.5.0-py312hb401068_0.conda + sha256: 4375efc5c5c9dd5b23a733e2df82e33e0b5030b5333c90e623911bcf77dd2a64 + md5: 29a91174a844f96ac5bbdf186ffed0e0 + depends: + - jsonschema + - prometheus_client >=0.5.0,<0.15 + - python >=3.12,<3.13.0a0 + - python-daemon + - python-dateutil >=2.7.5,<3 + - python_abi 3.12.* *_cp312 + - setuptools + - tenacity >=8,<9 + - toml <2.0.0 + - tornado >=5.0,<7 + license: Apache-2.0 + license_family: Apache + size: 1301543 + timestamp: 1705340364904 - kind: conda name: lz4-c version: 1.9.4 @@ -12670,19 +12860,19 @@ packages: timestamp: 1701485332654 - kind: conda name: prometheus_client - version: 0.20.0 + version: 0.14.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - sha256: 757cd91d01c2e0b64fadf6bc9a11f558cf7638d897dfbaf7415ddf324d5405c9 - md5: 9a19b94034dd3abb2b348c8b93388035 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.1-pyhd8ed1ab_0.tar.bz2 + sha256: 66d41fd720b39faad502ea4f67cf70c797ff4a4c5bc01fef536a0880e882713e + md5: b7fa7d86530b8de805268e48988eb483 depends: - - python >=3.8 + - python >=3.6 license: Apache-2.0 license_family: Apache - size: 48913 - timestamp: 1707932844383 + size: 50172 + timestamp: 1649447244565 - kind: conda name: prompt-toolkit version: 3.0.42 @@ -13345,6 +13535,25 @@ packages: license: Python-2.0 size: 13085901 timestamp: 1708117361381 +- kind: conda + name: python-daemon + version: 3.0.1 + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-daemon-3.0.1-pyhd8ed1ab_2.conda + sha256: 0918c11fab3c3d40739047dcabd107379dd44f0c839e1eb89eb59cc24c3357c2 + md5: ce98ed304e32a8075f7ff5e53c405046 + depends: + - docutils + - lockfile >=0.10 + - python >=3.0 + - setuptools >=62.4.0 + license: Apache-2.0 + license_family: APACHE + size: 33618 + timestamp: 1700732416187 - kind: conda name: python-dateutil version: 2.9.0 diff --git a/pixi.toml b/pixi.toml index 97510c4..a1a7d66 100644 --- a/pixi.toml +++ b/pixi.toml @@ -23,3 +23,5 @@ pandas = ">=2.2.1,<2.3" geopandas = ">=0.14.3,<0.15" plotly = ">=5.19.0,<5.20" seaborn = ">=0.13.2,<0.14" +h5netcdf = ">=1.3.0,<1.4" +luigi = ">=3.5.0,<3.6"