Loading [MathJax]/extensions/tex2jax.js
LSST Applications g0b6bd0c080+a72a5dd7e6,g1182afd7b4+2a019aa3bb,g17e5ecfddb+2b8207f7de,g1d67935e3f+06cf436103,g38293774b4+ac198e9f13,g396055baef+6a2097e274,g3b44f30a73+6611e0205b,g480783c3b1+98f8679e14,g48ccf36440+89c08d0516,g4b93dc025c+98f8679e14,g5c4744a4d9+a302e8c7f0,g613e996a0d+e1c447f2e0,g6c8d09e9e7+25247a063c,g7271f0639c+98f8679e14,g7a9cd813b8+124095ede6,g9d27549199+a302e8c7f0,ga1cf026fa3+ac198e9f13,ga32aa97882+7403ac30ac,ga786bb30fb+7a139211af,gaa63f70f4e+9994eb9896,gabf319e997+ade567573c,gba47b54d5d+94dc90c3ea,gbec6a3398f+06cf436103,gc6308e37c7+07dd123edb,gc655b1545f+ade567573c,gcc9029db3c+ab229f5caf,gd01420fc67+06cf436103,gd877ba84e5+06cf436103,gdb4cecd868+6f279b5b48,ge2d134c3d5+cc4dbb2e3f,ge448b5faa6+86d1ceac1d,gecc7e12556+98f8679e14,gf3ee170dca+25247a063c,gf4ac96e456+ade567573c,gf9f5ea5b4d+ac198e9f13,gff490e6085+8c2580be5c,w.2022.27
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ingestCuratedCalibs.py
Go to the documentation of this file.
1from .ingestCalibs import IngestCalibsTask, IngestCalibsConfig
2from .read_curated_calibs import read_all
3from lsst.pipe.base import InputOnlyArgumentParser
4
5import tempfile
6import shutil
7import os
8
9
10class IngestCuratedCalibsArgumentParser(InputOnlyArgumentParser):
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.registerregister.columns:
27 self.parseparse.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)
def writeFits(filename, stamps, metadata, type_name, write_mask, write_variance, write_archive=False)
Definition: stamps.py:42