xcdat.bounds.BoundsAccessor#
- class xcdat.bounds.BoundsAccessor(dataset)[source]#
An accessor class that provides bounds attributes and methods on xarray Datasets through the
.bounds
attribute.Examples
Import BoundsAccessor class:
>>> import xcdat # or from xcdat import bounds
Use BoundsAccessor class:
>>> ds = xcdat.open_dataset("/path/to/file") >>> >>> ds.bounds.<attribute> >>> ds.bounds.<method> >>> ds.bounds.<property>
- Parameters:
dataset (
xr.Dataset
) – A Dataset object.
Examples
Import:
>>> from xcdat import bounds
Return dictionary of axis and coordinate keys mapped to bounds:
>>> ds.bounds.map
Return list of keys for bounds data variables:
>>> ds.bounds.keys
Add missing coordinate bounds for supported axes in the Dataset:
>>> ds = ds.bounds.add_missing_bounds()
Get coordinate bounds if they exist:
>>> lat_bounds = ds.bounds.get_bounds("Y") >>> lon_bounds = ds.bounds.get_bounds("X") >>> time_bounds = ds.bounds.get_bounds("T")
Add coordinate bounds for a specific axis if they don’t exist:
>>> ds = ds.bounds.add_bounds("Y")
Methods
__init__
(dataset)add_bounds
(axis[, width])Add bounds for an axis using its coordinate points.
add_missing_bounds
([width])Adds missing coordinate bounds for supported axes in the Dataset.
get_bounds
(axis[, var_key])Gets coordinate bounds.
Attributes
Returns a list of keys for the bounds data variables in the Dataset.
Returns a map of axis and coordinates keys to their bounds.
- _dataset#
- property map#
Returns a map of axis and coordinates keys to their bounds.
The dictionary provides all valid CF compliant keys for axis and coordinates. For example, latitude will includes keys for “lat”, “latitude”, and “Y”.
- Returns:
Dict[str
,Optional[xr.DataArray]]
– Dictionary mapping axis and coordinate keys to their bounds.
- property keys#
Returns a list of keys for the bounds data variables in the Dataset.
- Returns:
List[str]
– A list of sorted bounds data variable keys.
- add_missing_bounds(width=0.5)[source]#
Adds missing coordinate bounds for supported axes in the Dataset.
This function loops through the Dataset’s axes and attempts to adds bounds to its coordinates if they don’t exist. The coordinates must meet the following criteria in order to add bounds:
The axis for the coordinates are “X”, “Y”, “T”, or “Z”
Coordinates are a single dimension, not multidimensional
Coordinates are a length > 1 (not singleton)
Bounds must not already exist. * Determined by attempting to map the coordinate variable’s “bounds” attr (if set) to the bounds data variable of the same key.
- Parameters:
width (
float
, optional) – Width of the bounds relative to the position of the nearest points, by default 0.5.- Returns:
xr.Dataset
- get_bounds(axis, var_key=None)[source]#
Gets coordinate bounds.
- Parameters:
axis (
CFAxisKey
) – The CF axis key (“X”, “Y”, “T”, “Z”).var_key (
Optional[str]
) – The key of the coordinate or data variable to get axis bounds for. This parameter is useful if you only want the single bounds DataArray related to the axis on the variable (e.g., “tas” has a “lat” dimension and you want “lat_bnds”).
- Returns:
Union[xr.Dataset
,xr.DataArray]
– A Dataset of N bounds variables, or a single bounds variable DataArray.- Raises:
ValueError – If an incorrect
axis
argument is passed.KeyError: – If bounds were not found for the specific
axis
.
- add_bounds(axis, width=0.5)[source]#
Add bounds for an axis using its coordinate points.
This method loops over the axis’s coordinate variables and attempts to add bounds for each of them if they don’t exist. The coordinates must meet the following criteria in order to add bounds:
The axis for the coordinates are “X”, “Y”, “T”, or “Z”
Coordinates are single dimensional, not multidimensional
Coordinates are a length > 1 (not singleton)
Bounds must not already exist. * Determined by attempting to map the coordinate variable’s “bounds” attr (if set) to the bounds data variable of the same key.
- Parameters:
axis (
CFAxisKey
) – The CF axis key (“X”, “Y”, “T”, or “Z”).width (
float
, optional) – Width of the bounds relative to the position of the nearest points, by default 0.5.
- Returns:
xr.Dataset
– The dataset with bounds added.- Raises:
ValueError – If bounds already exist. They must be dropped first.
- _get_bounds_keys(axis)[source]#
Get bounds keys for an axis’s coordinate variables in the dataset.
This function attempts to map bounds to an axis using
cf_xarray
and its interpretation of the CF “bounds” attribute.- Parameters:
axis (
CFAxisKey
) – The CF axis key (“X”, “Y”, “T”, or “Z”).- Returns:
List[str]
– The axis bounds key(s).
- _create_bounds(axis, coord_var, width)[source]#
Creates bounds for an axis using its coordinate points.
- Parameters:
axis (
CFAxisKey
) – The CF axis key (“X”, “Y”, “T” ,”Z”).coord_var (
xr.DataArray
) – The coordinate variable for the axis.width (
float
) – Width of the bounds relative to the position of the nearest points.
- Returns:
xr.DataArray
– The axis coordinate bounds.- Raises:
ValueError – If coords dimensions does not equal 1.
Notes
Based on [1]
iris.coords._guess_bounds
and [2]cf_xarray.accessor.add_bounds
References