LSST Applications g0265f82a02+0e5473021a,g02d81e74bb+bd2ed33bd6,g1470d8bcf6+c6d6eb38e2,g14a832a312+9d12ad093c,g2079a07aa2+86d27d4dc4,g2305ad1205+91a32aca49,g295015adf3+88246b6574,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g3ddfee87b4+c34e8be1fa,g487adcacf7+85dcfbcc36,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+ea1711114f,g5a732f18d5+53520f316c,g64a986408d+bd2ed33bd6,g858d7b2824+bd2ed33bd6,g8a8a8dda67+585e252eca,g99cad8db69+016a06b37a,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+ef4e3a5875,gb0e22166c9+60f28cb32d,gb6a65358fc+0e5473021a,gba4ed39666+c2a2e4ac27,gbb8dafda3b+b6d7b42999,gc120e1dc64+f745648b3a,gc28159a63d+0e5473021a,gcf0d15dbbd+c34e8be1fa,gdaeeff99f8+f9a426f77a,ge6526c86ff+508d0e0a30,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gf18bd8381d+8d59551888,gf1cff7945b+bd2ed33bd6,w.2024.16
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | Static Protected Attributes | List of all members
lsst.pipe.tasks.calibrate.CalibrateTask Class Reference
Inheritance diagram for lsst.pipe.tasks.calibrate.CalibrateTask:

Public Member Functions

 __init__ (self, astromRefObjLoader=None, photoRefObjLoader=None, icSourceSchema=None, initInputs=None, **kwargs)
 
 runQuantum (self, butlerQC, inputRefs, outputRefs)
 
 run (self, exposure, background=None, icSourceCat=None, idGenerator=None)
 
 setMetadata (self, exposure, photoRes=None)
 
 copyIcSourceFields (self, icSourceCat, sourceCat)
 

Public Attributes

 schemaMapper
 
 calibSourceKey
 
 schema
 
 algMetadata
 
 skySourceKey
 
 outputSchema
 

Static Public Attributes

 ConfigClass = CalibrateConfig
 

Static Protected Attributes

str _DefaultName = "calibrate"
 

Detailed Description

Calibrate an exposure: measure sources and perform astrometric and
photometric calibration.

Given an exposure with a good PSF model and aperture correction map(e.g. as
provided by `~lsst.pipe.tasks.characterizeImage.CharacterizeImageTask`),
perform the following operations:
- Run detection and measurement
- Run astrometry subtask to fit an improved WCS
- Run photoCal subtask to fit the exposure's photometric zero-point

Parameters
----------
butler : `None`
    Compatibility parameter. Should always be `None`.
astromRefObjLoader : `lsst.meas.algorithms.ReferenceObjectLoader`, optional
    Unused in gen3: must be `None`.
photoRefObjLoader : `lsst.meas.algorithms.ReferenceObjectLoader`, optional
    Unused in gen3: must be `None`.
icSourceSchema : `lsst.afw.table.Schema`, optional
    Schema for the icSource catalog.
initInputs : `dict`, optional
    Dictionary that can contain a key ``icSourceSchema`` containing the
    input schema. If present will override the value of ``icSourceSchema``.

Raises
------
RuntimeError
    Raised if any of the following occur:
    - isSourceCat is missing fields specified in icSourceFieldsToCopy.
    - PipelineTask form of this task is initialized with reference object
      loaders.

Notes
-----
Quantities set in exposure Metadata:

MAGZERO_RMS
    MAGZERO's RMS == sigma reported by photoCal task
MAGZERO_NOBJ
    Number of stars used == ngood reported by photoCal task
COLORTERM1
    ?? (always 0.0)
COLORTERM2
    ?? (always 0.0)
COLORTERM3
    ?? (always 0.0)

Debugging:
CalibrateTask has a debug dictionary containing one key:

calibrate
    frame (an int; <= 0 to not display) in which to display the exposure,
    sources and matches. See @ref lsst.meas.astrom.displayAstrometry for
    the meaning of the various symbols.

Definition at line 355 of file calibrate.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.pipe.tasks.calibrate.CalibrateTask.__init__ ( self,
astromRefObjLoader = None,
photoRefObjLoader = None,
icSourceSchema = None,
initInputs = None,
** kwargs )

Definition at line 415 of file calibrate.py.

417 initInputs=None, **kwargs):
418 super().__init__(**kwargs)
419
420 if initInputs is not None:
421 icSourceSchema = initInputs['icSourceSchema'].schema
422
423 if icSourceSchema is not None:
424 # use a schema mapper to avoid copying each field separately
425 self.schemaMapper = afwTable.SchemaMapper(icSourceSchema)
426 minimumSchema = afwTable.SourceTable.makeMinimalSchema()
427 self.schemaMapper.addMinimalSchema(minimumSchema, False)
428
429 # Add fields to copy from an icSource catalog
430 # and a field to indicate that the source matched a source in that
431 # catalog. If any fields are missing then raise an exception, but
432 # first find all missing fields in order to make the error message
433 # more useful.
434 self.calibSourceKey = self.schemaMapper.addOutputField(
435 afwTable.Field["Flag"]("calib_detected",
436 "Source was detected as an icSource"))
437 missingFieldNames = []
438 for fieldName in self.config.icSourceFieldsToCopy:
439 try:
440 schemaItem = icSourceSchema.find(fieldName)
441 except Exception:
442 missingFieldNames.append(fieldName)
443 else:
444 # field found; if addMapping fails then raise an exception
445 self.schemaMapper.addMapping(schemaItem.getKey())
446
447 if missingFieldNames:
448 raise RuntimeError("isSourceCat is missing fields {} "
449 "specified in icSourceFieldsToCopy"
450 .format(missingFieldNames))
451
452 # produce a temporary schema to pass to the subtasks; finalize it
453 # later
454 self.schema = self.schemaMapper.editOutputSchema()
455 else:
456 self.schemaMapper = None
457 self.schema = afwTable.SourceTable.makeMinimalSchema()
458 afwTable.CoordKey.addErrorFields(self.schema)
459 self.makeSubtask('detection', schema=self.schema)
460
461 self.algMetadata = dafBase.PropertyList()
462
463 if self.config.doDeblend:
464 self.makeSubtask("deblend", schema=self.schema)
465 if self.config.doSkySources:
466 self.makeSubtask("skySources")
467 self.skySourceKey = self.schema.addField("sky_source", type="Flag", doc="Sky objects.")
468 self.makeSubtask('measurement', schema=self.schema,
469 algMetadata=self.algMetadata)
470 self.makeSubtask('postCalibrationMeasurement', schema=self.schema,
471 algMetadata=self.algMetadata)
472 self.makeSubtask("setPrimaryFlags", schema=self.schema, isSingleFrame=True)
473 if self.config.doApCorr:
474 self.makeSubtask('applyApCorr', schema=self.schema)
475 self.makeSubtask('catalogCalculation', schema=self.schema)
476
477 if self.config.doAstrometry:
478 self.makeSubtask("astrometry", refObjLoader=astromRefObjLoader,
479 schema=self.schema)
480 if self.config.doPhotoCal:
481 self.makeSubtask("photoCal", refObjLoader=photoRefObjLoader,
482 schema=self.schema)
483 if self.config.doComputeSummaryStats:
484 self.makeSubtask('computeSummaryStats')
485 if self.config.doCreateSummaryMetrics:
486 self.makeSubtask('createSummaryMetrics')
487
488 if initInputs is not None and (astromRefObjLoader is not None or photoRefObjLoader is not None):
489 raise RuntimeError("PipelineTask form of this task should not be initialized with "
490 "reference object loaders.")
491
492 if self.schemaMapper is not None:
493 # finalize the schema
494 self.schema = self.schemaMapper.getOutputSchema()
495 self.schema.checkUnits(parse_strict=self.config.checkUnitsParseStrict)
496
497 sourceCatSchema = afwTable.SourceCatalog(self.schema)
498 sourceCatSchema.getTable().setMetadata(self.algMetadata)
499 self.outputSchema = sourceCatSchema
500
A mapping between the keys of two Schemas, used to copy data between them.
Class for storing ordered metadata with comments.
A description of a field in a table.
Definition Field.h:24

Member Function Documentation

◆ copyIcSourceFields()

lsst.pipe.tasks.calibrate.CalibrateTask.copyIcSourceFields ( self,
icSourceCat,
sourceCat )
Match sources in an icSourceCat and a sourceCat and copy fields.

The fields copied are those specified by
``config.icSourceFieldsToCopy``.

Parameters
----------
icSourceCat : `lsst.afw.table.SourceCatalog`
    Catalog from which to copy fields.
sourceCat : `lsst.afw.table.SourceCatalog`
    Catalog to which to copy fields.

Raises
------
RuntimeError
    Raised if any of the following occur:
    - icSourceSchema and icSourceKeys are not specified.
    - icSourceCat and sourceCat are not specified.
    - icSourceFieldsToCopy is empty.

Definition at line 752 of file calibrate.py.

752 def copyIcSourceFields(self, icSourceCat, sourceCat):
753 """Match sources in an icSourceCat and a sourceCat and copy fields.
754
755 The fields copied are those specified by
756 ``config.icSourceFieldsToCopy``.
757
758 Parameters
759 ----------
760 icSourceCat : `lsst.afw.table.SourceCatalog`
761 Catalog from which to copy fields.
762 sourceCat : `lsst.afw.table.SourceCatalog`
763 Catalog to which to copy fields.
764
765 Raises
766 ------
767 RuntimeError
768 Raised if any of the following occur:
769 - icSourceSchema and icSourceKeys are not specified.
770 - icSourceCat and sourceCat are not specified.
771 - icSourceFieldsToCopy is empty.
772 """
773 if self.schemaMapper is None:
774 raise RuntimeError("To copy icSource fields you must specify "
775 "icSourceSchema and icSourceKeys when "
776 "constructing this task")
777 if icSourceCat is None or sourceCat is None:
778 raise RuntimeError("icSourceCat and sourceCat must both be "
779 "specified")
780 if len(self.config.icSourceFieldsToCopy) == 0:
781 self.log.warning("copyIcSourceFields doing nothing because "
782 "icSourceFieldsToCopy is empty")
783 return
784
786 mc.findOnlyClosest = False # return all matched objects
787 matches = afwTable.matchXy(icSourceCat, sourceCat,
788 self.config.matchRadiusPix, mc)
789 if self.config.doDeblend:
790 deblendKey = sourceCat.schema["deblend_nChild"].asKey()
791 # if deblended, keep children
792 matches = [m for m in matches if m[1].get(deblendKey) == 0]
793
794 # Because we had to allow multiple matches to handle parents, we now
795 # need to prune to the best matches
796 # closest matches as a dict of icSourceCat source ID:
797 # (icSourceCat source, sourceCat source, distance in pixels)
798 bestMatches = {}
799 for m0, m1, d in matches:
800 id0 = m0.getId()
801 match = bestMatches.get(id0)
802 if match is None or d <= match[2]:
803 bestMatches[id0] = (m0, m1, d)
804 matches = list(bestMatches.values())
805
806 # Check that no sourceCat sources are listed twice (we already know
807 # that each match has a unique icSourceCat source ID, due to using
808 # that ID as the key in bestMatches)
809 numMatches = len(matches)
810 numUniqueSources = len(set(m[1].getId() for m in matches))
811 if numUniqueSources != numMatches:
812 self.log.warning("%d icSourceCat sources matched only %d sourceCat "
813 "sources", numMatches, numUniqueSources)
814
815 self.log.info("Copying flags from icSourceCat to sourceCat for "
816 "%d sources", numMatches)
817
818 # For each match: set the calibSourceKey flag and copy the desired
819 # fields
820 for icSrc, src, d in matches:
821 src.setFlag(self.calibSourceKey, True)
822 # src.assign copies the footprint from icSrc, which we don't want
823 # (DM-407)
824 # so set icSrc's footprint to src's footprint before src.assign,
825 # then restore it
826 icSrcFootprint = icSrc.getFootprint()
827 try:
828 icSrc.setFootprint(src.getFootprint())
829 src.assign(icSrc, self.schemaMapper)
830 finally:
831 icSrc.setFootprint(icSrcFootprint)
Pass parameters to algorithms that match list of sources.
Definition Match.h:45
daf::base::PropertySet * set
Definition fits.cc:931
SourceMatchVector matchXy(SourceCatalog const &cat1, SourceCatalog const &cat2, double radius, MatchControl const &mc=MatchControl())
Compute all tuples (s1,s2,d) where s1 belings to cat1, s2 belongs to cat2 and d, the distance between...
Definition Match.cc:305

◆ run()

lsst.pipe.tasks.calibrate.CalibrateTask.run ( self,
exposure,
background = None,
icSourceCat = None,
idGenerator = None )
Calibrate an exposure.

Parameters
----------
exposure : `lsst.afw.image.ExposureF`
    Exposure to calibrate.
background : `lsst.afw.math.BackgroundList`, optional
    Initial model of background already subtracted from exposure.
icSourceCat : `lsst.afw.image.SourceCatalog`, optional
    SourceCatalog from CharacterizeImageTask from which we can copy
    some fields.
idGenerator : `lsst.meas.base.IdGenerator`, optional
    Object that generates source IDs and provides RNG seeds.

Returns
-------
result : `lsst.pipe.base.Struct`
    Results as a struct with attributes:

    ``exposure``
       Characterized exposure (`lsst.afw.image.ExposureF`).
    ``sourceCat``
       Detected sources (`lsst.afw.table.SourceCatalog`).
    ``outputBackground``
       Model of subtracted background (`lsst.afw.math.BackgroundList`).
    ``astromMatches``
       List of source/ref matches from astrometry solver.
    ``matchMeta``
       Metadata from astrometry matches.
    ``outputExposure``
       Another reference to ``exposure`` for compatibility.
    ``outputCat``
       Another reference to ``sourceCat`` for compatibility.

Definition at line 539 of file calibrate.py.

540 icSourceCat=None, idGenerator=None):
541 """Calibrate an exposure.
542
543 Parameters
544 ----------
545 exposure : `lsst.afw.image.ExposureF`
546 Exposure to calibrate.
547 background : `lsst.afw.math.BackgroundList`, optional
548 Initial model of background already subtracted from exposure.
549 icSourceCat : `lsst.afw.image.SourceCatalog`, optional
550 SourceCatalog from CharacterizeImageTask from which we can copy
551 some fields.
552 idGenerator : `lsst.meas.base.IdGenerator`, optional
553 Object that generates source IDs and provides RNG seeds.
554
555 Returns
556 -------
557 result : `lsst.pipe.base.Struct`
558 Results as a struct with attributes:
559
560 ``exposure``
561 Characterized exposure (`lsst.afw.image.ExposureF`).
562 ``sourceCat``
563 Detected sources (`lsst.afw.table.SourceCatalog`).
564 ``outputBackground``
565 Model of subtracted background (`lsst.afw.math.BackgroundList`).
566 ``astromMatches``
567 List of source/ref matches from astrometry solver.
568 ``matchMeta``
569 Metadata from astrometry matches.
570 ``outputExposure``
571 Another reference to ``exposure`` for compatibility.
572 ``outputCat``
573 Another reference to ``sourceCat`` for compatibility.
574 """
575 # detect, deblend and measure sources
576 if idGenerator is None:
577 idGenerator = IdGenerator()
578
579 if background is None:
580 background = BackgroundList()
581 table = SourceTable.make(self.schema, idGenerator.make_table_id_factory())
582 table.setMetadata(self.algMetadata)
583
584 detRes = self.detection.run(table=table, exposure=exposure,
585 doSmooth=True)
586 sourceCat = detRes.sources
587 if detRes.background:
588 for bg in detRes.background:
589 background.append(bg)
590 if self.config.doSkySources:
591 skySourceFootprints = self.skySources.run(mask=exposure.mask, seed=idGenerator.catalog_id)
592 if skySourceFootprints:
593 for foot in skySourceFootprints:
594 s = sourceCat.addNew()
595 s.setFootprint(foot)
596 s.set(self.skySourceKey, True)
597 if self.config.doDeblend:
598 self.deblend.run(exposure=exposure, sources=sourceCat)
599 if not sourceCat.isContiguous():
600 sourceCat = sourceCat.copy(deep=True)
601 self.measurement.run(
602 measCat=sourceCat,
603 exposure=exposure,
604 exposureId=idGenerator.catalog_id,
605 )
606 if self.config.doApCorr:
607 apCorrMap = exposure.getInfo().getApCorrMap()
608 if apCorrMap is None:
609 self.log.warning("Image does not have valid aperture correction map for %r; "
610 "skipping aperture correction", idGenerator)
611 else:
612 self.applyApCorr.run(
613 catalog=sourceCat,
614 apCorrMap=apCorrMap,
615 )
616 self.catalogCalculation.run(sourceCat)
617
618 self.setPrimaryFlags.run(sourceCat)
619
620 if icSourceCat is not None and \
621 len(self.config.icSourceFieldsToCopy) > 0:
622 self.copyIcSourceFields(icSourceCat=icSourceCat,
623 sourceCat=sourceCat)
624
625 # TODO DM-11568: this contiguous check-and-copy could go away if we
626 # reserve enough space during SourceDetection and/or SourceDeblend.
627 # NOTE: sourceSelectors require contiguous catalogs, so ensure
628 # contiguity now, so views are preserved from here on.
629 if not sourceCat.isContiguous():
630 sourceCat = sourceCat.copy(deep=True)
631
632 # perform astrometry calibration:
633 # fit an improved WCS and update the exposure's WCS in place
634 astromMatches = None
635 matchMeta = None
636 if self.config.doAstrometry:
637 astromRes = self.astrometry.run(
638 exposure=exposure,
639 sourceCat=sourceCat,
640 )
641 astromMatches = astromRes.matches
642 matchMeta = astromRes.matchMeta
643 if exposure.getWcs() is None:
644 if self.config.requireAstrometry:
645 raise RuntimeError(f"WCS fit failed for {idGenerator} and requireAstrometry "
646 "is True.")
647 else:
648 self.log.warning("Unable to perform astrometric calibration for %r but "
649 "requireAstrometry is False: attempting to proceed...",
650 idGenerator)
651
652 # compute photometric calibration
653 if self.config.doPhotoCal:
654 if np.all(np.isnan(sourceCat["coord_ra"])) or np.all(np.isnan(sourceCat["coord_dec"])):
655 if self.config.requirePhotoCal:
656 raise RuntimeError(f"Astrometry failed for {idGenerator}, so cannot do "
657 "photoCal, but requirePhotoCal is True.")
658 self.log.warning("Astrometry failed for %r, so cannot do photoCal. requirePhotoCal "
659 "is False, so skipping photometric calibration and setting photoCalib "
660 "to None. Attempting to proceed...", idGenerator)
661 exposure.setPhotoCalib(None)
662 self.setMetadata(exposure=exposure, photoRes=None)
663 else:
664 try:
665 photoRes = self.photoCal.run(
666 exposure, sourceCat=sourceCat, expId=idGenerator.catalog_id
667 )
668 exposure.setPhotoCalib(photoRes.photoCalib)
669 # TODO: reword this to phrase it in terms of the
670 # calibration factor?
671 self.log.info("Photometric zero-point: %f",
672 photoRes.photoCalib.instFluxToMagnitude(1.0))
673 self.setMetadata(exposure=exposure, photoRes=photoRes)
674 except Exception as e:
675 if self.config.requirePhotoCal:
676 raise
677 self.log.warning("Unable to perform photometric calibration "
678 "(%s): attempting to proceed", e)
679 self.setMetadata(exposure=exposure, photoRes=None)
680
681 self.postCalibrationMeasurement.run(
682 measCat=sourceCat,
683 exposure=exposure,
684 exposureId=idGenerator.catalog_id,
685 )
686
687 summaryMetrics = None
688 if self.config.doComputeSummaryStats:
689 summary = self.computeSummaryStats.run(exposure=exposure,
690 sources=sourceCat,
691 background=background)
692 exposure.getInfo().setSummaryStats(summary)
693 if self.config.doCreateSummaryMetrics:
694 summaryMetrics = self.createSummaryMetrics.run(data=summary.__dict__).metrics
695
696 frame = getDebugFrame(self._display, "calibrate")
697 if frame:
698 displayAstrometry(
699 sourceCat=sourceCat,
700 exposure=exposure,
701 matches=astromMatches,
702 frame=frame,
703 pause=False,
704 )
705
706 return pipeBase.Struct(
707 sourceCat=sourceCat,
708 astromMatches=astromMatches,
709 matchMeta=matchMeta,
710 outputExposure=exposure,
711 outputCat=sourceCat,
712 outputBackground=background,
713 outputSummaryMetrics=summaryMetrics
714 )
715

◆ runQuantum()

lsst.pipe.tasks.calibrate.CalibrateTask.runQuantum ( self,
butlerQC,
inputRefs,
outputRefs )

Definition at line 501 of file calibrate.py.

501 def runQuantum(self, butlerQC, inputRefs, outputRefs):
502 inputs = butlerQC.get(inputRefs)
503 inputs['idGenerator'] = self.config.idGenerator.apply(butlerQC.quantum.dataId)
504
505 if self.config.doAstrometry:
506 refObjLoader = ReferenceObjectLoader(dataIds=[ref.datasetRef.dataId
507 for ref in inputRefs.astromRefCat],
508 refCats=inputs.pop('astromRefCat'),
509 name=self.config.connections.astromRefCat,
510 config=self.config.astromRefObjLoader, log=self.log)
511 self.astrometry.setRefObjLoader(refObjLoader)
512
513 if self.config.doPhotoCal:
514 photoRefObjLoader = ReferenceObjectLoader(dataIds=[ref.datasetRef.dataId
515 for ref in inputRefs.photoRefCat],
516 refCats=inputs.pop('photoRefCat'),
517 name=self.config.connections.photoRefCat,
518 config=self.config.photoRefObjLoader,
519 log=self.log)
520 self.photoCal.match.setRefObjLoader(photoRefObjLoader)
521
522 outputs = self.run(**inputs)
523
524 if self.config.doWriteMatches and self.config.doAstrometry:
525 if outputs.astromMatches is not None:
526 normalizedMatches = afwTable.packMatches(outputs.astromMatches)
527 normalizedMatches.table.setMetadata(outputs.matchMeta)
528 if self.config.doWriteMatchesDenormalized:
529 denormMatches = denormalizeMatches(outputs.astromMatches, outputs.matchMeta)
530 outputs.matchesDenormalized = denormMatches
531 outputs.matches = normalizedMatches
532 else:
533 del outputRefs.matches
534 if self.config.doWriteMatchesDenormalized:
535 del outputRefs.matchesDenormalized
536 butlerQC.put(outputs, outputRefs)
537
BaseCatalog packMatches(std::vector< Match< Record1, Record2 > > const &matches)
Return a table representation of a MatchVector that can be used to persist it.
Definition Match.cc:432

◆ setMetadata()

lsst.pipe.tasks.calibrate.CalibrateTask.setMetadata ( self,
exposure,
photoRes = None )
Set task and exposure metadata.

Logs a warning continues if needed data is missing.

Parameters
----------
exposure : `lsst.afw.image.ExposureF`
    Exposure to set metadata on.
photoRes : `lsst.pipe.base.Struct`, optional
    Result of running photoCal task.

Definition at line 716 of file calibrate.py.

716 def setMetadata(self, exposure, photoRes=None):
717 """Set task and exposure metadata.
718
719 Logs a warning continues if needed data is missing.
720
721 Parameters
722 ----------
723 exposure : `lsst.afw.image.ExposureF`
724 Exposure to set metadata on.
725 photoRes : `lsst.pipe.base.Struct`, optional
726 Result of running photoCal task.
727 """
728 if photoRes is None:
729 return
730
731 metadata = exposure.getMetadata()
732
733 # convert zero-point to (mag/sec/adu) for task MAGZERO metadata
734 try:
735 exposureTime = exposure.getInfo().getVisitInfo().getExposureTime()
736 magZero = photoRes.zp - 2.5*math.log10(exposureTime)
737 except Exception:
738 self.log.warning("Could not set normalized MAGZERO in header: no "
739 "exposure time")
740 magZero = math.nan
741
742 try:
743 metadata.set('MAGZERO', magZero)
744 metadata.set('MAGZERO_RMS', photoRes.sigma)
745 metadata.set('MAGZERO_NOBJ', photoRes.ngood)
746 metadata.set('COLORTERM1', 0.0)
747 metadata.set('COLORTERM2', 0.0)
748 metadata.set('COLORTERM3', 0.0)
749 except Exception as e:
750 self.log.warning("Could not set exposure metadata: %s", e)
751

Member Data Documentation

◆ _DefaultName

str lsst.pipe.tasks.calibrate.CalibrateTask._DefaultName = "calibrate"
staticprotected

Definition at line 413 of file calibrate.py.

◆ algMetadata

lsst.pipe.tasks.calibrate.CalibrateTask.algMetadata

Definition at line 461 of file calibrate.py.

◆ calibSourceKey

lsst.pipe.tasks.calibrate.CalibrateTask.calibSourceKey

Definition at line 434 of file calibrate.py.

◆ ConfigClass

lsst.pipe.tasks.calibrate.CalibrateTask.ConfigClass = CalibrateConfig
static

Definition at line 412 of file calibrate.py.

◆ outputSchema

lsst.pipe.tasks.calibrate.CalibrateTask.outputSchema

Definition at line 499 of file calibrate.py.

◆ schema

lsst.pipe.tasks.calibrate.CalibrateTask.schema

Definition at line 454 of file calibrate.py.

◆ schemaMapper

lsst.pipe.tasks.calibrate.CalibrateTask.schemaMapper

Definition at line 425 of file calibrate.py.

◆ skySourceKey

lsst.pipe.tasks.calibrate.CalibrateTask.skySourceKey

Definition at line 467 of file calibrate.py.


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