LSSTApplications  19.0.0-14-gb0260a2+d60062ef16,20.0.0+1540ce6389,20.0.0+7c6b12c2f9,20.0.0+ae956f52c5,20.0.0+be870186d9,20.0.0+e2e26847c2,20.0.0-1-g10df615+7683e4f082,20.0.0-1-g253301a+7c6b12c2f9,20.0.0-1-g2b7511a+46a6078777,20.0.0-1-g3dda6ea+606b36f8c0,20.0.0-1-g4d801e7+901ee84527,20.0.0-1-g5b95a8c+a5fa15ec54,20.0.0-1-gb058bd0+46a6078777,20.0.0-1-gb88604f+acecce4127,20.0.0-1-gc96f8cb+61a4a056b1,20.0.0-1-gedffbd8+4f0e391d5e,20.0.0-10-g0891cd99+aadc987f3e,20.0.0-10-g9a20bd332+576ca7b471,20.0.0-17-gcdbda88+ed0d4927ab,20.0.0-2-g4dae9ad+61a4a056b1,20.0.0-2-g61b8584+85c46248f3,20.0.0-2-gb780d76+f45b7d88f4,20.0.0-2-gf072044+7c6b12c2f9,20.0.0-21-g9bbb7f7+61a4a056b1,20.0.0-22-gc512666+9eba1c4719,20.0.0-23-g8900aa8+68630f7098,20.0.0-3-g1653f94+85c46248f3,20.0.0-3-g4cc78c6+63636aeed8,20.0.0-3-g750bffe+e05f822de9,20.0.0-3-gbd60e8c+ff10c6d78d,20.0.0-32-g15a0e07c+ff1c9f120b,20.0.0-4-g97dc21a+68630f7098,20.0.0-4-gfea843c+f45b7d88f4,20.0.0-5-g357b56b+f45b7d88f4,20.0.0-6-g9a5b7a1+2c4171520d,20.0.0-61-g4de25fb+e4dd172200,20.0.0-7-gcda7bf1+85e953d7e4,w.2020.43
LSSTDataManagementBasePackage
cpCertify.py
Go to the documentation of this file.
1 # This file is part of cp_pipe.
2 #
3 # Developed for the LSST Data Management System.
4 # This product includes software developed by the LSST Project
5 # (https://www.lsst.org).
6 # See the COPYRIGHT file at the top-level directory of this distribution
7 # for details of code ownership.
8 #
9 # This program is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
13 #
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with this program. If not, see <http://www.gnu.org/licenses/>.
21 
22 import lsst.pex.config as pexConfig
23 import lsst.pipe.base as pipeBase
24 from lsst.daf.butler import CollectionType
25 
26 
27 class CertifyCalibration(pipeBase.Task):
28  """Create a way to bless existing calibration products.
29 
30  The inputs are assumed to have been constructed via cp_pipe, and
31  already exist in the butler.
32 
33  Parameters
34  ----------
35  registry : `lsst.daf.butler.Registry`
36  Registry pointing at the butler repository to operate on.
37  inputCollection : `str`
38  Data collection to pull calibrations from. Usually an existing
39  `~CollectionType.RUN` or `~CollectionType.CHAINED` collection, and may
40  _not_ be a `~CollectionType.CALIBRATION` collection or a nonexistent
41  collection.
42  outputCollection : `str`
43  Data collection to store final calibrations. If it already exists, it
44  must be a `~CollectionType.CALIBRATION` collection. If not, a new
45  `~CollectionType.CALIBRATION` collection with this name will be
46  registered.
47  lastRunOnly : `bool`, optional
48  If `True` (default) and ``inputCollection`` is a
49  `~CollectionType.CHAINED` collection, only search its first child
50  collection (which usually corresponds to the last processing run),
51  instead of all child collections in the chain. This behavior ensures
52  that datasets in a collection used as input to that processing run
53  are never included in the certification.
54  **kwargs :
55  Additional arguments forwarded to `lsst.pipe.base.Task.__init__`.
56  """
57  _DefaultName = 'CertifyCalibration'
58  ConfigClass = pexConfig.Config
59 
60  def __init__(self, *, registry, inputCollection, outputCollection, lastRunOnly=True, **kwargs):
61  super().__init__(**kwargs)
62  self.registry = registry
63  if lastRunOnly:
64  try:
65  inputCollection, _ = next(iter(self.registry.getCollectionChain(inputCollection)))
66  except TypeError:
67  # Not a CHAINED collection; do nothing.
68  pass
69  self.inputCollection = inputCollection
70  self.outputCollection = outputCollection
71 
72  def run(self, datasetTypeName, timespan):
73  """Certify all of the datasets of the given type in the input
74  collection.
75 
76  Parameters
77  ----------
78  datasetTypeName : `str`
79  Name of the dataset type to certify.
80  timespan : `lsst.daf.butler.Timespan`
81  Timespan for the validity range.
82  """
83  refs = set(self.registry.queryDatasets(datasetTypeName, collections=[self.inputCollection]))
84  if not refs:
85  raise RuntimeError(f"No inputs found for dataset {datasetTypeName} in {self.inputCollection}.")
86  self.registry.registerCollection(self.outputCollection, type=CollectionType.CALIBRATION)
87  self.registry.certify(self.outputCollection, refs, timespan)
astshim.fitsChanContinued.next
def next(self)
Definition: fitsChanContinued.py:105
lsst.cp.pipe.cpCertify.CertifyCalibration.run
def run(self, datasetTypeName, timespan)
Definition: cpCertify.py:72
lsst.cp.pipe.cpCertify.CertifyCalibration.inputCollection
inputCollection
Definition: cpCertify.py:69
lsst.pex.config
Definition: __init__.py:1
lsst.cp.pipe.cpCertify.CertifyCalibration.registry
registry
Definition: cpCertify.py:62
lsst.cp.pipe.cpCertify.CertifyCalibration
Definition: cpCertify.py:27
lsst.cp.pipe.cpCertify.CertifyCalibration.outputCollection
outputCollection
Definition: cpCertify.py:70
lsst.cp.pipe.cpCertify.CertifyCalibration.__init__
def __init__(self, *registry, inputCollection, outputCollection, lastRunOnly=True, **kwargs)
Definition: cpCertify.py:60
lsst.pipe.base
Definition: __init__.py:1
set
daf::base::PropertySet * set
Definition: fits.cc:912
astshim.fitsChanContinued.iter
def iter(self)
Definition: fitsChanContinued.py:88