LSSTApplications  19.0.0-10-g920eed2,19.0.0-11-g48a0200+2,19.0.0-18-gfc4e62b+11,19.0.0-2-g3b2f90d+2,19.0.0-2-gd671419+5,19.0.0-20-g5a5a17ab+9,19.0.0-21-g2644856+11,19.0.0-22-gc5dc5b1+6,19.0.0-23-gdc29a50+3,19.0.0-24-g923e380+11,19.0.0-25-g6c8df7140,19.0.0-28-g9b887e2,19.0.0-3-g2b32d65+5,19.0.0-3-g8227491+10,19.0.0-3-g9c54d0d+10,19.0.0-3-gca68e65+6,19.0.0-3-gcfc5f51+5,19.0.0-3-ge110943+9,19.0.0-3-ge74d124,19.0.0-3-gfe04aa6+11,19.0.0-4-g06f5963+5,19.0.0-4-g3d16501+11,19.0.0-4-g4a9c019+5,19.0.0-4-g5a8b323,19.0.0-4-g66397f0+1,19.0.0-4-g8278b9b+1,19.0.0-4-g8557e14,19.0.0-4-g8964aba+11,19.0.0-4-ge404a01+10,19.0.0-5-g40f3a5a,19.0.0-5-g4db63b3,19.0.0-5-gfb03ce7+11,19.0.0-6-gbaebbfb+10,19.0.0-60-gafafd468+11,19.0.0-67-g3ab1e6e,19.0.0-7-g039c0b5+9,19.0.0-7-gbea9075+4,19.0.0-7-gc567de5+11,19.0.0-8-g3a3ce09+6,19.0.0-9-g463f923+10,w.2020.21
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.meas.base.references.CoaddSrcReferencesTask Class Reference
Inheritance diagram for lsst.meas.base.references.CoaddSrcReferencesTask:
lsst.meas.base.references.BaseReferencesTask lsst.pipe.base.task.Task lsst.meas.base.references.MultiBandReferencesTask

Public Member Functions

def __init__ (self, butler=None, schema=None, **kwargs)
 
def getWcs (self, dataRef)
 
def fetchInPatches (self, dataRef, patchList)
 
def fetchInBox (self, dataRef, bbox, wcs, pad=0)
 
def getSchema (self, butler)
 
def fetchInBox (self, dataRef, bbox, wcs)
 
def subset (self, sources, bbox, wcs)
 
def emptyMetadata (self)
 
def getSchemaCatalogs (self)
 
def getAllSchemaCatalogs (self)
 
def getFullMetadata (self)
 
def getFullName (self)
 
def getName (self)
 
def getTaskDict (self)
 
def makeSubtask (self, name, **keyArgs)
 
def timer (self, name, logLevel=Log.DEBUG)
 
def makeField (cls, doc)
 
def __reduce__ (self)
 

Public Attributes

 schema
 
 metadata
 
 log
 
 config
 

Static Public Attributes

 ConfigClass = CoaddSrcReferencesConfig
 
string datasetSuffix = "src"
 

Detailed Description

Select reference sources by loading the “coadd source” dataset directly.

The name of the dataset to read is generated by appending the
`datasetSuffix` attribute to the string ``Coadd_``. The dataset is then
read directly from disk using the Butler.

Parameters
----------
schema : `lsst.afw.table.Schema`, optional
    The schema of the detection catalogs used as input to this one.
butler : `lsst.daf.persistence.butler.Butler`, optional
    A Butler used to read the input schema from disk. Required if
    ``schema`` is `None`.

Notes
-----
The task will set its own ``self.schema`` attribute to the schema of the
output merged catalog.

Definition at line 236 of file references.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.meas.base.references.CoaddSrcReferencesTask.__init__ (   self,
  butler = None,
  schema = None,
**  kwargs 
)

Reimplemented from lsst.meas.base.references.BaseReferencesTask.

Definition at line 265 of file references.py.

265  def __init__(self, butler=None, schema=None, **kwargs):
266  BaseReferencesTask.__init__(self, butler=butler, schema=schema, **kwargs)
267  if schema is None:
268  assert butler is not None, "No butler nor schema provided"
269  schema = butler.get("{}Coadd_{}_schema".format(self.config.coaddName, self.datasetSuffix),
270  immediate=True).getSchema()
271  self.schema = schema
272 

Member Function Documentation

◆ __reduce__()

def lsst.pipe.base.task.Task.__reduce__ (   self)
inherited
Pickler.

Reimplemented in lsst.pipe.drivers.multiBandDriver.MultiBandDriverTask, and lsst.pipe.drivers.coaddDriver.CoaddDriverTask.

Definition at line 373 of file task.py.

373  def __reduce__(self):
374  """Pickler.
375  """
376  return self.__class__, (self.config, self._name, self._parentTask, None)

◆ emptyMetadata()

def lsst.pipe.base.task.Task.emptyMetadata (   self)
inherited
Empty (clear) the metadata for this Task and all sub-Tasks.

Definition at line 153 of file task.py.

153  def emptyMetadata(self):
154  """Empty (clear) the metadata for this Task and all sub-Tasks.
155  """
156  for subtask in self._taskDict.values():
157  subtask.metadata = dafBase.PropertyList()
158 

◆ fetchInBox() [1/2]

def lsst.meas.base.references.BaseReferencesTask.fetchInBox (   self,
  dataRef,
  bbox,
  wcs 
)
inherited
Return reference sources within a given bounding box.

Reference sources are selected if they overlap a region defined by a
pixel-coordinate bounding box and corresponding WCS.

Parameters
----------
dataRef : `lsst.daf.persistence.ButlerDataRef`
    Butler data reference. The implied data ID must contain the
    ``tract`` key.
bbox : `lsst.afw.geom.Box2I` or `lsst.afw.geom.Box2D`
    Defines the selection region in pixel coordinates.
wcs : `lsst.afw.image.SkyWcs`
    Maps ``bbox`` to sky coordinates.

Returns
-------
sources : iterable of `~lsst.afw.table.SourceRecord`
    Reference sources. May be any Python iterable, including a lazy
    iterator.

Notes
-----
The returned set of sources should be complete and close to minimal.

Definition at line 108 of file references.py.

108  def fetchInBox(self, dataRef, bbox, wcs):
109  """Return reference sources within a given bounding box.
110 
111  Reference sources are selected if they overlap a region defined by a
112  pixel-coordinate bounding box and corresponding WCS.
113 
114  Parameters
115  ----------
116  dataRef : `lsst.daf.persistence.ButlerDataRef`
117  Butler data reference. The implied data ID must contain the
118  ``tract`` key.
119  bbox : `lsst.afw.geom.Box2I` or `lsst.afw.geom.Box2D`
120  Defines the selection region in pixel coordinates.
121  wcs : `lsst.afw.image.SkyWcs`
122  Maps ``bbox`` to sky coordinates.
123 
124  Returns
125  -------
126  sources : iterable of `~lsst.afw.table.SourceRecord`
127  Reference sources. May be any Python iterable, including a lazy
128  iterator.
129 
130  Notes
131  -----
132  The returned set of sources should be complete and close to minimal.
133  """
134  raise NotImplementedError("BaseReferencesTask is pure abstract, and cannot be used directly.")
135 

◆ fetchInBox() [2/2]

def lsst.meas.base.references.CoaddSrcReferencesTask.fetchInBox (   self,
  dataRef,
  bbox,
  wcs,
  pad = 0 
)
Return reference sources within a given bounding box.

Reference sources are selected if they overlap a region defined by a
pixel-coordinate bounding box and corresponding WCS.

Parameters
----------
dataRef : `lsst.daf.persistence.ButlerDataRef`
    Butler data reference. The implied data ID must contain the
    ``tract`` key.
bbox : `lsst.afw.geom.Box2I` or `lsst.afw.geom.Box2D`
    Defines the selection region in pixel coordinates.
wcs : `lsst.afw.image.SkyWcs`
    Maps ``bbox`` to sky coordinates.
pad : `int`
    a buffer to grow the bounding box by after catalogs have been loaded, but
    before filtering them to include just the given bounding box.

Returns
-------
sources : iterable of `~lsst.afw.table.SourceRecord`
    Reference sources. May be any Python iterable, including a lazy
    iterator.

Definition at line 329 of file references.py.

329  def fetchInBox(self, dataRef, bbox, wcs, pad=0):
330  """Return reference sources within a given bounding box.
331 
332  Reference sources are selected if they overlap a region defined by a
333  pixel-coordinate bounding box and corresponding WCS.
334 
335  Parameters
336  ----------
337  dataRef : `lsst.daf.persistence.ButlerDataRef`
338  Butler data reference. The implied data ID must contain the
339  ``tract`` key.
340  bbox : `lsst.afw.geom.Box2I` or `lsst.afw.geom.Box2D`
341  Defines the selection region in pixel coordinates.
342  wcs : `lsst.afw.image.SkyWcs`
343  Maps ``bbox`` to sky coordinates.
344  pad : `int`
345  a buffer to grow the bounding box by after catalogs have been loaded, but
346  before filtering them to include just the given bounding box.
347 
348  Returns
349  -------
350  sources : iterable of `~lsst.afw.table.SourceRecord`
351  Reference sources. May be any Python iterable, including a lazy
352  iterator.
353  """
354  skyMap = dataRef.get(self.config.coaddName + "Coadd_skyMap", immediate=True)
355  tract = skyMap[dataRef.dataId["tract"]]
356  coordList = [wcs.pixelToSky(corner) for corner in lsst.geom.Box2D(bbox).getCorners()]
357  self.log.info("Getting references in region with corners %s [degrees]" %
358  ", ".join("(%s)" % (coord.getPosition(lsst.geom.degrees),) for coord in coordList))
359  patchList = tract.findPatchList(coordList)
360  # After figuring out which patch catalogs to read from the bbox, pad out the bbox if desired
361  # But don't add any new patches while padding
362  if pad:
363  bbox.grow(pad)
364  return self.subset(self.fetchInPatches(dataRef, patchList), bbox, wcs)
365 
366 

◆ fetchInPatches()

def lsst.meas.base.references.CoaddSrcReferencesTask.fetchInPatches (   self,
  dataRef,
  patchList 
)
Fetch the source catalog using the Butler.

Parameters
----------
dataRef : `lsst.daf.persistence.ButlerDataRef`
    Butler data reference. The implied data ID must contain the
    ``tract`` key.
patchList : `list` of `lsst.skymap.PatchInfo`
    Patches for which to fetch reference sources.

Returns
-------
sources : iterable of `~lsst.afw.table.SourceRecord`
    Reference sources. May be any Python iterable, including a lazy
    iterator.

Notes
-----
An implementation of `BaseReferencesTask.fetchInPatches` that loads
``Coadd_`` + `datasetSuffix` catalogs using the butler.

Reimplemented from lsst.meas.base.references.BaseReferencesTask.

Definition at line 284 of file references.py.

284  def fetchInPatches(self, dataRef, patchList):
285  """Fetch the source catalog using the Butler.
286 
287  Parameters
288  ----------
289  dataRef : `lsst.daf.persistence.ButlerDataRef`
290  Butler data reference. The implied data ID must contain the
291  ``tract`` key.
292  patchList : `list` of `lsst.skymap.PatchInfo`
293  Patches for which to fetch reference sources.
294 
295  Returns
296  -------
297  sources : iterable of `~lsst.afw.table.SourceRecord`
298  Reference sources. May be any Python iterable, including a lazy
299  iterator.
300 
301  Notes
302  -----
303  An implementation of `BaseReferencesTask.fetchInPatches` that loads
304  ``Coadd_`` + `datasetSuffix` catalogs using the butler.
305  """
306  dataset = "{}Coadd_{}".format(self.config.coaddName, self.datasetSuffix)
307  tract = dataRef.dataId["tract"]
308  butler = dataRef.butlerSubset.butler
309  for patch in patchList:
310  dataId = {'tract': tract, 'patch': "%d,%d" % patch.getIndex()}
311  if self.config.filter is not None:
312  dataId['filter'] = self.config.filter
313 
314  if not butler.datasetExists(dataset, dataId):
315  if self.config.skipMissing:
316  continue
317  raise lsst.pipe.base.TaskError("Reference %s doesn't exist" % (dataId,))
318  self.log.info("Getting references in %s" % (dataId,))
319  catalog = butler.get(dataset, dataId, immediate=True)
320  if self.config.removePatchOverlaps:
321  bbox = lsst.geom.Box2D(patch.getInnerBBox())
322  for source in catalog:
323  if bbox.contains(source.getCentroid()):
324  yield source
325  else:
326  for source in catalog:
327  yield source
328 

◆ getAllSchemaCatalogs()

def lsst.pipe.base.task.Task.getAllSchemaCatalogs (   self)
inherited
Get schema catalogs for all tasks in the hierarchy, combining the results into a single dict.

Returns
-------
schemacatalogs : `dict`
    Keys are butler dataset type, values are a empty catalog (an instance of the appropriate
    lsst.afw.table Catalog type) for all tasks in the hierarchy, from the top-level task down
    through all subtasks.

Notes
-----
This method may be called on any task in the hierarchy; it will return the same answer, regardless.

The default implementation should always suffice. If your subtask uses schemas the override
`Task.getSchemaCatalogs`, not this method.

Definition at line 188 of file task.py.

188  def getAllSchemaCatalogs(self):
189  """Get schema catalogs for all tasks in the hierarchy, combining the results into a single dict.
190 
191  Returns
192  -------
193  schemacatalogs : `dict`
194  Keys are butler dataset type, values are a empty catalog (an instance of the appropriate
195  lsst.afw.table Catalog type) for all tasks in the hierarchy, from the top-level task down
196  through all subtasks.
197 
198  Notes
199  -----
200  This method may be called on any task in the hierarchy; it will return the same answer, regardless.
201 
202  The default implementation should always suffice. If your subtask uses schemas the override
203  `Task.getSchemaCatalogs`, not this method.
204  """
205  schemaDict = self.getSchemaCatalogs()
206  for subtask in self._taskDict.values():
207  schemaDict.update(subtask.getSchemaCatalogs())
208  return schemaDict
209 

◆ getFullMetadata()

def lsst.pipe.base.task.Task.getFullMetadata (   self)
inherited
Get metadata for all tasks.

Returns
-------
metadata : `lsst.daf.base.PropertySet`
    The `~lsst.daf.base.PropertySet` keys are the full task name. Values are metadata
    for the top-level task and all subtasks, sub-subtasks, etc..

Notes
-----
The returned metadata includes timing information (if ``@timer.timeMethod`` is used)
and any metadata set by the task. The name of each item consists of the full task name
with ``.`` replaced by ``:``, followed by ``.`` and the name of the item, e.g.::

    topLevelTaskName:subtaskName:subsubtaskName.itemName

using ``:`` in the full task name disambiguates the rare situation that a task has a subtask
and a metadata item with the same name.

Definition at line 210 of file task.py.

210  def getFullMetadata(self):
211  """Get metadata for all tasks.
212 
213  Returns
214  -------
215  metadata : `lsst.daf.base.PropertySet`
216  The `~lsst.daf.base.PropertySet` keys are the full task name. Values are metadata
217  for the top-level task and all subtasks, sub-subtasks, etc..
218 
219  Notes
220  -----
221  The returned metadata includes timing information (if ``@timer.timeMethod`` is used)
222  and any metadata set by the task. The name of each item consists of the full task name
223  with ``.`` replaced by ``:``, followed by ``.`` and the name of the item, e.g.::
224 
225  topLevelTaskName:subtaskName:subsubtaskName.itemName
226 
227  using ``:`` in the full task name disambiguates the rare situation that a task has a subtask
228  and a metadata item with the same name.
229  """
230  fullMetadata = dafBase.PropertySet()
231  for fullName, task in self.getTaskDict().items():
232  fullMetadata.set(fullName.replace(".", ":"), task.metadata)
233  return fullMetadata
234 

◆ getFullName()

def lsst.pipe.base.task.Task.getFullName (   self)
inherited
Get the task name as a hierarchical name including parent task names.

Returns
-------
fullName : `str`
    The full name consists of the name of the parent task and each subtask separated by periods.
    For example:

    - The full name of top-level task "top" is simply "top".
    - The full name of subtask "sub" of top-level task "top" is "top.sub".
    - The full name of subtask "sub2" of subtask "sub" of top-level task "top" is "top.sub.sub2".

Definition at line 235 of file task.py.

235  def getFullName(self):
236  """Get the task name as a hierarchical name including parent task names.
237 
238  Returns
239  -------
240  fullName : `str`
241  The full name consists of the name of the parent task and each subtask separated by periods.
242  For example:
243 
244  - The full name of top-level task "top" is simply "top".
245  - The full name of subtask "sub" of top-level task "top" is "top.sub".
246  - The full name of subtask "sub2" of subtask "sub" of top-level task "top" is "top.sub.sub2".
247  """
248  return self._fullName
249 

◆ getName()

def lsst.pipe.base.task.Task.getName (   self)
inherited
Get the name of the task.

Returns
-------
taskName : `str`
    Name of the task.

See also
--------
getFullName

Definition at line 250 of file task.py.

250  def getName(self):
251  """Get the name of the task.
252 
253  Returns
254  -------
255  taskName : `str`
256  Name of the task.
257 
258  See also
259  --------
260  getFullName
261  """
262  return self._name
263 

◆ getSchema()

def lsst.meas.base.references.BaseReferencesTask.getSchema (   self,
  butler 
)
inherited
Return the schema for the reference sources.

Parameters
----------
butler : `lsst.daf.persistence.butler.Butler`
    Data butler from which the schema will be fetched.

Notes
-----
Must be available even before any data has been processed.

Definition at line 83 of file references.py.

83  def getSchema(self, butler):
84  """Return the schema for the reference sources.
85 
86  Parameters
87  ----------
88  butler : `lsst.daf.persistence.butler.Butler`
89  Data butler from which the schema will be fetched.
90 
91  Notes
92  -----
93  Must be available even before any data has been processed.
94  """
95  raise NotImplementedError("BaseReferencesTask is pure abstract, and cannot be used directly.")
96 

◆ getSchemaCatalogs()

def lsst.pipe.base.task.Task.getSchemaCatalogs (   self)
inherited
Get the schemas generated by this task.

Returns
-------
schemaCatalogs : `dict`
    Keys are butler dataset type, values are an empty catalog (an instance of the appropriate
    `lsst.afw.table` Catalog type) for this task.

Notes
-----

.. warning::

   Subclasses that use schemas must override this method. The default implemenation returns
   an empty dict.

This method may be called at any time after the Task is constructed, which means that all task
schemas should be computed at construction time, *not* when data is actually processed. This
reflects the philosophy that the schema should not depend on the data.

Returning catalogs rather than just schemas allows us to save e.g. slots for SourceCatalog as well.

See also
--------
Task.getAllSchemaCatalogs

Definition at line 159 of file task.py.

159  def getSchemaCatalogs(self):
160  """Get the schemas generated by this task.
161 
162  Returns
163  -------
164  schemaCatalogs : `dict`
165  Keys are butler dataset type, values are an empty catalog (an instance of the appropriate
166  `lsst.afw.table` Catalog type) for this task.
167 
168  Notes
169  -----
170 
171  .. warning::
172 
173  Subclasses that use schemas must override this method. The default implemenation returns
174  an empty dict.
175 
176  This method may be called at any time after the Task is constructed, which means that all task
177  schemas should be computed at construction time, *not* when data is actually processed. This
178  reflects the philosophy that the schema should not depend on the data.
179 
180  Returning catalogs rather than just schemas allows us to save e.g. slots for SourceCatalog as well.
181 
182  See also
183  --------
184  Task.getAllSchemaCatalogs
185  """
186  return {}
187 

◆ getTaskDict()

def lsst.pipe.base.task.Task.getTaskDict (   self)
inherited
Get a dictionary of all tasks as a shallow copy.

Returns
-------
taskDict : `dict`
    Dictionary containing full task name: task object for the top-level task and all subtasks,
    sub-subtasks, etc..

Definition at line 264 of file task.py.

264  def getTaskDict(self):
265  """Get a dictionary of all tasks as a shallow copy.
266 
267  Returns
268  -------
269  taskDict : `dict`
270  Dictionary containing full task name: task object for the top-level task and all subtasks,
271  sub-subtasks, etc..
272  """
273  return self._taskDict.copy()
274 

◆ getWcs()

def lsst.meas.base.references.CoaddSrcReferencesTask.getWcs (   self,
  dataRef 
)
Return the WCS for reference sources.

Parameters
----------
dataRef : `lsst.daf.persistence.ButlerDataRef`
    Butler data reference. Must includ the trac in its dataId.

Reimplemented from lsst.meas.base.references.BaseReferencesTask.

Definition at line 273 of file references.py.

273  def getWcs(self, dataRef):
274  """Return the WCS for reference sources.
275 
276  Parameters
277  ----------
278  dataRef : `lsst.daf.persistence.ButlerDataRef`
279  Butler data reference. Must includ the trac in its dataId.
280  """
281  skyMap = dataRef.get(self.config.coaddName + "Coadd_skyMap", immediate=True)
282  return skyMap[dataRef.dataId["tract"]].getWcs()
283 

◆ makeField()

def lsst.pipe.base.task.Task.makeField (   cls,
  doc 
)
inherited
Make a `lsst.pex.config.ConfigurableField` for this task.

Parameters
----------
doc : `str`
    Help text for the field.

Returns
-------
configurableField : `lsst.pex.config.ConfigurableField`
    A `~ConfigurableField` for this task.

Examples
--------
Provides a convenient way to specify this task is a subtask of another task.

Here is an example of use::

    class OtherTaskConfig(lsst.pex.config.Config)
aSubtask = ATaskClass.makeField("a brief description of what this task does")

Definition at line 329 of file task.py.

329  def makeField(cls, doc):
330  """Make a `lsst.pex.config.ConfigurableField` for this task.
331 
332  Parameters
333  ----------
334  doc : `str`
335  Help text for the field.
336 
337  Returns
338  -------
339  configurableField : `lsst.pex.config.ConfigurableField`
340  A `~ConfigurableField` for this task.
341 
342  Examples
343  --------
344  Provides a convenient way to specify this task is a subtask of another task.
345 
346  Here is an example of use::
347 
348  class OtherTaskConfig(lsst.pex.config.Config)
349  aSubtask = ATaskClass.makeField("a brief description of what this task does")
350  """
351  return ConfigurableField(doc=doc, target=cls)
352 

◆ makeSubtask()

def lsst.pipe.base.task.Task.makeSubtask (   self,
  name,
**  keyArgs 
)
inherited
Create a subtask as a new instance as the ``name`` attribute of this task.

Parameters
----------
name : `str`
    Brief name of the subtask.
keyArgs
    Extra keyword arguments used to construct the task. The following arguments are automatically
    provided and cannot be overridden:

    - "config".
    - "parentTask".

Notes
-----
The subtask must be defined by ``Task.config.name``, an instance of pex_config ConfigurableField
or RegistryField.

Definition at line 275 of file task.py.

275  def makeSubtask(self, name, **keyArgs):
276  """Create a subtask as a new instance as the ``name`` attribute of this task.
277 
278  Parameters
279  ----------
280  name : `str`
281  Brief name of the subtask.
282  keyArgs
283  Extra keyword arguments used to construct the task. The following arguments are automatically
284  provided and cannot be overridden:
285 
286  - "config".
287  - "parentTask".
288 
289  Notes
290  -----
291  The subtask must be defined by ``Task.config.name``, an instance of pex_config ConfigurableField
292  or RegistryField.
293  """
294  taskField = getattr(self.config, name, None)
295  if taskField is None:
296  raise KeyError(f"{self.getFullName()}'s config does not have field {name!r}")
297  subtask = taskField.apply(name=name, parentTask=self, **keyArgs)
298  setattr(self, name, subtask)
299 

◆ subset()

def lsst.meas.base.references.BaseReferencesTask.subset (   self,
  sources,
  bbox,
  wcs 
)
inherited
Filter a list of sources to only those within the bounding box.

Parameters
----------
sources : iterable of `~lsst.afw.table.SourceRecord`
    Reference sources. May be any Python iterable, including a lazy
    iterator.
bbox : `lsst.afw.geom.Box2I` or `lsst.afw.geom.Box2D`
    Defines the selection region.
wcs : `lsst.afw.image.SkyWcs`
    Maps ``bbox`` to sky coordinates.

Returns
-------
sources : iterable of `~lsst.afw.table.SourceRecord`
    Filtered sources. May be any Python iterable, including a lazy
    iterator.

Notes
-----
Instead of filtering sources directly via their positions, we filter
based on the positions of parent objects, then include or discard all
children based on their parent's status. This is necessary to support
replacement with noise in measurement, which requires all child
sources have their parent present.

This is not a part of the required `BaseReferencesTask` interface;
it's a convenience function used in implementing `fetchInBox` that may
be of use to subclasses.

Definition at line 162 of file references.py.

162  def subset(self, sources, bbox, wcs):
163  """Filter a list of sources to only those within the bounding box.
164 
165  Parameters
166  ----------
167  sources : iterable of `~lsst.afw.table.SourceRecord`
168  Reference sources. May be any Python iterable, including a lazy
169  iterator.
170  bbox : `lsst.afw.geom.Box2I` or `lsst.afw.geom.Box2D`
171  Defines the selection region.
172  wcs : `lsst.afw.image.SkyWcs`
173  Maps ``bbox`` to sky coordinates.
174 
175  Returns
176  -------
177  sources : iterable of `~lsst.afw.table.SourceRecord`
178  Filtered sources. May be any Python iterable, including a lazy
179  iterator.
180 
181  Notes
182  -----
183  Instead of filtering sources directly via their positions, we filter
184  based on the positions of parent objects, then include or discard all
185  children based on their parent's status. This is necessary to support
186  replacement with noise in measurement, which requires all child
187  sources have their parent present.
188 
189  This is not a part of the required `BaseReferencesTask` interface;
190  it's a convenience function used in implementing `fetchInBox` that may
191  be of use to subclasses.
192  """
193  boxD = lsst.geom.Box2D(bbox)
194  # We're passed an arbitrary iterable, but we need a catalog so we can
195  # iterate over parents and then children.
196  catalog = lsst.afw.table.SourceCatalog(self.schema)
197  catalog.extend(sources)
198  # catalog must be sorted by parent ID for lsst.afw.table.getChildren
199  # to work
201  # Iterate over objects that have no parent.
202  parentSources = catalog.getChildren(0)
203  skyCoordList = [source.getCoord() for source in parentSources]
204  pixelPosList = wcs.skyToPixel(skyCoordList)
205  for parent, pixel in zip(parentSources, pixelPosList):
206  if boxD.contains(pixel):
207  yield parent
208  for child in catalog.getChildren(parent.getId()):
209  yield child
210 
211 

◆ timer()

def lsst.pipe.base.task.Task.timer (   self,
  name,
  logLevel = Log.DEBUG 
)
inherited
Context manager to log performance data for an arbitrary block of code.

Parameters
----------
name : `str`
    Name of code being timed; data will be logged using item name: ``Start`` and ``End``.
logLevel
    A `lsst.log` level constant.

Examples
--------
Creating a timer context::

    with self.timer("someCodeToTime"):
pass  # code to time

See also
--------
timer.logInfo

Definition at line 301 of file task.py.

301  def timer(self, name, logLevel=Log.DEBUG):
302  """Context manager to log performance data for an arbitrary block of code.
303 
304  Parameters
305  ----------
306  name : `str`
307  Name of code being timed; data will be logged using item name: ``Start`` and ``End``.
308  logLevel
309  A `lsst.log` level constant.
310 
311  Examples
312  --------
313  Creating a timer context::
314 
315  with self.timer("someCodeToTime"):
316  pass # code to time
317 
318  See also
319  --------
320  timer.logInfo
321  """
322  logInfo(obj=self, prefix=name + "Start", logLevel=logLevel)
323  try:
324  yield
325  finally:
326  logInfo(obj=self, prefix=name + "End", logLevel=logLevel)
327 

Member Data Documentation

◆ config

lsst.pipe.base.task.Task.config
inherited

Definition at line 149 of file task.py.

◆ ConfigClass

lsst.meas.base.references.CoaddSrcReferencesTask.ConfigClass = CoaddSrcReferencesConfig
static

Definition at line 257 of file references.py.

◆ datasetSuffix

string lsst.meas.base.references.CoaddSrcReferencesTask.datasetSuffix = "src"
static

Definition at line 261 of file references.py.

◆ log

lsst.pipe.base.task.Task.log
inherited

Definition at line 148 of file task.py.

◆ metadata

lsst.pipe.base.task.Task.metadata
inherited

Definition at line 121 of file task.py.

◆ schema

lsst.meas.base.references.CoaddSrcReferencesTask.schema

Definition at line 271 of file references.py.


The documentation for this class was generated from the following file:
lsst::log.log.logContinued.info
def info(fmt, *args)
Definition: logContinued.py:198
pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174
lsst::daf::base::PropertyList
Class for storing ordered metadata with comments.
Definition: PropertyList.h:68
lsst::afw::table::SourceTable::getParentKey
static Key< RecordId > getParentKey()
Key for the parent ID.
Definition: Source.h:275
lsst.pipe.base.argumentParser.getTaskDict
def getTaskDict(config, taskDict=None, baseName="")
Definition: argumentParser.py:921
lsst::afw::table._source.SourceCatalog
Definition: _source.py:33
lsst.pipe.base.task.TaskError
Definition: task.py:33
lsst.pipe.base.timer.logInfo
def logInfo(obj, prefix, logLevel=Log.DEBUG)
Definition: timer.py:62
items
std::vector< SchemaItem< Flag > > * items
Definition: BaseColumnView.cc:142
lsst::daf::base::PropertySet
Class for storing generic metadata.
Definition: PropertySet.h:67
lsst::geom::Box2D
A floating-point coordinate rectangle geometry.
Definition: Box.h:413