Source code for utopya.eval.groups

"""Implements specialized data group classes that are based on group types
provided in :py:mod:`dantro.groups`.
Here, they are configured using their class variables.
"""

import logging

import dantro
import dantro.groups

from .containers import XarrayDC as _XarrayDC

log = logging.getLogger(__name__)

# -----------------------------------------------------------------------------


[docs]class UniverseGroup(dantro.groups.ParamSpaceStateGroup): """This group represents the data of a single universe"""
[docs]class MultiverseGroup(dantro.groups.ParamSpaceGroup): """This group is meant to manage the ``multiverse`` group of the loaded data, i.e. the group where output of the individual :py:class:`~utopya.eval.groups.UniverseGroup` objects is stored in. Its main aim is to provide easy access to universes. By default, universes are only identified by their ID, which is a zero-padded *string*. This group adds the ability to access them via integer indices. Furthermore, via dantro, an easy data selector method is available, see :py:meth:`dantro.groups.psp.ParamSpaceGroup.select`. """ _NEW_GROUP_CLS = UniverseGroup
[docs]class TimeSeriesGroup(dantro.groups.TimeSeriesGroup): """This group is meant to manage time series data, with the container names being interpreted as the time coordinate. """ _NEW_CONTAINER_CLS = _XarrayDC
[docs]class HeterogeneousTimeSeriesGroup(dantro.groups.HeterogeneousTimeSeriesGroup): """This group is meant to manage time series data, with the container names being interpreted as the time coordinate. """ _NEW_CONTAINER_CLS = _XarrayDC
[docs]class GraphGroup(dantro.groups.GraphGroup): """This group is meant to manage graph data and create a NetworkX graph from it. """ # Let new groups contain only time series _NEW_GROUP_CLS = TimeSeriesGroup # Define allowed member container types _ALLOWED_CONT_TYPES = (TimeSeriesGroup, _XarrayDC) # Expected names for the containers that hold vertex/edge information _GG_node_container = "_vertices" _GG_edge_container = "_edges" # _group_ attribute names for optionally providing additional information # on the graph. _GG_attr_directed = "is_directed" _GG_attr_parallel = "allows_parallel" _GG_attr_edge_container_is_transposed = "edge_container_is_transposed" _GG_attr_keep_dim = "keep_dim" # Whether warning is raised upon bad alignment of property data _GG_WARN_UPON_BAD_ALIGN = True