# What’s new in Iris 1.4¶

Release: | 1.4.0 |
---|---|

Date: | 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:

- Multiple cubes can now be exported to a NetCDF file.
- Correct nearest-neighbour calculation with circular coords.
- Experimental regridding enhancements.
- Iris-Pandas interoperability.
- NIMROD level type 12 (levels below ground) can now be loaded.
- Load cubes from the internet via OPeNDAP.
- GeoTiff export (experimental).
- Cube merge update.
- Unambiguous season year naming.
- NIMROD files with multiple fields and period of interest can now be loaded.
- Missing values are now handled when loading GRIB messages.
- PP export rule to calculate forecast period.
`aggregated_by()`

now maintains array masking.- IEEE 32bit fieldsfiles can now be loaded.
- NetCDF transverse mercator and climatology data can now be loaded.
- Polar stereographic GRIB data can now be loaded.
- Cubes with no vertical coord can now be exported to GRIB.
- Simplified resource configuration.
- Extended GRIB parameter translation.
- Added an optimisation for single-valued coordinate constraints.
- One dimensional linear interpolation fix.
- Fix for iris.analysis.calculus.differentiate.
- Fixed pickling of cubes with 2D aux coords from NetCDF.
- Fixed bug which ignored the “coords” keyword for certain plots.
- Use the latest release of Cartopy, v0.8.0.

### 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.

### Deprecations¶

- The
*add_custom_season_**functions from`coord_categorisation`

have been deprecated in favour of adding their functionality to the*add_season_**functions

## 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.