Skip to main content

Maintenance PyTest Coverage Status PyPI Conda Documentation DOI

smmregrid

A compact python regridder using sparse matrix multiplication

The regridder uses CDO as a backend for weights computation, and then uses efficiently sparse matrix multiplication with dask to provide xarray lazy output. It supports all grids supported by CDO.

Please note that this tool is not thought as "another interpolation tool", but rather a method to apply pre-computed weights within the python environment. The speedup against CDO is estimated to be about ~1.5 to ~5 times, slightly lower if then files are written to the disk. 2D and 3D data are supported on all the grids supported by CDO, and special treatment can be assigned to vertical coordinates with changing mask (e.g. ocean 3D datasets). It works smoothly on both xarray.Dataset and xarray.DataArray. Attributes are kept and target grids can be both file on disk or CDO-compliant grids (e.g. r180x90, F128, etc).

The tool works for python versions >=3.8 and requires CDO >= 2.6.2. It is safer to run it through conda/mamba.

Linux

The simplest way is to install smmregrid from conda-forge, which brings in all the binary dependencies (including CDO and eccodes):

mamba create -n smmregrid -c conda-forge smmregrid
mamba activate smmregrid

Or, installing from PyPI:

mamba create -n smmregrid "python>=3.8" cdo eccodes numba
mamba activate smmregrid
pip install smmregrid

Alternatively, you can clone the repo and use the environment file available

git clone https://github.com/jhardenberg/smmregrid.git
cd smmregrid
mamba env create -f environment.yml
mamba activate smmregrid

macOS

Recent CDO versions are not available from conda-forge for macOS, so CDO must be installed with Homebrew, while the python environment is still managed with conda/mamba:

brew install cdo
mamba create -n smmregrid -c conda-forge smmregrid

The conda-forge package of smmregrid does not include CDO on macOS. Similarly, if you install from PyPI:

brew install cdo
mamba create -n smmregrid "python>=3.8" eccodes numba
mamba activate smmregrid
pip install smmregrid

or, from the cloned repo, use the dedicated environment file (which does not include CDO):

brew install cdo
mamba env create -f environment-macos.yml
mamba activate smmregrid

Which CDO is used

smmregrid looks for the CDO executable in this order:

  1. the cdo argument of Regridder / CdoGenerate, if provided;
  2. the CDO environment variable (the same used by python-cdo);
  3. cdo in the PATH.

On macOS, make sure that no cdo from conda-forge is installed in your environment (e.g. pulled in by another package), since it would shadow the Homebrew one in the PATH. If you cannot avoid it, point smmregrid to the Homebrew CDO explicitly:

export CDO=$(brew --prefix)/bin/cdo

The CDO version is checked at runtime, and an error is raised if it is older than the minimum supported. You can check which version is used with python -c "import smmregrid; print(smmregrid.cdo_version())".

As a disclaimer, this repository represents a modification of the regridding routines developed in climtas by Scott Wales, which already implements efficiently this idea and has no other significant dependencies.

Cautionary notes:

  • It does not work correctly if the Xarray.Dataset includes fields with time-varying missing points
  • It works only with interpolation methods/grids supported by CDO
  • It does not support ESMF weigths.

Metadata

Release files for smmregrid 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for smmregrid 0.2.0
File Size Uploaded
smmregrid-0.2.0.tar.gz 39.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for smmregrid 0.2.0
File Interpreter ABI Platform
smmregrid-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 80.2 kB

Release files / smmregrid-0.2.0.tar.gz

Download URL smmregrid-0.2.0.tar.gz
Size 39.0 kB
Tags Source
SHA-256 checksum
How to use checksums
844e9de1a9559864ae8235e7932d447be5dcd49b4f0595a061348839eda2fa80
BLAKE2b-256 checksum
How to use checksums
40146335a950c43d522573a80dbcd873fa25188b22768f4699d5f5e4b6ba8de3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / smmregrid-0.2.0-py3-none-any.whl

Download URL smmregrid-0.2.0-py3-none-any.whl
Size 41.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc01a88e39995c8311a29b709280df707be2a8ab17c1e4a9a6b23bc6908528c8
BLAKE2b-256 checksum
How to use checksums
004c2d1799332898974d78991d93d6a15bada34b604944aa5a90244a2ff2cd7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page