Skip to content
Snippets Groups Projects
Commit c8538c28 authored by Alexander Heidelbach's avatar Alexander Heidelbach
Browse files

Adjust to new error methods and some linting

parent 31e80cb8
Branches
No related tags found
No related merge requests found
......@@ -61,14 +61,18 @@ class BaseFitter(ABC):
assert self.model.model is not None
counts_model = self.model.model.pdf(centers)
counts_model_normed = counts_model * np.sum(counts) * (float(high) - float(low)) / len(counts)
counts_model_normed = (
counts_model * np.sum(counts) * (float(high) - float(low)) / len(counts)
)
nPars = 0
for parameter in self.model.parameters.values():
if parameter.floating:
nPars += 1
gof = np.sum((counts - counts_model_normed) ** 2 / counts_model_normed) / (len(counts) - nPars)
gof = np.sum((counts - counts_model_normed) ** 2 / counts_model_normed) / (
len(counts) - nPars
)
return gof
......@@ -81,10 +85,12 @@ class BaseFitter(ABC):
name = fitparameter.latex_name
unit = fitparameter.unit
value = float(params[param.name]["value"])
lower = float(params[param.name]["minuit_minos"]["lower"])
upper = float(params[param.name]["minuit_minos"]["upper"])
lower = float(params[param.name]["errors"]["lower"])
upper = float(params[param.name]["errors"]["upper"])
self.model.update_fitparameter(str(param.name), value, value + lower, value + upper)
self.model.update_fitparameter(
str(param.name), value, value + lower, value + upper
)
self.result_text.append(
"{name} = ${value:.3{c1}}^{{+{upper:.3{c2}}}}_{{{lower:.3{c3}}}}$ {unit}".format(
......@@ -107,7 +113,12 @@ class BaseFitter(ABC):
name=fitparameter.latex_name,
value=fitparameter.value,
unit=fitparameter.unit,
c1="e" if (abs(fitparameter.value) > 1e3 or abs(fitparameter.value) < 1e-3) else "f",
c1="e"
if (
abs(fitparameter.value) > 1e3
or abs(fitparameter.value) < 1e-3
)
else "f",
)
)
......@@ -128,18 +139,20 @@ class BaseFitter(ABC):
modelparameter = model.get_modelparameter(param.name)
if modelparameter.floating and param.shuffle:
modelparameter.randomize(minval=param.lower, maxval=param.upper, sampler=np.random.uniform)
modelparameter.randomize(
minval=param.lower, maxval=param.upper, sampler=np.random.uniform
)
def _single_fit(self) -> None:
assert isinstance(self.eval_model, zfit.core.interfaces.ZfitPDF)
nll = self.lossfunction(model=self.eval_model, data=self.data)
# minimize
minimizer = zfit.minimize.Minuit(use_minuit_grad=True)
result = minimizer.minimize(nll)
minimizer = zfit.minimize.Minuit(gradient=True)
result = minimizer.minimize(nll).update_params()
# calculate errors
result.errors(method="minuit_minos")
result.errors()
result.hesse()
self.zfitresult = result
# Information on all the parameters in the fit
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment