|
lsst.ip.diffim g85f13b0223+72ef1c6d06
|
Classes | |
| class | SpatiallySampledMetricsConnections |
Variables | |
| science : `lsst.afw.image.ExposureF` | |
| template : `lsst.afw.image.ExposureF` | |
| difference : `lsst.afw.image.ExposureF` | |
| diaSources : `lsst.afw.table.SourceCatalog` | |
| psfMatchingKernel : `~lsst.afw.math.LinearCombinationKernel` | |
| results : `lsst.pipe.base.Struct` | |
| src : `lsst.afw.table.SourceRecord` | |
| metricsMaskPlanes : `list` of `str` | |
| lsst.ip.diffim.computeSpatiallySampledMetrics.diaSources : `lsst.afw.table.SourceCatalog` |
Definition at line 216 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.difference : `lsst.afw.image.ExposureF` |
Definition at line 214 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.metricsMaskPlanes : `list` of `str` |
Definition at line 263 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.psfMatchingKernel : `~lsst.afw.math.LinearCombinationKernel` |
Definition at line 218 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.results : `lsst.pipe.base.Struct` |
Definition at line 223 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.science : `lsst.afw.image.ExposureF` |
metricsMaskPlanes = lsst.pex.config.ListField(
dtype=str,
doc="List of mask planes to include in metrics",
default=('BAD', 'CLIPPED', 'CR', 'DETECTED', 'DETECTED_NEGATIVE', 'EDGE',
'INEXACT_PSF', 'INJECTED', 'INJECTED_TEMPLATE', 'INTRP', 'NOT_DEBLENDED',
'NO_DATA', 'REJECTED', 'SAT', 'SAT_TEMPLATE', 'SENSOR_EDGE', 'STREAK', 'SUSPECT',
'UNMASKEDNAN',
),
)
metricSources = pexConfig.ConfigurableField(
target=SkyObjectsTask,
doc="Generate QA metric sources",
)
def setDefaults(self):
self.metricSources.avoidMask = ["NO_DATA", "EDGE"]
class SpatiallySampledMetricsTask(lsst.pipe.base.PipelineTask):
ConfigClass = SpatiallySampledMetricsConfig
_DefaultName = "spatiallySampledMetrics"
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.makeSubtask("metricSources")
self.schema = afwTable.SourceTable.makeMinimalSchema()
self.schema.addField(
"x", "F",
"X location of the metric evaluation.",
units="pixel")
self.schema.addField(
"y", "F",
"Y location of the metric evaluation.",
units="pixel")
self.metricSources.skySourceKey = self.schema.addField("sky_source", type="Flag",
doc="Metric evaluation objects.")
self.schema.addField(
"source_density", "F",
"Density of diaSources at location.",
units="count/degree^2")
self.schema.addField(
"dipole_density", "F",
"Density of dipoles at location.",
units="count/degree^2")
self.schema.addField(
"dipole_direction", "F",
"Mean dipole orientation.",
units="radian")
self.schema.addField(
"dipole_separation", "F",
"Mean dipole separation.",
units="pixel")
self.schema.addField(
"template_value", "F",
"Median of template at location.",
units="nJy")
self.schema.addField(
"template_variance", "F",
"Median of template variance at location.",
units="nJy^2")
self.schema.addField(
"science_value", "F",
"Median of science at location.",
units="nJy")
self.schema.addField(
"science_variance", "F",
"Median of science variance at location.",
units="nJy^2")
self.schema.addField(
"diffim_value", "F",
"Median of diffim at location.",
units="nJy")
self.schema.addField(
"diffim_variance", "F",
"Median of diffim variance at location.",
units="nJy^2")
self.schema.addField(
"science_psfSize", "F",
"Width of the science image PSF at location.",
units="pixel")
self.schema.addField(
"template_psfSize", "F",
"Width of the template image PSF at location.",
units="pixel")
for maskPlane in self.config.metricsMaskPlanes:
self.schema.addField(
"%s_mask_fraction"%maskPlane.lower(), "F",
"Fraction of pixels with %s mask"%maskPlane
)
self.schema.addField(
"psfMatchingKernel_sum", "F",
"PSF matching kernel sum at location.")
self.schema.addField(
"psfMatchingKernel_dx", "F",
"PSF matching kernel centroid offset in x at location.",
units="pixel")
self.schema.addField(
"psfMatchingKernel_dy", "F",
"PSF matching kernel centroid offset in y at location.",
units="pixel")
self.schema.addField(
"psfMatchingKernel_length", "F",
"PSF matching kernel centroid offset module.",
units="arcsecond")
self.schema.addField(
"psfMatchingKernel_position_angle", "F",
"PSF matching kernel centroid offset position angle.",
units="radian")
self.schema.addField(
"psfMatchingKernel_direction", "F",
"PSF matching kernel centroid offset direction in detector plane.",
units="radian")
@timeMethod
def run(self, science, template, difference, diaSources, psfMatchingKernel):
Definition at line 209 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.src : `lsst.afw.table.SourceRecord` |
idFactory = lsst.meas.base.IdGenerator().make_table_id_factory()
spatiallySampledMetrics = afwTable.SourceCatalog(self.schema)
spatiallySampledMetrics.getTable().setIdFactory(idFactory)
self.metricSources.run(mask=science.mask, seed=difference.info.id, catalog=spatiallySampledMetrics)
metricsMaskPlanes = []
for maskPlane in self.config.metricsMaskPlanes:
try:
metricsMaskPlanes.append(maskPlane)
except InvalidParameterError:
self.log.info("Unable to calculate metrics for mask plane %s: not in image"%maskPlane)
for src in spatiallySampledMetrics:
self._evaluateLocalMetric(src, science, template, difference, diaSources,
metricsMaskPlanes=metricsMaskPlanes,
psfMatchingKernel=psfMatchingKernel)
spatiallySampledMetrics = spatiallySampledMetrics.copy(deep=True).asAstropy()
return pipeBase.Struct(spatiallySampledMetrics=spatiallySampledMetrics)
def _evaluateLocalMetric(self, src, science, template, difference, diaSources,
metricsMaskPlanes, psfMatchingKernel):
Definition at line 255 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.template : `lsst.afw.image.ExposureF` |
Definition at line 211 of file computeSpatiallySampledMetrics.py.