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.MeshCoordandiris.experimental.ugrid.load.PARSE_UGRID_ON_LOAD. Airis.experimental.ugrid.mesh.Meshcontains a full description of a UGRID type mesh.MeshCoords are coordinates that reference and represent aMeshfor use on aCube.Cubes are also given the propertymeshwhich returns aMeshif one is attached to theCubevia aMeshCoord.@trexfeathers added support for loading unstructured mesh data from netcdf data, for files using the UGRID conventions. The context manager
PARSE_UGRID_ON_LOADprovides a way to load UGRID files so thatCubes can be returned with aMeshattached. (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 savingMeshobjects 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 aMeshfrom an appropriate collection ofiris.coords.Coords.@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
Cubedata). This is important given the much greater size ofAuxCoordpointsandConnectivityindicesunder 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
GeoCSto handle spherical ellipsoid parameter inverse_flattening = 0 (:issue: 4146, PR #4348)@pdearnshaw fixed an error in the call to
cftime.datetimeinpp_save_rulesthat 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 returnNoneif 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
_DimensionalMetadataandConnectivityequality 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.Constraintto 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
TestConstrainedLoadif test data is missing (PR #4319)@wjbenfold excluded
Good First Issuelabelled issues from being marked stale. (PR #4317)@tkknight added additional make targets for reducing the time of the documentation build including
html-noapiandhtml-quick. Useful for development purposes only. For more information see Building the documentation. (PR #4333)@rcomer modified the
animationtest 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.ugridinto 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)