|
LSST Applications g00274db5b6+edbf708997,g00d0e8bbd7+edbf708997,g199a45376c+5137f08352,g1fd858c14a+1d4b6db739,g262e1987ae+f4d9505c4f,g29ae962dfc+7156fb1a53,g2cef7863aa+73c82f25e4,g35bb328faa+edbf708997,g3e17d7035e+5b3adc59f5,g3fd5ace14f+852fa6fbcb,g47891489e3+6dc8069a4c,g53246c7159+edbf708997,g64539dfbff+9f17e571f4,g67b6fd64d1+6dc8069a4c,g74acd417e5+ae494d68d9,g786e29fd12+af89c03590,g7ae74a0b1c+a25e60b391,g7aefaa3e3d+536efcc10a,g7cc15d900a+d121454f8d,g87389fa792+a4172ec7da,g89139ef638+6dc8069a4c,g8d7436a09f+28c28d8d6d,g8ea07a8fe4+db21c37724,g92c671f44c+9f17e571f4,g98df359435+b2e6376b13,g99af87f6a8+b0f4ad7b8d,gac66b60396+966efe6077,gb88ae4c679+7dec8f19df,gbaa8f7a6c5+38b34f4976,gbf99507273+edbf708997,gc24b5d6ed1+9f17e571f4,gca7fc764a6+6dc8069a4c,gcc769fe2a4+97d0256649,gd7ef33dd92+6dc8069a4c,gdab6d2f7ff+ae494d68d9,gdbb4c4dda9+9f17e571f4,ge410e46f29+6dc8069a4c,geaed405ab2+e194be0d2b,w.2025.47
LSST Data Management Base Package
|
Classes | |
| class | SpatiallySampledMetricsConnections |
Variables | |
| science : `lsst.afw.image.ExposureF` | |
| matchedTemplate : `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 213 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.difference : `lsst.afw.image.ExposureF` |
Definition at line 211 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.matchedTemplate : `lsst.afw.image.ExposureF` |
Definition at line 205 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.metricsMaskPlanes : `list` of `str` |
Definition at line 262 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.psfMatchingKernel : `~lsst.afw.math.LinearCombinationKernel` |
Definition at line 215 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.results : `lsst.pipe.base.Struct` |
Definition at line 220 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(
"science_value", "F",
"Median of science at location.",
units="nJy")
self.schema.addField(
"diffim_value", "F",
"Median of diffim at location.",
units="nJy")
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, matchedTemplate, template, difference, diaSources, psfMatchingKernel):
Definition at line 203 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, matchedTemplate, template, difference, diaSources,
metricsMaskPlanes=metricsMaskPlanes,
psfMatchingKernel=psfMatchingKernel)
return pipeBase.Struct(spatiallySampledMetrics=spatiallySampledMetrics.asAstropy())
def _evaluateLocalMetric(self, src, science, matchedTemplate, template, difference, diaSources,
metricsMaskPlanes, psfMatchingKernel):
Definition at line 252 of file computeSpatiallySampledMetrics.py.
| lsst.ip.diffim.computeSpatiallySampledMetrics.template : `lsst.afw.image.ExposureF` |
Definition at line 208 of file computeSpatiallySampledMetrics.py.