lsst.meas.modelfit
g9a9c865167+311602a9c2
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
meas
modelfit
priors
priorsContinued.py
Go to the documentation of this file.
1
#!/usr/bin/env python
2
#
3
# LSST Data Management System
4
# Copyright 2008-2013 LSST Corporation.
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 <http://www.lsstcorp.org/LegalNotices/>.
22
#
23
24
__all__ = (
"fitMixture"
,
"SemiEmpiricalPriorConfig"
,
25
"SoftenedLinearPriorControl"
)
26
27
import
numpy
as
np
28
29
from
lsst.pex.config
import
makeConfigClass
30
from
lsst.utils
import
continueClass
31
32
from
.._modelfitLib
import
(Mixture, SemiEmpiricalPriorControl, SemiEmpiricalPrior,
33
SoftenedLinearPriorControl, SoftenedLinearPrior,
34
MixturePrior)
35
36
37
SemiEmpiricalPriorConfig = makeConfigClass(SemiEmpiricalPriorControl)
38
39
SoftenedLinearPriorConfig = makeConfigClass(SoftenedLinearPriorControl)
40
41
42
@continueClass
# noqa: F811 (FIXME: remove for py 3.8+)
43
class
SemiEmpiricalPrior
:
# noqa: F811
44
45
ConfigClass = SemiEmpiricalPriorConfig
46
47
48
@continueClass
# noqa: F811 (FIXME: remove for py 3.8+)
49
class
SoftenedLinearPrior
:
# noqa: F811
50
51
ConfigClass = SoftenedLinearPriorConfig
52
53
54
def
fitMixture
(data, nComponents, minFactor=0.25, maxFactor=4.0,
55
nIterations=20, df=float(
"inf"
)):
56
"""Fit a ``Mixture`` distribution to a set of (e1, e2, r) data points,
57
returing a ``MixturePrior`` object.
58
59
Parameters
60
----------
61
data : numpy.ndarray
62
array of data points to fit; shape=(N,3)
63
nComponents : int
64
number of components in the mixture distribution
65
minFactor : float
66
ellipticity variance of the smallest component in the initial mixture,
67
relative to the measured variance
68
maxFactor : float
69
ellipticity variance of the largest component in the initial mixture,
70
relative to the measured variance
71
nIterations : int
72
number of expectation-maximization update iterations
73
df : float
74
number of degrees of freedom for component Student's T distributions
75
(inf=Gaussian).
76
"""
77
components =
Mixture.ComponentList
()
78
rMu = data[:, 2].mean()
79
rSigma = data[:, 2].var()
80
eSigma = 0.5*(data[:, 0].var() + data[:, 1].var())
81
mu = np.array([0.0, 0.0, rMu], dtype=float)
82
baseSigma = np.array([[eSigma, 0.0, 0.0],
83
[0.0, eSigma, 0.0],
84
[0.0, 0.0, rSigma]])
85
for
factor
in
np.linspace(minFactor, maxFactor, nComponents):
86
sigma = baseSigma.copy()
87
sigma[:2, :2] *= factor
88
components.append(
Mixture.Component
(1.0, mu, sigma))
89
mixture =
Mixture
(3, components, df)
90
restriction = MixturePrior.getUpdateRestriction()
91
for
i
in
range(nIterations):
92
mixture.updateEM(data, restriction)
93
return
mixture
lsst::meas::modelfit::MixtureComponent
A weighted Student's T or Gaussian distribution used as a component in a Mixture.
Definition
Mixture.h:47
lsst::meas::modelfit::Mixture
Definition
Mixture.h:128
lsst::meas::modelfit.priors.priorsContinued.SemiEmpiricalPrior
Definition
priorsContinued.py:43
lsst::meas::modelfit.priors.priorsContinued.SoftenedLinearPrior
Definition
priorsContinued.py:49
lsst::meas::modelfit.priors.priorsContinued.fitMixture
fitMixture(data, nComponents, minFactor=0.25, maxFactor=4.0, nIterations=20, df=float("inf"))
Definition
priorsContinued.py:55
lsst::pex::config
std::vector< Component >
Generated on
for lsst.meas.modelfit by
1.17.0