ImageReducer#

class lsst.ip.diffim.ImageReducer(config: Config | None = None, *, name: str | None = None, parentTask: Task | None = None, log: logging.Logger | lsst.utils.logging.LsstLogAdapter | None = None)#

Bases: Task

Base class for any ‘reduce’ task that is to be used as ImageMapReduceConfig.reducer.

Basic reduce operations are provided by the run method of this class, to be selected by its config.

Methods Summary

run(mapperResults, exposure, **kwargs)

Reduce a list of items produced by ImageMapper.

Methods Documentation

run(mapperResults, exposure, **kwargs)#

Reduce a list of items produced by ImageMapper.

Either stitch the passed mapperResults list together into a new Exposure (default) or pass it through (if self.config.reduceOperation is ‘none’).

If self.config.reduceOperation is not ‘none’, then expect that the pipeBase.Struct`s in the `mapperResults list contain sub-exposures named ‘subExposure’, to be stitched back into a single Exposure with the same dimensions, PSF, and mask as the input exposure. Otherwise, the mapperResults list is simply returned directly.

Parameters#

mapperResultslist

list of lsst.pipe.base.Struct returned by ImageMapper.run.

exposurelsst.afw.image.Exposure

the original exposure which is cloned to use as the basis for the resulting exposure (if self.config.mapper.reduceOperation is not ‘None’)

kwargs :

additional keyword arguments propagated from ImageMapReduceTask.run.

Returns#

A lsst.pipe.base.Struct containing either an lsst.afw.image.Exposure (named ‘exposure’) or a list (named ‘result’), depending on config.reduceOperation.

Notes#

  1. This currently correctly handles overlapping sub-exposures. For overlapping sub-exposures, use config.reduceOperation='average'.

  2. This correctly handles varying PSFs, constructing the resulting exposure’s PSF via CoaddPsf (DM-9629).

Known issues

  1. To be done: correct handling of masks (nearly there)

  2. This logic currently makes two copies of the original exposure (one here and one in mapper.run()). Possibly of concern for large images on memory-constrained systems.