What’s new in Iris 1.3

Release:1.3.0
Date:27 March 2013

This document explains the new/changed features of Iris in version 1.3. (View all changes.)

Iris 1.3 features

A summary of the main features added with version 1.3:

Bugs fixed

  • Printing a Cube now supports Unicode attribute values.
  • PP export now sets LBMIN correctly.
  • Converting between reference times now works correctly for units with non-Gregorian calendars.
  • Slicing a CubeList now returns a CubeList instead of a normal list.

Incompatible changes

  • N/A

Deprecations

Loading ABF/ABL files

Support for the ABF and ABL file formats (as defined by the climate and vegetation research group of Boston University), is currently provided under the “experimental” system. As such, ABF/ABL file detection is not automatically enabled.

To enable ABF/ABL file detection, simply import the iris.experimental.fileformats.abf module before attempting to load an ABF/ABL file.

For example:

import iris.experimental.fileformats.abf
cube = iris.load_cube('/path/to/my/data.abf')

Customised CF profiles

Iris now provides hooks in the CF-netCDF export process to allow user-defined routines to check and/or modify the representation in the netCDF file.

The following keys within the iris.site_configuration dictionary have been reserved as hooks to external user-defined CF profile functions:

  • cf_profile injests a iris.cube.Cube for analysis and returns a profile result
  • cf_patch modifies the CF-netCDF file associated with export of the iris.cube.Cube

The iris.site_configuration dictionary should be configured via the iris/site_config.py file.

For further implementation details see iris/fileformats/netcdf.py.

Cube concatenation

Iris now provides initial support for concatenating Cubes along one or more existing dimensions. Currently this will force the data to be loaded for all the source Cubes, but future work will remove this restriction.

For example, if one began with a collection of Cubes, each containing data for a different range of times:

>>> print(cubes)
0: air_temperature                     (time: 30; latitude: 145; longitude: 192)
1: air_temperature                     (time: 30; latitude: 145; longitude: 192)
2: air_temperature                     (time: 30; latitude: 145; longitude: 192)

One could use iris.experimental.concatenate.concatenate() to combine these into a single Cube as follows:

>>> new_cubes = iris.experimental.concatenate.concatenate(cubes)
>>> print(new_cubes)
0: air_temperature                     (time: 90; latitude: 145; longitude: 192)

Note

As this is an experimental feature, your feedback is especially welcome.