25 from lsst.utils.timer
import timeMethod
26 from .calibrate
import CalibrateTask
27 from .characterizeImage
import CharacterizeImageTask
29 __all__ = [
"ProcessCcdConfig",
"ProcessCcdTask"]
33 """Config for ProcessCcd"""
34 isr = pexConfig.ConfigurableField(
36 doc=
"""Task to perform instrumental signature removal or load a post-ISR image; ISR consists of:
37 - assemble raw amplifier images into an exposure with image, variance and mask planes
38 - perform bias subtraction, flat fielding, etc.
39 - mask known bad pixels
40 - provide a preliminary WCS
43 charImage = pexConfig.ConfigurableField(
44 target=CharacterizeImageTask,
45 doc=
"""Task to characterize a science exposure:
46 - detect sources, usually at high S/N
47 - estimate the background, which is subtracted from the image and returned as field "background"
48 - estimate a PSF model, which is added to the exposure
49 - interpolate over defects and cosmic rays, updating the image, variance and mask planes
52 doCalibrate = pexConfig.Field(
55 doc=
"Perform calibration?",
57 calibrate = pexConfig.ConfigurableField(
59 doc=
"""Task to perform astrometric and photometric calibration:
60 - refine the WCS in the exposure
61 - refine the PhotoCalib object in the exposure
62 - detect sources, usually at low S/N
67 self.
isrisr.doWrite =
False
68 self.
charImagecharImage.doWriteExposure =
False
79 r"""!Assemble raw data, fit the PSF, detect and measure, and fit WCS and zero-point
81 @anchor ProcessCcdTask_
83 @section pipe_tasks_processCcd_Contents Contents
85 - @ref pipe_tasks_processCcd_Purpose
86 - @ref pipe_tasks_processCcd_Initialize
87 - @ref pipe_tasks_processCcd_IO
88 - @ref pipe_tasks_processCcd_Config
89 - @ref pipe_tasks_processCcd_Debug
90 - @ref pipe_tasks_processCcd_Example
92 @section pipe_tasks_processCcd_Purpose Description
94 Perform the following operations:
95 - Call isr to unpersist raw data and assemble it into a post-ISR exposure
96 - Call charImage subtract background, fit a PSF model, repair cosmic rays,
97 detect and measure bright sources, and measure aperture correction
98 - Call calibrate to perform deep detection, deblending and single-frame measurement,
99 refine the WCS and fit the photometric zero-point
101 @section pipe_tasks_processCcd_Initialize Task initialisation
103 @copydoc \_\_init\_\_
105 @section pipe_tasks_processCcd_IO Invoking the Task
107 This task is primarily designed to be run from the command line.
109 The main method is `runDataRef`, which takes a single butler data reference for the raw input data.
111 @section pipe_tasks_processCcd_Config Configuration parameters
113 See @ref ProcessCcdConfig
115 @section pipe_tasks_processCcd_Debug Debug variables
117 ProcessCcdTask has no debug output, but its subtasks do.
119 @section pipe_tasks_processCcd_Example A complete example of using ProcessCcdTask
121 The following commands will process all raw data in obs_test's data repository.
122 Note: be sure to specify an `--output` that does not already exist:
126 processCcd.py $OBS_TEST_DIR/data/input --output processCcdOut --id
128 The data is read from the small repository in the `obs_test` package and written `./processCcdOut`
129 (or whatever output you specified). Specifying `--id` with no values processes all data.
130 Add the option `--help` to see more options.
132 ConfigClass = ProcessCcdConfig
133 RunnerClass = pipeBase.ButlerInitializedTaskRunner
134 _DefaultName =
"processCcd"
136 def __init__(self, butler=None, psfRefObjLoader=None, astromRefObjLoader=None, photoRefObjLoader=None,
139 @param[in] butler The butler is passed to the refObjLoader constructor in case it is
140 needed. Ignored if the refObjLoader argument provides a loader directly.
141 @param[in] psfRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
142 external reference catalog for image characterization. May be None if the desired
143 loader can be constructed from the butler argument or all steps requiring a catalog
145 @param[in] astromRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
146 external reference catalog for astrometric calibration. May be None if the desired
147 loader can be constructed from the butler argument or all steps requiring a reference
148 catalog are disabled.
149 @param[in] photoRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
150 external reference catalog for photometric calibration. May be None if the desired
151 loader can be constructed from the butler argument or all steps requiring a reference
152 catalog are disabled.
153 @param[in,out] kwargs other keyword arguments for lsst.pipe.base.CmdLineTask
155 pipeBase.CmdLineTask.__init__(self, **kwargs)
156 self.makeSubtask(
"isr")
157 self.makeSubtask(
"charImage", butler=butler, refObjLoader=psfRefObjLoader)
158 self.makeSubtask(
"calibrate", butler=butler, icSourceSchema=self.charImage.schema,
159 astromRefObjLoader=astromRefObjLoader, photoRefObjLoader=photoRefObjLoader)
165 The sequence of operations is:
166 - remove instrument signature
167 - characterize image to estimate PSF and background
168 - calibrate astrometry and photometry
170 @param sensorRef: butler data reference for raw data
172 @return pipe_base Struct containing these fields:
173 - charRes: object returned by image characterization task; an lsst.pipe.base.Struct
174 that will include "background" and "sourceCat" fields
175 - calibRes: object returned by calibration task: an lsst.pipe.base.Struct
176 that will include "background" and "sourceCat" fields
177 - exposure: final exposure (an lsst.afw.image.ExposureF)
178 - background: final background model (an lsst.afw.math.BackgroundList)
180 self.log.info(
"Processing %s", sensorRef.dataId)
182 exposure = self.isr.
runDataRef(sensorRef).exposure
189 exposure = charRes.exposure
191 if self.config.doCalibrate:
194 exposure=charRes.exposure,
195 background=charRes.background,
197 icSourceCat=charRes.sourceCat,
200 return pipeBase.Struct(
202 calibRes=calibRes
if self.config.doCalibrate
else None,
204 background=calibRes.background
if self.config.doCalibrate
else charRes.background,
208 def _makeArgumentParser(cls):
209 """!Create and return an argument parser
211 @param[in] cls the class object
212 @return the argument parser for this task.
214 This override is used to delay making the data ref list until the dataset type is known;
215 this is done in @ref parseAndRun.
217 parser = pipeBase.ArgumentParser(name=cls.
_DefaultName_DefaultName)
218 parser.add_id_argument(name=
"--id",
219 datasetType=pipeBase.ConfigDatasetType(name=
"isr.datasetType"),
220 help=
"data IDs, e.g. --id visit=12345 ccd=1,2^0,3")
Assemble raw data, fit the PSF, detect and measure, and fit WCS and zero-point.
def __init__(self, butler=None, psfRefObjLoader=None, astromRefObjLoader=None, photoRefObjLoader=None, **kwargs)
def runDataRef(self, sensorRef)