def make_poissonian_model(self, prefix=None):
""" Create a model of a single poissonian with an offset.
param str prefix: optional string, which serves as a prefix for all
parameters used in this model. That will prevent
name collisions if this model is used in a composite
way.
@return tuple: (object model, object params)
Explanation of the objects:
object lmfit.model.CompositeModel model:
A model the lmfit module will use for that fit. Here a
gaussian model. Returns an object of the class
lmfit.model.CompositeModel.
object lmfit.parameter.Parameters params:
It is basically an OrderedDict, so a dictionary, with keys
denoting the parameters as string names and values which are
lmfit.parameter.Parameter (without s) objects, keeping the
information about the current value.
"""
def poisson_function(x, mu):
""" Function of a poisson distribution.
@param numpy.array x: 1D array as the independent variable - e.g. occurences
@param float mu: expectation value
@return: poisson function: in order to use it as a model
"""
return self.poisson(x, mu)
amplitude_model, params = self.make_amplitude_model(prefix=prefix)
if not isinstance(prefix, str) and prefix is not None:
self.log.error('The passed prefix <{0}> of type {1} is not a string and'
'cannot be used as a prefix and will be ignored for now.'
'Correct that!'.format(prefix, type(prefix)))
poissonian_model = Model(poisson_function, independent_vars='x')
else:
poissonian_model = Model(poisson_function, independent_vars='x',
prefix=prefix)
poissonian_ampl_model = amplitude_model * poissonian_model
params = poissonian_ampl_model.make_params()
return poissonian_ampl_model, params
评论列表
文章目录