From b07707b37d251e5d074ceedd225cbde78295ce69 Mon Sep 17 00:00:00 2001 From: Ivan Usov Date: Tue, 20 Oct 2020 11:57:22 +0200 Subject: [PATCH] Don't stop on measurements with failed fit Fix #13 --- pyzebra/fit2.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pyzebra/fit2.py b/pyzebra/fit2.py index 54a463c..242149a 100644 --- a/pyzebra/fit2.py +++ b/pyzebra/fit2.py @@ -128,20 +128,22 @@ def fitccl( ("intercept", guess[4], bool(vary[4]), constraints_min[4], constraints_max[4], None, None), ) # the weighted fit - result = mod.fit( - y, params, weights=[np.abs(1 / y_err[i]) for i in range(len(y_err))], x=x, calc_covar=True - ) - + try: + result = mod.fit( + y, params, weights=[np.abs(1 / val) for val in y_err], x=x, calc_covar=True, + ) + except ValueError: + return + if result.params["g_amp"].stderr is None: result.params["g_amp"].stderr = result.params["g_amp"].value elif result.params["g_amp"].stderr > result.params["g_amp"].value: result.params["g_amp"].stderr = result.params["g_amp"].value + # u.ufloat to work with uncertanities fit_area = u.ufloat(result.params["g_amp"].value, result.params["g_amp"].stderr) comps = result.eval_components() - - if len(meas["peak_indexes"]) == 0: # for case of no peak, there is no reason to integrate, therefore fit and int are equal int_area = fit_area