improver.standardise module

Plugin to regrid cube data and standardise metadata

class improver.standardise.AdjustLandSeaPoints(extrapolation_mode='nanmask', vicinity_radius=25000.0)[source]

Bases: object

Replace data values at points where the nearest-regridding technique selects a source grid-point with an opposite land-sea-mask value to the target grid-point. The replacement data values are selected from a vicinity of points on the source-grid and the closest point of the correct mask is used. Where no match is found within the vicinity, the data value is not changed.

__init__(extrapolation_mode='nanmask', vicinity_radius=25000.0)[source]

Initialise class

Parameters
  • extrapolation_mode (str) – Mode to use for extrapolating data into regions beyond the limits of the source_data domain. Available modes are documented in iris.analysis Defaults to “nanmask”.

  • vicinity_radius (float) – Distance in metres to search for a sea or land point.

correct_where_input_true(selector_val)[source]

Replace points in the output_cube where output_land matches the selector_val and the input_land does not match, but has matching points in the vicinity, with the nearest matching point in the vicinity in the original nearest_cube.

Updates self.output_cube.data

Parameters

selector_val (int) – Value of mask to replace if needed. Intended to be 1 for filling land points near the coast and 0 for filling sea points near the coast.

process(cube, input_land, output_land)[source]

Update cube.data so that output_land and sea points match an input_land or sea point respectively so long as one is present within the specified vicinity radius. Note that before calling this plugin the input land mask MUST be checked against the source grid, to ensure the grids match.

Parameters
  • cube (iris.cube.Cube) – Cube of data to be updated (on same grid as output_land).

  • input_land (iris.cube.Cube) – Cube of land_binary_mask data on the grid from which “cube” has been reprojected (it is expected that the iris.analysis.Nearest method would have been used). This is used to determine where the input model data is representing land and sea points.

  • output_land (iris.cube.Cube) – Cube of land_binary_mask data on target grid.

class improver.standardise.StandardiseGridAndMetadata(regrid_mode='bilinear', extrapolation_mode='nanmask', landmask=None, landmask_vicinity=25000)[source]

Bases: improver.BasePlugin

Plugin to regrid cube data and standardise metadata

REGRID_REQUIRES_LANDMASK = {'bilinear': False, 'nearest': False, 'nearest-with-mask': True}
__init__(regrid_mode='bilinear', extrapolation_mode='nanmask', landmask=None, landmask_vicinity=25000)[source]

Initialise regridding parameters

Parameters
  • regrid_mode (str) – Mode of interpolation in regridding.

  • extrapolation_mode (str) – Mode to fill regions outside the domain in regridding.

  • landmask (iris.cube.Cube or None) – Land-sea mask (“land_binary_mask”) on the input cube grid. Required for “nearest-with-mask” regridding option.

  • landmask_vicinity (float) – Radius of vicinity to search for a coastline, in metres

Raises

ValueError – If a landmask is required but not passed in

_abc_cache = <_weakrefset.WeakSet object>
_abc_negative_cache = <_weakrefset.WeakSet object>
_abc_negative_cache_version = 213
_abc_registry = <_weakrefset.WeakSet object>
_adjust_landsea(cube, target_grid)[source]

Adjust regridded data using differences between the target landmask and that obtained by regridding the source grid landmask, to ensure that the “land” or “sea” nature of the points in the regridded cube matches that of the target grid.

Parameters
Returns

Adjusted cube

Return type

iris.cube.Cube

static _collapse_scalar_dimensions(cube)[source]

Demote any scalar dimensions (excluding “realization”) on the input cube to auxiliary coordinates.

Returns

iris.cube.Cube

_regrid_to_target(cube, target_grid, regridded_title)[source]

Regrid cube to target_grid, inherit grid attributes and update title

Parameters
  • cube (iris.cube.Cube) – Cube to be regridded

  • target_grid (iris.cube.Cube) – Data on the target grid. If regridding with mask, this cube should contain land-sea mask data to be used in adjusting land and sea points after regridding.

  • regridded_title (str or None) – New value for the “title” attribute to be used after regridding. If not set, a default value is used.

Returns

Regridded cube with updated attributes

Return type

iris.cube.Cube

static _remove_scalar_coords(cube, coords_to_remove)[source]

Removes named coordinates from the input cube.

static _standardise_time_coordinates(cube)[source]

If cube time-type coordinates do not conform to expected standards, update units and datatypes in place.

process(cube, target_grid=None, new_name=None, new_units=None, regridded_title=None, coords_to_remove=None, attributes_dict=None, fix_float64=False)[source]

Perform regridding and metadata adjustments

Parameters
  • cube (iris.cube.Cube) – Input cube to be standardised

  • target_grid (iris.cube.Cube or None) – Cube on the required grid. For “nearest-with-mask” regridding, this cube should contain a binary land-sea mask (“land_binary_mask”). If target_grid is None, no regridding is performed.

  • new_name (str or None) – Optional rename for output cube

  • new_units (str or None) – Optional unit conversion for output cube

  • regridded_title (str or None) – New title attribute to be applied after regridding. If not set, the title attribute is set to a default value if the field is regridded, as “title” may contain grid information.

  • coords_to_remove (list of str or None) – Optional list of scalar coordinates to remove from output cube

  • attributes_dict (dict or None) – Optional dictionary of required attribute updates. Keys are attribute names, and values are the required value or “remove”.

  • fix_float64 (bool) – Flag to de-escalate float64 precision

Returns

iris.cube.Cube

improver.standardise.grid_contains_cutout(grid, cutout)[source]

Check that a spatial cutout is contained within a given grid

Parameters
Returns

True if cutout is contained within grid, False otherwise

Return type

bool