DatasetRef¶
-
class
lsst.daf.butler.DatasetRef¶ Bases:
objectReference to a Dataset in a
Registry.A
DatasetRefmay point to a Dataset that currently does not yet exist (e.g., because it is a predicted input for provenance).Parameters: - datasetType :
DatasetType The
DatasetTypefor this Dataset.- dataId :
DataCoordinate A mapping of dimensions that labels the Dataset within a Collection.
- id :
int, optional The unique integer identifier assigned when the dataset is created.
- run :
str, optional The name of the run this dataset was associated with when it was created. Must be provided if
idis.- hash :
bytes, optional A hash of the dataset type and data ID. Should only be provided if copying from another
DatasetRefwith the same dataset type and data ID.- components :
dict, optional A dictionary mapping component name to a
DatasetReffor that component. Should not be passed unlessidis also provided (i.e. if this is a “resolved” reference).- conform :
bool, optional If
True(default), callDataCoordinate.standardizeto ensure that the data ID’s dimensions are consistent with the dataset type’s.DatasetRefinstances for which those dimensions are not equal should not be created in new code, but are still supported for backwards compatibility. New code should only passFalseif it can guarantee that the dimensions are already consistent.- hasParentId :
bool, optional If
TruethisDatasetRefis a component that has theidof the composite parent. This is set if the registry does not know about individual components but does know about the composite.
Raises: - ValueError
Raised if
runorcomponentsis provided butidis not, or if a component dataset is inconsistent with the storage class, or ifidis provided butrunis not.
Attributes Summary
componentsNamed DatasetRefcomponents (MappingorNone).dataIdA mapping of Dimensionprimary key values that labels the dataset within a Collection (DataCoordinate).datasetTypeThe definition of this dataset ( DatasetType).dimensionsThe dimensions associated with the underlying DatasetTypehasParentIdhashSecure hash of the DatasetTypename and data ID (bytes).idPrimary key of the dataset ( intorNone).runThe name of the run that produced the dataset. Methods Summary
expanded(dataId)Return a new DatasetRefwith the given expanded data ID.flatten(refs, *, parents)Recursively transform an iterable over DatasetRefto include nested componentDatasetRefinstances.getCheckedId()Return self.id, or raise if it isNone.groupByType(refs, *, recursive)Group an iterable of DatasetRefbyDatasetType.isComponent()Boolean indicating whether this DatasetRefrefers to a component of a composite.isComposite()Boolean indicating whether this DatasetRefis a composite type.resolved(id, run, components, …)Return a new DatasetRefwith the same data ID and dataset type and the given ID and run.unresolved()Return a new DatasetRefwith the same data ID and dataset type, but no ID, run, or components.Attributes Documentation
-
components¶ Named
DatasetRefcomponents (MappingorNone).For resolved
DatasetRefinstances, this is a read-only mapping. For unresolved instances, this is alwaysNone.
-
dataId¶ A mapping of
Dimensionprimary key values that labels the dataset within a Collection (DataCoordinate).Cannot be changed after a
DatasetRefis constructed.
-
datasetType¶ The definition of this dataset (
DatasetType).Cannot be changed after a
DatasetRefis constructed.
-
dimensions¶ The dimensions associated with the underlying
DatasetType
-
hasParentId¶
-
hash¶ Secure hash of the
DatasetTypename and data ID (bytes).
-
id¶ Primary key of the dataset (
intorNone).Cannot be changed after a
DatasetRefis constructed; useresolvedorunresolvedto add or remove this information when creating a newDatasetRef.
-
run¶ The name of the run that produced the dataset.
Cannot be changed after a
DatasetRefis constructed; useresolvedorunresolvedto add or remove this information when creating a newDatasetRef.
Methods Documentation
-
expanded(dataId: lsst.daf.butler.core.dimensions.coordinate.ExpandedDataCoordinate) → lsst.daf.butler.core.datasets.ref.DatasetRef¶ Return a new
DatasetRefwith the given expanded data ID.Parameters: - dataId :
ExpandedDataCoordinate Data ID for the new
DatasetRef. Must compare equal to the original data ID.
Returns: - ref :
DatasetRef A new
DatasetRefwith the given data ID.
- dataId :
-
static
flatten(refs: Iterable[lsst.daf.butler.core.datasets.ref.DatasetRef], *, parents: bool = True) → Iterator[lsst.daf.butler.core.datasets.ref.DatasetRef]¶ Recursively transform an iterable over
DatasetRefto include nested componentDatasetRefinstances.Parameters: - refs :
Iterable[DatasetRef] Input iterable to process. Must contain only resolved
DatasetRefinstances (i.e. withDatasetRef.componentsnotNone).- parents :
bool, optional If
True(default) include the given datasets in the output iterable. IfFalse, include only their components. This does not propagate recursively - only the outermost level of parents is ignored ifparentsisFalse.
Yields: - ref :
DatasetRef Either one of the given
DatasetRefinstances (only ifparentisTrue) or on of its (recursive) children.
Notes
If
parentsisTrue, components are guaranteed to be yielded before their parents.- refs :
-
getCheckedId() → int¶ Return
self.id, or raise if it isNone.This trivial method exists to allow operations that would otherwise be natural list comprehensions to check that the ID is not
Noneas well.Returns: Raises: - AmbiguousDatasetError
Raised if
ref.idisNone.
-
static
groupByType(refs: Iterable[lsst.daf.butler.core.datasets.ref.DatasetRef], *, recursive: bool = True) → lsst.daf.butler.core.utils.NamedKeyDict[lsst.daf.butler.core.datasets.type.DatasetType, typing.List[lsst.daf.butler.core.datasets.ref.DatasetRef]][lsst.daf.butler.core.datasets.type.DatasetType, List[lsst.daf.butler.core.datasets.ref.DatasetRef]]¶ Group an iterable of
DatasetRefbyDatasetType.Parameters: - refs :
Iterable[DatasetRef] DatasetRefinstances to group.- recursive :
bool, optional If
True(default), also group anyDatasetRefinstances found in theDatasetRef.componentsdictionaries ofrefs, recursively.Truealso checks that references are “resolved” (unresolved references never have components).
Returns: - grouped :
NamedKeyDict[DatasetType,list[DatasetRef] ] Grouped
DatasetRefinstances.
Raises: - AmbiguousDatasetError
Raised if
recursive is True, and one or more refs hasDatasetRef.components is None(as is always the case for unresolvedDatasetRefobjects).
- refs :
-
isComponent() → bool¶ Boolean indicating whether this
DatasetRefrefers to a component of a composite.Returns: - isComponent :
bool Trueif thisDatasetRefis a component,Falseotherwise.
- isComponent :
-
isComposite() → bool¶ Boolean indicating whether this
DatasetRefis a composite type.Returns: - isComposite :
bool Trueif thisDatasetRefis a composite type,Falseotherwise.
- isComposite :
-
resolved(id: int, run: str, components: Optional[Mapping[str, lsst.daf.butler.core.datasets.ref.DatasetRef]] = None) → lsst.daf.butler.core.datasets.ref.DatasetRef¶ Return a new
DatasetRefwith the same data ID and dataset type and the given ID and run.Parameters: - id :
int The unique integer identifier assigned when the dataset is created.
- run :
str The run this dataset was associated with when it was created.
- components :
dict, optional A dictionary mapping component name to a
DatasetReffor that component. Ifselfis already a resolvedDatasetRef, its components will be merged with this dictionary, with this dictionary taking precedence.
Returns: - ref :
DatasetRef A new
DatasetRef.
- id :
-
unresolved() → lsst.daf.butler.core.datasets.ref.DatasetRef¶ Return a new
DatasetRefwith the same data ID and dataset type, but no ID, run, or components.Returns: - ref :
DatasetRef A new
DatasetRef.
Notes
This can be used to compare only the data ID and dataset type of a pair of
DatasetRefinstances, regardless of whether either is resolved:if ref1.unresolved() == ref2.unresolved(): ...
- ref :
- datasetType :