docstring and test added for Corr.reweight

This commit is contained in:
Fabian Joswig 2021-11-02 14:19:00 +00:00
parent 3e60403a51
commit b07f16fe1c
3 changed files with 27 additions and 5 deletions

View file

@ -233,13 +233,28 @@ 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 reweight(self, weight): def reweight(self, weight, **kwargs):
"""Reweight the correlator.
Parameters
----------
weight : Obs
Reweighting factor. An Observable that has to be defined on a superset of the
configurations in obs[i].idl for all i.
Keyword arguments
-----------------
all_configs : bool
if True, the reweighted observables are normalized by the average of
the reweighting factor on all configurations in weight.idl and not
on the configurations in obs[i].idl.
"""
new_content = [] new_content = []
for t_slice in self: for t_slice in self:
if t_slice is None: if t_slice is None:
new_content.append(None) new_content.append(None)
else: else:
new_content.append(np.array(reweight(weight, t_slice))) new_content.append(np.array(reweight(weight, t_slice, **kwargs)))
return Corr(new_content) return Corr(new_content)
def T_symmetry(self, partner, parity=+1): def T_symmetry(self, partner, parity=+1):

View file

@ -1105,7 +1105,8 @@ def reweight(weight, obs, **kwargs):
Keyword arguments Keyword arguments
----------------- -----------------
all_configs -- if True, the reweighted observables are normalized by the average of all_configs : bool
if True, the reweighted observables are normalized by the average of
the reweighting factor on all configurations in weight.idl and not the reweighting factor on all configurations in weight.idl and not
on the configurations in obs[i].idl. on the configurations in obs[i].idl.
""" """

View file

@ -54,6 +54,12 @@ def test_m_eff():
my_corr.m_eff('cosh') my_corr.m_eff('cosh')
my_corr.m_eff('sinh') my_corr.m_eff('sinh')
def test_reweighting():
my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(0, 0.05, 't')])
assert my_corr.reweighted is False
r_my_corr = my_corr.reweight(pe.pseudo_Obs(1, 0.1, 't'))
assert r_my_corr.reweighted is True
def test_T_symmetry(): def test_T_symmetry():
my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(0, 0.05, 't')]) my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(0, 0.05, 't')])
with pytest.warns(RuntimeWarning): with pytest.warns(RuntimeWarning):