cfdm.core.DomainTopology


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

Bases: cfdm.core.abstract.topology.Topology

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.

See CF Appendix I “The CF Data Model”.

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.core 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.core.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

cfdm.core.DomainTopology.dump

cfdm.core.DomainTopology.identity

cfdm.core.DomainTopology.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.

Data

Methods

del_data

Remove the data.

get_data

Return the data.

has_data

Whether or not the construct has data.

set_data

Set the data.

Attributes

data

The data.

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.

Special

Methods

__deepcopy__

Called by the copy.deepcopy function.

__repr__

Return repr(self).

__str__

Return str(self).

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.