Whatโ€™s New in Iris#

v3.11 (28 Oct 2024) [release candidate]#

This document explains the changes made to Iris for this release (View all changes.)

v3.11 Release Highlights

The highlights for this major/minor release of Iris include:

  • Iris is now compliant with NumPy v2. See the notes below for how this might affect your scripts.

  • Loading now supports varying reference fields for hybrid vertical coordinates, e.g. a time-varying orography. This is controlled by the LOAD_POLICY() object : see LoadPolicy.

  • We now have type hints in Cube, and iris.cube.CubeList.concatenate() is in places almost an order of magnitude faster!

  • @bouweandela added type hints for Cube.

  • Checkout the significant performance enhancements section for a couple of improvements to the performance of Iris. Special thanks to @bouweandela for these contributions.

  • We added colorbar keyword to allow optional creation of the colorbar in three quickplot methods!

And finally, get in touch with us on GitHub if you have any issues or feature requests for improving Iris. Enjoy!

๐Ÿ“ข Announcements#

  1. Iris is now compliant with NumPy v2. This may affect your scripts. See the full Whatโ€™s New entry for more details.

โœจ Features#

  1. @jrackham-mo added copy() and equality methods to iris.io.format_picker.FormatAgent, as requested in Issue #6108, actioned in PR #6119.

  2. @ukmo-ccbunney added colorbar keyword to allow optional creation of the colorbar in the following quickplot methods:

    Requested in Issue #5970, actioned in PR #6169.

  3. @pp-mo and @stephenworsley added support for hybrid coordinates whose references are split across multiple input fields, and LOAD_POLICY() to control it, as requested in Issue #5369, actioned in PR #6168.

  4. @ESadek-MO has updated iris.fileformats.pp_save_rules and iris.fileformats.pp to include the label_surface_fields flag across relevant functions, most notably iris.fileformats.pp.save(). This allows the user to choose whether or not surface fields are recognised and handled appropriately. (Issue #3280, PR #5734)

  5. @ESadek-MO updated to the latest CF Standard Names Table v86 (5 September 2024). (PR #6200)

๐Ÿ› Bugs Fixed#

  1. @rcomer enabled partial collapse of multi-dimensional string coordinates, fixing Issue #3653. (PR #5955)

  2. @bouweandela made further updates to the chunktype of Dask arrays, so it corresponds better with the array content. (PR #5989)

  3. @ukmo-ccbunney improved error handling for malformed cell_method attribute. Also made cell_method string parsing more lenient w.r.t. whitespace. (PR #6083)

  4. @ukmo-ccbunney fixed comparison of cubes with array type attributes; fixes Issue #6027 (PR #6181)

๐Ÿ’ฃ Incompatible Changes#

  1. N/A

๐Ÿš€ Performance Enhancements#

  1. @bouweandela made the time coordinate categorisation functions in coord_categorisation faster. Anyone using add_categorised_coord() with cftime datetime objects can benefit from the same improvement by adding a type hint to their category funcion. (PR #5999)

  2. @bouweandela made iris.cube.CubeList.concatenate() faster if more than two cubes are concatenated with equality checks on the values of auxiliary coordinates, derived coordinates, cell measures, or ancillary variables enabled. In some cases, this may lead to higher memory use. This can be remedied by reducing the number of Dask workers. In rare cases, the new implementation could potentially be slower. This may happen when there are very many or large auxiliary coordinates, derived coordinates, cell measures, or ancillary variables to be checked that span the concatenation axis. This issue can be avoided by disabling the problematic check. (PR #5926 and PR #6187)

๐Ÿ”ฅ Deprecations#

  1. N/A

๐Ÿ”— Dependencies#

  1. @trexfeathers adapted the Iris codebase to work with NumPy v2. The NumPy v2 full release notes have the exhaustive details. Notable changes that may affect your Iris scripts are below. (PR #6035)

๐Ÿ“š Documentation#

  1. @bouweandela added type hints for Cube. (PR #6037)

  2. @ESadek-MO has updated Iris Handling of PP and Fieldsfiles to include a short description of the new label_surface_fields functionality. (PR #5734)

๐Ÿ’ผ Internal#

  1. @trexfeathers improved the new tracemalloc benchmarking (introduced in Iris v3.10.0, PR #5948) to use the same statistical repeat strategy as timing benchmarks. (PR #5981)

  2. @trexfeathers adapted Iris to work with Cartopy v0.24. (PR #6171, PR #6172)

  3. @trexfeathers refactored spanning checks in iris.fileformats.cf to reduce code duplication. (PR #6196)