v3.2.dev0 (20 Dec 2021) [unreleased]¶
This document explains the changes made to Iris for this release (View all changes.)
v3.2.dev0 Release Highlights
📢 Announcements¶
Welcome to @wjbenfold, @tinyendian, @larsbarring, @akuhnregnier, @bsherratt and @aaronspring who made their first contributions to Iris. The first of many we hope!
Congratulations to @wjbenfold who has become a core developer for Iris! 🎉
✨ Features¶
@bjlittle, @pp-mo, @trexfeathers and @stephenworsley added support for unstructured meshes, as described by UGRID. This involved adding a data model (PR #3968, PR #4014, PR #4027, PR #4036, PR #4053, PR #4439) and API (PR #4063, PR #4064), and supporting representation (PR #4033, PR #4054) of data on meshes. Most of this new API can be found in
iris.experimental.ugrid
. The key objects introduced areiris.experimental.ugrid.mesh.Mesh
,iris.experimental.ugrid.mesh.MeshCoord
andiris.experimental.ugrid.load.PARSE_UGRID_ON_LOAD
. Airis.experimental.ugrid.mesh.Mesh
contains a full description of a UGRID type mesh.MeshCoord
s are coordinates that reference and represent aMesh
for use on aCube
.Cube
s are also given the propertymesh
which returns aMesh
if one is attached to theCube
via aMeshCoord
.@trexfeathers added support for loading unstructured mesh data from netcdf data, for files using the UGRID conventions. The context manager
PARSE_UGRID_ON_LOAD
provides a way to load UGRID files so thatCube
s can be returned with aMesh
attached. (PR #4058).@pp-mo added support to save cubes with meshes to netcdf files, using the UGRID conventions. The existing
iris.save()
function now does this, when saving cubes with meshes. A routineiris.experimental.ugrid.save.save_mesh()
allows savingMesh
objects to netcdf without any associated data (i.e. not attached to cubes). (PR #4318 and PR #4339).@trexfeathers added
iris.experimental.ugrid.mesh.Mesh.from_coords()
for inferring aMesh
from an appropriate collection ofiris.coords.Coord
s.@larsbarring updated
equalise_attributes()
to return a list of dictionaries containing the attributes removed from eachCube
. (PR #4357)@trexfeathers enabled streaming of all lazy arrays when saving to NetCDF files (was previously just
Cube
data
). This is important given the much greater size ofAuxCoord
points
andConnectivity
indices
under the UGRID model. (PR #4375)@bsherratt added a threshold parameter to
intersection()
(PR #4363)@wjbenfold added test data to ci benchmarks so that it is accessible to benchmark scripts. Also added a regridding benchmark that uses this data (PR #4402)
🐛 Bugs Fixed¶
@rcomer fixed
intersection()
for special cases where one cell’s bounds align with the requested maximum and negative minimum, fixing Issue #4221. (PR #4278)@bsherratt fixed further edge cases in
intersection()
, including Issue #3698 (PR #4363)@tinyendian fixed the error message produced by
concatenate_cube()
when a cube list contains cubes with different names, which will no longer report “Cube names differ: var1 != var1” if var1 appears multiple times in the list (Issue #4342, PR #4345)@larsbarring fixed
GeoCS
to handle spherical ellipsoid parameter inverse_flattening = 0 (:issue: 4146, PR #4348)@pdearnshaw fixed an error in the call to
cftime.datetime
inpp_save_rules
that prevented the saving to PP of climate means for DJF (PR #4391)@wjbenfold improved the error message for failure of
concatenate()
to indicate that the value of a scalar coordinate may be mismatched, rather than the metadata (Issue #4096, PR #4387)@bsherratt fixed a regression to the NAME file loader introduced in 3.0.4, as well as some long-standing bugs with vertical coordinates and number formats. (PR #4411)
@rcomer fixed
subset()
to alway returnNone
if no value match is found. (PR #4417)@wjbenfold resolved an issue that previously caused regridding with lazy data to take significantly longer than with real data. Relevant benchmark shows a time decrease from >10s to 625ms. (Issue #4280, PR #4400)
@wjbenfold changed
iris.util.points_step()
to stop it from warning when applied to a single point (Issue #4250, PR #4367)@trexfeathers changed
_DimensionalMetadata
andConnectivity
equality methods to preserve array laziness, allowing efficient comparisons even with larger-than-memory objects. (PR #4439)
💣 Incompatible Changes¶
N/A
🚀 Performance Enhancements¶
N/A
🔥 Deprecations¶
N/A
🔗 Dependencies¶
📚 Documentation¶
@rcomer updated the “Plotting Wind Direction Using Quiver” Gallery example. (PR #4120)
@trexfeathers included Iris GitHub Discussions in get involved. (PR #4307)
@wjbenfold improved readability in userguide interpolation section. (PR #4314)
@wjbenfold added explanation about the absence of | operator for
iris.Constraint
to userguide loading section and to api reference documentation. (PR #4321)@trexfeathers added more detail on making iris-test-data available during Running the Tests. (PR #4359)
@lbdreyer added a section to the release documentation outlining the role of the Release Manager. (PR #4413)
@trexfeathers encouraged contributors to include type hinting in code they are working on - Code Formatting. (PR #4390)
💼 Internal¶
@trexfeathers set the linkcheck to ignore http://www.nationalarchives.gov.uk/doc/open-government-licence since this always works locally, but never within CI. (PR #4307)
@wjbenfold netCDF integration tests now skip
TestConstrainedLoad
if test data is missing (PR #4319)@wjbenfold excluded
Good First Issue
labelled issues from being marked stale. (PR #4317)@tkknight added additional make targets for reducing the time of the documentation build including
html-noapi
andhtml-quick
. Useful for development purposes only. For more information see Building the documentation. (PR #4333)@rcomer modified the
animation
test to prevent it throwing a warning that sometimes interferes with unrelated tests. (PR #4330)@rcomer removed a now redundant workaround in
contourf()
. (PR #4349)@trexfeathers refactored
iris.experimental.ugrid
into sub-modules. (PR #4347).@bjlittle enabled the sort-all pre-commit hook to automatically sort
__all__
entries into alphabetical order. (PR #4353)@rcomer modified a NetCDF saver test to prevent it triggering a numpy deprecation warning. (Issue #4374, PR #4376)
@akuhnregnier removed addition of period from
wrap_lons()
and updated affected tests using assertArrayAllClose following Issue #3993. (PR #4421)@rcomer updated some tests to work with Matplotlib v3.5. (PR #4428)
@rcomer applied minor fixes to some regridding tests. (PR #4432)
@aaronspring exchanged dask with dask-core in testing environments reducing the number of dependencies installed for testing. (PR #4434)
@wjbenfold prevented github action runs in forks (Issue #4441, PR #4444)
@wjbenfold fixed tests for hybrid formulae that weren’t being found by nose (Issue #4431, PR #4450)