feat: thin method added to Corr class which allows to thin out a

correlator in order suppress correlations between neighbouring entries
This commit is contained in:
Fabian Joswig 2022-02-09 15:32:18 +00:00
parent f8c8b27ec3
commit ca04097272
2 changed files with 26 additions and 0 deletions

View file

@ -376,6 +376,24 @@ class Corr:
"""Reverse the time ordering of the Corr"""
return Corr(self.content[:: -1])
def thin(self, spacing=2, offset=0):
"""Thin out a correlator to suppress correlations
Parameters
----------
spacing : int
Keep only every 'spacing'th entry of the correlator
offset : int
Offset the equal spacing
"""
new_content = []
for t in range(self.T):
if (offset + t) % spacing != 0:
new_content.append(None)
else:
new_content.append(self.content[t])
return Corr(new_content)
def correlate(self, partner):
"""Correlate the correlator with another correlator or Obs

View file

@ -283,3 +283,11 @@ def test_hankel():
corr.Hankel(2)
corr.Hankel(6, periodic=True)
def test_thin():
c = pe.Corr([pe.pseudo_Obs(i, .1, 'test') for i in range(10)])
c *= pe.cov_Obs(1., .1, '#ren')
thin = c.thin()
thin.fit(lambda a, x: a[0] * x)
c.thin(offset=1)
c.thin(3, offset=1)