cfdm.DomainTopology


class cfdm.DomainTopology(cell=None, properties=None, data=None, source=None, copy=True, _use_data=True)[source]

Bases: cfdm.mixin.netcdf.NetCDFVariable, cfdm.mixin.topology.Topology, cfdm.mixin.propertiesdata.PropertiesData, cfdm.mixin.files.Files, cfdm.core.domaintopology.DomainTopology

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.

The netCDF4 HDF5 chunks may be accessed with the nc_hdf5_chunksizes, nc_set_hdf5_chunksizes, and nc_clear_hdf5_chunksizes methods.

New in version (cfdm): 1.11.0.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 cfdm 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 cfdm.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.

Attributes

construct_type

Return a description of the construct type.

Properties

Methods

del_property

Remove a property.

get_property

Return a 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.

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.

Data

Methods

apply_masking

Apply masking as defined by the CF conventions.

del_data

Remove the data.

get_data

Return the data.

has_data

Whether or not the construct has data.

set_data

Set the data.

insert_dimension

Expand the shape of the data array.

persist

Persist data into memory.

squeeze

Remove size one axes from the data array.

transpose

Permute the axes of the data array.

Attributes

array

A numpy array deep copy of the data.

data

The data.

datetime_array

An independent numpy array of date-time objects.

dtype

Data-type of the data elements.

ndim

The number of data dimensions.

shape

A tuple of the data array’s dimension sizes.

size

The number elements in the data.

Bounds

Methods

has_bounds

Whether or not there are cell bounds.

Miscellaneous

Methods

copy

Return a deep copy.

concatenate

Join a together sequence of DomainTopology.

creation_commands

Returns the commands to create the domain topology construct.

equals

Whether two instances are the same.

uncompress

Uncompress the construct.

get_filenames

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

get_original_filenames

The names of files containing the original data and metadata.

to_memory

Bring data on disk into memory.

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.

HDF5 chunks

Methods

nc_hdf5_chunksizes

Get the HDF5 chunking strategy for the data.

nc_set_hdf5_chunksizes

Set the HDF5 chunking strategy.

nc_clear_hdf5_chunksizes

Clear the HDF5 chunking strategy for the data.

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.