24from .densityPlot
import mergeDefaults
25from ..
import modelfitLib
27__all__ = (
"SamplingDataAdapter",
"OptimizerTrackLayer",
"OptimizerDataAdapter",)
34 self.
pdfpdf = record.getPdf()
35 self.
dimensionsdimensions = list(record.getInterpreter().getParameterNames())
39 z = numpy.zeros(x.shape, dtype=float)
40 if i >= self.
pdfpdf.getDimension():
42 projection = self.
pdfpdf.project(i)
43 projection.evaluate(x.reshape(x.shape + (1,)), z)
49 z = numpy.zeros(x.size, dtype=float)
50 if i >= self.
pdfpdf.getDimension()
or j >= self.
pdfpdf.getDimension():
52 projection = self.
pdfpdf.project(j, i)
53 xy = numpy.zeros((x.size, 2), dtype=float)
54 xy[:, 0] = x.flatten()
55 xy[:, 1] = y.flatten()
56 projection.evaluate(xy, z)
57 return z.reshape(x.shape)
63 ModelFitDataAdapter.__init__(self, record)
64 self.
samplessamples = record.getSamples().copy(deep=
True)
71 fractions = numpy.array([lower, upper], dtype=float)
72 ranges = self.
recordrecord.getInterpreter().computeParameterQuantiles(self.
recordrecord, fractions)
73 self.
lowerlower = {dim: ranges[i, 0]
for i, dim
in enumerate(self.
dimensionsdimensions)}
74 self.
upperupper = {dim: ranges[i, 1]
for i, dim
in enumerate(self.
dimensionsdimensions)}
81 marker=
'.', linestyle=
'-', color=
'c',
85 marker=
'.', linestyle=
'-', color=
'k', alpha=0.5,
90 def __init__(self, tag, accepted=None, rejected=None):
92 self.accepted =
mergeDefaults(accepted, self.defaults[
'accepted'])
93 self.rejected =
mergeDefaults(rejected, self.defaults[
'rejected'])
95 def plotX(self, axes, data, dim):
98 def plotY(self, axes, data, dim):
101 def plotXY(self, axes, data, xDim, yDim):
102 i = data.dimensions.index(yDim)
103 j = data.dimensions.index(xDim)
105 artists.extend(axes.plot(data.rejected[:, j], data.rejected[:, i], **self.rejected))
106 artists.extend(axes.plot(data.accepted[:, j], data.accepted[:, i], **self.accepted))
113 ModelFitDataAdapter.__init__(self, record)
114 self.
samplessamples = record.getSamples().copy(deep=
True)
119 mask = (self.
statestate & modelfitLib.Optimizer.STATUS_STEP_REJECTED).astype(bool)
127 nans = numpy.array([numpy.nan] * self.
parametersparameters.shape[1], dtype=float)
128 for parameters, isRejected
in zip(self.
parametersparameters, mask):
130 rejected.extend([parameters, current, nans])
136 for i, dim
in enumerate(self.
dimensionsdimensions):
137 projected = self.
pdfpdf[0].project(i)
138 mu = projected.getMu()
139 sigma = projected.getSigma()**0.5
140 self.
lowerlower[dim] = min(self.
acceptedaccepted[:, i].min(), mu - 3*sigma)
141 self.
upperupper[dim] = max(self.
acceptedaccepted[:, i].max(), mu + 3*sigma)
144 record.getInterpreter().packParameters(
145 self.
recordrecord[
'initial.nonlinear'], self.
recordrecord[
'initial.amplitudes'],
148 record.getInterpreter().packParameters(
149 self.
recordrecord[
'fit.nonlinear'], self.
recordrecord[
'fit.amplitudes'],
def eval2d(self, xDim, yDim, x, y)
def __init__(self, record)
def __init__(self, record)
def __init__(self, record)
def setRangesFromQuantiles(self, lower, upper)
def mergeDefaults(kwds, defaults)