mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-14 19:43:41 +02:00
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:
parent
f8c8b27ec3
commit
ca04097272
2 changed files with 26 additions and 0 deletions
|
@ -376,6 +376,24 @@ class Corr:
|
||||||
"""Reverse the time ordering of the Corr"""
|
"""Reverse the time ordering of the Corr"""
|
||||||
return Corr(self.content[:: -1])
|
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):
|
def correlate(self, partner):
|
||||||
"""Correlate the correlator with another correlator or Obs
|
"""Correlate the correlator with another correlator or Obs
|
||||||
|
|
||||||
|
|
|
@ -283,3 +283,11 @@ def test_hankel():
|
||||||
corr.Hankel(2)
|
corr.Hankel(2)
|
||||||
corr.Hankel(6, periodic=True)
|
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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue