24 __all__ = (
"fitMixture",
"SemiEmpiricalPriorConfig",
25 "SoftenedLinearPriorControl")
32 from ..mixture
import Mixture
33 from .priors
import (SemiEmpiricalPriorControl, SemiEmpiricalPrior,
34 SoftenedLinearPriorControl, SoftenedLinearPrior,
46 ConfigClass = SemiEmpiricalPriorConfig
52 ConfigClass = SoftenedLinearPriorConfig
55 def fitMixture(data, nComponents, minFactor=0.25, maxFactor=4.0,
56 nIterations=20, df=float(
"inf")):
57 """Fit a ``Mixture`` distribution to a set of (e1, e2, r) data points, 58 returing a ``MixturePrior`` object. 63 array of data points to fit; shape=(N,3) 65 number of components in the mixture distribution 67 ellipticity variance of the smallest component in the initial mixture, 68 relative to the measured variance 70 ellipticity variance of the largest component in the initial mixture, 71 relative to the measured variance 73 number of expectation-maximization update iterations 75 number of degrees of freedom for component Student's T distributions 79 rMu = data[:, 2].mean()
80 rSigma = data[:, 2].var()
81 eSigma = 0.5*(data[:, 0].var() + data[:, 1].var())
82 mu = np.array([0.0, 0.0, rMu], dtype=float)
83 baseSigma = np.array([[eSigma, 0.0, 0.0],
86 for factor
in np.linspace(minFactor, maxFactor, nComponents):
87 sigma = baseSigma.copy()
88 sigma[:2, :2] *= factor
90 mixture = Mixture(3, components, df)
91 restriction = MixturePrior.getUpdateRestriction()
92 for i
in range(nIterations):
93 mixture.updateEM(data, restriction)
def fitMixture(data, nComponents, minFactor=0.25, maxFactor=4.0, nIterations=20, df=float("inf"))
A weighted Student's T or Gaussian distribution used as a component in a Mixture. ...
def makeConfigClass(ctrl, name=None, base=Config, doc=None, module=None, cls=None)