24 __all__ = [
"BasePsfDeterminerConfig",
"BasePsfDeterminerTask",
"psfDeterminerRegistry"]
28 import lsst.pipe.base
as pipeBase
33 """Configuration that is likely to be shared by all PSF determiners
35 This is fairly sparse; more fields can be moved here once it is clear they are universal.
37 kernelSize = pexConfig.Field(
38 doc=
"radius of the kernel to create, relative to the square root of the stellar quadrupole moments",
42 kernelSizeMin = pexConfig.Field(
43 doc=
"Minimum radius of the kernel",
47 kernelSizeMax = pexConfig.Field(
48 doc=
"Maximum radius of the kernel",
55 """Base class for PSF determiners
57 Register all PSF determiners with the psfDeterminerRegistry using:
58 psfDeterminerRegistry.register(name, class)
62 config : `lsst.pexConfig.Config`
63 Input for configuring the algorithm
64 schema : `lsst.afw.table.Schema`
65 Schema used for sources; passing a schema allows the
66 determiner to reserve a flag field to mark stars used in
67 PSF measurement, but some PSF determiners ignore this argument.
71 ConfigClass = BasePsfDeterminerConfig
72 _DefaultName =
"psfDeterminer"
74 def __init__(self, config, schema=None, **kwds):
75 pipeBase.Task.__init__(self, config=config, **kwds)
79 """Determine a PSF model.
83 exposure : `lsst.afw.Exposure`
84 Exposure containing the psf candidates.
85 psdCandidateList : `list` [`lsst.meas.algorithms.PsfCandidate`]
86 A sequence of PSF candidates; typically obtained by
87 detecting sources and then running them through a star
90 A place to save interesting items.
94 psf : `lsst.afw.detection.Psf`
96 cellSet : `lsst.afw.math.SpatialCellSet`
97 The spatial cell set used to determine the PSF
99 raise NotImplementedError(
"BasePsfDeterminerTask is abstract, subclasses must override this method")
102 psfDeterminerRegistry = pexConfig.makeRegistry(
103 doc=
"A registry of PSF determiners (subclasses of BasePsfDeterminerTask)",
def determinePsf(self, exposure, psfCandidateList, metadata=None)
def __init__(self, config, schema=None, **kwds)