PsfMatchTask¶
- 
class lsst.ip.diffim.PsfMatchTask(*args, **kwargs)¶
- Bases: - lsst.pipe.base.Task,- abc.ABC- Base class for Psf Matching; should not be called directly - Notes - PsfMatchTask is a base class that implements the core functionality for matching the Psfs of two images using a spatially varying Psf-matching - lsst.afw.math.LinearCombinationKernel. The Task requires the user to provide an instance of an- lsst.afw.math.SpatialCellSet, filled with- lsst.ip.diffim.KernelCandidateinstances, and a list of- lsst.afw.math.Kernelsof basis shapes that will be used for the decomposition. If requested, the Task also performs background matching and returns the differential background model as an- lsst.afw.math.Kernel.SpatialFunction.- Invoking the Task - As a base class, this Task is not directly invoked. However, - run()methods that are implemented on derived classes will make use of the core- _solve()functionality, which defines a sequence of- lsst.afw.math.CandidateVisitorclasses that iterate through the KernelCandidates, first building up a per-candidate solution and then building up a spatial model from the ensemble of candidates. Sigma clipping is performed using the mean and standard deviation of all kernel sums (to reject variable objects), on the per-candidate substamp diffim residuals (to indicate a bad choice of kernel basis shapes for that particular object), and on the substamp diffim residuals using the spatial kernel fit (to indicate a bad choice of spatial kernel order, or poor constraints on the spatial model). The- _diagnostic()method logs information on the quality of the spatial fit, and also modifies the Task metadata.- Table 2 Quantities set in Metadata¶ - Parameter - Description - spatialConditionNum- Condition number of the spatial kernel fit - spatialKernelSum- Kernel sum (10^{-0.4 * - Delta; zeropoint}) of the spatial Psf-matching kernel- ALBasisNGauss- If using sum-of-Gaussian basis, the number of gaussians used - ALBasisDegGauss- If using sum-of-Gaussian basis, the deg of spatial variation of the Gaussians - ALBasisSigGauss- If using sum-of-Gaussian basis, the widths (sigma) of the Gaussians - ALKernelSize- If using sum-of-Gaussian basis, the kernel size - NFalsePositivesTotal- Total number of diaSources - NFalsePositivesRefAssociated- Number of diaSources that associate with the reference catalog - NFalsePositivesRefAssociated- Number of diaSources that associate with the source catalog - NFalsePositivesUnassociated- Number of diaSources that are orphans - metric_MEAN- Mean value of substamp diffim quality metrics across all KernelCandidates, for both the per-candidate (LOCAL) and SPATIAL residuals - metric_MEDIAN- Median value of substamp diffim quality metrics across all KernelCandidates, for both the per-candidate (LOCAL) and SPATIAL residuals - metric_STDEV- Standard deviation of substamp diffim quality metrics across all KernelCandidates, for both the per-candidate (LOCAL) and SPATIAL residuals - Debug variables - The - pipetaskcommand line interface supports a flag –debug to import @b debug.py from your PYTHONPATH. The relevant contents of debug.py for this Task include:- import sys import lsstDebug def DebugInfo(name): di = lsstDebug.getInfo(name) if name == "lsst.ip.diffim.psfMatch": # enable debug output di.display = True # display mask transparency di.maskTransparency = 80 # show all the candidates and residuals di.displayCandidates = True # show kernel basis functions di.displayKernelBasis = False # show kernel realized across the image di.displayKernelMosaic = True # show coefficients of spatial model di.plotKernelSpatialModel = False # show fixed and spatial coefficients and coefficient histograms di.plotKernelCoefficients = True # show the bad candidates (red) along with good (green) di.showBadCandidates = True return di lsstDebug.Info = DebugInfo lsstDebug.frame = 1 - Note that if you want additional logging info, you may add to your scripts: - import lsst.utils.logging as logUtils logUtils.trace_set_at("lsst.ip.diffim", 4) - Methods Summary - emptyMetadata()- Empty (clear) the metadata for this Task and all sub-Tasks. - 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. - getTaskDict()- Get a dictionary of all tasks as a shallow copy. - makeField(doc)- Make a - lsst.pex.config.ConfigurableFieldfor this task.- makeSubtask(name, **keyArgs)- Create a subtask as a new instance as the - nameattribute of this task.- timer(name, logLevel)- Context manager to log performance data for an arbitrary block of code. - Methods Documentation - 
emptyMetadata() → None¶
- Empty (clear) the metadata for this Task and all sub-Tasks. 
 - 
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.timeMethodis 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 : 
 - 
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 : 
 - 
classmethod makeField(doc: str) → lsst.pex.config.configurableField.ConfigurableField¶
- Make a - lsst.pex.config.ConfigurableFieldfor this task.- Parameters: - doc : str
- Help text for the field. 
 - Returns: - configurableField : lsst.pex.config.ConfigurableField
- A - ConfigurableFieldfor 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 - nameattribute 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 of- ConfigurableFieldor- RegistryField.
- name : 
 - 
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 
 
-