# What’s new in Iris 1.4¶

Release: 1.4.0 14 June 2013

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

## Iris 1.4 features¶

A summary of the main features added with version 1.4:

### Incompatible changes¶

• As part of simplifying the mechanism for accessing test data, iris.io.select_data_path(), iris.config.DATA_REPOSITORY, iris.config.MASTER_DATA_REPOSITORY and iris.config.RESOURCE_DIR have been removed.

## Experimental regridding enhancements¶

Bilinear, area-weighted and area-conservative regridding functions are now available in iris.experimental. These functions support masked data and handle derived coordinates such as hybrid height. The final API is still in development. In the meantime:

### Bilinear rectilinear regridding¶

regrid_bilinear_rectilinear_src_and_grid() can be used to regrid a cube onto a horizontal grid defined in a different coordinate system. The data values are calculated using bilinear interpolation.

For example:

from iris.experimental.regrid import regrid_bilinear_rectilinear_src_and_grid
regridded_cube = regrid_bilinear_rectilinear_src_and_grid(source_cube, target_grid_cube)


### Area-weighted regridding¶

regrid_area_weighted_rectilinear_src_and_grid() can be used to regrid a cube such that the data values of the resulting cube are calculated using the area-weighted mean.

For example:

from iris.experimental.regrid import regrid_area_weighted_rectilinear_src_and_grid as regrid_area_weighted
regridded_cube = regrid_area_weighted(source_cube, target_grid_cube)


### Area-conservative regridding¶

regrid_conservative_via_esmpy() can be used for area-conservative regridding between geographical coordinate systems. This uses the ESMF library functions, via the ESMPy interface.

For example:

from iris.experimental.regrid_conservative import regrid_conservative_via_esmpy
regridded_cube = regrid_conservative_via_esmpy(source_cube, target_grid_cube)


## Iris-Pandas interoperablilty¶

Conversion to and from Pandas Series and DataFrames is now available. See iris.pandas for more details.

## Load cubes from the internet via OPeNDAP¶

Cubes can now be loaded directly from the internet, via OPeNDAP.

For example:

cubes = iris.load("http://geoport.whoi.edu/thredds/dodsC/bathy/gom15")


## GeoTiff export¶

With this experimental feature, two dimensional cubes can now be exported to GeoTiff files.

For example:

from iris.experimental.raster import export_geotiff
export_geotiff(cube, filename)


Note

This is a raw data export only and does not save Iris plots.

## Cube merge update¶

Cube merging now favours numerical coordinates over string coordinates to describe a dimension, and DimCoord over AuxCoord. These modifications prevent the error: “No functional relationship between separable and inseparable candidate dimensions”.

## Unambiguous season year naming¶

The default names of categorisation coordinates are now less ambiguous. For example, add_month_number() and add_month_fullname() now create “month_number” and “month_fullname” coordinates.

## Cubes with no vertical coord can now be exported to GRIB¶

Iris can now export cubes with no vertical coord to GRIB. The solution is still under discussion: See https://github.com/SciTools/iris/issues/519.

## Simplified resource configuration¶

A new configuration variable called iris.config.TEST_DATA_DIR has been added, replacing the previous combination of iris.config.MASTER_DATA_REPOSITORY and iris.config.DATA_REPOSITORY. This constant should be the path to a directory containing the test data required by the unit tests. It can be set by adding a test_data_dir entry to the Resources section of site.cfg. See iris.config for more details.

## Extended GRIB parameter translation¶

• More GRIB2 params are recognised on input.
• Now translates some codes on GRIB2 output.
• Some GRIB2 params may load with a different standard_name.

## One dimensional linear interpolation fix¶

linear() can now extrapolate from a single point assuming a gradient of zero. This prevents an issue when loading cross sections with a hybrid height coordinate, on a staggered grid and only a single orography field.

## Fix for iris.analysis.calculus.differentiate¶

A bug in differentiate() that had the potential to cause the loss of coordinate metadata when calculating the curl or the derivative of a cube has been fixed.