Skip to content

Latest commit

 

History

History
354 lines (263 loc) · 17.1 KB

File metadata and controls

354 lines (263 loc) · 17.1 KB

What's new

0.9.2 (2025-11-27)

This release drops support for Python < 3.11. xESMF aims to preserve support for older python and ESMF version as long as possible with its reduced maintaining team. The most recent windows release of ESMF is currently 8.4.2 and new versions of xESMF will support it as long as it is not updated. All fixes in :pull:`463`, by Pascal Bourgault.

  • Rewrote xe.smm.gen_mask_from_weights to remove scipy-dependent code.
  • Fix the CI reenable testing with previous python versions.
  • Avoid a SpatialAverager bug that happens when polygon segments have a length of exactly 1 on ESMF 8.4.2. The bug is not actually fixed in xESMF, but "segmentizing" the polygons with 0.99 seems to fix the issue.

0.9.1 (2025-11-25)

  • Rewrote xe.smm.add_nans_to_weight (called when unmapped_to_nan is True)to remove scipy-dependent code, which also resulted in a significant (>=4x) speedup of that step (:pull:`461`). By Pascal Bourgault.
  • Fix some name collision issues in the parallel regridder initialisation (:pull:`461`). By Pascal Bourgault.

0.9.0 (2025-11-21)

  • Added Regridder option post_mask_source to mask contributions of specified source grid cells, with a special setting for masking domain edge cells to avoid extrapolation with nearest_s2d when remapping to a larger domain (post_mask_source = 'domain_edge', :pull:`444`). By Martin Schupfner.
  • Added support for target masks when regridding LocStream to Grid with nearest_s2d (:pull:`445`). By Martin Schupfner.
  • xesmf.util.cf_grid_2d returns bounds as coordinates, as grid_2d does and as usually expected. (:pull:`453`). By Pascal Bourgault.
  • Accept masks in "X, Y" order (:issue:`447`, :pull:`456`). By Pascal Bourgault.
  • Correctly use arguments input_dims and output_dims in Regridder when grids are defined as dictionaries of numpy arrays (:issue:`362`, :pull:`455`). By Aaron G Meyer.

0.8.10 (2025-04-29)

0.8.9 (2025-04-15)

  • Destroy grids explicitly once weights are computed. Do not store them in grid_in and grid_out attributes. This fixes segmentation faults introduced by the memory fix of last version. By Pascal Bourgault.
  • Do not add scalar coordinates of the target grid to the regridded output (:issue:`417`, :pull:`418`). xe.Regridder.out_coords is now a dataset instead of a dictionary. By Pascal Bourgault.

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)

0.8.6 (2024-06-26)

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. (:pull:`348`) By Pascal Bourgault.

0.8.4 (2024-02-26)

0.8.3 (2024-02-20)

Internal changes

  • Test against ESMF 8.6

0.8.2 (2023-09-18)

Bug fixes

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 (:pull:`293`). By Charles Gauthier
  • Add an option (parallel) to generate regridding weights in parallel using dask (:pull:`290`). By Charles Gauthier
  • Add 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 (:pull:`280`). By Charles Gauthier
  • Added 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 (:pull:`276`). By David Huard

Documentation

  • Move URLs from earthsystemcog.org to earthsystemmodeling.org (:pull:`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

New features

Documentation

Internal changes

0.7.0 (2022-12-16)

Bug fixes

New features

Documentation

Internal changes

0.6.3 (29-06-2022)

Bug fixes

Internal changes

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 (:pull:`135`). By Pascal Bourgault
  • SpatialAverager did not compute the same weights as Regridder when source cell areas were not uniform (:pull:`128`). By David Huard
  • Refactor of how the regridding is called internally, to fix a bug with dask and sparse (:pull:`135`). By Pascal Bourgault

Internal changes

  • Deprecation of regrid_numpy and regrid_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 (:pull:`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 by sparse.COO, which allows to pass them as an argument to the xr.apply_ufunc and decrease memory usage when using dask. By Pascal Bourgault
  • New dependency sparse replacing scipy.

0.6.0 (07-08-2021)

New features

  • Add the skipna and na_threshold options to deal with masks over non-spatial dimensions (:pull:`29`). This is useful when, for example, masks vary over time. By Stéphane Raynaud
  • Add 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 (:pull:`94`). By Martin Schupfner

Bug fixes

0.5.3 (04-12-2021)

Bug fixes

Documentation

0.5.2 (01-20-2021)

Bug fixes

  • Restore original behavior for lon/lat discovery, uses cf-xarray if lon/lat not found in dataset (:pull:`64`)
  • Solve issue of dimension order in dataset (#53) with (:pull:`66`)

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 (:pull:`60`)

Bug fixes

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 (:pull:`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. (:pull:`24`) By Pascal Bourgault
  • Automatic detection of coordinates and computation of vertices based on cf-xarray. (:pull:`49`) By Pascal Bourgault

Bug fixes

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 (:pull:`3`). By David Huard and Raphael Dussin
  • Added documentation discussion how to compute weights from a shell using MPI, and reuse from xESMF (:pull:`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 (:pull:`1`). By Raphael Dussin

0.3.0 (06-03-2020)

New features

0.2.2 (07-10-2019)

New features

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

By Jiawei Zhuang

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

By Jiawei Zhuang

0.1.1 (31-12-2017)

Initial release. By Jiawei Zhuang