lsst.ip.diffim  19.0.0-21-g2644856+12
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.ip.diffim.zogy.ZogyTask Class Reference
Inheritance diagram for lsst.ip.diffim.zogy.ZogyTask:
lsst.ip.diffim.zogy.ZogyMapper

Public Member Functions

def __init__ (self, templateExposure=None, scienceExposure=None, sig1=None, sig2=None, psf1=None, psf2=None, *args, **kwargs)
 
def setup (self, templateExposure=None, scienceExposure=None, sig1=None, sig2=None, psf1=None, psf2=None, correctBackground=False, *args, **kwargs)
 
def computePrereqs (self, psf1=None, psf2=None, padSize=0)
 
def computeDiffimFourierSpace (self, debug=False, returnMatchedTemplate=False, **kwargs)
 
def computeDiffimImageSpace (self, padSize=None, debug=False, **kwargs)
 
def computeDiffim (self, inImageSpace=None, padSize=None, returnMatchedTemplate=False, **kwargs)
 
def computeDiffimPsf (self, padSize=0, keepFourier=False, psf1=None, psf2=None)
 
def computeScorrFourierSpace (self, xVarAst=0., yVarAst=0., **kwargs)
 
def computeScorrImageSpace (self, xVarAst=0., yVarAst=0., padSize=None, **kwargs)
 
def computeScorr (self, xVarAst=0., yVarAst=0., inImageSpace=None, padSize=0, **kwargs)
 

Public Attributes

 template
 
 science
 
 statsControl
 
 im1
 
 im2
 
 im1_var
 
 im2_var
 
 im1_psf
 
 im2_psf
 
 sig1
 
 sig2
 
 Fr
 
 Fn
 
 padSize
 

Static Public Attributes

 ConfigClass = ZogyConfig
 

Detailed Description

Task to perform ZOGY proper image subtraction. See module-level documentation for
additional details.

In all methods, im1 is R (reference, or template) and im2 is N (new, or science).

Definition at line 132 of file zogy.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.ip.diffim.zogy.ZogyTask.__init__ (   self,
  templateExposure = None,
  scienceExposure = None,
  sig1 = None,
  sig2 = None,
  psf1 = None,
  psf2 = None,
args,
**  kwargs 
)
Create the ZOGY task.

Parameters
----------
templateExposure : `lsst.afw.image.Exposure`
    Template exposure ("Reference image" in ZOGY (2016)).
scienceExposure : `lsst.afw.image.Exposure`
    Science exposure ("New image" in ZOGY (2016)). Must have already been
    registered and photmetrically matched to template.
sig1 : `float`
    (Optional) sqrt(variance) of `templateExposure`. If `None`, it is
    computed from the sqrt(mean) of the `templateExposure` variance image.
sig2 : `float`
    (Optional) sqrt(variance) of `scienceExposure`. If `None`, it is
    computed from the sqrt(mean) of the `scienceExposure` variance image.
psf1 : 2D `numpy.array`
    (Optional) 2D array containing the PSF image for the template. If
    `None`, it is extracted from the PSF taken at the center of `templateExposure`.
psf2 : 2D `numpy.array`
    (Optional) 2D array containing the PSF image for the science img. If
    `None`, it is extracted from the PSF taken at the center of `scienceExposure`.
*args
    additional arguments to be passed to
    `lsst.pipe.base.Task`
**kwargs
    additional keyword arguments to be passed to
    `lsst.pipe.base.Task`

Definition at line 141 of file zogy.py.

Member Function Documentation

◆ computeDiffim()

def lsst.ip.diffim.zogy.ZogyTask.computeDiffim (   self,
  inImageSpace = None,
  padSize = None,
  returnMatchedTemplate = False,
**  kwargs 
)
Wrapper method to compute ZOGY proper diffim

This method should be used as the public interface for
computing the ZOGY diffim.

Parameters
----------
inImageSpace : `bool`
   Override config `inImageSpace` parameter
padSize : `int`
   Override config `padSize` parameter
returnMatchedTemplate : `bool`
   Include the PSF-matched template in the results Struct
**kwargs
    additional keyword arguments to be passed to
    `computeDiffimFourierSpace` or `computeDiffimImageSpace`.

Returns
-------
An lsst.pipe.base.Struct containing:
   - D : `lsst.afw.Exposure`
       the proper image difference, including correct variance,
       masks, and PSF
   - R : `lsst.afw.Exposure`
       If `returnMatchedTemplate` is True, the PSF-matched template
       exposure

Definition at line 610 of file zogy.py.

◆ computeDiffimFourierSpace()

def lsst.ip.diffim.zogy.ZogyTask.computeDiffimFourierSpace (   self,
  debug = False,
  returnMatchedTemplate = False,
**  kwargs 
)
Compute ZOGY diffim `D` as proscribed in ZOGY (2016) manuscript

Parameters
----------
debug : `bool`, optional
    If set to True, filter the kernels by setting the edges to zero.
returnMatchedTemplate : `bool`, optional
    Calculate the template image.
    If not set, the returned template will be None.

Notes
-----
In all functions, im1 is R (reference, or template) and im2 is N (new, or science)
Compute the ZOGY eqn. (13):

.. math::

    \widehat{D} = \frac{Fr\widehat{Pr}\widehat{N} -
    F_n\widehat{Pn}\widehat{R}}{\sqrt{\sigma_n^2 Fr^2
    \|\widehat{Pr}\|^2 + \sigma_r^2 F_n^2 \|\widehat{Pn}\|^2}}

where :math:`D` is the optimal difference image, :math:`R` and :math:`N` are the
reference and "new" image, respectively, :math:`Pr` and :math:`P_n` are their
PSFs, :math:`Fr` and :math:`Fn` are their flux-based zero-points (which we
will set to one here), :math:`\sigma_r^2` and :math:`\sigma_n^2` are their
variance, and :math:`\widehat{D}` denotes the FT of :math:`D`.

Returns
-------
result : `lsst.pipe.base.Struct`
    Result struct with components:

    - ``D`` : 2D `numpy.array`, the proper image difference
    - ``D_var`` : 2D `numpy.array`, the variance image for `D`

Definition at line 406 of file zogy.py.

◆ computeDiffimImageSpace()

def lsst.ip.diffim.zogy.ZogyTask.computeDiffimImageSpace (   self,
  padSize = None,
  debug = False,
**  kwargs 
)
Compute ZOGY diffim `D` using image-space convlutions

This method is still being debugged as it results in artifacts
when the PSFs are noisy (see module-level docstring). Thus
there are several options still enabled by the `debug` flag,
which are disabled by defult.

Parameters
----------
padSize : `int`
   The amount to pad the PSFs by
debug : `bool`
   Flag to enable debugging tests and options

Returns
-------
D : `lsst.afw.Exposure`
   the proper image difference, including correct variance,
   masks, and PSF

Definition at line 540 of file zogy.py.

◆ computeDiffimPsf()

def lsst.ip.diffim.zogy.ZogyTask.computeDiffimPsf (   self,
  padSize = 0,
  keepFourier = False,
  psf1 = None,
  psf2 = None 
)
Compute the ZOGY diffim PSF (ZOGY manuscript eq. 14)

Parameters
----------
padSize : `int`
   Override config `padSize` parameter
keepFourier : `bool`
   Return the FFT of the diffim PSF (do not inverse-FFT it)
psf1 : 2D `numpy.array`
    (Optional) Input psf of template, override if already padded
psf2 : 2D `numpy.array`
    (Optional) Input psf of science image, override if already padded

Returns
-------
Pd : 2D `numpy.array`
    The diffim PSF (or FFT of PSF if `keepFourier=True`)

Definition at line 661 of file zogy.py.

◆ computePrereqs()

def lsst.ip.diffim.zogy.ZogyTask.computePrereqs (   self,
  psf1 = None,
  psf2 = None,
  padSize = 0 
)
Compute standard ZOGY quantities used by (nearly) all methods.

Many of the ZOGY calculations require similar quantities, including
FFTs of the PSFs, and the "denominator" term (e.g. in eq. 13 of
ZOGY manuscript (2016). This function consolidates many of those
operations.

Parameters
----------
psf1 : 2D `numpy.array`
    (Optional) Input psf of template, override if already padded
psf2 : 2D `numpy.array`
    (Optional) Input psf of science image, override if already padded
padSize : `int`, optional
    Number of pixels to pad the image on each side with zeroes.

Returns
-------
A `lsst.pipe.base.Struct` containing:
- Pr : 2D `numpy.array`, the (possibly zero-padded) template PSF
- Pn : 2D `numpy.array`, the (possibly zero-padded) science PSF
- Pr_hat : 2D `numpy.array`, the FFT of `Pr`
- Pn_hat : 2D `numpy.array`, the FFT of `Pn`
- denom : 2D `numpy.array`, the denominator of equation (13) in ZOGY (2016) manuscript
- Fd : `float`, the relative flux scaling factor between science and template

Definition at line 355 of file zogy.py.

◆ computeScorr()

def lsst.ip.diffim.zogy.ZogyTask.computeScorr (   self,
  xVarAst = 0.,
  yVarAst = 0.,
  inImageSpace = None,
  padSize = 0,
**  kwargs 
)
Wrapper method to compute ZOGY corrected likelihood image, optimal for
source detection

This method should be used as the public interface for
computing the ZOGY S_corr.

Parameters
----------
xVarAst, yVarAst : `float`
   estimated astrometric noise (variance of astrometric registration errors)
inImageSpace : `bool`
   Override config `inImageSpace` parameter
padSize : `int`
   Override config `padSize` parameter

Returns
-------
S : `lsst.afw.image.Exposure`
    The likelihood exposure S (eq. 12 of ZOGY (2016)),
    including corrected variance, masks, and PSF

Definition at line 890 of file zogy.py.

◆ computeScorrFourierSpace()

def lsst.ip.diffim.zogy.ZogyTask.computeScorrFourierSpace (   self,
  xVarAst = 0.,
  yVarAst = 0.,
**  kwargs 
)
Compute corrected likelihood image, optimal for source detection

Compute ZOGY S_corr image. This image can be thresholded for
detection without optimal filtering, and the variance image is
corrected to account for astrometric noise (errors in
astrometric registration whether systematic or due to effects
such as DCR). The calculations here are all performed in
Fourier space, as proscribed in ZOGY (2016).

Parameters
----------
xVarAst, yVarAst : `float`
   estimated astrometric noise (variance of astrometric registration errors)

Returns
-------
result : `lsst.pipe.base.Struct`
    Result struct with components:

    - ``S`` : `numpy.array`, the likelihood image S (eq. 12 of ZOGY (2016))
    - ``S_var`` : the corrected variance image (denominator of eq. 25 of ZOGY (2016))
    - ``Dpsf`` : the PSF of the diffim D, likely never to be used.

Definition at line 748 of file zogy.py.

◆ computeScorrImageSpace()

def lsst.ip.diffim.zogy.ZogyTask.computeScorrImageSpace (   self,
  xVarAst = 0.,
  yVarAst = 0.,
  padSize = None,
**  kwargs 
)
Compute corrected likelihood image, optimal for source detection

Compute ZOGY S_corr image. This image can be thresholded for
detection without optimal filtering, and the variance image is
corrected to account for astrometric noise (errors in
astrometric registration whether systematic or due to effects
such as DCR). The calculations here are all performed in
Real (image) space.

Parameters
----------
xVarAst, yVarAst : `float`
   estimated astrometric noise (variance of astrometric registration errors)

Returns
-------
A `lsst.pipe.base.Struct` containing:
- S : `lsst.afw.image.Exposure`, the likelihood exposure S (eq. 12 of ZOGY (2016)),
    including corrected variance, masks, and PSF
- D : `lsst.afw.image.Exposure`, the proper image difference, including correct
    variance, masks, and PSF

Definition at line 828 of file zogy.py.

◆ setup()

def lsst.ip.diffim.zogy.ZogyTask.setup (   self,
  templateExposure = None,
  scienceExposure = None,
  sig1 = None,
  sig2 = None,
  psf1 = None,
  psf2 = None,
  correctBackground = False,
args,
**  kwargs 
)
Set up the ZOGY task.

Parameters
----------
templateExposure : `lsst.afw.image.Exposure`
    Template exposure ("Reference image" in ZOGY (2016)).
scienceExposure : `lsst.afw.image.Exposure`
    Science exposure ("New image" in ZOGY (2016)). Must have already been
    registered and photometrically matched to template.
sig1 : `float`
    (Optional) sqrt(variance) of `templateExposure`. If `None`, it is
    computed from the sqrt(mean) of the `templateExposure` variance image.
sig2 : `float`
    (Optional) sqrt(variance) of `scienceExposure`. If `None`, it is
    computed from the sqrt(mean) of the `scienceExposure` variance image.
psf1 : 2D `numpy.array`
    (Optional) 2D array containing the PSF image for the template. If
    `None`, it is extracted from the PSF taken at the center of `templateExposure`.
psf2 : 2D `numpy.array`
    (Optional) 2D array containing the PSF image for the science img. If
    `None`, it is extracted from the PSF taken at the center of `scienceExposure`.
correctBackground : `bool`
    (Optional) subtract sigma-clipped mean of exposures. Zogy doesn't correct
    nonzero backgrounds (unlike AL) so subtract them here.
*args
    additional arguments to be passed to
    `lsst.pipe.base.Task`
**kwargs
    additional keyword arguments to be passed to
    `lsst.pipe.base.Task`

Definition at line 176 of file zogy.py.

Member Data Documentation

◆ ConfigClass

lsst.ip.diffim.zogy.ZogyTask.ConfigClass = ZogyConfig
static

Definition at line 138 of file zogy.py.

◆ Fn

lsst.ip.diffim.zogy.ZogyTask.Fn

Definition at line 301 of file zogy.py.

◆ Fr

lsst.ip.diffim.zogy.ZogyTask.Fr

Definition at line 300 of file zogy.py.

◆ im1

lsst.ip.diffim.zogy.ZogyTask.im1

Definition at line 222 of file zogy.py.

◆ im1_psf

lsst.ip.diffim.zogy.ZogyTask.im1_psf

Definition at line 236 of file zogy.py.

◆ im1_var

lsst.ip.diffim.zogy.ZogyTask.im1_var

Definition at line 224 of file zogy.py.

◆ im2

lsst.ip.diffim.zogy.ZogyTask.im2

Definition at line 223 of file zogy.py.

◆ im2_psf

lsst.ip.diffim.zogy.ZogyTask.im2_psf

Definition at line 237 of file zogy.py.

◆ im2_var

lsst.ip.diffim.zogy.ZogyTask.im2_var

Definition at line 225 of file zogy.py.

◆ padSize

lsst.ip.diffim.zogy.ZogyTask.padSize

Definition at line 320 of file zogy.py.

◆ science

lsst.ip.diffim.zogy.ZogyTask.science

Definition at line 171 of file zogy.py.

◆ sig1

lsst.ip.diffim.zogy.ZogyTask.sig1

Definition at line 276 of file zogy.py.

◆ sig2

lsst.ip.diffim.zogy.ZogyTask.sig2

Definition at line 277 of file zogy.py.

◆ statsControl

lsst.ip.diffim.zogy.ZogyTask.statsControl

Definition at line 216 of file zogy.py.

◆ template

lsst.ip.diffim.zogy.ZogyTask.template

Definition at line 171 of file zogy.py.


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