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.pipe.tasks.characterizeImage.CharacterizeImageTask Class Reference

Measure bright sources and use this to estimate background and PSF of an exposure. More...

Inheritance diagram for lsst.pipe.tasks.characterizeImage.CharacterizeImageTask:

Public Member Functions

def runQuantum (self, butlerQC, inputRefs, outputRefs)
 
def __init__ (self, butler=None, refObjLoader=None, schema=None, **kwargs)
 Construct a CharacterizeImageTask. More...
 
def getInitOutputDatasets (self)
 
def runDataRef (self, dataRef, exposure=None, background=None, doUnpersist=True)
 Characterize a science image and, if wanted, persist the results. More...
 
def run (self, exposure, exposureIdInfo=None, background=None)
 Characterize a science image. More...
 
def detectMeasureAndEstimatePsf (self, exposure, exposureIdInfo, background)
 Perform one iteration of detect, measure and estimate PSF. More...
 
def getSchemaCatalogs (self)
 
def display (self, itemName, exposure, sourceCat=None)
 

Public Attributes

 schema
 
 algMetadata
 
 outputSchema
 

Static Public Attributes

 ConfigClass = CharacterizeImageConfig
 
 RunnerClass = pipeBase.ButlerInitializedTaskRunner
 

Detailed Description

Measure bright sources and use this to estimate background and PSF of an exposure.

@anchor CharacterizeImageTask_

@section pipe_tasks_characterizeImage_Contents  Contents

 - @ref pipe_tasks_characterizeImage_Purpose
 - @ref pipe_tasks_characterizeImage_Initialize
 - @ref pipe_tasks_characterizeImage_IO
 - @ref pipe_tasks_characterizeImage_Config
 - @ref pipe_tasks_characterizeImage_Debug


@section pipe_tasks_characterizeImage_Purpose  Description

Given an exposure with defects repaired (masked and interpolated over, e.g. as output by IsrTask):
- detect and measure bright sources
- repair cosmic rays
- measure and subtract background
- measure PSF

@section pipe_tasks_characterizeImage_Initialize  Task initialisation

@copydoc \_\_init\_\_

@section pipe_tasks_characterizeImage_IO  Invoking the Task

If you want this task to unpersist inputs or persist outputs, then call
the `runDataRef` method (a thin wrapper around the `run` method).

If you already have the inputs unpersisted and do not want to persist the output
then it is more direct to call the `run` method:

@section pipe_tasks_characterizeImage_Config  Configuration parameters

See @ref CharacterizeImageConfig

@section pipe_tasks_characterizeImage_Debug  Debug variables

The @link lsst.pipe.base.cmdLineTask.CmdLineTask command line task@endlink interface supports a flag
`--debug` to import `debug.py` from your `$PYTHONPATH`; see @ref baseDebug for more about `debug.py`.

CharacterizeImageTask has a debug dictionary with the following keys:
<dl>
<dt>frame
<dd>int: if specified, the frame of first debug image displayed (defaults to 1)
<dt>repair_iter
<dd>bool; if True display image after each repair in the measure PSF loop
<dt>background_iter
<dd>bool; if True display image after each background subtraction in the measure PSF loop
<dt>measure_iter
<dd>bool; if True display image and sources at the end of each iteration of the measure PSF loop
    See @ref lsst.meas.astrom.displayAstrometry for the meaning of the various symbols.
<dt>psf
<dd>bool; if True display image and sources after PSF is measured;
    this will be identical to the final image displayed by measure_iter if measure_iter is true
<dt>repair
<dd>bool; if True display image and sources after final repair
<dt>measure
<dd>bool; if True display image and sources after final measurement
</dl>

For example, put something like:
@code{.py}
    import lsstDebug
    def DebugInfo(name):
        di = lsstDebug.getInfo(name)  # N.b. lsstDebug.Info(name) would call us recursively
        if name == "lsst.pipe.tasks.characterizeImage":
            di.display = dict(
                repair = True,
            )

        return di

    lsstDebug.Info = DebugInfo
@endcode
into your `debug.py` file and run `calibrateTask.py` with the `--debug` flag.

Some subtasks may have their own debug variables; see individual Task documentation.

Definition at line 251 of file characterizeImage.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.__init__ (   self,
  butler = None,
  refObjLoader = None,
  schema = None,
**  kwargs 
)

Construct a CharacterizeImageTask.

    @param[in] butler  A butler object is passed to the refObjLoader constructor in case
        it is needed to load catalogs.  May be None if a catalog-based star selector is
        not used, if the reference object loader constructor does not require a butler,
        or if a reference object loader is passed directly via the refObjLoader argument.
    @param[in] refObjLoader  An instance of LoadReferenceObjectsTasks that supplies an
        external reference catalog to a catalog-based star selector.  May be None if a
        catalog star selector is not used or the loader can be constructed from the
        butler argument.
    @param[in,out] schema  initial schema (an lsst.afw.table.SourceTable), or None
    @param[in,out] kwargs  other keyword arguments for lsst.pipe.base.CmdLineTask

Definition at line 346 of file characterizeImage.py.

346  def __init__(self, butler=None, refObjLoader=None, schema=None, **kwargs):
347  """!Construct a CharacterizeImageTask
348 
349  @param[in] butler A butler object is passed to the refObjLoader constructor in case
350  it is needed to load catalogs. May be None if a catalog-based star selector is
351  not used, if the reference object loader constructor does not require a butler,
352  or if a reference object loader is passed directly via the refObjLoader argument.
353  @param[in] refObjLoader An instance of LoadReferenceObjectsTasks that supplies an
354  external reference catalog to a catalog-based star selector. May be None if a
355  catalog star selector is not used or the loader can be constructed from the
356  butler argument.
357  @param[in,out] schema initial schema (an lsst.afw.table.SourceTable), or None
358  @param[in,out] kwargs other keyword arguments for lsst.pipe.base.CmdLineTask
359  """
360  super().__init__(**kwargs)
361 
362  if schema is None:
363  schema = SourceTable.makeMinimalSchema()
364  self.schema = schema
365  self.makeSubtask("background")
366  self.makeSubtask("installSimplePsf")
367  self.makeSubtask("repair")
368  self.makeSubtask("measurePsf", schema=self.schema)
369  if self.config.doMeasurePsf and self.measurePsf.usesMatches:
370  if not refObjLoader:
371  self.makeSubtask('refObjLoader', butler=butler)
372  refObjLoader = self.refObjLoader
373  self.makeSubtask("ref_match", refObjLoader=refObjLoader)
374  self.algMetadata = dafBase.PropertyList()
375  self.makeSubtask('detection', schema=self.schema)
376  if self.config.doDeblend:
377  self.makeSubtask("deblend", schema=self.schema)
378  self.makeSubtask('measurement', schema=self.schema, algMetadata=self.algMetadata)
379  if self.config.doApCorr:
380  self.makeSubtask('measureApCorr', schema=self.schema)
381  self.makeSubtask('applyApCorr', schema=self.schema)
382  self.makeSubtask('catalogCalculation', schema=self.schema)
383  self._initialFrame = getDebugFrame(self._display, "frame") or 1
384  self._frame = self._initialFrame
385  self.schema.checkUnits(parse_strict=self.config.checkUnitsParseStrict)
386  self.outputSchema = afwTable.SourceCatalog(self.schema)
387 
Class for storing ordered metadata with comments.
Definition: PropertyList.h:68
def getDebugFrame(debugDisplay, name)
Definition: lsstDebug.py:95

Member Function Documentation

◆ detectMeasureAndEstimatePsf()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.detectMeasureAndEstimatePsf (   self,
  exposure,
  exposureIdInfo,
  background 
)

Perform one iteration of detect, measure and estimate PSF.

    Performs the following operations:
    - if config.doMeasurePsf or not exposure.hasPsf():
        - install a simple PSF model (replacing the existing one, if need be)
    - interpolate over cosmic rays with keepCRs=True
    - estimate background and subtract it from the exposure
    - detect, deblend and measure sources, and subtract a refined background model;
    - if config.doMeasurePsf:
        - measure PSF

    @param[in,out] exposure  exposure to characterize (an lsst.afw.image.ExposureF or similar)
        The following changes are made:
        - update or set psf
        - update detection and cosmic ray mask planes
        - subtract background
    @param[in] exposureIdInfo  ID info for exposure (an lsst.obs_base.ExposureIdInfo)
    @param[in,out] background  initial model of background already subtracted from exposure
        (an lsst.afw.math.BackgroundList).

    @return pipe_base Struct containing these fields, all from the final iteration
    of detect sources, measure sources and estimate PSF:
    - exposure  characterized exposure; image is repaired by interpolating over cosmic rays,
        mask is updated accordingly, and the PSF model is set
    - sourceCat  detected sources (an lsst.afw.table.SourceCatalog)
    - background  model of background subtracted from exposure (an lsst.afw.math.BackgroundList)
    - psfCellSet  spatial cells of PSF candidates (an lsst.afw.math.SpatialCellSet)

Definition at line 531 of file characterizeImage.py.

531  def detectMeasureAndEstimatePsf(self, exposure, exposureIdInfo, background):
532  """!Perform one iteration of detect, measure and estimate PSF
533 
534  Performs the following operations:
535  - if config.doMeasurePsf or not exposure.hasPsf():
536  - install a simple PSF model (replacing the existing one, if need be)
537  - interpolate over cosmic rays with keepCRs=True
538  - estimate background and subtract it from the exposure
539  - detect, deblend and measure sources, and subtract a refined background model;
540  - if config.doMeasurePsf:
541  - measure PSF
542 
543  @param[in,out] exposure exposure to characterize (an lsst.afw.image.ExposureF or similar)
544  The following changes are made:
545  - update or set psf
546  - update detection and cosmic ray mask planes
547  - subtract background
548  @param[in] exposureIdInfo ID info for exposure (an lsst.obs_base.ExposureIdInfo)
549  @param[in,out] background initial model of background already subtracted from exposure
550  (an lsst.afw.math.BackgroundList).
551 
552  @return pipe_base Struct containing these fields, all from the final iteration
553  of detect sources, measure sources and estimate PSF:
554  - exposure characterized exposure; image is repaired by interpolating over cosmic rays,
555  mask is updated accordingly, and the PSF model is set
556  - sourceCat detected sources (an lsst.afw.table.SourceCatalog)
557  - background model of background subtracted from exposure (an lsst.afw.math.BackgroundList)
558  - psfCellSet spatial cells of PSF candidates (an lsst.afw.math.SpatialCellSet)
559  """
560  # install a simple PSF model, if needed or wanted
561  if not exposure.hasPsf() or (self.config.doMeasurePsf and self.config.useSimplePsf):
562  self.log.info("PSF estimation initialized with 'simple' PSF")
563  self.installSimplePsf.run(exposure=exposure)
564 
565  # run repair, but do not interpolate over cosmic rays (do that elsewhere, with the final PSF model)
566  if self.config.requireCrForPsf:
567  self.repair.run(exposure=exposure, keepCRs=True)
568  else:
569  try:
570  self.repair.run(exposure=exposure, keepCRs=True)
571  except LengthError:
572  self.log.warning("Skipping cosmic ray detection: Too many CR pixels (max %0.f)",
573  self.config.repair.cosmicray.nCrPixelMax)
574 
575  self.display("repair_iter", exposure=exposure)
576 
577  if background is None:
578  background = BackgroundList()
579 
580  sourceIdFactory = exposureIdInfo.makeSourceIdFactory()
581  table = SourceTable.make(self.schema, sourceIdFactory)
582  table.setMetadata(self.algMetadata)
583 
584  detRes = self.detection.run(table=table, exposure=exposure, doSmooth=True)
585  sourceCat = detRes.sources
586  if detRes.fpSets.background:
587  for bg in detRes.fpSets.background:
588  background.append(bg)
589 
590  if self.config.doDeblend:
591  self.deblend.run(exposure=exposure, sources=sourceCat)
592 
593  self.measurement.run(measCat=sourceCat, exposure=exposure, exposureId=exposureIdInfo.expId)
594 
595  measPsfRes = pipeBase.Struct(cellSet=None)
596  if self.config.doMeasurePsf:
597  if self.measurePsf.usesMatches:
598  matches = self.ref_match.loadAndMatch(exposure=exposure, sourceCat=sourceCat).matches
599  else:
600  matches = None
601  measPsfRes = self.measurePsf.run(exposure=exposure, sources=sourceCat, matches=matches,
602  expId=exposureIdInfo.expId)
603  self.display("measure_iter", exposure=exposure, sourceCat=sourceCat)
604 
605  return pipeBase.Struct(
606  exposure=exposure,
607  sourceCat=sourceCat,
608  background=background,
609  psfCellSet=measPsfRes.cellSet,
610  )
611 
def run(self, coaddExposures, bbox, wcs)
Definition: getTemplate.py:603

◆ display()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.display (   self,
  itemName,
  exposure,
  sourceCat = None 
)
Display exposure and sources on next frame, if display of itemName has been requested

@param[in] itemName  name of item in debugInfo
@param[in] exposure  exposure to display
@param[in] sourceCat  source catalog to display

Definition at line 619 of file characterizeImage.py.

619  def display(self, itemName, exposure, sourceCat=None):
620  """Display exposure and sources on next frame, if display of itemName has been requested
621 
622  @param[in] itemName name of item in debugInfo
623  @param[in] exposure exposure to display
624  @param[in] sourceCat source catalog to display
625  """
626  val = getDebugFrame(self._display, itemName)
627  if not val:
628  return
629 
630  displayAstrometry(exposure=exposure, sourceCat=sourceCat, frame=self._frame, pause=False)
631  self._frame += 1
def displayAstrometry(refCat=None, sourceCat=None, distortedCentroidKey=None, bbox=None, exposure=None, matches=None, frame=1, title="", pause=True)
Definition: display.py:34

◆ getInitOutputDatasets()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.getInitOutputDatasets (   self)

Definition at line 388 of file characterizeImage.py.

388  def getInitOutputDatasets(self):
389  outputCatSchema = afwTable.SourceCatalog(self.schema)
390  outputCatSchema.getTable().setMetadata(self.algMetadata)
391  return {'outputSchema': outputCatSchema}
392 

◆ getSchemaCatalogs()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.getSchemaCatalogs (   self)
Return a dict of empty catalogs for each catalog dataset produced by this task.

Definition at line 612 of file characterizeImage.py.

612  def getSchemaCatalogs(self):
613  """Return a dict of empty catalogs for each catalog dataset produced by this task.
614  """
615  sourceCat = SourceCatalog(self.schema)
616  sourceCat.getTable().setMetadata(self.algMetadata)
617  return {"icSrc": sourceCat}
618 
SortedCatalogT< SourceRecord > SourceCatalog
Definition: fwd.h:85

◆ run()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.run (   self,
  exposure,
  exposureIdInfo = None,
  background = None 
)

Characterize a science image.

    Peforms the following operations:
    - Iterate the following config.psfIterations times, or once if config.doMeasurePsf false:
        - detect and measure sources and estimate PSF (see detectMeasureAndEstimatePsf for details)
    - interpolate over cosmic rays
    - perform final measurement

    @param[in,out] exposure  exposure to characterize (an lsst.afw.image.ExposureF or similar).
        The following changes are made:
        - update or set psf
        - set apCorrMap
        - update detection and cosmic ray mask planes
        - subtract background and interpolate over cosmic rays
    @param[in] exposureIdInfo  ID info for exposure (an lsst.obs.base.ExposureIdInfo).
        If not provided, returned SourceCatalog IDs will not be globally unique.
    @param[in,out] background  initial model of background already subtracted from exposure
        (an lsst.afw.math.BackgroundList). May be None if no background has been subtracted,
        which is typical for image characterization.

    @return pipe_base Struct containing these fields, all from the final iteration
    of detectMeasureAndEstimatePsf:
    - exposure: characterized exposure; image is repaired by interpolating over cosmic rays,
        mask is updated accordingly, and the PSF model is set
    - sourceCat: detected sources (an lsst.afw.table.SourceCatalog)
    - background: model of background subtracted from exposure (an lsst.afw.math.BackgroundList)
    - psfCellSet: spatial cells of PSF candidates (an lsst.afw.math.SpatialCellSet)

Definition at line 446 of file characterizeImage.py.

446  def run(self, exposure, exposureIdInfo=None, background=None):
447  """!Characterize a science image
448 
449  Peforms the following operations:
450  - Iterate the following config.psfIterations times, or once if config.doMeasurePsf false:
451  - detect and measure sources and estimate PSF (see detectMeasureAndEstimatePsf for details)
452  - interpolate over cosmic rays
453  - perform final measurement
454 
455  @param[in,out] exposure exposure to characterize (an lsst.afw.image.ExposureF or similar).
456  The following changes are made:
457  - update or set psf
458  - set apCorrMap
459  - update detection and cosmic ray mask planes
460  - subtract background and interpolate over cosmic rays
461  @param[in] exposureIdInfo ID info for exposure (an lsst.obs.base.ExposureIdInfo).
462  If not provided, returned SourceCatalog IDs will not be globally unique.
463  @param[in,out] background initial model of background already subtracted from exposure
464  (an lsst.afw.math.BackgroundList). May be None if no background has been subtracted,
465  which is typical for image characterization.
466 
467  @return pipe_base Struct containing these fields, all from the final iteration
468  of detectMeasureAndEstimatePsf:
469  - exposure: characterized exposure; image is repaired by interpolating over cosmic rays,
470  mask is updated accordingly, and the PSF model is set
471  - sourceCat: detected sources (an lsst.afw.table.SourceCatalog)
472  - background: model of background subtracted from exposure (an lsst.afw.math.BackgroundList)
473  - psfCellSet: spatial cells of PSF candidates (an lsst.afw.math.SpatialCellSet)
474  """
475  self._frame = self._initialFrame # reset debug display frame
476 
477  if not self.config.doMeasurePsf and not exposure.hasPsf():
478  self.log.info("CharacterizeImageTask initialized with 'simple' PSF.")
479  self.installSimplePsf.run(exposure=exposure)
480 
481  if exposureIdInfo is None:
482  exposureIdInfo = ExposureIdInfo()
483 
484  # subtract an initial estimate of background level
485  background = self.background.run(exposure).background
486 
487  psfIterations = self.config.psfIterations if self.config.doMeasurePsf else 1
488  for i in range(psfIterations):
489  dmeRes = self.detectMeasureAndEstimatePsf(
490  exposure=exposure,
491  exposureIdInfo=exposureIdInfo,
492  background=background,
493  )
494 
495  psf = dmeRes.exposure.getPsf()
496  psfSigma = psf.computeShape().getDeterminantRadius()
497  psfDimensions = psf.computeImage().getDimensions()
498  medBackground = np.median(dmeRes.background.getImage().getArray())
499  self.log.info("iter %s; PSF sigma=%0.2f, dimensions=%s; median background=%0.2f",
500  i + 1, psfSigma, psfDimensions, medBackground)
501 
502  self.display("psf", exposure=dmeRes.exposure, sourceCat=dmeRes.sourceCat)
503 
504  # perform final repair with final PSF
505  self.repair.run(exposure=dmeRes.exposure)
506  self.display("repair", exposure=dmeRes.exposure, sourceCat=dmeRes.sourceCat)
507 
508  # perform final measurement with final PSF, including measuring and applying aperture correction,
509  # if wanted
510  self.measurement.run(measCat=dmeRes.sourceCat, exposure=dmeRes.exposure,
511  exposureId=exposureIdInfo.expId)
512  if self.config.doApCorr:
513  apCorrMap = self.measureApCorr.run(exposure=dmeRes.exposure, catalog=dmeRes.sourceCat).apCorrMap
514  dmeRes.exposure.getInfo().setApCorrMap(apCorrMap)
515  self.applyApCorr.run(catalog=dmeRes.sourceCat, apCorrMap=exposure.getInfo().getApCorrMap())
516  self.catalogCalculation.run(dmeRes.sourceCat)
517 
518  self.display("measure", exposure=dmeRes.exposure, sourceCat=dmeRes.sourceCat)
519 
520  return pipeBase.Struct(
521  exposure=dmeRes.exposure,
522  sourceCat=dmeRes.sourceCat,
523  background=dmeRes.background,
524  psfCellSet=dmeRes.psfCellSet,
525 
526  characterized=dmeRes.exposure,
527  backgroundModel=dmeRes.background
528  )
529 

◆ runDataRef()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.runDataRef (   self,
  dataRef,
  exposure = None,
  background = None,
  doUnpersist = True 
)

Characterize a science image and, if wanted, persist the results.

    This simply unpacks the exposure and passes it to the characterize method to do the work.

    @param[in] dataRef: butler data reference for science exposure
    @param[in,out] exposure  exposure to characterize (an lsst.afw.image.ExposureF or similar).
        If None then unpersist from "postISRCCD".
        The following changes are made, depending on the config:
        - set psf to the measured PSF
        - set apCorrMap to the measured aperture correction
        - subtract background
        - interpolate over cosmic rays
        - update detection and cosmic ray mask planes
    @param[in,out] background  initial model of background already subtracted from exposure
        (an lsst.afw.math.BackgroundList). May be None if no background has been subtracted,
        which is typical for image characterization.
        A refined background model is output.
    @param[in] doUnpersist  if True the exposure is read from the repository
        and the exposure and background arguments must be None;
        if False the exposure must be provided.
        True is intended for running as a command-line task, False for running as a subtask

    @return same data as the characterize method

Definition at line 394 of file characterizeImage.py.

394  def runDataRef(self, dataRef, exposure=None, background=None, doUnpersist=True):
395  """!Characterize a science image and, if wanted, persist the results
396 
397  This simply unpacks the exposure and passes it to the characterize method to do the work.
398 
399  @param[in] dataRef: butler data reference for science exposure
400  @param[in,out] exposure exposure to characterize (an lsst.afw.image.ExposureF or similar).
401  If None then unpersist from "postISRCCD".
402  The following changes are made, depending on the config:
403  - set psf to the measured PSF
404  - set apCorrMap to the measured aperture correction
405  - subtract background
406  - interpolate over cosmic rays
407  - update detection and cosmic ray mask planes
408  @param[in,out] background initial model of background already subtracted from exposure
409  (an lsst.afw.math.BackgroundList). May be None if no background has been subtracted,
410  which is typical for image characterization.
411  A refined background model is output.
412  @param[in] doUnpersist if True the exposure is read from the repository
413  and the exposure and background arguments must be None;
414  if False the exposure must be provided.
415  True is intended for running as a command-line task, False for running as a subtask
416 
417  @return same data as the characterize method
418  """
419  self._frame = self._initialFrame # reset debug display frame
420  self.log.info("Processing %s", dataRef.dataId)
421 
422  if doUnpersist:
423  if exposure is not None or background is not None:
424  raise RuntimeError("doUnpersist true; exposure and background must be None")
425  exposure = dataRef.get("postISRCCD", immediate=True)
426  elif exposure is None:
427  raise RuntimeError("doUnpersist false; exposure must be provided")
428 
429  exposureIdInfo = dataRef.get("expIdInfo")
430 
431  charRes = self.run(
432  exposure=exposure,
433  exposureIdInfo=exposureIdInfo,
434  background=background,
435  )
436 
437  if self.config.doWrite:
438  dataRef.put(charRes.sourceCat, "icSrc")
439  if self.config.doWriteExposure:
440  dataRef.put(charRes.exposure, "icExp")
441  dataRef.put(charRes.background, "icExpBackground")
442 
443  return charRes
444 

◆ runQuantum()

def lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.runQuantum (   self,
  butlerQC,
  inputRefs,
  outputRefs 
)

Definition at line 339 of file characterizeImage.py.

339  def runQuantum(self, butlerQC, inputRefs, outputRefs):
340  inputs = butlerQC.get(inputRefs)
341  if 'exposureIdInfo' not in inputs.keys():
342  inputs['exposureIdInfo'] = ExposureIdInfo.fromDataId(butlerQC.quantum.dataId, "visit_detector")
343  outputs = self.run(**inputs)
344  butlerQC.put(outputs, outputRefs)
345 

Member Data Documentation

◆ algMetadata

lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.algMetadata

Definition at line 374 of file characterizeImage.py.

◆ ConfigClass

lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.ConfigClass = CharacterizeImageConfig
static

Definition at line 335 of file characterizeImage.py.

◆ outputSchema

lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.outputSchema

Definition at line 386 of file characterizeImage.py.

◆ RunnerClass

lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.RunnerClass = pipeBase.ButlerInitializedTaskRunner
static

Definition at line 337 of file characterizeImage.py.

◆ schema

lsst.pipe.tasks.characterizeImage.CharacterizeImageTask.schema

Definition at line 364 of file characterizeImage.py.


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