lsst.ip.diffim  21.0.0-21-g51ee50f4+981cd1fc80
Public Member Functions | Public Attributes | List of all members
lsst.ip.diffim.dcrModel.DcrModel Class Reference

Public Member Functions

def __init__ (self, modelImages, effectiveWavelength, bandwidth, filterLabel=None, psf=None, mask=None, variance=None, photoCalib=None)
 
def fromImage (cls, maskedImage, dcrNumSubfilters, effectiveWavelength, bandwidth, filterLabel=None, psf=None, photoCalib=None)
 
def fromDataRef (cls, dataRef, effectiveWavelength, bandwidth, datasetType="dcrCoadd", numSubfilters=None, **kwargs)
 
def fromQuantum (cls, availableCoaddRefs, effectiveWavelength, bandwidth)
 
def __len__ (self)
 
def __getitem__ (self, subfilter)
 
def __setitem__ (self, subfilter, maskedImage)
 
def effectiveWavelength (self)
 
def filter (self)
 
def bandwidth (self)
 
def psf (self)
 
def bbox (self)
 
def mask (self)
 
def variance (self)
 
def getReferenceImage (self, bbox=None)
 
def assign (self, dcrSubModel, bbox=None)
 
def buildMatchedTemplate (self, exposure=None, order=3, visitInfo=None, bbox=None, wcs=None, mask=None, splitSubfilters=True, splitThreshold=0., amplifyModel=1.)
 
def buildMatchedExposure (self, exposure=None, visitInfo=None, bbox=None, wcs=None, mask=None)
 
def conditionDcrModel (self, modelImages, bbox, gain=1.)
 
def regularizeModelIter (self, subfilter, newModel, bbox, regularizationFactor, regularizationWidth=2)
 
def regularizeModelFreq (self, modelImages, bbox, statsCtrl, regularizationFactor, regularizationWidth=2, mask=None, convergenceMaskPlanes="DETECTED")
 
def calculateNoiseCutoff (self, image, statsCtrl, bufferSize, convergenceMaskPlanes="DETECTED", mask=None, bbox=None)
 
def applyImageThresholds (self, image, highThreshold=None, lowThreshold=None, regularizationWidth=2)
 

Public Attributes

 dcrNumSubfilters
 
 modelImages
 
 photoCalib
 

Detailed Description

A model of the true sky after correcting chromatic effects.

Attributes
----------
dcrNumSubfilters : `int`
    Number of sub-filters used to model chromatic effects within a band.
modelImages : `list` of `lsst.afw.image.Image`
    A list of masked images, each containing the model for one subfilter

Notes
-----
The ``DcrModel`` contains an estimate of the true sky, at a higher
wavelength resolution than the input observations. It can be forward-
modeled to produce Differential Chromatic Refraction (DCR) matched
templates for a given ``Exposure``, and provides utilities for conditioning
the model in ``dcrAssembleCoadd`` to avoid oscillating solutions between
iterations of forward modeling or between the subfilters of the model.

Definition at line 32 of file dcrModel.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.ip.diffim.dcrModel.DcrModel.__init__ (   self,
  modelImages,
  effectiveWavelength,
  bandwidth,
  filterLabel = None,
  psf = None,
  mask = None,
  variance = None,
  photoCalib = None 
)

Definition at line 52 of file dcrModel.py.

Member Function Documentation

◆ __getitem__()

def lsst.ip.diffim.dcrModel.DcrModel.__getitem__ (   self,
  subfilter 
)
Iterate over the subfilters of the DCR model.

Parameters
----------
subfilter : `int`
    Index of the current ``subfilter`` within the full band.
    Negative indices are allowed, and count in reverse order
    from the highest ``subfilter``.

Returns
-------
modelImage : `lsst.afw.image.Image`
    The DCR model for the given ``subfilter``.

Raises
------
IndexError
    If the requested ``subfilter`` is greater or equal to the number
    of subfilters in the model.

Definition at line 220 of file dcrModel.py.

◆ __len__()

def lsst.ip.diffim.dcrModel.DcrModel.__len__ (   self)
Return the number of subfilters.

Returns
-------
dcrNumSubfilters : `int`
    The number of DCR subfilters in the model.

Definition at line 210 of file dcrModel.py.

◆ __setitem__()

def lsst.ip.diffim.dcrModel.DcrModel.__setitem__ (   self,
  subfilter,
  maskedImage 
)
Update the model image for one subfilter.

Parameters
----------
subfilter : `int`
    Index of the current subfilter within the full band.
maskedImage : `lsst.afw.image.Image`
    The DCR model to set for the given ``subfilter``.

Raises
------
IndexError
    If the requested ``subfilter`` is greater or equal to the number
    of subfilters in the model.
ValueError
    If the bounding box of the new image does not match.

Definition at line 245 of file dcrModel.py.

◆ applyImageThresholds()

def lsst.ip.diffim.dcrModel.DcrModel.applyImageThresholds (   self,
  image,
  highThreshold = None,
  lowThreshold = None,
  regularizationWidth = 2 
)
Restrict image values to be between upper and lower limits.

This method flags all pixels in an image that are outside of the given
threshold values. The threshold values are taken from a reference
image, so noisy pixels are likely to get flagged. In order to exclude
those noisy pixels, the array of flags is eroded and dilated, which
removes isolated pixels outside of the thresholds from the list of
pixels to be modified. Pixels that remain flagged after this operation
have their values set to the appropriate upper or lower threshold
value.

Parameters
----------
image : `numpy.ndarray`
    The image to apply the thresholds to.
    The values will be modified in place.
highThreshold : `numpy.ndarray`, optional
    Array of upper limit values for each pixel of ``image``.
lowThreshold : `numpy.ndarray`, optional
    Array of lower limit values for each pixel of ``image``.
regularizationWidth : `int`, optional
    Minimum radius of a region to include in regularization, in pixels.

Definition at line 650 of file dcrModel.py.

◆ assign()

def lsst.ip.diffim.dcrModel.DcrModel.assign (   self,
  dcrSubModel,
  bbox = None 
)
Update a sub-region of the ``DcrModel`` with new values.

Parameters
----------
dcrSubModel : `lsst.pipe.tasks.DcrModel`
    New model of the true scene after correcting chromatic effects.
bbox : `lsst.afw.geom.Box2I`, optional
    Sub-region of the coadd.
    Defaults to the bounding box of ``dcrSubModel``.

Raises
------
ValueError
    If the new model has a different number of subfilters.

Definition at line 363 of file dcrModel.py.

◆ bandwidth()

def lsst.ip.diffim.dcrModel.DcrModel.bandwidth (   self)
Return the bandwidth of the model.

Returns
-------
bandwidth : `float`
    The bandwidth of the current filter, in nanometers.

Definition at line 292 of file dcrModel.py.

◆ bbox()

def lsst.ip.diffim.dcrModel.DcrModel.bbox (   self)
Return the common bounding box of each subfilter image.

Returns
-------
bbox : `lsst.afw.geom.Box2I`
    Bounding box of the DCR model.

Definition at line 314 of file dcrModel.py.

◆ buildMatchedExposure()

def lsst.ip.diffim.dcrModel.DcrModel.buildMatchedExposure (   self,
  exposure = None,
  visitInfo = None,
  bbox = None,
  wcs = None,
  mask = None 
)
Wrapper to create an exposure from a template image.

Parameters
----------
exposure : `lsst.afw.image.Exposure`, optional
    The input exposure to build a matched template for.
    May be omitted if all of the metadata is supplied separately
visitInfo : `lsst.afw.image.VisitInfo`, optional
    Metadata for the exposure. Ignored if ``exposure`` is set.
bbox : `lsst.afw.geom.Box2I`, optional
    Sub-region of the coadd. Ignored if ``exposure`` is set.
wcs : `lsst.afw.geom.SkyWcs`, optional
    Coordinate system definition (wcs) for the exposure.
    Ignored if ``exposure`` is set.
mask : `lsst.afw.image.Mask`, optional
    reference mask to use for the template image.

Returns
-------
templateExposure : `lsst.afw.image.exposureF`
    The DCR-matched template

Raises
------
RuntimeError
    If no `photcCalib` is set.

Definition at line 450 of file dcrModel.py.

◆ buildMatchedTemplate()

def lsst.ip.diffim.dcrModel.DcrModel.buildMatchedTemplate (   self,
  exposure = None,
  order = 3,
  visitInfo = None,
  bbox = None,
  wcs = None,
  mask = None,
  splitSubfilters = True,
  splitThreshold = 0.,
  amplifyModel = 1. 
)
Create a DCR-matched template image for an exposure.

Parameters
----------
exposure : `lsst.afw.image.Exposure`, optional
    The input exposure to build a matched template for.
    May be omitted if all of the metadata is supplied separately
order : `int`, optional
    Interpolation order of the DCR shift.
visitInfo : `lsst.afw.image.VisitInfo`, optional
    Metadata for the exposure. Ignored if ``exposure`` is set.
bbox : `lsst.afw.geom.Box2I`, optional
    Sub-region of the coadd. Ignored if ``exposure`` is set.
wcs : `lsst.afw.geom.SkyWcs`, optional
    Coordinate system definition (wcs) for the exposure.
    Ignored if ``exposure`` is set.
mask : `lsst.afw.image.Mask`, optional
    reference mask to use for the template image.
splitSubfilters : `bool`, optional
    Calculate DCR for two evenly-spaced wavelengths in each subfilter,
    instead of at the midpoint. Default: True
splitThreshold : `float`, optional
    Minimum DCR difference within a subfilter required to use
    ``splitSubfilters``
amplifyModel : `float`, optional
    Multiplication factor to amplify differences between model planes.
    Used to speed convergence of iterative forward modeling.

Returns
-------
templateImage : `lsst.afw.image.ImageF`
    The DCR-matched template

Raises
------
ValueError
    If neither ``exposure`` or all of ``visitInfo``, ``bbox``, and
    ``wcs`` are set.

Definition at line 386 of file dcrModel.py.

◆ calculateNoiseCutoff()

def lsst.ip.diffim.dcrModel.DcrModel.calculateNoiseCutoff (   self,
  image,
  statsCtrl,
  bufferSize,
  convergenceMaskPlanes = "DETECTED",
  mask = None,
  bbox = None 
)
Helper function to calculate the background noise level of an image.

Parameters
----------
image : `lsst.afw.image.Image`
    The input image to evaluate the background noise properties.
statsCtrl : `lsst.afw.math.StatisticsControl`
    Statistics control object for coaddition.
bufferSize : `int`
    Number of additional pixels to exclude
    from the edges of the bounding box.
convergenceMaskPlanes : `list` of `str`, or `str`
    Mask planes to use to calculate convergence.
mask : `lsst.afw.image.Mask`, Optional
    Optional alternate mask
bbox : `lsst.afw.geom.Box2I`, optional
    Sub-region of the masked image to calculate the noise level over.

Returns
-------
noiseCutoff : `float`
    The threshold value to treat pixels as noise in an image..

Definition at line 613 of file dcrModel.py.

◆ conditionDcrModel()

def lsst.ip.diffim.dcrModel.DcrModel.conditionDcrModel (   self,
  modelImages,
  bbox,
  gain = 1. 
)
Average two iterations' solutions to reduce oscillations.

Parameters
----------
modelImages : `list` of `lsst.afw.image.Image`
    The new DCR model images from the current iteration.
    The values will be modified in place.
bbox : `lsst.afw.geom.Box2I`
    Sub-region of the coadd
gain : `float`, optional
    Relative weight to give the new solution when updating the model.
    Defaults to 1.0, which gives equal weight to both solutions.

Definition at line 501 of file dcrModel.py.

◆ effectiveWavelength()

def lsst.ip.diffim.dcrModel.DcrModel.effectiveWavelength (   self)
Return the effective wavelength of the model.

Returns
-------
effectiveWavelength : `float`
    The effective wavelength of the current filter, in nanometers.

Definition at line 270 of file dcrModel.py.

◆ filter()

def lsst.ip.diffim.dcrModel.DcrModel.filter (   self)
Return the filter label for the model.

Returns
-------
filterLabel : `lsst.afw.image.FilterLabel`
    The filter used for the input observations.

Definition at line 281 of file dcrModel.py.

◆ fromDataRef()

def lsst.ip.diffim.dcrModel.DcrModel.fromDataRef (   cls,
  dataRef,
  effectiveWavelength,
  bandwidth,
  datasetType = "dcrCoadd",
  numSubfilters = None,
**  kwargs 
)
Load an existing DcrModel from a Gen 2 repository.

Parameters
----------
dataRef : `lsst.daf.persistence.ButlerDataRef`
    Data reference defining the patch for coaddition and the
    reference Warp
effectiveWavelength : `float`
    The effective wavelengths of the current filter, in nanometers.
bandwidth : `float`
    The bandwidth of the current filter, in nanometers.
datasetType : `str`, optional
    Name of the DcrModel in the registry {"dcrCoadd", "dcrCoadd_sub"}
numSubfilters : `int`
    Number of sub-filters used to model chromatic effects within a
    band.
**kwargs
    Additional keyword arguments to pass to look up the model in the
    data registry.
    Common keywords and their types include: ``tract``:`str`,
    ``patch``:`str`, ``bbox``:`lsst.afw.geom.Box2I`

Returns
-------
dcrModel : `lsst.pipe.tasks.DcrModel`
    Best fit model of the true sky after correcting chromatic effects.

Definition at line 115 of file dcrModel.py.

◆ fromImage()

def lsst.ip.diffim.dcrModel.DcrModel.fromImage (   cls,
  maskedImage,
  dcrNumSubfilters,
  effectiveWavelength,
  bandwidth,
  filterLabel = None,
  psf = None,
  photoCalib = None 
)
Initialize a DcrModel by dividing a coadd between the subfilters.

Parameters
----------
maskedImage : `lsst.afw.image.MaskedImage`
    Input coadded image to divide equally between the subfilters.
dcrNumSubfilters : `int`
    Number of sub-filters used to model chromatic effects within a
    band.
effectiveWavelength : `float`
    The effective wavelengths of the current filter, in nanometers.
bandwidth : `float`
    The bandwidth of the current filter, in nanometers.
filterLabel : `lsst.afw.image.FilterLabel`, optional
    The filter label, set in the current instruments' obs package.
    Required for any calculation of DCR, including making matched
    templates.
psf : `lsst.afw.detection.Psf`, optional
    Point spread function (PSF) of the model.
    Required if the ``DcrModel`` will be persisted.
photoCalib : `lsst.afw.image.PhotoCalib`, optional
    Calibration to convert instrumental flux and
    flux error to nanoJansky.

Returns
-------
dcrModel : `lsst.pipe.tasks.DcrModel`
    Best fit model of the true sky after correcting chromatic effects.

Definition at line 65 of file dcrModel.py.

◆ fromQuantum()

def lsst.ip.diffim.dcrModel.DcrModel.fromQuantum (   cls,
  availableCoaddRefs,
  effectiveWavelength,
  bandwidth 
)
Load an existing DcrModel from a Gen 3 repository.

Parameters
----------
availableCoaddRefs : `dict` [`int`, `lsst.daf.butler.DeferredDatasetHandle`]
    Dictionary of spatially relevant retrieved coadd patches,
    indexed by their sequential patch number.
effectiveWavelength : `float`
    The effective wavelengths of the current filter, in nanometers.
bandwidth : `float`
    The bandwidth of the current filter, in nanometers.

Returns
-------
dcrModel : `lsst.pipe.tasks.DcrModel`
    Best fit model of the true sky after correcting chromatic effects.

Definition at line 169 of file dcrModel.py.

◆ getReferenceImage()

def lsst.ip.diffim.dcrModel.DcrModel.getReferenceImage (   self,
  bbox = None 
)
Calculate a reference image from the average of the subfilter
images.

Parameters
----------
bbox : `lsst.afw.geom.Box2I`, optional
    Sub-region of the coadd. Returns the entire image if `None`.

Returns
-------
refImage : `numpy.ndarray`
    The reference image with no chromatic effects applied.

Definition at line 346 of file dcrModel.py.

◆ mask()

def lsst.ip.diffim.dcrModel.DcrModel.mask (   self)
Return the common mask of each subfilter image.

Returns
-------
mask : `lsst.afw.image.Mask`
    Mask plane of the DCR model.

Definition at line 325 of file dcrModel.py.

◆ psf()

def lsst.ip.diffim.dcrModel.DcrModel.psf (   self)
Return the psf of the model.

Returns
-------
psf : `lsst.afw.detection.Psf`
    Point spread function (PSF) of the model.

Definition at line 303 of file dcrModel.py.

◆ regularizeModelFreq()

def lsst.ip.diffim.dcrModel.DcrModel.regularizeModelFreq (   self,
  modelImages,
  bbox,
  statsCtrl,
  regularizationFactor,
  regularizationWidth = 2,
  mask = None,
  convergenceMaskPlanes = "DETECTED" 
)
Restrict large variations in the model between subfilters.

Parameters
----------
modelImages : `list` of `lsst.afw.image.Image`
    The new DCR model images from the current iteration.
    The values will be modified in place.
bbox : `lsst.afw.geom.Box2I`
    Sub-region to coadd
statsCtrl : `lsst.afw.math.StatisticsControl`
    Statistics control object for coaddition.
regularizationFactor : `float`
    Maximum relative change of the model allowed between subfilters.
regularizationWidth : `int`, optional
    Minimum radius of a region to include in regularization, in pixels.
mask : `lsst.afw.image.Mask`, optional
    Optional alternate mask
convergenceMaskPlanes : `list` of `str`, or `str`, optional
    Mask planes to use to calculate convergence.

Notes
-----
This implementation of frequency regularization restricts each
subfilter image to be a smoothly-varying function times a reference
image.

Definition at line 547 of file dcrModel.py.

◆ regularizeModelIter()

def lsst.ip.diffim.dcrModel.DcrModel.regularizeModelIter (   self,
  subfilter,
  newModel,
  bbox,
  regularizationFactor,
  regularizationWidth = 2 
)
Restrict large variations in the model between iterations.

Parameters
----------
subfilter : `int`
    Index of the current subfilter within the full band.
newModel : `lsst.afw.image.Image`
    The new DCR model for one subfilter from the current iteration.
    Values in ``newModel`` that are extreme compared with the last
    iteration are modified in place.
bbox : `lsst.afw.geom.Box2I`
    Sub-region to coadd
regularizationFactor : `float`
    Maximum relative change of the model allowed between iterations.
regularizationWidth : int, optional
    Minimum radius of a region to include in regularization, in pixels.

Definition at line 521 of file dcrModel.py.

◆ variance()

def lsst.ip.diffim.dcrModel.DcrModel.variance (   self)
Return the common variance of each subfilter image.

Returns
-------
variance : `lsst.afw.image.Image`
    Variance plane of the DCR model.

Definition at line 336 of file dcrModel.py.

Member Data Documentation

◆ dcrNumSubfilters

lsst.ip.diffim.dcrModel.DcrModel.dcrNumSubfilters

Definition at line 54 of file dcrModel.py.

◆ modelImages

lsst.ip.diffim.dcrModel.DcrModel.modelImages

Definition at line 55 of file dcrModel.py.

◆ photoCalib

lsst.ip.diffim.dcrModel.DcrModel.photoCalib

Definition at line 62 of file dcrModel.py.


The documentation for this class was generated from the following file: