From 34fe7f44fcc9503357e430642b7d3d15af178c02 Mon Sep 17 00:00:00 2001 From: s-kuberski Date: Tue, 30 May 2023 16:29:22 +0200 Subject: [PATCH] Bug fix for edge case in _compute_drho (#189) --- pyerrors/obs.py | 2 +- tests/obs_test.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index a49320a5..e00a3241 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -278,7 +278,7 @@ class Obs: def _compute_drho(i): tmp = (self.e_rho[e_name][i + 1:w_max] - + np.concatenate([self.e_rho[e_name][i - 1:None if i - w_max // 2 <= 0 else 2 * (i - w_max // 2):-1], + + np.concatenate([self.e_rho[e_name][i - 1:None if i - w_max // 2 <= 0 else (2 * i - (2 * w_max) // 2):-1], self.e_rho[e_name][1:max(1, w_max - 2 * i)]]) - 2 * self.e_rho[e_name][i] * self.e_rho[e_name][1:w_max - i]) self.e_drho[e_name][i] = np.sqrt(np.sum(tmp ** 2) / e_N) diff --git a/tests/obs_test.py b/tests/obs_test.py index 73bedd55..d5d8d5e1 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -767,6 +767,17 @@ def test_gamma_method_irregular(): a = pe.Obs([carr], ['a']) a.gm() + arr = np.random.normal(1, .2, size=999) + carr = gen_autocorrelated_array(arr, .8) + o = pe.Obs([carr], ['test']) + o.gamma_method() + no = np.NaN * o + no.gamma_method() + o.idl['test'] = range(1, 1998, 2) + o.gamma_method() + no = np.NaN * o + no.gamma_method() + def test_irregular_gapped_dtauint(): my_idl = list(range(0, 5010, 10))