Corr objects now support slicing, T_symmetry implemented for Corr

objects
This commit is contained in:
Fabian Joswig 2021-11-02 11:09:43 +00:00
parent 063b8b2404
commit c7f5612717
2 changed files with 19 additions and 20 deletions

View file

@ -62,6 +62,9 @@ class Corr:
self.gamma_method()
def __getitem__(self, idx):
return self.content[idx]
def gamma_method(self):
for item in self.content:
if not(item is None):
@ -206,6 +209,22 @@ class Corr:
def reverse(self):
return Corr(self.content[::-1])
def T_symmetry(partner, parity=+1):
if not isinstance(partner, Corr):
raise Exception("T partner has to be a Corr object.")
if parity not in [+1, -1]:
raise Exception("Parity has to be +1 or -1.")
T_partner = parity * partner.reverse()
t_slices = []
for x0, t_slice in enumerate(self - T_partner):
if t_slice is not None:
if not t_slice.is_zero_within_error(3):
t_slices.append(x0)
if t_slices:
warnings.warn("T symmetry partner do not agree within 5 sigma on time slices" + str(t_slices) + ".", RuntimeWarning)
return (self + T_partner) / 2
def deriv(self, symmetric=True): # Defaults to symmetric derivative
if not symmetric:
newcontent = []