cf.DomainTopology


class cf.DomainTopology(*args, **kwargs)[source]

A domain topology construct of the CF data model.

A domain topology construct defines the geospatial topology of cells arranged in two or three dimensions in real space but indexed by a single (discrete) domain axis construct, and at most one domain topology construct may be associated with any such domain axis. The topology describes topological relationships between the cells - spatial relationships which do not depend on the cell locations - and is represented by an undirected graph, i.e. a mesh in which pairs of nodes are connected by links. Each node has a unique arbitrary identity that is independent of its spatial location, and different nodes may be spatially co-located.

The topology may only describe cells that have a common spatial dimensionality, one of:

  • Point: A point is zero-dimensional and has no boundary vertices.

  • Edge: An edge is one-dimensional and corresponds to a line

    connecting two boundary vertices.

  • Face: A face is two-dimensional and corresponds to a surface

    enclosed by a set of edges.

Each type of cell implies a restricted topology for which only some kinds of mesh are allowed. For point cells, every node corresponds to exactly one cell; and two cells have a topological relationship if and only if their nodes are connected by a mesh link. For edge and face cells, every node corresponds to a boundary vertex of a cell; the same node can represent vertices in multiple cells; every link in the mesh connects two cell boundary vertices; and two cells have a topological relationship if and only if they share at least one node.

A domain topology construct contains an array defining the mesh, and properties to describe it. There must be a property indicating the spatial dimensionality of the cells. The array values comprise the node identities, and all array elements that refer to the same node must contain the same value, which must differ from any other value in the array. The array spans the domain axis construct and also has a ragged dimension, whose function depends on the spatial dimensionality of the cells.

For each point cell, the first element along the ragged dimension contains the node identity of the cell, and the following elements contain in arbitrary order the identities of all the cells to which it is connected by a mesh link.

For each edge or face cell, the elements along the ragged dimension contain the node identities of the boundary vertices of the cell, in the same order that the boundary vertices are stored by the auxiliary coordinate constructs. Each boundary vertex except the last is connected by a mesh link to the next vertex along the ragged dimension, and the last vertex is connected to the first.

When a domain topology construct is present it is considered to be definitive and must be used in preference to the topology implied by inspection of any other constructs, which is not guaranteed to be the same.

In CF-netCDF a domain topology construct can only be provided for a UGRID mesh topology variable. The information in the construct array is supplied by the UGRID “edge_nodes_connectivity” variable (for edge cells) or “face_nodes_connectivity” variable (for face cells). The topology for node cells may be provided by any of these three UGRID variables. The integer indices contained in the UGRID variable may be used as the mesh node identities, although the CF data model attaches no significance to the values other than the fact that some values are the same as others. The spatial dimensionality property is provided by the “location” attribute of a variable that references the UGRID mesh topology variable, i.e. a data variable or a UGRID location index set variable.

A single UGRID mesh topology defines multiple domain constructs and defines how they relate to each other. For instance, when “face_node_connectivity” and “edge_node_connectivity” variables are both present there are three implied domain constructs - one each for face, edge and point cells - all of which have the same mesh and so are explicitly linked (e.g. it is known which edge cells define each face cell). The CF data model has no mechanism for explicitly recording such relationships between multiple domain constructs, however whether or not two domains have the same mesh may be reliably determined by inspection, thereby allowing the creation of netCDF datasets containing UGRID mesh topology variables.

The restrictions on the type of mesh that may be used with a given cell spatial dimensionality excludes some meshes which can be described by an undirected graph, but is consistent with UGRID encoding within CF-netCDF. UGRID also describes meshes for three-dimensional volume cells that correspond to a volume enclosed by a set of faces, but how the nodes relate to volume boundary vertices is undefined and so volume cells are currently omitted from the CF data model.

See CF Appendix I “The CF Data Model”.

NetCDF interface

The netCDF variable name of the UGRID mesh topology variable may be accessed with the nc_set_variable, nc_get_variable, nc_del_variable, and nc_has_variable methods.

Added in version 3.16.0.

Initialisation

Parameters:
cell: str, optional

The cell type that indicates the spatial dimensionality of the cells, one of 'point' (a 0-d point with no boundary vertices), 'edge' (a 1-d line connecting two boundary vertices), or 'face' (a 2-d surface enclosed by a set of edges).

properties: dict, optional

Set descriptive properties. The dictionary keys are property names, with corresponding values.

Properties may also be set after initialisation with the set_properties and set_property methods.

Parameter example:

properties={'long_name': 'face to node mapping'}

data: data_like, optional

Set the data.

A data_like object is any object that can be converted to a Data object, i.e. numpy array_like objects, Data objects, and cf instances that contain Data objects.

The data also may be set after initialisation with the set_data method.

source: optional

Convert source, which can be any type of object, to a DomainTopology instance.

All other parameters, apart from copy, are ignored and their values are instead inferred from source by assuming that it has the DomainTopology API. Any parameters that can not be retrieved from source in this way are assumed to have their default value.

Note that if x is also a DomainTopology instance then cf.DomainTopology(source=x) is equivalent to x.copy().

copy: bool, optional

If True (the default) then deep copy the input parameters prior to initialisation. By default the parameters are not deep copied.

Inspection

Methods

dump

A full description of the domain topology construct.

identity

Return the canonical identity.

identities

Return all possible identities.

inspect

Inspect the object for debugging.

Attributes

construct_type

Return a description of the construct type.

id

An identity for the DomainTopology object.

Topology

Methods

del_cell

Remove the cell type.

get_cell

Return the cell type.

has_cell

Whether the cell type has been set.

set_cell

Set the cell type.

normalise

Normalise the data values.

Attributes

cell

The cell type.

Selection

Methods

match_by_identity

Whether or not the construct identity satisfies conditions.

match_by_naxes

Whether or not the data has a given dimensionality.

match_by_ncvar

Whether or not the netCDF variable name satisfies conditions.

match_by_property

Whether or not properties satisfy conditions.

match_by_units

Whether or not the construct has given units.

Properties

Methods

del_property

Remove a property.

get_property

Get a CF property.

has_property

Whether a property has been set.

set_property

Set a property.

properties

Return all properties.

clear_properties

Remove all properties.

del_properties

Remove properties.

set_properties

Set properties.

Attributes

add_offset

The add_offset CF property.

calendar

The calendar CF property.

comment

The comment CF property.

_FillValue

The _FillValue CF property.

history

The history CF property.

leap_month

The leap_month CF property.

leap_year

The leap_year CF property.

long_name

The long_name CF property.

missing_value

The missing_value CF property.

month_lengths

The month_lengths CF property.

scale_factor

The scale_factor CF property.

standard_name

The standard_name CF property.

units

The units CF property.

valid_max

The valid_max CF property.

valid_min

The valid_min CF property.

valid_range

The valid_range CF property.

Units

Methods

to_units

Change the data array units.

override_units

Override the units.

override_calendar

Override the calendar of date-time units.

Attributes

Units

The cf.Units object containing the units of the data array.

Data

Attributes

array

A numpy array deep copy of the data.

Data

Deprecated at version 3.0.0, use data attribute or get_data method instead.

data

The Data object containing the data array.

datetime_array

An independent numpy array of date-time objects.

datum

Return an element of the data array as a standard Python scalar.

dtype

The numpy data type of the data array.

isscalar

True if the data array is scalar.

ndim

The number of data dimensions.

shape

A tuple of the data array's dimension sizes.

size

The number elements in the data.

varray

A numpy array view of the data.

Methods

to_dask_array

Convert the data to a dask array.

__getitem__

Return a subspace defined by indices.

del_data

Remove the data.

get_data

Return the data.

has_data

Whether or not the construct has data.

set_data

Set the data.

Rearranging elements

flatten

Flatten axes of the data.

flip

Flip (reverse the direction of) data dimensions.

insert_dimension

Expand the shape of the data array.

roll

Roll the data along one or more axes.

squeeze

Remove size one axes from the data array.

swapaxes

Interchange two axes of an array.

transpose

Permute the axes of the data array.

Expanding the data

halo

Expand the data by adding a halo.

pad_missing

Pad an axis with missing data.

Data array mask

apply_masking

Apply masking as defined by the CF conventions.

count

Count the non-masked elements of the data.

count_masked

Count the masked elements of the data.

fill_value

Return the data array missing data value.

filled

Replace masked elements with a fill value.

masked_invalid

Mask the array where invalid values occur (NaN or inf).

binary_mask

A binary (0 and 1) missing data mask of the data array.

hardmask

Whether the mask is hard (True) or soft (False).

mask

The mask of the data array.

Changing data values

__setitem__

Called to implement assignment to x[indices]

masked_invalid

Mask the array where invalid values occur (NaN or inf).

subspace

Return a new variable whose data is subspaced.

where

Set data array elements depending on a condition.

Miscellaneous

rechunk

Change the chunk structure of the data.

close

Close all files referenced by the construct.

convert_reference_time

Convert reference time data values to have new units.

cyclic

Get or set the cyclicity of an axis.

period

Return or set the period of the data.

iscyclic

Whether or not a given axis is cyclic.

isperiodic

True if a given axis is periodic.

get_original_filenames

The names of files containing the original data and metadata.

has_bounds

Whether or not there are cell bounds.

persist

Persist data into memory.

Quantization

Methods

get_quantization

Get quantization metadata.

get_quantize_on_write

Get a quantize-on-write instruction.

Miscellaneous

Methods

concatenate

Join a together sequence of DomainTopology.

copy

Return a deep copy.

creation_commands

Returns the commands to create the domain topology construct.

equals

Whether two instances are the same.

to_memory

Bring data on disk into memory.

uncompress

Uncompress the construct.

Attributes

T

True if and only if the data are coordinates for a CF 'T' axis.

X

Always False.

Y

Always False.

Z

Always False.

id

An identity for the DomainTopology object.

Mathematical operations

Methods

Trigonometrical and hyperbolic functions

arccos

Take the trigonometric inverse cosine of the data element- wise.

arccosh

Take the inverse hyperbolic cosine of the data element-wise.

arcsin

Take the trigonometric inverse sine of the data element-wise.

arcsinh

Take the inverse hyperbolic sine of the data element-wise.

arctan

Take the trigonometric inverse tangent of the data element- wise.

arctanh

Take the inverse hyperbolic tangent of the data element-wise.

cos

Take the trigonometric cosine of the data element-wise.

cosh

Take the hyperbolic cosine of the data element-wise.

sin

Take the trigonometric sine of the data element-wise.

sinh

Take the hyperbolic sine of the data element-wise.

tan

Take the trigonometric tangent of the data element-wise.

tanh

Take the hyperbolic tangent of the data array.

Rounding and truncation

ceil

The ceiling of the data, element-wise.

clip

Limit the values in the data.

floor

Floor the data array, element-wise.

rint

Round the data to the nearest integer, element-wise.

round

Round the data to the given number of decimals.

trunc

Truncate the data, element-wise.

Statistical collapses

max

Alias for maximum.

mean

The unweighted mean the data array.

mid_range

The unweighted average of the maximum and minimum of the data array.

min

Alias for minimum.

range

The absolute difference between the maximum and minimum of the data array.

sample_size

The number of non-missing data elements in the data array.

sum

The sum of the data array.

sd

Alias for standard_deviation

var

Alias for variance

standard_deviation

The unweighted sample standard deviation of the data array.

variance

The unweighted sample variance of the data array.

maximum

The maximum of the data array.

minimum

The minimum of the data array.

Exponential and logarithmic functions

exp

The exponential of the data, element-wise.

log

The logarithm of the data array.

Date-time operations

Attributes

day

The day of each date-time data array element.

datetime_array

An independent numpy array of date-time objects.

hour

The hour of each date-time data array element.

minute

The minute of each date-time data array element.

month

The month of each date-time data array element.

reference_datetime

The reference date-time of units of elapsed time.

second

The second of each date-time data array element.

year

The year of each date-time data array element.

Logic functions

Truth value testing

all

Test whether all data elements evaluate to True.

any

Test whether any data elements evaluate to True.

Comparison

allclose

Test whether all data are element-wise equal to other, broadcastable data.

equals

Whether two instances are the same.

equivalent

True if two constructs are equal, False otherwise.

Set operations

unique

The unique elements of the data.

NetCDF

Methods

nc_del_variable

Remove the netCDF variable name.

nc_get_variable

Return the netCDF variable name.

nc_has_variable

Whether the netCDF variable name has been set.

nc_set_variable

Set the netCDF variable name.

nc_clear_dataset_chunksizes

Clear the dataset chunking strategy for the data.

nc_dataset_chunksizes

Get the dataset chunking strategy for the data.

nc_set_dataset_chunksizes

Set the dataset chunking strategy.

Aggregation

Methods

file_directories

The directories of files containing parts of the data.

replace_directory

Replace a file directory in-place.

NetCDF

Methods

nc_del_variable

Remove the netCDF variable name.

nc_get_variable

Return the netCDF variable name.

nc_has_variable

Whether the netCDF variable name has been set.

nc_set_variable

Set the netCDF variable name.

Groups

Methods

nc_variable_groups

Return the netCDF variable group hierarchy.

nc_clear_variable_groups

Remove the netCDF variable group hierarchy.

nc_set_variable_groups

Set the netCDF variable group hierarchy.

Dataset chunks

Methods

nc_dataset_chunksizes

Get the dataset chunking strategy for the data.

nc_set_dataset_chunksizes

Set the dataset chunking strategy.

nc_clear_dataset_chunksizes

Clear the dataset chunking strategy for the data.

Aliases

Methods

match

Alias for match_by_identity.

Attributes

dtarray

Alias for datetime_array.

Special

Methods

__deepcopy__

Called by the copy.deepcopy function.

__getitem__

Return a subspace defined by indices.

__repr__

Called by the repr built-in function.

__str__

Called by the str built-in function.

Docstring substitutions

Methods

_docstring_special_substitutions

Return the special docstring substitutions.

_docstring_substitutions

Returns the substitutions that apply to methods of the class.

_docstring_package_depth

Returns the class {{package}} substitutions package depth.

_docstring_method_exclusions

Returns method names excluded in the class substitutions.

Deprecated

Methods

asdatetime

Deprecated at version 3.0.0.

asreftime

Deprecated at version 3.0.0.

attributes

Deprecated at version 3.0.0.

chunk

Partition the data array.

delprop

Deprecated at version 3.0.0, use method del_property instead.

dtvarray

Deprecated at version 3.0.0.

expand_dims

Deprecated at version 3.0.0, use insert_dimension method instead.

get_filenames

Return the name of the file or files containing the data.

getprop

Deprecated at version 3.0.0, use method get_property instead.

hasbounds

Deprecated at version 3.0.0, use has_bounds method instead.

hasdata

Deprecated at version 3.0.0, use has_data method instead.

hasprop

Deprecated at version 3.0.0, use method has_property instead.

insert_data

Deprecated at version 3.0.0, use set_data method instead.

isauxiliary

Deprecated at version 3.7.0, use construct_type attribute instead.

isdimension

Deprecated at version 3.7.0, use construct_type attribute instead.

isdomainancillary

Deprecated at version 3.7.0, use construct_type attribute instead.

isfieldancillary

Deprecated at version 3.7.0, use construct_type attribute instead.

ismeasure

Deprecated at version 3.7.0, use construct_type attribute instead.

mask_invalid

Mask the array where invalid values occur.

name

Deprecated at version 3.0.0, use method 'identity' instead.

remove_data

Deprecated at version 3.0.0, use method del_data instead.

select

Deprecated at version 3.0.0.

setprop

Deprecated at version 3.0.0, use method set_property instead.

unsafe_array

Deprecated at version 3.0.0, use array attribute instead.

nc_clear_hdf5_chunksizes

Clear the HDF5 chunking strategy for the data.

nc_hdf5_chunksizes

Get the HDF5 chunking strategy for the data.

nc_set_hdf5_chunksizes

Set the HDF5 chunking strategy.