23 import lsst.pex.config
as pexConfig
25 from .calibrate
import CalibrateTask
26 from .characterizeImage
import CharacterizeImageTask
28 __all__ = [
"ProcessCcdConfig",
"ProcessCcdTask"]
32 """Config for ProcessCcd"""
33 isr = pexConfig.ConfigurableField(
35 doc=
"""Task to perform instrumental signature removal or load a post-ISR image; ISR consists of:
36 - assemble raw amplifier images into an exposure with image, variance and mask planes
37 - perform bias subtraction, flat fielding, etc.
38 - mask known bad pixels
39 - provide a preliminary WCS
42 charImage = pexConfig.ConfigurableField(
43 target=CharacterizeImageTask,
44 doc=
"""Task to characterize a science exposure:
45 - detect sources, usually at high S/N
46 - estimate the background, which is subtracted from the image and returned as field "background"
47 - estimate a PSF model, which is added to the exposure
48 - interpolate over defects and cosmic rays, updating the image, variance and mask planes
51 doCalibrate = pexConfig.Field(
54 doc=
"Perform calibration?",
56 calibrate = pexConfig.ConfigurableField(
58 doc=
"""Task to perform astrometric and photometric calibration:
59 - refine the WCS in the exposure
60 - refine the PhotoCalib object in the exposure
61 - detect sources, usually at low S/N
66 self.
isr.doWrite =
False
78 r"""!Assemble raw data, fit the PSF, detect and measure, and fit WCS and zero-point
80 @anchor ProcessCcdTask_
82 @section pipe_tasks_processCcd_Contents Contents
84 - @ref pipe_tasks_processCcd_Purpose
85 - @ref pipe_tasks_processCcd_Initialize
86 - @ref pipe_tasks_processCcd_IO
87 - @ref pipe_tasks_processCcd_Config
88 - @ref pipe_tasks_processCcd_Debug
89 - @ref pipe_tasks_processCcd_Example
91 @section pipe_tasks_processCcd_Purpose Description
93 Perform the following operations:
94 - Call isr to unpersist raw data and assemble it into a post-ISR exposure
95 - Call charImage subtract background, fit a PSF model, repair cosmic rays,
96 detect and measure bright sources, and measure aperture correction
97 - Call calibrate to perform deep detection, deblending and single-frame measurement,
98 refine the WCS and fit the photometric zero-point
100 @section pipe_tasks_processCcd_Initialize Task initialisation
102 @copydoc \_\_init\_\_
104 @section pipe_tasks_processCcd_IO Invoking the Task
106 This task is primarily designed to be run from the command line.
108 The main method is `runDataRef`, which takes a single butler data reference for the raw input data.
110 @section pipe_tasks_processCcd_Config Configuration parameters
112 See @ref ProcessCcdConfig
114 @section pipe_tasks_processCcd_Debug Debug variables
116 ProcessCcdTask has no debug output, but its subtasks do.
118 @section pipe_tasks_processCcd_Example A complete example of using ProcessCcdTask
120 The following commands will process all raw data in obs_test's data repository.
121 Note: be sure to specify an `--output` that does not already exist:
125 processCcd.py $OBS_TEST_DIR/data/input --output processCcdOut --id
127 The data is read from the small repository in the `obs_test` package and written `./processCcdOut`
128 (or whatever output you specified). Specifying `--id` with no values processes all data.
129 Add the option `--help` to see more options.
131 ConfigClass = ProcessCcdConfig
132 RunnerClass = pipeBase.ButlerInitializedTaskRunner
133 _DefaultName =
"processCcd"
135 def __init__(self, butler=None, psfRefObjLoader=None, astromRefObjLoader=None, photoRefObjLoader=None,
138 @param[in] butler The butler is passed to the refObjLoader constructor in case it is
139 needed. Ignored if the refObjLoader argument provides a loader directly.
140 @param[in] psfRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
141 external reference catalog for image characterization. May be None if the desired
142 loader can be constructed from the butler argument or all steps requiring a catalog
144 @param[in] astromRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
145 external reference catalog for astrometric calibration. May be None if the desired
146 loader can be constructed from the butler argument or all steps requiring a reference
147 catalog are disabled.
148 @param[in] photoRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
149 external reference catalog for photometric calibration. May be None if the desired
150 loader can be constructed from the butler argument or all steps requiring a reference
151 catalog are disabled.
152 @param[in,out] kwargs other keyword arguments for lsst.pipe.base.CmdLineTask
154 pipeBase.CmdLineTask.__init__(self, **kwargs)
155 self.makeSubtask(
"isr")
156 self.makeSubtask(
"charImage", butler=butler, refObjLoader=psfRefObjLoader)
157 self.makeSubtask(
"calibrate", butler=butler, icSourceSchema=self.charImage.schema,
158 astromRefObjLoader=astromRefObjLoader, photoRefObjLoader=photoRefObjLoader)
164 The sequence of operations is:
165 - remove instrument signature
166 - characterize image to estimate PSF and background
167 - calibrate astrometry and photometry
169 @param sensorRef: butler data reference for raw data
171 @return pipe_base Struct containing these fields:
172 - charRes: object returned by image characterization task; an lsst.pipe.base.Struct
173 that will include "background" and "sourceCat" fields
174 - calibRes: object returned by calibration task: an lsst.pipe.base.Struct
175 that will include "background" and "sourceCat" fields
176 - exposure: final exposure (an lsst.afw.image.ExposureF)
177 - background: final background model (an lsst.afw.math.BackgroundList)
179 self.log.
info(
"Processing %s" % (sensorRef.dataId))
181 exposure = self.isr.
runDataRef(sensorRef).exposure
188 exposure = charRes.exposure
190 if self.config.doCalibrate:
193 exposure=charRes.exposure,
194 background=charRes.background,
196 icSourceCat=charRes.sourceCat,
199 return pipeBase.Struct(
201 calibRes=calibRes
if self.config.doCalibrate
else None,
203 background=calibRes.background
if self.config.doCalibrate
else charRes.background,
207 def _makeArgumentParser(cls):
208 """!Create and return an argument parser
210 @param[in] cls the class object
211 @return the argument parser for this task.
213 This override is used to delay making the data ref list until the dataset type is known;
214 this is done in @ref parseAndRun.
217 parser.add_id_argument(name=
"--id",
218 datasetType=pipeBase.ConfigDatasetType(name=
"isr.datasetType"),
219 help=
"data IDs, e.g. --id visit=12345 ccd=1,2^0,3")