From d778a3b2389b79c04c45fd292ccd9952d9d1babf Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 14:50:18 +0000 Subject: [PATCH] feat!: merged the parameters padding_front and padding_back of Corr into one parameter padding --- examples/03_pcac_example.ipynb | 6 +++--- pyerrors/__init__.py | 2 +- pyerrors/correlators.py | 16 ++++++++-------- pyerrors/input/json.py | 2 +- tests/correlators_test.py | 2 +- tests/io_test.py | 4 ++-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/03_pcac_example.ipynb b/examples/03_pcac_example.ipynb index 9b163317..57cc1643 100644 --- a/examples/03_pcac_example.ipynb +++ b/examples/03_pcac_example.ipynb @@ -39,7 +39,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can load data from preprocessed files which contains lists of `pyerror` `Obs` and convert them to `Corr` objects as explained in the previous example. We use the parameters `padding_front` and `padding_back` to keep track of the fixed boundary conditions at both temporal ends of the lattice. This allows us to specify absolut temporal positions without having to keep track of any shifts in the data." + "We can load data from preprocessed files which contains lists of `pyerror` `Obs` and convert them to `Corr` objects as explained in the previous example. We use the parameter `padding` to keep track of the fixed boundary conditions at both temporal ends of the lattice. This allows us to specify absolut temporal positions without having to keep track of any shifts in the data." ] }, { @@ -70,7 +70,7 @@ "p_obs = {}\n", "for i, item in enumerate(p_obs_names):\n", " tmp_data = pe.input.json.load_json(\"./data/\" + item)\n", - " p_obs[item] = pe.Corr(tmp_data, padding_front=1, padding_back=1)\n", + " p_obs[item] = pe.Corr(tmp_data, padding=[1, 1])\n", " p_obs[item].tag = item" ] }, @@ -291,7 +291,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index 856b5178..a8ee7aaa 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -206,7 +206,7 @@ print(my_corr) ``` In case the correlation functions are not defined on the outermost timeslices, for example because of fixed boundary conditions, a padding can be introduced. ```python -my_corr = pe.Corr([obs_0, obs_1, obs_2, obs_3], padding_front=1, padding_back=1) +my_corr = pe.Corr([obs_0, obs_1, obs_2, obs_3], padding=[1, 1]) print(my_corr) > x0/a Corr(x0/a) > ------------------ diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 7f318976..b24af5e4 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -23,7 +23,7 @@ class Corr: """ - def __init__(self, data_input, padding_front=0, padding_back=0, prange=None): + def __init__(self, data_input, padding=[0, 0], prange=None): # All data_input should be a list of things at different timeslices. This needs to be verified if not isinstance(data_input, list): @@ -53,7 +53,7 @@ class Corr: # We now apply some padding to our list. In case that our list represents a correlator of length T but is not defined at every value. # An undefined timeslice is represented by the None object - self.content = [None] * padding_front + self.content + [None] * padding_back + self.content = [None] * padding[0] + self.content + [None] * padding[1] self.T = len(self.content) # for convenience: will be used a lot # The attribute "range" [start,end] marks a range of two timeslices. @@ -331,7 +331,7 @@ class Corr: newcontent.append(self.content[t + 1] - self.content[t]) if(all([x is None for x in newcontent])): raise Exception("Derivative is undefined at all timeslices") - return Corr(newcontent, padding_back=1) + return Corr(newcontent, padding=[0, 1]) if symmetric: newcontent = [] for t in range(1, self.T - 1): @@ -341,7 +341,7 @@ class Corr: newcontent.append(0.5 * (self.content[t + 1] - self.content[t - 1])) if(all([x is None for x in newcontent])): raise Exception('Derivative is undefined at all timeslices') - return Corr(newcontent, padding_back=1, padding_front=1) + return Corr(newcontent, padding=[1, 1]) def second_deriv(self): """Return the second derivative of the correlator with respect to x0.""" @@ -353,7 +353,7 @@ class Corr: newcontent.append((self.content[t + 1] - 2 * self.content[t] + self.content[t - 1])) if(all([x is None for x in newcontent])): raise Exception("Derivative is undefined at all timeslices") - return Corr(newcontent, padding_back=1, padding_front=1) + return Corr(newcontent, padding=[1, 1]) def m_eff(self, variant='log', guess=1.0): """Returns the effective mass of the correlator as correlator object @@ -381,7 +381,7 @@ class Corr: if(all([x is None for x in newcontent])): raise Exception('m_eff is undefined at all timeslices') - return np.log(Corr(newcontent, padding_back=1)) + return np.log(Corr(newcontent, padding=[0, 1])) elif variant in ['periodic', 'cosh', 'sinh']: if variant in ['periodic', 'cosh']: @@ -404,7 +404,7 @@ class Corr: if(all([x is None for x in newcontent])): raise Exception('m_eff is undefined at all timeslices') - return Corr(newcontent, padding_back=1) + return Corr(newcontent, padding=[0, 1]) elif variant == 'arccosh': newcontent = [] @@ -415,7 +415,7 @@ class Corr: newcontent.append((self.content[t + 1] + self.content[t - 1]) / (2 * self.content[t])) if(all([x is None for x in newcontent])): raise Exception("m_eff is undefined at all timeslices") - return np.arccosh(Corr(newcontent, padding_back=1, padding_front=1)) + return np.arccosh(Corr(newcontent, padding=[1, 1])) else: raise Exception('Unknown variant.') diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index cb02b117..816be57e 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -402,7 +402,7 @@ def import_json_string(json_string, verbose=True, full_output=False): if len(tmp_o['tag']) == 0: del tmp_o['tag'] dat = get_Array_from_dict(tmp_o) - my_corr = Corr(list(dat), padding_front=padding_front, padding_back=padding_back) + my_corr = Corr(list(dat), padding=[padding_front, padding_back]) if corr_tag != 'None': my_corr.tag = corr_tag return my_corr diff --git a/tests/correlators_test.py b/tests/correlators_test.py index f4f5794a..ff3445e6 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -115,7 +115,7 @@ def test_plateau(): def test_padded_correlator(): my_list = [pe.Obs([np.random.normal(1.0, 0.1, 100)], ['ens1']) for o in range(8)] - my_corr = pe.Corr(my_list, padding_front=7, padding_back=3) + my_corr = pe.Corr(my_list, padding=[7, 3]) my_corr.reweighted [o for o in my_corr] diff --git a/tests/io_test.py b/tests/io_test.py index d660f34a..31211db4 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -101,7 +101,7 @@ def test_json_corr_io(): for fp in [0, 2]: for bp in [0, 7]: for corr_tag in [None, 'my_Corr_tag']: - my_corr = pe.Corr(obs_list, padding_front=fp, padding_back=bp) + my_corr = pe.Corr(obs_list, padding=[fp, bp]) my_corr.tag = corr_tag pe.input.json.dump_to_json(my_corr, 'corr') recover = pe.input.json.load_json('corr') @@ -116,7 +116,7 @@ def test_json_corr_2d_io(): for tag in [None, "test"]: obs_list[3][0, 1].tag = tag for padding in [0, 1]: - my_corr = pe.Corr(obs_list, padding_front=padding, padding_back=padding) + my_corr = pe.Corr(obs_list, padding=[padding, padding]) my_corr.tag = tag pe.input.json.dump_to_json(my_corr, 'corr') recover = pe.input.json.load_json('corr')