Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 15 additions & 6 deletions python/lsst/ip/diffim/detectAndMeasure.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,8 @@ class DetectAndMeasureConnections(pipeBase.PipelineTaskConnections,

def __init__(self, *, config):
super().__init__(config=config)
if not (self.config.doCalculateResidualMetics):
self.inputs.remove("kernelSources")
if not (self.config.writeStreakInfo and self.config.doMaskStreaks):
self.outputs.remove("maskedStreaks")
if not (self.config.doSubtractBackground and self.config.doWriteBackground):
Expand Down Expand Up @@ -186,6 +188,12 @@ class DetectAndMeasureConfig(pipeBase.PipelineTaskConfig,
doc="Persist the fitted background model?",
default=False,
)
doCalculateResidualMetics = pexConfig.Field(
dtype=bool,
doc="Calculate metrics to assess image subtraction quality for the task"
"metadata?",
default=True,
)
subtractInitialBackground = pexConfig.ConfigurableField(
target=lsst.meas.algorithms.SubtractBackgroundTask,
doc="Task to perform intial background subtraction, before first detection pass.",
Expand Down Expand Up @@ -554,7 +562,7 @@ def runQuantum(self, butlerQC: pipeBase.QuantumContext,
butlerQC.put(measurementResults, outputRefs)

@timeMethod
def run(self, science, matchedTemplate, difference, kernelSources,
def run(self, science, matchedTemplate, difference, kernelSources=None,
idFactory=None, measurementResults=None):
"""Detect and measure sources on a difference image.

Expand All @@ -575,7 +583,7 @@ def run(self, science, matchedTemplate, difference, kernelSources,
difference image.
difference : `lsst.afw.image.ExposureF`
Result of subtracting template from the science image.
kernelSources : `lsst.afw.table.SourceCatalog`
kernelSources : `lsst.afw.table.SourceCatalog`, optional
Final selection of sources that was used for psf matching.
idFactory : `lsst.afw.table.IdFactory`, optional
Generator object used to assign ids to detected sources in the
Expand Down Expand Up @@ -684,8 +692,8 @@ def _prepareInputs(self, difference):
mask.addMaskPlane(mp)
mask &= ~mask.getPlaneBitMask(self.config.clearMaskPlanes)

def processResults(self, science, matchedTemplate, difference, sources, idFactory, kernelSources,
positives=None, negatives=None, measurementResults=None):
def processResults(self, science, matchedTemplate, difference, sources, idFactory,
kernelSources=None, positives=None, negatives=None, measurementResults=None):
"""Measure and process the results of source detection.

Parameters
Expand All @@ -702,7 +710,7 @@ def processResults(self, science, matchedTemplate, difference, sources, idFactor
idFactory : `lsst.afw.table.IdFactory`
Generator object used to assign ids to detected sources in the
difference image.
kernelSources : `lsst.afw.table.SourceCatalog`
kernelSources : `lsst.afw.table.SourceCatalog`, optional
Final selection of sources that was used for psf matching.
positives : `lsst.afw.table.SourceCatalog`, optional
Positive polarity footprints.
Expand Down Expand Up @@ -798,7 +806,8 @@ def processResults(self, science, matchedTemplate, difference, sources, idFactor
if self.config.doMaskStreaks and self.config.writeStreakInfo:
measurementResults.mergeItems(streakInfo, 'maskedStreaks')

self.calculateMetrics(science, difference, diaSources, kernelSources)
if kernelSources is not None:
self.calculateMetrics(science, difference, diaSources, kernelSources)

if np.count_nonzero(~diaSources["sky_source"]) > 0:
measurementResults.diaSources = diaSources
Expand Down