lsst.meas.algorithms
g4a7591d645+ff8a1bd350
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
meas
algorithms
installGaussianPsf.py
Go to the documentation of this file.
1
#
2
# LSST Data Management System
3
#
4
# Copyright 2008-2017 AURA/LSST.
5
#
6
# This product includes software developed by the
7
# LSST Project (http://www.lsst.org/).
8
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the LSST License Statement and
20
# the GNU General Public License along with this program. If not,
21
# see <https://www.lsstcorp.org/LegalNotices/>.
22
#
23
__all__ = [
"InstallGaussianPsfConfig"
,
"InstallGaussianPsfTask"
]
24
25
import
math
26
27
import
lsst.pex.config
as
pexConfig
28
import
lsst.pipe.base
as
pipeBase
29
from
lsst.meas.algorithms
import
SingleGaussianPsf
30
31
FwhmPerSigma = 2.0*math.sqrt(2.0*math.log(2.0))
32
33
34
class
InstallGaussianPsfConfig
(pexConfig.Config):
35
"""Config for InstallGaussianPsfTask
36
"""
37
fwhm = pexConfig.Field(
38
dtype=float,
39
default=1.5 * FwhmPerSigma,
40
doc=
"Estimated FWHM of simple Gaussian PSF model, in pixels. "
41
"Ignored if input exposure has a PSF model."
42
)
43
width = pexConfig.RangeField(
44
dtype=int,
45
doc=
"Width and height of PSF model, in pixels. Must be odd."
,
46
default=11,
47
min=1,
48
)
49
50
def
validate
(self):
51
if
self.
width
% 2 == 0:
52
raise
RuntimeError(
"width=%s must be odd"
% (self.
width
,))
53
54
55
class
InstallGaussianPsfTask
(pipeBase.Task):
56
"""Install a Gaussian PSF model in an exposure.
57
58
If the exposure already has a PSF model then the new model
59
has the same sigma and size (width and height in pixels) of the existing
60
model.
61
"""
62
ConfigClass = InstallGaussianPsfConfig
63
_DefaultName =
"installSimplePsfModel"
64
65
def
run
(self, exposure):
66
"""Set exposure's PSF to a simple PSF model
67
68
The sigma and width of the new simple PSF model matches the sigma and
69
width of the current model, if any, else the config parameters are used.
70
71
Parameters
72
----------
73
exposure : `lsst.afw.image.Exposure`
74
Exposure in which to replace or add the PSF model.
75
"""
76
if
exposure.hasPsf():
77
psfModel = exposure.getPsf()
78
psfSigma = psfModel.computeShape(psfModel.getAveragePosition()).getDeterminantRadius()
79
if
math.isnan(psfSigma):
80
raise
RuntimeError(
"Cannot create a Gaussian PSF model. "
81
"The computed exposure psfSigma is NaN!"
)
82
width, height = psfModel.computeImage(psfModel.getAveragePosition()).getDimensions()
83
else
:
84
psfSigma = self.config.fwhm / FwhmPerSigma
85
width = height = self.config.width
86
87
if
psfSigma <= 0:
88
raise
RuntimeError(
"psfSigma = %s <= 0"
% (psfSigma,))
89
90
self.log.debug(
"installing a simple Gaussian PSF model with width=%s, height=%s, FWHM=%0.3f"
,
91
width, height, psfSigma*FwhmPerSigma)
92
psfModel =
SingleGaussianPsf
(width, height, psfSigma)
93
exposure.setPsf(psfModel)
lsst::meas::algorithms::SingleGaussianPsf
Represent a PSF as a circularly symmetrical Gaussian.
Definition
SingleGaussianPsf.h:37
lsst::meas::algorithms.installGaussianPsf.InstallGaussianPsfConfig
Definition
installGaussianPsf.py:34
lsst::meas::algorithms.installGaussianPsf.InstallGaussianPsfConfig.validate
validate(self)
Definition
installGaussianPsf.py:50
lsst::meas::algorithms.installGaussianPsf.InstallGaussianPsfConfig.width
width
Definition
installGaussianPsf.py:43
lsst::meas::algorithms.installGaussianPsf.InstallGaussianPsfTask
Definition
installGaussianPsf.py:55
lsst::meas::algorithms.installGaussianPsf.InstallGaussianPsfTask.run
run(self, exposure)
Definition
installGaussianPsf.py:65
lsst::meas::algorithms
Definition
mainpage.dox:13
lsst::pex::config
lsst.pipe.base
Generated on
for lsst.meas.algorithms by
1.17.0