LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
Public Member Functions | Static Public Attributes | List of all members
lsst.ip.diffim.diaCatalogSourceSelector.DiaCatalogSourceSelectorTask Class Reference
Inheritance diagram for lsst.ip.diffim.diaCatalogSourceSelector.DiaCatalogSourceSelectorTask:

Public Member Functions

def selectSources (self, sourceCat, matches=None, exposure=None)
 

Static Public Attributes

 ConfigClass = DiaCatalogSourceSelectorConfig
 
bool usesMatches = True
 

Detailed Description

A task that selects sources for Kernel candidates.

A naive star selector based on second moments. Use with caution.

Notes
-----
Debug Variables

DiaCatalogSourceSelectorTask has a debug dictionary with the following keys:

display : `bool`
    if True display debug information
displayExposure : `bool`
    if True display exposure
pauseAtEnd `bool`
    if True wait after displaying everything and wait for user input

Examples
--------
For example, put something like:

.. code-block:: py

    import lsstDebug
    def DebugInfo(name):
        di = lsstDebug.getInfo(name)  # N.b. lsstDebug.Info(name) would call us recursively
        if name.endswith("diaCatalogSourceSelector"):
            di.display = True

        return di

    lsstDebug.Info = DebugInfo

into your `debug.py` file and run your task with the `--debug` flag.

Definition at line 103 of file diaCatalogSourceSelector.py.

Member Function Documentation

◆ selectSources()

def lsst.ip.diffim.diaCatalogSourceSelector.DiaCatalogSourceSelectorTask.selectSources (   self,
  sourceCat,
  matches = None,
  exposure = None 
)
Return a selection of sources for Kernel candidates.

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`
     A match vector as produced by meas_astrom.
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 : `array` of `bool``
        Boolean array of sources that were selected, same length as
        sourceCat.

Definition at line 142 of file diaCatalogSourceSelector.py.

142  def selectSources(self, sourceCat, matches=None, exposure=None):
143  """Return a selection of sources for Kernel candidates.
144 
145  Parameters
146  ----------
147  sourceCat : `lsst.afw.table.SourceCatalog`
148  Catalog of sources to select from.
149  This catalog must be contiguous in memory.
150  matches : `list` of `lsst.afw.table.ReferenceMatch`
151  A match vector as produced by meas_astrom.
152  exposure : `lsst.afw.image.Exposure` or None
153  The exposure the catalog was built from; used for debug display.
154 
155  Returns
156  -------
157  struct : `lsst.pipe.base.Struct`
158  The struct contains the following data:
159 
160  - selected : `array` of `bool``
161  Boolean array of sources that were selected, same length as
162  sourceCat.
163  """
164  import lsstDebug
165  display = lsstDebug.Info(__name__).display
166  displayExposure = lsstDebug.Info(__name__).displayExposure
167  pauseAtEnd = lsstDebug.Info(__name__).pauseAtEnd
168 
169  if matches is None:
170  raise RuntimeError("DiaCatalogSourceSelector requires matches")
171 
172  mi = exposure.getMaskedImage()
173 
174  if display and displayExposure:
175  disp = afwDisplay.Display(frame=lsstDebug.frame)
176  disp.mtv(mi, title="Kernel candidates")
177  #
178  # Look for flags in each Source
179  #
180  isGoodSource = CheckSource(sourceCat, self.config.fluxLim, self.config.fluxMax, self.config.badFlags)
181 
182  # Go through and find all the acceptable candidates in the catalogue
183  selected = np.zeros(len(sourceCat), dtype=bool)
184 
185  if display and displayExposure:
186  symbs = []
187  ctypes = []
188 
189  doColorCut = True
190 
191  refSchema = matches[0][0].schema
192  rRefFluxField = measAlg.getRefFluxField(refSchema, "r")
193  gRefFluxField = measAlg.getRefFluxField(refSchema, "g")
194  for i, (ref, source, d) in enumerate(matches):
195  if not isGoodSource(source):
196  if display and displayExposure:
197  symbs.append("+")
198  ctypes.append(afwDisplay.RED)
199  else:
200  isStar = not ref.get("resolved")
201  isVar = not ref.get("photometric")
202  gMag = None
203  rMag = None
204  if doColorCut:
205  try:
206  gMag = -2.5 * np.log10(ref.get(gRefFluxField))
207  rMag = -2.5 * np.log10(ref.get(rRefFluxField))
208  except KeyError:
209  self.log.warning("Cannot cut on color info; fields 'g' and 'r' do not exist")
210  doColorCut = False
211  isRightColor = True
212  else:
213  isRightColor = (gMag-rMag) >= self.config.grMin and (gMag-rMag) <= self.config.grMax
214 
215  isRightType = (self.config.selectStar and isStar) or (self.config.selectGalaxy and not isStar)
216  isRightVar = (self.config.includeVariable) or (self.config.includeVariable is isVar)
217  if isRightType and isRightVar and isRightColor:
218  selected[i] = True
219  if display and displayExposure:
220  symbs.append("+")
221  ctypes.append(afwDisplay.GREEN)
222  elif display and displayExposure:
223  symbs.append("o")
224  ctypes.append(afwDisplay.BLUE)
225 
226  if display and displayExposure:
227  disp = afwDisplay.Display(frame=lsstDebug.frame)
228  with disp.Buffering():
229  for (ref, source, d), symb, ctype in zip(matches, symbs, ctypes):
230  disp.dot(symb, source.getX() - mi.getX0(), source.getY() - mi.getY0(),
231  size=4, ctype=ctype)
232 
233  if display:
234  lsstDebug.frame += 1
235  if pauseAtEnd:
236  input("Continue? y[es] p[db] ")
237 
238  return Struct(selected=selected)

Member Data Documentation

◆ ConfigClass

lsst.ip.diffim.diaCatalogSourceSelector.DiaCatalogSourceSelectorTask.ConfigClass = DiaCatalogSourceSelectorConfig
static

Definition at line 139 of file diaCatalogSourceSelector.py.

◆ usesMatches

bool lsst.ip.diffim.diaCatalogSourceSelector.DiaCatalogSourceSelectorTask.usesMatches = True
static

Definition at line 140 of file diaCatalogSourceSelector.py.


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