LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | List of all members
lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask Class Reference
Inheritance diagram for lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask:
lsst.meas.algorithms.sourceSelector.BaseSourceSelectorTask

Public Member Functions

 __init__ (self, *args, **kwargs)
 
 selectSources (self, sourceCat, matches=None, exposure=None)
 

Public Attributes

 parentKey
 
 nChildKey
 
 centroidXKey
 
 centroidYKey
 
 centroidXErrKey
 
 centroidYErrKey
 
 centroidFlagKey
 
 primaryKey
 
 edgeKey
 
 interpolatedCenterKey
 
 saturatedKey
 
 instFluxKey
 
 fluxFlagKey
 
 instFluxErrKey
 

Static Public Attributes

 ConfigClass = AstrometrySourceSelectorConfig
 

Protected Member Functions

 _getSchemaKeys (self, schema)
 
 _isMultiple (self, sourceCat)
 
 _hasCentroid (self, sourceCat)
 
 _goodSN (self, sourceCat)
 
 _isUsable (self, sourceCat)
 
 _isPrimary (self, sourceCat)
 
 _isGood (self, sourceCat)
 
 _isBadFlagged (self, source)
 

Detailed Description

Select sources that are useful for astrometry.

Good astrometry sources have high signal/noise, are non-blended, and
did not have certain "bad" flags set during source extraction. They need not
be PSF sources, just have reliable centroids.

Definition at line 72 of file astrometrySourceSelector.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.__init__ ( self,
* args,
** kwargs )

Reimplemented from lsst.meas.algorithms.sourceSelector.BaseSourceSelectorTask.

Definition at line 81 of file astrometrySourceSelector.py.

81 def __init__(self, *args, **kwargs):
82 BaseSourceSelectorTask.__init__(self, *args, **kwargs)
83

Member Function Documentation

◆ _getSchemaKeys()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._getSchemaKeys ( self,
schema )
protected
Extract and save the necessary keys from schema with asKey.

Definition at line 112 of file astrometrySourceSelector.py.

112 def _getSchemaKeys(self, schema):
113 """Extract and save the necessary keys from schema with asKey.
114 """
115 self.parentKey = schema["parent"].asKey()
116 self.nChildKey = schema["deblend_nChild"].asKey()
117 self.centroidXKey = schema["slot_Centroid_x"].asKey()
118 self.centroidYKey = schema["slot_Centroid_y"].asKey()
119 self.centroidXErrKey = schema["slot_Centroid_xErr"].asKey()
120 self.centroidYErrKey = schema["slot_Centroid_yErr"].asKey()
121 self.centroidFlagKey = schema["slot_Centroid_flag"].asKey()
122 try:
123 self.primaryKey = schema["detect_isPrimary"].asKey()
124 except NotFoundError:
125 self.primaryKey = None
126
127 self.edgeKey = schema["base_PixelFlags_flag_edge"].asKey()
128 self.interpolatedCenterKey = schema["base_PixelFlags_flag_interpolatedCenter"].asKey()
129 self.saturatedKey = schema["base_PixelFlags_flag_saturated"].asKey()
130
131 fluxPrefix = "slot_%sFlux_" % (self.config.sourceFluxType,)
132 self.instFluxKey = schema[fluxPrefix + "instFlux"].asKey()
133 self.fluxFlagKey = schema[fluxPrefix + "flag"].asKey()
134 self.instFluxErrKey = schema[fluxPrefix + "instFluxErr"].asKey()
135

◆ _goodSN()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._goodSN ( self,
sourceCat )
protected
Return True for each source that has Signal/Noise > config.minSnr.

Definition at line 160 of file astrometrySourceSelector.py.

160 def _goodSN(self, sourceCat):
161 """Return True for each source that has Signal/Noise > config.minSnr.
162 """
163 if self.config.minSnr <= 0:
164 return True
165 else:
166 with np.errstate(invalid="ignore"): # suppress NAN warnings
167 return sourceCat[self.instFluxKey]/sourceCat[self.instFluxErrKey] > self.config.minSnr
168

◆ _hasCentroid()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._hasCentroid ( self,
sourceCat )
protected
Return True for each source that has a valid centroid

Definition at line 146 of file astrometrySourceSelector.py.

146 def _hasCentroid(self, sourceCat):
147 """Return True for each source that has a valid centroid
148 """
149 def checkNonfiniteCentroid():
150 """Return True for sources with non-finite centroids.
151 """
152 return ~np.isfinite(sourceCat[self.centroidXKey]) | \
153 ~np.isfinite(sourceCat[self.centroidYKey])
154 assert ~checkNonfiniteCentroid().any(), \
155 "Centroids not finite for %d unflagged sources." % (checkNonfiniteCentroid().sum())
156 return np.isfinite(sourceCat[self.centroidXErrKey]) \
157 & np.isfinite(sourceCat[self.centroidYErrKey]) \
158 & ~sourceCat[self.centroidFlagKey]
159

◆ _isBadFlagged()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._isBadFlagged ( self,
source )
protected
Return True if any of config.badFlags are set for this source.

Definition at line 209 of file astrometrySourceSelector.py.

209 def _isBadFlagged(self, source):
210 """Return True if any of config.badFlags are set for this source.
211 """
212 return any(source[flag] for flag in self.config.badFlags)

◆ _isGood()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._isGood ( self,
sourceCat )
protected
Return True for each source that is usable for matching and likely has a
good centroid.

The additional tests for a good centroid, beyond isUsable, are:
- not interpolated in the center
- not saturated
- not near the edge

Definition at line 193 of file astrometrySourceSelector.py.

193 def _isGood(self, sourceCat):
194 """Return True for each source that is usable for matching and likely has a
195 good centroid.
196
197 The additional tests for a good centroid, beyond isUsable, are:
198 - not interpolated in the center
199 - not saturated
200 - not near the edge
201 """
202
203 return self._isUsable(sourceCat) \
204 & self._isPrimary(sourceCat) \
205 & ~sourceCat[self.saturatedKey] \
206 & ~sourceCat[self.interpolatedCenterKey] \
207 & ~sourceCat[self.edgeKey]
208

◆ _isMultiple()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._isMultiple ( self,
sourceCat )
protected
Return True for each source that is likely multiple sources.

Definition at line 136 of file astrometrySourceSelector.py.

136 def _isMultiple(self, sourceCat):
137 """Return True for each source that is likely multiple sources.
138 """
139 test = (sourceCat[self.parentKey] != 0) | (sourceCat[self.nChildKey] != 0)
140 # have to currently manage footprints on a source-by-source basis.
141 for i, cat in enumerate(sourceCat):
142 footprint = cat.getFootprint()
143 test[i] |= (footprint is not None) and (len(footprint.getPeaks()) > 1)
144 return test
145

◆ _isPrimary()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._isPrimary ( self,
sourceCat )
protected
Return True if this is a primary source.

Definition at line 185 of file astrometrySourceSelector.py.

185 def _isPrimary(self, sourceCat):
186 """Return True if this is a primary source.
187 """
188 if self.primaryKey:
189 return sourceCat[self.primaryKey]
190 else:
191 return np.ones(len(sourceCat), dtype=bool)
192

◆ _isUsable()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask._isUsable ( self,
sourceCat )
protected
Return True for each source that is usable for matching, even if it may
have a poor centroid.

For a source to be usable it must:
- have a valid centroid
- not be deblended
- have a valid flux (of the type specified in this object's constructor)
- have adequate signal-to-noise

Definition at line 169 of file astrometrySourceSelector.py.

169 def _isUsable(self, sourceCat):
170 """Return True for each source that is usable for matching, even if it may
171 have a poor centroid.
172
173 For a source to be usable it must:
174 - have a valid centroid
175 - not be deblended
176 - have a valid flux (of the type specified in this object's constructor)
177 - have adequate signal-to-noise
178 """
179
180 return self._hasCentroid(sourceCat) \
181 & ~self._isMultiple(sourceCat) \
182 & self._goodSN(sourceCat) \
183 & ~sourceCat[self.fluxFlagKey]
184

◆ selectSources()

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.selectSources ( self,
sourceCat,
matches = None,
exposure = None )
Return a selection of sources that are useful for astrometry.

Parameters
----------
sourceCat : `lsst.afw.table.SourceCatalog`
    Catalog of sources to select from.
    This catalog must be contiguous in memory.
matches : `list` of `lsst.afw.table.ReferenceMatch` or None
    Ignored in this SourceSelector.
exposure : `lsst.afw.image.Exposure` or None
    The exposure the catalog was built from; used for debug display.

Returns
-------
struct : `lsst.pipe.base.Struct`
    The struct contains the following data:

    ``selected``
        Boolean array of sources that were selected, same length as
        sourceCat. (`numpy.ndarray` of `bool`)

Reimplemented from lsst.meas.algorithms.sourceSelector.BaseSourceSelectorTask.

Definition at line 84 of file astrometrySourceSelector.py.

84 def selectSources(self, sourceCat, matches=None, exposure=None):
85 """Return a selection of sources that are useful for astrometry.
86
87 Parameters
88 ----------
89 sourceCat : `lsst.afw.table.SourceCatalog`
90 Catalog of sources to select from.
91 This catalog must be contiguous in memory.
92 matches : `list` of `lsst.afw.table.ReferenceMatch` or None
93 Ignored in this SourceSelector.
94 exposure : `lsst.afw.image.Exposure` or None
95 The exposure the catalog was built from; used for debug display.
96
97 Returns
98 -------
99 struct : `lsst.pipe.base.Struct`
100 The struct contains the following data:
101
102 ``selected``
103 Boolean array of sources that were selected, same length as
104 sourceCat. (`numpy.ndarray` of `bool`)
105 """
106 self._getSchemaKeys(sourceCat.schema)
107
108 bad = reduce(lambda x, y: np.logical_or(x, sourceCat[y]), self.config.badFlags, False)
109 good = self._isGood(sourceCat)
110 return Struct(selected=good & ~bad)
111

Member Data Documentation

◆ centroidFlagKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.centroidFlagKey

Definition at line 121 of file astrometrySourceSelector.py.

◆ centroidXErrKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.centroidXErrKey

Definition at line 119 of file astrometrySourceSelector.py.

◆ centroidXKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.centroidXKey

Definition at line 117 of file astrometrySourceSelector.py.

◆ centroidYErrKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.centroidYErrKey

Definition at line 120 of file astrometrySourceSelector.py.

◆ centroidYKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.centroidYKey

Definition at line 118 of file astrometrySourceSelector.py.

◆ ConfigClass

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.ConfigClass = AstrometrySourceSelectorConfig
static

Definition at line 79 of file astrometrySourceSelector.py.

◆ edgeKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.edgeKey

Definition at line 127 of file astrometrySourceSelector.py.

◆ fluxFlagKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.fluxFlagKey

Definition at line 133 of file astrometrySourceSelector.py.

◆ instFluxErrKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.instFluxErrKey

Definition at line 134 of file astrometrySourceSelector.py.

◆ instFluxKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.instFluxKey

Definition at line 132 of file astrometrySourceSelector.py.

◆ interpolatedCenterKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.interpolatedCenterKey

Definition at line 128 of file astrometrySourceSelector.py.

◆ nChildKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.nChildKey

Definition at line 116 of file astrometrySourceSelector.py.

◆ parentKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.parentKey

Definition at line 115 of file astrometrySourceSelector.py.

◆ primaryKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.primaryKey

Definition at line 123 of file astrometrySourceSelector.py.

◆ saturatedKey

lsst.meas.algorithms.astrometrySourceSelector.AstrometrySourceSelectorTask.saturatedKey

Definition at line 129 of file astrometrySourceSelector.py.


The documentation for this class was generated from the following file: