From 1db59a9fdc91d8117efd1b86fbacaf42c976b060 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 14:34:48 +0000 Subject: [PATCH] feat: derived_observable now uses covobs when an input is not an Obs. This should result in a small speedup for all operations as one iteration over all data can be dropped. --- pyerrors/obs.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index c27670ed..6188dc4f 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1053,17 +1053,9 @@ def derived_observable(func, data, array_mode=False, **kwargs): raveled_data = data.ravel() # Workaround for matrix operations containing non Obs data - # TODO: Find more elegant solution here. - for i_data in raveled_data: - if isinstance(i_data, Obs): - first_name = i_data.names[0] - first_shape = i_data.shape[first_name] - first_idl = i_data.idl[first_name] - break - for i in range(len(raveled_data)): if isinstance(raveled_data[i], (int, float)): - raveled_data[i] = Obs([raveled_data[i] + np.zeros(first_shape)], [first_name], idl=[first_idl]) + raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "~#dummy_data#~") allcov = {} for o in raveled_data: