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"""
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 = []
for t_slice in self:
if t_slice is None:
new_content.append(None)
else:
new_content.append(np.array(reweight(weight, t_slice)))
new_content.append(np.array(reweight(weight, t_slice, **kwargs)))
return Corr(new_content)
def T_symmetry(self, partner, parity=+1):

View file

@ -1105,9 +1105,10 @@ def reweight(weight, obs, **kwargs):
Keyword arguments
-----------------
all_configs -- 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.
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.
"""
result = []
for i in range(len(obs)):

View file

@ -54,6 +54,12 @@ def test_m_eff():
my_corr.m_eff('cosh')
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():
my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(0, 0.05, 't')])
with pytest.warns(RuntimeWarning):