LSST Applications
21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
|
Public Member Functions | |
def | subtractExposures (self, templateExposure, scienceExposure, templateFwhmPix=None, scienceFwhmPix=None, candidateList=None) |
def | getFwhmPix (self, psf) |
def | matchExposures (self, templateExposure, scienceExposure, templateFwhmPix=None, scienceFwhmPix=None, candidateList=None, doWarping=True, convolveTemplate=True) |
def | matchMaskedImages (self, templateMaskedImage, scienceMaskedImage, candidateList, templateFwhmPix=None, scienceFwhmPix=None) |
def | subtractExposures (self, templateExposure, scienceExposure, templateFwhmPix=None, scienceFwhmPix=None, candidateList=None, doWarping=True, convolveTemplate=True) |
def | subtractMaskedImages (self, templateMaskedImage, scienceMaskedImage, candidateList, templateFwhmPix=None, scienceFwhmPix=None) |
def | getSelectSources (self, exposure, sigma=None, doSmooth=True, idFactory=None) |
def | makeCandidateList (self, templateExposure, scienceExposure, kernelSize, candidateList=None) |
def | makeKernelBasisList (self, targetFwhmPix=None, referenceFwhmPix=None, basisDegGauss=None, basisSigmaGauss=None, metadata=None) |
Public Attributes | |
kConfig | |
background | |
selectSchema | |
selectAlgMetadata | |
useRegularization | |
hMat | |
Static Public Attributes | |
ConfigClass = SnapPsfMatchConfig | |
Image-based Psf-matching of two subsequent snaps from the same visit Notes ----- This Task differs from ImagePsfMatchTask in that it matches two Exposures assuming that the images have been acquired very closely in time. Under this assumption, the astrometric misalignments and/or relative distortions should be within a pixel, and the Psf-shapes should be very similar. As a consequence, the default configurations for this class assume a very simple solution. - The spatial variation in the kernel (SnapPsfMatchConfig.spatialKernelOrder) is assumed to be zero - With no spatial variation, we turn of the spatial clipping loops (SnapPsfMatchConfig.spatialKernelClipping) - The differential background is not fit for (SnapPsfMatchConfig.fitForBackground) - The kernel is expected to be appx. a delta function, and has a small size (SnapPsfMatchConfig.kernelSize) The sub-configurations for the Alard-Lupton (SnapPsfMatchConfigAL) and delta-function (SnapPsfMatchConfigDF) bases also are designed to generate a small, simple kernel. Task initialization Initialization is the same as base class ImagePsfMatch.__init__, with the difference being that the Task's ConfigClass is SnapPsfMatchConfig. Invoking the Task The Task is only configured to have a subtractExposures method, which in turn calls ImagePsfMatchTask.subtractExposures. Configuration parameters See SnapPsfMatchConfig, which uses either SnapPsfMatchConfigDF and SnapPsfMatchConfigAL as its active configuration. Debug variables The lsst.pipe.base.cmdLineTask.CmdLineTask command line task interface supports a flag -d/--debug to importdebug.py from your PYTHONPATH. The relevant contents of debug.py for this Task include: .. code-block:: py import sys import lsstDebug def DebugInfo(name): di = lsstDebug.getInfo(name) if name == "lsst.ip.diffim.psfMatch": di.display = True # enable debug output di.maskTransparency = 80 # display mask transparency di.displayCandidates = True # show all the candidates and residuals di.displayKernelBasis = False # show kernel basis functions di.displayKernelMosaic = True # show kernel realized across the image di.plotKernelSpatialModel = False # show coefficients of spatial model di.showBadCandidates = True # show the bad candidates (red) along with good (green) elif name == "lsst.ip.diffim.imagePsfMatch": di.display = True # enable debug output di.maskTransparency = 30 # display mask transparency di.displayTemplate = True # show full (remapped) template di.displaySciIm = True # show science image to match to di.displaySpatialCells = True # show spatial cells di.displayDiffIm = True # show difference image di.showBadCandidates = True # show the bad candidates (red) along with good (green) elif name == "lsst.ip.diffim.diaCatalogSourceSelector": di.display = False # enable debug output di.maskTransparency = 30 # display mask transparency di.displayExposure = True # show exposure with candidates indicated di.pauseAtEnd = False # pause when done return di lsstDebug.Info = DebugInfo lsstDebug.frame = 1 Note that if you want addional logging info, you may add to your scripts: .. code-block:: py import lsst.log.utils as logUtils logUtils.traceSetAt("lsst.ip.diffim", 4) Examples -------- This code is snapPsfMatchTask.py in the examples directory, and can be run as e.g. .. code-block:: py examples/snapPsfMatchTask.py examples/snapPsfMatchTask.py --debug examples/snapPsfMatchTask.py --debug --template /path/to/templateExp.fits --science /path/to/scienceExp.fits First, create a subclass of SnapPsfMatchTask that accepts two exposures. Ideally these exposures would have been taken back-to-back, such that the pointing/background/Psf does not vary substantially between the two: .. code-block:: py class MySnapPsfMatchTask(SnapPsfMatchTask): def __init__(self, *args, **kwargs): SnapPsfMatchTask.__init__(self, *args, **kwargs) def run(self, templateExp, scienceExp): return self.subtractExposures(templateExp, scienceExp) And allow the user the freedom to either run the script in default mode, or point to their own images on disk. Note that these images must be readable as an lsst.afw.image.Exposure .. code-block:: py if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="Demonstrate the use of ImagePsfMatchTask") parser.add_argument("--debug", "-d", action="store_true", help="Load debug.py?", default=False) parser.add_argument("--template", "-t", help="Template Exposure to use", default=None) parser.add_argument("--science", "-s", help="Science Exposure to use", default=None) args = parser.parse_args() We have enabled some minor display debugging in this script via the –debug option. However, if you have an lsstDebug debug.in your PYTHONPATH you will get additional debugging displays. The following block checks for this script .. code-block:: py if args.debug: try: import debug # Since I am displaying 2 images here, set the starting frame number for the LSST debug LSST debug.lsstDebug.frame = 3 except ImportError as e: print(e, file=sys.stderr) Finally, we call a run method that we define below. First set up a Config and choose the basis set to use: .. code-block:: py def run(args): # # Create the Config and use sum of gaussian basis # config = SnapPsfMatchTask.ConfigClass() config.doWarping = True config.kernel.name = "AL" Make sure the images (if any) that were sent to the script exist on disk and are readable. If no images are sent, make some fake data up for the sake of this example script (have a look at the code if you want more details on generateFakeImages; as a detail of how the fake images were made, you do have to fit for a differential background): .. code-block:: py # Run the requested method of the Task if args.template is not None and args.science is not None: if not os.path.isfile(args.template): raise FileNotFoundError("Template image %s does not exist" % (args.template)) if not os.path.isfile(args.science): raise FileNotFoundError("Science image %s does not exist" % (args.science)) try: templateExp = afwImage.ExposureF(args.template) except Exception as e: raise RuntimeError("Cannot read template image %s" % (args.template)) try: scienceExp = afwImage.ExposureF(args.science) except Exception as e: raise RuntimeError("Cannot read science image %s" % (args.science)) else: templateExp, scienceExp = generateFakeImages() config.kernel.active.fitForBackground = True config.kernel.active.spatialBgOrder = 0 config.kernel.active.sizeCellX = 128 config.kernel.active.sizeCellY = 128 Display the two images if -debug .. code-block:: py if args.debug: afwDisplay.Display(frame=1).mtv(templateExp, title="Example script: Input Template") afwDisplay.Display(frame=2).mtv(scienceExp, title="Example script: Input Science Image") Create and run the Task .. code-block:: py # Create the Task psfMatchTask = MySnapPsfMatchTask(config=config) # Run the Task result = psfMatchTask.run(templateExp, scienceExp) And finally provide optional debugging display of the Psf-matched (via the Psf models) science image: .. code-block:: py if args.debug: # See if the LSST debug has incremented the frame number; if not start with frame 3 try: frame = debug.lsstDebug.frame + 1 except Exception: frame = 3 afwDisplay.Display(frame=frame).mtv(result.matchedExposure, title="Example script: Matched Template Image") if "subtractedExposure" in result.getDict(): afwDisplay.Display(frame=frame + 1).mtv(result.subtractedExposure, title="Example script: Subtracted Image")
Definition at line 88 of file snapPsfMatch.py.
|
inherited |
Return the FWHM in pixels of a Psf.
Definition at line 334 of file imagePsfMatch.py.
|
inherited |
Get sources to use for Psf-matching. This method runs detection and measurement on an exposure. The returned set of sources will be used as candidates for Psf-matching. Parameters ---------- exposure : `lsst.afw.image.Exposure` Exposure on which to run detection/measurement sigma : `float` Detection threshold doSmooth : `bool` Whether or not to smooth the Exposure with Psf before detection idFactory : Factory for the generation of Source ids Returns ------- selectSources : source catalog containing candidates for the Psf-matching
Definition at line 760 of file imagePsfMatch.py.
|
inherited |
Make a list of acceptable KernelCandidates. Accept or generate a list of candidate sources for Psf-matching, and examine the Mask planes in both of the images for indications of bad pixels Parameters ---------- templateExposure : `lsst.afw.image.Exposure` Exposure that will be convolved scienceExposure : `lsst.afw.image.Exposure` Exposure that will be matched-to kernelSize : `float` Dimensions of the Psf-matching Kernel, used to grow detection footprints candidateList : `list`, optional List of Sources to examine. Elements must be of type afw.table.Source or a type that wraps a Source and has a getSource() method, such as meas.algorithms.PsfCandidateF. Returns ------- candidateList : `list` of `dict` A list of dicts having a "source" and "footprint" field for the Sources deemed to be appropriate for Psf matching
Definition at line 818 of file imagePsfMatch.py.
|
inherited |
Wrapper to set log messages for `lsst.ip.diffim.makeKernelBasisList`. Parameters ---------- targetFwhmPix : `float`, optional Passed on to `lsst.ip.diffim.generateAlardLuptonBasisList`. Not used for delta function basis sets. referenceFwhmPix : `float`, optional Passed on to `lsst.ip.diffim.generateAlardLuptonBasisList`. Not used for delta function basis sets. basisDegGauss : `list` of `int`, optional Passed on to `lsst.ip.diffim.generateAlardLuptonBasisList`. Not used for delta function basis sets. basisSigmaGauss : `list` of `int`, optional Passed on to `lsst.ip.diffim.generateAlardLuptonBasisList`. Not used for delta function basis sets. metadata : `lsst.daf.base.PropertySet`, optional Passed on to `lsst.ip.diffim.generateAlardLuptonBasisList`. Not used for delta function basis sets. Returns ------- basisList: `list` of `lsst.afw.math.kernel.FixedKernel` List of basis kernels.
Definition at line 874 of file imagePsfMatch.py.
|
inherited |
Warp and PSF-match an exposure to the reference. Do the following, in order: - Warp templateExposure to match scienceExposure, if doWarping True and their WCSs do not already match - Determine a PSF matching kernel and differential background model that matches templateExposure to scienceExposure - Convolve templateExposure by PSF matching kernel Parameters ---------- templateExposure : `lsst.afw.image.Exposure` Exposure to warp and PSF-match to the reference masked image scienceExposure : `lsst.afw.image.Exposure` Exposure whose WCS and PSF are to be matched to templateFwhmPix :`float` FWHM (in pixels) of the Psf in the template image (image to convolve) scienceFwhmPix : `float` FWHM (in pixels) of the Psf in the science image candidateList : `list`, optional a list of footprints/maskedImages for kernel candidates; if `None` then source detection is run. - Currently supported: list of Footprints or measAlg.PsfCandidateF doWarping : `bool` what to do if ``templateExposure`` and ``scienceExposure`` WCSs do not match: - if `True` then warp ``templateExposure`` to match ``scienceExposure`` - if `False` then raise an Exception convolveTemplate : `bool` Whether to convolve the template image or the science image: - if `True`, ``templateExposure`` is warped if doWarping, ``templateExposure`` is convolved - if `False`, ``templateExposure`` is warped if doWarping, ``scienceExposure`` is convolved Returns ------- results : `lsst.pipe.base.Struct` An `lsst.pipe.base.Struct` containing these fields: - ``matchedImage`` : the PSF-matched exposure = Warped ``templateExposure`` convolved by psfMatchingKernel. This has: - the same parent bbox, Wcs and PhotoCalib as scienceExposure - the same filter as templateExposure - no Psf (because the PSF-matching process does not compute one) - ``psfMatchingKernel`` : the PSF matching kernel - ``backgroundModel`` : differential background model - ``kernelCellSet`` : SpatialCellSet used to solve for the PSF matching kernel Raises ------ RuntimeError Raised if doWarping is False and ``templateExposure`` and ``scienceExposure`` WCSs do not match
Definition at line 341 of file imagePsfMatch.py.
|
inherited |
PSF-match a MaskedImage (templateMaskedImage) to a reference MaskedImage (scienceMaskedImage). Do the following, in order: - Determine a PSF matching kernel and differential background model that matches templateMaskedImage to scienceMaskedImage - Convolve templateMaskedImage by the PSF matching kernel Parameters ---------- templateMaskedImage : `lsst.afw.image.MaskedImage` masked image to PSF-match to the reference masked image; must be warped to match the reference masked image scienceMaskedImage : `lsst.afw.image.MaskedImage` maskedImage whose PSF is to be matched to templateFwhmPix : `float` FWHM (in pixels) of the Psf in the template image (image to convolve) scienceFwhmPix : `float` FWHM (in pixels) of the Psf in the science image candidateList : `list`, optional A list of footprints/maskedImages for kernel candidates; if `None` then source detection is run. - Currently supported: list of Footprints or measAlg.PsfCandidateF Returns ------- result : `callable` An `lsst.pipe.base.Struct` containing these fields: - psfMatchedMaskedImage: the PSF-matched masked image = ``templateMaskedImage`` convolved with psfMatchingKernel. This has the same xy0, dimensions and wcs as ``scienceMaskedImage``. - psfMatchingKernel: the PSF matching kernel - backgroundModel: differential background model - kernelCellSet: SpatialCellSet used to solve for the PSF matching kernel Raises ------ RuntimeError Raised if input images have different dimensions
Definition at line 459 of file imagePsfMatch.py.
def lsst.ip.diffim.snapPsfMatch.SnapPsfMatchTask.subtractExposures | ( | self, | |
templateExposure, | |||
scienceExposure, | |||
templateFwhmPix = None , |
|||
scienceFwhmPix = None , |
|||
candidateList = None |
|||
) |
Definition at line 302 of file snapPsfMatch.py.
|
inherited |
Register, Psf-match and subtract two Exposures. Do the following, in order: - Warp templateExposure to match scienceExposure, if their WCSs do not already match - Determine a PSF matching kernel and differential background model that matches templateExposure to scienceExposure - PSF-match templateExposure to scienceExposure - Compute subtracted exposure (see return values for equation). Parameters ---------- templateExposure : `lsst.afw.image.ExposureF` Exposure to PSF-match to scienceExposure scienceExposure : `lsst.afw.image.ExposureF` Reference Exposure templateFwhmPix : `float` FWHM (in pixels) of the Psf in the template image (image to convolve) scienceFwhmPix : `float` FWHM (in pixels) of the Psf in the science image candidateList : `list`, optional A list of footprints/maskedImages for kernel candidates; if `None` then source detection is run. - Currently supported: list of Footprints or measAlg.PsfCandidateF doWarping : `bool` What to do if ``templateExposure``` and ``scienceExposure`` WCSs do not match: - if `True` then warp ``templateExposure`` to match ``scienceExposure`` - if `False` then raise an Exception convolveTemplate : `bool` Convolve the template image or the science image - if `True`, ``templateExposure`` is warped if doWarping, ``templateExposure`` is convolved - if `False`, ``templateExposure`` is warped if doWarping, ``scienceExposure is`` convolved Returns ------- result : `lsst.pipe.base.Struct` An `lsst.pipe.base.Struct` containing these fields: - ``subtractedExposure`` : subtracted Exposure scienceExposure - (matchedImage + backgroundModel) - ``matchedImage`` : ``templateExposure`` after warping to match ``templateExposure`` (if doWarping true), and convolving with psfMatchingKernel - ``psfMatchingKernel`` : PSF matching kernel - ``backgroundModel`` : differential background model - ``kernelCellSet`` : SpatialCellSet used to determine PSF matching kernel
Definition at line 572 of file imagePsfMatch.py.
|
inherited |
Psf-match and subtract two MaskedImages. Do the following, in order: - PSF-match templateMaskedImage to scienceMaskedImage - Determine the differential background - Return the difference: scienceMaskedImage ((warped templateMaskedImage convolved with psfMatchingKernel) + backgroundModel) Parameters ---------- templateMaskedImage : `lsst.afw.image.MaskedImage` MaskedImage to PSF-match to ``scienceMaskedImage`` scienceMaskedImage : `lsst.afw.image.MaskedImage` Reference MaskedImage templateFwhmPix : `float` FWHM (in pixels) of the Psf in the template image (image to convolve) scienceFwhmPix : `float` FWHM (in pixels) of the Psf in the science image candidateList : `list`, optional A list of footprints/maskedImages for kernel candidates; if `None` then source detection is run. - Currently supported: list of Footprints or measAlg.PsfCandidateF Returns ------- results : `lsst.pipe.base.Struct` An `lsst.pipe.base.Struct` containing these fields: - ``subtractedMaskedImage`` : ``scienceMaskedImage`` - (matchedImage + backgroundModel) - ``matchedImage`` : templateMaskedImage convolved with psfMatchingKernel - `psfMatchingKernel`` : PSF matching kernel - ``backgroundModel`` : differential background model - ``kernelCellSet`` : SpatialCellSet used to determine PSF matching kernel
Definition at line 690 of file imagePsfMatch.py.
|
inherited |
Definition at line 327 of file imagePsfMatch.py.
|
static |
Definition at line 299 of file snapPsfMatch.py.
|
inherited |
Definition at line 661 of file psfMatch.py.
|
inherited |
Definition at line 323 of file imagePsfMatch.py.
|
inherited |
Definition at line 330 of file imagePsfMatch.py.
|
inherited |
Definition at line 329 of file imagePsfMatch.py.
|
inherited |
Definition at line 656 of file psfMatch.py.