ExpandedDataCoordinate

class lsst.daf.butler.ExpandedDataCoordinate

Bases: lsst.daf.butler.DataCoordinate

A data ID that has been expanded to include all relevant metadata.

Instances should usually be obtained by calling Registry.expandDataId.

Parameters:
graph : DimensionGraph

The dimensions identified by this instance.

values : tuple

Tuple of primary key values for the given dimensions.

records : Mapping

Dictionary mapping DimensionElement to DimensionRecord.

full : Mapping

Dictionary mapping dimensions to their primary key values for all dimensions in the graph, not just required ones. Ignored unless conform is False.

region : sphgeom.Region, optional

Region on the sky associated with this data ID, or None if there are no spatial dimensions. At present, this may be the special value NotImplemented if there multiple spatial dimensions identified; in the future this will be replaced with the intersection. Ignored unless conform is False.Timespan

timespan : Timespan, optionalTimespan

Timespan associated with this data ID, or None if there are no temporal dimensions. Ignored unless conform is False.

conform : bool, optional

If True (default), adapt arguments from arbitrary mappings to the custom dictionary types and check that all expected key-value pairs are present. False is only for internal use.

Notes

To maintain Liskov substitutability with DataCoordinate, ExpandedDataCoordinate mostly acts like a mapping that contains only values for its graph’s required dimensions, even though it also contains values for all implied dimensions - its length, iteration, and keys/values/items views reflect only required dimensions. Values for the primary keys of implied dimensions can be obtained from the full attribute, and are also accessible in dict lookups and the in operator.

Attributes Summary

full Dictionary mapping dimensions to their primary key values for all dimensions in the graph, not just required ones (IndexedTupleDict).
graph
records Dictionary mapping DimensionElement to the associated DimensionRecord (IndexedTupleDict).
region Region on the sky associated with this data ID, or None if there are no spatial dimensions (sphgeom.Region).
timespan Timespan associated with this data ID, or None if there are no temporal dimensions (TimeSpan).
universe The universe that defines all known dimensions compatible with this coordinate (DimensionUniverse).

Methods Summary

byName() Return a true dict keyed by str dimension name and the same values as self.
fingerprint(update) Update a secure hash function with the values in this data ID.
get(k[,d])
items()
keys()
matches(other)
pack(name, *, returnMaxBits) Pack this data ID into an integer.
standardize(mapping, Any]] = None, *, graph, …) Adapt an arbitrary mapping and/or additional arguments into a true DataCoordinate, or augment an existing one.
subset(graph) Return a new DataCoordinate whose graph is a subset of self.graph.
values()

Attributes Documentation

full

Dictionary mapping dimensions to their primary key values for all dimensions in the graph, not just required ones (IndexedTupleDict).

Like DataCoordinate itself, this dictionary can be indexed by str name as well as Dimension instance.

graph
records

Dictionary mapping DimensionElement to the associated DimensionRecord (IndexedTupleDict).

Like DataCoordinate itself, this dictionary can be indexed by str name as well as DimensionElement instance.

region

Region on the sky associated with this data ID, or None if there are no spatial dimensions (sphgeom.Region).

At present, this may be the special value NotImplemented if there multiple spatial dimensions identified; in the future this will be replaced with the intersection.

timespan

Timespan associated with this data ID, or None if there are no temporal dimensions (TimeSpan).

universe

The universe that defines all known dimensions compatible with this coordinate (DimensionUniverse).

Methods Documentation

byName() → Dict[str, Any]

Return a true dict keyed by str dimension name and the same values as self.

fingerprint(update)

Update a secure hash function with the values in this data ID.

Parameters:
update : Callable

Callable that accepts a single bytes argument to update the hash; usually the update method of an instance from the hashlib module.

get(k[, d]) → D[k] if k in D, else d. d defaults to None.
items() → a set-like object providing a view on D's items
keys() → a set-like object providing a view on D's keys
matches(other) → bool
pack(name: str, *, returnMaxBits: bool = False) → int

Pack this data ID into an integer.

Parameters:
name : str

Name of the DimensionPacker algorithm (as defined in the dimension configuration).

returnMaxBits : bool, optional

If True (False is default), return the maximum number of nonzero bits in the returned integer across all data IDs.

Returns:
packed : int

Integer ID. This ID is unique only across data IDs that have the same values for the packer’s “fixed” dimensions.

maxBits : int, optional

Maximum number of nonzero bits in packed. Not returned unless returnMaxBits is True.

static standardize(mapping: Optional[Mapping[str, Any]] = None, *, graph: Optional[DimensionGraph] = None, universe: Optional[DimensionUniverse] = None, **kwds) → DataCoordinate

Adapt an arbitrary mapping and/or additional arguments into a true DataCoordinate, or augment an existing one.

Parameters:
mapping : Mapping, optional

An informal data ID that maps dimension names to their primary key values (may also be a true DataCoordinate).

graph : DimensionGraph

The dimensions to be identified by the new DataCoordinate. If not provided, will be inferred from the keys of mapping, and universe must be provided unless mapping is already a DataCoordinate.

universe : DimensionUniverse

All known dimensions and their relationships; used to expand and validate dependencies when graph is not provided.

kwds

Additional keyword arguments are treated like additional key-value pairs in mapping.

Returns:
coordinate : DataCoordinate

A validated DataCoordinate instance. May be a subclass instance if and only if mapping is a subclass instance and graph is a subset of mapping.graph.

Raises:
TypeError

Raised if the set of optional arguments provided is not supported.

KeyError

Raised if a key-value pair for a required dimension is missing.

Notes

Because DataCoordinate stores only values for required dimensions, key-value pairs for other related dimensions will be ignored and excluded from the result. This means that a DataCoordinate may contain fewer key-value pairs than the informal data ID dictionary it was constructed from.

subset(graph: lsst.daf.butler.core.dimensions.graph.DimensionGraph) → lsst.daf.butler.core.dimensions.coordinate.ExpandedDataCoordinate

Return a new DataCoordinate whose graph is a subset of self.graph.

Subclasses may override this method to return a subclass instance.

Parameters:
graph : DimensionGraph

The dimensions identified by the returned DataCoordinate.

Returns:
coordinate : DataCoordinate

A DataCoordinate instance that identifies only the given dimensions.

Raises:
KeyError

Raised if graph is not a subset of self.graph, and hence one or more dimensions has no associated primary key value.

values() → an object providing a view on D's values