lsst.pipe.tasks
19.0.0-61-gec4c6e08+8
|
Warp and optionally PSF-Match calexps onto an a common projection. More...
Public Member Functions | |
def | __init__ (self, reuse=False, **kwargs) |
def | runDataRef (self, patchRef, selectDataList=[]) |
Produce <coaddName>Coadd_<warpType>Warp images by warping and optionally PSF-matching. More... | |
def | run (self, calExpList, ccdIdList, skyInfo, visitId=0, dataIdList=None) |
def | getCalibratedExposure (self, dataRef, bgSubtracted) |
def | getWarpTypeList (self) |
def | applySkyCorr (self, dataRef, calexp) |
def | selectExposures (self, patchRef, skyInfo=None, selectDataList=[]) |
Select exposures to coadd. More... | |
def | getSkyInfo (self, patchRef) |
Use getSkyinfo to return the skyMap, tract and patch information, wcs and the outer bbox of the patch. More... | |
def | getCoaddDatasetName (self, warpType="direct") |
def | getTempExpDatasetName (self, warpType="direct") |
def | getBadPixelMask (self) |
Convenience method to provide the bitmask from the mask plane names. More... | |
Public Attributes | |
reuse | |
calexpType | |
Static Public Attributes | |
ConfigClass | |
RunnerClass | |
Warp and optionally PSF-Match calexps onto an a common projection.
Warp and optionally PSF-Match calexps onto a common projection, by performing the following operations:
The result is a directWarp
(and/or optionally a psfMatchedWarp
).
This task has one special keyword argument: passing reuse=True will cause the task to skip the creation of warps that are already present in the output repositories.
This task is primarily designed to be run from the command line.
The main method is runDataRef
, which takes a single butler data reference for the patch(es) to process.
Create a Warp from inputs We iterate over the multiple calexps in a single exposure to construct the warp (previously called a coaddTempExp) of that exposure to the supplied tract/patch. Pixels that receive no pixels are set to NAN; this is not correct (violates LSST algorithms group policy), but will be fixed up by interpolating after the coaddition. @param calexpRefList: List of data references for calexps that (may) overlap the patch of interest @param skyInfo: Struct from CoaddBaseTask.getSkyInfo() with geometric information about the patch @param visitId: integer identifier for visit, for the table that will produce the CoaddPsf @return a pipeBase Struct containing: - exposures: a dictionary containing the warps requested: "direct": direct warp if config.makeDirect "psfMatched": PSF-matched warp if config.makePsfMatched
WarpType identifies the types of convolutions applied to Warps (previously CoaddTempExps). Only two types are available: direct (for regular Warps/Coadds) and psfMatched (for Warps/Coadds with homogenized PSFs). We expect to add a third type, likelihood, for generating likelihood Coadds with Warps that have been correlated with their own PSF.
See MakeCoaddTempExpConfig and parameters inherited from CoaddBaseConfig
To make psfMatchedWarps
, select config.makePsfMatched=True
. The subtask ModelPsfMatchTask is responsible for the PSF-Matching, and its config is accessed via config.warpAndPsfMatch.psfMatch
. The optimal configuration depends on aspects of dataset: the pixel scale, average PSF FWHM and dimensions of the PSF kernel. These configs include the requested model PSF, the matching kernel size, padding of the science PSF thumbnail and spatial sampling frequency of the PSF.
Config Guidelines: The user must specify the size of the model PSF to which to match by setting config.modelPsf.defaultFwhm
in units of pixels. The appropriate values depends on science case. In general, for a set of input images, this config should equal the FWHM of the visit with the worst seeing. The smallest it should be set to is the median FWHM. The defaults of the other config options offer a reasonable starting point. The following list presents the most common problems that arise from a misconfigured ModelPsfMatchTask and corresponding solutions. All assume the default Alard-Lupton kernel, with configs accessed via config.warpAndPsfMatch.psfMatch.kernel['AL']
. Each item in the list is formatted as: Problem: Explanation. Solution
Troublshooting PSF-Matching Configuration:
Matched PSFs look boxy: The matching kernel is too small. Increase the matching kernel size. For example:
config.warpAndPsfMatch.psfMatch.kernel['AL'].kernelSize=27 # default 21
Note that increasing the kernel size also increases runtime.
Matched PSFs look ugly (dipoles, quadropoles, donuts): unable to find good solution for matching kernel. Provide the matcher with more data by either increasing the spatial sampling by decreasing the spatial cell size,
config.warpAndPsfMatch.psfMatch.kernel['AL'].sizeCellX = 64 # default 128 config.warpAndPsfMatch.psfMatch.kernel['AL'].sizeCellY = 64 # default 128
or increasing the padding around the Science PSF, for example:
config.warpAndPsfMatch.psfMatch.autoPadPsfTo=1.6 # default 1.4
Increasing autoPadPsfTo
increases the minimum ratio of input PSF dimensions to the matching kernel dimensions, thus increasing the number of pixels available to fit after convolving the PSF with the matching kernel. Optionally, for debugging the effects of padding, the level of padding may be manually controlled by setting turning off the automatic padding and setting the number of pixels by which to pad the PSF:
config.warpAndPsfMatch.psfMatch.doAutoPadPsf = False # default True config.warpAndPsfMatch.psfMatch.padPsfBy = 6 # pixels. default 0
config.modelPsf.defaultFwhm = 11 # Gaussian sigma in units of pixels.
config.warpAndPsfMatch.psfMatch.kernel['AL'].alardSigGauss=[1.5, 3.0, 6.0] # from default [0.7, 1.5, 3.0]
MakeCoaddTempExpTask has no debug output, but its subtasks do.
This example uses the package ci_hsc to show how MakeCoaddTempExp fits into the larger Data Release Processing. Set up by running:
setup ci_hsc cd $CI_HSC_DIR # if not built already: python $(which scons) # this will take a while
The following assumes that processCcd.py
and makeSkyMap.py
have previously been run (e.g. by building ci_hsc
above) to generate a repository of calexps and an output respository with the desired SkyMap. The command,
makeCoaddTempExp.py $CI_HSC_DIR/DATA --rerun ci_hsc \ --id patch=5,4 tract=0 filter=HSC-I \ --selectId visit=903988 ccd=16 --selectId visit=903988 ccd=17 \ --selectId visit=903988 ccd=23 --selectId visit=903988 ccd=24 \ --config doApplyExternalPhotoCalib=False doApplyExternalSkyWcs=False \ makePsfMatched=True modelPsf.defaultFwhm=11
writes a direct and PSF-Matched Warp to
$CI_HSC_DIR/DATA/rerun/ci_hsc/deepCoadd/HSC-I/0/5,4/warp-HSC-I-0-5,4-903988.fits
and$CI_HSC_DIR/DATA/rerun/ci_hsc/deepCoadd/HSC-I/0/5,4/psfMatchedWarp-HSC-I-0-5,4-903988.fits
respectively.--configfile ./matchingConfig.py
to the command line arguments where matchingConfig.py
is defined by: echo " config.warpAndPsfMatch.psfMatch.kernel['AL'].kernelSize=27 config.warpAndPsfMatch.psfMatch.kernel['AL'].alardSigGauss=[1.5, 3.0, 6.0]" > matchingConfig.py
Add the option --help
to see more options.
Definition at line 115 of file makeCoaddTempExp.py.
def lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.__init__ | ( | self, | |
reuse = False , |
|||
** | kwargs | ||
) |
Definition at line 273 of file makeCoaddTempExp.py.
def lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.applySkyCorr | ( | self, | |
dataRef, | |||
calexp | |||
) |
Apply correction to the sky background level Sky corrections can be generated with the 'skyCorrection.py' executable in pipe_drivers. Because the sky model used by that code extends over the entire focal plane, this can produce better sky subtraction. The calexp is updated in-place. Parameters ---------- dataRef : `lsst.daf.persistence.ButlerDataRef` Data reference for calexp. calexp : `lsst.afw.image.Exposure` or `lsst.afw.image.MaskedImage` Calibrated exposure.
Definition at line 548 of file makeCoaddTempExp.py.
|
inherited |
Convenience method to provide the bitmask from the mask plane names.
Definition at line 229 of file coaddBase.py.
def lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.getCalibratedExposure | ( | self, | |
dataRef, | |||
bgSubtracted | |||
) |
Return one calibrated Exposure, possibly with an updated SkyWcs. @param[in] dataRef a sensor-level data reference @param[in] bgSubtracted return calexp with background subtracted? If False get the calexp's background background model and add it to the calexp. @return calibrated exposure @raises MissingExposureError If data for the exposure is not available. If config.doApplyExternalPhotoCalib is `True`, the photometric calibration (`photoCalib`) is taken from `config.externalPhotoCalibName` via the `name_photoCalib` dataset. Otherwise, the photometric calibration is retrieved from the processed exposure. When `config.doApplyExternalSkyWcs` is `True`, the astrometric calibration is taken from `config.externalSkyWcsName` with the `name_wcs` dataset. Otherwise, the astrometric calibration is taken from the processed exposure.
Definition at line 479 of file makeCoaddTempExp.py.
|
inherited |
Return coadd name for given warpType and task config Parameters ---------- warpType : string Either 'direct' or 'psfMatched' Returns ------- CoaddDatasetName : `string`
Definition at line 180 of file coaddBase.py.
|
inherited |
Use getSkyinfo to return the skyMap, tract and patch information, wcs and the outer bbox of the patch.
[in] | patchRef | data reference for sky map. Must include keys "tract" and "patch" |
Definition at line 164 of file coaddBase.py.
|
inherited |
Return warp name for given warpType and task config Parameters ---------- warpType : string Either 'direct' or 'psfMatched' Returns ------- WarpDatasetName : `string`
Definition at line 194 of file coaddBase.py.
def lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.getWarpTypeList | ( | self | ) |
Return list of requested warp types per the config.
Definition at line 538 of file makeCoaddTempExp.py.
def lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.run | ( | self, | |
calExpList, | |||
ccdIdList, | |||
skyInfo, | |||
visitId = 0 , |
|||
dataIdList = None |
|||
) |
Create a Warp from inputs We iterate over the multiple calexps in a single exposure to construct the warp (previously called a coaddTempExp) of that exposure to the supplied tract/patch. Pixels that receive no pixels are set to NAN; this is not correct (violates LSST algorithms group policy), but will be fixed up by interpolating after the coaddition. @param calexpRefList: List of data references for calexps that (may) overlap the patch of interest @param skyInfo: Struct from CoaddBaseTask.getSkyInfo() with geometric information about the patch @param visitId: integer identifier for visit, for the table that will produce the CoaddPsf @return a pipeBase Struct containing: - exposures: a dictionary containing the warps requested: "direct": direct warp if config.makeDirect "psfMatched": PSF-matched warp if config.makePsfMatched
Definition at line 382 of file makeCoaddTempExp.py.
def lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.runDataRef | ( | self, | |
patchRef, | |||
selectDataList = [] |
|||
) |
Produce <coaddName>Coadd_<warpType>Warp images by warping and optionally PSF-matching.
[in] | patchRef | data reference for sky map patch. Must include keys "tract", "patch", plus the camera-specific filter key (e.g. "filter" or "band") |
Definition at line 283 of file makeCoaddTempExp.py.
|
inherited |
Select exposures to coadd.
Get the corners of the bbox supplied in skyInfo using geom::Box2D and convert the pixel positions of the bbox corners to sky coordinates using skyInfo.wcs.pixelToSky. Use the WcsSelectImagesTask to select exposures that lie inside the patch indicated by the dataRef.
[in] | patchRef | data reference for sky map patch. Must include keys "tract", "patch", plus the camera-specific filter key (e.g. "filter" or "band") |
[in] | skyInfo | geometry for the patch; output from getSkyInfo |
Definition at line 144 of file coaddBase.py.
lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.calexpType |
Definition at line 278 of file makeCoaddTempExp.py.
|
static |
Definition at line 270 of file makeCoaddTempExp.py.
lsst.pipe.tasks.makeCoaddTempExp.MakeCoaddTempExpTask.reuse |
Definition at line 275 of file makeCoaddTempExp.py.
|
staticinherited |
Definition at line 137 of file coaddBase.py.