23 Tasks for transforming raw measurement outputs to calibrated quantities.
31 """!Return a version of the input catalog which is contiguous in memory."""
32 if not catalog.isContiguous():
33 return catalog.copy(deep=
True)
39 """!Configuration for TransformTask."""
40 copyFields = pexConfig.ListField(
42 doc=
"Fields to copy from input to output catalog without transformation",
43 default=(
'id',
'coord_ra',
'coord_dec')
56 \anchor TransformTask_
58 \brief Transform a SourceCatalog containing raw measurements to calibrated form.
60 \section pipe_tasks_transform_Contents Contents
62 - \ref pipe_tasks_transform_purpose
63 - \ref pipe_tasks_transform_initialize
64 - \ref pipe_tasks_transform_invoke
66 \section pipe_tasks_transform_purpose Description
68 Given a set of measurement algorithms with their associated configuration,
69 the table of source measurements they have produced, and information about
70 an associated WCS and calibration, transform the raw measurement output to
73 Transformations are defined on a per-measurement-plugin basis. In
74 addition, a configurable set of fields may be simply copied from the input
75 to the output catalog.
77 This task operates on an input SourceCatalog and returns a BaseCatalog
78 containing the transformed results. It requires that the caller supply
79 information on the configuration of the measurement task which produced
80 the input data as well as the world coordinate system and calibration
81 under which the transformation will take place. It provides no
82 functionality for reading or writing data from a Butler: rather,
83 per-dataset-type command line tasks are provided to obtain the appropriate
84 information from a Butler (or elsewhere) and then delegate to this task.
86 \section pipe_tasks_transform_initialize Task initialization
90 \section pipe_tasks_transform_invoke Task invocation
94 ConfigClass = TransformConfig
95 _DefaultName =
"transform"
97 def __init__(self, measConfig, inputSchema, outputDataset, *args, **kwargs):
98 """!Initialize TransformTask.
100 @param[in] measConfig Configuration for the measurement task which
101 produced the measurments being transformed.
102 @param[in] inputSchema The schema of the input catalog.
103 @param[in] outputDataset The butler dataset type of the output catalog.
104 @param[in] *args Passed through to pipeBase.Task.__init__()
105 @param[in] *kwargs Passed through to pipeBase.Task.__init__()
107 pipeBase.Task.__init__(self, *args, **kwargs)
115 for field
in self.config.copyFields:
116 self.
mappermapper.addMapping(inputSchema.find(field).key)
121 for name
in measConfig.plugins.names:
122 config = measConfig.plugins.get(name)
123 transformClass = measConfig.plugins.registry.get(name).PluginClass.getTransformClass()
127 """!Return a dict containing an empty catalog representative of this task's output."""
132 def run(self, inputCat, wcs, photoCalib):
133 """!Transform raw source measurements to calibrated quantities.
135 @param[in] inputCat SourceCatalog of sources to transform.
136 @param[in] wcs The world coordinate system under which transformations will take place.
137 @param[in] photoCalib The calibration under which transformations will take place.
139 @return A BaseCatalog containing the transformed measurements.
142 outputCat.extend(inputCat, mapper=self.
mappermapper)
150 transform(inputCat, outputCat, wcs, photoCalib)
155 """!Configuration for RunTransformTaskBase derivatives."""
156 transform = pexConfig.ConfigurableField(
157 doc=
"Subtask which performs transformations",
160 inputConfigType = pexConfig.Field(
162 doc=
"Dataset type of measurement operation configuration",
168 \anchor RunTransformTaskBase_
170 \brief Command line interface for TransformTask.
172 \section pipe_tasks_transform_Contents Contents
174 - \ref pipe_tasks_runtransform_purpose
175 - \ref pipe_tasks_runtransform_invoke
177 \section pipe_tasks_runtransform_purpose Description
179 Provides a command-line task which can be used to run TransformTask.
181 - Loads a plugin registry based on configuration;
182 - Loads configuration for the measurement task which was applied from a repository;
183 - Loads the SourceCatalog input schema from a repository;
184 - For each input dataRef, reads the SourceCatalog, WCS and calibration from the
185 repository and executes TransformTask.
187 This is not a fully-fledged command line task: it requires specialization to a particular
188 source type by defining the variables indicated below.
190 \section pipe_tasks_runtransform_invoke Task invocation
194 RunnerClass = pipeBase.ButlerInitializedTaskRunner
195 ConfigClass = RunTransformConfig
212 The Butler dataset type for the schema of the input source catalog.
214 By default, we append `_schema` to the input source type. Subclasses may customize
222 The Butler dataset type for the schema of the output catalog.
224 By default, we prepend `transformed_` to the input source type. Subclasses may
225 customize if required.
227 return 'transformed_' + self.
sourceTypesourceType
232 The configuration of the measurement operation used to generate the input catalog.
234 By default we look for `measurement` under the root configuration of the
235 generating task. Subclasses may customize this (e.g. to `calibrate.measurement`)
238 return self.
butlerbutler.get(self.config.inputConfigType).measurement.value
241 pipeBase.CmdLineTask.__init__(self, *args, config=kwargs[
'config'], log=kwargs[
'log'])
243 self.makeSubtask(
'transform', measConfig=self.
measurementConfigmeasurementConfig,
249 """!Transform the source catalog referred to by dataRef.
251 The result is both returned and written as dataset type "transformed_" + the input
252 source dataset type to the provided dataRef.
254 @param[in] dataRef Data reference for source catalog & calibrated exposure.
256 @returns A BaseCatalog containing the transformed measurements.
258 inputCat = dataRef.get(self.
sourceTypesourceType)
259 wcs = dataRef.get(self.
calexpTypecalexpType).getWcs()
260 photoCalib = dataRef.get(self.
calexpTypecalexpType).getPhotoCalib()
261 outputCat = self.transform.
run(inputCat, wcs, photoCalib)
275 \anchor SrcTransformTask_
277 \brief Transform ``src`` measuremenents to calibrated form.
279 This is a specialization of \ref RunTransformTaskBase_ "RunTransformTaskBase" which
280 operates on ``src`` measurements. Refer to the parent documentation for details.
282 _DefaultName =
"transformSrcMeasurement"
284 calexpType =
'calexp'
288 return self.
butlerbutler.get(self.config.inputConfigType).calibrate.measurement.value
300 \anchor ForcedSrcTransformTask_
302 \brief Transform ``forced_src`` measuremenents to calibrated form.
304 This is a specialization of \ref RunTransformTaskBase_ "RunTransformTaskBase" which
305 operates on ``forced_src`` measurements. Refer to the parent documentation for details.
307 _DefaultName =
"transformForcedSrcMeasurement"
308 sourceType =
'forced_src'
309 calexpType =
'calexp'
321 \anchor CoaddSrcTransformTask_
323 \brief Transform measuremenents made on coadds to calibrated form.
325 This is a specialization of \ref RunTransformTaskBase_ "RunTransformTaskBase" which
326 operates on measurements made on coadds. Refer to the parent documentation for details.
328 _DefaultName =
"transformCoaddSrcMeasurement"
332 return self.
butlerbutler.get(self.config.inputConfigType).coaddName
336 return self.
coaddNamecoaddName +
"Coadd_meas"
340 return self.
coaddNamecoaddName +
"Coadd_calexp"
342 def _getConfigName(self):
343 return "%s_transformCoaddSrcMeasurement_config" % (self.
coaddNamecoaddName,)
345 def _getMetaDataName(self):
346 return "%s_transformCoaddSrcMeasurement_metadata" % (self.
coaddNamecoaddName,)
A mapping between the keys of two Schemas, used to copy data between them.
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
def run(self, coaddExposures, bbox, wcs)