LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask Class Reference
Inheritance diagram for lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask:

Public Member Functions

def __init__ (self, columnName=None, schema=None, doc=None, **kwargs)
 
def run (self, sources, prior=None, expId=0)
 
def select (self, numSources, expId=0)
 
def applySelectionPrior (self, prior, selection)
 
def markSources (self, sources, selection)
 

Public Attributes

 columnName
 
 key
 

Static Public Attributes

 ConfigClass = ReserveSourcesConfig
 

Detailed Description

Reserve sources from analysis

We randomly select a fraction of sources that will be reserved
from analysis. This allows evaluation of the quality of model fits
using sources that were not involved in the fitting process.

Constructor parameters
----------------------
columnName : `str`, required
    Name of flag column to add; we will suffix this with "_reserved".
schema : `lsst.afw.table.Schema`, required
    Catalog schema.
doc : `str`
    Documentation for column to add.
config : `ReserveSourcesConfig`
    Configuration.

Definition at line 41 of file reserveSourcesTask.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.__init__ (   self,
  columnName = None,
  schema = None,
  doc = None,
**  kwargs 
)

Definition at line 62 of file reserveSourcesTask.py.

62  def __init__(self, columnName=None, schema=None, doc=None, **kwargs):
63  Task.__init__(self, **kwargs)
64  assert columnName is not None, "columnName not provided"
65  assert schema is not None, "schema not provided"
66  self.columnName = columnName
67  self.key = schema.addField(self.columnName + "_reserved", type="Flag", doc=doc)
68 

Member Function Documentation

◆ applySelectionPrior()

def lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.applySelectionPrior (   self,
  prior,
  selection 
)
Apply selection to full catalog

The `select` method makes a random selection of sources. If those
sources don't represent the full population (because a sub-selection
has already been made), then we need to generate a selection covering
the entire population.

Parameters
----------
prior : `numpy.ndarray` of type `bool`
    Prior selection of sources, identifying the subset from which the
    random selection has been made.
selection : `numpy.ndarray` of type `bool`
    Selection of sources in subset identified by `prior`.

Returns
-------
full : `numpy.ndarray` of type `bool`
    Selection applied to full population.

Definition at line 136 of file reserveSourcesTask.py.

136  def applySelectionPrior(self, prior, selection):
137  """Apply selection to full catalog
138 
139  The `select` method makes a random selection of sources. If those
140  sources don't represent the full population (because a sub-selection
141  has already been made), then we need to generate a selection covering
142  the entire population.
143 
144  Parameters
145  ----------
146  prior : `numpy.ndarray` of type `bool`
147  Prior selection of sources, identifying the subset from which the
148  random selection has been made.
149  selection : `numpy.ndarray` of type `bool`
150  Selection of sources in subset identified by `prior`.
151 
152  Returns
153  -------
154  full : `numpy.ndarray` of type `bool`
155  Selection applied to full population.
156  """
157  full = np.zeros(len(prior), dtype=bool)
158  full[prior] = selection
159  return full
160 

◆ markSources()

def lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.markSources (   self,
  sources,
  selection 
)
Mark sources in a list or catalog

This requires iterating through the list and setting the flag in
each source individually. Even if the `sources` is a `Catalog`
with contiguous records, it's not currently possible to set a boolean
column (DM-6981) so we need to iterate.

Parameters
----------
catalog : `lsst.afw.table.Catalog` or `list` of `lsst.afw.table.Record`
    Catalog in which to flag selected sources.
selection : `numpy.ndarray` of type `bool`
    Selection of sources to mark.

Definition at line 161 of file reserveSourcesTask.py.

161  def markSources(self, sources, selection):
162  """Mark sources in a list or catalog
163 
164  This requires iterating through the list and setting the flag in
165  each source individually. Even if the `sources` is a `Catalog`
166  with contiguous records, it's not currently possible to set a boolean
167  column (DM-6981) so we need to iterate.
168 
169  Parameters
170  ----------
171  catalog : `lsst.afw.table.Catalog` or `list` of `lsst.afw.table.Record`
172  Catalog in which to flag selected sources.
173  selection : `numpy.ndarray` of type `bool`
174  Selection of sources to mark.
175  """
176  for src, select in zip(sources, selection):
177  if select:
178  src.set(self.key, True)

◆ run()

def lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.run (   self,
  sources,
  prior = None,
  expId = 0 
)
Select sources to be reserved

Reserved sources will be flagged in the catalog, and we will return
boolean arrays that identify the sources to be reserved from and
used in the analysis. Typically you'll want to use the sources
from the `use` array in your fitting, and use the sources from the
`reserved` array as an independent test of your fitting.

Parameters
----------
sources : `lsst.afw.table.Catalog` or `list` of `lsst.afw.table.Record`
    Sources from which to select some to be reserved.
prior : `numpy.ndarray` of type `bool`, optional
    Prior selection of sources. Should have the same length as
    `sources`. If set, we will only consider for reservation sources
    that are flagged `True` in this array.
expId : `int`
    Exposure identifier; used for seeding the random number generator.

Return struct contents
----------------------
reserved : `numpy.ndarray` of type `bool`
    Sources to be reserved are flagged `True` in this array.
use : `numpy.ndarray` of type `bool`
    Sources the user should use in analysis are flagged `True`.

Definition at line 69 of file reserveSourcesTask.py.

69  def run(self, sources, prior=None, expId=0):
70  """Select sources to be reserved
71 
72  Reserved sources will be flagged in the catalog, and we will return
73  boolean arrays that identify the sources to be reserved from and
74  used in the analysis. Typically you'll want to use the sources
75  from the `use` array in your fitting, and use the sources from the
76  `reserved` array as an independent test of your fitting.
77 
78  Parameters
79  ----------
80  sources : `lsst.afw.table.Catalog` or `list` of `lsst.afw.table.Record`
81  Sources from which to select some to be reserved.
82  prior : `numpy.ndarray` of type `bool`, optional
83  Prior selection of sources. Should have the same length as
84  `sources`. If set, we will only consider for reservation sources
85  that are flagged `True` in this array.
86  expId : `int`
87  Exposure identifier; used for seeding the random number generator.
88 
89  Return struct contents
90  ----------------------
91  reserved : `numpy.ndarray` of type `bool`
92  Sources to be reserved are flagged `True` in this array.
93  use : `numpy.ndarray` of type `bool`
94  Sources the user should use in analysis are flagged `True`.
95  """
96  if prior is not None:
97  assert len(prior) == len(sources), "Length mismatch: %s vs %s" % (len(prior), len(sources))
98  numSources = prior.sum()
99  else:
100  numSources = len(sources)
101  selection = self.select(numSources, expId)
102  if prior is not None:
103  selection = self.applySelectionPrior(prior, selection)
104  self.markSources(sources, selection)
105  self.log.info("Reserved %d/%d sources", selection.sum(), len(selection))
106  return Struct(reserved=selection,
107  use=prior & ~selection if prior is not None else np.logical_not(selection))
108 
def run(self, coaddExposures, bbox, wcs)
Definition: getTemplate.py:603

◆ select()

def lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.select (   self,
  numSources,
  expId = 0 
)
Randomly select some sources

We return a boolean array with a random selection. The fraction
of sources selected is specified by the config parameter `fraction`.

Parameters
----------
numSources : `int`
    Number of sources in catalog from which to select.
expId : `int`
    Exposure identifier; used for seeding the random number generator.

Returns
-------
selection : `numpy.ndarray` of type `bool`
    Selected sources are flagged `True` in this array.

Definition at line 109 of file reserveSourcesTask.py.

109  def select(self, numSources, expId=0):
110  """Randomly select some sources
111 
112  We return a boolean array with a random selection. The fraction
113  of sources selected is specified by the config parameter `fraction`.
114 
115  Parameters
116  ----------
117  numSources : `int`
118  Number of sources in catalog from which to select.
119  expId : `int`
120  Exposure identifier; used for seeding the random number generator.
121 
122  Returns
123  -------
124  selection : `numpy.ndarray` of type `bool`
125  Selected sources are flagged `True` in this array.
126  """
127  selection = np.zeros(numSources, dtype=bool)
128  if self.config.fraction <= 0:
129  return selection
130  reserve = int(np.round(numSources*self.config.fraction))
131  selection[:reserve] = True
132  rng = np.random.RandomState((self.config.seed + expId) & 0xFFFFFFFF)
133  rng.shuffle(selection)
134  return selection
135 
def select(vector, clip)
Definition: fringe.py:543

Member Data Documentation

◆ columnName

lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.columnName

Definition at line 66 of file reserveSourcesTask.py.

◆ ConfigClass

lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.ConfigClass = ReserveSourcesConfig
static

Definition at line 59 of file reserveSourcesTask.py.

◆ key

lsst.meas.algorithms.reserveSourcesTask.ReserveSourcesTask.key

Definition at line 67 of file reserveSourcesTask.py.


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