LSSTApplications  17.0+103,17.0+11,17.0+61,18.0.0+13,18.0.0+25,18.0.0+5,18.0.0+52,18.0.0-4-g68ffd23,18.1.0-1-g0001055+8,18.1.0-1-g03d53ef+1,18.1.0-1-g1349e88+28,18.1.0-1-g2505f39+22,18.1.0-1-g380d4d4+27,18.1.0-1-g5315e5e+1,18.1.0-1-g5e4b7ea+10,18.1.0-1-g7e8fceb+1,18.1.0-1-g85f8cd4+23,18.1.0-1-g9a6769a+13,18.1.0-1-ga1a4c1a+22,18.1.0-1-gd55f500+17,18.1.0-12-g42eabe8e+10,18.1.0-14-gd04256d+15,18.1.0-16-g430f6a53+1,18.1.0-17-gd2166b6e4,18.1.0-18-gb5d19ff+1,18.1.0-2-gfbf3545+7,18.1.0-2-gfefb8b5+16,18.1.0-3-g52aa583+13,18.1.0-3-g62b5e86+14,18.1.0-3-g8f4a2b1+17,18.1.0-3-g9bc06b8+7,18.1.0-3-gb69f684+9,18.1.0-4-g1ee41a7+1,18.1.0-5-g6dbcb01+13,18.1.0-5-gc286bb7+3,18.1.0-6-g48bdcd3+2,18.1.0-6-gd05e160+9,18.1.0-7-gc4d902b+2,18.1.0-7-gebc0338+8,18.1.0-9-gae7190a+10,w.2019.38
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter Class Reference
Inheritance diagram for lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter:
lsst.obs.base.gen3.repoConverter.RepoConverter

Public Member Functions

def __init__ (self, root, universe, baseDataId, mapper=None)
 
def addDatasetType (self, datasetTypeName, storageClass)
 
def convertRepo (self, butler, directory=None, transfer=None, formatter=None, skipDirs=())
 
def extractDatasetRef (self, fileNameInRoot)
 
def walkRepo (self, directory=None, skipDirs=())
 

Public Attributes

 db
 
 dimensionEntries
 
 baseDataId
 
 root
 
 mapper
 
 universe
 
 extractors
 
 skyMap
 

Static Public Attributes

tuple COADD_NAMES = ("deep", "goodSeeing", "dcr")
 
tuple REPO_ROOT_FILES
 

Detailed Description

A helper class that ingests (some of) the contents of a Gen2 calibration
data repository into a Gen3 data repository.

This class must be used instead of the base `RepoConverter` to process
dataset types that are associated with validity ranges.

Parameters
----------
root : `str`
    Root of the Gen2 data repository.
universe : `lsst.daf.butler.DimensionUniverse`
    Object containing all dimension definitions.
baseDataId : `dict`
    Key-value pairs that may need to appear in the Gen3 data ID, but can
    never be inferred from a Gen2 filename.  This should always include
    the instrument name (even Gen3 data IDs that don't involve the
    instrument dimension have instrument-dependent Gen2 filenames).
mapper : `lsst.obs.base.CameraMapper`, optional
    Object that defines Gen2 filename templates.  Will be identified,
    imported, and constructed from ``root`` if not provided.

Definition at line 32 of file calibRepoConverter.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter.__init__ (   self,
  root,
  universe,
  baseDataId,
  mapper = None 
)

Definition at line 55 of file calibRepoConverter.py.

55  def __init__(self, root, *, universe, baseDataId, mapper=None):
56  super().__init__(root, universe=universe, baseDataId=baseDataId, mapper=mapper)
57  self.db = sqlite3.connect(os.path.join(root, "calibRegistry.sqlite3"))
58  self.db.row_factory = sqlite3.Row
59  self.dimensionEntries = []
60  self.baseDataId = baseDataId
61 
def __init__(self, minimum, dataRange, Q)

Member Function Documentation

◆ addDatasetType()

def lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter.addDatasetType (   self,
  datasetTypeName,
  storageClass 
)

Definition at line 62 of file calibRepoConverter.py.

62  def addDatasetType(self, datasetTypeName, storageClass):
63  # Docstring inherited from RepoConverter.addDatasetType
64  extractor = super().addDatasetType(datasetTypeName, storageClass)
65  if "calibration_label" not in extractor.datasetType.dimensions:
66  return extractor
67  fields = ["validStart", "validEnd", "calibDate"]
68  if "detector" in extractor.datasetType.dimensions.names:
69  fields.append("ccd")
70  else:
71  fields.append("NULL AS ccd")
72  if "physical_filter" in extractor.datasetType.dimensions.names:
73  fields.append("filter")
74  else:
75  fields.append("NULL AS filter")
76  query = f"SELECT DISTINCT {', '.join(fields)} FROM {datasetTypeName};"
77  for row in self.db.execute(query):
78  label = makeCalibrationLabel(datasetTypeName, row["calibDate"],
79  ccd=row["ccd"], filter=row["filter"])
80  self.dimensionEntries.append({
81  "instrument": self.baseDataId["instrument"],
82  "calibration_label": label,
83  "valid_first": datetime.strptime(row["validStart"], "%Y-%m-%d"),
84  "valid_last": datetime.strptime(row["validEnd"], "%Y-%m-%d") + timedelta(days=1),
85  })
86  return extractor
87 
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition: functional.cc:33

◆ convertRepo()

def lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter.convertRepo (   self,
  butler,
  directory = None,
  transfer = None,
  formatter = None,
  skipDirs = () 
)

Definition at line 88 of file calibRepoConverter.py.

88  def convertRepo(self, butler, *, directory=None, transfer=None, formatter=None, skipDirs=()):
89  # Docstring inherited from RepoConverter.convertRepo.
90  butler.registry.addDimensionEntryList(butler.registry.dimensions["calibration_label"],
91  self.dimensionEntries)
92  super().convertRepo(butler, directory=directory, transfer=transfer, formatter=formatter,
93  skipDirs=tuple(skipDirs) + ("focalplane",))
94 

◆ extractDatasetRef()

def lsst.obs.base.gen3.repoConverter.RepoConverter.extractDatasetRef (   self,
  fileNameInRoot 
)
inherited
Extract a Gen3 `~lsst.daf.butler.DatasetRef` from a filename in a
Gen2 data repository.

Parameters
----------
fileNameInRoot : `str`
    Name of the file, relative to the root of its Gen2 repository.

Return
------
ref : `lsst.daf.butler.DatasetRef` or `None`
    Reference to the Gen3 dataset that would be created by converting
    this file, or `None` if the file is not recognized as an instance
    of a dataset type known to this converter.

Definition at line 223 of file repoConverter.py.

223  def extractDatasetRef(self, fileNameInRoot):
224  """Extract a Gen3 `~lsst.daf.butler.DatasetRef` from a filename in a
225  Gen2 data repository.
226 
227  Parameters
228  ----------
229  fileNameInRoot : `str`
230  Name of the file, relative to the root of its Gen2 repository.
231 
232  Return
233  ------
234  ref : `lsst.daf.butler.DatasetRef` or `None`
235  Reference to the Gen3 dataset that would be created by converting
236  this file, or `None` if the file is not recognized as an instance
237  of a dataset type known to this converter.
238  """
239  for datasetTypeName, extractor in self.extractors.items():
240  dataId = extractor.apply(fileNameInRoot)
241  if dataId is not None:
242  # Move the extractor that matched to the front of the
243  # dictionary, as we're likely to see instances of the
244  # same DatasetType together.
245  self.extractors.move_to_end(datasetTypeName, last=False)
246  return DatasetRef(extractor.datasetType, dataId=dataId)
247  return None
248 
std::vector< SchemaItem< Flag > > * items

◆ walkRepo()

def lsst.obs.base.gen3.repoConverter.RepoConverter.walkRepo (   self,
  directory = None,
  skipDirs = () 
)
inherited
Recursively a (subset of) a Gen2 data repository, yielding files
that may be convertible.

Parameters
----------
directory : `str`, optional
    A subdirectory of the repository root to process, instead of
    processing the entire repository.
skipDirs : sequence of `str`
    Subdirectories that should be skipped.

Yields
------
fileNameInRoot : `str`
    Name of a file in the repository, relative to the root of the
    repository.

Definition at line 249 of file repoConverter.py.

249  def walkRepo(self, directory=None, skipDirs=()):
250  """Recursively a (subset of) a Gen2 data repository, yielding files
251  that may be convertible.
252 
253  Parameters
254  ----------
255  directory : `str`, optional
256  A subdirectory of the repository root to process, instead of
257  processing the entire repository.
258  skipDirs : sequence of `str`
259  Subdirectories that should be skipped.
260 
261  Yields
262  ------
263  fileNameInRoot : `str`
264  Name of a file in the repository, relative to the root of the
265  repository.
266  """
267  if directory is None:
268  directory = self.root
269  for dirPath, subdirNamesInDir, fileNamesInDir in os.walk(directory, followlinks=True):
270  # Remove subdirectories that appear to be repositories themselves
271  # from the walking
272  def isRepoRoot(dirName):
273  return any(os.path.exists(os.path.join(dirPath, dirName, f))
274  for f in self.REPO_ROOT_FILES)
275  subdirNamesInDir[:] = [d for d in subdirNamesInDir if not isRepoRoot(d) and d not in skipDirs]
276  # Loop over files in this directory, and ask per-DatasetType
277  # extractors if they recognize them and can extract a data ID;
278  # if so, ingest.
279  dirPathInRoot = dirPath[len(self.root) + len(os.path.sep):]
280  for fileNameInDir in fileNamesInDir:
281  fileNameInRoot = os.path.join(dirPathInRoot, fileNameInDir)
282  if fileNameInRoot in self.REPO_ROOT_FILES:
283  continue
284  yield fileNameInRoot
285 
bool any(CoordinateExpr< N > const &expr) noexcept
Return true if any elements are true.

Member Data Documentation

◆ baseDataId

lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter.baseDataId

Definition at line 60 of file calibRepoConverter.py.

◆ COADD_NAMES

tuple lsst.obs.base.gen3.repoConverter.RepoConverter.COADD_NAMES = ("deep", "goodSeeing", "dcr")
staticinherited

Definition at line 167 of file repoConverter.py.

◆ db

lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter.db

Definition at line 57 of file calibRepoConverter.py.

◆ dimensionEntries

lsst.obs.base.gen3.calibRepoConverter.CalibRepoConverter.dimensionEntries

Definition at line 59 of file calibRepoConverter.py.

◆ extractors

lsst.obs.base.gen3.repoConverter.RepoConverter.extractors
inherited

Definition at line 185 of file repoConverter.py.

◆ mapper

lsst.obs.base.gen3.repoConverter.RepoConverter.mapper
inherited

Definition at line 182 of file repoConverter.py.

◆ REPO_ROOT_FILES

tuple lsst.obs.base.gen3.repoConverter.RepoConverter.REPO_ROOT_FILES
staticinherited
Initial value:
= ("registry.sqlite3", "_mapper", "repositoryCfg.yaml",
"calibRegistry.sqlite3", "_parent")

Definition at line 168 of file repoConverter.py.

◆ root

lsst.obs.base.gen3.repoConverter.RepoConverter.root
inherited

Definition at line 172 of file repoConverter.py.

◆ skyMap

lsst.obs.base.gen3.repoConverter.RepoConverter.skyMap
inherited

Definition at line 199 of file repoConverter.py.

◆ universe

lsst.obs.base.gen3.repoConverter.RepoConverter.universe
inherited

Definition at line 183 of file repoConverter.py.


The documentation for this class was generated from the following file: