25from lsst.utils.timer
import timeMethod
26from .calibrate
import CalibrateTask
27from .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
80 Assemble raw data, fit the PSF, detect and measure,
and fit WCS
and zero-point
82 @anchor ProcessCcdTask_
84 @section pipe_tasks_processCcd_Contents Contents
86 -
@ref pipe_tasks_processCcd_Purpose
87 -
@ref pipe_tasks_processCcd_Initialize
88 -
@ref pipe_tasks_processCcd_IO
89 -
@ref pipe_tasks_processCcd_Config
90 -
@ref pipe_tasks_processCcd_Debug
91 -
@ref pipe_tasks_processCcd_Example
93 @section pipe_tasks_processCcd_Purpose Description
95 Perform the following operations:
96 - Call isr to unpersist raw data
and assemble it into a post-ISR exposure
97 - Call charImage subtract background, fit a PSF model, repair cosmic rays,
98 detect
and measure bright sources,
and measure aperture correction
99 - Call calibrate to perform deep detection, deblending
and single-frame measurement,
100 refine the WCS
and fit the photometric zero-point
102 @section pipe_tasks_processCcd_Initialize Task initialisation
104 @copydoc \_\_init\_\_
106 @section pipe_tasks_processCcd_IO Invoking the Task
108 This task
is primarily designed to be run
from the command line.
110 The main method
is `runDataRef`, which takes a single butler data reference
for the raw input data.
112 @section pipe_tasks_processCcd_Config Configuration parameters
114 See
@ref ProcessCcdConfig
116 @section pipe_tasks_processCcd_Debug Debug variables
118 ProcessCcdTask has no debug output, but its subtasks do.
120 @section pipe_tasks_processCcd_Example A complete example of using ProcessCcdTask
122 The following commands will process all raw data
in obs_test
's data repository.
123 Note: be sure to specify an `--output` that does not already exist:
127 processCcd.py $OBS_TEST_DIR/data/input --output processCcdOut --id
129 The data
is read
from the small repository
in the `obs_test` package
and written `./processCcdOut`
130 (
or whatever output you specified). Specifying `--id`
with no values processes all data.
131 Add the option `--help` to see more options.
133 ConfigClass = ProcessCcdConfig
134 RunnerClass = pipeBase.ButlerInitializedTaskRunner
135 _DefaultName = "processCcd"
137 def __init__(self, butler=None, psfRefObjLoader=None, astromRefObjLoader=None, photoRefObjLoader=None,
140 @param[
in] butler The butler
is passed to the refObjLoader constructor
in case it
is
141 needed. Ignored
if the refObjLoader argument provides a loader directly.
142 @param[
in] psfRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
143 external reference catalog
for image characterization. May be
None if the desired
144 loader can be constructed
from the butler argument
or all steps requiring a catalog
146 @param[
in] astromRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
147 external reference catalog
for astrometric calibration. May be
None if the desired
148 loader can be constructed
from the butler argument
or all steps requiring a reference
149 catalog are disabled.
150 @param[
in] photoRefObjLoader An instance of LoadReferenceObjectsTasks that supplies an
151 external reference catalog
for photometric calibration. May be
None if the desired
152 loader can be constructed
from the butler argument
or all steps requiring a reference
153 catalog are disabled.
154 @param[
in,out] kwargs other keyword arguments
for lsst.pipe.base.CmdLineTask
156 pipeBase.CmdLineTask.__init__(self, **kwargs)
157 self.makeSubtask("isr")
158 self.makeSubtask(
"charImage", butler=butler, refObjLoader=psfRefObjLoader)
159 self.makeSubtask(
"calibrate", butler=butler, icSourceSchema=self.charImage.schema,
160 astromRefObjLoader=astromRefObjLoader, photoRefObjLoader=photoRefObjLoader)
166 The sequence of operations is:
167 - remove instrument signature
168 - characterize image to estimate PSF
and background
169 - calibrate astrometry
and photometry
171 @param sensorRef: butler data reference
for raw data
173 @return pipe_base Struct containing these fields:
174 - charRes: object returned by image characterization task; an lsst.pipe.base.Struct
175 that will include
"background" and "sourceCat" fields
176 - calibRes: object returned by calibration task: an lsst.pipe.base.Struct
177 that will include
"background" and "sourceCat" fields
178 - exposure: final exposure (an lsst.afw.image.ExposureF)
181 self.log.info("Processing %s", sensorRef.dataId)
183 exposure = self.isr.
runDataRef(sensorRef).exposure
190 exposure = charRes.exposure
192 if self.config.doCalibrate:
195 exposure=charRes.exposure,
196 background=charRes.background,
198 icSourceCat=charRes.sourceCat,
201 return pipeBase.Struct(
203 calibRes=calibRes
if self.config.doCalibrate
else None,
205 background=calibRes.background
if self.config.doCalibrate
else charRes.background,
209 def _makeArgumentParser(cls):
210 """!Create and return an argument parser
212 @param[
in] cls the
class object
213 @return the argument parser
for this task.
215 This override
is used to delay making the data ref list until the dataset type
is known;
216 this
is done
in @ref parseAndRun.
218 parser = pipeBase.ArgumentParser(name=cls._DefaultName_DefaultName)
219 parser.add_id_argument(name="--id",
220 datasetType=pipeBase.ConfigDatasetType(name=
"isr.datasetType"),
221 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)