iris#
A package for handling multi-dimensional data and associated metadata.
Note
The Iris documentation has further usage information, including a user guide which should be the first port of call for new users.
The functions in this module provide the main way to load and/or save your data.
The load() function provides a simple way to explore data from
the interactive Python prompt. It will convert the source data into
Cubes, and combine those cubes into
higher-dimensional cubes where possible.
Note
User control of the ‘combine’ process is provided via a specific
iris.CombineOptions object called iris.COMBINE_POLICY.
See the iris.CombineOptions class for details.
The load_cube() and load_cubes() functions are similar to
load(), but they raise an exception if the number of cubes is not
what was expected. They are more useful in scripts, where they can
provide an early sanity check on incoming data.
The load_raw() function is provided for those occasions where the
automatic combination of cubes into higher-dimensional cubes is
undesirable. However, it is intended as a tool of last resort! If you
experience a problem with the automatic combination process then please
raise an issue with the Iris developers.
To persist a cube to the file-system, use the save() function.
All the load functions share very similar arguments:
- uris:
Either a single filename/URI expressed as a string or
pathlib.PurePath, or an iterable of filenames/URIs.Filenames can contain ~ or ~user abbreviations, and/or Unix shell-style wildcards (e.g. * and ?). See the standard library function
os.path.expanduser()and modulefnmatchfor more details.Warning
If supplying a URL, only OPeNDAP Data Sources are supported.
- constraints:
Either a single constraint, or an iterable of constraints. Each constraint can be either a string, an instance of
iris.Constraint, or an instance ofiris.AttributeConstraint. If the constraint is a string it will be used to match against cube.name().For example:
# Load air temperature data. load_cube(uri, 'air_temperature') # Load data with a specific model level number. load_cube(uri, iris.Constraint(model_level_number=1)) # Load data with a specific STASH code. load_cube(uri, iris.AttributeConstraint(STASH='m01s00i004'))
- callback:
A function to add metadata from the originating field and/or URI which obeys the following rules:
Function signature must be:
(cube, field, filename).Modifies the given cube inplace, unless a new cube is returned by the function.
If the cube is to be rejected the callback must raise an
iris.exceptions.IgnoreCubeException.
For example:
def callback(cube, field, filename): # Extract ID from filenames given as: <prefix>__<exp_id> experiment_id = filename.split('__')[1] experiment_coord = iris.coords.AuxCoord( experiment_id, long_name='experiment_id') cube.add_aux_coord(experiment_coord)
- class iris.AttributeConstraint(**attributes)[source]#
Bases:
ConstraintProvides a simple Cube-attribute based
Constraint.Provide a simple Cube-attribute based
Constraint.Example usage:
iris.AttributeConstraint(STASH='m01s16i004') iris.AttributeConstraint( STASH=lambda stash: str(stash).endswith('i005'))
Note
Attribute constraint names are case sensitive.
- extract(cube)#
Return the subset of the given cube which matches this constraint.
Return the subset of the given cube which matches this constraint, else return None.
- iris.COMBINE_POLICY = CombineOptions(equalise_cubes_kwargs=None, merge_concat_sequence='m', merge_unique=False, repeat_until_unchanged=False, support_multiple_references=True)#
An object to control default cube combination and loading options
- class iris.CombineOptions(options=None, **kwargs)[source]#
Bases:
_localA control object for Iris loading and cube combination options.
Both the iris loading functions and the “combine_cubes” utility apply a number of possible “cube combination” operations to a list of cubes, in a definite sequence, all of which tend to combine cubes into a smaller number of larger or higher-dimensional cubes.
This object groups various control options for these behaviours, which apply to both the
iris.util.combine_cubes()utility method and the core Iris loading functions “iris.load_xxx”.The
CombineOptionsclass defines the allowed control options, while a global singleton objectiris.COMBINE_POLICYholds the current global default settings.The individual configurable options are :
equalise_cubes_kwargs= (dict or None)Specifies keywords for an
iris.util.equalise_cubes()call, to be applied before any merge/concatenate step. IfNone, or empty, no equalisation step is performed.
merge_concat_sequence= “m” / “c” / “cm” / “mc”Specifies whether to apply
merge(), orconcatenate()operations, or both, in either order.
merge_unique= True / FalseWhen True, any merge operation will error if its result contains multiple identical cubes. Otherwise (unique=False), that is a permitted result.
repeat_until_unchanged= True / FalseWhen enabled, the configured “combine” operation will be repeated until the result is stable (no more cubes are combined).
support_multiple_references= True / FalseWhen enabled, support cases where a hybrid coordinate has multiple reference fields : for example, a UM file which contains a series of fields describing a time-varying orography.
Alternatively, certain fixed combinations of options can be selected by a “settings” name, one of
CombineOptions.SETTINGS_NAMES:"legacy"Apply a plain merge step only, i.e.
merge_concat_sequence="m". Other options are all “off”. This produces loading behaviour identical to Iris versions < 3.11, i.e. before the varying hybrid references were supported.
"default"As “legacy” except that
support_multiple_references=True. This differs from “legacy” only when multiple mergeable reference fields are encountered, in which case incoming cubes are extended into the extra dimension, and a concatenate step is added. Since the handling of multiple references affects only loading operations, for the purposes of calls tocombine_cubes(), this setting is identical to “legacy”.Warning
The
"default"setting is the initial default mode.This “fixes” loading for cases like the time-varying orography case described. However, this setting is not strictly backwards-compatible. If this causes problems, you can force identical loading behaviour to earlier Iris versions (< v3.11) with
COMBINE_POLICY.set("legacy")or equivalent.
"recommended"In addition to the “merge” step, allow a following “concatenate”, i.e.
merge_concat_sequence="mc".
"comprehensive"As for “recommended”, uses
merge_concat_sequence="mc", but now also repeats the merge+concatenate steps until no further change is produced, i.e.repeat_until_unchanged=True. Also applies a prior ‘equalise_cubes’ call, of the formequalise_cubes(cubes, apply_all=True).Note
The “comprehensive” policy makes a maximum effort to reduce the number of cubes to a minimum. However, it still cannot combine cubes with a mixture of matching dimension and scalar coordinates. This may be supported at some later date, but for now is not possible without specific user actions.
Examples
Note:
COMBINE_POLICYis the global control object, which determines the current default options for loading oriris.util.combine_cubes()calls. For the latter case, however, control via argument and keywords is also available.Note
The
iris.COMBINE_POLICYcan be adjusted by either:calling
iris.COMBINE_POLICY.set(<something>), orusing
with COMBINE_POLICY.context(<something>): ..., orassigning a property
COMBINE_POLICY.<option> = <value>, such asCOMBINE_POLICY.merge_concat_sequence="cm"
What you should not ever do is to assign
iris.COMBINE_POLICYitself, e.g.iris.COMBINE_POLICY = CombineOptions("legacy"), since in that case the original object still exists, and is still the one in control of load/combine operations. Here, the correct approach would beiris.COMBINE_POLICY.set("legacy").>>> COMBINE_POLICY.set("legacy") >>> print(COMBINE_POLICY) CombineOptions(equalise_cubes_kwargs=None, merge_concat_sequence='m', merge_unique=False, repeat_until_unchanged=False, support_multiple_references=False) >>> >>> COMBINE_POLICY.support_multiple_references = True >>> print(COMBINE_POLICY) CombineOptions(equalise_cubes_kwargs=None, merge_concat_sequence='m', merge_unique=False, repeat_until_unchanged=False, support_multiple_references=True)
>>> COMBINE_POLICY.set(merge_concat_sequence="cm") >>> print(COMBINE_POLICY) CombineOptions(equalise_cubes_kwargs=None, merge_concat_sequence='cm', merge_unique=False, repeat_until_unchanged=False, support_multiple_references=True)
>>> with COMBINE_POLICY.context("comprehensive"): ... print(COMBINE_POLICY) CombineOptions(equalise_cubes_kwargs={'apply_all': True}, merge_concat_sequence='mc', merge_unique=False, repeat_until_unchanged=True, support_multiple_references=True) >>> >>> print(COMBINE_POLICY) CombineOptions(equalise_cubes_kwargs=None, merge_concat_sequence='cm', merge_unique=False, repeat_until_unchanged=False, support_multiple_references=True)
Note
The name
iris.LOAD_POLICYrefers to the same thing asiris.COMBINE_POLICY, and is still usable, but is no longer recommended.Create loading strategy control object.
- OPTION_KEYS = ['equalise_cubes_kwargs', 'merge_concat_sequence', 'merge_unique', 'repeat_until_unchanged', 'support_multiple_references']#
Valid option names
- SETTINGS: Dict[str, Dict[str, Any]] = {'comprehensive': {'equalise_cubes_kwargs': {'apply_all': True}, 'merge_concat_sequence': 'mc', 'merge_unique': False, 'repeat_until_unchanged': True, 'support_multiple_references': True}, 'default': {'equalise_cubes_kwargs': None, 'merge_concat_sequence': 'm', 'merge_unique': False, 'repeat_until_unchanged': False, 'support_multiple_references': True}, 'legacy': {'equalise_cubes_kwargs': None, 'merge_concat_sequence': 'm', 'merge_unique': False, 'repeat_until_unchanged': False, 'support_multiple_references': False}, 'recommended': {'equalise_cubes_kwargs': None, 'merge_concat_sequence': 'mc', 'merge_unique': False, 'repeat_until_unchanged': False, 'support_multiple_references': True}}#
Standard settings dictionaries
- SETTINGS_NAMES = ['legacy', 'default', 'recommended', 'comprehensive']#
Valid settings names
- context(settings=None, **kwargs)[source]#
Return a context manager applying given options changes during a scope.
- Parameters:
Examples
>>> # Show how a CombineOptions acts in the context of a load operation >>> path = sample_data_path("time_varying_hybrid_height", "*.pp") >>> >>> # Show that "legacy" load behaviour allows merge but not concatenate >>> with COMBINE_POLICY.context("legacy"): ... cubes = iris.load(path, "x_wind") >>> print(cubes) 0: x_wind / (m s-1) (time: 2; model_level_number: 5; latitude: 144; longitude: 192) 1: x_wind / (m s-1) (time: 12; model_level_number: 5; latitude: 144; longitude: 192) 2: x_wind / (m s-1) (model_level_number: 5; latitude: 144; longitude: 192) >>> >>> # Show how "recommended" behaviour enables concatenation also >>> with COMBINE_POLICY.context("recommended"): ... cubes = iris.load(path, "x_wind") >>> print(cubes) 0: x_wind / (m s-1) (model_level_number: 5; time: 15; latitude: 144; longitude: 192)
- set(options=None, **kwargs)[source]#
Set new options.
- Parameters:
options (*) – A dictionary of options values, or one of the
SETTINGS_NAMESstandard settings names, e.g. “legacy” or “comprehensive”.kwargs (*) – Individual option settings, from
OPTION_KEYS.
Note
Keyword arguments are applied after the ‘options’ arg, and so will take precedence.
- class iris.Constraint(name=None, cube_func=None, coord_values=None, **kwargs)[source]#
Bases:
objectCubes can be pattern matched and filtered according to specific criteria.
Constraints are the mechanism by which cubes can be pattern matched and filtered according to specific criteria.
Once a constraint has been defined, it can be applied to cubes using the
Constraint.extract()method.Use for filtering cube loading or cube list extraction.
Creates a new instance of a Constraint which can be used for filtering cube loading or cube list extraction.
- Parameters:
name (str or None, optional) – If a string, it is used as the name to match against the
iris.cube.Cube.namesproperty.cube_func (callable or None, optional) – If a callable, it must accept a Cube as its first and only argument and return either True or False.
coord_values (dict or None, optional) – If a dict, it must map coordinate name to the condition on the associated coordinate.
***kwargs (dict, optional) –
The remaining keyword arguments are converted to coordinate constraints. The name of the argument gives the name of a coordinate, and the value of the argument is the condition to meet on that coordinate:
Constraint(model_level_number=10)
Coordinate level constraints can be of several types:
string, int or float - the value of the coordinate to match. e.g.
model_level_number=10list of values - the possible values that the coordinate may have to match. e.g.
model_level_number=[10, 12]callable - a function which accepts a
iris.coords.Cellinstance as its first and only argument returning True or False if the value of the Cell is desired. e.g.model_level_number=lambda cell: 5 < cell < 10
Examples
The user guide covers cube much of constraining in detail, however an example which uses all of the features of this class is given here for completeness:
Constraint(name='air_potential_temperature', cube_func=lambda cube: cube.units == 'kelvin', coord_values={'latitude':lambda cell: 0 < cell < 90}, model_level_number=[10, 12]) & Constraint(ensemble_member=2)
Note
Whilst
&is supported, the|that might reasonably be expected is not. This is because each constraint describes a boxlike region, and thus the intersection of these constraints (obtained with&) will also describe a boxlike region. Allowing the union of two constraints (with the|symbol) would allow the description of a non-boxlike region. These are difficult to describe with cubes and so it would be ambiguous what should be extracted.To generate multiple cubes, each constrained to a different range of the same coordinate, use
iris.load_cubes()oriris.cube.CubeList.extract_cubes().A cube can be constrained to multiple ranges within the same coordinate using something like the following constraint:
def latitude_bands(cell): return (0 < cell < 30) or (60 < cell < 90) Constraint(cube_func=latitude_bands)
Constraint filtering is performed at the cell level. For further details on how cell comparisons are performed see
iris.coords.Cell.
- iris.DATALESS = 'NONE'#
To be used when copying a cube to make the new cube dataless.
- iris.FUTURE = Future(datum_support=False, pandas_ndim=False, save_split_attrs=False, date_microseconds=False, derived_bounds=False, lam_pole_offset=False)#
Object containing all the Iris run-time options.
- class iris.Future(datum_support=False, pandas_ndim=False, save_split_attrs=False, date_microseconds=False, derived_bounds=False, lam_pole_offset=False)[source]#
Bases:
_localRun-time configuration controller.
Container for run-time options controls.
To adjust the values simply update the relevant attribute from within your code. For example:
# example_future_flag is a fictional example. iris.FUTURE.example_future_flag = False
If Iris code is executed with multiple threads, note the values of these options are thread-specific.
- Parameters:
datum_support (bool, default=False) – Opts in to loading coordinate system datum information from NetCDF files into
CoordSystem, wherever this information is present.pandas_ndim (bool, default=False) – See
iris.pandas.as_data_frame()for details - opts in to the newer n-dimensional behaviour.save_split_attrs (bool, default=False) – Save “global” and “local” cube attributes to netcdf in appropriately different ways : “global” ones are saved as dataset attributes, where possible, while “local” ones are saved as data-variable attributes. See
iris.fileformats.netcdf.saver.save().date_microseconds (bool, default=False) – Newer versions of cftime and cf-units support microsecond precision for dates, compared to the legacy behaviour that only works with seconds. Enabling microsecond precision will alter core Iris behaviour, such as when using
Constraint, and you may need to defend against floating point precision issues where you didn’t need to before.derived_bounds (bool, default=False) – When
True, uses the correct CF rules for bounds of derived coordinates for both loading and saving NetCDF. This requires that these must be linked via a separate “formula_terms” attribute on the bounds variable. IfFalse, bounds are only linked with a “bounds” attribute, though this is strictly incorrect for CF >= v1.7. See here in CF.lam_pole_offset (bool, default=False) – When True, saving a cube on a “Limited Area Model” (LAM) domain to a PP file will set the pole longitude (PP field
bplon) to 180.0 degrees if the grid is defined on a standard pole. Does not affect global or rotated-pole domains.
- context(**kwargs)[source]#
Return context manager for temp modification of option values for the active thread.
On entry to the with statement, all keyword arguments are applied to the Future object. On exit from the with statement, the previous state is restored.
For example:
# example_future_flag is a fictional example. with iris.FUTURE.context(example_future_flag=False): # ... code that expects some past behaviour
- exception iris.IrisDeprecation[source]#
Bases:
UserWarningAn Iris deprecation warning.
Note this subclasses UserWarning for backwards compatibility with Iris’ original deprecation warnings. Should subclass DeprecationWarning at the next major release.
- add_note()#
Exception.add_note(note) – add a note to the exception
- args#
- with_traceback()#
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- iris.LOAD_POLICY = CombineOptions(equalise_cubes_kwargs=None, merge_concat_sequence='m', merge_unique=False, repeat_until_unchanged=False, support_multiple_references=True)#
An alias for the
COMBINE_POLICYobject.
- iris.LoadPolicy#
An alias for the
CombineOptionsclass.
- class iris.NameConstraint(standard_name='none', long_name='none', var_name='none', STASH='none')[source]#
Bases:
ConstraintProvide a simple Cube name based
Constraint.Provide a simple Cube name based
Constraint.Provide a simple Cube name based
Constraint, which matches against each of the names provided, which may be either standard name, long name, NetCDF variable name and/or the STASH from the attributes dictionary.The name constraint will only succeed if all of the provided names match.
- Parameters:
standard_name (optional) – A string or callable representing the standard name to match against.
long_name (optional) – A string or callable representing the long name to match against.
var_name (optional) – A string or callable representing the NetCDF variable name to match against.
STASH (optional) – A string or callable representing the UM STASH code to match against.
Notes
The default value of each of the keyword arguments is the string “none”, rather than the singleton None, as None may be a legitimate value to be matched against e.g., to constrain against all cubes where the standard_name is not set, then use standard_name=None.
- Return type:
Examples
Example usage:
iris.NameConstraint(long_name='air temp', var_name=None) iris.NameConstraint(long_name=lambda name: 'temp' in name) iris.NameConstraint(standard_name='air_temperature', STASH=lambda stash: stash.item == 203)
- extract(cube)#
Return the subset of the given cube which matches this constraint.
Return the subset of the given cube which matches this constraint, else return None.
- iris.load(uris, constraints=None, callback=None)[source]#
Load any number of Cubes for each constraint.
For a full description of the arguments, please see the module documentation for
iris.- Parameters:
uris (str or
pathlib.PurePath) – One or more filenames/URIs, as a string orpathlib.PurePath. If supplying a URL, only OPeNDAP Data Sources are supported.constraints (optional) – One or more constraints.
callback (optional) – A modifier/filter function.
- Returns:
An
iris.cube.CubeList. Note that there is no inherent order to thisiris.cube.CubeListand it should be treated as if it were random.- Return type:
- iris.load_cube(uris, constraint=None, callback=None)[source]#
Load a single cube.
For a full description of the arguments, please see the module documentation for
iris.- Parameters:
uris – One or more filenames/URIs, as a string or
pathlib.PurePath. If supplying a URL, only OPeNDAP Data Sources are supported.constraints (optional) – A constraint.
callback (optional) – A modifier/filter function.
- Return type:
- iris.load_cubes(uris, constraints=None, callback=None)[source]#
Load exactly one Cube for each constraint.
For a full description of the arguments, please see the module documentation for
iris.- Parameters:
uris – One or more filenames/URIs, as a string or
pathlib.PurePath. If supplying a URL, only OPeNDAP Data Sources are supported.constraints (optional) – One or more constraints.
callback (optional) – A modifier/filter function.
- Returns:
An
iris.cube.CubeList. Note that there is no inherent order to thisiris.cube.CubeListand it should be treated as if it were random.- Return type:
- iris.load_raw(uris, constraints=None, callback=None)[source]#
Load non-merged cubes.
This function is provided for those occasions where the automatic combination of cubes into higher-dimensional cubes is undesirable. However, it is intended as a tool of last resort! If you experience a problem with the automatic combination process then please raise an issue with the Iris developers.
For a full description of the arguments, please see the module documentation for
iris.- Parameters:
uris – One or more filenames/URIs, as a string or
pathlib.PurePath. If supplying a URL, only OPeNDAP Data Sources are supported.constraints (optional) – One or more constraints.
callback (optional) – A modifier/filter function.
- Return type:
- iris.sample_data_path(*path_to_join)[source]#
Given the sample data resource, returns the full path to the file.
Note
This function is only for locating files in the iris sample data collection (installed separately from iris). It is not needed or appropriate for general file access.
- iris.save(source, target, saver=None, **kwargs)[source]#
Save one or more Cubes to file (or other writeable).
Iris currently supports three file formats for saving, which it can recognise by filename extension:
netCDF - the Unidata network Common Data Format, see
iris.fileformats.netcdf.save()GRIB2 - the WMO GRIdded Binary data format, see
iris_grib.save_grib2().PP - the Met Office UM Post Processing Format, see
iris.fileformats.pp.save()
A custom saver can be provided to the function to write to a different file format.
- Parameters:
source (
iris.cube.Cubeoriris.cube.CubeList)target (str or pathlib.PurePath or io.TextIOWrapper) – When given a filename or file, Iris can determine the file format.
saver (str or function, optional) –
Specifies the file format to save. If omitted, Iris will attempt to determine the format. If a string, this is the recognised filename extension (where the actual filename may not have it).
Otherwise the value is a saver function, of the form:
my_saver(cube, target)plus any custom keywords. It is assumed that a saver will accept anappendkeyword if its file format can handle multiple cubes. See alsoiris.io.add_saver().**kwargs (dict, optional) – All other keywords are passed through to the saver function; see the relevant saver documentation for more information on keyword arguments.
Warning
Saving a cube whose data has been loaded lazily (if cube.has_lazy_data() returns True) to the same file it expects to load data from will cause both the data in-memory and the data on disk to be lost.
cube = iris.load_cube("somefile.nc") # The next line causes data loss in 'somefile.nc' and the cube. iris.save(cube, "somefile.nc")
In general, overwriting a file which is the source for any lazily loaded data can result in corruption. Users should proceed with caution when attempting to overwrite an existing file.
Examples
>>> # Setting up >>> import iris >>> my_cube = iris.load_cube(iris.sample_data_path('air_temp.pp')) >>> my_cube_list = iris.load(iris.sample_data_path('space_weather.nc'))
>>> # Save a cube to PP >>> iris.save(my_cube, "myfile.pp")
>>> # Save a cube list to a PP file, appending to the contents of the file >>> # if it already exists >>> iris.save(my_cube_list, "myfile.pp", append=True)
>>> # Save a cube to netCDF, defaults to NETCDF4 file format >>> iris.save(my_cube, "myfile.nc")
>>> # Save a cube list to netCDF, using the NETCDF3_CLASSIC storage option >>> iris.save(my_cube_list, "myfile.nc", netcdf_format="NETCDF3_CLASSIC")
Notes
This function maintains laziness when called; it does not realise data. See more at Real and Lazy Data.
- iris.site_configuration: dict[Literal['cf_profile', 'cf_patch', 'cf_patch_conventions'], Callable | Literal[False] | None] = {}#
Iris site configuration dictionary.
- iris.use_plugin(plugin_name)[source]#
Import a plugin.
- Parameters:
plugin_name (str) – Name of plugin.
Examples
The following:
use_plugin("my_plugin")
is equivalent to:
import iris.plugins.my_plugin
This is useful for plugins that are not used directly, but instead do all their setup on import. In this case, style checkers would not know the significance of the import statement and warn that it is an unused import.
Subpackages#
- iris.analysis
AggregatorAreaWeightedCOUNTGMEANHMEANLinearMAXMAX_RUNMEANMEDIANMINNearestPEAKPERCENTILEPROPORTIONPercentileAggregatorPercentileAggregator.aggregate()PercentileAggregator.aggregate_shape()PercentileAggregator.call_funcPercentileAggregator.cell_methodPercentileAggregator.lazy_aggregate()PercentileAggregator.lazy_funcPercentileAggregator.name()PercentileAggregator.post_process()PercentileAggregator.units_funcPercentileAggregator.update_metadata()
PointInCellRMSSTD_DEVSUMUnstructuredNearestVARIANCEWPERCENTILEWeightedAggregatorWeightedAggregator.aggregate()WeightedAggregator.aggregate_shape()WeightedAggregator.call_funcWeightedAggregator.cell_methodWeightedAggregator.lazy_aggregate()WeightedAggregator.lazy_funcWeightedAggregator.name()WeightedAggregator.post_process()WeightedAggregator.units_funcWeightedAggregator.update_metadata()WeightedAggregator.uses_weighting()
WeightedPercentileAggregatorWeightedPercentileAggregator.aggregate()WeightedPercentileAggregator.aggregate_shape()WeightedPercentileAggregator.call_funcWeightedPercentileAggregator.cell_methodWeightedPercentileAggregator.lazy_aggregate()WeightedPercentileAggregator.lazy_funcWeightedPercentileAggregator.name()WeightedPercentileAggregator.post_process()WeightedPercentileAggregator.units_funcWeightedPercentileAggregator.update_metadata()
clear_phenomenon_identity()create_weighted_aggregator_fn()- Submodules
- iris.common
- iris.experimental
- iris.fileformats
- Subpackages
- Submodules
- iris.fileformats.abf
- iris.fileformats.cf
CFAncillaryDataVariableCFAuxiliaryCoordinateVariableCFBoundaryVariableCFClimatologyVariableCFCoordinateVariableCFDataVariableCFGridMappingVariableCFGroupCFLabelVariableCFMeasureVariableCFReaderCFUGridAuxiliaryCoordinateVariableCFUGridConnectivityVariableCFUGridMeshVariableCFVariablereference_terms
- iris.fileformats.dot
- iris.fileformats.name
- iris.fileformats.name_loaders
- iris.fileformats.nimrod
- iris.fileformats.nimrod_load_rules
- iris.fileformats.pp
- iris.fileformats.pp_load_rules
- iris.fileformats.pp_save_rules
- iris.fileformats.rules
- iris.fileformats.um_cf_map
- iris.io
- iris.mesh
ConnectivityConnectivity.UGRID_CF_ROLESConnectivity.__binary_operator__()Connectivity.__getitem__()Connectivity.attributesConnectivity.cf_roleConnectivity.connectedConnectivity.connected_axisConnectivity.convert_units()Connectivity.copy()Connectivity.core_indices()Connectivity.cube_dims()Connectivity.dtypeConnectivity.has_bounds()Connectivity.has_lazy_indices()Connectivity.indicesConnectivity.indices_by_location()Connectivity.is_compatible()Connectivity.lazy_indices()Connectivity.lazy_location_lengths()Connectivity.locationConnectivity.location_axisConnectivity.location_lengths()Connectivity.long_nameConnectivity.metadataConnectivity.name()Connectivity.ndimConnectivity.rename()Connectivity.shapeConnectivity.standard_nameConnectivity.start_indexConnectivity.summary()Connectivity.transpose()Connectivity.unitsConnectivity.validate_indices()Connectivity.var_nameConnectivity.xml_element()
MeshCoordMeshCoord.__binary_operator__()MeshCoord.__deepcopy__()MeshCoord.attributesMeshCoord.axisMeshCoord.boundsMeshCoord.bounds_dtypeMeshCoord.cell()MeshCoord.cells()MeshCoord.climatologicalMeshCoord.collapsed()MeshCoord.contiguous_bounds()MeshCoord.convert_units()MeshCoord.coord_systemMeshCoord.copy()MeshCoord.core_bounds()MeshCoord.core_points()MeshCoord.cube_dims()MeshCoord.dtypeMeshCoord.from_coord()MeshCoord.guess_bounds()MeshCoord.has_bounds()MeshCoord.has_lazy_bounds()MeshCoord.has_lazy_points()MeshCoord.ignore_axisMeshCoord.intersect()MeshCoord.is_compatible()MeshCoord.is_contiguous()MeshCoord.is_monotonic()MeshCoord.lazy_bounds()MeshCoord.lazy_points()MeshCoord.locationMeshCoord.long_nameMeshCoord.meshMeshCoord.metadataMeshCoord.name()MeshCoord.nboundsMeshCoord.ndimMeshCoord.nearest_neighbour_index()MeshCoord.pointsMeshCoord.rename()MeshCoord.shapeMeshCoord.standard_nameMeshCoord.summary()MeshCoord.unitsMeshCoord.update_from_mesh()MeshCoord.var_nameMeshCoord.xml_element()
MeshXYMeshXY.AXESMeshXY.ELEMENTSMeshXY.TOPOLOGY_DIMENSIONSMeshXY.add_connectivities()MeshXY.add_coords()MeshXY.all_connectivitiesMeshXY.all_coordsMeshXY.attributesMeshXY.boundary_node_connectivityMeshXY.cf_roleMeshXY.connectivities()MeshXY.connectivity()MeshXY.coord()MeshXY.coords()MeshXY.dimension_names()MeshXY.dimension_names_reset()MeshXY.edge_coordsMeshXY.edge_dimensionMeshXY.edge_face_connectivityMeshXY.edge_node_connectivityMeshXY.face_coordsMeshXY.face_dimensionMeshXY.face_edge_connectivityMeshXY.face_face_connectivityMeshXY.face_node_connectivityMeshXY.from_coords()MeshXY.long_nameMeshXY.metadataMeshXY.name()MeshXY.node_coordsMeshXY.node_dimensionMeshXY.remove_connectivities()MeshXY.remove_coords()MeshXY.rename()MeshXY.standard_nameMeshXY.summary()MeshXY.to_MeshCoord()MeshXY.to_MeshCoords()MeshXY.topology_dimensionMeshXY.unitsMeshXY.var_nameMeshXY.xml_element()
load_mesh()load_meshes()recombine_submeshes()save_mesh()- Submodules
Submodules#
- iris.aux_factory
AtmosphereSigmaFactoryAtmosphereSigmaFactory.attributesAtmosphereSigmaFactory.climatologicalAtmosphereSigmaFactory.coord_systemAtmosphereSigmaFactory.dependenciesAtmosphereSigmaFactory.derived_dims()AtmosphereSigmaFactory.long_nameAtmosphereSigmaFactory.make_coord()AtmosphereSigmaFactory.metadataAtmosphereSigmaFactory.name()AtmosphereSigmaFactory.rename()AtmosphereSigmaFactory.standard_nameAtmosphereSigmaFactory.unitsAtmosphereSigmaFactory.update()AtmosphereSigmaFactory.updated()AtmosphereSigmaFactory.var_nameAtmosphereSigmaFactory.xml_element()
AuxCoordFactoryAuxCoordFactory.attributesAuxCoordFactory.climatologicalAuxCoordFactory.coord_systemAuxCoordFactory.dependenciesAuxCoordFactory.derived_dims()AuxCoordFactory.long_nameAuxCoordFactory.make_coord()AuxCoordFactory.metadataAuxCoordFactory.name()AuxCoordFactory.rename()AuxCoordFactory.standard_nameAuxCoordFactory.unitsAuxCoordFactory.update()AuxCoordFactory.updated()AuxCoordFactory.var_nameAuxCoordFactory.xml_element()
HybridHeightFactoryHybridHeightFactory.attributesHybridHeightFactory.climatologicalHybridHeightFactory.coord_systemHybridHeightFactory.dependenciesHybridHeightFactory.derived_dims()HybridHeightFactory.long_nameHybridHeightFactory.make_coord()HybridHeightFactory.metadataHybridHeightFactory.name()HybridHeightFactory.rename()HybridHeightFactory.standard_nameHybridHeightFactory.unitsHybridHeightFactory.update()HybridHeightFactory.updated()HybridHeightFactory.var_nameHybridHeightFactory.xml_element()
HybridPressureFactoryHybridPressureFactory.attributesHybridPressureFactory.climatologicalHybridPressureFactory.coord_systemHybridPressureFactory.dependenciesHybridPressureFactory.derived_dims()HybridPressureFactory.long_nameHybridPressureFactory.make_coord()HybridPressureFactory.metadataHybridPressureFactory.name()HybridPressureFactory.rename()HybridPressureFactory.standard_nameHybridPressureFactory.unitsHybridPressureFactory.update()HybridPressureFactory.updated()HybridPressureFactory.var_nameHybridPressureFactory.xml_element()
OceanSFactoryOceanSFactory.attributesOceanSFactory.climatologicalOceanSFactory.coord_systemOceanSFactory.dependenciesOceanSFactory.derived_dims()OceanSFactory.long_nameOceanSFactory.make_coord()OceanSFactory.metadataOceanSFactory.name()OceanSFactory.rename()OceanSFactory.standard_nameOceanSFactory.unitsOceanSFactory.update()OceanSFactory.updated()OceanSFactory.var_nameOceanSFactory.xml_element()
OceanSg1FactoryOceanSg1Factory.attributesOceanSg1Factory.climatologicalOceanSg1Factory.coord_systemOceanSg1Factory.dependenciesOceanSg1Factory.derived_dims()OceanSg1Factory.long_nameOceanSg1Factory.make_coord()OceanSg1Factory.metadataOceanSg1Factory.name()OceanSg1Factory.rename()OceanSg1Factory.standard_nameOceanSg1Factory.unitsOceanSg1Factory.update()OceanSg1Factory.updated()OceanSg1Factory.var_nameOceanSg1Factory.xml_element()
OceanSg2FactoryOceanSg2Factory.attributesOceanSg2Factory.climatologicalOceanSg2Factory.coord_systemOceanSg2Factory.dependenciesOceanSg2Factory.derived_dims()OceanSg2Factory.long_nameOceanSg2Factory.make_coord()OceanSg2Factory.metadataOceanSg2Factory.name()OceanSg2Factory.rename()OceanSg2Factory.standard_nameOceanSg2Factory.unitsOceanSg2Factory.update()OceanSg2Factory.updated()OceanSg2Factory.var_nameOceanSg2Factory.xml_element()
OceanSigmaFactoryOceanSigmaFactory.attributesOceanSigmaFactory.climatologicalOceanSigmaFactory.coord_systemOceanSigmaFactory.dependenciesOceanSigmaFactory.derived_dims()OceanSigmaFactory.long_nameOceanSigmaFactory.make_coord()OceanSigmaFactory.metadataOceanSigmaFactory.name()OceanSigmaFactory.rename()OceanSigmaFactory.standard_nameOceanSigmaFactory.unitsOceanSigmaFactory.update()OceanSigmaFactory.updated()OceanSigmaFactory.var_nameOceanSigmaFactory.xml_element()
OceanSigmaZFactoryOceanSigmaZFactory.attributesOceanSigmaZFactory.climatologicalOceanSigmaZFactory.coord_systemOceanSigmaZFactory.dependenciesOceanSigmaZFactory.derived_dims()OceanSigmaZFactory.long_nameOceanSigmaZFactory.make_coord()OceanSigmaZFactory.metadataOceanSigmaZFactory.name()OceanSigmaZFactory.rename()OceanSigmaZFactory.standard_nameOceanSigmaZFactory.unitsOceanSigmaZFactory.update()OceanSigmaZFactory.updated()OceanSigmaZFactory.var_nameOceanSigmaZFactory.xml_element()
- iris.config
- iris.coord_categorisation
- iris.coord_systems
AlbersEqualAreaAlbersEqualArea.__eq__()AlbersEqualArea.as_cartopy_crs()AlbersEqualArea.as_cartopy_projection()AlbersEqualArea.ellipsoidAlbersEqualArea.false_eastingAlbersEqualArea.false_northingAlbersEqualArea.grid_mapping_nameAlbersEqualArea.latitude_of_projection_originAlbersEqualArea.longitude_of_central_meridianAlbersEqualArea.standard_parallelsAlbersEqualArea.xml_element()
CoordSystemGeogCSGeostationaryGeostationary.__eq__()Geostationary.as_cartopy_crs()Geostationary.as_cartopy_projection()Geostationary.ellipsoidGeostationary.false_eastingGeostationary.false_northingGeostationary.grid_mapping_nameGeostationary.latitude_of_projection_originGeostationary.longitude_of_projection_originGeostationary.perspective_point_heightGeostationary.sweep_angle_axisGeostationary.xml_element()
LambertAzimuthalEqualAreaLambertAzimuthalEqualArea.__eq__()LambertAzimuthalEqualArea.as_cartopy_crs()LambertAzimuthalEqualArea.as_cartopy_projection()LambertAzimuthalEqualArea.ellipsoidLambertAzimuthalEqualArea.false_eastingLambertAzimuthalEqualArea.false_northingLambertAzimuthalEqualArea.grid_mapping_nameLambertAzimuthalEqualArea.latitude_of_projection_originLambertAzimuthalEqualArea.longitude_of_projection_originLambertAzimuthalEqualArea.xml_element()
LambertConformalLambertConformal.__eq__()LambertConformal.as_cartopy_crs()LambertConformal.as_cartopy_projection()LambertConformal.central_latLambertConformal.central_lonLambertConformal.ellipsoidLambertConformal.false_eastingLambertConformal.false_northingLambertConformal.grid_mapping_nameLambertConformal.secant_latitudesLambertConformal.xml_element()
MercatorOSGBObliqueMercatorObliqueMercator.__eq__()ObliqueMercator.as_cartopy_crs()ObliqueMercator.as_cartopy_projection()ObliqueMercator.azimuth_of_central_lineObliqueMercator.ellipsoidObliqueMercator.false_eastingObliqueMercator.false_northingObliqueMercator.grid_mapping_nameObliqueMercator.latitude_of_projection_originObliqueMercator.longitude_of_projection_originObliqueMercator.scale_factor_at_projection_originObliqueMercator.xml_element()
OrthographicOrthographic.__eq__()Orthographic.as_cartopy_crs()Orthographic.as_cartopy_projection()Orthographic.ellipsoidOrthographic.false_eastingOrthographic.false_northingOrthographic.grid_mapping_nameOrthographic.latitude_of_projection_originOrthographic.longitude_of_projection_originOrthographic.xml_element()
PolarStereographicPolarStereographic.__eq__()PolarStereographic.as_cartopy_crs()PolarStereographic.as_cartopy_projection()PolarStereographic.central_latPolarStereographic.central_lonPolarStereographic.ellipsoidPolarStereographic.false_eastingPolarStereographic.false_northingPolarStereographic.grid_mapping_namePolarStereographic.scale_factor_at_projection_originPolarStereographic.true_scale_latPolarStereographic.xml_element()
RotatedGeogCSRotatedMercatorRotatedMercator.__eq__()RotatedMercator.as_cartopy_crs()RotatedMercator.as_cartopy_projection()RotatedMercator.azimuth_of_central_lineRotatedMercator.ellipsoidRotatedMercator.false_eastingRotatedMercator.false_northingRotatedMercator.grid_mapping_nameRotatedMercator.latitude_of_projection_originRotatedMercator.longitude_of_projection_originRotatedMercator.scale_factor_at_projection_originRotatedMercator.xml_element()
StereographicStereographic.__eq__()Stereographic.as_cartopy_crs()Stereographic.as_cartopy_projection()Stereographic.central_latStereographic.central_lonStereographic.ellipsoidStereographic.false_eastingStereographic.false_northingStereographic.grid_mapping_nameStereographic.scale_factor_at_projection_originStereographic.true_scale_latStereographic.xml_element()
TransverseMercatorTransverseMercator.__eq__()TransverseMercator.as_cartopy_crs()TransverseMercator.as_cartopy_projection()TransverseMercator.ellipsoidTransverseMercator.false_eastingTransverseMercator.false_northingTransverseMercator.grid_mapping_nameTransverseMercator.latitude_of_projection_originTransverseMercator.longitude_of_central_meridianTransverseMercator.scale_factor_at_central_meridianTransverseMercator.xml_element()
VerticalPerspectiveVerticalPerspective.__eq__()VerticalPerspective.as_cartopy_crs()VerticalPerspective.as_cartopy_projection()VerticalPerspective.ellipsoidVerticalPerspective.false_eastingVerticalPerspective.false_northingVerticalPerspective.grid_mapping_nameVerticalPerspective.latitude_of_projection_originVerticalPerspective.longitude_of_projection_originVerticalPerspective.perspective_point_heightVerticalPerspective.xml_element()
- iris.coords
AncillaryVariableAncillaryVariable.__binary_operator__()AncillaryVariable.__getitem__()AncillaryVariable.attributesAncillaryVariable.convert_units()AncillaryVariable.copy()AncillaryVariable.core_data()AncillaryVariable.cube_dims()AncillaryVariable.dataAncillaryVariable.dtypeAncillaryVariable.has_bounds()AncillaryVariable.has_lazy_data()AncillaryVariable.is_compatible()AncillaryVariable.lazy_data()AncillaryVariable.long_nameAncillaryVariable.metadataAncillaryVariable.name()AncillaryVariable.ndimAncillaryVariable.rename()AncillaryVariable.shapeAncillaryVariable.standard_nameAncillaryVariable.summary()AncillaryVariable.unitsAncillaryVariable.var_nameAncillaryVariable.xml_element()
AuxCoordAuxCoord.__binary_operator__()AuxCoord.__getitem__()AuxCoord.attributesAuxCoord.boundsAuxCoord.bounds_dtypeAuxCoord.cell()AuxCoord.cells()AuxCoord.climatologicalAuxCoord.collapsed()AuxCoord.contiguous_bounds()AuxCoord.convert_units()AuxCoord.coord_systemAuxCoord.copy()AuxCoord.core_bounds()AuxCoord.core_points()AuxCoord.cube_dims()AuxCoord.dtypeAuxCoord.from_coord()AuxCoord.guess_bounds()AuxCoord.has_bounds()AuxCoord.has_lazy_bounds()AuxCoord.has_lazy_points()AuxCoord.ignore_axisAuxCoord.intersect()AuxCoord.is_compatible()AuxCoord.is_contiguous()AuxCoord.is_monotonic()AuxCoord.lazy_bounds()AuxCoord.lazy_points()AuxCoord.long_nameAuxCoord.metadataAuxCoord.name()AuxCoord.nboundsAuxCoord.ndimAuxCoord.nearest_neighbour_index()AuxCoord.pointsAuxCoord.rename()AuxCoord.shapeAuxCoord.standard_nameAuxCoord.summary()AuxCoord.unitsAuxCoord.var_nameAuxCoord.xml_element()
CellCellMeasureCellMeasure.__binary_operator__()CellMeasure.__getitem__()CellMeasure.attributesCellMeasure.convert_units()CellMeasure.copy()CellMeasure.core_data()CellMeasure.cube_dims()CellMeasure.dataCellMeasure.dtypeCellMeasure.has_bounds()CellMeasure.has_lazy_data()CellMeasure.is_compatible()CellMeasure.lazy_data()CellMeasure.long_nameCellMeasure.measureCellMeasure.metadataCellMeasure.name()CellMeasure.ndimCellMeasure.rename()CellMeasure.shapeCellMeasure.standard_nameCellMeasure.summary()CellMeasure.unitsCellMeasure.var_nameCellMeasure.xml_element()
CellMethodCoordCoord.__binary_operator__()Coord.__getitem__()Coord.attributesCoord.boundsCoord.bounds_dtypeCoord.cell()Coord.cells()Coord.climatologicalCoord.collapsed()Coord.contiguous_bounds()Coord.convert_units()Coord.coord_systemCoord.copy()Coord.core_bounds()Coord.core_points()Coord.cube_dims()Coord.dtypeCoord.from_coord()Coord.guess_bounds()Coord.has_bounds()Coord.has_lazy_bounds()Coord.has_lazy_points()Coord.ignore_axisCoord.intersect()Coord.is_compatible()Coord.is_contiguous()Coord.is_monotonic()Coord.lazy_bounds()Coord.lazy_points()Coord.long_nameCoord.metadataCoord.name()Coord.nboundsCoord.ndimCoord.nearest_neighbour_index()Coord.pointsCoord.rename()Coord.shapeCoord.standard_nameCoord.summary()Coord.unitsCoord.var_nameCoord.xml_element()
CoordExtentDEFAULT_IGNORE_AXISDimCoordDimCoord.__binary_operator__()DimCoord.__deepcopy__()DimCoord.attributesDimCoord.boundsDimCoord.bounds_dtypeDimCoord.cell()DimCoord.cells()DimCoord.circularDimCoord.climatologicalDimCoord.collapsed()DimCoord.contiguous_bounds()DimCoord.convert_units()DimCoord.coord_systemDimCoord.copy()DimCoord.core_bounds()DimCoord.core_points()DimCoord.cube_dims()DimCoord.dtypeDimCoord.from_coord()DimCoord.from_regular()DimCoord.guess_bounds()DimCoord.has_bounds()DimCoord.has_lazy_bounds()DimCoord.has_lazy_points()DimCoord.ignore_axisDimCoord.intersect()DimCoord.is_compatible()DimCoord.is_contiguous()DimCoord.is_monotonic()DimCoord.lazy_bounds()DimCoord.lazy_points()DimCoord.long_nameDimCoord.metadataDimCoord.name()DimCoord.nboundsDimCoord.ndimDimCoord.nearest_neighbour_index()DimCoord.pointsDimCoord.rename()DimCoord.shapeDimCoord.standard_nameDimCoord.summary()DimCoord.unitsDimCoord.var_nameDimCoord.xml_element()
- iris.cube
CubeCube.__copy__()Cube.__getitem__()Cube.add_ancillary_variable()Cube.add_aux_coord()Cube.add_aux_factory()Cube.add_cell_measure()Cube.add_cell_method()Cube.add_component()Cube.add_dim_coord()Cube.aggregated_by()Cube.ancillary_variable()Cube.ancillary_variable_dims()Cube.ancillary_variables()Cube.attributesCube.aux_coordsCube.aux_factoriesCube.aux_factory()Cube.cell_measure()Cube.cell_measure_dims()Cube.cell_measures()Cube.cell_methodsCube.collapsed()Cube.component()Cube.component_dims()Cube.components()Cube.convert_units()Cube.coord()Cube.coord_dims()Cube.coord_system()Cube.coord_systems()Cube.coords()Cube.copy()Cube.core_data()Cube.dataCube.derived_coordsCube.dim_coordsCube.dtypeCube.extended_grid_mappingCube.extract()Cube.has_lazy_data()Cube.interpolate()Cube.intersection()Cube.is_compatible()Cube.is_dataless()Cube.lazy_data()Cube.locationCube.long_nameCube.meshCube.mesh_dim()Cube.metadataCube.name()Cube.ndimCube.regrid()Cube.remove_ancillary_variable()Cube.remove_aux_factory()Cube.remove_cell_measure()Cube.remove_component()Cube.remove_coord()Cube.rename()Cube.replace_coord()Cube.rolling_window()Cube.shapeCube.slices()Cube.slices_over()Cube.standard_nameCube.subset()Cube.summary()Cube.transpose()Cube.unitsCube.var_nameCube.xml()
CubeAttrsDictCubeAttrsDict.__delitem__()CubeAttrsDict.__getitem__()CubeAttrsDict.__ior__()CubeAttrsDict.__iter__()CubeAttrsDict.__or__()CubeAttrsDict.__ror__()CubeAttrsDict.__setitem__()CubeAttrsDict.clear()CubeAttrsDict.copy()CubeAttrsDict.fromkeys()CubeAttrsDict.get()CubeAttrsDict.globalsCubeAttrsDict.items()CubeAttrsDict.keys()CubeAttrsDict.localsCubeAttrsDict.pop()CubeAttrsDict.popitem()CubeAttrsDict.setdefault()CubeAttrsDict.update()CubeAttrsDict.values()
CubeListCubeList.__getitem__()CubeList.__getslice__()CubeList.__iadd__()CubeList.__repr__()CubeList.__setitem__()CubeList.__str__()CubeList.append()CubeList.clear()CubeList.combine()CubeList.combine_cube()CubeList.concatenate()CubeList.concatenate_cube()CubeList.copy()CubeList.count()CubeList.extend()CubeList.extract()CubeList.extract_cube()CubeList.extract_cubes()CubeList.extract_overlapping()CubeList.index()CubeList.insert()CubeList.merge()CubeList.merge_cube()CubeList.pop()CubeList.realise_data()CubeList.remove()CubeList.reverse()CubeList.sort()CubeList.xml()
- iris.exceptions
AncillaryVariableNotFoundErrorCFParseErrorCannotAddErrorCellMeasureNotFoundErrorConcatenateErrorConnectivityNotFoundErrorConstraintMismatchErrorCoordinateCollapseErrorCoordinateMultiDimErrorCoordinateNotFoundErrorCoordinateNotRegularErrorCubeComponentNotFoundErrorDatalessErrorDuplicateDataErrorIgnoreCubeExceptionInvalidCubeErrorIrisErrorLazyAggregatorErrorMergeErrorNotYetImplementedErrorTranslationErrorUnitConversionError
- iris.iterate
- iris.loading
- iris.palette
- iris.pandas
- iris.plot
- iris.quickplot
- iris.symbols
- iris.time
- iris.util
CMLSettingsapprox_equal()array_checksum()array_equal()array_summary()between()broadcast_to_shape()clip_string()column_slices_generator()combine_cubes()create_temp_filename()delta()demote_dim_coord_to_aux_coord()describe_diff()equalise_attributes()equalise_cubes()file_is_newer_than()find_discontiguities()format_array()guess_coord_axis()is_masked()is_regular()make_gridcube()mask_cube()mask_cube_from_shape()mask_cube_from_shapefile()monotonic()new_axis()points_step()promote_aux_coord_to_dim_coord()regular_points()regular_step()reverse()rolling_window()squeeze()unify_time_units()
- iris.warnings
IrisCannotAddWarningIrisCfInvalidCoordParamWarningIrisCfLabelVarWarningIrisCfLoadWarningIrisCfMissingVarWarningIrisCfNonSpanningVarWarningIrisCfSaveWarningIrisCfWarningIrisDefaultingWarningIrisFactoryCoordNotFoundWarningIrisGeometryExceedWarningIrisGuessBoundsWarningIrisIgnoringBoundsWarningIrisIgnoringWarningIrisImpossibleUpdateWarningIrisLoadWarningIrisMaskValueMatchWarningIrisNimrodTranslationWarningIrisPpClimModifiedWarningIrisSaveWarningIrisSaverFillValueWarningIrisUnknownCellMethodWarningIrisUnsupportedPlottingWarningIrisUserWarningIrisVagueMetadataWarning