DataCoordinate¶
- class lsst.daf.butler.DataCoordinate¶
- Bases: - object- A validated data ID. - DataCoordinate guarantees that its key-value pairs identify at least all required dimensions in a - DimensionGroup.- Notes - DataCoordinateis an ABC, but it provides- staticmethodfactory functions for private concrete implementations that should be sufficient for most purposes.- standardizeis the most flexible and safe of these; the others (- make_empty,- from_required_values, and- from_full_values) are more specialized and perform little or no checking of inputs.- Lookups for implied dimensions (those in - self.dimensions.implied) are supported if and only if- has_full_valuesis- True. This also sets the keys of the- mappingattribute. This means that- DataCoordinateequality is not the same as testing for equality on the- mappingattribute (instead, it is the same as testing for equality on the- requiredattribute).- See also Data IDs - Attributes Summary - Dimensions identified by this data ID ( - DimensionGroup).- The full values (only) of this data ID as a tuple. - A mapping view of the data ID with keys for all dimensions it has values for. - A mapping that contains - DimensionRecordobjects for all elements identified by this data ID.- Spatial region associated with this data ID. - A mapping view of the data ID with keys for just its required dimensions. - The required values (only) of this data ID as a tuple. - Temporal interval associated with this data ID. - Universe that defines all known compatible dimensions. - Methods Summary - expanded(records)- Return a - DataCoordinatethat holds the given records.- from_full_values(dimensions, values)- Construct a - DataCoordinatefrom all dimension values.- from_json(json_str[, universe, registry])- Convert from JSON to a pydantic model. - from_required_values(dimensions, values)- Construct a - DataCoordinatefrom required dimension values.- from_simple(simple[, universe, registry])- Construct a new object from the simplified form. - get()- hasFull()- Whether this data ID contains implied and required values. - Whether this data ID contains records. - makeEmpty(universe)- Return an empty - DataCoordinate.- make_empty(universe)- Return an empty - DataCoordinate.- standardize([mapping, dimensions, universe, ...])- Standardize the supplied dataId. - subset(dimensions)- Return a - DataCoordinatewhose diensions are a subset of- self.dimensions.- 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(other)- Combine two data IDs. - Attributes Documentation - dimensions¶
- Dimensions identified by this data ID ( - DimensionGroup).- Note that values are only required to be present for dimensions in - self.dimensions.required; all others may be retrieved (from a- Registry) given these.
 - full_values¶
- The full values (only) of this data ID as a tuple. - Element order is consistent with - DimensionGroup.data_coordinate_keys, i.e. all required dimensions followed by all implied dimensions.
 - mapping¶
- A mapping view of the data ID with keys for all dimensions it has values for. 
 - records¶
- A mapping that contains - DimensionRecordobjects for all elements identified by this data ID.- Notes - The values of this mapping may be - Noneif and only if there is no record for that element with these dimensions in the database (which means some foreign key field must have a NULL value).- Accessing this attribute if - hasRecordsreturns- Falseis a logic error that may raise an exception of unspecified type either immediately or when the returned mapping is used, depending on the implementation and whether assertions are enabled.
 - region¶
- Spatial region associated with this data ID. - ( - lsst.sphgeom.Regionor- None).- This is - Noneif and only if- self.dimensions.spatialis empty.- Accessing this attribute if - hasRecordsreturns- Falseis a logic error that may or may not raise an exception, depending on the implementation and whether assertions are enabled.
 - required¶
- A mapping view of the data ID with keys for just its required dimensions. 
 - required_values¶
- The required values (only) of this data ID as a tuple. - Element order is consistent with - required.- In contexts where all data IDs have the same dimensions, comparing and hashing these tuples can be much faster than comparing the original - DataCoordinateinstances.
 - timespan¶
- Temporal interval associated with this data ID. - This is - Noneif and only if- self.dimensions.temporalis empty.- Accessing this attribute if - hasRecordsreturns- Falseis a logic error that may or may not raise an exception, depending on the implementation and whether assertions are enabled.
 - universe¶
- Universe that defines all known compatible dimensions. - The universe will be compatible with this coordinate ( - DimensionUniverse).
 - Methods Documentation - abstract expanded(records: Mapping[str, DimensionRecord | None]) DataCoordinate¶
- Return a - DataCoordinatethat holds the given records.- Guarantees that - hasRecordsreturns- True.- This is a low-level interface with at most assertion-level checking of inputs. Most callers should use - Registry.expandDataIdinstead.- Parameters:
- recordsMapping[str,DimensionRecordorNone]
- A`~collections.abc.Mapping` with - str(dimension element name) keys and- DimensionRecordvalues. Keys must cover all elements in- self.dimensions.elements. Values may be- None, but only to reflect actual NULL values in the database, not just records that have not been fetched.
 
- records
 
 - static from_full_values(dimensions: DimensionGroup, values: tuple[int | str, ...]) DataCoordinate¶
- Construct a - DataCoordinatefrom all dimension values.- This is a low-level interface with at most assertion-level checking of inputs. Most callers should use - standardizeinstead.- Parameters:
- dimensionsDimensionGroup
- Dimensions this data ID will identify. 
- valuestuple[intorstr]
- Tuple of primary key values corresponding to - itertools.chain(dimensions.required, dimensions.implied), in that order. Note that this is _not_ the same order as- dimensions.names, though these contain the same elements.
 
- dimensions
- Returns:
- data_idDataCoordinate
- A data ID object that identifies the given dimensions. - dataId.hasFull()will always return- True.- dataId.hasRecords()will only return- Trueif- dimensionsis empty.
 
- data_id
 
 - classmethod from_json(json_str: str, universe: DimensionUniverse | None = None, registry: Registry | None = None) SupportsSimple¶
- Convert from JSON to a pydantic model. - Parameters:
- cls_typeofSupportsSimple
- The Python type being created. 
- json_strstr
- The JSON string representing this object. 
- universeDimensionUniverseorNone, optional
- The universe required to instantiate some models. Required if - registryis- None.
- registryRegistryorNone, optional
- Registry from which to obtain the dimension universe if an explicit universe has not been given. 
 
- cls_
- Returns:
- modelSupportsSimple
- Pydantic model constructed from JSON and validated. 
 
- model
 
 - static from_required_values(dimensions: DimensionGroup, values: tuple[int | str, ...]) DataCoordinate¶
- Construct a - DataCoordinatefrom required dimension values.- This is a low-level interface with at most assertion-level checking of inputs. Most callers should use - standardizeinstead.- Parameters:
- dimensionsDimensionGroup
- Dimensions this data ID will identify. 
- valuestuple[intorstr]
- Tuple of primary key values corresponding to - dimensions.required, in that order.
 
- dimensions
- Returns:
- data_idDataCoordinate
- A data ID object that identifies the given dimensions. - dataId.hasFull()will return- Trueonly if- dimensions.impliedis empty.- dataId.hasRecords()will return- Trueif and only if- dimensionsis empty.
 
- data_id
 
 - classmethod from_simple(simple: SerializedDataCoordinate, universe: DimensionUniverse | None = None, registry: Registry | None = None) DataCoordinate¶
- Construct a new object from the simplified form. - The data is assumed to be of the form returned from the - to_simplemethod.- Parameters:
- simpledictof [str,Any]
- The - dictreturned by- to_simple().
- universeDimensionUniverse
- Object that manages all known dimensions. 
- registrylsst.daf.butler.Registry, optional
- Registry from which a universe can be extracted. Can be - Noneif universe is provided explicitly.
 
- simple
- Returns:
- dataIdDataCoordinate
- Newly-constructed object. 
 
- dataId
 
 - abstract hasFull() bool¶
- Whether this data ID contains implied and required values. - Returns:
- statebool
- If - True,- __getitem__,- get, and- __contains__(but not- keys!) will act as though the mapping includes key-value pairs for implied dimensions, and the- fullproperty may be used. If- False, these operations only include key-value pairs for required dimensions, and accessing- fullis an error. Always- Trueif there are no implied dimensions.
 
- state
 
 - abstract hasRecords() bool¶
- Whether this data ID contains records. - These are the records for all of the dimension elements it identifies. 
 - static makeEmpty(universe: DimensionUniverse) DataCoordinate¶
- Return an empty - DataCoordinate.- It identifies the null set of dimensions. - Parameters:
- universeDimensionUniverse
- Universe to which this null dimension set belongs. 
 
- universe
- Returns:
- dataIdDataCoordinate
- A data ID object that identifies no dimensions. - hasFulland- hasRecordsare guaranteed to return- True, because both- fulland- recordsare just empty mappings.
 
- dataId
 
 - static make_empty(universe: DimensionUniverse) DataCoordinate¶
- Return an empty - DataCoordinate.- It identifies the null set of dimensions. - Parameters:
- universeDimensionUniverse
- Universe to which this null dimension set belongs. 
 
- universe
- Returns:
- data_idDataCoordinate
- A data ID object that identifies no dimensions. - hasFulland- hasRecordsare guaranteed to return- True, because both- fulland- recordsare just empty mappings.
 
- data_id
 
 - static standardize(mapping: Mapping[str, DataIdValue] | DataCoordinate | None = None, *, dimensions: Iterable[str] | DimensionGroup | None = None, universe: DimensionUniverse | None = None, defaults: DataCoordinate | None = None, **kwargs: Any) DataCoordinate¶
- Standardize the supplied dataId. - Adapts an arbitrary mapping and/or additional arguments into a true - DataCoordinate, or augment an existing one.- Parameters:
- mappingMappingorDataCoordinate, optional
- An informal data ID that maps dimensions or dimension names to their primary key values (may also be a true - DataCoordinate).
- dimensionsIterable[str],DimensionGroup, optional
- The dimensions to be identified by the new - DataCoordinate. If not provided, will be inferred from the keys of- mappingand- **kwargs, and- universemust be provided unless- mappingis already a- DataCoordinate.
- universeDimensionUniverse
- All known dimensions and their relationships; used to expand and validate dependencies when - dimensionsis not provided.
- defaultsDataCoordinate, optional
- Default dimension key-value pairs to use when needed. These are never used to infer - group, and are ignored if a different value is provided for the same key in- mappingor- **kwargs`.
- **kwargs
- Additional keyword arguments are treated like additional key-value pairs in - mapping.
 
- mapping
- Returns:
- coordinateDataCoordinate
- A validated - DataCoordinateinstance.
 
- coordinate
- Raises:
- TypeError
- Raised if the set of optional arguments provided is not supported. 
- DimensionNameError
- Raised if a key-value pair for a required dimension is missing. 
 
 
 - abstract subset(dimensions: DimensionGroup | Iterable[str]) DataCoordinate¶
- Return a - DataCoordinatewhose diensions are a subset of- self.dimensions.- Parameters:
- dimensionsDimensionGrouporIterable[str]
- The dimensions identified by the returned - DataCoordinate.
 
- dimensions
- Returns:
- coordinateDataCoordinate
- A - DataCoordinateinstance that identifies only the given dimensions. May be- selfif- dimensions == self.dimensions.
 
- coordinate
- Raises:
- KeyError
- Raised if the primary key value for one or more required dimensions is unknown. This may happen even if the required subset of the new dimensions are not a subset of the dimensions actually known by this data ID.. As an example, consider trying to go from a data ID with dimensions {instrument, physical_filter, band} to just {instrument, band}; band is implied by physical_filter and hence would have no value in the original data ID if - self.hasFull()is- False.
 
 - Notes - If - hasFulland- hasRecordsreturn- Trueon- self, they will return- True(respectively) on the returned- DataCoordinateas well. The converse does not hold.
 - to_json(minimal: bool = False) str¶
- Convert this class to JSON assuming that the - to_simple()returns a pydantic model.- Parameters:
- minimalbool
- Return minimal possible representation. 
 
- minimal
 
 - to_simple(minimal: bool = False) SerializedDataCoordinate¶
- Convert this class to a simple python type. - This is suitable for serialization. - Parameters:
- minimalbool, optional
- Use minimal serialization. If set the records will not be attached. 
 
- minimal
- Returns:
- simpleSerializedDataCoordinate
- The object converted to simple form. 
 
- simple
 
 - abstract union(other: DataCoordinate) DataCoordinate¶
- Combine two data IDs. - Yields a new one that identifies all dimensions that either of them identify. - Parameters:
- otherDataCoordinate
- Data ID to combine with - self.
 
- other
- Returns:
- unionedDataCoordinate
- A - DataCoordinateinstance that satisfies- unioned.dimensions == self.dimensions.union(other.dimensions). Will preserve- hasFulland- hasRecordswhenever possible.
 
- unioned
 - Notes - No checking for consistency is performed on values for keys that - selfand- otherhave in common, and which value is included in the returned data ID is not specified.