DatasetRecordStorage¶
-
class
lsst.daf.butler.registry.interfaces.
DatasetRecordStorage
(datasetType: lsst.daf.butler.core.datasets.type.DatasetType)¶ Bases:
abc.ABC
An interface that manages the records associated with a particular
DatasetType
.Parameters: - datasetType :
DatasetType
Dataset type whose records this object manages.
Methods Summary
associate
(collection, datasets)Associate one or more datasets with a collection. certify
(collection, datasets, timespan, context)Associate one or more datasets with a calibration collection and a validity range within it. decertify
(collection, timespan, *, dataIds, …)Remove or adjust datasets to clear a validity range within a calibration collection. delete
(datasets)Fully delete the given datasets from the registry. disassociate
(collection, datasets)Remove one or more datasets from a collection. import_
(run, datasets, idGenerationMode, …)Insert one or more dataset entries into the database. insert
(run, dataIds, idGenerationMode)Insert one or more dataset entries into the database. make_relation
(*collections, columns, context)Return a sql.Relation
that represents a query for for thisDatasetType
in one or more collections.Methods Documentation
-
associate
(collection: CollectionRecord, datasets: Iterable[DatasetRef]) → None¶ Associate one or more datasets with a collection.
Parameters: - collection :
CollectionRecord
The record object describing the collection.
collection.type
must beTAGGED
.- datasets :
Iterable
[DatasetRef
] Datasets to be associated. All datasets must be resolved and have the same
DatasetType
asself
.
Raises: - AmbiguousDatasetError
Raised if any of the given
DatasetRef
instances is unresolved.
Notes
Associating a dataset with into collection that already contains a different dataset with the same
DatasetType
and data ID will remove the existing dataset from that collection.Associating the same dataset into a collection multiple times is a no-op, but is still not permitted on read-only databases.
- collection :
-
certify
(collection: CollectionRecord, datasets: Iterable[DatasetRef], timespan: Timespan, context: SqlQueryContext) → None¶ Associate one or more datasets with a calibration collection and a validity range within it.
Parameters: - collection :
CollectionRecord
The record object describing the collection.
collection.type
must beCALIBRATION
.- datasets :
Iterable
[DatasetRef
] Datasets to be associated. All datasets must be resolved and have the same
DatasetType
asself
.- timespan :
Timespan
The validity range for these datasets within the collection.
Raises: - AmbiguousDatasetError
Raised if any of the given
DatasetRef
instances is unresolved.- ConflictingDefinitionError
Raised if the collection already contains a different dataset with the same
DatasetType
and data ID and an overlapping validity range.- CollectionTypeError
Raised if
collection.type is not CollectionType.CALIBRATION
or ifself.datasetType.isCalibration() is False
.
- collection :
-
decertify
(collection: CollectionRecord, timespan: Timespan, *, dataIds: Iterable[DataCoordinate] | None = None, context: SqlQueryContext) → None¶ Remove or adjust datasets to clear a validity range within a calibration collection.
Parameters: - collection :
CollectionRecord
The record object describing the collection.
collection.type
must beCALIBRATION
.- timespan :
Timespan
The validity range to remove datasets from within the collection. Datasets that overlap this range but are not contained by it will have their validity ranges adjusted to not overlap it, which may split a single dataset validity range into two.
- dataIds :
Iterable
[DataCoordinate
], optional Data IDs that should be decertified within the given validity range If
None
, all data IDs forself.datasetType
will be decertified.
Raises: - CollectionTypeError
Raised if
collection.type is not CollectionType.CALIBRATION
.
- collection :
-
delete
(datasets: collections.abc.Iterable[lsst.daf.butler.core.datasets.ref.DatasetRef]) → None¶ Fully delete the given datasets from the registry.
Parameters: - datasets :
Iterable
[DatasetRef
] Datasets to be deleted. All datasets must be resolved and have the same
DatasetType
asself
.
Raises: - AmbiguousDatasetError
Raised if any of the given
DatasetRef
instances is unresolved.
- datasets :
-
disassociate
(collection: CollectionRecord, datasets: Iterable[DatasetRef]) → None¶ Remove one or more datasets from a collection.
Parameters: - collection :
CollectionRecord
The record object describing the collection.
collection.type
must beTAGGED
.- datasets :
Iterable
[DatasetRef
] Datasets to be disassociated. All datasets must be resolved and have the same
DatasetType
asself
.
Raises: - AmbiguousDatasetError
Raised if any of the given
DatasetRef
instances is unresolved.
- collection :
-
import_
(run: RunRecord, datasets: Iterable[DatasetRef], idGenerationMode: DatasetIdGenEnum = <DatasetIdGenEnum.UNIQUE: 0>, reuseIds: bool = False) → Iterator[DatasetRef]¶ Insert one or more dataset entries into the database.
Parameters: - run :
RunRecord
The record object describing the
RUN
collection this dataset will be associated with.- datasets :
Iterable
ofDatasetRef
Datasets to be inserted. Datasets can specify
id
attribute which will be used for inserted datasets. All dataset IDs must have the same type (int
oruuid.UUID
), if type of dataset IDs does not match type supported by this class then IDs will be ignored and new IDs will be generated by backend.- idGenerationMode :
DatasetIdGenEnum
With
UNIQUE
each new dataset is inserted with its new unique ID. With non-UNIQUE
mode ID is computed from some combination of dataset type, dataId, and run collection name; if the same ID is already in the database then new record is not inserted.- reuseIds :
bool
, optional If
True
then forces re-use of imported dataset IDs for integer IDs which are normally generated as auto-incremented; exception will be raised if imported IDs clash with existing ones. This option has no effect on the use of globally-unique IDs which are always re-used (or generated if integer IDs are being imported).
Returns: - datasets :
Iterable
[DatasetRef
] References to the inserted or existing datasets.
Notes
The
datasetType
andrun
attributes of datasets are supposed to be identical across all datasets but this is not checked and it should be enforced by higher level registry code. This method does not need to use those attributes from datasets, onlydataId
andid
are relevant.- run :
-
insert
(run: RunRecord, dataIds: Iterable[DataCoordinate], idGenerationMode: DatasetIdGenEnum = <DatasetIdGenEnum.UNIQUE: 0>) → Iterator[DatasetRef]¶ Insert one or more dataset entries into the database.
Parameters: - run :
RunRecord
The record object describing the
RUN
collection this dataset will be associated with.- dataIds :
Iterable
[DataCoordinate
] Expanded data IDs (
DataCoordinate
instances) for the datasets to be added. The dimensions of all data IDs must be the same asself.datasetType.dimensions
.- idMode :
DatasetIdGenEnum
With
UNIQUE
each new dataset is inserted with its new unique ID. With non-UNIQUE
mode ID is computed from some combination of dataset type, dataId, and run collection name; if the same ID is already in the database then new record is not inserted.
Returns: - datasets :
Iterable
[DatasetRef
] References to the inserted datasets.
- run :
-
make_relation
(*collections, columns: Set[str], context: SqlQueryContext) → Relation¶ Return a
sql.Relation
that represents a query for for thisDatasetType
in one or more collections.Parameters: - *collections :
CollectionRecord
The record object(s) describing the collection(s) to query. May not be of type
CollectionType.CHAINED
. If multiple collections are passed, the query will search all of them in an unspecified order, and all collections must have the same type. Must include at least one collection.- columns :
Set
[str
] Columns to include in the relation. See
Query.find_datasets
for most options, but this method supports one more:rank
: a calculated integer column holding the index of the collection the dataset was found in, within thecollections
sequence given.
- context :
SqlQueryContext
The object that manages database connections, temporary tables and relation engines for this query.
- Returns
- ——
- relation :
Relation
Representation of the query.
- *collections :
- datasetType :