Skip to content

Commit

Permalink
Add method to copy calibration statistics to isrStatistics.
Browse files Browse the repository at this point in the history
  • Loading branch information
czwa committed Jan 12, 2024
1 parent c206499 commit e84f09a
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
42 changes: 42 additions & 0 deletions python/lsst/ip/isr/isrStatistics.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,12 @@ class IsrStatisticsTaskConfig(pexConfig.Config):
}
)

doCalibDistributionStatistics = pexConfig.Field(
dtype=bool,
doc="Copy calibration distribution statistics to output?",
default=False,
)

stat = pexConfig.Field(
dtype=str,
default='MEANCLIP',
Expand Down Expand Up @@ -200,10 +206,15 @@ def run(self, inputExp, ptc=None, overscanResults=None, **kwargs):
if self.config.doProjectionStatistics:
projectionResults = self.measureProjectionStatistics(inputExp, overscanResults)

calibDistributionResults = None
if self.config.doCalibDistributionStatistics:
calibDistributionResults = self.copyCalibDistributionStatistics(inputExp, **kwargs)

return pipeBase.Struct(
results={'CTI': ctiResults,
'BANDING': bandingResults,
'PROJECTION': projectionResults,
'CALIBDIST': calibDistributionResults,
},
)

Expand Down Expand Up @@ -459,3 +470,34 @@ def measureProjectionStatistics(self, inputExp, overscans):
outputStats['AMP_VFFT_IMAG'][amp.getName()] = np.imag(verticalFFT).tolist()

return outputStats

def copyCalibDistributionStatistics(self, inputExp, **kwargs):
"""Copy calibration statistics for this exposure.
Parameters
----------
inputExp : `lsst.afw.image.Exposure`
The exposure being processed.
**kwargs :
Keyword arguments with calibrations.
Returns
-------
outputStats : `dict` [`str`, [`dict` [`str`,`float]]
Dictionary of measurements, keyed by amplifier name and
statistics segment.
"""
outputStats = {}

for amp in inputExp.getDetector():
ampStats = {}

for calibType in ('bias', 'dark', 'flat'):
if calibType in kwargs and kwargs[calibType] is not None:
metadata = kwargs[calibType].getMetadata()
for pct in (0, 5, 16, 50, 84, 95, 100):
key = f"LSST CALIB {calibType.upper()} {amp.getName()} DISTRIBUTION {pct}-PCT"
ampStats[key] = metadata.get(key, np.nan)
outputStats[amp.getName()] = ampStats

return outputStats
2 changes: 1 addition & 1 deletion python/lsst/ip/isr/isrTask.py
Original file line number Diff line number Diff line change
Expand Up @@ -1753,7 +1753,7 @@ def run(self, ccdExposure, *, camera=None, bias=None, linearizer=None,
outputStatistics = None
if self.config.doCalculateStatistics:
outputStatistics = self.isrStats.run(ccdExposure, overscanResults=overscans,
ptc=ptc).results
bias=bias, dark=dark, flat=flat, ptc=ptc).results

# do any binning.
outputBin1Exposure = None
Expand Down

0 comments on commit e84f09a

Please sign in to comment.