Skip to content

Commit

Permalink
Use separate classes for the cpCombine step when it does and does not
Browse files Browse the repository at this point in the history
use the 'physical_filter' dimension.

The new CalibCombineByFilter Connections, Config, and Task now inherit
from their respective CalibCombine counterparts, but simply add the
new dimension.  This avoids the previous work around to have the
dimensions edited on construction.

Update the pipeline definitions for this as well.
  • Loading branch information
czwa committed Apr 13, 2021
1 parent 35aa1e9 commit 2994fc7
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 39 deletions.
3 changes: 1 addition & 2 deletions pipelines/cpFlat.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,12 @@ tasks:
connections.inputMDs: 'flatStats'
connections.outputScales: 'cpFlatNormScales'
cpFlatCombine:
class: lsst.cp.pipe.cpCombine.CalibCombineTask
class: lsst.cp.pipe.cpCombine.CalibCombineByFilterTask
config:
connections.inputExps: 'cpFlatProc'
connections.inputScales: 'cpFlatNormScales'
connections.outputData: 'flat'
calibrationType: 'flat'
calibrationDimensions: ['physical_filter']
exposureScaling: InputList
scalingLevel: AMP
contracts:
Expand Down
3 changes: 1 addition & 2 deletions pipelines/cpFlatSingleChip.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,11 @@ tasks:
doFringe: False
doApplyGains: False
cpFlatCombine:
class: lsst.cp.pipe.cpCombine.CalibCombineTask
class: lsst.cp.pipe.cpCombine.CalibCombineByFilterTask
config:
connections.inputExps: 'cpFlatProc'
connections.outputData: 'flat'
calibrationType: 'flat'
calibrationDimensions: ['physical_filter']
exposureScaling: MeanStats
contracts:
- isr.doFlat == False
Expand Down
3 changes: 1 addition & 2 deletions pipelines/cpFringe.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,11 @@ tasks:
connections.inputExp: 'cpFringeIsr'
connections.outputExp: 'cpFringeProc'
cpFringeCombine:
class: lsst.cp.pipe.cpCombine.CalibCombineTask
class: lsst.cp.pipe.cpCombine.CalibCombineByFilterTask
config:
connections.inputExps: 'cpFringeProc'
connections.outputData: 'fringe'
calibrationType: 'fringe'
calibrationDimensions: ['physical_filter']
exposureScaling: "Unity"
contracts:
- isr.doFringe == False
Expand Down
51 changes: 18 additions & 33 deletions python/lsst/cp/pipe/cpCombine.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,34 +117,6 @@ class CalibCombineConnections(pipeBase.PipelineTaskConnections,
isCalibration=True,
)

def __init__(self, *, config=None):
super().__init__(config=config)

if config and config.exposureScaling != 'InputList':
self.inputs.discard("inputScales")

if config and len(config.calibrationDimensions) != 0:
newDimensions = tuple(config.calibrationDimensions)
newOutputData = cT.Output(
name=self.outputData.name,
doc=self.outputData.doc,
storageClass=self.outputData.storageClass,
dimensions=self.allConnections['outputData'].dimensions + newDimensions,
isCalibration=True,
)
self.dimensions.update(config.calibrationDimensions)
self.outputData = newOutputData

if config.exposureScaling == 'InputList':
newInputScales = cT.PrerequisiteInput(
name=self.inputScales.name,
doc=self.inputScales.doc,
storageClass=self.inputScales.storageClass,
dimensions=self.allConnections['inputScales'].dimensions + newDimensions
)
self.dimensions.update(config.calibrationDimensions)
self.inputScales = newInputScales


# CalibCombineConfig/CalibCombineTask from pipe_base/constructCalibs.py
class CalibCombineConfig(pipeBase.PipelineTaskConfig,
Expand All @@ -156,11 +128,6 @@ class CalibCombineConfig(pipeBase.PipelineTaskConfig,
default="calibration",
doc="Name of calibration to be generated.",
)
calibrationDimensions = pexConfig.ListField(
dtype=str,
default=[],
doc="List of updated dimensions to append to output."
)

exposureScaling = pexConfig.ChoiceField(
dtype=str,
Expand Down Expand Up @@ -526,6 +493,24 @@ def interpolateNans(self, exp):
self.log.warn("Found %s NAN pixels", count)


# Create versions of the Connections, Config, and Task that support filter constraints.
class CalibCombineByFilterConnections(CalibCombineConnections,
dimensions=("instrument", "detector", "physical_filter")):
pass


class CalibCombineByFilterConfig(CalibCombineConfig,
pipelineConnections=CalibCombineConnections):
pass


class CalibCombineByFilterTask(CalibCombineTask):
"""Task to combine calib exposures."""
ConfigClass = CalibCombineFilterConfig
_DefaultName = 'cpFilterCombine'
pass


def VignetteExposure(exposure, polygon=None,
doUpdateMask=True, maskPlane='BAD',
doSetValue=False, vignetteValue=0.0,
Expand Down

0 comments on commit 2994fc7

Please sign in to comment.