LSSTApplications  18.0.0+106,18.0.0+50,19.0.0,19.0.0+1,19.0.0+10,19.0.0+11,19.0.0+13,19.0.0+17,19.0.0+2,19.0.0-1-g20d9b18+6,19.0.0-1-g425ff20,19.0.0-1-g5549ca4,19.0.0-1-g580fafe+6,19.0.0-1-g6fe20d0+1,19.0.0-1-g7011481+9,19.0.0-1-g8c57eb9+6,19.0.0-1-gb5175dc+11,19.0.0-1-gdc0e4a7+9,19.0.0-1-ge272bc4+6,19.0.0-1-ge3aa853,19.0.0-10-g448f008b,19.0.0-12-g6990b2c,19.0.0-2-g0d9f9cd+11,19.0.0-2-g3d9e4fb2+11,19.0.0-2-g5037de4,19.0.0-2-gb96a1c4+3,19.0.0-2-gd955cfd+15,19.0.0-3-g2d13df8,19.0.0-3-g6f3c7dc,19.0.0-4-g725f80e+11,19.0.0-4-ga671dab3b+1,19.0.0-4-gad373c5+3,19.0.0-5-ga2acb9c+2,19.0.0-5-gfe96e6c+2,w.2020.01
LSSTDataManagementBasePackage
ingestCuratedCalibs.py
Go to the documentation of this file.
1 from .ingestCalibs import IngestCalibsTask, IngestCalibsConfig
2 from .read_curated_calibs import read_all
3 from lsst.pipe.base import InputOnlyArgumentParser
4 
5 import tempfile
6 import shutil
7 import os
8 
9 
11  """Argument parser to support ingesting human curated calibration
12  products in a standardized text file format into the repository"""
13 
14  def __init__(self, *args, **kwargs):
15  InputOnlyArgumentParser.__init__(self, *args, **kwargs)
16  self.add_argument("-n", "--dry-run", dest="dryrun", action="store_true",
17  default=False, help="Don't perform any action?")
18  self.add_argument("--create", action="store_true", help="Create new registry?")
19  self.add_argument("--ignore-ingested", dest="ignoreIngested", action="store_true",
20  help="Don't register files that have already been registered")
21  self.add_argument("root", help="Root directory to scan for calibs.")
22 
23 
25  def setDefaults(self):
26  if "filter" in self.register.columns:
27  self.parse.defaults["filter"] = "NONE"
28 
29 
31  """Task that generates registry for human curated calibration products
32  in a standardized text file format"""
33  ArgumentParser = IngestCuratedCalibsArgumentParser
34  _DefaultName = "ingestCuratedCalibs"
35  ConfigClass = IngestCuratedCalibsConfig
36 
37  def run(self, args):
38  """Ingest all defect files and add them to the registry"""
39 
40  try:
41  camera = args.butler.get('camera')
42  temp_dir = tempfile.mkdtemp()
43  calibs, calib_type = read_all(args.root, camera)
44  file_names = []
45  for d in calibs:
46  for s in calibs[d]:
47  file_name = f'{calib_type}_{d}_{s.isoformat()}.fits'
48  full_file_name = os.path.join(temp_dir, file_name)
49  self.log.info('%s written for sensor: %s and calibDate: %s' %
50  (calib_type, d, s.isoformat()))
51  calibs[d][s].writeFits(full_file_name)
52  file_names.append(full_file_name)
53  args.files = file_names
54  args.mode = 'move'
55  args.validity = None # Validity range is determined from the files
56  IngestCalibsTask.run(self, args)
57  finally:
58  shutil.rmtree(temp_dir)