DimensionGraph¶
- class lsst.daf.butler.DimensionGraph(*args, **kwargs)¶
Bases:
object
An immutable, dependency-complete collection of dimensions.
DimensionGraph
is deprecated in favor ofDimensionGroup
and will be removed after v27. The two types have very similar interfaces, butDimensionGroup
does not support direct iteration and its set-like attributes are of dimension element names, notDimensionElement
instances.DimensionGraph
objects are still returned by certain non-deprecated methods and properties (most prominentlyDatasetType.dimensions
), and to handle these cases deprecation warnings are only emitted for operations onDimensionGraph
that are not supported byDimensionGroup
as well.- Parameters:
- universe
DimensionUniverse
The special graph of all known dimensions of which this graph will be a subset.
- dimensionsiterable of
Dimension
, optional An iterable of
Dimension
instances that must be included in the graph. All (recursive) dependencies of these dimensions will also be included. At most one ofdimensions
andnames
must be provided.- namesiterable of
str
, optional An iterable of the names of dimensions that must be included in the graph. All (recursive) dependencies of these dimensions will also be included. At most one of
dimensions
andnames
must be provided.- conform
bool
, optional If
True
(default), expand to include dependencies.False
should only be used for callers that can guarantee that other arguments are already correctly expanded, and is primarily for internal use.
- universe
Notes
DimensionGraph
should be used instead of other collections in most contexts where a collection of dimensions is required and aDimensionUniverse
is available. Exceptions include cases where order matters (and is different from the consistent ordering defined by theDimensionUniverse
), or completeSet
semantics are required.Deprecated since version v27: DimensionGraph is deprecated in favor of DimensionGroup and will be removed after v27.
Attributes Summary
A true
Set
of allDimensionElement
instances in the graph; a superset ofdimensions
(NamedValueAbstractSet
ofDimensionElement
).A true
Set
of allGovernorDimension
instances in the graph.The subset of
dimensions
whose elements need not be directly identified via their primary keys in a data ID.Set of the names of all dimensions in the graph.
A tuple of all elements in specific order.
The subset of
dimensions
whose elements must be directly identified via their primary keys in a data ID in order to identify the rest of the elements in the graph.A true
Set
of allSkyPixDimension
instances in the graph.Families represented by the spatial elements in this graph.
Families represented by the temporal elements in this graph.
Families of elements in this graph that can participate in topological relationships.
Object that manages all known dimensions.
Methods Summary
as_group
()Return a
DimensionGroup
that represents the same set of dimensions.from_json
(json_str[, universe, registry])Convert from JSON to a pydantic model.
from_simple
(names[, universe, registry])Construct a new object from the simplified form.
get
(name[, default])Return the element with the given name.
intersection
(*others)Construct a new graph with only dimensions in all of the operands.
isdisjoint
(other)Test whether the intersection of two graphs is empty.
issubset
(other)Test whether all dimensions in
self
are also inother
.issuperset
(other)Test whether all dimensions in
other
are also inself
.to_json
([minimal])Convert this class to JSON assuming that the
to_simple()
returns a pydantic model.to_simple
([minimal])Convert this class to a simple python type.
union
(*others)Construct a new graph with all dimensions in any of the operands.
Attributes Documentation
- dimensions¶
A true
Set
of all trueDimension
instances in the graph.Deprecated since version v27: DimensionGraph is deprecated in favor of DimensionGroup, which uses sets of str names instead of NamedValueAbstractSets of Dimension or DimensionElement instances. Support for the NamedValueAbstractSet interfaces on this object will be dropped after v27. Use ‘.names’ instead of ‘.dimensions’ or ‘.dimensions.names’.
- elements¶
A true
Set
of allDimensionElement
instances in the graph; a superset ofdimensions
(NamedValueAbstractSet
ofDimensionElement
).
- governors¶
A true
Set
of allGovernorDimension
instances in the graph.
- implied¶
The subset of
dimensions
whose elements need not be directly identified via their primary keys in a data ID.
- names¶
Set of the names of all dimensions in the graph.
- primaryKeyTraversalOrder¶
A tuple of all elements in specific order.
The order allows records to be found given their primary keys, starting from only the primary keys of required dimensions (
tuple
[DimensionRecord
]).Unlike the table definition/topological order (which is what DimensionUniverse.sorted gives you), when dimension A implies dimension B, dimension A appears first.
Deprecated since version v27: DimensionGraph is deprecated in favor of DimensionGroup, which does not have this attribute; use .lookup_order. DimensionGraph will be removed after v27.
- required¶
The subset of
dimensions
whose elements must be directly identified via their primary keys in a data ID in order to identify the rest of the elements in the graph.
- skypix¶
A true
Set
of allSkyPixDimension
instances in the graph.
- spatial¶
Families represented by the spatial elements in this graph.
- temporal¶
Families represented by the temporal elements in this graph.
- topology¶
Families of elements in this graph that can participate in topological relationships.
Deprecated since version v27: DimensionGraph is deprecated in favor of DimensionGroup, which does not have this attribute; use .spatial or .temporal. DimensionGraph will be removed after v27.
- universe¶
Object that manages all known dimensions.
Methods Documentation
- as_group() DimensionGroup ¶
Return a
DimensionGroup
that represents the same set of dimensions.
- classmethod from_json(json_str: str, universe: DimensionUniverse | None = None, registry: Registry | None = None) SupportsSimple ¶
Convert from JSON to a pydantic model.
- classmethod from_simple(names: SerializedDimensionGraph, universe: DimensionUniverse | None = None, registry: Registry | None = None) DimensionGraph ¶
Construct a new object from the simplified form.
This is assumed to support data data returned from the
to_simple
method.- Parameters:
- names
list
ofstr
The names of the dimensions.
- universe
DimensionUniverse
The special graph of all known dimensions of which this graph will be a subset. Can be
None
ifRegistry
is provided.- registry
lsst.daf.butler.Registry
, optional Registry from which a universe can be extracted. Can be
None
if universe is provided explicitly.
- names
- Returns:
- graph
DimensionGraph
Newly-constructed object.
- graph
- get(name: str, default: Any = None) DimensionElement ¶
Return the element with the given name.
This lookup covers all
DimensionElement
instances inself.elements
, not just trueDimension
instances).
- intersection(*others: DimensionGroup | DimensionGraph) DimensionGraph ¶
Construct a new graph with only dimensions in all of the operands.
See also
union
.
- isdisjoint(other: DimensionGroup | DimensionGraph) bool ¶
Test whether the intersection of two graphs is empty.
Returns
True
if either operand is the empty.
- issubset(other: DimensionGroup | DimensionGraph) bool ¶
Test whether all dimensions in
self
are also inother
.Returns
True
ifself
is empty.
- issuperset(other: DimensionGroup | DimensionGraph) bool ¶
Test whether all dimensions in
other
are also inself
.Returns
True
ifother
is empty.
- to_json(minimal: bool = False) str ¶
Convert this class to JSON assuming that the
to_simple()
returns a pydantic model.
- to_simple(minimal: bool = False) SerializedDimensionGraph ¶
Convert this class to a simple python type.
This type is suitable for serialization.
- union(*others: DimensionGroup | DimensionGraph) DimensionGraph ¶
Construct a new graph with all dimensions in any of the operands.
The elements of the returned graph may exceed the naive union of their elements, as some
DimensionElement
instances are included in graphs whenever multiple dimensions are present, and those dependency dimensions could have been provided by different operands.