diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 4f528ec8..a655d36b 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -201,8 +201,9 @@ def symmetric(self): if self.T % 2 != 0: raise Exception("Can not symmetrize odd T") - if np.argmax(np.abs(self.content)) != 0: - warnings.warn("Correlator does not seem to be symmetric around x0=0.", RuntimeWarning) + if self.content[0] is not None: + if np.argmax(np.abs([o[0].value if o is not None else 0 for o in self.content])) != 0: + warnings.warn("Correlator does not seem to be symmetric around x0=0.", RuntimeWarning) newcontent = [self.content[0]] for t in range(1, self.T): diff --git a/tests/correlators_test.py b/tests/correlators_test.py index 0b408ba0..cc08544c 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -552,3 +552,17 @@ def test_corr_no_filtering(): b = pe.pseudo_Obs(1, 1e-11, 'a', samples=30) c *= b assert np.all([c[0].idl == o.idl for o in c]) + + +def test_corr_symmetric(): + obs = [] + for _ in range(4): + obs.append(pe.pseudo_Obs(np.random.rand(), 0.1, "test")) + + for corr in [pe.Corr([obs[0] + 8, obs[1], obs[2], obs[3]]), + pe.Corr([obs[0] + 8, obs[1], obs[2], None]), + pe.Corr([None, obs[1], obs[2], obs[3]])]: + scorr = corr.symmetric() + assert scorr[1] == scorr[3] + assert scorr[2] == corr[2] + assert scorr[0] == corr[0]