What’s new
0.8.8 (2024-11-01)
Fix ESMpy memory issues by explictly freeing the Grid memory upon garbage collection of
Regridder
objects. By Pascal Bourgault.Address deprecation for xarray 2024.10 in the parallel weight generation. By Pascal Bourgault.
Address an upcoming change in sparse 0.16 where COO fill values will distinguish between 0.0 and -0.0. This issue would affect spatial averaging over polygons with holes. By Pascal Bourgault.
0.8.7 (2024-07-16)
Cast grid sizes to python’s int (another Numpy 2.0 fix). (PR/377) By Pascal Bourgault.
0.8.6 (2024-06-26)
New
xe.util.cell_area
utility to compute the cell area using ESMF’s internal mechanism. (PR/372, GH/369) By Jiawei Zhuang and Pascal Bourgault.Compatibility with Numpy 2.0 (NaN vs nan) (PR/373) By Pascal Bourgault.
0.8.5 (2024-04-11)
Reverted to the chunking behaviour of xESMF 0.7 for cases where the spatial dimensions are not chunked on the source data. (PR/348) By Pascal Bourgault.
0.8.4 (2024-02-26)
0.8.3 (2024-02-20)
Remove usage of private method of xarray that was removed in its 2024.02.0 version (GH/338, GH/340) By Pascal Bourgault.
Internal changes
Test against ESMF 8.6
0.8.2 (2023-09-18)
Bug fixes
Raise a meaningful error messages when the output grid has no chunks with parallel=True (GH/299, PR/304). By Pascal Bourgault.
Correct guess of output chunks for
SpatialAverager
.
0.8.1 (2023-09-05)
Bug fixes
Change import to support shapely 1 and 2.
0.8.0 (2023-09-01)
This release of xESMF improves support for parallelization with dask: weights can now be computed in parallel, and those weights can be applied over chunks spanning the horizontal grid dimensions. Previously, computing weights in parallel was only possible using MPI, and datasets could only be chunked over non-spatial dimensions.
These new features are the outcome of Charles Gauthier’s internship at Ouranos during the summer of 2023. Thanks to Charles for his hard work and sharp analysis, which led to a permanent position at Ouranos!
New features
Added a check in SpatialAverager that warns user if they are using polygons with long segments that could cause errors (PR/293). By Charles Gauthier
Add an option (
parallel
) to generate regridding weights in parallel using dask (PR/290). By Charles GauthierAdd the ability to apply weights using dask on chunked horizontal/core dimensions. The
output_chunks
argument to the Regridder class allows setting the chunk sizes of the output data (PR/280). By Charles GauthierAdded a w property to the Regridder and SpatialAverager classes, returning the weights reshaped according to the input and output grid dimensions. This is mostly intended for debugging and visualisation purposes (PR/276). By David Huard
Documentation
Move URLs from earthsystemcog.org to earthsystemmodeling.org (PR/292).
Internal changes
Remove Python 3.7 from the project classifiers
Build docs using Python 3.9
0.7.1 (2023-04-03)
Bug fixes
Fix
Mesh.from_polygons
and unpin Shapely to add support for Shapely 2.0 (PR/219). By Pascal BourgaultImplement workaround for setup conda problem (PR/229). By Raphael Dussin
Update CI and doc - fix for DataArrays (PR/230). By Pascal Bourgault
Fix ci/cd badge for build status (PR/231). By Pierre Manchon
Update CI for Micromamba environments (PR/233). By Trevor James Smith
Fix error in test with Shapely 2.0 (PR/251). By David Huard
New features
Add util to build tripolar grid (PR/228). By Raphael Dussin
Documentation
Document installation options for ESMpy (PR/241). By Matthew Plough
Internal changes
Modernize the package configuration / publish to PyPI (PR/248). By Filipe Fernandes
0.7.0 (2022-12-16)
Bug fixes
Fix bug in util.grid_global where grid centers could go beyond 180 degrees (GH/181). By David Huard
New features
Support both [-180, 180] and [0, 360] conventions in grid_global (GH/149). By David Huard
Documentation
Fix API doc build (PR/194). By David Huard
Include conservative_normed into the notebook comparing regridding algorithms. By David Huard
Fix typos (PR/191). By Jemma Stachelek
Copy-editing (PR/178, PR/179). By RichardScottOZ
Internal changes
0.6.3 (29-06-2022)
Bug fixes
Spatial coordinates of ds_out are kept within the regridder and transferred to the regridded DataArray or Dataset (PR/175). By Pascal Bourgault
Added numba as an explicit dependency to fix installation with conda (PR/168). By Pascal Bourgault
Internal changes
Use cf-xarray to guess missing CF coordinates before extracting bounds (PR/147). By Pascal Bourgault
0.6.2 (23-11-2021)
Bug fixes
The introduction of sparse, with numba under the hood, restricted input data to little-endian dtypes. For big-endian dtypes, xESMF will convert to little-endian, regrid and convert back (PR/135). By Pascal Bourgault
SpatialAverager
did not compute the same weights asRegridder
when source cell areas were not uniform (PR/128). By David HuardRefactor of how the regridding is called internally, to fix a bug with dask and sparse (PR/135). By Pascal Bourgault
Internal changes
Deprecation of
regrid_numpy
andregrid_dask
is scheduled for 0.7.0. All checks on shape, array layout and numba support are now done at call time, rather then at computation time (PR/135).
0.6.1 (23-09-2021)
Note that this version creates very large dask task graphs that can affect performance for large grids.
Internal changes
Weights are now stored in a
xr.DataArray
backed bysparse.COO
, which allows to pass them as an argument to thexr.apply_ufunc
and decrease memory usage when using dask. By Pascal BourgaultNew dependency sparse replacing
scipy
.
0.6.0 (07-08-2021)
New features
Add the
skipna
andna_threshold
options to deal with masks over non-spatial dimensions (PR/29). This is useful when, for example, masks vary over time. By Stéphane RaynaudAdd
unmapped_to_nan
argument to regridder frontend. When True, this sets target cells outside the source domain to NaN instead of zero for all regridding methods except nearest neighbour (PR/94). By Martin Schupfner
Bug fixes
0.5.3 (04-12-2021)
Bug fixes
Fix regression regarding support for non-CF-compliant coordinate names (PR/73). By Sam Levang
Infer bounds dimension name using cf-xarray (PR/78). By Pascal Bourgault
Do not regrid variables that are not defined over horizontal dimensions (PR/79). By Pascal Bourgault
Ensure locstream dimension name is consistent with ds_out (PR/81). By Mattia Almansi
Documentation
Add release instructions (PR/75). By David Huard
Update Zenodo DOI badge
0.5.2 (01-20-2021)
Bug fixes
0.5.1 (01-11-2021)
Documentation
Update installation instructions to mention that PyPi only holds xesmf up to version 0.3.0.
New features
Regridded xarray.Dataset now preserves the name and attributes of target coordinates (PR/60)
Bug fixes
Fix doc build for API/Regridder (PR/61)
0.5.0 (11-11-2020)
Breaking changes
Deprecate esmf_grid in favor of Grid.from_xarray
Deprecate esmf_locstream in favor of LocStream.from_xarray
Installation requires numpy>=1.16 and cf-xarray>=0.3.1
New features
Create ESMF.Mesh objects from shapely.polygons (PR/24). By Pascal Bourgault
New class SpatialAverager offers user-friendly mechanism to average a 2-D field over a polygon. Includes support to handle interior holes and multi-part geometries. (PR/24) By Pascal Bourgault
Automatic detection of coordinates and computation of vertices based on cf-xarray. (PR/49) By Pascal Bourgault
Bug fixes
Fix serialization bug when using dask’s distributed scheduler (PR/39). By Pascal Bourgault.
Internal changes
Subclass ESMF.Mesh and create from_polygon method
Subclass ESMF.Grid and ESMF.LocStream and create from_xarray methods.
New BaseRegridder class, with support for Grid, LocStream and Mesh objects. Not all regridding methods are supported for Mesh objects.
Refactor Regridder to subclass BaseRegridder.
0.4.0 (01-10-2020)
The git repo is now hosted by pangeo-data (https://github.com/pangeo-data/xESMF)
Breaking changes
By default, weights are not written to disk, but instead kept in memory.
Installation requires ESMPy 8.0.0 and up.
New features
The Regridder object now takes a weights argument accepting a scipy.sparse COO matrix, a dictionary, an xarray.Dataset, or a path to a netCDF file created by ESMF. If None, weights are computed and can be written to disk using the to_netcdf method. This weights parameter replaces the filename and reuse_weights arguments, which are preserved for backward compatibility (PR/3). By David Huard and Raphael Dussin
Added documentation discussion how to compute weights from a shell using MPI, and reuse from xESMF (PR/12). By Raphael Dussin
Add support for masks in :py:func`esmf_grid`. This avoid NaNs to bleed into the interpolated values. When using a mask and the conservative regridding method, use a new method called conservative_normed to properly handle normalization (PR/1). By Raphael Dussin
0.3.0 (06-03-2020)
New features
Add support for ESMF.LocStream (#81) By Raphael Dussin
0.2.2 (07-10-2019)
New features
Add option to allow degenerated grid cells (#61) By Jiawei Zhuang
0.2.0 (04-08-2019)
Breaking changes
All user-facing APIs in v0.1.x should still work exactly the same. That said, because some internal codes have changed a lot, there might be unexpected edge cases that break current user code. If that happens, you can revert to the previous version by pip install xesmf==0.1.2 and follow old docs.
New features
Lazy evaluation on dask arrays (uses
xarray.apply_ufunc()
anddask.array.map_blocks()
)Automatic looping over variables in an xarray Dataset
Add tutorial notebooks on those new features
0.1.2 (03-08-2019)
This release mostly contains internal clean-ups to facilitate future development.
New features
Deprecates regridder.A in favor of regridder.weights
Speed-up test suites by using coarser grids
Use parameterized tests when appropriate
Fix small memory leaks from ESMF.Grid
Properly assert ESMF enums
0.1.1 (31-12-2017)
Initial release. By Jiawei Zhuang