30 """Recreate the `NoiseReplacer` used in measurement.
32 Given a measurement catalog and the exposure on which the measurements
33 were made, reconstruct the `NoiseReplacer` object that was used to mask
34 out sources during measurement.
38 exposure : `lsst.afw.exposure.Exposure`
39 The image on which measurements were made.
42 Catalog containing the results measurements on each source.
46 noiseReplacer : `NoiseReplacer`
47 Object used to replace
and/
or restore sources
in the exposure
with
51 algMetadata = measCat.getMetadata()
53 noiseReplacerConf.noiseSeedMultiplier = \
54 algMetadata.getScalar(SFMT.NOISE_SEED_MULTIPLIER)
55 noiseReplacerConf.noiseSource = algMetadata.getScalar(SFMT.NOISE_SOURCE)
56 noiseReplacerConf.noiseOffset = algMetadata.getScalar(SFMT.NOISE_OFFSET)
58 footprints = {src.getId(): (src.getParent(), src.getFootprint())
62 exposureId = algMetadata.getScalar(SFMT.NOISE_EXPOSURE_ID)
66 noiseReplacer =
NoiseReplacer(noiseReplacerConf, exposure, footprints,
67 exposureId=exposureId)
72 resetParents=True, addParents=False):
73 """Create a catalog prepopulated with IDs.
76 containing blank records
with IDs
as specified
in the ``idList``
79 This function
is primarily used when re-running measurements on a
80 particular footprint. Specifying IDs
in the new measurement catalog which
81 correspond to IDs
in the old catalog makes comparing results much easier.
83 The ``resetParents``
and ``addParents`` options are needed because
84 `SingleFrameMeasurementTask.runPlugins` will skip child
85 objects whose parents are
not in the catalog.
90 Schema used to describe the fields
in the resulting catalog.
93 Catalog containing previous measurements.
95 idList : iterable of `int`
96 Iterable whose values should be numbers corresponding to measurement
97 IDs which exist
in ``oldCatalog``.
99 fields : iterable of `str`
100 Iterable whose entries should be strings corresponding to schema keys
101 that exist
in both the old catalog
and input schema. Fields listed
102 will be copied
from the old catalog into the new catalog.
104 resetParents : `bool`
105 If `
True`, child objects whose parents are
not in the ``idList``
106 will have their parents reset to zero.
109 If `
True`, parents of child objects will be added to ``idList``
if
110 they are
not already present.
115 Catalog prepopulated
with entries
with the IDs specified.
118 if not isinstance(schema, Schema):
119 raise RuntimeError(
"schema must be an instance of "
120 "lsst.afw.table.Schema")
122 if not isinstance(oldCatalog, SourceCatalog):
123 raise RuntimeError(
"oldCatalog must be an instance of "
124 "lsst.afw.table.SourceCatalogiterable")
128 if not isinstance(fields, Iterable):
129 raise RuntimeError(
"fields list must be an iterable with string"
132 if entry
not in schema:
133 schema.addField(oldCatalog.schema.find(entry).field)
139 parentId = oldCatalog.find(srcId).getParent()
141 newIdList.add(parentId)
143 idList = sorted(idList)
147 oldSrc = oldCatalog.find(srcId)
148 src = measCat.addNew()
150 src.setFootprint(oldSrc.getFootprint())
151 parent = oldSrc.getParent()
152 if resetParents
and parent
and parent
not in idList:
154 src.setParent(parent)
155 src.setCoord(oldSrc.getCoord())
157 src[entry] = oldSrc[entry]
Defines the fields and offsets for a table.
daf::base::PropertySet * set
rebuildNoiseReplacer(exposure, measCat)
makeRerunCatalog(schema, oldCatalog, idList, fields=None, resetParents=True, addParents=False)