Skip to content

v0.40.0

Compare
Choose a tag to compare
@zebengberg zebengberg released this 14 Apr 21:22
· 1766 commits to main since this release

v0.40.0

Support scipy 1.10, improve interpolation performance, and fix many windows issues.

Features

  • Improve interpolation performance by cythonizing linear interpolation. This extends the approach taken in scipy 1.10. The pycontrails cython routines allow for both float64 and float32 grids via cython fused types (the current scipy implementation assumes float64). In addition, interpolation up to dimension 4 is supported (the scipy implementation supports dimension 1 and 2).
  • Officially support scipy 1.10.
  • Officially test on windows in the GitHub Actions CI.
  • Build custom wheels for python 3.9, 3.10, and 3.11 for the following platforms:
    • Linux (x86_64)
    • macOS (arm64 and x86_64)
    • Windows (x86_64)

Breaking changes

  • Change MetDataset and MetDataArray conventions: underlying dimension coordinates are automatically promoted to float64.
  • Change how datetime arrays are converted to floating values for interpolation. The new approach introduces small differences compared with the previous implementation. These differences are significant enough to see relative differences in CoCiP predictions on the order of 1e-4.

Fixes

  • Unit tests no longer raise errors when the pycontrails-bada package is not installed. Instead, some tests are skipped.
  • Fix many numpy casting issues encountered on windows.
  • Fix temp file issues encountered on windows.
  • Officially support changes in xarray 2023.04 and pandas 2.0.

Internals

  • Make the interpolation module more aligned with scipy 1.10 enhancements to the RegularGridInterpolator. In particular, grid coordinates now must be float64.
  • Use cibuildwheel to build wheels for Linux, macOS (arm64 and x86_64), and Windows on release in Github Actions. Allow this workflow to be triggered manually to test the release process without actually publishing to PyPI.
  • Simplify interpolation with pre-computed indices (invoked with the model parameter interpolation_use_indices) via a RGIArtifacts interface.
  • Overhaul much of the interpolation module to improve performance.
  • Slight performance enhancements to the met module.