MakeWarpTask¶
-
class
lsst.pipe.tasks.makeWarp.
MakeWarpTask
(**kwargs)¶ Bases:
lsst.pipe.tasks.coaddBase.CoaddBaseTask
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: - Group calexps by visit/run - For each visit, generate a Warp by calling method @ref run.
run
loops over the visit’s calexps callingWarpAndPsfMatchTask
on each visitNotes
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.
To make
psfMatchedWarps
, selectconfig.makePsfMatched=True
. The subtaskModelPsfMatchTask
is responsible for the PSF-Matching, and its config is accessed viaconfig.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 @link ip::diffim::modelPsfMatch::ModelPsfMatchTask ModelPsfMatchTask @endlink 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. SolutionTroublshooting 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
- Deconvolution: Matching a large PSF to a smaller PSF produces
a telltale noise pattern which looks like ripples or a brain. _Increase the size of the requested model PSF. For example:_
- config.modelPsf.defaultFwhm = 11 # Gaussian sigma in units of
pixels.
High frequency (sometimes checkered) noise: The matching basis functions are too small.
- _Increase the width of the Gaussian basis functions. For example:_
config.warpAndPsfMatch.psfMatch.kernel[‘AL’].alardSigGauss= [1.5, 3.0, 6.0] # from default [0.7, 1.5, 3.0]
Attributes Summary
canMultiprocess
Methods Summary
emptyMetadata
()Empty (clear) the metadata for this Task and all sub-Tasks. filterInputs
(indices, inputs)Filter task inputs by their indices. getBadPixelMask
()Convenience method to provide the bitmask from the mask plane names getFullMetadata
()Get metadata for all tasks. getFullName
()Get the task name as a hierarchical name including parent task names. getName
()Get the name of the task. getResourceConfig
()Return resource configuration for this task. getSkyInfo
(patchRef)Use getSkyinfo to return the skyMap, tract and patch information, wcs and the outer bbox of the patch. getTaskDict
()Get a dictionary of all tasks as a shallow copy. getTempExpDatasetName
([warpType])Return warp name for given warpType and task config getWarpTypeList
()Return list of requested warp types per the config. makeField
(doc)Make a lsst.pex.config.ConfigurableField
for this task.makeSubtask
(name, **keyArgs)Create a subtask as a new instance as the name
attribute of this task.prepareCalibratedExposures
(calExpList[, …])Deprecated function. run
(calExpList, ccdIdList, skyInfo[, …])Create a Warp from inputs. runQuantum
(butlerQC, inputRefs, outputRefs)Method to do butler IO and or transforms to provide in memory objects for tasks run method timer
(name, logLevel)Context manager to log performance data for an arbitrary block of code. Attributes Documentation
-
canMultiprocess
= True¶
Methods Documentation
-
emptyMetadata
() → None¶ Empty (clear) the metadata for this Task and all sub-Tasks.
-
filterInputs
(indices, inputs)¶ Filter task inputs by their indices.
Parameters: Returns:
-
getBadPixelMask
()¶ Convenience method to provide the bitmask from the mask plane names
-
getFullMetadata
() → lsst.pipe.base._task_metadata.TaskMetadata¶ Get metadata for all tasks.
Returns: - metadata :
TaskMetadata
The keys are the full task name. Values are metadata for the top-level task and all subtasks, sub-subtasks, etc.
Notes
The returned metadata includes timing information (if
@timer.timeMethod
is used) and any metadata set by the task. The name of each item consists of the full task name with.
replaced by:
, followed by.
and the name of the item, e.g.:topLevelTaskName:subtaskName:subsubtaskName.itemName
using
:
in the full task name disambiguates the rare situation that a task has a subtask and a metadata item with the same name.- metadata :
-
getFullName
() → str¶ Get the task name as a hierarchical name including parent task names.
Returns: - fullName :
str
The full name consists of the name of the parent task and each subtask separated by periods. For example:
- The full name of top-level task “top” is simply “top”.
- The full name of subtask “sub” of top-level task “top” is “top.sub”.
- The full name of subtask “sub2” of subtask “sub” of top-level task “top” is “top.sub.sub2”.
- fullName :
-
getResourceConfig
() → Optional[ResourceConfig]¶ Return resource configuration for this task.
Returns: - Object of type
ResourceConfig
orNone
if resource - configuration is not defined for this task.
- Object of type
-
getSkyInfo
(patchRef)¶ Use getSkyinfo to return the skyMap, tract and patch information, wcs and the outer bbox of the patch.
Parameters: - patchRef :
Unknown
Data reference for sky map. Must include keys “tract” and “patch”.
Returns: - getSkyInfo :
lsst.pipe.base.Struct
Sky Info as a struct with attributes:
skyMap
sky map (
lsst.skyMap.SkyMap
).tractInfo
Information for chosen tract of sky map (
lsst.skymap.TractInfo
).patchInfo
Information about chosen patch of tract (
lsst.skymap.PatchInfo
).wcs
WCS of tract (
lsst.afw.image.SkyWcs
).bbox
Outer bbox of patch, as an geom Box2I (
lsst.afw.geom.Box2I
).
- patchRef :
-
getTaskDict
() → Dict[str, weakref.ReferenceType[lsst.pipe.base.task.Task]]¶ Get a dictionary of all tasks as a shallow copy.
Returns: - taskDict :
dict
Dictionary containing full task name: task object for the top-level task and all subtasks, sub-subtasks, etc.
- taskDict :
-
getTempExpDatasetName
(warpType='direct')¶ Return warp name for given warpType and task config
Parameters: - warpType :
str
Either ‘direct’ or ‘psfMatched’.
Returns: - WarpDatasetName :
str
- warpType :
-
getWarpTypeList
()¶ Return list of requested warp types per the config.
-
classmethod
makeField
(doc: str) → lsst.pex.config.configurableField.ConfigurableField¶ Make a
lsst.pex.config.ConfigurableField
for this task.Parameters: - doc :
str
Help text for the field.
Returns: - configurableField :
lsst.pex.config.ConfigurableField
A
ConfigurableField
for this task.
Examples
Provides a convenient way to specify this task is a subtask of another task.
Here is an example of use:
class OtherTaskConfig(lsst.pex.config.Config): aSubtask = ATaskClass.makeField("brief description of task")
- doc :
-
makeSubtask
(name: str, **keyArgs) → None¶ Create a subtask as a new instance as the
name
attribute of this task.Parameters: - name :
str
Brief name of the subtask.
- keyArgs
Extra keyword arguments used to construct the task. The following arguments are automatically provided and cannot be overridden:
- “config”.
- “parentTask”.
Notes
The subtask must be defined by
Task.config.name
, an instance ofConfigurableField
orRegistryField
.- name :
-
prepareCalibratedExposures
(calExpList, backgroundList=None, skyCorrList=None, externalSkyWcsCatalog=None, externalPhotoCalibCatalog=None, finalizedPsfApCorrCatalog=None, **kwargs)¶ Deprecated function.
Please use _prepareCalibratedExposure(), which this delegates to and noting its slightly updated API, instead.Deprecated since version v25.0: This method is deprecated in favor of its leading underscore version, _prepareCalibratedfExposures(). Will be removed after v25.
-
run
(calExpList, ccdIdList, skyInfo, visitId=0, dataIdList=None, **kwargs)¶ 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.
- calexpRefList :
list
- List of data references for calexps that (may) overlap the patch of interest.
- skyInfo :
lsst.pipe.base.Struct
- Struct from CoaddBaseTask.getSkyInfo() with geometric information about the patch.
- visitId :
int
- Integer identifier for visit, for the table that will produce the CoaddPsf.
Returns: - result :
lsst.pipe.base.Struct
Results as a struct with attributes:
exposures
A dictionary containing the warps requested: “direct”: direct warp if
config.makeDirect
“psfMatched”: PSF-matched warp ifconfig.makePsfMatched
(dict
).
- calexpRefList :
-
runQuantum
(butlerQC, inputRefs, outputRefs)¶ Method to do butler IO and or transforms to provide in memory objects for tasks run method
Parameters: - butlerQC :
ButlerQuantumContext
A butler which is specialized to operate in the context of a
lsst.daf.butler.Quantum
.- inputRefs :
InputQuantizedConnection
Datastructure whose attribute names are the names that identify connections defined in corresponding
PipelineTaskConnections
class. The values of these attributes are thelsst.daf.butler.DatasetRef
objects associated with the defined input/prerequisite connections.- outputRefs :
OutputQuantizedConnection
Datastructure whose attribute names are the names that identify connections defined in corresponding
PipelineTaskConnections
class. The values of these attributes are thelsst.daf.butler.DatasetRef
objects associated with the defined output connections.
- butlerQC :
-
timer
(name: str, logLevel: int = 10) → Iterator[None]¶ Context manager to log performance data for an arbitrary block of code.
Parameters: See also
timer.logInfo
Examples
Creating a timer context:
with self.timer("someCodeToTime"): pass # code to time