22 __all__ = [
"DataIdExtractor"]
24 from typing
import Union, Optional
26 from lsst.skymap
import BaseSkyMap
27 from lsst.daf.butler
import DataCoordinate, DatasetType, StorageClass, DimensionUniverse
28 from ..mapping
import Mapping
29 from .filePathParser
import FilePathParser
30 from .translators
import Translator
34 """A class that extracts Gen3 data IDs from Gen2 filenames for a 35 particular dataset type. 39 datasetTypeName : `str` 40 Name of the dataset type the object will process. 41 storageClass : `str` or `lsst.daf.butler.StorageClass` 42 Gen3 storage class of the dataset type. 43 universe : `lsst.daf.butler.DimensionUniverse` 44 Object containing all dimension definitions. 46 Name of the Gen3 instrument for output data IDs that include that 48 filePathParser : `FilePathParser`, optional 49 Object responsible for reading a Gen2 data ID from a filename. Will 50 be created from ``mapper`` if not provided. 51 translator : `Translator`, optional 52 Object responsible for converting a Gen2 data ID into a Gen3 data ID. 53 Will be created if not provided. 54 mapping : `lsst.obs.base.Mapper`, optional 55 Object that defines a Gen2 dataset type. Must be provided if 56 ``filePathParser`` is not. 57 skyMap : `lsst.skymap.BaseSkyMap`, optional 58 SkyMap that defines tracts and patches. Must be provided for datasets 59 with a ``patch`` key in their data IDs. 60 skyMapName: `str`, optional 61 Name of the Gen3 skymap for output data IDs that include that 67 Raised if the given mapping has no template. 70 def __init__(self, datasetTypeName: str, storageClass: Union[str, StorageClass], *,
71 universe: DimensionUniverse,
73 filePathParser: Optional[FilePathParser] =
None,
74 translator: Optional[Translator] =
None,
75 mapping: Optional[Mapping] =
None,
76 skyMap: Optional[BaseSkyMap] =
None,
77 skyMapName: Optional[str] =
None):
78 if filePathParser
is None:
79 filePathParser = FilePathParser.fromMapping(mapping)
81 if translator
is None:
82 translator = Translator.makeMatching(datasetTypeName, filePathParser.keys,
83 instrument=instrument, skyMap=skyMap, skyMapName=skyMapName)
86 storageClass=storageClass, universe=universe)
88 def apply(self, fileNameInRoot: str) -> Optional[DataCoordinate]:
89 """Extract a Gen3 data ID from the given filename, 93 fileNameInRoot : `str` 94 Filename relative to a Gen2 data repository root. 98 dataId : `lsst.daf.butler.DataCoordinate` or `None` 99 The Gen3 data ID, or `None` if the file was not recognized as an 100 instance of the extractor's dataset type.