From 90717ba85d6d9715dd4aae016e17da6995e08906 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 27 Jan 2022 17:01:54 +0000 Subject: [PATCH 1/2] fix: 1D-Corr objects can now be initialized with None entries. This fixes a bug in Corr.m_eff with padding. --- pyerrors/correlators.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 2209c431..f051855a 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -42,9 +42,9 @@ class Corr: if not isinstance(data_input, list): raise TypeError('Corr__init__ expects a list of timeslices.') - if all([(isinstance(item, Obs) or isinstance(item, CObs)) for item in data_input]): - _assert_equal_properties(data_input) - self.content = [np.asarray([item]) for item in data_input] + if all([(isinstance(item, Obs) or isinstance(item, CObs)) or item is None for item in data_input]): + _assert_equal_properties([o for o in data_input if o is not None]) + self.content = [np.asarray([item]) if item is not None else None for item in data_input] self.N = 1 elif all([isinstance(item, np.ndarray) or item is None for item in data_input]) and any([isinstance(item, np.ndarray) for item in data_input]): From 8c53d500bf5fa1d3651ca6f54cc6ed583d504beb Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 27 Jan 2022 17:06:49 +0000 Subject: [PATCH 2/2] tests: additional tests for correlators with padding added --- tests/correlators_test.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/tests/correlators_test.py b/tests/correlators_test.py index c8f57d75..a2630844 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -51,24 +51,28 @@ def test_modify_correlator(): corr.symmetric() with pytest.warns(RuntimeWarning): corr.anti_symmetric() - corr.roll(np.random.randint(100)) - corr.deriv(symmetric=True) - corr.deriv(symmetric=False) - corr.deriv().deriv() - corr.second_deriv() - corr.second_deriv().second_deriv() + for pad in [0, 2]: + corr = pe.correlators.Corr(corr_content, padding=[pad, pad]) + corr.roll(np.random.randint(100)) + corr.deriv(symmetric=True) + corr.deriv(symmetric=False) + corr.deriv().deriv() + corr.second_deriv() + corr.second_deriv().second_deriv() def test_m_eff(): - my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(9, 0.05, 't'), pe.pseudo_Obs(9, 0.1, 't'), pe.pseudo_Obs(10, 0.05, 't')]) - my_corr.m_eff('log') - my_corr.m_eff('cosh') - my_corr.m_eff('arccosh') + for padding in [0, 4]: + my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(9, 0.05, 't'), pe.pseudo_Obs(9, 0.1, 't'), pe.pseudo_Obs(10, 0.05, 't')], padding=[padding, padding]) + my_corr.m_eff('log') + my_corr.m_eff('cosh') + my_corr.m_eff('arccosh') with pytest.warns(RuntimeWarning): my_corr.m_eff('sinh') + def test_reweighting(): my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(0, 0.05, 't')]) assert my_corr.reweighted is False @@ -135,7 +139,6 @@ def test_corr_exceptions(): pe.Corr([obs_a, obs_b]) - def test_utility(): corr_content = [] for t in range(8):