From 6c41810e8182e5d62e5037871d379d5587abf0cf Mon Sep 17 00:00:00 2001 From: Justus Date: Mon, 15 Nov 2021 15:55:26 +0100 Subject: [PATCH 001/220] added Qtop extraction for oQCD1.2 --- pyerrors/input/openQCD.py | 128 ++++++++++++++++++++++++++++++++++++++ pyerrors/input/sfcf.py | 63 ------------------- 2 files changed, 128 insertions(+), 63 deletions(-) diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index 5e1c8d49..2483baa9 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -343,3 +343,131 @@ def _read_array_openQCD2(fp): arr = _parse_array_openQCD2(d, n, size, tmp, quadrupel=True) return {'d': d, 'n': n, 'size': size, 'arr': arr} + + +def read_qtop(path, prefix, version = "1.2",**kwargs): + """Read qtop format from given folder structure. + + Parameters + ---------- + target -- specifies the topological sector to be reweighted to (default 0) + full -- if true read the charge instead of the reweighting factor. + """ + dtr_cnfg = 4 + L = 20 + c = 0.35 + target = 0 + full = False + + if 'target' in kwargs: + target = kwargs.get('target') + + + if kwargs.get('full'): + full = True + + if "r_start" in kwargs: + r_start = kwargs.get("r_start") + if "r_stop" in kwargs: + r_stop = kwargs.get("r_stop") + #if one wants to read specific files with this method... + if "files" in kwargs: + files = kwargs.get("files") + else: + #find files in path + found = [] + files = [] + for (dirpath, dirnames, filenames) in os.walk(path+"/"): + #print(filenames) + found.extend(filenames) + break + for f in found: + if fnmatch.fnmatch(f, prefix+"*"+".ms.dat"): + files.append(f) + print(files) + #now that we found our files, we dechiffer them... + rep_names = [] + + deltas = [] + for rep,file in enumerate(files): + + with open(path+"/"+file, "rb") as fp: + #this, for now, is only for version 1.2 + #header + t = fp.read(12) + header = struct.unpack('iii', t) + dn = header[0] + nn = header[1] + tmax = header[2] + print('dn:', dn) + print('nn:', nn) + print('tmax:', tmax) + t = fp.read(8) + eps = struct.unpack('d', t)[0] + print('eps:', eps) + + Q = [] + i = 1 + while 0 < 1: + t = fp.read(4) + if(len(t) < 4): + break + nc = struct.unpack('i',t)[0] + if(nc != i): + print("WARNING: possible missing config:" +str(i)) + #raise Exception('Config missing?') + else: + t = fp.read(8 * tmax * (nn + 1)) + t = fp.read(8 * tmax * (nn + 1)) + t = fp.read(8 * tmax * (nn + 1)) + tmpd = struct.unpack('d' * tmax * (nn + 1), t) + Q.append(tmpd) + i += 1 + #print(tmp) + + print('max_t:', dn * (nn) * eps) + + t_aim = (c * L) ** 2 / 8 + + print('t_aim:', t_aim) + index_aim = round(t_aim / eps / dn) + print('index_aim:', index_aim) + + + Q_sum = [] + for i, item in enumerate(Q): + Q_sum.append([sum(item[current:current + tmax]) for current in range(0, len(item), tmax)]) + Q_round = [] + for i in range(len(Q) // dtr_cnfg): + Q_round.append(round(Q_sum[dtr_cnfg * i][index_aim])) + + replica = len(files) + + tmp = [] + for q in Q_round: + #floats = list(map(float, line.split())) + if full: + tmp.append(q) #round(Q_sum[dtr_cnfg * i][index_aim]) + else: + if int(q) == target: #round(Q_sum[dtr_cnfg * i][index_aim]) + tmp.append(1.0) + else: + tmp.append(0.0) + + truncated_file = file[:-7] #as seen in previous examples, this could lead to some weird behaviour... maybe -7 fixes this. + print(truncated_file) + idx = truncated_file.index('r') + #print(truncated_file[idx:]) + # this might be a quite fishy way to find out which replicum we are actually talking about... + if "r_start" in kwargs: + tmp = tmp[r_start[int(truncated_file[idx+1:])-1]:] + if "r_stop" in kwargs: + tmp = tmp[:r_stop[int(truncated_file[idx+1:])-1]] + + rep_names.append(truncated_file[:idx] + '|' + truncated_file[idx:]) + + deltas.append(np.array(tmp)) + + + result = Obs(deltas, rep_names) + return result \ No newline at end of file diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index e48bdd16..706e26a9 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -229,66 +229,3 @@ def read_sfcf_c(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwarg result.append(Obs(deltas[t], new_names)) return result - -def read_qtop(path, prefix, **kwargs): - """Read qtop format from given folder structure. - - Parameters - ---------- - target -- specifies the topological sector to be reweighted to (default 0) - full -- if true read the charge instead of the reweighting factor. - """ - - if 'target' in kwargs: - target = kwargs.get('target') - else: - target = 0 - - if kwargs.get('full'): - full = 1 - else: - full = 0 - - ls = [] - for (dirpath, dirnames, filenames) in os.walk(path): - ls.extend(filenames) - break - - if not ls: - raise Exception('Error, directory not found') - - # Exclude files with different names - for exc in ls: - if not fnmatch.fnmatch(exc, prefix + '*'): - ls = list(set(ls) - set([exc])) - if len(ls) > 1: - ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) # New version, to cope with ids, etc. - replica = len(ls) - print('Read Q_top from', prefix[:-1], ',', replica, 'replica') - - deltas = [] - - for rep in range(replica): - tmp = [] - with open(path + '/' + ls[rep]) as fp: - for k, line in enumerate(fp): - floats = list(map(float, line.split())) - if full == 1: - tmp.append(floats[1]) - else: - if int(floats[1]) == target: - tmp.append(1.0) - else: - tmp.append(0.0) - - deltas.append(np.array(tmp)) - - rep_names = [] - for entry in ls: - truncated_entry = entry.split('.')[0] - idx = truncated_entry.index('r') - rep_names.append(truncated_entry[:idx] + '|' + truncated_entry[idx:]) - - result = Obs(deltas, rep_names) - - return result From bb9bfb78d3b99fd1736b311b18c81ecb3815382e Mon Sep 17 00:00:00 2001 From: Justus Date: Mon, 15 Nov 2021 15:57:26 +0100 Subject: [PATCH 002/220] first Qtop input test --- tests/input_test.ipynb | 136 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 tests/input_test.ipynb diff --git a/tests/input_test.ipynb b/tests/input_test.ipynb new file mode 100644 index 00000000..f241304a --- /dev/null +++ b/tests/input_test.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This file is used for testing some of the input methods." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os,sys,inspect\n", + "current_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\n", + "parent_dir = os.path.dirname(current_dir)\n", + "sys.path.insert(0, parent_dir) \n", + "\n", + "import pyerrors as pe\n", + "import pyerrors.input.openQCD as qcdin\n", + "import pyerrors.input.sfcf as sfin\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we will have a look at the input method for the topological charge $Q_{top}$, which is measured by the program ms from the openQCD package. For now, this part still in the making and depends on an actual file. Later, this should be changed to a more efficient way of making a proper input file.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['T29L20k0.13719r2.ms.dat', 'T29L20k0.13719r3.ms.dat', 'T29L20k0.13719r1.ms.dat', 'T29L20k0.13719r4.ms.dat']\n", + "dn: 10\n", + "nn: 60\n", + "tmax: 30\n", + "eps: 0.02\n", + "max_t: 12.0\n", + "t_aim: 6.125\n", + "index_aim: 31\n", + "T29L20k0.13719r2\n", + "dn: 10\n", + "nn: 60\n", + "tmax: 30\n", + "eps: 0.02\n", + "max_t: 12.0\n", + "t_aim: 6.125\n", + "index_aim: 31\n", + "T29L20k0.13719r3\n", + "dn: 10\n", + "nn: 60\n", + "tmax: 30\n", + "eps: 0.02\n", + "max_t: 12.0\n", + "t_aim: 6.125\n", + "index_aim: 31\n", + "T29L20k0.13719r1\n", + "dn: 10\n", + "nn: 60\n", + "tmax: 30\n", + "eps: 0.02\n", + "max_t: 12.0\n", + "t_aim: 6.125\n", + "index_aim: 31\n", + "T29L20k0.13719r4\n" + ] + } + ], + "source": [ + "r_qtop = qcdin.read_qtop(\"../../test_data\", prefix = \"T29L20k0.13719\",full = True, r_stop = [500,440,447,410])#, files = [\"T29L20k0.13719r1.ms.dat\"], )" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'T29L20k0.13719|r1': 500, 'T29L20k0.13719|r2': 440, 'T29L20k0.13719|r3': 447, 'T29L20k0.13719|r4': 410}\n", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -2 -2 -2 -2 -3 -3 -3 -3 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " + ] + } + ], + "source": [ + "print(r_qtop.shape)\n", + "#print(r_qtop.deltas['T29L20k0.13719|r1'])\n", + "for i in r_qtop.deltas['T29L20k0.13719|r2']:\n", + " print(round(r_qtop.value + i), end =\" \")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" + }, + "kernelspec": { + "display_name": "Python 3.9.7 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From c31034565af041220da517870e69c6c3ca5b0aa7 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 10:46:30 +0000 Subject: [PATCH 003/220] feat: jack_matmul no works with an arbitrary number of operands --- pyerrors/linalg.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index c8daeb97..e9f5dbd5 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -174,20 +174,19 @@ def matmul(*operands): return derived_array(multi_dot, operands) -def jack_matmul(a, b): +def jack_matmul(*operands): """Matrix multiply both operands making use of the jackknife approximation. Parameters ---------- - a : numpy.ndarray - First matrix, can be real or complex Obs valued - b : numpy.ndarray - Second matrix, can be real or complex Obs valued + operands : numpy.ndarray + Arbitrary number of 2d-numpy arrays which can be real or complex + Obs valued. For large matrices this is considerably faster compared to matmul. """ - if any(isinstance(o[0, 0], CObs) for o in [a, b]): + if any(isinstance(o[0, 0], CObs) for o in operands): def _exp_to_jack(matrix): base_matrix = np.empty_like(matrix) for (n, m), entry in np.ndenumerate(matrix): @@ -201,10 +200,10 @@ def jack_matmul(a, b): import_jackknife(entry.imag, name)) return base_matrix - j_a = _exp_to_jack(a) - j_b = _exp_to_jack(b) - r = j_a @ j_b - return _imp_from_jack(r, a.ravel()[0].real.names[0]) + r = _exp_to_jack(operands[0]) + for op in operands[1:]: + r = r @ _exp_to_jack(op) + return _imp_from_jack(r, op.ravel()[0].real.names[0]) else: def _exp_to_jack(matrix): base_matrix = np.empty_like(matrix) @@ -218,10 +217,10 @@ def jack_matmul(a, b): base_matrix[n, m] = import_jackknife(entry, name) return base_matrix - j_a = _exp_to_jack(a) - j_b = _exp_to_jack(b) - r = j_a @ j_b - return _imp_from_jack(r, a.ravel()[0].names[0]) + r = _exp_to_jack(operands[0]) + for op in operands[1:]: + r = r @ _exp_to_jack(op) + return _imp_from_jack(r, op.ravel()[0].names[0]) def inv(x): From ebbfaf8e801947bb3e486fcafcd887c9b41065aa Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 10:51:46 +0000 Subject: [PATCH 004/220] feat: tolerance of Obs.is_zero can now be specified --- pyerrors/obs.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 6ab1b852..1e594ea4 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -418,9 +418,17 @@ class Obs: """ return self.is_zero() or np.abs(self.value) <= sigma * self.dvalue - def is_zero(self): - """Checks whether the observable is zero within machine precision.""" - return np.isclose(0.0, self.value) and all(np.allclose(0.0, delta) for delta in self.deltas.values()) + def is_zero(self, rtol=1.e-5, atol=1.e-8): + """Checks whether the observable is zero within a given tolerance. + + Parameters + ---------- + rtol : float + Relative tolerance (for details see numpy documentation). + atol : float + Absolute tolerance (for details see numpy documentation). + """ + return np.isclose(0.0, self.value, rtol, atol) and all(np.allclose(0.0, delta, rtol, atol) for delta in self.deltas.values()) def plot_tauint(self, save=None): """Plot integrated autocorrelation time for each ensemble. From cf1c38462d31511a9d71ca6a94ec902dd421ad34 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 11:02:31 +0000 Subject: [PATCH 005/220] test: test for jack_matmul with multiple operands added --- tests/linalg_test.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 4cfa9107..58c876ee 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -92,6 +92,17 @@ def test_multi_dot(): assert e.is_zero(), t +def test_jack_multi_dot(): + for dim in [2, 4, 8]: + my_array = get_real_matrix(dim) + + tt = pe.linalg.jack_matmul(my_array, my_array, my_array) - pe.linalg.matmul(my_array, my_array, my_array) + + for t, e in np.ndenumerate(tt): + assert e.is_zero(atol=1e-1), t + assert np.isclose(e.value, 0.0) + + def test_matmul_irregular_histories(): dim = 2 length = 500 From 0954ebee6eb58c5e79cd7e589f28a731115f592c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 11:03:55 +0000 Subject: [PATCH 006/220] test: test for jack_matmul with mutliple operands extended --- tests/linalg_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 58c876ee..5af84b52 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -99,6 +99,8 @@ def test_jack_multi_dot(): tt = pe.linalg.jack_matmul(my_array, my_array, my_array) - pe.linalg.matmul(my_array, my_array, my_array) for t, e in np.ndenumerate(tt): + e.gamma_method() + assert e.is_zero_within_error(0.01) assert e.is_zero(atol=1e-1), t assert np.isclose(e.value, 0.0) From 28bf0f1701a1740a4e1a9ccc99c94d17c71f31f6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 11:17:20 +0000 Subject: [PATCH 007/220] feat: linalg.jack_matmul now also works with irregular monte carlo chains --- pyerrors/linalg.py | 20 +++++++++++++------- pyerrors/obs.py | 4 ++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index e9f5dbd5..075b9605 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -187,40 +187,46 @@ def jack_matmul(*operands): """ if any(isinstance(o[0, 0], CObs) for o in operands): + name = operands[0][0, 0].real.names[0] + idl = operands[0][0, 0].real.idl[name] + def _exp_to_jack(matrix): base_matrix = np.empty_like(matrix) for (n, m), entry in np.ndenumerate(matrix): base_matrix[n, m] = entry.real.export_jackknife() + 1j * entry.imag.export_jackknife() return base_matrix - def _imp_from_jack(matrix, name): + def _imp_from_jack(matrix): base_matrix = np.empty_like(matrix) for (n, m), entry in np.ndenumerate(matrix): - base_matrix[n, m] = CObs(import_jackknife(entry.real, name), - import_jackknife(entry.imag, name)) + base_matrix[n, m] = CObs(import_jackknife(entry.real, name, [idl]), + import_jackknife(entry.imag, name, [idl])) return base_matrix r = _exp_to_jack(operands[0]) for op in operands[1:]: r = r @ _exp_to_jack(op) - return _imp_from_jack(r, op.ravel()[0].real.names[0]) + return _imp_from_jack(r) else: + name = operands[0][0, 0].names[0] + idl = operands[0][0, 0].idl[name] + def _exp_to_jack(matrix): base_matrix = np.empty_like(matrix) for (n, m), entry in np.ndenumerate(matrix): base_matrix[n, m] = entry.export_jackknife() return base_matrix - def _imp_from_jack(matrix, name): + def _imp_from_jack(matrix): base_matrix = np.empty_like(matrix) for (n, m), entry in np.ndenumerate(matrix): - base_matrix[n, m] = import_jackknife(entry, name) + base_matrix[n, m] = import_jackknife(entry, name, [idl]) return base_matrix r = _exp_to_jack(operands[0]) for op in operands[1:]: r = r @ _exp_to_jack(op) - return _imp_from_jack(r, op.ravel()[0].names[0]) + return _imp_from_jack(r) def inv(x): diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 1e594ea4..56a67e57 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1559,7 +1559,7 @@ def load_object(path): return pickle.load(file) -def import_jackknife(jacks, name): +def import_jackknife(jacks, name, idl=None): """Imports jackknife samples and returns an Obs Parameters @@ -1573,7 +1573,7 @@ def import_jackknife(jacks, name): length = len(jacks) - 1 prj = (np.ones((length, length)) - (length - 1) * np.identity(length)) samples = jacks[1:] @ prj - new_obs = Obs([samples], [name]) + new_obs = Obs([samples], [name], idl=idl) new_obs._value = jacks[0] return new_obs From 976d9c3f29913fad081a9a6edb2b6c237a156868 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 11:49:46 +0000 Subject: [PATCH 008/220] feat: linalg.jack_matmul now also works with non Obs valued matrices. --- pyerrors/linalg.py | 10 ++++++++-- tests/linalg_test.py | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index 075b9605..fb121e6a 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -205,7 +205,10 @@ def jack_matmul(*operands): r = _exp_to_jack(operands[0]) for op in operands[1:]: - r = r @ _exp_to_jack(op) + if isinstance(op[0, 0], CObs): + r = r @ _exp_to_jack(op) + else: + r = r @ op return _imp_from_jack(r) else: name = operands[0][0, 0].names[0] @@ -225,7 +228,10 @@ def jack_matmul(*operands): r = _exp_to_jack(operands[0]) for op in operands[1:]: - r = r @ _exp_to_jack(op) + if isinstance(op[0, 0], Obs): + r = r @ _exp_to_jack(op) + else: + r = r @ op return _imp_from_jack(r) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 5af84b52..46ee6c89 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -55,23 +55,46 @@ def test_jack_matmul(): check1 = pe.linalg.jack_matmul(tt, tt) - pe.linalg.matmul(tt, tt) [o.gamma_method() for o in check1.ravel()] assert np.all([o.is_zero_within_error(0.1) for o in check1.ravel()]) + assert np.all([o.dvalue < 0.001 for o in check1.ravel()]) trace1 = np.trace(check1) trace1.gamma_method() assert trace1.dvalue < 0.001 - tt2 = get_complex_matrix(8) - check2 = pe.linalg.jack_matmul(tt2, tt2) - pe.linalg.matmul(tt2, tt2) + tr = np.random.rand(8, 8) + check2 = pe.linalg.jack_matmul(tt, tr) - pe.linalg.matmul(tt, tr) [o.gamma_method() for o in check2.ravel()] - assert np.all([o.real.is_zero_within_error(0.1) for o in check2.ravel()]) - assert np.all([o.imag.is_zero_within_error(0.1) for o in check2.ravel()]) + assert np.all([o.is_zero_within_error(0.1) for o in check2.ravel()]) + assert np.all([o.dvalue < 0.001 for o in check2.ravel()]) trace2 = np.trace(check2) trace2.gamma_method() - assert trace2.real.dvalue < 0.001 - assert trace2.imag.dvalue < 0.001 + assert trace2.dvalue < 0.001 + tt2 = get_complex_matrix(8) + check3 = pe.linalg.jack_matmul(tt2, tt2) - pe.linalg.matmul(tt2, tt2) + [o.gamma_method() for o in check3.ravel()] + assert np.all([o.real.is_zero_within_error(0.1) for o in check3.ravel()]) + assert np.all([o.imag.is_zero_within_error(0.1) for o in check3.ravel()]) + assert np.all([o.real.dvalue < 0.001 for o in check3.ravel()]) + assert np.all([o.imag.dvalue < 0.001 for o in check3.ravel()]) + trace3 = np.trace(check3) + trace3.gamma_method() + assert trace3.real.dvalue < 0.001 + assert trace3.imag.dvalue < 0.001 + + tr2 = np.random.rand(8, 8) + 1j * np.random.rand(8, 8) + check4 = pe.linalg.jack_matmul(tt2, tr2) - pe.linalg.matmul(tt2, tr2) + [o.gamma_method() for o in check4.ravel()] + assert np.all([o.real.is_zero_within_error(0.1) for o in check4.ravel()]) + assert np.all([o.imag.is_zero_within_error(0.1) for o in check4.ravel()]) + assert np.all([o.real.dvalue < 0.001 for o in check4.ravel()]) + assert np.all([o.imag.dvalue < 0.001 for o in check4.ravel()]) + trace4 = np.trace(check4) + trace4.gamma_method() + assert trace4.real.dvalue < 0.001 + assert trace4.imag.dvalue < 0.001 def test_multi_dot(): - for dim in [4, 8]: + for dim in [4, 6]: my_list = [] length = 1000 + np.random.randint(200) for i in range(dim ** 2): @@ -167,8 +190,8 @@ def test_complex_matrix_inverse(): base_matrix = np.empty((dimension, dimension), dtype=object) matrix = np.empty((dimension, dimension), dtype=complex) for (n, m), entry in np.ndenumerate(base_matrix): - exponent_real = np.random.normal(3, 5) - exponent_imag = np.random.normal(3, 5) + exponent_real = np.random.normal(2, 3) + exponent_imag = np.random.normal(2, 3) base_matrix[n, m] = pe.CObs(pe.pseudo_Obs(2 + 10 ** exponent_real, 10 ** (exponent_real - 1), 't'), pe.pseudo_Obs(2 + 10 ** exponent_imag, 10 ** (exponent_imag - 1), 't')) From cedceced61199401b48d8a7ae6672cbe89a10da9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 12:39:32 +0000 Subject: [PATCH 009/220] feat: Npr_matrix.g5H now makes use of gamma5 hermiticity property of the propagator --- pyerrors/npr.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pyerrors/npr.py b/pyerrors/npr.py index 013e0d25..7d6d28d6 100644 --- a/pyerrors/npr.py +++ b/pyerrors/npr.py @@ -20,13 +20,10 @@ class Npr_matrix(np.ndarray): def g5H(self): """Gamma_5 hermitean conjugate - Returns gamma_5 @ M.T.conj() @ gamma_5 and exchanges in and out going - momenta. Works only for 12x12 matrices. + Uses the fact that the propagator is gamma5 hermitean, so just the + in and out momenta of the propagator are exchanged. """ - if self.shape != (12, 12): - raise Exception('g5H only works for 12x12 matrices.') - extended_g5 = np.kron(np.eye(3, dtype=int), gamma5) - return Npr_matrix(matmul(extended_g5, self.conj().T, extended_g5), + return Npr_matrix(self, mom_in=self.mom_out, mom_out=self.mom_in) From 0bf1e6cfd4cf696074469295596c747cb945eee7 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 12:41:37 +0000 Subject: [PATCH 010/220] fix: uneeded import removed --- pyerrors/npr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/npr.py b/pyerrors/npr.py index 7d6d28d6..5075cd3b 100644 --- a/pyerrors/npr.py +++ b/pyerrors/npr.py @@ -1,7 +1,7 @@ import warnings import numpy as np from .linalg import inv, matmul -from .dirac import gamma, gamma5 +from .dirac import gamma L = None From 49af3a93ca030c151a78ed65cd32ee82969861cf Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 12:45:19 +0000 Subject: [PATCH 011/220] fix: gamma_method call removed from read_Bilinear_hd5 --- pyerrors/input/hadrons.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 5f3d2646..1fa1b64d 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -176,7 +176,6 @@ def read_Bilinear_hd5(path, filestem, ens_id, order='F'): real = Obs([rolled_array[si, sj, ci, cj].real], [ens_id], idl=[cnfg_numbers]) imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[cnfg_numbers]) matrix[si, sj, ci, cj] = CObs(real, imag) - matrix[si, sj, ci, cj].gamma_method() result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order=order), mom_in=mom_in, mom_out=mom_out) From 5bd8e8402b1f9471a864174373896f7bab83ee9e Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 13:59:47 +0000 Subject: [PATCH 012/220] feat: read ExternalLeg and Bilinear routines speed up --- pyerrors/input/hadrons.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 1fa1b64d..8073871e 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -107,9 +107,7 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): file = h5py.File(path + '/' + hd5_file, "r") raw_data = file['ExternalLeg/corr'][0][0].view('complex') corr_data.append(raw_data) - if mom is not None: - assert np.allclose(mom, np.array(str(file['ExternalLeg/info'].attrs['pIn'])[3:-2].strip().split(' '), dtype=int)) - else: + if mom is None: mom = np.array(str(file['ExternalLeg/info'].attrs['pIn'])[3:-2].strip().split(' '), dtype=int) file.close() corr_data = np.array(corr_data) @@ -121,7 +119,6 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): real = Obs([rolled_array[si, sj, ci, cj].real], [ens_id], idl=[cnfg_numbers]) imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[cnfg_numbers]) matrix[si, sj, ci, cj] = CObs(real, imag) - matrix[si, sj, ci, cj].gamma_method() return Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order=order), mom_in=mom) @@ -153,13 +150,9 @@ def read_Bilinear_hd5(path, filestem, ens_id, order='F'): corr_data[name] = [] raw_data = file['Bilinear/Bilinear_' + str(i) + '/corr'][0][0].view('complex') corr_data[name].append(raw_data) - if mom_in is not None: - assert np.allclose(mom_in, np.array(str(file['Bilinear/Bilinear_' + str(i) + '/info'].attrs['pIn'])[3:-2].strip().split(' '), dtype=int)) - else: + if mom_in is None: mom_in = np.array(str(file['Bilinear/Bilinear_' + str(i) + '/info'].attrs['pIn'])[3:-2].strip().split(' '), dtype=int) - if mom_out is not None: - assert np.allclose(mom_out, np.array(str(file['Bilinear/Bilinear_' + str(i) + '/info'].attrs['pOut'])[3:-2].strip().split(' '), dtype=int)) - else: + if mom_out is None: mom_out = np.array(str(file['Bilinear/Bilinear_' + str(i) + '/info'].attrs['pOut'])[3:-2].strip().split(' '), dtype=int) file.close() From 8c95ca8318e174d8b6989c59305b22a43b730e43 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 14:39:43 +0000 Subject: [PATCH 013/220] feat: input.hadrons._get_files optimized --- pyerrors/input/hadrons.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 8073871e..2d349845 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -10,16 +10,10 @@ from ..npr import Npr_matrix def _get_files(path, filestem): - ls = [] - for (dirpath, dirnames, filenames) in os.walk(path): - ls.extend(filenames) - break + ls = os.listdir(path) # Clean up file list - files = [] - for line in ls: - if line.startswith(filestem): - files.append(line) + files = list(filter(lambda x: x.startswith(filestem), ls)) if not files: raise Exception('No files starting with', filestem, 'in folder', path) From 4df0e7bc82b898e01022a2c78eadecd22bab7df8 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 15:14:30 +0000 Subject: [PATCH 014/220] feat: determination of idx in input.hadrons module optimized --- pyerrors/input/hadrons.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 2d349845..7be3fd9d 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -29,10 +29,15 @@ def _get_files(path, filestem): for line in files: cnfg_numbers.append(get_cnfg_number(line)) - if not all(np.diff(cnfg_numbers) == np.diff(cnfg_numbers)[0]): + dc = np.unique(np.diff(cnfg_numbers)) + if np.any(dc < 0): + raise Exception("Unsorted files") + if len(dc) == 1: + idx = range(cnfg_numbers[0], cnfg_numbers[-1] + dc[0], dc[0]) + else: raise Exception('Configurations are not evenly spaced.') - return files, cnfg_numbers + return files, idx def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson'): @@ -55,7 +60,7 @@ def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson'): from other modules with similar structures. """ - files, cnfg_numbers = _get_files(path, filestem) + files, idx = _get_files(path, filestem) corr_data = [] infos = [] @@ -72,7 +77,7 @@ def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson'): l_obs = [] for c in corr_data.T: - l_obs.append(Obs([c], [ens_id], idl=[cnfg_numbers])) + l_obs.append(Obs([c], [ens_id], idl=[idx])) corr = Corr(l_obs) corr.tag = r", ".join(infos) @@ -92,7 +97,7 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): 'C' for the last index changing fastest (16 3x3 matrices), """ - files, cnfg_numbers = _get_files(path, filestem) + files, idx = _get_files(path, filestem) mom = None @@ -110,8 +115,8 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): matrix = np.empty((rolled_array.shape[:-1]), dtype=object) for si, sj, ci, cj in np.ndindex(rolled_array.shape[:-1]): - real = Obs([rolled_array[si, sj, ci, cj].real], [ens_id], idl=[cnfg_numbers]) - imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[cnfg_numbers]) + real = Obs([rolled_array[si, sj, ci, cj].real], [ens_id], idl=[idx]) + imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[idx]) matrix[si, sj, ci, cj] = CObs(real, imag) return Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order=order), mom_in=mom) @@ -130,7 +135,7 @@ def read_Bilinear_hd5(path, filestem, ens_id, order='F'): 'C' for the last index changing fastest (16 3x3 matrices), """ - files, cnfg_numbers = _get_files(path, filestem) + files, idx = _get_files(path, filestem) mom_in = None mom_out = None @@ -160,8 +165,8 @@ def read_Bilinear_hd5(path, filestem, ens_id, order='F'): matrix = np.empty((rolled_array.shape[:-1]), dtype=object) for si, sj, ci, cj in np.ndindex(rolled_array.shape[:-1]): - real = Obs([rolled_array[si, sj, ci, cj].real], [ens_id], idl=[cnfg_numbers]) - imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[cnfg_numbers]) + real = Obs([rolled_array[si, sj, ci, cj].real], [ens_id], idl=[idx]) + imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[idx]) matrix[si, sj, ci, cj] = CObs(real, imag) result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order=order), mom_in=mom_in, mom_out=mom_out) From 1326e9c8633cea202cf0f1fd96133a73cba18b11 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 18 Nov 2021 15:39:10 +0000 Subject: [PATCH 015/220] feat: tag added to Zq in npr module --- pyerrors/npr.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyerrors/npr.py b/pyerrors/npr.py index 5075cd3b..5e67ce9e 100644 --- a/pyerrors/npr.py +++ b/pyerrors/npr.py @@ -102,4 +102,7 @@ def Zq(inv_prop, fermion='Wilson'): if not res.imag.is_zero_within_error(5): warnings.warn("Imaginary part of Zq is not zero within 5 sigma") return res + + res.real.tag = "Zq '" + fermion + "', p=" + str(inv_prop.mom_in) + return res.real From 5da20365bf750892a54cf8b4ab9b0f2fdadfca46 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 22 Nov 2021 16:06:58 +0000 Subject: [PATCH 016/220] refactor!: npr module removed, Npr_matrix class moved to input.hadrons --- pyerrors/__init__.py | 1 - pyerrors/input/hadrons.py | 41 ++++++++++++++- pyerrors/npr.py | 108 -------------------------------------- 3 files changed, 40 insertions(+), 110 deletions(-) delete mode 100644 pyerrors/npr.py diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index c56af765..694f9017 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -251,7 +251,6 @@ from . import input from . import linalg from . import misc from . import mpm -from . import npr from . import roots from .version import __version__ diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 7be3fd9d..b006d81b 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -6,7 +6,6 @@ import h5py import numpy as np from ..obs import Obs, CObs from ..correlators import Corr -from ..npr import Npr_matrix def _get_files(path, filestem): @@ -84,6 +83,46 @@ def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson'): return corr +class Npr_matrix(np.ndarray): + + def __new__(cls, input_array, mom_in=None, mom_out=None): + obj = np.asarray(input_array).view(cls) + obj.mom_in = mom_in + obj.mom_out = mom_out + return obj + + @property + def g5H(self): + """Gamma_5 hermitean conjugate + + Uses the fact that the propagator is gamma5 hermitean, so just the + in and out momenta of the propagator are exchanged. + """ + return Npr_matrix(self, + mom_in=self.mom_out, + mom_out=self.mom_in) + + def _propagate_mom(self, other, name): + s_mom = getattr(self, name, None) + o_mom = getattr(other, name, None) + if s_mom is not None and o_mom is not None: + if not np.allclose(s_mom, o_mom): + raise Exception(name + ' does not match.') + return o_mom if o_mom is not None else s_mom + + def __matmul__(self, other): + return self.__new__(Npr_matrix, + super().__matmul__(other), + self._propagate_mom(other, 'mom_in'), + self._propagate_mom(other, 'mom_out')) + + def __array_finalize__(self, obj): + if obj is None: + return + self.mom_in = getattr(obj, 'mom_in', None) + self.mom_out = getattr(obj, 'mom_out', None) + + def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): """Read hadrons ExternalLeg hdf5 file and output an array of CObs diff --git a/pyerrors/npr.py b/pyerrors/npr.py deleted file mode 100644 index 5e67ce9e..00000000 --- a/pyerrors/npr.py +++ /dev/null @@ -1,108 +0,0 @@ -import warnings -import numpy as np -from .linalg import inv, matmul -from .dirac import gamma - - -L = None -T = None - - -class Npr_matrix(np.ndarray): - - def __new__(cls, input_array, mom_in=None, mom_out=None): - obj = np.asarray(input_array).view(cls) - obj.mom_in = mom_in - obj.mom_out = mom_out - return obj - - @property - def g5H(self): - """Gamma_5 hermitean conjugate - - Uses the fact that the propagator is gamma5 hermitean, so just the - in and out momenta of the propagator are exchanged. - """ - return Npr_matrix(self, - mom_in=self.mom_out, - mom_out=self.mom_in) - - def _propagate_mom(self, other, name): - s_mom = getattr(self, name, None) - o_mom = getattr(other, name, None) - if s_mom is not None and o_mom is not None: - if not np.allclose(s_mom, o_mom): - raise Exception(name + ' does not match.') - return o_mom if o_mom is not None else s_mom - - def __matmul__(self, other): - return self.__new__(Npr_matrix, - super().__matmul__(other), - self._propagate_mom(other, 'mom_in'), - self._propagate_mom(other, 'mom_out')) - - def __array_finalize__(self, obj): - if obj is None: - return - self.mom_in = getattr(obj, 'mom_in', None) - self.mom_out = getattr(obj, 'mom_out', None) - - -def _check_geometry(): - if L is None: - raise Exception("Spatial extent 'L' not set.") - else: - if not isinstance(L, int): - raise Exception("Spatial extent 'L' must be an integer.") - if T is None: - raise Exception("Temporal extent 'T' not set.") - if not isinstance(T, int): - raise Exception("Temporal extent 'T' must be an integer.") - - -def inv_propagator(prop): - """ Inverts a 12x12 quark propagator""" - if prop.shape != (12, 12): - raise Exception("Only 12x12 propagators can be inverted.") - return Npr_matrix(inv(prop), prop.mom_in) - - -def Zq(inv_prop, fermion='Wilson'): - """ Calculates the quark field renormalization constant Zq - - Parameters - ---------- - inv_prop : array - Inverted 12x12 quark propagator - fermion : str - Fermion type for which the tree-level propagator is used - in the calculation of Zq. Default Wilson. - """ - _check_geometry() - mom = np.copy(inv_prop.mom_in) - mom[3] /= T / L - sin_mom = np.sin(2 * np.pi / L * mom) - - if fermion == 'Wilson': - p_slash = -1j * (sin_mom[0] * gamma[0] + sin_mom[1] * gamma[1] + sin_mom[2] * gamma[2] + sin_mom[3] * gamma[3]) / np.sum(sin_mom ** 2) - elif fermion == 'Continuum': - p_mom = 2 * np.pi / L * mom - p_slash = -1j * (p_mom[0] * gamma[0] + p_mom[1] * gamma[1] + p_mom[2] * gamma[2] + p_mom[3] * gamma[3]) / np.sum(p_mom ** 2) - elif fermion == 'DWF': - W = np.sum(1 - np.cos(2 * np.pi / L * mom)) - s2 = np.sum(sin_mom ** 2) - p_slash = -1j * (sin_mom[0] * gamma[0] + sin_mom[1] * gamma[1] + sin_mom[2] * gamma[2] + sin_mom[3] * gamma[3]) - p_slash /= 2 * (W - 1 + np.sqrt((1 - W) ** 2 + s2)) - else: - raise Exception("Fermion type '" + fermion + "' not implemented") - - res = 1 / 12. * np.trace(matmul(inv_prop, np.kron(np.eye(3, dtype=int), p_slash))) - res.gamma_method() - - if not res.imag.is_zero_within_error(5): - warnings.warn("Imaginary part of Zq is not zero within 5 sigma") - return res - - res.real.tag = "Zq '" + fermion + "', p=" + str(inv_prop.mom_in) - - return res.real From 8234ac037b4367f012c94359022bcd9c9a20b5b2 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 24 Nov 2021 17:15:30 +0000 Subject: [PATCH 017/220] feat: hadrons input routines now accept a range of configs as optional argument --- pyerrors/input/hadrons.py | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index b006d81b..45c14479 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -1,6 +1,3 @@ -#!/usr/bin/env python -# coding: utf-8 - import os import h5py import numpy as np @@ -8,7 +5,7 @@ from ..obs import Obs, CObs from ..correlators import Corr -def _get_files(path, filestem): +def _get_files(path, filestem, idl): ls = os.listdir(path) # Clean up file list @@ -23,11 +20,19 @@ def _get_files(path, filestem): # Sort according to configuration number files.sort(key=get_cnfg_number) - # Check that configurations are evenly spaced cnfg_numbers = [] + filtered_files = [] for line in files: - cnfg_numbers.append(get_cnfg_number(line)) + no = get_cnfg_number(line) + if idl: + if no in list(idl): + filtered_files.append(line) + cnfg_numbers.append(no) + else: + filtered_files.append(line) + cnfg_numbers.append(no) + # Check that configurations are evenly spaced dc = np.unique(np.diff(cnfg_numbers)) if np.any(dc < 0): raise Exception("Unsorted files") @@ -36,10 +41,10 @@ def _get_files(path, filestem): else: raise Exception('Configurations are not evenly spaced.') - return files, idx + return filtered_files, idx -def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson'): +def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson', idl=None): """Read hadrons meson hdf5 file and extract the meson labeled 'meson' Parameters @@ -57,9 +62,11 @@ def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson'): Label of the upmost directory in the hdf5 file, default 'meson' for outputs of the Meson module. Can be altered to read input from other modules with similar structures. + idl : range + If specified only conifgurations in the given range are read in. """ - files, idx = _get_files(path, filestem) + files, idx = _get_files(path, filestem, idl) corr_data = [] infos = [] @@ -123,7 +130,7 @@ class Npr_matrix(np.ndarray): self.mom_out = getattr(obj, 'mom_out', None) -def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): +def read_ExternalLeg_hd5(path, filestem, ens_id, order='F', idl=None): """Read hadrons ExternalLeg hdf5 file and output an array of CObs Parameters @@ -134,9 +141,11 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): order -- order in which the array is to be reshaped, 'F' for the first index changing fastest (9 4x4 matrices) default. 'C' for the last index changing fastest (16 3x3 matrices), + idl : range + If specified only conifgurations in the given range are read in. """ - files, idx = _get_files(path, filestem) + files, idx = _get_files(path, filestem, idl) mom = None @@ -161,7 +170,7 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F'): return Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order=order), mom_in=mom) -def read_Bilinear_hd5(path, filestem, ens_id, order='F'): +def read_Bilinear_hd5(path, filestem, ens_id, order='F', idl=None): """Read hadrons Bilinear hdf5 file and output an array of CObs Parameters @@ -172,9 +181,11 @@ def read_Bilinear_hd5(path, filestem, ens_id, order='F'): order -- order in which the array is to be reshaped, 'F' for the first index changing fastest (9 4x4 matrices) default. 'C' for the last index changing fastest (16 3x3 matrices), + idl : range + If specified only conifgurations in the given range are read in. """ - files, idx = _get_files(path, filestem) + files, idx = _get_files(path, filestem, idl) mom_in = None mom_out = None From 42c4baa8ba46aece45d1ea5c46348a35272d427f Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 24 Nov 2021 17:17:04 +0000 Subject: [PATCH 018/220] fix: optional parameter order removed from hadrons npr input routines --- pyerrors/input/hadrons.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 45c14479..1f21c3e0 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -130,7 +130,7 @@ class Npr_matrix(np.ndarray): self.mom_out = getattr(obj, 'mom_out', None) -def read_ExternalLeg_hd5(path, filestem, ens_id, order='F', idl=None): +def read_ExternalLeg_hd5(path, filestem, ens_id, idl=None): """Read hadrons ExternalLeg hdf5 file and output an array of CObs Parameters @@ -138,9 +138,6 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F', idl=None): path -- path to the files to read filestem -- namestem of the files to read ens_id -- name of the ensemble, required for internal bookkeeping - order -- order in which the array is to be reshaped, - 'F' for the first index changing fastest (9 4x4 matrices) default. - 'C' for the last index changing fastest (16 3x3 matrices), idl : range If specified only conifgurations in the given range are read in. """ @@ -167,10 +164,10 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, order='F', idl=None): imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[idx]) matrix[si, sj, ci, cj] = CObs(real, imag) - return Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order=order), mom_in=mom) + return Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom) -def read_Bilinear_hd5(path, filestem, ens_id, order='F', idl=None): +def read_Bilinear_hd5(path, filestem, ens_id, idl=None): """Read hadrons Bilinear hdf5 file and output an array of CObs Parameters @@ -178,9 +175,6 @@ def read_Bilinear_hd5(path, filestem, ens_id, order='F', idl=None): path -- path to the files to read filestem -- namestem of the files to read ens_id -- name of the ensemble, required for internal bookkeeping - order -- order in which the array is to be reshaped, - 'F' for the first index changing fastest (9 4x4 matrices) default. - 'C' for the last index changing fastest (16 3x3 matrices), idl : range If specified only conifgurations in the given range are read in. """ @@ -219,6 +213,6 @@ def read_Bilinear_hd5(path, filestem, ens_id, order='F', idl=None): imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[idx]) matrix[si, sj, ci, cj] = CObs(real, imag) - result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order=order), mom_in=mom_in, mom_out=mom_out) + result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom_in, mom_out=mom_out) return result_dict From bb6d380f9f0cc2799e8fcb54ac9b9cae9fd0d049 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 24 Nov 2021 17:26:02 +0000 Subject: [PATCH 019/220] refactor: load and dump object moved to misc --- pyerrors/__init__.py | 2 +- pyerrors/correlators.py | 3 ++- pyerrors/misc.py | 33 +++++++++++++++++++++++++++++++++ pyerrors/obs.py | 32 -------------------------------- 4 files changed, 36 insertions(+), 34 deletions(-) diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index 694f9017..f2194cdb 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -246,10 +246,10 @@ See `pyerrors.obs.Obs.export_jackknife` for details. from .obs import * from .correlators import * from .fits import * +from .misc import * from . import dirac from . import input from . import linalg -from . import misc from . import mpm from . import roots diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 7e333cdb..a63a2b49 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -3,7 +3,8 @@ import numpy as np import autograd.numpy as anp import matplotlib.pyplot as plt import scipy.linalg -from .obs import Obs, dump_object, reweight, correlate +from .obs import Obs, reweight, correlate +from .misc import dump_object from .fits import least_squares from .linalg import eigh, inv, cholesky from .roots import find_root diff --git a/pyerrors/misc.py b/pyerrors/misc.py index 1baa5e53..aee6da37 100644 --- a/pyerrors/misc.py +++ b/pyerrors/misc.py @@ -1,7 +1,40 @@ +import pickle import numpy as np from .obs import Obs +def dump_object(obj, name, **kwargs): + """Dump object into pickle file. + + Parameters + ---------- + obj : object + object to be saved in the pickle file + name : str + name of the file + path : str + specifies a custom path for the file (default '.') + """ + if 'path' in kwargs: + file_name = kwargs.get('path') + '/' + name + '.p' + else: + file_name = name + '.p' + with open(file_name, 'wb') as fb: + pickle.dump(obj, fb) + + +def load_object(path): + """Load object from pickle file. + + Parameters + ---------- + path : str + path to the file + """ + with open(path, 'rb') as file: + return pickle.load(file) + + def gen_correlated_data(means, cov, name, tau=0.5, samples=1000): """ Generate observables with given covariance and autocorrelation times. diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 56a67e57..709664b7 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1527,38 +1527,6 @@ def pseudo_Obs(value, dvalue, name, samples=1000): return res -def dump_object(obj, name, **kwargs): - """Dump object into pickle file. - - Parameters - ---------- - obj : object - object to be saved in the pickle file - name : str - name of the file - path : str - specifies a custom path for the file (default '.') - """ - if 'path' in kwargs: - file_name = kwargs.get('path') + '/' + name + '.p' - else: - file_name = name + '.p' - with open(file_name, 'wb') as fb: - pickle.dump(obj, fb) - - -def load_object(path): - """Load object from pickle file. - - Parameters - ---------- - path : str - path to the file - """ - with open(path, 'rb') as file: - return pickle.load(file) - - def import_jackknife(jacks, name, idl=None): """Imports jackknife samples and returns an Obs From f808c2243ec4849438451818268b6fc0ad25fb02 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 24 Nov 2021 17:29:51 +0000 Subject: [PATCH 020/220] docs: gen_correlated_data docstring improved --- pyerrors/misc.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pyerrors/misc.py b/pyerrors/misc.py index aee6da37..e3bfbc33 100644 --- a/pyerrors/misc.py +++ b/pyerrors/misc.py @@ -40,12 +40,17 @@ def gen_correlated_data(means, cov, name, tau=0.5, samples=1000): Parameters ---------- - means -- list containing the mean value of each observable. - cov -- covariance matrix for the data to be geneated. - name -- ensemble name for the data to be geneated. - tau -- can either be a real number or a list with an entry for - every dataset. - samples -- number of samples to be generated for each observable. + means : list + list containing the mean value of each observable. + cov : numpy.ndarray + covariance matrix for the data to be generated. + name : str + ensemble name for the data to be geneated. + tau : float or list + can either be a real number or a list with an entry for + every dataset. + samples : int + number of samples to be generated for each observable. """ assert len(means) == cov.shape[-1] From b2a249302ab67fe94222d6c4d7e55ec255a81174 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 26 Nov 2021 12:24:38 +0000 Subject: [PATCH 021/220] fix: root module now also works with irregular monte carlo chains --- pyerrors/roots.py | 6 ++++-- tests/roots_test.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pyerrors/roots.py b/pyerrors/roots.py index a932fa8c..99434a1c 100644 --- a/pyerrors/roots.py +++ b/pyerrors/roots.py @@ -1,6 +1,6 @@ import scipy.optimize from autograd import jacobian -from .obs import derived_observable, pseudo_Obs +from .obs import derived_observable def find_root(d, func, guess=1.0, **kwargs): @@ -33,4 +33,6 @@ def find_root(d, func, guess=1.0, **kwargs): da = jacobian(lambda u, v: func(v, u))(d.value, root[0]) deriv = - da / dx - return derived_observable(lambda x, **kwargs: x[0], [pseudo_Obs(root, 0.0, d.names[0], d.shape[d.names[0]]), d], man_grad=[0, deriv]) + res = derived_observable(lambda x, **kwargs: x[0], [d], man_grad=[deriv]) + res._value = root[0] + return res diff --git a/tests/roots_test.py b/tests/roots_test.py index d7c4ed1f..8a4720d4 100644 --- a/tests/roots_test.py +++ b/tests/roots_test.py @@ -17,3 +17,15 @@ def test_root_linear(): assert np.isclose(my_root.value, value) difference = my_obs - my_root assert difference.is_zero() + + +def test_root_linear_idl(): + + def root_function(x, d): + return x - d + + my_obs = pe.Obs([np.random.rand(50)], ['t'], idl=[range(20, 120, 2)]) + my_root = pe.roots.find_root(my_obs, root_function) + + difference = my_obs - my_root + assert difference.is_zero() From 443e4eb74e5a0401c6dc1de8b8193484425084c9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 26 Nov 2021 12:28:19 +0000 Subject: [PATCH 022/220] fix: fits now work with irregular Monte Carlo histories --- pyerrors/fits.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 26ab9d11..677f6eba 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -301,7 +301,8 @@ def total_least_squares(x, y, func, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0], [pseudo_Obs(out.beta[i], 0.0, y[0].names[0], y[0].shape[y[0].names[0]])] + list(x.ravel()) + list(y), man_grad=[0] + list(deriv_x[i]) + list(deriv_y[i]))) + result.append(derived_observable(lambda x, **kwargs: x[0], list(x.ravel()) + list(y), man_grad=list(deriv_x[i]) + list(deriv_y[i]))) + result[-1]._value = out.beta[i] output.fit_parameters = result + const_par @@ -418,7 +419,8 @@ def _prior_fit(x, y, func, priors, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0], [pseudo_Obs(params[i], 0.0, y[0].names[0], y[0].shape[y[0].names[0]])] + list(y) + list(loc_priors), man_grad=[0] + list(deriv[i]))) + result.append(derived_observable(lambda x, **kwargs: x[0], list(y) + list(loc_priors), man_grad=list(deriv[i]))) + result[-1]._value = params[i] output.fit_parameters = result output.chisquare = chisqfunc(np.asarray(params)) @@ -612,7 +614,8 @@ def _standard_fit(x, y, func, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0], [pseudo_Obs(fit_result.x[i], 0.0, y[0].names[0], y[0].shape[y[0].names[0]])] + list(y), man_grad=[0] + list(deriv[i]))) + result.append(derived_observable(lambda x, **kwargs: x[0], list(y), man_grad=list(deriv[i]))) + result[-1]._value = fit_result.x[i] output.fit_parameters = result + const_par From 30ba138558b29f9fa69d3f3eefac6a051b579071 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Mon, 29 Nov 2021 12:15:27 +0100 Subject: [PATCH 023/220] added basic functionality for covobs --- pyerrors/covobs.py | 54 ++++++ pyerrors/obs.py | 411 ++++++++++++++++++++++++++++----------------- 2 files changed, 315 insertions(+), 150 deletions(-) create mode 100644 pyerrors/covobs.py diff --git a/pyerrors/covobs.py b/pyerrors/covobs.py new file mode 100644 index 00000000..87b0526d --- /dev/null +++ b/pyerrors/covobs.py @@ -0,0 +1,54 @@ +import numpy as np + + +class Covobs: + + def __init__(self, mean, cov, name, pos=None, grad=None): + """ Initialize Covobs object. + + Parameters + ---------- + mean : float + Mean value of the new Obs + cov : list or array + 2d Covariance matrix or 1d diagonal entries + name : str + identifier for the covariance matrix + pos : int + Position of the variance belonging to mean in cov. + Is taken to be 1 if cov is 0-dimensional + grad : list or array + Gradient of the Covobs wrt. the means belonging to cov. + """ + self.cov = np.array(cov) + if self.cov.ndim == 0: + self.N = 1 + elif self.cov.ndim == 1: + self.N = len(self.cov) + self.cov = np.diag(self.cov) + elif self.cov.ndim == 2: + self.N = self.cov.shape[0] + if self.cov.shape[1] != self.N: + raise Exception('Covariance matrix has to be a square matrix!') + else: + raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') + self.name = name + if grad is None: + if pos is None: + if self.N == 1: + pos = 0 + else: + raise Exception('Have to specify position of cov-element belonging to mean!') + else: + if pos > self.N: + raise Exception('pos %d too large for covariance matrix with dimension %dx%d!' % (pos, self.N, self.N)) + self.grad = np.zeros((self.N, 1)) + self.grad[pos] = 1. + else: + self.grad = np.array(grad) + self.value = mean + + def errsq(self): + """ Return the variance (= square of the error) of the Covobs + """ + return float(np.dot(np.transpose(self.grad), np.dot(self.cov, self.grad))) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 56a67e57..78585b06 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -6,6 +6,7 @@ from autograd import jacobian import matplotlib.pyplot as plt import numdifftools as nd from itertools import groupby +from .covobs import Covobs class Obs: @@ -37,11 +38,11 @@ class Obs: Dictionary for N_sigma values. If an entry for a given ensemble exists this overwrites the standard value for that ensemble. """ - __slots__ = ['names', 'shape', 'r_values', 'deltas', 'N', '_value', '_dvalue', - 'ddvalue', 'reweighted', 'S', 'tau_exp', 'N_sigma', - 'e_dvalue', 'e_ddvalue', 'e_tauint', 'e_dtauint', - 'e_windowsize', 'e_rho', 'e_drho', 'e_n_tauint', 'e_n_dtauint', - 'idl', 'is_merged', 'tag', '__dict__'] + #__slots__ = ['names', 'shape', 'r_values', 'deltas', 'N', '_value', '_dvalue', + # 'ddvalue', 'reweighted', 'S', 'tau_exp', 'N_sigma', + # 'e_dvalue', 'e_ddvalue', 'e_tauint', 'e_dtauint', + # 'e_windowsize', 'e_rho', 'e_drho', 'e_n_tauint', 'e_n_dtauint', + # 'idl', 'is_merged', 'tag', '__dict__'] S_global = 2.0 S_dict = {} @@ -51,7 +52,7 @@ class Obs: N_sigma_dict = {} filter_eps = 1e-10 - def __init__(self, samples, names, idl=None, means=None, **kwargs): + def __init__(self, samples, names, idl=None, means=None, covobs=None, **kwargs): """ Initialize Obs object. Parameters @@ -67,7 +68,7 @@ class Obs: already subtracted from the samples """ - if means is None: + if means is None and not kwargs.get('empty', False): if len(samples) != len(names): raise Exception('Length of samples and names incompatible.') if idl is not None: @@ -79,53 +80,66 @@ class Obs: raise TypeError('All names have to be strings.') if min(len(x) for x in samples) <= 4: raise Exception('Samples have to have at least 5 entries.') + + if kwargs.get('empty', False): + self.names = [] + else: + self.names = sorted(names) - self.names = sorted(names) self.shape = {} self.r_values = {} self.deltas = {} + if covobs is None: + self.covobs = {} + else: + self.covobs = covobs self.idl = {} - if idl is not None: - for name, idx in sorted(zip(names, idl)): - if isinstance(idx, range): - self.idl[name] = idx - elif isinstance(idx, (list, np.ndarray)): - dc = np.unique(np.diff(idx)) - if np.any(dc < 0): - raise Exception("Unsorted idx for idl[%s]" % (name)) - if len(dc) == 1: - self.idl[name] = range(idx[0], idx[-1] + dc[0], dc[0]) + if not kwargs.get('empty', False): + if idl is not None: + for name, idx in sorted(zip(names, idl)): + if isinstance(idx, range): + self.idl[name] = idx + elif isinstance(idx, (list, np.ndarray)): + dc = np.unique(np.diff(idx)) + if np.any(dc < 0): + raise Exception("Unsorted idx for idl[%s]" % (name)) + if len(dc) == 1: + self.idl[name] = range(idx[0], idx[-1] + dc[0], dc[0]) + else: + self.idl[name] = list(idx) else: - self.idl[name] = list(idx) - else: - raise Exception('incompatible type for idl[%s].' % (name)) - else: - for name, sample in sorted(zip(names, samples)): - self.idl[name] = range(1, len(sample) + 1) + raise Exception('incompatible type for idl[%s].' % (name)) + else: + for name, sample in sorted(zip(names, samples)): + self.idl[name] = range(1, len(sample) + 1) - if means is not None: - for name, sample, mean in sorted(zip(names, samples, means)): - self.shape[name] = len(self.idl[name]) - if len(sample) != self.shape[name]: - raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) - self.r_values[name] = mean - self.deltas[name] = sample - else: - for name, sample in sorted(zip(names, samples)): - self.shape[name] = len(self.idl[name]) - if len(sample) != self.shape[name]: - raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) - self.r_values[name] = np.mean(sample) - self.deltas[name] = sample - self.r_values[name] - self.is_merged = {} - self.N = sum(list(self.shape.values())) + if means is not None: + for name, sample, mean in sorted(zip(names, samples, means)): + self.shape[name] = len(self.idl[name]) + if len(sample) != self.shape[name]: + raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) + self.r_values[name] = mean + self.deltas[name] = sample + else: + for name, sample in sorted(zip(names, samples)): + self.shape[name] = len(self.idl[name]) + if len(sample) != self.shape[name]: + raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) + self.r_values[name] = np.mean(sample) + self.deltas[name] = sample - self.r_values[name] + self.is_merged = {} + self.N = sum(list(self.shape.values())) - self._value = 0 - if means is None: - for name in self.names: - self._value += self.shape[name] * self.r_values[name] - self._value /= self.N + self._value = 0 + if means is None: + for name in self.names: + self._value += self.shape[name] * self.r_values[name] + self._value /= self.N + else: + self._value = 0 + self.is_merged = {} + self.N = 0 self._dvalue = 0.0 self.ddvalue = 0.0 @@ -220,91 +234,96 @@ class Obs: _parse_kwarg('N_sigma') for e, e_name in enumerate(self.e_names): + if e_name not in self.covobs: + r_length = [] + for r_name in e_content[e_name]: + if isinstance(self.idl[r_name], range): + r_length.append(len(self.idl[r_name])) + else: + r_length.append((self.idl[r_name][-1] - self.idl[r_name][0] + 1)) - r_length = [] - for r_name in e_content[e_name]: - if isinstance(self.idl[r_name], range): - r_length.append(len(self.idl[r_name])) - else: - r_length.append((self.idl[r_name][-1] - self.idl[r_name][0] + 1)) + e_N = np.sum([self.shape[r_name] for r_name in e_content[e_name]]) + w_max = max(r_length) // 2 + e_gamma[e_name] = np.zeros(w_max) + self.e_rho[e_name] = np.zeros(w_max) + self.e_drho[e_name] = np.zeros(w_max) - e_N = np.sum([self.shape[r_name] for r_name in e_content[e_name]]) - w_max = max(r_length) // 2 - e_gamma[e_name] = np.zeros(w_max) - self.e_rho[e_name] = np.zeros(w_max) - self.e_drho[e_name] = np.zeros(w_max) + for r_name in e_content[e_name]: + e_gamma[e_name] += self._calc_gamma(self.deltas[r_name], self.idl[r_name], self.shape[r_name], w_max, fft) - for r_name in e_content[e_name]: - e_gamma[e_name] += self._calc_gamma(self.deltas[r_name], self.idl[r_name], self.shape[r_name], w_max, fft) + gamma_div = np.zeros(w_max) + for r_name in e_content[e_name]: + gamma_div += self._calc_gamma(np.ones((self.shape[r_name])), self.idl[r_name], self.shape[r_name], w_max, fft) + e_gamma[e_name] /= gamma_div[:w_max] - gamma_div = np.zeros(w_max) - for r_name in e_content[e_name]: - gamma_div += self._calc_gamma(np.ones((self.shape[r_name])), self.idl[r_name], self.shape[r_name], w_max, fft) - e_gamma[e_name] /= gamma_div[:w_max] - - if np.abs(e_gamma[e_name][0]) < 10 * np.finfo(float).tiny: # Prevent division by zero - self.e_tauint[e_name] = 0.5 - self.e_dtauint[e_name] = 0.0 - self.e_dvalue[e_name] = 0.0 - self.e_ddvalue[e_name] = 0.0 - self.e_windowsize[e_name] = 0 - continue - - self.e_rho[e_name] = e_gamma[e_name][:w_max] / e_gamma[e_name][0] - self.e_n_tauint[e_name] = np.cumsum(np.concatenate(([0.5], self.e_rho[e_name][1:]))) - # Make sure no entry of tauint is smaller than 0.5 - self.e_n_tauint[e_name][self.e_n_tauint[e_name] <= 0.5] = 0.5 + np.finfo(np.float64).eps - # hep-lat/0306017 eq. (42) - self.e_n_dtauint[e_name] = self.e_n_tauint[e_name] * 2 * np.sqrt(np.abs(np.arange(w_max) + 0.5 - self.e_n_tauint[e_name]) / e_N) - self.e_n_dtauint[e_name][0] = 0.0 - - def _compute_drho(i): - tmp = self.e_rho[e_name][i + 1:w_max] + np.concatenate([self.e_rho[e_name][i - 1::-1], self.e_rho[e_name][1:w_max - 2 * i]]) - 2 * self.e_rho[e_name][i] * self.e_rho[e_name][1:w_max - i] - self.e_drho[e_name][i] = np.sqrt(np.sum(tmp ** 2) / e_N) - - _compute_drho(1) - if self.tau_exp[e_name] > 0: - texp = self.tau_exp[e_name] - # if type(self.idl[e_name]) is range: # scale tau_exp according to step size - # texp /= self.idl[e_name].step - # Critical slowing down analysis - if w_max // 2 <= 1: - raise Exception("Need at least 8 samples for tau_exp error analysis") - for n in range(1, w_max // 2): - _compute_drho(n + 1) - if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2: - # Bias correction hep-lat/0306017 eq. (49) included - self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) + texp * np.abs(self.e_rho[e_name][n + 1]) # The absolute makes sure, that the tail contribution is always positive - self.e_dtauint[e_name] = np.sqrt(self.e_n_dtauint[e_name][n] ** 2 + texp ** 2 * self.e_drho[e_name][n + 1] ** 2) - # Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2 - self.e_dvalue[e_name] = np.sqrt(2 * self.e_tauint[e_name] * e_gamma[e_name][0] * (1 + 1 / e_N) / e_N) - self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt((n + 0.5) / e_N) - self.e_windowsize[e_name] = n - break - else: - if self.S[e_name] == 0.0: + if np.abs(e_gamma[e_name][0]) < 10 * np.finfo(float).tiny: # Prevent division by zero self.e_tauint[e_name] = 0.5 self.e_dtauint[e_name] = 0.0 - self.e_dvalue[e_name] = np.sqrt(e_gamma[e_name][0] / (e_N - 1)) - self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt(0.5 / e_N) + self.e_dvalue[e_name] = 0.0 + self.e_ddvalue[e_name] = 0.0 self.e_windowsize[e_name] = 0 - else: - # Standard automatic windowing procedure - tau = self.S[e_name] / np.log((2 * self.e_n_tauint[e_name][1:] + 1) / (2 * self.e_n_tauint[e_name][1:] - 1)) - g_w = np.exp(- np.arange(1, w_max) / tau) - tau / np.sqrt(np.arange(1, w_max) * e_N) - for n in range(1, w_max): - if n < w_max // 2 - 2: - _compute_drho(n + 1) - if g_w[n - 1] < 0 or n >= w_max - 1: - self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) # Bias correction hep-lat/0306017 eq. (49) - self.e_dtauint[e_name] = self.e_n_dtauint[e_name][n] + continue + + self.e_rho[e_name] = e_gamma[e_name][:w_max] / e_gamma[e_name][0] + self.e_n_tauint[e_name] = np.cumsum(np.concatenate(([0.5], self.e_rho[e_name][1:]))) + # Make sure no entry of tauint is smaller than 0.5 + self.e_n_tauint[e_name][self.e_n_tauint[e_name] <= 0.5] = 0.5 + np.finfo(np.float64).eps + # hep-lat/0306017 eq. (42) + self.e_n_dtauint[e_name] = self.e_n_tauint[e_name] * 2 * np.sqrt(np.abs(np.arange(w_max) + 0.5 - self.e_n_tauint[e_name]) / e_N) + self.e_n_dtauint[e_name][0] = 0.0 + + def _compute_drho(i): + tmp = self.e_rho[e_name][i + 1:w_max] + np.concatenate([self.e_rho[e_name][i - 1::-1], self.e_rho[e_name][1:w_max - 2 * i]]) - 2 * self.e_rho[e_name][i] * self.e_rho[e_name][1:w_max - i] + self.e_drho[e_name][i] = np.sqrt(np.sum(tmp ** 2) / e_N) + + _compute_drho(1) + if self.tau_exp[e_name] > 0: + texp = self.tau_exp[e_name] + # if type(self.idl[e_name]) is range: # scale tau_exp according to step size + # texp /= self.idl[e_name].step + # Critical slowing down analysis + if w_max // 2 <= 1: + raise Exception("Need at least 8 samples for tau_exp error analysis") + for n in range(1, w_max // 2): + _compute_drho(n + 1) + if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2: + # Bias correction hep-lat/0306017 eq. (49) included + self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) + texp * np.abs(self.e_rho[e_name][n + 1]) # The absolute makes sure, that the tail contribution is always positive + self.e_dtauint[e_name] = np.sqrt(self.e_n_dtauint[e_name][n] ** 2 + texp ** 2 * self.e_drho[e_name][n + 1] ** 2) + # Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2 self.e_dvalue[e_name] = np.sqrt(2 * self.e_tauint[e_name] * e_gamma[e_name][0] * (1 + 1 / e_N) / e_N) self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt((n + 0.5) / e_N) self.e_windowsize[e_name] = n break + else: + if self.S[e_name] == 0.0: + self.e_tauint[e_name] = 0.5 + self.e_dtauint[e_name] = 0.0 + self.e_dvalue[e_name] = np.sqrt(e_gamma[e_name][0] / (e_N - 1)) + self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt(0.5 / e_N) + self.e_windowsize[e_name] = 0 + else: + # Standard automatic windowing procedure + tau = self.S[e_name] / np.log((2 * self.e_n_tauint[e_name][1:] + 1) / (2 * self.e_n_tauint[e_name][1:] - 1)) + g_w = np.exp(- np.arange(1, w_max) / tau) - tau / np.sqrt(np.arange(1, w_max) * e_N) + for n in range(1, w_max): + if n < w_max // 2 - 2: + _compute_drho(n + 1) + if g_w[n - 1] < 0 or n >= w_max - 1: + self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) # Bias correction hep-lat/0306017 eq. (49) + self.e_dtauint[e_name] = self.e_n_dtauint[e_name][n] + self.e_dvalue[e_name] = np.sqrt(2 * self.e_tauint[e_name] * e_gamma[e_name][0] * (1 + 1 / e_N) / e_N) + self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt((n + 0.5) / e_N) + self.e_windowsize[e_name] = n + break - self._dvalue += self.e_dvalue[e_name] ** 2 - self.ddvalue += (self.e_dvalue[e_name] * self.e_ddvalue[e_name]) ** 2 + self._dvalue += self.e_dvalue[e_name] ** 2 + self.ddvalue += (self.e_dvalue[e_name] * self.e_ddvalue[e_name]) ** 2 + + else: + self.e_dvalue[e_name] = np.sqrt(self.covobs[e_name].errsq()) + self.e_ddvalue[e_name] = 0 + self._dvalue += self.e_dvalue[e_name]**2 self._dvalue = np.sqrt(self.dvalue) if self._dvalue == 0.0: @@ -367,12 +386,15 @@ class Obs: if len(self.e_names) > 1: print(' Ensemble errors:') for e_name in self.e_names: - if len(self.e_names) > 1: - print('', e_name, '\t %3.8e +/- %3.8e' % (self.e_dvalue[e_name], self.e_ddvalue[e_name])) - if self.tau_exp[e_name] > 0: - print(' t_int\t %3.8e +/- %3.8e tau_exp = %3.2f, N_sigma = %1.0i' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.tau_exp[e_name], self.N_sigma[e_name])) + if e_name not in self.covobs: + if len(self.e_names) > 1: + print('', e_name, '\t %3.8e +/- %3.8e' % (self.e_dvalue[e_name], self.e_ddvalue[e_name])) + if self.tau_exp[e_name] > 0: + print(' t_int\t %3.8e +/- %3.8e tau_exp = %3.2f, N_sigma = %1.0i' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.tau_exp[e_name], self.N_sigma[e_name])) + else: + print(' t_int\t %3.8e +/- %3.8e S = %3.2f' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.S[e_name])) else: - print(' t_int\t %3.8e +/- %3.8e S = %3.2f' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.S[e_name])) + print('', e_name, '\t %3.8e' % (self.e_dvalue[e_name])) if ens_content is True: if len(self.e_names) == 1: print(self.N, 'samples in', len(self.e_names), 'ensemble:') @@ -380,25 +402,28 @@ class Obs: print(self.N, 'samples in', len(self.e_names), 'ensembles:') my_string_list = [] for key, value in sorted(self.e_content.items()): - my_string = ' ' + "\u00B7 Ensemble '" + key + "' " - if len(value) == 1: - my_string += f': {self.shape[value[0]]} configurations' - if isinstance(self.idl[value[0]], range): - my_string += f' (from {self.idl[value[0]].start} to {self.idl[value[0]][-1]}' + int(self.idl[value[0]].step != 1) * f' in steps of {self.idl[value[0]].step}' + ')' - else: - my_string += ' (irregular range)' - else: - sublist = [] - for v in value: - my_substring = ' ' + "\u00B7 Replicum '" + v[len(key) + 1:] + "' " - my_substring += f': {self.shape[v]} configurations' - if isinstance(self.idl[v], range): - my_substring += f' (from {self.idl[v].start} to {self.idl[v][-1]}' + int(self.idl[v].step != 1) * f' in steps of {self.idl[v].step}' + ')' + if key not in self.covobs: + my_string = ' ' + "\u00B7 Ensemble '" + key + "' " + if len(value) == 1: + my_string += f': {self.shape[value[0]]} configurations' + if isinstance(self.idl[value[0]], range): + my_string += f' (from {self.idl[value[0]].start} to {self.idl[value[0]][-1]}' + int(self.idl[value[0]].step != 1) * f' in steps of {self.idl[value[0]].step}' + ')' else: - my_substring += ' (irregular range)' - sublist.append(my_substring) + my_string += ' (irregular range)' + else: + sublist = [] + for v in value: + my_substring = ' ' + "\u00B7 Replicum '" + v[len(key) + 1:] + "' " + my_substring += f': {self.shape[v]} configurations' + if isinstance(self.idl[v], range): + my_substring += f' (from {self.idl[v].start} to {self.idl[v][-1]}' + int(self.idl[v].step != 1) * f' in steps of {self.idl[v].step}' + ')' + else: + my_substring += ' (irregular range)' + sublist.append(my_substring) - my_string += '\n' + '\n'.join(sublist) + my_string += '\n' + '\n'.join(sublist) + else: + my_string = ' ' + "\u00B7 Covobs '" + key + "' " my_string_list.append(my_string) print('\n'.join(my_string_list)) @@ -1028,6 +1053,15 @@ def derived_observable(func, data, **kwargs): if isinstance(raveled_data[i], (int, float)): raveled_data[i] = Obs([raveled_data[i] + np.zeros(first_shape)], [first_name], idl=[first_idl]) + allcov = {} + for o in raveled_data: + for name in o.covobs: + if name in allcov: + if not np.array_equal(allcov[name], o.covobs[name].cov): + raise Exception('Inconsistent covariance matrices for %s!' % (name)) + else: + allcov[name] = o.covobs[name].cov + n_obs = len(raveled_data) new_names = sorted(set([y for x in [o.names for o in raveled_data] for y in x])) @@ -1100,24 +1134,41 @@ def derived_observable(func, data, **kwargs): for i_val, new_val in np.ndenumerate(new_values): new_deltas = {} + new_grad = {} for j_obs, obs in np.ndenumerate(data): for name in obs.names: - new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name]) + if name in obs.covobs: + if name in new_grad: + new_grad[name] += deriv[i_val + j_obs] * obs.covobs[name].grad + else: + new_grad[name] = deriv[i_val + j_obs] * obs.covobs[name].grad + else: + new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name]) + + new_covobs = {name: Covobs(obs.covobs[name].value, obs.covobs[name].cov, obs.covobs[name].name, grad=new_grad[name]) for name in new_grad} new_samples = [] new_means = [] new_idl = [] + new_names_obs = [] for name in new_names: - if is_merged[name]: - filtered_deltas, filtered_idl_d = _filter_zeroes(new_deltas[name], new_idl_d[name]) - else: - filtered_deltas = new_deltas[name] - filtered_idl_d = new_idl_d[name] + if name not in new_covobs: + if is_merged[name]: + filtered_deltas, filtered_idl_d = _filter_zeroes(new_deltas[name], new_idl_d[name]) + else: + filtered_deltas = new_deltas[name] + filtered_idl_d = new_idl_d[name] - new_samples.append(filtered_deltas) - new_idl.append(filtered_idl_d) - new_means.append(new_r_values[name][i_val]) - final_result[i_val] = Obs(new_samples, new_names, means=new_means, idl=new_idl) + new_samples.append(filtered_deltas) + new_idl.append(filtered_idl_d) + new_means.append(new_r_values[name][i_val]) + new_names_obs.append(name) + final_result[i_val] = Obs(new_samples, new_names_obs, means=new_means, idl=new_idl) + for name in new_covobs: + final_result[i_val].names.append(name) + final_result[i_val].shape[name] = 1 + final_result[i_val].idl[name] = [] + final_result[i_val].covobs = new_covobs final_result[i_val]._value = new_val final_result[i_val].is_merged = is_merged final_result[i_val].reweighted = reweighted @@ -1603,3 +1654,63 @@ def merge_obs(list_of_obs): o.is_merged = {name: np.any([oi.is_merged.get(name, False) for oi in list_of_obs]) for name in o.names} o.reweighted = np.max([oi.reweighted for oi in list_of_obs]) return o + + +def covobs_to_obs(co): + """Make an Obs out of a Covobs + + Parameters + ---------- + co : Covobs + Covobs to be embedded into the Obs + """ + o = Obs(None, None, empty=True) + o._value = co.value + o.names.append(co.name) + o.covobs[co.name] = co + o._dvalue = np.sqrt(co.errsq()) + o.shape[co.name] = 1 + o.idl[co.name] = [] + return o + + +def create_Covobs(mean, cov, name, pos=None, grad=None): + """Make an Obs based on a Covobs + + Parameters + ---------- + mean : float + Mean value of the new Obs + cov : list or array + 2d Covariance matrix or 1d diagonal entries + name : str + identifier for the covariance matrix + pos : int + Position of the variance belonging to mean in cov. + Is taken to be 1 if cov is 0-dimensional + grad : list or array + Gradient of the Covobs wrt. the means belonging to cov. + """ + return covobs_to_obs(Covobs(mean, cov, name, pos=pos, grad=grad)) + + +def create_Covobs_list(means, cov, name, grad=None): + """Make a list of Obs based Covobs + + Parameters + ---------- + mean : list of floats + N mean values of the new Obs + cov : list or array + 2d (NxN) Covariance matrix or 1d diagonal entries + name : str + identifier for the covariance matrix + grad : list or array + Gradient of the Covobs wrt. the means belonging to cov. + """ + ol = [] + for i in range(len(means)): + ol.append(covobs_to_obs(Covobs(means[i], cov, name, pos=i, grad=grad))) + if ol[0].covobs[name].N != len(means): + raise Exception('You have to provide %d mean values!' % (ol[0].N)) + return ol From 66cdd46a92aac3fb5d955cc105b6c8c3deb85423 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Mon, 29 Nov 2021 13:13:13 +0100 Subject: [PATCH 024/220] first ver. of just one SFCF read method --- pyerrors/input/sfcf.py | 238 ++++++++++++++++++++++++++++------------- 1 file changed, 165 insertions(+), 73 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 706e26a9..5915c56e 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -8,11 +8,11 @@ import numpy as np # Thinly-wrapped numpy from ..obs import Obs -def read_sfcf(path, prefix, name, **kwargs): - """Read sfcf C format from given folder structure. +def read_sfcf_old(path, prefix, name, quarks, noffset = 0, wf=0, wf2=0, **kwargs): + """Read sfcf format (from around 2012) from given folder structure. - Parameters - ---------- + Keyword arguments + ----------------- im -- if True, read imaginary instead of real part of the correlation function. single -- if True, read a boundary-to-boundary correlation function with a single value b2b -- if True, read a time-dependent boundary-to-boundary correlation function @@ -24,17 +24,13 @@ def read_sfcf(path, prefix, name, **kwargs): else: im = 0 part = 'real' - - if kwargs.get('single'): - b2b = 1 - single = 1 - else: - b2b = 0 - single = 0 + + b2b = 0 if kwargs.get('b2b'): b2b = 1 - + + quarks = quarks.split(" ") read = 0 T = 0 start = 0 @@ -43,7 +39,8 @@ def read_sfcf(path, prefix, name, **kwargs): ls.extend(dirnames) break if not ls: - raise Exception('Error, directory not found') + print('Error, directory not found') + #sys.exit() for exc in ls: if fnmatch.fnmatch(exc, prefix + '*'): ls = list(set(ls) - set(exc)) @@ -56,17 +53,12 @@ def read_sfcf(path, prefix, name, **kwargs): if len(new_names) != replica: raise Exception('Names does not have the required length', replica) else: - # Adjust replica names to new bookmarking system - new_names = [] - for entry in ls: - idx = entry.index('r') - new_names.append(entry[:idx] + '|' + entry[idx:]) - + new_names = ls print(replica, 'replica') for i, item in enumerate(ls): print(item) sub_ls = [] - for (dirpath, dirnames, filenames) in os.walk(path + '/' + item): + for (dirpath, dirnames, filenames) in os.walk(path+'/'+item): sub_ls.extend(dirnames) break for exc in sub_ls: @@ -75,18 +67,25 @@ def read_sfcf(path, prefix, name, **kwargs): sub_ls.sort(key=lambda x: int(x[3:])) no_cfg = len(sub_ls) print(no_cfg, 'configurations') - if i == 0: with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: for k, line in enumerate(fp): + #check if this is really the right file + pattern = "# "+name+" : offset "+str(noffset)+", wf "+"0" + #if b2b, a second wf is needed + if b2b: + pattern+=", wf_2 "+"0" + pattern+=" : "+quarks[0]+" - "+quarks[1] + if read == 1 and not line.strip() and k > start + 1: break if read == 1 and k >= start: T += 1 - if '[correlator]' in line: + if pattern in line: + #print(line) read = 1 - start = k + 7 + b2b - T -= b2b + start = k+1 + print(str(T)+" entries found.") deltas = [] for j in range(T): @@ -97,11 +96,12 @@ def read_sfcf(path, prefix, name, **kwargs): deltas[j].append(np.zeros(sublength)) for cnfg, subitem in enumerate(sub_ls): - with open(path + '/' + item + '/' + subitem + '/' + name) as fp: + with open(path + '/' + item + '/' + subitem + '/'+name) as fp: for k, line in enumerate(fp): if(k >= start and k < start + T): floats = list(map(float, line.split())) - deltas[k - start][i][cnfg] = floats[1 + im - single] + deltas[k-start][i][cnfg] = floats[im] + result = [] for t in range(T): @@ -110,7 +110,7 @@ def read_sfcf(path, prefix, name, **kwargs): return result -def read_sfcf_c(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs): +def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs): """Read sfcf c format from given folder structure. Parameters @@ -121,11 +121,11 @@ def read_sfcf_c(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwarg wf2 -- ID of the second wavefunction (only relevant for boundary-to-boundary correlation functions) im -- if True, read imaginary instead of real part of the correlation function. b2b -- if True, read a time-dependent boundary-to-boundary correlation function + single -- if True, read time independent boundary to boundary correlation function names -- Alternative labeling for replicas/ensembles. Has to have the appropriate length ens_name : str replaces the name of the ensemble """ - if kwargs.get('im'): im = 1 part = 'imaginary' @@ -133,12 +133,38 @@ def read_sfcf_c(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwarg im = 0 part = 'real' - if kwargs.get('b2b'): + if kwargs.get('single'): b2b = 1 + single = 1 else: - b2b = 0 + if kwargs.get('b2b'): + b2b = 1 + else: + b2b = 0 + single = 0 + files = [] + if "files" in kwargs: + files = kwargs.get("files") + + #due to higher usage in current projects, compact file format is default + compact = True + #get version string + version = "1.0" + known_versions = ["0.0","1.0","2.0","1.0c","2.0c"] + if "version" in kwargs: + version = kwargs.get("version") + if not version in known_versions: + raise Exception("This version is not known!") + #if the letter c is appended to the version, the compact fileformat is used (former read_sfcf_c) + if(version[-1] == "c"): + compact = True + version = version[:-1] + else: + compact = False + read = 0 T = 0 + start = 0 ls = [] for (dirpath, dirnames, filenames) in os.walk(path): ls.extend(dirnames) @@ -146,12 +172,17 @@ def read_sfcf_c(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwarg if not ls: raise Exception('Error, directory not found') # Exclude folders with different names - for exc in ls: - if not fnmatch.fnmatch(exc, prefix + '*'): - ls = list(set(ls) - set([exc])) + if len(files) != 0: + ls = files + else: + for exc in ls: + if not fnmatch.fnmatch(exc, prefix + '*'): + ls = list(set(ls) - set([exc])) if len(ls) > 1: ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) # New version, to cope with ids, etc. replica = len(ls) + print('Read', part, 'part of', name, 'from', prefix[:-1], ',', replica, 'replica') + if 'names' in kwargs: new_names = kwargs.get('names') if len(new_names) != replica: @@ -160,52 +191,99 @@ def read_sfcf_c(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwarg # Adjust replica names to new bookmarking system new_names = [] for entry in ls: - idx = entry.index('r') + try: + idx = entry.index('r') + except: + idx = len(entry)-2 if 'ens_name' in kwargs: new_names.append(kwargs.get('ens_name') + '|' + entry[idx:]) else: new_names.append(entry[:idx] + '|' + entry[idx:]) - - print('Read', part, 'part of', name, 'from', prefix[:-1], ',', replica, 'replica') for i, item in enumerate(ls): sub_ls = [] for (dirpath, dirnames, filenames) in os.walk(path + '/' + item): - sub_ls.extend(filenames) + if compact: + sub_ls.extend(filenames) + else: + sub_ls.extend(dirnames) break - for exc in sub_ls: - if not fnmatch.fnmatch(exc, prefix + '*'): - sub_ls = list(set(sub_ls) - set([exc])) - sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + + #print(sub_ls) + for exc in sub_ls: + if compact: + if not fnmatch.fnmatch(exc, prefix + '*'): + sub_ls = list(set(sub_ls) - set([exc])) + sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + else: + if not fnmatch.fnmatch(exc, 'cfg*'): + sub_ls = list(set(sub_ls) - set([exc])) + sub_ls.sort(key=lambda x: int(x[3:])) + + if compact: + first_cfg = int(re.findall(r'\d+', sub_ls[0])[-1]) - first_cfg = int(re.findall(r'\d+', sub_ls[0])[-1]) + last_cfg = len(sub_ls) + first_cfg - 1 - last_cfg = len(sub_ls) + first_cfg - 1 + for cfg in range(1, len(sub_ls)): + if int(re.findall(r'\d+', sub_ls[cfg])[-1]) != first_cfg + cfg: + last_cfg = cfg + first_cfg - 1 + break - for cfg in range(1, len(sub_ls)): - if int(re.findall(r'\d+', sub_ls[cfg])[-1]) != first_cfg + cfg: - last_cfg = cfg + first_cfg - 1 - break - - no_cfg = last_cfg - first_cfg + 1 - print(item, ':', no_cfg, 'evenly spaced configurations (', first_cfg, '-', last_cfg, ') ,', len(sub_ls) - no_cfg, 'configs omitted\n') + no_cfg = last_cfg - first_cfg + 1 + print(item, ':', no_cfg, 'evenly spaced configurations (', first_cfg, '-', last_cfg, ') ,', len(sub_ls) - no_cfg, 'configs omitted\n') + else: + no_cfg = len(sub_ls) + print(no_cfg, 'configurations') + #here we have found all the files we need to look into. if i == 0: - pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) - if b2b: - pattern += '\nwf_2 ' + str(wf2) + if compact: + + pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) + if b2b: + pattern += '\nwf_2 ' + str(wf2) - with open(path + '/' + item + '/' + sub_ls[0], 'r') as file: - content = file.read() - match = re.search(pattern, content) - if match: - start_read = content.count('\n', 0, match.start()) + 5 + b2b - end_match = re.search(r'\n\s*\n', content[match.start():]) - T = content[match.start():].count('\n', 0, end_match.start()) - 4 - b2b - assert T > 0 - print(T, 'entries, starting to read in line', start_read) - else: - raise Exception('Correlator with pattern\n' + pattern + '\nnot found.') + with open(path + '/' + item + '/' + sub_ls[0], 'r') as file: + content = file.read() + match = re.search(pattern, content) + if match: + start_read = content.count('\n', 0, match.start()) + 5 + b2b + end_match = re.search(r'\n\s*\n', content[match.start():]) + T = content[match.start():].count('\n', 0, end_match.start()) - 4 - b2b + assert T > 0 + print(T, 'entries, starting to read in line', start_read) + else: + raise Exception('Correlator with pattern\n' + pattern + '\nnot found.') + else: + #print(path + '/' + item + '/')# + sub_ls[0] + '/' + name) + with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: + for k, line in enumerate(fp): + if version == "0.0": + #check if this is really the right file + pattern = "# "+name+" : offset "+str(noffset)+", wf "+str(wf) + #if b2b, a second wf is needed + if b2b: + pattern+=", wf_2 "+str(wf2) + qs = quarks.split(" ") + pattern+=" : "+qs[0]+" - "+qs[1] + #print(pattern) + if read == 1 and not line.strip() and k > start + 1: + break + if read == 1 and k >= start: + T += 1 + if version == "0.0": + if pattern in line: + #print(line) + read = 1 + start = k+1 + else: + if '[correlator]' in line: + read = 1 + start = k + 7 + b2b + T -= b2b + print(str(T)+" entries found.") + #we found where the correlator that is to be read is in the files deltas = [] for j in range(T): deltas.append([]) @@ -213,16 +291,30 @@ def read_sfcf_c(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwarg sublength = no_cfg for j in range(T): deltas[j].append(np.zeros(sublength)) + if compact: + for cfg in range(no_cfg): + with open(path + '/' + item + '/' + sub_ls[cfg]) as fp: + lines = fp.readlines() + if(start_read + T>len(lines)): + raise Exception("EOF before end of correlator data! Maybe "+path + '/' + item + '/' + sub_ls[cfg]+" is corrupted?") + for k in range(start_read - 6,start_read + T): + if k == start_read - 5 - b2b: + if lines[k].strip() != 'name ' + name: + raise Exception('Wrong format', sub_ls[cfg]) + if(k >= start_read and k < start_read + T): + floats = list(map(float, lines[k].split())) + deltas[k - start_read][i][cfg] = floats[-2:][im] + else: + for cnfg, subitem in enumerate(sub_ls): + with open(path + '/' + item + '/' + subitem + '/' + name) as fp: + for k, line in enumerate(fp): + if(k >= start and k < start + T): + floats = list(map(float, line.split())) + if version == "0.0": + deltas[k-start][i][cnfg] = floats[im] + else: + deltas[k - start][i][cnfg] = floats[1 + im - single] - for cfg in range(no_cfg): - with open(path + '/' + item + '/' + sub_ls[cfg]) as fp: - for k, line in enumerate(fp): - if k == start_read - 5 - b2b: - if line.strip() != 'name ' + name: - raise Exception('Wrong format', sub_ls[cfg]) - if(k >= start_read and k < start_read + T): - floats = list(map(float, line.split())) - deltas[k - start_read][i][cfg] = floats[-2:][im] result = [] for t in range(T): From 63dd627e2023a677b802090743c8ff98a34db05e Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Mon, 29 Nov 2021 15:27:28 +0100 Subject: [PATCH 025/220] First implemenation of a json I/O --- pyerrors/input/json.py | 265 +++++++++++++++++++++++++++++++++++++++++ tests/io_test.py | 36 ++++++ 2 files changed, 301 insertions(+) create mode 100644 pyerrors/input/json.py create mode 100644 tests/io_test.py diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py new file mode 100644 index 00000000..f4229a20 --- /dev/null +++ b/pyerrors/input/json.py @@ -0,0 +1,265 @@ +import json +import gzip +from ..obs import Obs +import getpass +import socket +import datetime +from .. import version as pyerrorsversion +import platform +import numpy as np + + +def dump_to_json(ol, fname, description='', indent=4): + """Export a list of Obs or structures containing Obs to a .json.gz file + + Parameters + ----------------- + ol : list + List of objects that will be exported. At the moments, these objects can be + either of: Obs, list, np.ndarray + All Obs inside a structure have to be defined on the same set of configurations. + fname : str + Filename of the output file + description : str + Optional string that describes the contents of the json file + indent : int + Specify the indentation level of the json file. None or 0 is permissible and + saves disk space. + """ + + def _default(self, obj): + return str(obj) + my_encoder = json.JSONEncoder + _default.default = json.JSONEncoder().default + my_encoder.default = _default + + class deltalist: + def __init__(self, li): + self.cnfg = li[0] + self.deltas = li[1:] + + def __repr__(self): + s = '[%d' % (self.cnfg) + for d in self.deltas: + s += ', %1.15e' % (d) + s += ']' + return s + + def __str__(self): + return self.__repr__() + + def _gen_data_d_from_list(ol): + dl = [] + for name in ol[0].e_names: + ed = {} + ed['id'] = name + ed['replica'] = [] + for r_name in ol[0].e_content[name]: + rd = {} + rd['name'] = r_name + if ol[0].is_merged.get(r_name, False): + rd['is_merged'] = True + rd['deltas'] = [] + for i in range(len(ol[0].idl[r_name])): + rd['deltas'].append([ol[0].idl[r_name][i]]) + for o in ol: + rd['deltas'][-1].append(o.deltas[r_name][i]) + rd['deltas'][-1] = deltalist(rd['deltas'][-1]) + ed['replica'].append(rd) + dl.append(ed) + return dl + + def _assert_equal_properties(ol, otype=Obs): + for o in ol: + if not isinstance(o, otype): + raise Exception('Wrong data type in list!') + for o in ol[1:]: + if not ol[0].is_merged == o.is_merged: + raise Exception('All Obs in list have to be defined on the same set of configs!') + if not ol[0].reweighted == o.reweighted: + raise Exception('All Obs in list have to have the same property .reweighted!') + if not ol[0].e_content == o.e_content: + raise Exception('All Obs in list have to be defined on the same set of configs!') + # more stringend tests --> compare idl? + + def write_Obs_to_dict(o): + d = {} + d['type'] = 'Obs' + d['layout'] = '1' + d['tag'] = o.tag + if o.reweighted: + d['reweighted'] = o.reweighted + d['value'] = [o.value] + d['data'] = _gen_data_d_from_list([o]) + return d + + def write_List_to_dict(ol): + _assert_equal_properties(ol) + d = {} + d['type'] = 'List' + d['layout'] = '%d' % len(ol) + if len(set([o.tag for o in ol])) > 1: + d['tag'] = '' + for o in ol: + d['tag'] += '%s\n' % (o.tag) + else: + d['tag'] = ol[0].tag + if ol[0].reweighted: + d['reweighted'] = ol[0].reweighted + d['value'] = [o.value for o in ol] + d['data'] = _gen_data_d_from_list(ol) + + return d + + def write_Array_to_dict(oa): + ol = np.ravel(oa) + _assert_equal_properties(ol) + d = {} + d['type'] = 'Array' + d['layout'] = str(oa.shape).lstrip('(').rstrip(')') + if len(set([o.tag for o in ol])) > 1: + d['tag'] = '' + for o in ol: + d['tag'] += '%s\n' % (o.tag) + else: + d['tag'] = ol[0].tag + if ol[0].reweighted: + d['reweighted'] = ol[0].reweighted + d['value'] = [o.value for o in ol] + d['data'] = _gen_data_d_from_list(ol) + return d + if not isinstance(ol, list): + ol = [ol] + d = {} + d['program'] = 'pyerrors %s' % (pyerrorsversion.__version__) + d['version'] = '0.1' + d['who'] = getpass.getuser() + d['date'] = str(datetime.datetime.now())[:-7] + d['host'] = socket.gethostname() + ', ' + platform.platform() + + if description: + d['description'] = description + d['obsdata'] = [] + for io in ol: + if isinstance(io, Obs): + d['obsdata'].append(write_Obs_to_dict(io)) + elif isinstance(io, list): + d['obsdata'].append(write_List_to_dict(io)) + elif isinstance(io, np.ndarray): + d['obsdata'].append(write_Array_to_dict(io)) + if not fname.endswith('.json') and not fname.endswith('.gz'): + fname += '.json' + if not fname.endswith('.gz'): + fname += '.gz' + jsonstring = json.dumps(d, indent=indent, cls=my_encoder) + # workaround for un-indentation of delta lists + jsonstring = jsonstring.replace('"[', '[').replace(']"', ']') + fp = gzip.open(fname, 'wb') + fp.write(jsonstring.encode('utf-8')) + fp.close() + + # this would be nicer, since it does not need a string + # with gzip.open(fname, 'wt', encoding='UTF-8') as zipfile: + # json.dump(d, zipfile, indent=indent) + + +def load_json(fname, verbose=True): + """Import a list of Obs or structures containing Obs to a .json.gz file. + The following structures are supported: Obs, list, np.ndarray + + Parameters + ----------------- + fname : str + Filename of the input file + verbose : bool + Print additional information that was written to the file. + """ + + def _gen_obsd_from_datad(d): + retd = {} + retd['names'] = [] + retd['idl'] = [] + retd['deltas'] = [] + retd['is_merged'] = {} + for ens in d: + for rep in ens['replica']: + retd['names'].append(rep['name']) + retd['idl'].append([di[0] for di in rep['deltas']]) + retd['deltas'].append([di[1:] for di in rep['deltas']]) + retd['is_merged'][rep['name']] = rep.get('is_merged', False) + retd['deltas'] = np.array(retd['deltas']) + return retd + + def get_Obs_from_dict(o): + layouts = o.get('layout', '1').strip() + if layouts != '1': + raise Exception("layout is %s has to be 1 for type Obs." % (layouts), RuntimeWarning) + + values = o['value'] + od = _gen_obsd_from_datad(o['data']) + + ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl']) + ret.reweighted = o.get('reweighted', False) + ret.is_merged = od['is_merged'] + ret.tag = o.get('tag', '') + return ret + + def get_List_from_dict(o): + layouts = o.get('layout', '1').strip() + layout = int(layouts) + values = o['value'] + od = _gen_obsd_from_datad(o['data']) + + ret = [] + for i in range(layout): + ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl'])) + ret[-1].reweighted = o.get('reweighted', False) + ret[-1].is_merged = od['is_merged'] + ret[-1].tag = o.get('tag', '') + return ret + + def get_Array_from_dict(o): + layouts = o.get('layout', '1').strip() + layout = [int(ls.strip()) for ls in layouts.split(',')] + values = o['value'] + od = _gen_obsd_from_datad(o['data']) + + ret = [] + for i in range(np.prod(layout)): + ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl'])) + ret[-1].reweighted = o.get('reweighted', False) + ret[-1].is_merged = od['is_merged'] + ret[-1].tag = o.get('tag', '') + return np.reshape(ret, layout) + + if not fname.endswith('.json') and not fname.endswith('.gz'): + fname += '.json' + if not fname.endswith('.gz'): + fname += '.gz' + with gzip.open(fname, 'r') as fin: + d = json.loads(fin.read().decode('utf-8')) + prog = d.get('program', '') + version = d.get('version', '') + who = d.get('who', '') + date = d.get('date', '') + host = d.get('host', '') + if prog and verbose: + print('Data has been written using %s.' % (prog)) + if version and verbose: + print('Format version %s' % (version)) + if np.any([who, date, host] and verbose): + print('Written by %s on %s on host %s' % (who, date, host)) + description = d.get('description', '') + if description and verbose: + print() + print(description) + obsdata = d['obsdata'] + ol = [] + for io in obsdata: + if io['type'] == 'Obs': + ol.append(get_Obs_from_dict(io)) + elif io['type'] == 'List': + ol.append(get_List_from_dict(io)) + elif io['type'] == 'Array': + ol.append(get_Array_from_dict(io)) + return ol diff --git a/tests/io_test.py b/tests/io_test.py new file mode 100644 index 00000000..c2dcdcbb --- /dev/null +++ b/tests/io_test.py @@ -0,0 +1,36 @@ +import pyerrors.obs as pe +import pyerrors.input.json as jsonio +import numpy as np +import os + + +def test_jsonio(): + o = pe.pseudo_Obs(1.0, .2, 'one') + o2 = pe.pseudo_Obs(0.5, .1, 'two|r1') + o3 = pe.pseudo_Obs(0.5, .1, 'two|r2') + o4 = pe.merge_obs([o2, o3]) + do = o - .2 * o4 + + o5 = pe.pseudo_Obs(0.8, .1, 'two|r2') + testl = [o3, o5] + + mat = np.array([[pe.pseudo_Obs(1.0, .1, 'mat'), pe.pseudo_Obs(0.3, .1, 'mat')], [pe.pseudo_Obs(0.2, .1, 'mat'), pe.pseudo_Obs(2.0, .4, 'mat')]]) + + ol = [do, testl, mat] + fname = 'test_rw' + + jsonio.dump_to_json(ol, fname, indent=1) + + rl = jsonio.load_json(fname) + + os.remove(fname + '.json.gz') + + for i in range(len(rl)): + if isinstance(ol[i], pe.Obs): + o = ol[i] - rl[i] + assert(o.is_zero()) + or1 = np.ravel(ol[i]) + or2 = np.ravel(rl[i]) + for j in range(len(or1)): + o = or1[i] - or2[i] + assert(o.is_zero()) From 950fb17c843ac66c34801a92faa633452dcca1f7 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 30 Nov 2021 11:08:30 +0100 Subject: [PATCH 026/220] Refined covobs implementation --- pyerrors/obs.py | 305 ++++++++++++++++++++++++---------------------- tests/obs_test.py | 38 ++++++ 2 files changed, 196 insertions(+), 147 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 93fb7ffd..38a72a1b 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -38,11 +38,11 @@ class Obs: Dictionary for N_sigma values. If an entry for a given ensemble exists this overwrites the standard value for that ensemble. """ - #__slots__ = ['names', 'shape', 'r_values', 'deltas', 'N', '_value', '_dvalue', - # 'ddvalue', 'reweighted', 'S', 'tau_exp', 'N_sigma', - # 'e_dvalue', 'e_ddvalue', 'e_tauint', 'e_dtauint', - # 'e_windowsize', 'e_rho', 'e_drho', 'e_n_tauint', 'e_n_dtauint', - # 'idl', 'is_merged', 'tag', '__dict__'] + __slots__ = ['names', 'shape', 'r_values', 'deltas', 'N', '_value', '_dvalue', + 'ddvalue', 'reweighted', 'S', 'tau_exp', 'N_sigma', + 'e_dvalue', 'e_ddvalue', 'e_tauint', 'e_dtauint', + 'e_windowsize', 'e_rho', 'e_drho', 'e_n_tauint', 'e_n_dtauint', + 'idl', 'is_merged', 'tag', 'covobs', '__dict__'] S_global = 2.0 S_dict = {} @@ -68,7 +68,7 @@ class Obs: already subtracted from the samples """ - if means is None and not kwargs.get('empty', False): + if means is None and samples is not None: if len(samples) != len(names): raise Exception('Length of samples and names incompatible.') if idl is not None: @@ -81,10 +81,10 @@ class Obs: if min(len(x) for x in samples) <= 4: raise Exception('Samples have to have at least 5 entries.') - if kwargs.get('empty', False): - self.names = [] - else: + if names: self.names = sorted(names) + else: + self.names = [] self.shape = {} self.r_values = {} @@ -95,7 +95,7 @@ class Obs: self.covobs = covobs self.idl = {} - if not kwargs.get('empty', False): + if samples is not None: if idl is not None: for name, idx in sorted(zip(names, idl)): if isinstance(idx, range): @@ -159,6 +159,14 @@ class Obs: def e_names(self): return sorted(set([o.split('|')[0] for o in self.names])) + @property + def cov_names(self): + return sorted(set([o for o in self.covobs.keys()])) + + @property + def mc_names(self): + return sorted(set([o.split('|')[0] for o in self.names if o not in self.cov_names])) + @property def e_content(self): res = {} @@ -233,97 +241,96 @@ class Obs: _parse_kwarg('tau_exp') _parse_kwarg('N_sigma') - for e, e_name in enumerate(self.e_names): - if e_name not in self.covobs: - r_length = [] - for r_name in e_content[e_name]: - if isinstance(self.idl[r_name], range): - r_length.append(len(self.idl[r_name])) - else: - r_length.append((self.idl[r_name][-1] - self.idl[r_name][0] + 1)) + for e, e_name in enumerate(self.mc_names): + r_length = [] + for r_name in e_content[e_name]: + if isinstance(self.idl[r_name], range): + r_length.append(len(self.idl[r_name])) + else: + r_length.append((self.idl[r_name][-1] - self.idl[r_name][0] + 1)) - e_N = np.sum([self.shape[r_name] for r_name in e_content[e_name]]) - w_max = max(r_length) // 2 - e_gamma[e_name] = np.zeros(w_max) - self.e_rho[e_name] = np.zeros(w_max) - self.e_drho[e_name] = np.zeros(w_max) + e_N = np.sum([self.shape[r_name] for r_name in e_content[e_name]]) + w_max = max(r_length) // 2 + e_gamma[e_name] = np.zeros(w_max) + self.e_rho[e_name] = np.zeros(w_max) + self.e_drho[e_name] = np.zeros(w_max) - for r_name in e_content[e_name]: - e_gamma[e_name] += self._calc_gamma(self.deltas[r_name], self.idl[r_name], self.shape[r_name], w_max, fft) + for r_name in e_content[e_name]: + e_gamma[e_name] += self._calc_gamma(self.deltas[r_name], self.idl[r_name], self.shape[r_name], w_max, fft) - gamma_div = np.zeros(w_max) - for r_name in e_content[e_name]: - gamma_div += self._calc_gamma(np.ones((self.shape[r_name])), self.idl[r_name], self.shape[r_name], w_max, fft) - e_gamma[e_name] /= gamma_div[:w_max] + gamma_div = np.zeros(w_max) + for r_name in e_content[e_name]: + gamma_div += self._calc_gamma(np.ones((self.shape[r_name])), self.idl[r_name], self.shape[r_name], w_max, fft) + e_gamma[e_name] /= gamma_div[:w_max] - if np.abs(e_gamma[e_name][0]) < 10 * np.finfo(float).tiny: # Prevent division by zero + if np.abs(e_gamma[e_name][0]) < 10 * np.finfo(float).tiny: # Prevent division by zero + self.e_tauint[e_name] = 0.5 + self.e_dtauint[e_name] = 0.0 + self.e_dvalue[e_name] = 0.0 + self.e_ddvalue[e_name] = 0.0 + self.e_windowsize[e_name] = 0 + continue + + self.e_rho[e_name] = e_gamma[e_name][:w_max] / e_gamma[e_name][0] + self.e_n_tauint[e_name] = np.cumsum(np.concatenate(([0.5], self.e_rho[e_name][1:]))) + # Make sure no entry of tauint is smaller than 0.5 + self.e_n_tauint[e_name][self.e_n_tauint[e_name] <= 0.5] = 0.5 + np.finfo(np.float64).eps + # hep-lat/0306017 eq. (42) + self.e_n_dtauint[e_name] = self.e_n_tauint[e_name] * 2 * np.sqrt(np.abs(np.arange(w_max) + 0.5 - self.e_n_tauint[e_name]) / e_N) + self.e_n_dtauint[e_name][0] = 0.0 + + def _compute_drho(i): + tmp = self.e_rho[e_name][i + 1:w_max] + np.concatenate([self.e_rho[e_name][i - 1::-1], self.e_rho[e_name][1:w_max - 2 * i]]) - 2 * self.e_rho[e_name][i] * self.e_rho[e_name][1:w_max - i] + self.e_drho[e_name][i] = np.sqrt(np.sum(tmp ** 2) / e_N) + + _compute_drho(1) + if self.tau_exp[e_name] > 0: + texp = self.tau_exp[e_name] + # if type(self.idl[e_name]) is range: # scale tau_exp according to step size + # texp /= self.idl[e_name].step + # Critical slowing down analysis + if w_max // 2 <= 1: + raise Exception("Need at least 8 samples for tau_exp error analysis") + for n in range(1, w_max // 2): + _compute_drho(n + 1) + if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2: + # Bias correction hep-lat/0306017 eq. (49) included + self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) + texp * np.abs(self.e_rho[e_name][n + 1]) # The absolute makes sure, that the tail contribution is always positive + self.e_dtauint[e_name] = np.sqrt(self.e_n_dtauint[e_name][n] ** 2 + texp ** 2 * self.e_drho[e_name][n + 1] ** 2) + # Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2 + self.e_dvalue[e_name] = np.sqrt(2 * self.e_tauint[e_name] * e_gamma[e_name][0] * (1 + 1 / e_N) / e_N) + self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt((n + 0.5) / e_N) + self.e_windowsize[e_name] = n + break + else: + if self.S[e_name] == 0.0: self.e_tauint[e_name] = 0.5 self.e_dtauint[e_name] = 0.0 - self.e_dvalue[e_name] = 0.0 - self.e_ddvalue[e_name] = 0.0 + self.e_dvalue[e_name] = np.sqrt(e_gamma[e_name][0] / (e_N - 1)) + self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt(0.5 / e_N) self.e_windowsize[e_name] = 0 - continue - - self.e_rho[e_name] = e_gamma[e_name][:w_max] / e_gamma[e_name][0] - self.e_n_tauint[e_name] = np.cumsum(np.concatenate(([0.5], self.e_rho[e_name][1:]))) - # Make sure no entry of tauint is smaller than 0.5 - self.e_n_tauint[e_name][self.e_n_tauint[e_name] <= 0.5] = 0.5 + np.finfo(np.float64).eps - # hep-lat/0306017 eq. (42) - self.e_n_dtauint[e_name] = self.e_n_tauint[e_name] * 2 * np.sqrt(np.abs(np.arange(w_max) + 0.5 - self.e_n_tauint[e_name]) / e_N) - self.e_n_dtauint[e_name][0] = 0.0 - - def _compute_drho(i): - tmp = self.e_rho[e_name][i + 1:w_max] + np.concatenate([self.e_rho[e_name][i - 1::-1], self.e_rho[e_name][1:w_max - 2 * i]]) - 2 * self.e_rho[e_name][i] * self.e_rho[e_name][1:w_max - i] - self.e_drho[e_name][i] = np.sqrt(np.sum(tmp ** 2) / e_N) - - _compute_drho(1) - if self.tau_exp[e_name] > 0: - texp = self.tau_exp[e_name] - # if type(self.idl[e_name]) is range: # scale tau_exp according to step size - # texp /= self.idl[e_name].step - # Critical slowing down analysis - if w_max // 2 <= 1: - raise Exception("Need at least 8 samples for tau_exp error analysis") - for n in range(1, w_max // 2): - _compute_drho(n + 1) - if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2: - # Bias correction hep-lat/0306017 eq. (49) included - self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) + texp * np.abs(self.e_rho[e_name][n + 1]) # The absolute makes sure, that the tail contribution is always positive - self.e_dtauint[e_name] = np.sqrt(self.e_n_dtauint[e_name][n] ** 2 + texp ** 2 * self.e_drho[e_name][n + 1] ** 2) - # Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2 + else: + # Standard automatic windowing procedure + tau = self.S[e_name] / np.log((2 * self.e_n_tauint[e_name][1:] + 1) / (2 * self.e_n_tauint[e_name][1:] - 1)) + g_w = np.exp(- np.arange(1, w_max) / tau) - tau / np.sqrt(np.arange(1, w_max) * e_N) + for n in range(1, w_max): + if n < w_max // 2 - 2: + _compute_drho(n + 1) + if g_w[n - 1] < 0 or n >= w_max - 1: + self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) # Bias correction hep-lat/0306017 eq. (49) + self.e_dtauint[e_name] = self.e_n_dtauint[e_name][n] self.e_dvalue[e_name] = np.sqrt(2 * self.e_tauint[e_name] * e_gamma[e_name][0] * (1 + 1 / e_N) / e_N) self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt((n + 0.5) / e_N) self.e_windowsize[e_name] = n break - else: - if self.S[e_name] == 0.0: - self.e_tauint[e_name] = 0.5 - self.e_dtauint[e_name] = 0.0 - self.e_dvalue[e_name] = np.sqrt(e_gamma[e_name][0] / (e_N - 1)) - self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt(0.5 / e_N) - self.e_windowsize[e_name] = 0 - else: - # Standard automatic windowing procedure - tau = self.S[e_name] / np.log((2 * self.e_n_tauint[e_name][1:] + 1) / (2 * self.e_n_tauint[e_name][1:] - 1)) - g_w = np.exp(- np.arange(1, w_max) / tau) - tau / np.sqrt(np.arange(1, w_max) * e_N) - for n in range(1, w_max): - if n < w_max // 2 - 2: - _compute_drho(n + 1) - if g_w[n - 1] < 0 or n >= w_max - 1: - self.e_tauint[e_name] = self.e_n_tauint[e_name][n] * (1 + (2 * n + 1) / e_N) / (1 + 1 / e_N) # Bias correction hep-lat/0306017 eq. (49) - self.e_dtauint[e_name] = self.e_n_dtauint[e_name][n] - self.e_dvalue[e_name] = np.sqrt(2 * self.e_tauint[e_name] * e_gamma[e_name][0] * (1 + 1 / e_N) / e_N) - self.e_ddvalue[e_name] = self.e_dvalue[e_name] * np.sqrt((n + 0.5) / e_N) - self.e_windowsize[e_name] = n - break self._dvalue += self.e_dvalue[e_name] ** 2 self.ddvalue += (self.e_dvalue[e_name] * self.e_ddvalue[e_name]) ** 2 - else: - self.e_dvalue[e_name] = np.sqrt(self.covobs[e_name].errsq()) - self.e_ddvalue[e_name] = 0 - self._dvalue += self.e_dvalue[e_name]**2 + for e_name in self.cov_names: + self.e_dvalue[e_name] = np.sqrt(self.covobs[e_name].errsq()) + self.e_ddvalue[e_name] = 0 + self._dvalue += self.e_dvalue[e_name]**2 self._dvalue = np.sqrt(self.dvalue) if self._dvalue == 0.0: @@ -385,16 +392,15 @@ class Obs: print('Result\t %3.8e +/- %3.8e +/- %3.8e (%3.3f%%)' % (self.value, self.dvalue, self.ddvalue, percentage)) if len(self.e_names) > 1: print(' Ensemble errors:') - for e_name in self.e_names: - if e_name not in self.covobs: - if len(self.e_names) > 1: - print('', e_name, '\t %3.8e +/- %3.8e' % (self.e_dvalue[e_name], self.e_ddvalue[e_name])) - if self.tau_exp[e_name] > 0: - print(' t_int\t %3.8e +/- %3.8e tau_exp = %3.2f, N_sigma = %1.0i' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.tau_exp[e_name], self.N_sigma[e_name])) - else: - print(' t_int\t %3.8e +/- %3.8e S = %3.2f' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.S[e_name])) + for e_name in self.mc_names: + if len(self.e_names) > 1: + print('', e_name, '\t %3.8e +/- %3.8e' % (self.e_dvalue[e_name], self.e_ddvalue[e_name])) + if self.tau_exp[e_name] > 0: + print(' t_int\t %3.8e +/- %3.8e tau_exp = %3.2f, N_sigma = %1.0i' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.tau_exp[e_name], self.N_sigma[e_name])) else: - print('', e_name, '\t %3.8e' % (self.e_dvalue[e_name])) + print(' t_int\t %3.8e +/- %3.8e S = %3.2f' % (self.e_tauint[e_name], self.e_dtauint[e_name], self.S[e_name])) + for e_name in self.cov_names: + print('', e_name, '\t %3.8e' % (self.e_dvalue[e_name])) if ens_content is True: if len(self.e_names) == 1: print(self.N, 'samples in', len(self.e_names), 'ensemble:') @@ -467,7 +473,7 @@ class Obs: raise Exception('Run the gamma method first.') fig = plt.figure() - for e, e_name in enumerate(self.e_names): + for e, e_name in enumerate(self.mc_names): plt.xlabel(r'$W$') plt.ylabel(r'$\tau_\mathrm{int}$') length = int(len(self.e_n_tauint[e_name])) @@ -498,7 +504,7 @@ class Obs: """Plot normalized autocorrelation function time for each ensemble.""" if not hasattr(self, 'e_dvalue'): raise Exception('Run the gamma method first.') - for e, e_name in enumerate(self.e_names): + for e, e_name in enumerate(self.mc_names): plt.xlabel('W') plt.ylabel('rho') length = int(len(self.e_drho[e_name])) @@ -520,7 +526,7 @@ class Obs: """Plot replica distribution for each ensemble with more than one replicum.""" if not hasattr(self, 'e_dvalue'): raise Exception('Run the gamma method first.') - for e, e_name in enumerate(self.e_names): + for e, e_name in enumerate(self.mc_names): if len(self.e_content[e_name]) == 1: print('No replica distribution for a single replicum (', e_name, ')') continue @@ -546,7 +552,7 @@ class Obs: expand : bool show expanded history for irregular Monte Carlo chains (default: True). """ - for e, e_name in enumerate(self.e_names): + for e, e_name in enumerate(self.mc_names): plt.figure() r_length = [] tmp = [] @@ -1055,7 +1061,7 @@ def derived_observable(func, data, **kwargs): allcov = {} for o in raveled_data: - for name in o.covobs: + for name in o.cov_names: if name in allcov: if not np.array_equal(allcov[name], o.covobs[name].cov): raise Exception('Inconsistent covariance matrices for %s!' % (name)) @@ -1137,7 +1143,7 @@ def derived_observable(func, data, **kwargs): new_grad = {} for j_obs, obs in np.ndenumerate(data): for name in obs.names: - if name in obs.covobs: + if name in obs.cov_names: if name in new_grad: new_grad[name] += deriv[i_val + j_obs] * obs.covobs[name].grad else: @@ -1231,6 +1237,8 @@ def reweight(weight, obs, **kwargs): """ result = [] for i in range(len(obs)): + if len(obs[i].cov_names): + raise Exception('Error: Not possible to reweight an Obs that contains covobs!') if sorted(weight.names) != sorted(obs[i].names): raise Exception('Error: Ensembles do not fit') for name in weight.names: @@ -1272,6 +1280,8 @@ def correlate(obs_a, obs_b): if sorted(obs_a.names) != sorted(obs_b.names): raise Exception('Ensembles do not fit') + if len(obs_a.cov_names) or len(obs_b.cov_names): + raise Exception('Error: Not possible to correlate Obs that contain covobs!') for name in obs_a.names: if obs_a.shape[name] != obs_b.shape[name]: raise Exception('Shapes of ensemble', name, 'do not fit') @@ -1329,7 +1339,7 @@ def covariance(obs1, obs2, correlation=False, **kwargs): dvalue = 0 - for e_name in obs1.e_names: + for e_name in obs1.mc_names: if e_name not in obs2.e_names: continue @@ -1349,6 +1359,13 @@ def covariance(obs1, obs2, correlation=False, **kwargs): tau_combined = (obs1.e_tauint[e_name] + obs2.e_tauint[e_name]) / 2 dvalue += gamma / e_N * (1 + 1 / e_N) / e_N * 2 * tau_combined + for e_name in obs1.cov_names: + + if e_name not in obs2.cov_names: + continue + + dvalue += float(np.dot(np.transpose(obs1.covobs[e_name].grad), np.dot(obs1.covobs[e_name].cov, obs2.covobs[e_name].grad))) + if np.abs(dvalue / obs1.dvalue / obs2.dvalue) > 1.0: dvalue = np.sign(dvalue) * obs1.dvalue * obs2.dvalue @@ -1420,9 +1437,9 @@ def covariance2(obs1, obs2, correlation=False, **kwargs): e_n_tauint = {} e_rho = {} - for e_name in obs1.e_names: + for e_name in obs1.mc_names: - if e_name not in obs2.e_names: + if e_name not in obs2.mc_names: continue idl_d = {} @@ -1473,6 +1490,13 @@ def covariance2(obs1, obs2, correlation=False, **kwargs): dvalue += e_dvalue[e_name] + for e_name in obs1.cov_names: + + if e_name not in obs2.cov_names: + continue + + dvalue += float(np.dot(np.transpose(obs1.covobs[e_name].grad), np.dot(obs1.covobs[e_name].cov, obs2.covobs[e_name].grad))) + if np.abs(dvalue / obs1.dvalue / obs2.dvalue) > 1.0: dvalue = np.sign(dvalue) * obs1.dvalue * obs2.dvalue @@ -1610,6 +1634,8 @@ def merge_obs(list_of_obs): replist = [item for obs in list_of_obs for item in obs.names] if (len(replist) == len(set(replist))) is False: raise Exception('list_of_obs contains duplicate replica: %s' % (str(replist))) + if any([len(o.cov_names) for o in list_of_obs]): + raise Exception('Not possible to merge data that contains covobs!') new_dict = {} idl_dict = {} for o in list_of_obs: @@ -1624,61 +1650,46 @@ def merge_obs(list_of_obs): return o -def covobs_to_obs(co): - """Make an Obs out of a Covobs +def cov_Obs(means, cov, name, grad=None): + """Create an Obs based on mean(s) and a covariance matrix Parameters ---------- - co : Covobs - Covobs to be embedded into the Obs - """ - o = Obs(None, None, empty=True) - o._value = co.value - o.names.append(co.name) - o.covobs[co.name] = co - o._dvalue = np.sqrt(co.errsq()) - o.shape[co.name] = 1 - o.idl[co.name] = [] - return o - - -def create_Covobs(mean, cov, name, pos=None, grad=None): - """Make an Obs based on a Covobs - - Parameters - ---------- - mean : float - Mean value of the new Obs + mean : list of floats or float + N mean value(s) of the new Obs cov : list or array - 2d Covariance matrix or 1d diagonal entries - name : str - identifier for the covariance matrix - pos : int - Position of the variance belonging to mean in cov. - Is taken to be 1 if cov is 0-dimensional - grad : list or array - Gradient of the Covobs wrt. the means belonging to cov. - """ - return covobs_to_obs(Covobs(mean, cov, name, pos=pos, grad=grad)) - - -def create_Covobs_list(means, cov, name, grad=None): - """Make a list of Obs based Covobs - - Parameters - ---------- - mean : list of floats - N mean values of the new Obs - cov : list or array - 2d (NxN) Covariance matrix or 1d diagonal entries + 2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance name : str identifier for the covariance matrix grad : list or array Gradient of the Covobs wrt. the means belonging to cov. """ + + def covobs_to_obs(co): + """Make an Obs out of a Covobs + + Parameters + ---------- + co : Covobs + Covobs to be embedded into the Obs + """ + o = Obs(None, None, empty=True) + o._value = co.value + o.names.append(co.name) + o.covobs[co.name] = co + o._dvalue = np.sqrt(co.errsq()) + o.shape[co.name] = 1 + o.idl[co.name] = [] + return o + ol = [] + if isinstance(means, (float, int)): + means = [means] + for i in range(len(means)): ol.append(covobs_to_obs(Covobs(means[i], cov, name, pos=i, grad=grad))) if ol[0].covobs[name].N != len(means): raise Exception('You have to provide %d mean values!' % (ol[0].N)) + if len(ol) == 1: + return ol[0] return ol diff --git a/tests/obs_test.py b/tests/obs_test.py index 60016705..8af54d56 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -543,3 +543,41 @@ def test_import_jackknife(): reconstructed_obs = pe.import_jackknife(my_jacks, 'test') assert my_obs == reconstructed_obs + +def test_covobs(): + val = 1.123124 + cov = .243423 + name = 'Covariance' + co = pe.cov_Obs(val, cov, name) + co.gamma_method() + assert (co.dvalue == np.sqrt(cov)) + assert (co.value == val) + + do = 2 * co + assert (do.covobs[name].grad[0] == 2) + + do = co * co + assert (do.covobs[name].grad[0] == 2 * val) + assert np.array_equal(do.covobs[name].cov, co.covobs[name].cov) + + pi = [16.7457, -19.0475] + cov = [[3.49591, -6.07560], [-6.07560, 10.5834]] + + cl = pe.cov_Obs(pi, cov, 'rAP') + pl = pe.misc.gen_correlated_data(pi, np.asarray(cov), 'rAPpseudo') + + def rAP(p, g0sq): + return -0.0010666 * g0sq * (1 + np.exp(p[0] + p[1] / g0sq)) + + for g0sq in [1, 1.5, 1.8]: + oc = rAP(cl, g0sq) + oc.gamma_method() + op = rAP(pl, g0sq) + op.gamma_method() + assert(np.isclose(oc.value, op.value, rtol=1e-14, atol=1e-14)) + + assert(pe.covariance(cl[0], cl[1]) == cov[0][1]) + assert(pe.covariance2(cl[0], cl[1]) == cov[1][0]) + + do = cl[0] * cl[1] + assert(np.array_equal(do.covobs['rAP'].grad, np.transpose([pi[1], pi[0]]).reshape(2, 1))) From 1fa3bc1291724a3c9dd59ac5ab734ac341827ec9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 11:52:53 +0000 Subject: [PATCH 027/220] fix: linalg.jack_matmul now works with arrays of arbitrary shape --- pyerrors/linalg.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index fb121e6a..dbbde944 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -186,49 +186,49 @@ def jack_matmul(*operands): For large matrices this is considerably faster compared to matmul. """ - if any(isinstance(o[0, 0], CObs) for o in operands): - name = operands[0][0, 0].real.names[0] - idl = operands[0][0, 0].real.idl[name] + if any(isinstance(o.flat[0], CObs) for o in operands): + name = operands[0].flat[0].real.names[0] + idl = operands[0].flat[0].real.idl[name] def _exp_to_jack(matrix): base_matrix = np.empty_like(matrix) - for (n, m), entry in np.ndenumerate(matrix): - base_matrix[n, m] = entry.real.export_jackknife() + 1j * entry.imag.export_jackknife() + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = entry.real.export_jackknife() + 1j * entry.imag.export_jackknife() return base_matrix def _imp_from_jack(matrix): base_matrix = np.empty_like(matrix) - for (n, m), entry in np.ndenumerate(matrix): - base_matrix[n, m] = CObs(import_jackknife(entry.real, name, [idl]), - import_jackknife(entry.imag, name, [idl])) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = CObs(import_jackknife(entry.real, name, [idl]), + import_jackknife(entry.imag, name, [idl])) return base_matrix r = _exp_to_jack(operands[0]) for op in operands[1:]: - if isinstance(op[0, 0], CObs): + if isinstance(op.flat[0], CObs): r = r @ _exp_to_jack(op) else: r = r @ op return _imp_from_jack(r) else: - name = operands[0][0, 0].names[0] - idl = operands[0][0, 0].idl[name] + name = operands[0].flat[0].names[0] + idl = operands[0].flat[0].idl[name] def _exp_to_jack(matrix): base_matrix = np.empty_like(matrix) - for (n, m), entry in np.ndenumerate(matrix): - base_matrix[n, m] = entry.export_jackknife() + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = entry.export_jackknife() return base_matrix def _imp_from_jack(matrix): base_matrix = np.empty_like(matrix) - for (n, m), entry in np.ndenumerate(matrix): - base_matrix[n, m] = import_jackknife(entry, name, [idl]) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = import_jackknife(entry, name, [idl]) return base_matrix r = _exp_to_jack(operands[0]) for op in operands[1:]: - if isinstance(op[0, 0], Obs): + if isinstance(op.flat[0], Obs): r = r @ _exp_to_jack(op) else: r = r @ op From 2b33d79674e371cbecb7fc2acd0adf1b1bc8821a Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 11:57:45 +0000 Subject: [PATCH 028/220] feat: input routine for hadrons FourquarkFullyConnected files added --- pyerrors/input/hadrons.py | 62 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 1f21c3e0..2e7242d1 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -63,7 +63,7 @@ def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson', idl=No for outputs of the Meson module. Can be altered to read input from other modules with similar structures. idl : range - If specified only conifgurations in the given range are read in. + If specified only configurations in the given range are read in. """ files, idx = _get_files(path, filestem, idl) @@ -139,7 +139,7 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, idl=None): filestem -- namestem of the files to read ens_id -- name of the ensemble, required for internal bookkeeping idl : range - If specified only conifgurations in the given range are read in. + If specified only configurations in the given range are read in. """ files, idx = _get_files(path, filestem, idl) @@ -176,7 +176,7 @@ def read_Bilinear_hd5(path, filestem, ens_id, idl=None): filestem -- namestem of the files to read ens_id -- name of the ensemble, required for internal bookkeeping idl : range - If specified only conifgurations in the given range are read in. + If specified only configurations in the given range are read in. """ files, idx = _get_files(path, filestem, idl) @@ -216,3 +216,59 @@ def read_Bilinear_hd5(path, filestem, ens_id, idl=None): result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom_in, mom_out=mom_out) return result_dict + + +def read_Fourquark_hd5(path, filestem, ens_id, idl=None): + """Read hadrons FourquarkFullyConnected hdf5 file and output an array of CObs + + Parameters + ----------------- + path -- path to the files to read + filestem -- namestem of the files to read + ens_id -- name of the ensemble, required for internal bookkeeping + idl : range + If specified only configurations in the given range are read in. + """ + + files, idx = _get_files(path, filestem, idl) + + mom_in = None + mom_out = None + + corr_data = {} + + tree = 'FourQuarkFullyConnected/FourQuarkFullyConnected_' + + for hd5_file in files: + file = h5py.File(path + '/' + hd5_file, "r") + + for i in range(1): + name = file[tree + str(i) + '/info'].attrs['gammaA'][0].decode('UTF-8') + '_' + file[tree + str(i) + '/info'].attrs['gammaB'][0].decode('UTF-8') + if name not in corr_data: + corr_data[name] = [] + raw_data = file[tree + str(i) + '/corr'][0][0].view('complex') + corr_data[name].append(raw_data) + if mom_in is None: + mom_in = np.array(str(file[tree + str(i) + '/info'].attrs['pIn'])[3:-2].strip().split(' '), dtype=int) + if mom_out is None: + mom_out = np.array(str(file[tree + str(i) + '/info'].attrs['pOut'])[3:-2].strip().split(' '), dtype=int) + + file.close() + + result_dict = {} + + for key, data in corr_data.items(): + local_data = np.array(data) + + rolled_array = np.moveaxis(local_data, 0, 8) + + matrix = np.empty((rolled_array.shape[:-1]), dtype=object) + for index in np.ndindex(rolled_array.shape[:-1]): + real = Obs([rolled_array[index].real], [ens_id], idl=[idx]) + imag = Obs([rolled_array[index].imag], [ens_id], idl=[idx]) + matrix[index] = CObs(real, imag) + + result_dict[key] = Npr_matrix(matrix, mom_in=mom_in, mom_out=mom_out) + # result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom_in, mom_out=mom_out) + + return result_dict From 4ecbe2f8f2cb7f889baffd500c09e580ed5a3144 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 12:00:51 +0000 Subject: [PATCH 029/220] docs: docstrings in input.hadrons updated --- pyerrors/input/hadrons.py | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 2e7242d1..00b93453 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -134,10 +134,13 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, idl=None): """Read hadrons ExternalLeg hdf5 file and output an array of CObs Parameters - ----------------- - path -- path to the files to read - filestem -- namestem of the files to read - ens_id -- name of the ensemble, required for internal bookkeeping + ---------- + path : str + path to the files to read + filestem : str + namestem of the files to read + ens_id : str + name of the ensemble, required for internal bookkeeping idl : range If specified only configurations in the given range are read in. """ @@ -171,10 +174,13 @@ def read_Bilinear_hd5(path, filestem, ens_id, idl=None): """Read hadrons Bilinear hdf5 file and output an array of CObs Parameters - ----------------- - path -- path to the files to read - filestem -- namestem of the files to read - ens_id -- name of the ensemble, required for internal bookkeeping + ---------- + path : str + path to the files to read + filestem : str + namestem of the files to read + ens_id : str + name of the ensemble, required for internal bookkeeping idl : range If specified only configurations in the given range are read in. """ @@ -222,10 +228,13 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None): """Read hadrons FourquarkFullyConnected hdf5 file and output an array of CObs Parameters - ----------------- - path -- path to the files to read - filestem -- namestem of the files to read - ens_id -- name of the ensemble, required for internal bookkeeping + ---------- + path : str + path to the files to read + filestem : str + namestem of the files to read + ens_id : str + name of the ensemble, required for internal bookkeeping idl : range If specified only configurations in the given range are read in. """ From 359c9c06daa97e8eaee93c22c7f93538b7a1cc02 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 30 Nov 2021 13:32:50 +0100 Subject: [PATCH 030/220] Bugfix for covobs, fit tests for covobs added --- pyerrors/covobs.py | 2 +- pyerrors/obs.py | 32 ++++++++++++++--------------- tests/fits_test.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 17 deletions(-) diff --git a/pyerrors/covobs.py b/pyerrors/covobs.py index 87b0526d..3615fe5c 100644 --- a/pyerrors/covobs.py +++ b/pyerrors/covobs.py @@ -41,7 +41,7 @@ class Covobs: raise Exception('Have to specify position of cov-element belonging to mean!') else: if pos > self.N: - raise Exception('pos %d too large for covariance matrix with dimension %dx%d!' % (pos, self.N, self.N)) + raise Exception('pos %d too large for covariance matrix with dimension %dx%d!' % (pos, self.N, self.N)) self.grad = np.zeros((self.N, 1)) self.grad[pos] = 1. else: diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 38a72a1b..d0a66ab2 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -80,7 +80,7 @@ class Obs: raise TypeError('All names have to be strings.') if min(len(x) for x in samples) <= 4: raise Exception('Samples have to have at least 5 entries.') - + if names: self.names = sorted(names) else: @@ -324,19 +324,19 @@ class Obs: self.e_windowsize[e_name] = n break - self._dvalue += self.e_dvalue[e_name] ** 2 - self.ddvalue += (self.e_dvalue[e_name] * self.e_ddvalue[e_name]) ** 2 + self._dvalue += self.e_dvalue[e_name] ** 2 + self.ddvalue += (self.e_dvalue[e_name] * self.e_ddvalue[e_name]) ** 2 for e_name in self.cov_names: self.e_dvalue[e_name] = np.sqrt(self.covobs[e_name].errsq()) self.e_ddvalue[e_name] = 0 self._dvalue += self.e_dvalue[e_name]**2 - self._dvalue = np.sqrt(self.dvalue) + self._dvalue = np.sqrt(self._dvalue) if self._dvalue == 0.0: self.ddvalue = 0.0 else: - self.ddvalue = np.sqrt(self.ddvalue) / self.dvalue + self.ddvalue = np.sqrt(self.ddvalue) / self._dvalue return def _calc_gamma(self, deltas, idx, shape, w_max, fft): @@ -388,8 +388,8 @@ class Obs: if self.value == 0.0: percentage = np.nan else: - percentage = np.abs(self.dvalue / self.value) * 100 - print('Result\t %3.8e +/- %3.8e +/- %3.8e (%3.3f%%)' % (self.value, self.dvalue, self.ddvalue, percentage)) + percentage = np.abs(self._dvalue / self.value) * 100 + print('Result\t %3.8e +/- %3.8e +/- %3.8e (%3.3f%%)' % (self.value, self._dvalue, self.ddvalue, percentage)) if len(self.e_names) > 1: print(' Ensemble errors:') for e_name in self.mc_names: @@ -447,7 +447,7 @@ class Obs: Works only properly when the gamma method was run. """ - return self.is_zero() or np.abs(self.value) <= sigma * self.dvalue + return self.is_zero() or np.abs(self.value) <= sigma * self._dvalue def is_zero(self, rtol=1.e-5, atol=1.e-8): """Checks whether the observable is zero within a given tolerance. @@ -575,10 +575,10 @@ class Obs: ensemble to the error and returns a dictionary containing the fractions.""" if not hasattr(self, 'e_dvalue'): raise Exception('Run the gamma method first.') - if self.dvalue == 0.0: + if self._dvalue == 0.0: raise Exception('Error is 0.0') labels = self.e_names - sizes = [i ** 2 for i in list(self.e_dvalue.values())] / self.dvalue ** 2 + sizes = [i ** 2 for i in list(self.e_dvalue.values())] / self._dvalue ** 2 fig1, ax1 = plt.subplots() ax1.pie(sizes, labels=labels, startangle=90, normalize=True) ax1.axis('equal') @@ -636,15 +636,15 @@ class Obs: return 'Obs[' + str(self) + ']' def __str__(self): - if self.dvalue == 0.0: + if self._dvalue == 0.0: return str(self.value) - fexp = np.floor(np.log10(self.dvalue)) + fexp = np.floor(np.log10(self._dvalue)) if fexp < 0.0: - return '{:{form}}({:2.0f})'.format(self.value, self.dvalue * 10 ** (-fexp + 1), form='.' + str(-int(fexp) + 1) + 'f') + return '{:{form}}({:2.0f})'.format(self.value, self._dvalue * 10 ** (-fexp + 1), form='.' + str(-int(fexp) + 1) + 'f') elif fexp == 0.0: - return '{:.1f}({:1.1f})'.format(self.value, self.dvalue) + return '{:.1f}({:1.1f})'.format(self.value, self._dvalue) else: - return '{:.0f}({:2.0f})'.format(self.value, self.dvalue) + return '{:.0f}({:2.0f})'.format(self.value, self._dvalue) # Overload comparisons def __lt__(self, other): @@ -1151,7 +1151,7 @@ def derived_observable(func, data, **kwargs): else: new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name]) - new_covobs = {name: Covobs(obs.covobs[name].value, obs.covobs[name].cov, obs.covobs[name].name, grad=new_grad[name]) for name in new_grad} + new_covobs = {name: Covobs(0, allcov[name], name, grad=new_grad[name]) for name in new_grad} new_samples = [] new_means = [] diff --git a/tests/fits_test.py b/tests/fits_test.py index bdce9952..45e98e35 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -46,6 +46,19 @@ def test_least_squares(): assert((out.fit_parameters[0] - beta[0]).is_zero()) assert((out.fit_parameters[1] - beta[1]).is_zero()) + oyc = [] + for i, item in enumerate(x): + oyc.append(pe.cov_Obs(y[i], yerr[i]**2, 'cov' + str(i))) + + outc = pe.least_squares(x, oyc, func) + betac = outc.fit_parameters + + for i in range(2): + betac[i].gamma_method(S=1.0) + assert math.isclose(betac[i].value, popt[i], abs_tol=1e-5) + assert math.isclose(pcov[i, i], betac[i].dvalue ** 2, abs_tol=1e-3) + assert math.isclose(pe.covariance(betac[0], betac[1]), pcov[0, 1], abs_tol=1e-3) + num_samples = 400 N = 10 @@ -135,6 +148,44 @@ def test_total_least_squares(): assert(diff / beta[0] < 1e-3 * beta[0].dvalue) assert((out.fit_parameters[1] - beta[1]).is_zero()) + oxc = [] + for i, item in enumerate(x): + oxc.append(pe.cov_Obs(x[i], xerr[i]**2, 'covx' + str(i))) + + oyc = [] + for i, item in enumerate(x): + oyc.append(pe.cov_Obs(y[i], yerr[i]**2, 'covy' + str(i))) + + outc = pe.total_least_squares(oxc, oyc, func) + betac = outc.fit_parameters + + for i in range(2): + betac[i].gamma_method(S=1.0) + assert math.isclose(betac[i].value, output.beta[i], rel_tol=1e-3) + assert math.isclose(output.cov_beta[i, i], betac[i].dvalue ** 2, rel_tol=2.5e-1), str(output.cov_beta[i, i]) + ' ' + str(betac[i].dvalue ** 2) + assert math.isclose(pe.covariance(betac[0], betac[1]), output.cov_beta[0, 1], rel_tol=2.5e-1) + + outc = pe.total_least_squares(oxc, oyc, func, const_par=[betac[1]]) + + diffc = outc.fit_parameters[0] - betac[0] + assert(diffc / betac[0] < 1e-3 * betac[0].dvalue) + assert((outc.fit_parameters[1] - betac[1]).is_zero()) + + outc = pe.total_least_squares(oxc, oy, func) + betac = outc.fit_parameters + + for i in range(2): + betac[i].gamma_method(S=1.0) + assert math.isclose(betac[i].value, output.beta[i], rel_tol=1e-3) + assert math.isclose(output.cov_beta[i, i], betac[i].dvalue ** 2, rel_tol=2.5e-1), str(output.cov_beta[i, i]) + ' ' + str(betac[i].dvalue ** 2) + assert math.isclose(pe.covariance(betac[0], betac[1]), output.cov_beta[0, 1], rel_tol=2.5e-1) + + outc = pe.total_least_squares(oxc, oy, func, const_par=[betac[1]]) + + diffc = outc.fit_parameters[0] - betac[0] + assert(diffc / betac[0] < 1e-3 * betac[0].dvalue) + assert((outc.fit_parameters[1] - betac[1]).is_zero()) + def test_odr_derivatives(): x = [] From d7c2f125fed7ebf1a81d88b5fb3dd27c80105cb0 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 30 Nov 2021 14:28:07 +0100 Subject: [PATCH 031/220] Created routine to get jsonstring itself, allowed for the I/O of uncompressed files, fixed bug for 1d-Arrays --- pyerrors/input/json.py | 82 +++++++++++++++++++++++++++++++++--------- tests/io_test.py | 5 +-- 2 files changed, 68 insertions(+), 19 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index f4229a20..83edfb63 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -7,10 +7,12 @@ import datetime from .. import version as pyerrorsversion import platform import numpy as np +import warnings -def dump_to_json(ol, fname, description='', indent=4): - """Export a list of Obs or structures containing Obs to a .json.gz file +def create_json_string(ol, fname, description='', indent=1): + """Generate the string for the export of a list of Obs or structures containing Obs + to a .json(.gz) file Parameters ----------------- @@ -147,25 +149,59 @@ def dump_to_json(ol, fname, description='', indent=4): d['obsdata'].append(write_List_to_dict(io)) elif isinstance(io, np.ndarray): d['obsdata'].append(write_Array_to_dict(io)) - if not fname.endswith('.json') and not fname.endswith('.gz'): - fname += '.json' - if not fname.endswith('.gz'): - fname += '.gz' + jsonstring = json.dumps(d, indent=indent, cls=my_encoder) # workaround for un-indentation of delta lists - jsonstring = jsonstring.replace('"[', '[').replace(']"', ']') - fp = gzip.open(fname, 'wb') - fp.write(jsonstring.encode('utf-8')) + jsonstring = jsonstring.replace(' "[', ' [').replace(']",', '],').replace(']"\n', ']\n') + + return jsonstring + + +def dump_to_json(ol, fname, description='', indent=1, gz=True): + """Export a list of Obs or structures containing Obs to a .json(.gz) file + + Parameters + ----------------- + ol : list + List of objects that will be exported. At the moments, these objects can be + either of: Obs, list, np.ndarray + All Obs inside a structure have to be defined on the same set of configurations. + fname : str + Filename of the output file + description : str + Optional string that describes the contents of the json file + indent : int + Specify the indentation level of the json file. None or 0 is permissible and + saves disk space. + gz : bool + If True, the output is a gzipped json. If False, the output is a json file. + """ + + jsonstring = create_json_string(ol, fname, description, indent) + + if not fname.endswith('.json') and not fname.endswith('.gz'): + fname += '.json' + + if gz: + if not fname.endswith('.gz'): + fname += '.gz' + + fp = gzip.open(fname, 'wb') + fp.write(jsonstring.encode('utf-8')) + else: + fp = open(fname, 'w') + fp.write(jsonstring) fp.close() - # this would be nicer, since it does not need a string + # this would be nicer, since it does not need a string but uses serialization (less memory!) # with gzip.open(fname, 'wt', encoding='UTF-8') as zipfile: # json.dump(d, zipfile, indent=indent) -def load_json(fname, verbose=True): - """Import a list of Obs or structures containing Obs to a .json.gz file. +def load_json(fname, verbose=True, gz=True): + """Import a list of Obs or structures containing Obs from a .json.gz file. The following structures are supported: Obs, list, np.ndarray + If the list contains only one element, it is unpacked from the list. Parameters ----------------- @@ -173,6 +209,8 @@ def load_json(fname, verbose=True): Filename of the input file verbose : bool Print additional information that was written to the file. + gz : bool + If True, assumes that data is gzipped. If False, assumes JSON file. """ def _gen_obsd_from_datad(d): @@ -220,7 +258,7 @@ def load_json(fname, verbose=True): def get_Array_from_dict(o): layouts = o.get('layout', '1').strip() - layout = [int(ls.strip()) for ls in layouts.split(',')] + layout = [int(ls.strip()) for ls in layouts.split(',') if len(ls) > 0] values = o['value'] od = _gen_obsd_from_datad(o['data']) @@ -234,10 +272,17 @@ def load_json(fname, verbose=True): if not fname.endswith('.json') and not fname.endswith('.gz'): fname += '.json' - if not fname.endswith('.gz'): - fname += '.gz' - with gzip.open(fname, 'r') as fin: - d = json.loads(fin.read().decode('utf-8')) + if gz: + if not fname.endswith('.gz'): + fname += '.gz' + with gzip.open(fname, 'r') as fin: + d = json.loads(fin.read().decode('utf-8')) + else: + if fname.endswith('.gz'): + warnings.warn("Trying to read from %s without unzipping!" % fname, UserWarning) + with open(fname, 'r') as fin: + d = json.loads(fin.read()) + prog = d.get('program', '') version = d.get('version', '') who = d.get('who', '') @@ -262,4 +307,7 @@ def load_json(fname, verbose=True): ol.append(get_List_from_dict(io)) elif io['type'] == 'Array': ol.append(get_Array_from_dict(io)) + + if len(obsdata) == 1: + ol = ol[0] return ol diff --git a/tests/io_test.py b/tests/io_test.py index c2dcdcbb..95dc00cd 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -14,9 +14,10 @@ def test_jsonio(): o5 = pe.pseudo_Obs(0.8, .1, 'two|r2') testl = [o3, o5] + arr = np.array([o3, o5]) mat = np.array([[pe.pseudo_Obs(1.0, .1, 'mat'), pe.pseudo_Obs(0.3, .1, 'mat')], [pe.pseudo_Obs(0.2, .1, 'mat'), pe.pseudo_Obs(2.0, .4, 'mat')]]) - ol = [do, testl, mat] + ol = [do, testl, mat, arr, np.array([o])] fname = 'test_rw' jsonio.dump_to_json(ol, fname, indent=1) @@ -32,5 +33,5 @@ def test_jsonio(): or1 = np.ravel(ol[i]) or2 = np.ravel(rl[i]) for j in range(len(or1)): - o = or1[i] - or2[i] + o = or1[j] - or2[j] assert(o.is_zero()) From 5937a519d7cc1a7c09f46b5683c05e028af5d4a6 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 30 Nov 2021 14:50:16 +0100 Subject: [PATCH 032/220] Added dictionary output of json input routine: It is possible to import and export any structure that is JSON serializable as description (or Obs.tag) --- pyerrors/input/json.py | 55 ++++++++++++++++++++++++++++-------------- tests/io_test.py | 14 ++++++++++- 2 files changed, 50 insertions(+), 19 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 83edfb63..bc4deaee 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -88,7 +88,8 @@ def create_json_string(ol, fname, description='', indent=1): d = {} d['type'] = 'Obs' d['layout'] = '1' - d['tag'] = o.tag + if o.tag: + d['tag'] = o.tag if o.reweighted: d['reweighted'] = o.reweighted d['value'] = [o.value] @@ -100,12 +101,13 @@ def create_json_string(ol, fname, description='', indent=1): d = {} d['type'] = 'List' d['layout'] = '%d' % len(ol) - if len(set([o.tag for o in ol])) > 1: - d['tag'] = '' - for o in ol: - d['tag'] += '%s\n' % (o.tag) - else: + if ol[0].tag: d['tag'] = ol[0].tag + if isinstance(ol[0].tag, str): + if len(set([o.tag for o in ol])) > 1: + d['tag'] = '' + for o in ol: + d['tag'] += '%s\n' % (o.tag) if ol[0].reweighted: d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] @@ -119,12 +121,13 @@ def create_json_string(ol, fname, description='', indent=1): d = {} d['type'] = 'Array' d['layout'] = str(oa.shape).lstrip('(').rstrip(')') - if len(set([o.tag for o in ol])) > 1: - d['tag'] = '' - for o in ol: - d['tag'] += '%s\n' % (o.tag) - else: + if ol[0].tag: d['tag'] = ol[0].tag + if isinstance(ol[0].tag, str): + if len(set([o.tag for o in ol])) > 1: + d['tag'] = '' + for o in ol: + d['tag'] += '%s\n' % (o.tag) if ol[0].reweighted: d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] @@ -198,7 +201,7 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): # json.dump(d, zipfile, indent=indent) -def load_json(fname, verbose=True, gz=True): +def load_json(fname, verbose=True, gz=True, full_output=False): """Import a list of Obs or structures containing Obs from a .json.gz file. The following structures are supported: Obs, list, np.ndarray If the list contains only one element, it is unpacked from the list. @@ -211,6 +214,9 @@ def load_json(fname, verbose=True, gz=True): Print additional information that was written to the file. gz : bool If True, assumes that data is gzipped. If False, assumes JSON file. + full_output : bool + If True, a dict containing auxiliary information and the data is returned. + If False, only the data is returned. """ def _gen_obsd_from_datad(d): @@ -239,7 +245,7 @@ def load_json(fname, verbose=True, gz=True): ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl']) ret.reweighted = o.get('reweighted', False) ret.is_merged = od['is_merged'] - ret.tag = o.get('tag', '') + ret.tag = o.get('tag', None) return ret def get_List_from_dict(o): @@ -253,7 +259,7 @@ def load_json(fname, verbose=True, gz=True): ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl'])) ret[-1].reweighted = o.get('reweighted', False) ret[-1].is_merged = od['is_merged'] - ret[-1].tag = o.get('tag', '') + ret[-1].tag = o.get('tag', None) return ret def get_Array_from_dict(o): @@ -267,7 +273,7 @@ def load_json(fname, verbose=True, gz=True): ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl'])) ret[-1].reweighted = o.get('reweighted', False) ret[-1].is_merged = od['is_merged'] - ret[-1].tag = o.get('tag', '') + ret[-1].tag = o.get('tag', None) return np.reshape(ret, layout) if not fname.endswith('.json') and not fname.endswith('.gz'): @@ -308,6 +314,19 @@ def load_json(fname, verbose=True, gz=True): elif io['type'] == 'Array': ol.append(get_Array_from_dict(io)) - if len(obsdata) == 1: - ol = ol[0] - return ol + if full_output: + retd = {} + retd['program'] = prog + retd['version'] = version + retd['who'] = who + retd['date'] = date + retd['host'] = host + retd['description'] = description + retd['obsdata'] = ol + + return retd + else: + if len(obsdata) == 1: + ol = ol[0] + + return ol diff --git a/tests/io_test.py b/tests/io_test.py index 95dc00cd..de309fd0 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -9,6 +9,8 @@ def test_jsonio(): o2 = pe.pseudo_Obs(0.5, .1, 'two|r1') o3 = pe.pseudo_Obs(0.5, .1, 'two|r2') o4 = pe.merge_obs([o2, o3]) + otag = 'This has been merged!' + o4.tag = otag do = o - .2 * o4 o5 = pe.pseudo_Obs(0.8, .1, 'two|r2') @@ -17,7 +19,7 @@ def test_jsonio(): arr = np.array([o3, o5]) mat = np.array([[pe.pseudo_Obs(1.0, .1, 'mat'), pe.pseudo_Obs(0.3, .1, 'mat')], [pe.pseudo_Obs(0.2, .1, 'mat'), pe.pseudo_Obs(2.0, .4, 'mat')]]) - ol = [do, testl, mat, arr, np.array([o])] + ol = [o4, do, testl, mat, arr, np.array([o])] fname = 'test_rw' jsonio.dump_to_json(ol, fname, indent=1) @@ -30,8 +32,18 @@ def test_jsonio(): if isinstance(ol[i], pe.Obs): o = ol[i] - rl[i] assert(o.is_zero()) + assert(ol[i].tag == rl[i].tag) or1 = np.ravel(ol[i]) or2 = np.ravel(rl[i]) for j in range(len(or1)): o = or1[j] - or2[j] assert(o.is_zero()) + + description = {'I': {'Am': {'a': 'nested dictionary!'}}} + jsonio.dump_to_json(ol, fname, indent=1, gz=False, description=description) + + rl = jsonio.load_json(fname, gz=False, full_output=True) + + assert(description == rl['description']) + + os.remove(fname + '.json') From 833c22fe36f6a9fad7c7d8b30799810d19d612ce Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 14:52:25 +0000 Subject: [PATCH 033/220] docs: Changelog updated --- CHANGELOG.md | 27 ++++++++++++++++++++------- README.md | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92681a4a..73d9eab9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,20 +4,33 @@ All notable changes to this project will be documented in this file. ## [2.0.0] - 2021-??-?? ### Added -- `CObs` class added which can handle complex valued Markov chain Monte Carlo data and the corresponding error propagation -- Matrix to matrix operations like the matrix inverse now also work for complex matrices and matrices containing entries that are not `Obs` but `float` or `int` -- `Obs` objects now have methods `is_zero` and `is_zero_within_error` +- `CObs` class added which can handle complex valued Markov chain Monte Carlo data and the corresponding error propagation. +- Matrix to matrix operations like the matrix inverse now also work for complex matrices and matrices containing entries that are not `Obs` but `float` or `int`. +- The possibility to work with Monte Carlo histories which are evenly or unevenly spaced was added. +- The Corr class now has additional methods like `reverse`, `T_symmetry`, `correlate` and `reweight`. +- `linalg` module now has explicit functions `inv` and `cholesky`. +- `Obs` objects now have methods `is_zero` and `is_zero_within_error` as well as overloaded comparison operations. +- Functions to convert Obs data to or from jackknife was added. +- Alternative matrix multiplication routine `jack_matmul` was added to `linalg` module which makes use of the jackknife approximation and is much faster for large matrices. +- Additional input routines for npr data added to `input.hadrons`. +- Version number added. ### Changed -- Additional attributes can no longer be added to existing `Obs`. This makes it no longer possible to import `Obs` created with previous versions of pyerrors -- The default value for `Corr.prange` is now `None` -- The `input` module was restructured to contain one submodule per data source +- The internal bookkeeping system for ensembles/replica was changed. The separator for replica is now `|`. +- The fit functions were renamed to `least_squares` and `total_least_squares`. +- The fit functions can now deal with provided covariance matrices. +- The convention for the fit range in the Corr class has been changed. +- Obs.print was renamed to Obs.details and the output was improved. +- The default value for `Corr.prange` is now `None`. +- The `input` module was restructured to contain one submodule per data source. +- Performance of Obs.__init__ improved. ### Deprecated - The function `plot_corrs` was deprecated as all its functionality is now contained within `Corr.show` - The kwarg `bias_correction` in `derived_observable` was removed - Obs no longer have an attribute `e_Q` - Removed `fits.fit_exp` +- Removed jackknife module ## [1.1.0] - 2021-10-11 ### Added @@ -77,7 +90,7 @@ All notable changes to this project will be documented in this file. ## [0.7.0] - 2020-03-10 ### Added -- New fit funtions for fitting with and without x-errors added which use automatic differentiation and should be more reliable than the old ones. +- New fit functions for fitting with and without x-errors added which use automatic differentiation and should be more reliable than the old ones. - Fitting with Bayesian priors added. - New functions for visualization of fits which can be activated via the kwargs resplot and qqplot. - chisquare/expected_chisquared which takes into account correlations in the data and non-linearities in the fit function can now be activated with the kwarg expected_chisquare. diff --git a/README.md b/README.md index 4e4a0a9d..0aa5e77e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ `pyerrors` is a python package for error computation and propagation of Markov chain Monte Carlo data. - **Documentation:** https://fjosw.github.io/pyerrors/pyerrors.html -- **Examples**: https://github.com/fjosw/pyerrors/tree/develop/examples +- **Examples**: https://github.com/fjosw/pyerrors/tree/develop/examples (Do not work properly at the moment) - **Contributing:** https://github.com/fjosw/pyerrors/blob/develop/CONTRIBUTING.md - **Bug reports:** https://github.com/fjosw/pyerrors/issues From 6f99ec16fb532badc282ff3de0402648bf0c040c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 14:57:36 +0000 Subject: [PATCH 034/220] docs: reference to other error analysis suites moved from README to documentation --- README.md | 6 ------ pyerrors/__init__.py | 5 +++++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0aa5e77e..773970cb 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,3 @@ to install the most recent release run ```bash pip install git+https://github.com/fjosw/pyerrors.git@master ``` - -## Other implementations -There exist similar publicly available implementations of gamma method error analysis suites in -- [Fortran](https://gitlab.ift.uam-csic.es/alberto/aderrors) -- [Julia](https://gitlab.ift.uam-csic.es/alberto/aderrors.jl) -- [Python](https://github.com/mbruno46/pyobs) diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index f2194cdb..5ff2c925 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -8,6 +8,11 @@ It is based on the **gamma method** [arXiv:hep-lat/0306017](https://arxiv.org/ab - **non-linear fits with x- and y-errors** and exact linear error propagation based on automatic differentiation as introduced in [arXiv:1809.01289](https://arxiv.org/abs/1809.01289) - **real and complex matrix operations** and their error propagation based on automatic differentiation (Cholesky decomposition, calculation of eigenvalues and eigenvectors, singular value decomposition...) +There exist similar publicly available implementations of gamma method error analysis suites in +- [Fortran](https://gitlab.ift.uam-csic.es/alberto/aderrors) +- [Julia](https://gitlab.ift.uam-csic.es/alberto/aderrors.jl) +- [Python](https://github.com/mbruno46/pyobs) + ## Basic example ```python From d740f8d3c4893ae96434b6daba783b597d50499b Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 30 Nov 2021 16:26:46 +0100 Subject: [PATCH 035/220] utf-8 for plain json files and a bugfix for reading arrays --- pyerrors/input/json.py | 16 ++++++---------- tests/io_test.py | 10 +++++++++- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index bc4deaee..d81a5f94 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -120,7 +120,7 @@ def create_json_string(ol, fname, description='', indent=1): _assert_equal_properties(ol) d = {} d['type'] = 'Array' - d['layout'] = str(oa.shape).lstrip('(').rstrip(')') + d['layout'] = str(oa.shape).lstrip('(').rstrip(')').rstrip(',') if ol[0].tag: d['tag'] = ol[0].tag if isinstance(ol[0].tag, str): @@ -153,7 +153,7 @@ def create_json_string(ol, fname, description='', indent=1): elif isinstance(io, np.ndarray): d['obsdata'].append(write_Array_to_dict(io)) - jsonstring = json.dumps(d, indent=indent, cls=my_encoder) + jsonstring = json.dumps(d, indent=indent, cls=my_encoder, ensure_ascii=False) # workaround for un-indentation of delta lists jsonstring = jsonstring.replace(' "[', ' [').replace(']",', '],').replace(']"\n', ']\n') @@ -192,14 +192,10 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): fp = gzip.open(fname, 'wb') fp.write(jsonstring.encode('utf-8')) else: - fp = open(fname, 'w') + fp = open(fname, 'w', encoding='utf-8') fp.write(jsonstring) fp.close() - # this would be nicer, since it does not need a string but uses serialization (less memory!) - # with gzip.open(fname, 'wt', encoding='UTF-8') as zipfile: - # json.dump(d, zipfile, indent=indent) - def load_json(fname, verbose=True, gz=True, full_output=False): """Import a list of Obs or structures containing Obs from a .json.gz file. @@ -229,7 +225,7 @@ def load_json(fname, verbose=True, gz=True, full_output=False): for rep in ens['replica']: retd['names'].append(rep['name']) retd['idl'].append([di[0] for di in rep['deltas']]) - retd['deltas'].append([di[1:] for di in rep['deltas']]) + retd['deltas'].append(np.array([di[1:] for di in rep['deltas']])) retd['is_merged'][rep['name']] = rep.get('is_merged', False) retd['deltas'] = np.array(retd['deltas']) return retd @@ -286,7 +282,7 @@ def load_json(fname, verbose=True, gz=True, full_output=False): else: if fname.endswith('.gz'): warnings.warn("Trying to read from %s without unzipping!" % fname, UserWarning) - with open(fname, 'r') as fin: + with open(fname, 'r', encoding='utf-8') as fin: d = json.loads(fin.read()) prog = d.get('program', '') @@ -303,7 +299,7 @@ def load_json(fname, verbose=True, gz=True, full_output=False): description = d.get('description', '') if description and verbose: print() - print(description) + print('Description: ', description) obsdata = d['obsdata'] ol = [] for io in obsdata: diff --git a/tests/io_test.py b/tests/io_test.py index de309fd0..77a0f474 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -19,7 +19,15 @@ def test_jsonio(): arr = np.array([o3, o5]) mat = np.array([[pe.pseudo_Obs(1.0, .1, 'mat'), pe.pseudo_Obs(0.3, .1, 'mat')], [pe.pseudo_Obs(0.2, .1, 'mat'), pe.pseudo_Obs(2.0, .4, 'mat')]]) - ol = [o4, do, testl, mat, arr, np.array([o])] + tt1 = pe.Obs([np.random.rand(100)], ['t|r1'], idl=[range(2, 202, 2)]) + tt2 = pe.Obs([np.random.rand(100)], ['t|r2'], idl=[range(2, 202, 2)]) + tt3 = pe.Obs([np.random.rand(102)], ['qe']) + + tt = tt1 + tt2 + tt3 + + tt.tag = 'Test Obs' + + ol = [o4, do, testl, mat, arr, np.array([o]), np.array([tt, tt]), [tt, tt]] fname = 'test_rw' jsonio.dump_to_json(ol, fname, indent=1) From 71e9d6c29c09b70946a9240aaef6d7cf0539d88d Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 30 Nov 2021 17:46:33 +0100 Subject: [PATCH 036/220] Removed unnecessary cast --- pyerrors/input/json.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index d81a5f94..a7c863d4 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -227,7 +227,6 @@ def load_json(fname, verbose=True, gz=True, full_output=False): retd['idl'].append([di[0] for di in rep['deltas']]) retd['deltas'].append(np.array([di[1:] for di in rep['deltas']])) retd['is_merged'][rep['name']] = rep.get('is_merged', False) - retd['deltas'] = np.array(retd['deltas']) return retd def get_Obs_from_dict(o): From 58ccd11e4827f3dcfffcbd523c28976d5c198dde Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 16:50:35 +0000 Subject: [PATCH 037/220] feat: json submodule now available via pyerrors.input.json --- pyerrors/input/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyerrors/input/__init__.py b/pyerrors/input/__init__.py index 24766e77..2797841c 100644 --- a/pyerrors/input/__init__.py +++ b/pyerrors/input/__init__.py @@ -1,5 +1,6 @@ from . import bdio from . import hadrons -from . import sfcf -from . import openQCD +from . import json from . import misc +from . import openQCD +from . import sfcf From aec90803eff9c3f2d5909f236a55c8b9cc117f0e Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 17:05:00 +0000 Subject: [PATCH 038/220] feat: functions which extracts npr fourquark vertices now constructs Lorentz scalars. --- pyerrors/input/hadrons.py | 78 ++++++++++++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 14 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 00b93453..7f216f07 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -224,7 +224,7 @@ def read_Bilinear_hd5(path, filestem, ens_id, idl=None): return result_dict -def read_Fourquark_hd5(path, filestem, ens_id, idl=None): +def read_Fourquark_hd5(path, filestem, ens_id, idl=None, vertices=["VA", "AV"]): """Read hadrons FourquarkFullyConnected hdf5 file and output an array of CObs Parameters @@ -237,6 +237,8 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None): name of the ensemble, required for internal bookkeeping idl : range If specified only configurations in the given range are read in. + vertices : list + Vertex functions to be extracted. """ files, idx = _get_files(path, filestem, idl) @@ -244,6 +246,11 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None): mom_in = None mom_out = None + vertex_names = [] + for vertex in vertices: + vertex_names += _get_lorentz_names(vertex) + print(vertex_names) + corr_data = {} tree = 'FourQuarkFullyConnected/FourQuarkFullyConnected_' @@ -251,25 +258,35 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None): for hd5_file in files: file = h5py.File(path + '/' + hd5_file, "r") - for i in range(1): - name = file[tree + str(i) + '/info'].attrs['gammaA'][0].decode('UTF-8') + '_' + file[tree + str(i) + '/info'].attrs['gammaB'][0].decode('UTF-8') - if name not in corr_data: - corr_data[name] = [] - raw_data = file[tree + str(i) + '/corr'][0][0].view('complex') - corr_data[name].append(raw_data) - if mom_in is None: - mom_in = np.array(str(file[tree + str(i) + '/info'].attrs['pIn'])[3:-2].strip().split(' '), dtype=int) - if mom_out is None: - mom_out = np.array(str(file[tree + str(i) + '/info'].attrs['pOut'])[3:-2].strip().split(' '), dtype=int) + for i in range(32): + name = (file[tree + str(i) + '/info'].attrs['gammaA'][0].decode('UTF-8'), file[tree + str(i) + '/info'].attrs['gammaB'][0].decode('UTF-8')) + if name in vertex_names: + if name not in corr_data: + corr_data[name] = [] + raw_data = file[tree + str(i) + '/corr'][0][0].view('complex') + corr_data[name].append(raw_data) + if mom_in is None: + mom_in = np.array(str(file[tree + str(i) + '/info'].attrs['pIn'])[3:-2].strip().split(' '), dtype=int) + if mom_out is None: + mom_out = np.array(str(file[tree + str(i) + '/info'].attrs['pOut'])[3:-2].strip().split(' '), dtype=int) file.close() + intermediate_dict = {} + + for vertex in vertices: + lorentz_names = _get_lorentz_names(vertex) + for v_name in lorentz_names: + if vertex not in intermediate_dict: + intermediate_dict[vertex] = np.array(corr_data[v_name]) + else: + intermediate_dict[vertex] += np.array(corr_data[v_name]) + result_dict = {} - for key, data in corr_data.items(): - local_data = np.array(data) + for key, data in intermediate_dict.items(): - rolled_array = np.moveaxis(local_data, 0, 8) + rolled_array = np.moveaxis(data, 0, 8) matrix = np.empty((rolled_array.shape[:-1]), dtype=object) for index in np.ndindex(rolled_array.shape[:-1]): @@ -281,3 +298,36 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None): # result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom_in, mom_out=mom_out) return result_dict + + +def _get_lorentz_names(name): + assert len(name) == 2 + + res = [] + + if not set(name) <= set(['S', 'P', 'V', 'A', 'T']): + raise Exception("Name can only contain 'S', 'P', 'V', 'A' or 'T'") + + if 'S' in name or 'P' in name: + if not set(name) <= set(['S', 'P']): + raise Exception("'" + name + "' is not a Lorentz scalar") + + g_names = {'S': 'Identity', + 'P': 'Gamma5'} + + res.append((g_names[name[0]], g_names[name[1]])) + + elif 'T' in name: + if not set(name) <= set(['T']): + raise Exception("'" + name + "' is not a Lorentz scalar") + raise Exception("Tensor operators not yet implemented.") + else: + if not set(name) <= set(['V', 'A']): + raise Exception("'" + name + "' is not a Lorentz scalar") + lorentz_index = ['X', 'Y', 'Z', 'T'] + + for ind in lorentz_index: + res.append(('Gamma' + ind + (name[0] == 'A') * 'Gamma5', + 'Gamma' + ind + (name[1] == 'A') * 'Gamma5')) + + return res From bb91c37ac402a0cde572527da6c1ead87c769877 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 30 Nov 2021 17:12:14 +0000 Subject: [PATCH 039/220] fix: unnecessary print statement and comment removed in fourquark input routine --- pyerrors/input/hadrons.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 7f216f07..39afa16c 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -249,7 +249,6 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None, vertices=["VA", "AV"]): vertex_names = [] for vertex in vertices: vertex_names += _get_lorentz_names(vertex) - print(vertex_names) corr_data = {} @@ -295,7 +294,6 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None, vertices=["VA", "AV"]): matrix[index] = CObs(real, imag) result_dict[key] = Npr_matrix(matrix, mom_in=mom_in, mom_out=mom_out) - # result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom_in, mom_out=mom_out) return result_dict From 6bc8102f87f9e18d3cd65d31b1c34427a5b1d2b1 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 09:22:16 +0000 Subject: [PATCH 040/220] refactor: jackknife helper functions in linalg module refactored --- pyerrors/linalg.py | 62 ++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index dbbde944..e6ee9cef 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -174,6 +174,35 @@ def matmul(*operands): return derived_array(multi_dot, operands) +def _exp_to_jack(matrix): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = entry.export_jackknife() + return base_matrix + + +def _imp_from_jack(matrix, name, idl): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = import_jackknife(entry, name, [idl]) + return base_matrix + + +def _exp_to_jack_c(matrix): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = entry.real.export_jackknife() + 1j * entry.imag.export_jackknife() + return base_matrix + + +def _imp_from_jack_c(matrix, name, idl): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = CObs(import_jackknife(entry.real, name, [idl]), + import_jackknife(entry.imag, name, [idl])) + return base_matrix + + def jack_matmul(*operands): """Matrix multiply both operands making use of the jackknife approximation. @@ -190,49 +219,24 @@ def jack_matmul(*operands): name = operands[0].flat[0].real.names[0] idl = operands[0].flat[0].real.idl[name] - def _exp_to_jack(matrix): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = entry.real.export_jackknife() + 1j * entry.imag.export_jackknife() - return base_matrix - - def _imp_from_jack(matrix): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = CObs(import_jackknife(entry.real, name, [idl]), - import_jackknife(entry.imag, name, [idl])) - return base_matrix - - r = _exp_to_jack(operands[0]) + r = _exp_to_jack_c(operands[0]) for op in operands[1:]: if isinstance(op.flat[0], CObs): - r = r @ _exp_to_jack(op) + r = r @ _exp_to_jack_c(op) else: r = r @ op - return _imp_from_jack(r) + return _imp_from_jack_c(r, name, idl) else: name = operands[0].flat[0].names[0] idl = operands[0].flat[0].idl[name] - def _exp_to_jack(matrix): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = entry.export_jackknife() - return base_matrix - - def _imp_from_jack(matrix): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = import_jackknife(entry, name, [idl]) - return base_matrix - r = _exp_to_jack(operands[0]) for op in operands[1:]: if isinstance(op.flat[0], Obs): r = r @ _exp_to_jack(op) else: r = r @ op - return _imp_from_jack(r) + return _imp_from_jack(r, name, idl) def inv(x): From fe1aeb53542601c84e188d94768e2173960aed59 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 09:35:40 +0000 Subject: [PATCH 041/220] feat: einsum function added to linalg module --- pyerrors/linalg.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index e6ee9cef..259f070a 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -239,6 +239,44 @@ def jack_matmul(*operands): return _imp_from_jack(r, name, idl) +def einsum(subscripts, *operands): + """Wrapper for numpy.einsum + + Parameters + ---------- + subscripts : str + Subscripts for summation (see numpy documentation for details) + operands : numpy.ndarray + Arbitrary number of 2d-numpy arrays which can be real or complex + Obs valued. + """ + + if any(isinstance(o.flat[0], CObs) for o in operands): + name = operands[0].flat[0].real.names[0] + idl = operands[0].flat[0].real.idl[name] + else: + name = operands[0].flat[0].names[0] + idl = operands[0].flat[0].idl[name] + + conv_operands = [] + for op in operands: + if isinstance(op.flat[0], CObs): + conv_operands.append(_exp_to_jack_c(op)) + elif isinstance(op.flat[0], Obs): + conv_operands.append(_exp_to_jack(op)) + else: + conv_operands.append(op) + + result = np.einsum(subscripts, *conv_operands) + + if result.dtype == complex: + return _imp_from_jack_c(result, name, idl) + elif result.dtype == float: + return _imp_from_jack(result, name, idl) + else: + raise Exception("Result has unexpected datatype") + + def inv(x): """Inverse of Obs or CObs valued matrices.""" return _mat_mat_op(anp.linalg.inv, x) From e5cd5c4a991201abf31ea0967dba0705b4229541 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Wed, 1 Dec 2021 11:53:11 +0100 Subject: [PATCH 042/220] Adjusted handling of tags: All are written, if any is None; Removed unused parameter fname from create_json_string; Created a fail-save version for the replacement of quotation marks in workaround for delta lists --- pyerrors/input/json.py | 56 +++++++++++++++++++++++------------------- tests/io_test.py | 11 ++++++--- 2 files changed, 39 insertions(+), 28 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index a7c863d4..4ca0e47b 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -10,7 +10,7 @@ import numpy as np import warnings -def create_json_string(ol, fname, description='', indent=1): +def create_json_string(ol, description='', indent=1): """Generate the string for the export of a list of Obs or structures containing Obs to a .json(.gz) file @@ -20,8 +20,6 @@ def create_json_string(ol, fname, description='', indent=1): List of objects that will be exported. At the moments, these objects can be either of: Obs, list, np.ndarray All Obs inside a structure have to be defined on the same set of configurations. - fname : str - Filename of the output file description : str Optional string that describes the contents of the json file indent : int @@ -89,7 +87,7 @@ def create_json_string(ol, fname, description='', indent=1): d['type'] = 'Obs' d['layout'] = '1' if o.tag: - d['tag'] = o.tag + d['tag'] = [o.tag] if o.reweighted: d['reweighted'] = o.reweighted d['value'] = [o.value] @@ -101,13 +99,9 @@ def create_json_string(ol, fname, description='', indent=1): d = {} d['type'] = 'List' d['layout'] = '%d' % len(ol) - if ol[0].tag: - d['tag'] = ol[0].tag - if isinstance(ol[0].tag, str): - if len(set([o.tag for o in ol])) > 1: - d['tag'] = '' - for o in ol: - d['tag'] += '%s\n' % (o.tag) + taglist = [o.tag for o in ol] + if np.any([tag is not None for tag in taglist]): + d['tag'] = taglist if ol[0].reweighted: d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] @@ -121,13 +115,9 @@ def create_json_string(ol, fname, description='', indent=1): d = {} d['type'] = 'Array' d['layout'] = str(oa.shape).lstrip('(').rstrip(')').rstrip(',') - if ol[0].tag: - d['tag'] = ol[0].tag - if isinstance(ol[0].tag, str): - if len(set([o.tag for o in ol])) > 1: - d['tag'] = '' - for o in ol: - d['tag'] += '%s\n' % (o.tag) + taglist = [o.tag for o in ol] + if np.any([tag is not None for tag in taglist]): + d['tag'] = taglist if ol[0].reweighted: d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] @@ -154,9 +144,22 @@ def create_json_string(ol, fname, description='', indent=1): d['obsdata'].append(write_Array_to_dict(io)) jsonstring = json.dumps(d, indent=indent, cls=my_encoder, ensure_ascii=False) - # workaround for un-indentation of delta lists - jsonstring = jsonstring.replace(' "[', ' [').replace(']",', '],').replace(']"\n', ']\n') + # workaround for un-quoting of delta lists, adds 5% of work + # but is save, compared to a simple replace that could destroy the structure + def remove_quotationmarks(s): + deltas = False + split = s.split('\n') + for i in range(len(split)): + if '"deltas":' in split[i]: + deltas = True + elif deltas: + split[i] = split[i].replace('"[', '[').replace(']"', ']') + if split[i][-1] == ']': + deltas = False + return '\n'.join(split) + + jsonstring = remove_quotationmarks(jsonstring) return jsonstring @@ -180,7 +183,7 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): If True, the output is a gzipped json. If False, the output is a json file. """ - jsonstring = create_json_string(ol, fname, description, indent) + jsonstring = create_json_string(ol, description, indent) if not fname.endswith('.json') and not fname.endswith('.gz'): fname += '.json' @@ -240,7 +243,7 @@ def load_json(fname, verbose=True, gz=True, full_output=False): ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl']) ret.reweighted = o.get('reweighted', False) ret.is_merged = od['is_merged'] - ret.tag = o.get('tag', None) + ret.tag = o.get('tag', [None])[0] return ret def get_List_from_dict(o): @@ -250,25 +253,28 @@ def load_json(fname, verbose=True, gz=True, full_output=False): od = _gen_obsd_from_datad(o['data']) ret = [] + taglist = o.get('tag', layout * [None]) for i in range(layout): ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl'])) ret[-1].reweighted = o.get('reweighted', False) ret[-1].is_merged = od['is_merged'] - ret[-1].tag = o.get('tag', None) + ret[-1].tag = taglist[i] return ret def get_Array_from_dict(o): layouts = o.get('layout', '1').strip() layout = [int(ls.strip()) for ls in layouts.split(',') if len(ls) > 0] + N = np.prod(layout) values = o['value'] od = _gen_obsd_from_datad(o['data']) ret = [] - for i in range(np.prod(layout)): + taglist = o.get('tag', N * [None]) + for i in range(N): ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl'])) ret[-1].reweighted = o.get('reweighted', False) ret[-1].is_merged = od['is_merged'] - ret[-1].tag = o.get('tag', None) + ret[-1].tag = taglist[i] return np.reshape(ret, layout) if not fname.endswith('.json') and not fname.endswith('.gz'): diff --git a/tests/io_test.py b/tests/io_test.py index 77a0f474..7bb80cc0 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -12,12 +12,17 @@ def test_jsonio(): otag = 'This has been merged!' o4.tag = otag do = o - .2 * o4 + do.tag = {'A': 2} o5 = pe.pseudo_Obs(0.8, .1, 'two|r2') + o5.tag = 2*otag testl = [o3, o5] arr = np.array([o3, o5]) mat = np.array([[pe.pseudo_Obs(1.0, .1, 'mat'), pe.pseudo_Obs(0.3, .1, 'mat')], [pe.pseudo_Obs(0.2, .1, 'mat'), pe.pseudo_Obs(2.0, .4, 'mat')]]) + mat[0][1].tag = ['This', 'is', 2, None] + mat[1][0].tag = '{testt}' + mat[1][1].tag = '[tag]' tt1 = pe.Obs([np.random.rand(100)], ['t|r1'], idl=[range(2, 202, 2)]) tt2 = pe.Obs([np.random.rand(100)], ['t|r2'], idl=[range(2, 202, 2)]) @@ -25,12 +30,12 @@ def test_jsonio(): tt = tt1 + tt2 + tt3 - tt.tag = 'Test Obs' + tt.tag = 'Test Obs: Ä' ol = [o4, do, testl, mat, arr, np.array([o]), np.array([tt, tt]), [tt, tt]] fname = 'test_rw' - jsonio.dump_to_json(ol, fname, indent=1) + jsonio.dump_to_json(ol, fname, indent=1, description='[I am a tricky description]') rl = jsonio.load_json(fname) @@ -48,7 +53,7 @@ def test_jsonio(): assert(o.is_zero()) description = {'I': {'Am': {'a': 'nested dictionary!'}}} - jsonio.dump_to_json(ol, fname, indent=1, gz=False, description=description) + jsonio.dump_to_json(ol, fname, indent=0, gz=False, description=description) rl = jsonio.load_json(fname, gz=False, full_output=True) From 3f6703ad6a1926c22858ff4a8286bb3283595d2b Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 12:17:38 +0000 Subject: [PATCH 043/220] feat: linalg.einsum now works with real, complex and float matrices --- pyerrors/linalg.py | 111 +++++++++++++++++++++++++++++---------------- 1 file changed, 71 insertions(+), 40 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index 259f070a..bbb59367 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -174,35 +174,6 @@ def matmul(*operands): return derived_array(multi_dot, operands) -def _exp_to_jack(matrix): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = entry.export_jackknife() - return base_matrix - - -def _imp_from_jack(matrix, name, idl): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = import_jackknife(entry, name, [idl]) - return base_matrix - - -def _exp_to_jack_c(matrix): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = entry.real.export_jackknife() + 1j * entry.imag.export_jackknife() - return base_matrix - - -def _imp_from_jack_c(matrix, name, idl): - base_matrix = np.empty_like(matrix) - for index, entry in np.ndenumerate(matrix): - base_matrix[index] = CObs(import_jackknife(entry.real, name, [idl]), - import_jackknife(entry.imag, name, [idl])) - return base_matrix - - def jack_matmul(*operands): """Matrix multiply both operands making use of the jackknife approximation. @@ -215,6 +186,31 @@ def jack_matmul(*operands): For large matrices this is considerably faster compared to matmul. """ + def _exp_to_jack(matrix): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = entry.export_jackknife() + return base_matrix + + def _imp_from_jack(matrix, name, idl): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = import_jackknife(entry, name, [idl]) + return base_matrix + + def _exp_to_jack_c(matrix): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = entry.real.export_jackknife() + 1j * entry.imag.export_jackknife() + return base_matrix + + def _imp_from_jack_c(matrix, name, idl): + base_matrix = np.empty_like(matrix) + for index, entry in np.ndenumerate(matrix): + base_matrix[index] = CObs(import_jackknife(entry.real, name, [idl]), + import_jackknife(entry.imag, name, [idl])) + return base_matrix + if any(isinstance(o.flat[0], CObs) for o in operands): name = operands[0].flat[0].real.names[0] idl = operands[0].flat[0].real.idl[name] @@ -251,12 +247,40 @@ def einsum(subscripts, *operands): Obs valued. """ - if any(isinstance(o.flat[0], CObs) for o in operands): - name = operands[0].flat[0].real.names[0] - idl = operands[0].flat[0].real.idl[name] - else: - name = operands[0].flat[0].names[0] - idl = operands[0].flat[0].idl[name] + def _exp_to_jack(matrix): + base_matrix = [] + for index, entry in np.ndenumerate(matrix): + base_matrix.append(entry.export_jackknife()) + return np.asarray(base_matrix).reshape(matrix.shape + base_matrix[0].shape) + + def _exp_to_jack_c(matrix): + base_matrix = [] + for index, entry in np.ndenumerate(matrix): + base_matrix.append(entry.real.export_jackknife() + 1j * entry.imag.export_jackknife()) + return np.asarray(base_matrix).reshape(matrix.shape + base_matrix[0].shape) + + def _imp_from_jack(matrix, name, idl): + base_matrix = np.empty(shape=matrix.shape[:-1], dtype=object) + for index in np.ndindex(matrix.shape[:-1]): + base_matrix[index] = import_jackknife(matrix[index], name, [idl]) + return base_matrix + + def _imp_from_jack_c(matrix, name, idl): + base_matrix = np.empty(shape=matrix.shape[:-1], dtype=object) + for index in np.ndindex(matrix.shape[:-1]): + base_matrix[index] = CObs(import_jackknife(matrix[index].real, name, [idl]), + import_jackknife(matrix[index].imag, name, [idl])) + return base_matrix + + for op in operands: + if isinstance(op.flat[0], CObs): + name = op.flat[0].real.names[0] + idl = op.flat[0].real.idl[name] + break + elif isinstance(op.flat[0], Obs): + name = op.flat[0].names[0] + idl = op.flat[0].idl[name] + break conv_operands = [] for op in operands: @@ -267,15 +291,22 @@ def einsum(subscripts, *operands): else: conv_operands.append(op) - result = np.einsum(subscripts, *conv_operands) + tmp_subscripts = ','.join([o + '...' for o in subscripts.split(',')]) + extended_subscripts = '->'.join([o + '...' for o in tmp_subscripts.split('->')[:-1]] + [tmp_subscripts.split('->')[-1]]) + jack_einsum = np.einsum(extended_subscripts, *conv_operands) - if result.dtype == complex: - return _imp_from_jack_c(result, name, idl) - elif result.dtype == float: - return _imp_from_jack(result, name, idl) + if jack_einsum.dtype == complex: + result = _imp_from_jack_c(jack_einsum, name, idl) + elif jack_einsum.dtype == float: + result =_imp_from_jack(jack_einsum, name, idl) else: raise Exception("Result has unexpected datatype") + if result.shape == (): + return result.flat[0] + else: + return result + def inv(x): """Inverse of Obs or CObs valued matrices.""" From 4c8d75888917ef7c256fdb34ffe1b80345986942 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 12:19:32 +0000 Subject: [PATCH 044/220] test: test for linalg.einsum added --- pyerrors/linalg.py | 2 +- tests/linalg_test.py | 53 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index bbb59367..bb44870d 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -298,7 +298,7 @@ def einsum(subscripts, *operands): if jack_einsum.dtype == complex: result = _imp_from_jack_c(jack_einsum, name, idl) elif jack_einsum.dtype == float: - result =_imp_from_jack(jack_einsum, name, idl) + result = _imp_from_jack(jack_einsum, name, idl) else: raise Exception("Result has unexpected datatype") diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 46ee6c89..d34da29f 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -93,6 +93,59 @@ def test_jack_matmul(): assert trace4.real.dvalue < 0.001 assert trace4.imag.dvalue < 0.001 + +def test_einsum(): + + def _perform_real_check(arr): + [o.gamma_method() for o in arr] + assert np.all([o.is_zero_within_error(0.001) for o in arr]) + assert np.all([o.dvalue < 0.001 for o in arr]) + + def _perform_complex_check(arr): + [o.gamma_method() for o in arr] + assert np.all([o.real.is_zero_within_error(0.001) for o in arr]) + assert np.all([o.real.dvalue < 0.001 for o in arr]) + assert np.all([o.imag.is_zero_within_error(0.001) for o in arr]) + assert np.all([o.imag.dvalue < 0.001 for o in arr]) + + + tt = [get_real_matrix(4), get_real_matrix(3)] + q = np.tensordot(tt[0], tt[1], 0) + c1 = tt[1] @ q + c2 = pe.linalg.einsum('ij,abjd->abid', tt[1], q) + check1 = c1 - c2 + _perform_real_check(check1.ravel()) + check2 = np.trace(tt[0]) - pe.linalg.einsum('ii', tt[0]) + _perform_real_check([check2]) + check3 = np.trace(tt[1]) - pe.linalg.einsum('ii', tt[1]) + _perform_real_check([check3]) + + tt = [get_real_matrix(4), np.random.random((3, 3))] + q = np.tensordot(tt[0], tt[1], 0) + c1 = tt[1] @ q + c2 = pe.linalg.einsum('ij,abjd->abid', tt[1], q) + check1 = c1 - c2 + _perform_real_check(check1.ravel()) + + tt = [get_complex_matrix(4), get_complex_matrix(3)] + q = np.tensordot(tt[0], tt[1], 0) + c1 = tt[1] @ q + c2 = pe.linalg.einsum('ij,abjd->abid', tt[1], q) + check1 = c1 - c2 + _perform_complex_check(check1.ravel()) + check2 = np.trace(tt[0]) - pe.linalg.einsum('ii', tt[0]) + _perform_complex_check([check2]) + check3 = np.trace(tt[1]) - pe.linalg.einsum('ii', tt[1]) + _perform_complex_check([check3]) + + tt = [get_complex_matrix(4), np.random.random((3, 3))] + q = np.tensordot(tt[0], tt[1], 0) + c1 = tt[1] @ q + c2 = pe.linalg.einsum('ij,abjd->abid', tt[1], q) + check1 = c1 - c2 + _perform_complex_check(check1.ravel()) + + def test_multi_dot(): for dim in [4, 6]: my_list = [] From a3310876bf98482dd9e0ffc97b0b29259d4330a5 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Wed, 1 Dec 2021 15:14:56 +0100 Subject: [PATCH 045/220] Fixed plot_history and is_zero for covobs --- pyerrors/obs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index d0a66ab2..e925c51b 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -459,7 +459,7 @@ class Obs: atol : float Absolute tolerance (for details see numpy documentation). """ - return np.isclose(0.0, self.value, rtol, atol) and all(np.allclose(0.0, delta, rtol, atol) for delta in self.deltas.values()) + return (np.isclose(0.0, self.value, rtol, atol) and all(np.allclose(0.0, delta, rtol, atol) for delta in self.deltas.values()) and all(np.allclose(0.0, delta.grad, rtol, atol) for delta in self.covobs.values())) def plot_tauint(self, save=None): """Plot integrated autocorrelation time for each ensemble. @@ -578,7 +578,7 @@ class Obs: if self._dvalue == 0.0: raise Exception('Error is 0.0') labels = self.e_names - sizes = [i ** 2 for i in list(self.e_dvalue.values())] / self._dvalue ** 2 + sizes = [self.e_dvalue[name] ** 2 for name in labels] / self._dvalue ** 2 fig1, ax1 = plt.subplots() ax1.pie(sizes, labels=labels, startangle=90, normalize=True) ax1.axis('equal') From b715aa0c2295cf95ccd16958cce9158818b9ff06 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 14:28:21 +0000 Subject: [PATCH 046/220] feat: hadrons npr input now returns rank-n tensors instead of 2D matrices --- pyerrors/input/hadrons.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index 39afa16c..efe4feb1 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -167,7 +167,7 @@ def read_ExternalLeg_hd5(path, filestem, ens_id, idl=None): imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[idx]) matrix[si, sj, ci, cj] = CObs(real, imag) - return Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom) + return Npr_matrix(matrix, mom_in=mom) def read_Bilinear_hd5(path, filestem, ens_id, idl=None): @@ -219,7 +219,7 @@ def read_Bilinear_hd5(path, filestem, ens_id, idl=None): imag = Obs([rolled_array[si, sj, ci, cj].imag], [ens_id], idl=[idx]) matrix[si, sj, ci, cj] = CObs(real, imag) - result_dict[key] = Npr_matrix(matrix.swapaxes(1, 2).reshape((12, 12), order='F'), mom_in=mom_in, mom_out=mom_out) + result_dict[key] = Npr_matrix(matrix, mom_in=mom_in, mom_out=mom_out) return result_dict From 33b5d701147304b6aaf796da29c31ff59db4f6a0 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 14:58:00 +0000 Subject: [PATCH 047/220] fix: bug in Obs.is_zero in connection with covobs fixed --- pyerrors/obs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index e925c51b..35c97454 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -459,7 +459,7 @@ class Obs: atol : float Absolute tolerance (for details see numpy documentation). """ - return (np.isclose(0.0, self.value, rtol, atol) and all(np.allclose(0.0, delta, rtol, atol) for delta in self.deltas.values()) and all(np.allclose(0.0, delta.grad, rtol, atol) for delta in self.covobs.values())) + return np.isclose(0.0, self.value, rtol, atol) and all(np.allclose(0.0, delta, rtol, atol) for delta in self.deltas.values()) and all(np.allclose(0.0, delta.errsq(), rtol, atol) for delta in self.covobs.values()) def plot_tauint(self, save=None): """Plot integrated autocorrelation time for each ensemble. From e1ab5c68817fa6028d3b3e421d98edf412c58aa3 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 14:59:29 +0000 Subject: [PATCH 048/220] test: test for covobs overloading added --- tests/obs_test.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/obs_test.py b/tests/obs_test.py index 8af54d56..d93fbe5f 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -581,3 +581,9 @@ def test_covobs(): do = cl[0] * cl[1] assert(np.array_equal(do.covobs['rAP'].grad, np.transpose([pi[1], pi[0]]).reshape(2, 1))) + + +def test_covobs_overloading(): + covobs = pe.cov_Obs([0.5, 0.5], np.array([[0.02, 0.02], [0.02, 0.02]]), 'Zfactor') + assert (covobs[0] / covobs[1]) == 1 + assert (covobs[0] - covobs[1]) == 0 From 70d941092ca8f1ac022ac75b1216611af350b5c9 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Wed, 1 Dec 2021 16:40:37 +0100 Subject: [PATCH 049/220] derived_observable now raises an error, if the same ensemble name has been used for deltas and covobs --- pyerrors/obs.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index e925c51b..7ea89710 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1153,6 +1153,8 @@ def derived_observable(func, data, **kwargs): new_covobs = {name: Covobs(0, allcov[name], name, grad=new_grad[name]) for name in new_grad} + if not set(new_covobs.keys()).isdisjoint(new_deltas.keys()): + raise Exception('The same name has been used for deltas and covobs!') new_samples = [] new_means = [] new_idl = [] From dbcdfacf5655551bc9cc605b542b36ac3c59fca1 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 1 Dec 2021 15:54:15 +0000 Subject: [PATCH 050/220] test: covobs name collision test added --- tests/obs_test.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/obs_test.py b/tests/obs_test.py index d93fbe5f..1767d29c 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -584,6 +584,20 @@ def test_covobs(): def test_covobs_overloading(): - covobs = pe.cov_Obs([0.5, 0.5], np.array([[0.02, 0.02], [0.02, 0.02]]), 'Zfactor') + covobs = pe.cov_Obs([0.5, 0.5], np.array([[0.02, 0.02], [0.02, 0.02]]), 'test') assert (covobs[0] / covobs[1]) == 1 assert (covobs[0] - covobs[1]) == 0 + + my_obs = pe.pseudo_Obs(2.3, 0.2, 'obs') + + assert (my_obs * covobs[0] / covobs[1]) == my_obs + + covobs = pe.cov_Obs(0.0, 0.3, 'test') + assert not covobs.is_zero() + + +def test_covobs_name_collision(): + covobs = pe.cov_Obs(0.5, 0.002, 'test') + my_obs = pe.pseudo_Obs(2.3, 0.2, 'test') + with pytest.raises(Exception): + summed_obs = my_obs + covobs From a67e83f77b30f068b902f31b2516cc9b22237947 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 2 Dec 2021 11:14:05 +0000 Subject: [PATCH 051/220] feat: Minor improvemens to json file format --- pyerrors/input/json.py | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 4ca0e47b..0cb8eae9 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -1,13 +1,13 @@ import json import gzip -from ..obs import Obs +import numpy as np import getpass import socket import datetime -from .. import version as pyerrorsversion import platform -import numpy as np import warnings +from ..obs import Obs +from .. import version as pyerrorsversion def create_json_string(ol, description='', indent=1): @@ -15,13 +15,13 @@ def create_json_string(ol, description='', indent=1): to a .json(.gz) file Parameters - ----------------- + ---------- ol : list List of objects that will be exported. At the moments, these objects can be - either of: Obs, list, np.ndarray + either of: Obs, list, numpy.ndarray. All Obs inside a structure have to be defined on the same set of configurations. description : str - Optional string that describes the contents of the json file + Optional string that describes the contents of the json file. indent : int Specify the indentation level of the json file. None or 0 is permissible and saves disk space. @@ -72,15 +72,17 @@ def create_json_string(ol, description='', indent=1): def _assert_equal_properties(ol, otype=Obs): for o in ol: if not isinstance(o, otype): - raise Exception('Wrong data type in list!') + raise Exception("Wrong data type in list.") for o in ol[1:]: if not ol[0].is_merged == o.is_merged: - raise Exception('All Obs in list have to be defined on the same set of configs!') + raise Exception("All Obs in list have to be defined on the same set of configs.") if not ol[0].reweighted == o.reweighted: - raise Exception('All Obs in list have to have the same property .reweighted!') + raise Exception("All Obs in list have to have the same property 'reweighted'.") if not ol[0].e_content == o.e_content: - raise Exception('All Obs in list have to be defined on the same set of configs!') - # more stringend tests --> compare idl? + raise Exception("All Obs in list have to be defined on the same set of configs.") + if not ol[0].idl == o.idl: + raise Exception("All Obs in list have to be defined on the same set of configurations.") + # TODO: more stringend tests --> compare idl? def write_Obs_to_dict(o): d = {} @@ -123,13 +125,14 @@ def create_json_string(ol, description='', indent=1): d['value'] = [o.value for o in ol] d['data'] = _gen_data_d_from_list(ol) return d + if not isinstance(ol, list): ol = [ol] d = {} d['program'] = 'pyerrors %s' % (pyerrorsversion.__version__) d['version'] = '0.1' d['who'] = getpass.getuser() - d['date'] = str(datetime.datetime.now())[:-7] + d['date'] = datetime.datetime.now().astimezone().strftime('%Y-%m-%d %H:%M:%S %Z') d['host'] = socket.gethostname() + ', ' + platform.platform() if description: @@ -167,15 +170,15 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): """Export a list of Obs or structures containing Obs to a .json(.gz) file Parameters - ----------------- + ---------- ol : list List of objects that will be exported. At the moments, these objects can be - either of: Obs, list, np.ndarray + either of: Obs, list, numpy.ndarray. All Obs inside a structure have to be defined on the same set of configurations. fname : str - Filename of the output file + Filename of the output file. description : str - Optional string that describes the contents of the json file + Optional string that describes the contents of the json file. indent : int Specify the indentation level of the json file. None or 0 is permissible and saves disk space. @@ -202,13 +205,13 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): def load_json(fname, verbose=True, gz=True, full_output=False): """Import a list of Obs or structures containing Obs from a .json.gz file. - The following structures are supported: Obs, list, np.ndarray + The following structures are supported: Obs, list, numpy.ndarray If the list contains only one element, it is unpacked from the list. Parameters - ----------------- + ---------- fname : str - Filename of the input file + Filename of the input file. verbose : bool Print additional information that was written to the file. gz : bool From d837e477774d117826e2a99c3ad66ae14644865c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 2 Dec 2021 11:32:28 +0000 Subject: [PATCH 052/220] refactor: formatting improvements --- pyerrors/input/json.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 0cb8eae9..ce2e2fed 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -33,7 +33,7 @@ def create_json_string(ol, description='', indent=1): _default.default = json.JSONEncoder().default my_encoder.default = _default - class deltalist: + class Deltalist: def __init__(self, li): self.cnfg = li[0] self.deltas = li[1:] @@ -64,7 +64,7 @@ def create_json_string(ol, description='', indent=1): rd['deltas'].append([ol[0].idl[r_name][i]]) for o in ol: rd['deltas'][-1].append(o.deltas[r_name][i]) - rd['deltas'][-1] = deltalist(rd['deltas'][-1]) + rd['deltas'][-1] = Deltalist(rd['deltas'][-1]) ed['replica'].append(rd) dl.append(ed) return dl @@ -82,7 +82,6 @@ def create_json_string(ol, description='', indent=1): raise Exception("All Obs in list have to be defined on the same set of configs.") if not ol[0].idl == o.idl: raise Exception("All Obs in list have to be defined on the same set of configurations.") - # TODO: more stringend tests --> compare idl? def write_Obs_to_dict(o): d = {} @@ -108,7 +107,6 @@ def create_json_string(ol, description='', indent=1): d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] d['data'] = _gen_data_d_from_list(ol) - return d def write_Array_to_dict(oa): @@ -128,6 +126,7 @@ def create_json_string(ol, description='', indent=1): if not isinstance(ol, list): ol = [ol] + d = {} d['program'] = 'pyerrors %s' % (pyerrorsversion.__version__) d['version'] = '0.1' @@ -148,9 +147,10 @@ def create_json_string(ol, description='', indent=1): jsonstring = json.dumps(d, indent=indent, cls=my_encoder, ensure_ascii=False) - # workaround for un-quoting of delta lists, adds 5% of work - # but is save, compared to a simple replace that could destroy the structure def remove_quotationmarks(s): + """Workaround for un-quoting of delta lists, adds 5% of work + but is save, compared to a simple replace that could destroy the structure + """ deltas = False split = s.split('\n') for i in range(len(split)): @@ -205,6 +205,7 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): def load_json(fname, verbose=True, gz=True, full_output=False): """Import a list of Obs or structures containing Obs from a .json.gz file. + The following structures are supported: Obs, list, numpy.ndarray If the list contains only one element, it is unpacked from the list. From ed47d50286c7d09e39e6fe5b8fe631f9f1432e73 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 2 Dec 2021 12:22:07 +0000 Subject: [PATCH 053/220] refactor: readability of error propagation for covobs improved --- pyerrors/obs.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 382ecb21..b8bb371e 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1144,10 +1144,7 @@ def derived_observable(func, data, **kwargs): for j_obs, obs in np.ndenumerate(data): for name in obs.names: if name in obs.cov_names: - if name in new_grad: - new_grad[name] += deriv[i_val + j_obs] * obs.covobs[name].grad - else: - new_grad[name] = deriv[i_val + j_obs] * obs.covobs[name].grad + new_grad[name] = new_grad.get(name, 0) + deriv[i_val + j_obs] * obs.covobs[name].grad else: new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name]) From 147bc6b24bdb90a0eaf75a59e02d6c220edf7b93 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 2 Dec 2021 12:50:08 +0000 Subject: [PATCH 054/220] feat: first working version of array_mode in dervived_observable --- pyerrors/linalg.py | 124 +++------------------------------------------ pyerrors/obs.py | 18 ++++++- 2 files changed, 22 insertions(+), 120 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index bb44870d..237e6713 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -1,123 +1,11 @@ import numpy as np -from autograd import jacobian import autograd.numpy as anp # Thinly-wrapped numpy -from .obs import derived_observable, CObs, Obs, _merge_idx, _expand_deltas_for_merge, _filter_zeroes, import_jackknife +from .obs import derived_observable, CObs, Obs, import_jackknife from functools import partial from autograd.extend import defvjp -def derived_array(func, data, **kwargs): - """Construct a derived Obs for a matrix valued function according to func(data, **kwargs) using automatic differentiation. - - Parameters - ---------- - func : object - arbitrary function of the form func(data, **kwargs). For the - automatic differentiation to work, all numpy functions have to have - the autograd wrapper (use 'import autograd.numpy as anp'). - data : list - list of Obs, e.g. [obs1, obs2, obs3]. - man_grad : list - manually supply a list or an array which contains the jacobian - of func. Use cautiously, supplying the wrong derivative will - not be intercepted. - """ - - data = np.asarray(data) - raveled_data = data.ravel() - - # Workaround for matrix operations containing non Obs data - for i_data in raveled_data: - if isinstance(i_data, Obs): - first_name = i_data.names[0] - first_shape = i_data.shape[first_name] - first_idl = i_data.idl[first_name] - break - - for i in range(len(raveled_data)): - if isinstance(raveled_data[i], (int, float)): - raveled_data[i] = Obs([raveled_data[i] + np.zeros(first_shape)], [first_name], idl=[first_idl]) - - n_obs = len(raveled_data) - new_names = sorted(set([y for x in [o.names for o in raveled_data] for y in x])) - - is_merged = {name: (len(list(filter(lambda o: o.is_merged.get(name, False) is True, raveled_data))) > 0) for name in new_names} - reweighted = len(list(filter(lambda o: o.reweighted is True, raveled_data))) > 0 - new_idl_d = {} - for name in new_names: - idl = [] - for i_data in raveled_data: - tmp = i_data.idl.get(name) - if tmp is not None: - idl.append(tmp) - new_idl_d[name] = _merge_idx(idl) - if not is_merged[name]: - is_merged[name] = (1 != len(set([len(idx) for idx in [*idl, new_idl_d[name]]]))) - - if data.ndim == 1: - values = np.array([o.value for o in data]) - else: - values = np.vectorize(lambda x: x.value)(data) - - new_values = func(values, **kwargs) - - new_r_values = {} - for name in new_names: - tmp_values = np.zeros(n_obs) - for i, item in enumerate(raveled_data): - tmp = item.r_values.get(name) - if tmp is None: - tmp = item.value - tmp_values[i] = tmp - tmp_values = np.array(tmp_values).reshape(data.shape) - new_r_values[name] = func(tmp_values, **kwargs) - - if 'man_grad' in kwargs: - deriv = np.asarray(kwargs.get('man_grad')) - if new_values.shape + data.shape != deriv.shape: - raise Exception('Manual derivative does not have correct shape.') - else: - deriv = jacobian(func)(values, **kwargs) - - final_result = np.zeros(new_values.shape, dtype=object) - - d_extracted = {} - for name in new_names: - d_extracted[name] = [] - for i_dat, dat in enumerate(data): - ens_length = len(new_idl_d[name]) - d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas[name], o.idl[name], o.shape[name], new_idl_d[name]) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, ))) - - for i_val, new_val in np.ndenumerate(new_values): - new_deltas = {} - for name in new_names: - ens_length = d_extracted[name][0].shape[-1] - new_deltas[name] = np.zeros(ens_length) - for i_dat, dat in enumerate(d_extracted[name]): - new_deltas[name] += np.tensordot(deriv[i_val + (i_dat, )], dat) - - new_samples = [] - new_means = [] - new_idl = [] - for name in new_names: - if is_merged[name]: - filtered_deltas, filtered_idl_d = _filter_zeroes(new_deltas[name], new_idl_d[name]) - else: - filtered_deltas = new_deltas[name] - filtered_idl_d = new_idl_d[name] - - new_samples.append(filtered_deltas) - new_idl.append(filtered_idl_d) - new_means.append(new_r_values[name][i_val]) - final_result[i_val] = Obs(new_samples, new_names, means=new_means, idl=new_idl) - final_result[i_val]._value = new_val - final_result[i_val].is_merged = is_merged - final_result[i_val].reweighted = reweighted - - return final_result - - def matmul(*operands): """Matrix multiply all operands. @@ -157,8 +45,8 @@ def matmul(*operands): def multi_dot_i(operands): return multi_dot(operands, 'Imag') - Nr = derived_array(multi_dot_r, extended_operands) - Ni = derived_array(multi_dot_i, extended_operands) + Nr = derived_observable(multi_dot_r, extended_operands, array_mode=True) + Ni = derived_observable(multi_dot_i, extended_operands, array_mode=True) res = np.empty_like(Nr) for (n, m), entry in np.ndenumerate(Nr): @@ -171,7 +59,7 @@ def matmul(*operands): for op in operands[1:]: stack = stack @ op return stack - return derived_array(multi_dot, operands) + return derived_observable(multi_dot, operands, array_mode=True) def jack_matmul(*operands): @@ -360,7 +248,7 @@ def _mat_mat_op(op, obs, **kwargs): if kwargs.get('num_grad') is True: op_big_matrix = _num_diff_mat_mat_op(op, big_matrix, **kwargs) else: - op_big_matrix = derived_array(lambda x, **kwargs: op(x), [big_matrix])[0] + op_big_matrix = derived_observable(lambda x, **kwargs: op(x), [big_matrix], array_mode=True)[0] dim = op_big_matrix.shape[0] op_A = op_big_matrix[0: dim // 2, 0: dim // 2] op_B = op_big_matrix[dim // 2:, 0: dim // 2] @@ -371,7 +259,7 @@ def _mat_mat_op(op, obs, **kwargs): else: if kwargs.get('num_grad') is True: return _num_diff_mat_mat_op(op, obs, **kwargs) - return derived_array(lambda x, **kwargs: op(x), [obs])[0] + return derived_observable(lambda x, **kwargs: op(x), [obs], array_mode=True)[0] def eigh(obs, **kwargs): diff --git a/pyerrors/obs.py b/pyerrors/obs.py index b8bb371e..a08e7251 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1015,7 +1015,7 @@ def _filter_zeroes(deltas, idx, eps=Obs.filter_eps): return deltas, idx -def derived_observable(func, data, **kwargs): +def derived_observable(func, data, array_mode=False, **kwargs): """Construct a derived Obs according to func(data, **kwargs) using automatic differentiation. Parameters @@ -1138,14 +1138,28 @@ def derived_observable(func, data, **kwargs): final_result = np.zeros(new_values.shape, dtype=object) + if array_mode is True: + d_extracted = {} + for name in new_names: + d_extracted[name] = [] + for i_dat, dat in enumerate(data): + ens_length = len(new_idl_d[name]) + d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas[name], o.idl[name], o.shape[name], new_idl_d[name]) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, ))) + for i_val, new_val in np.ndenumerate(new_values): new_deltas = {} new_grad = {} + if array_mode is True: + for name in new_names: + ens_length = d_extracted[name][0].shape[-1] + new_deltas[name] = np.zeros(ens_length) + for i_dat, dat in enumerate(d_extracted[name]): + new_deltas[name] += np.tensordot(deriv[i_val + (i_dat, )], dat) for j_obs, obs in np.ndenumerate(data): for name in obs.names: if name in obs.cov_names: new_grad[name] = new_grad.get(name, 0) + deriv[i_val + j_obs] * obs.covobs[name].grad - else: + elif array_mode is False: new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name]) new_covobs = {name: Covobs(0, allcov[name], name, grad=new_grad[name]) for name in new_grad} From 28a7197f747bef99b335d79708b7c9ecc9ab85d9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 2 Dec 2021 16:38:10 +0000 Subject: [PATCH 055/220] feat: derived_observable array_mode working but slow --- pyerrors/obs.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index a08e7251..77f55cff 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1155,12 +1155,16 @@ def derived_observable(func, data, array_mode=False, **kwargs): new_deltas[name] = np.zeros(ens_length) for i_dat, dat in enumerate(d_extracted[name]): new_deltas[name] += np.tensordot(deriv[i_val + (i_dat, )], dat) - for j_obs, obs in np.ndenumerate(data): - for name in obs.names: - if name in obs.cov_names: + for j_obs, obs in np.ndenumerate(data): + for name in obs.cov_names: new_grad[name] = new_grad.get(name, 0) + deriv[i_val + j_obs] * obs.covobs[name].grad - elif array_mode is False: - new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name]) + else: + for j_obs, obs in np.ndenumerate(data): + for name in obs.names: + if name in obs.cov_names: + new_grad[name] = new_grad.get(name, 0) + deriv[i_val + j_obs] * obs.covobs[name].grad + else: + new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name]) new_covobs = {name: Covobs(0, allcov[name], name, grad=new_grad[name]) for name in new_grad} From a324a7f19590c24a85c7ed7966804b7374a55e83 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 2 Dec 2021 16:42:29 +0000 Subject: [PATCH 056/220] fix: covobs names can no longer contain replica separator '|'. Tests added. --- pyerrors/covobs.py | 2 ++ tests/covobs_test.py | 69 ++++++++++++++++++++++++++++++++++++++++++++ tests/obs_test.py | 59 ------------------------------------- 3 files changed, 71 insertions(+), 59 deletions(-) create mode 100644 tests/covobs_test.py diff --git a/pyerrors/covobs.py b/pyerrors/covobs.py index 3615fe5c..b0eb4efb 100644 --- a/pyerrors/covobs.py +++ b/pyerrors/covobs.py @@ -32,6 +32,8 @@ class Covobs: raise Exception('Covariance matrix has to be a square matrix!') else: raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') + if '|' in name: + raise Exception("Covobs name must not contain replica separator '|'.") self.name = name if grad is None: if pos is None: diff --git a/tests/covobs_test.py b/tests/covobs_test.py new file mode 100644 index 00000000..c098bd73 --- /dev/null +++ b/tests/covobs_test.py @@ -0,0 +1,69 @@ +import autograd.numpy as np +import pyerrors as pe +import pytest + +np.random.seed(0) + + +def test_covobs(): + val = 1.123124 + cov = .243423 + name = 'Covariance' + co = pe.cov_Obs(val, cov, name) + co.gamma_method() + assert (co.dvalue == np.sqrt(cov)) + assert (co.value == val) + + do = 2 * co + assert (do.covobs[name].grad[0] == 2) + + do = co * co + assert (do.covobs[name].grad[0] == 2 * val) + assert np.array_equal(do.covobs[name].cov, co.covobs[name].cov) + + pi = [16.7457, -19.0475] + cov = [[3.49591, -6.07560], [-6.07560, 10.5834]] + + cl = pe.cov_Obs(pi, cov, 'rAP') + pl = pe.misc.gen_correlated_data(pi, np.asarray(cov), 'rAPpseudo') + + def rAP(p, g0sq): + return -0.0010666 * g0sq * (1 + np.exp(p[0] + p[1] / g0sq)) + + for g0sq in [1, 1.5, 1.8]: + oc = rAP(cl, g0sq) + oc.gamma_method() + op = rAP(pl, g0sq) + op.gamma_method() + assert(np.isclose(oc.value, op.value, rtol=1e-14, atol=1e-14)) + + assert(pe.covariance(cl[0], cl[1]) == cov[0][1]) + assert(pe.covariance2(cl[0], cl[1]) == cov[1][0]) + + do = cl[0] * cl[1] + assert(np.array_equal(do.covobs['rAP'].grad, np.transpose([pi[1], pi[0]]).reshape(2, 1))) + + +def test_covobs_overloading(): + covobs = pe.cov_Obs([0.5, 0.5], np.array([[0.02, 0.02], [0.02, 0.02]]), 'test') + assert (covobs[0] / covobs[1]) == 1 + assert (covobs[0] - covobs[1]) == 0 + + my_obs = pe.pseudo_Obs(2.3, 0.2, 'obs') + + assert (my_obs * covobs[0] / covobs[1]) == my_obs + + covobs = pe.cov_Obs(0.0, 0.3, 'test') + assert not covobs.is_zero() + + +def test_covobs_name_collision(): + covobs = pe.cov_Obs(0.5, 0.002, 'test') + my_obs = pe.pseudo_Obs(2.3, 0.2, 'test') + with pytest.raises(Exception): + summed_obs = my_obs + covobs + + +def test_covobs_replica_separator(): + with pytest.raises(Exception): + covobs = pe.cov_Obs(0.5, 0.002, 'test|r2') diff --git a/tests/obs_test.py b/tests/obs_test.py index 1767d29c..2a66ce7c 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -542,62 +542,3 @@ def test_import_jackknife(): my_jacks = my_obs.export_jackknife() reconstructed_obs = pe.import_jackknife(my_jacks, 'test') assert my_obs == reconstructed_obs - - -def test_covobs(): - val = 1.123124 - cov = .243423 - name = 'Covariance' - co = pe.cov_Obs(val, cov, name) - co.gamma_method() - assert (co.dvalue == np.sqrt(cov)) - assert (co.value == val) - - do = 2 * co - assert (do.covobs[name].grad[0] == 2) - - do = co * co - assert (do.covobs[name].grad[0] == 2 * val) - assert np.array_equal(do.covobs[name].cov, co.covobs[name].cov) - - pi = [16.7457, -19.0475] - cov = [[3.49591, -6.07560], [-6.07560, 10.5834]] - - cl = pe.cov_Obs(pi, cov, 'rAP') - pl = pe.misc.gen_correlated_data(pi, np.asarray(cov), 'rAPpseudo') - - def rAP(p, g0sq): - return -0.0010666 * g0sq * (1 + np.exp(p[0] + p[1] / g0sq)) - - for g0sq in [1, 1.5, 1.8]: - oc = rAP(cl, g0sq) - oc.gamma_method() - op = rAP(pl, g0sq) - op.gamma_method() - assert(np.isclose(oc.value, op.value, rtol=1e-14, atol=1e-14)) - - assert(pe.covariance(cl[0], cl[1]) == cov[0][1]) - assert(pe.covariance2(cl[0], cl[1]) == cov[1][0]) - - do = cl[0] * cl[1] - assert(np.array_equal(do.covobs['rAP'].grad, np.transpose([pi[1], pi[0]]).reshape(2, 1))) - - -def test_covobs_overloading(): - covobs = pe.cov_Obs([0.5, 0.5], np.array([[0.02, 0.02], [0.02, 0.02]]), 'test') - assert (covobs[0] / covobs[1]) == 1 - assert (covobs[0] - covobs[1]) == 0 - - my_obs = pe.pseudo_Obs(2.3, 0.2, 'obs') - - assert (my_obs * covobs[0] / covobs[1]) == my_obs - - covobs = pe.cov_Obs(0.0, 0.3, 'test') - assert not covobs.is_zero() - - -def test_covobs_name_collision(): - covobs = pe.cov_Obs(0.5, 0.002, 'test') - my_obs = pe.pseudo_Obs(2.3, 0.2, 'test') - with pytest.raises(Exception): - summed_obs = my_obs + covobs From 5789c0cef6953c754aa5e8907534a27fff07dad9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 2 Dec 2021 16:54:51 +0000 Subject: [PATCH 057/220] feat: new_cov_names and new_sample_names added to derived_array --- pyerrors/obs.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 77f55cff..3edd9292 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1048,6 +1048,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): raveled_data = data.ravel() # Workaround for matrix operations containing non Obs data + # TODO: Find more elegant solution here. for i_data in raveled_data: if isinstance(i_data, Obs): first_name = i_data.names[0] @@ -1070,11 +1071,13 @@ def derived_observable(func, data, array_mode=False, **kwargs): n_obs = len(raveled_data) new_names = sorted(set([y for x in [o.names for o in raveled_data] for y in x])) + new_cov_names = sorted(set([y for x in [o.cov_names for o in raveled_data] for y in x])) + new_sample_names = sorted(set(new_names) - set(new_cov_names)) - is_merged = {name: (len(list(filter(lambda o: o.is_merged.get(name, False) is True, raveled_data))) > 0) for name in new_names} + is_merged = {name: (len(list(filter(lambda o: o.is_merged.get(name, False) is True, raveled_data))) > 0) for name in new_sample_names} reweighted = len(list(filter(lambda o: o.reweighted is True, raveled_data))) > 0 new_idl_d = {} - for name in new_names: + for name in new_sample_names: idl = [] for i_data in raveled_data: tmp = i_data.idl.get(name) @@ -1096,7 +1099,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): multi = 1 new_r_values = {} - for name in new_names: + for name in new_sample_names: tmp_values = np.zeros(n_obs) for i, item in enumerate(raveled_data): tmp = item.r_values.get(name) @@ -1140,7 +1143,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): if array_mode is True: d_extracted = {} - for name in new_names: + for name in new_sample_names: d_extracted[name] = [] for i_dat, dat in enumerate(data): ens_length = len(new_idl_d[name]) @@ -1150,7 +1153,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): new_deltas = {} new_grad = {} if array_mode is True: - for name in new_names: + for name in new_sample_names: ens_length = d_extracted[name][0].shape[-1] new_deltas[name] = np.zeros(ens_length) for i_dat, dat in enumerate(d_extracted[name]): From ce4e73ec1a5f6c8c0edd1200a6a9524f95dfbb2d Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Fri, 3 Dec 2021 14:04:27 +0100 Subject: [PATCH 058/220] Reweighting is now possible if the observable is defined only on a subset of replica of those of the RWF --- pyerrors/obs.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index b8bb371e..5570f509 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1238,22 +1238,22 @@ def reweight(weight, obs, **kwargs): for i in range(len(obs)): if len(obs[i].cov_names): raise Exception('Error: Not possible to reweight an Obs that contains covobs!') - if sorted(weight.names) != sorted(obs[i].names): + if not set(obs[i].names).issubset(weight.names): raise Exception('Error: Ensembles do not fit') - for name in weight.names: + for name in obs[i].names: if not set(obs[i].idl[name]).issubset(weight.idl[name]): raise Exception('obs[%d] has to be defined on a subset of the configs in weight.idl[%s]!' % (i, name)) new_samples = [] w_deltas = {} - for name in sorted(weight.names): + for name in sorted(obs[i].names): w_deltas[name] = _reduce_deltas(weight.deltas[name], weight.idl[name], obs[i].idl[name]) new_samples.append((w_deltas[name] + weight.r_values[name]) * (obs[i].deltas[name] + obs[i].r_values[name])) - tmp_obs = Obs(new_samples, sorted(weight.names), idl=[obs[i].idl[name] for name in sorted(weight.names)]) + tmp_obs = Obs(new_samples, sorted(obs[i].names), idl=[obs[i].idl[name] for name in sorted(obs[i].names)]) if kwargs.get('all_configs'): new_weight = weight else: - new_weight = Obs([w_deltas[name] + weight.r_values[name] for name in sorted(weight.names)], sorted(weight.names), idl=[obs[i].idl[name] for name in sorted(weight.names)]) + new_weight = Obs([w_deltas[name] + weight.r_values[name] for name in sorted(obs[i].names)], sorted(obs[i].names), idl=[obs[i].idl[name] for name in sorted(obs[i].names)]) result.append(derived_observable(lambda x, **kwargs: x[0] / x[1], [tmp_obs, new_weight], **kwargs)) result[-1].reweighted = True From 06dc6cd808fdc89820f434181951b03d99ae2ead Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sat, 4 Dec 2021 11:55:11 +0000 Subject: [PATCH 059/220] fix: r_values in fits are now properly propagated --- pyerrors/fits.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 677f6eba..85e28557 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -301,8 +301,7 @@ def total_least_squares(x, y, func, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0], list(x.ravel()) + list(y), man_grad=list(deriv_x[i]) + list(deriv_y[i]))) - result[-1]._value = out.beta[i] + result.append(derived_observable(lambda my_var, **kwargs: my_var[0] / x.ravel()[0].value * out.beta[i], list(x.ravel()) + list(y), man_grad=list(deriv_x[i]) + list(deriv_y[i]))) output.fit_parameters = result + const_par @@ -419,8 +418,7 @@ def _prior_fit(x, y, func, priors, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0], list(y) + list(loc_priors), man_grad=list(deriv[i]))) - result[-1]._value = params[i] + result.append(derived_observable(lambda x, **kwargs: x[0] / y[0].value * params[i], list(y) + list(loc_priors), man_grad=list(deriv[i]))) output.fit_parameters = result output.chisquare = chisqfunc(np.asarray(params)) @@ -614,8 +612,7 @@ def _standard_fit(x, y, func, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0], list(y), man_grad=list(deriv[i]))) - result[-1]._value = fit_result.x[i] + result.append(derived_observable(lambda x, **kwargs: x[0] / y[0].value * fit_result.x[i], list(y), man_grad=list(deriv[i]))) output.fit_parameters = result + const_par From 28f1372cfd569633979abd497076c55704d73773 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sat, 4 Dec 2021 13:02:45 +0000 Subject: [PATCH 060/220] fix: r_value propagation also adjusted in root module --- pyerrors/roots.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyerrors/roots.py b/pyerrors/roots.py index 99434a1c..1cb7b46f 100644 --- a/pyerrors/roots.py +++ b/pyerrors/roots.py @@ -33,6 +33,5 @@ def find_root(d, func, guess=1.0, **kwargs): da = jacobian(lambda u, v: func(v, u))(d.value, root[0]) deriv = - da / dx - res = derived_observable(lambda x, **kwargs: x[0], [d], man_grad=[deriv]) - res._value = root[0] + res = derived_observable(lambda x, **kwargs: x[0] / d.value * root[0], [d], man_grad=[deriv]) return res From 602827434221f4a36c6302a31497137e8eb359f0 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sat, 4 Dec 2021 13:05:18 +0000 Subject: [PATCH 061/220] test: test for r_value propagation in fits added --- tests/fits_test.py | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/tests/fits_test.py b/tests/fits_test.py index 45e98e35..5d7f1de3 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -52,7 +52,7 @@ def test_least_squares(): outc = pe.least_squares(x, oyc, func) betac = outc.fit_parameters - + for i in range(2): betac[i].gamma_method(S=1.0) assert math.isclose(betac[i].value, popt[i], abs_tol=1e-5) @@ -97,7 +97,7 @@ def test_least_squares(): return p[1] * np.exp(-p[0] * x) fitp = pe.least_squares(x, data, fitf, expected_chisquare=True) - + fitpc = pe.least_squares(x, data, fitf, correlated_fit=True) for i in range(2): diff = fitp[i] - fitpc[i] @@ -170,7 +170,7 @@ def test_total_least_squares(): diffc = outc.fit_parameters[0] - betac[0] assert(diffc / betac[0] < 1e-3 * betac[0].dvalue) assert((outc.fit_parameters[1] - betac[1]).is_zero()) - + outc = pe.total_least_squares(oxc, oy, func) betac = outc.fit_parameters @@ -208,3 +208,41 @@ def test_odr_derivatives(): tfit = pe.fits.fit_general(x, y, func, base_step=0.1, step_ratio=1.1, num_steps=20) assert np.abs(np.max(np.array(list(fit1[1].deltas.values())) - np.array(list(tfit[1].deltas.values())))) < 10e-8 + + +def test_r_value_persistence(): + def f(a, x): + return a[0] + a[1] * x + + a = pe.pseudo_Obs(1.1, .1, 'a') + assert np.isclose(a.value, a.r_values['a']) + + a_2 = a ** 2 + assert np.isclose(a_2.value, a_2.r_values['a']) + + b = pe.pseudo_Obs(2.1, .2, 'b') + + y = [a, b] + [o.gamma_method() for o in y] + + fitp = pe.fits.least_squares([1, 2], y, f) + + assert np.isclose(fitp[0].value, fitp[0].r_values['a']) + assert np.isclose(fitp[0].value, fitp[0].r_values['b']) + assert np.isclose(fitp[1].value, fitp[1].r_values['a']) + assert np.isclose(fitp[1].value, fitp[1].r_values['b']) + + fitp = pe.fits.total_least_squares(y, y, f) + + assert np.isclose(fitp[0].value, fitp[0].r_values['a']) + assert np.isclose(fitp[0].value, fitp[0].r_values['b']) + assert np.isclose(fitp[1].value, fitp[1].r_values['a']) + assert np.isclose(fitp[1].value, fitp[1].r_values['b']) + + fitp = pe.fits.least_squares([1, 2], y, f, priors=y) + + assert np.isclose(fitp[0].value, fitp[0].r_values['a']) + assert np.isclose(fitp[0].value, fitp[0].r_values['b']) + assert np.isclose(fitp[1].value, fitp[1].r_values['a']) + assert np.isclose(fitp[1].value, fitp[1].r_values['b']) + From 2d72d730a56b5a392411d0c13f036f35ac166832 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sat, 4 Dec 2021 13:09:30 +0000 Subject: [PATCH 062/220] test: r_value test for merge_obs added --- tests/obs_test.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/obs_test.py b/tests/obs_test.py index 2a66ce7c..ce9d7f41 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -381,6 +381,16 @@ def test_merge_obs(): assert diff == -(my_obs1.value + my_obs2.value) / 2 +def test_merge_obs_r_values(): + a1 = pe.pseudo_Obs(1.1, .1, 'a|1') + a2 = pe.pseudo_Obs(1.2, .1, 'a|2') + a = pe.merge_obs([a1, a2]) + + assert np.isclose(a.r_values['a|1'], a1.value) + assert np.isclose(a.r_values['a|2'], a2.value) + assert np.isclose(a.value, np.mean([a1.value, a2.value])) + + def test_correlate(): my_obs1 = pe.Obs([np.random.rand(100)], ['t']) my_obs2 = pe.Obs([np.random.rand(100)], ['t']) From 8163629efff1804dbd535eebd4ca21b0cb2250f4 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sat, 4 Dec 2021 13:11:19 +0000 Subject: [PATCH 063/220] test: root test extended --- tests/roots_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/roots_test.py b/tests/roots_test.py index 8a4720d4..dbb27bbe 100644 --- a/tests/roots_test.py +++ b/tests/roots_test.py @@ -15,6 +15,7 @@ def test_root_linear(): my_root = pe.roots.find_root(my_obs, root_function) assert np.isclose(my_root.value, value) + assert np.isclose(my_root.value, my_root.r_values['t']) difference = my_obs - my_root assert difference.is_zero() From 12a93eafb02418c74907c57516c4f7a9c8e0c982 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 6 Dec 2021 10:54:06 +0000 Subject: [PATCH 064/220] feat: performance of export to jackknife improved --- pyerrors/obs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 5570f509..c1fcc8ca 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -623,9 +623,9 @@ class Obs: name = self.names[0] full_data = self.deltas[name] + self.r_values[name] n = full_data.size - mean = np.mean(full_data) + mean = self.value tmp_jacks = np.zeros(n + 1) - tmp_jacks[0] = self.value + tmp_jacks[0] = mean tmp_jacks[1:] = (n * mean - full_data) / (n - 1) return tmp_jacks From 7937635ca25e8d2a82ddc5e89bfbe0ae3ba0e429 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 6 Dec 2021 15:02:15 +0000 Subject: [PATCH 065/220] feat: check for name doublers in Obs.__init__ optimized --- pyerrors/obs.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index c1fcc8ca..38faa276 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -74,8 +74,10 @@ class Obs: if idl is not None: if len(idl) != len(names): raise Exception('Length of idl incompatible with samples and names.') - if len(names) != len(set(names)): - raise Exception('names are not unique.') + name_length = len(names) + if name_length > 1: + if name_length != len(set(names)): + raise Exception('names are not unique.') if not all(isinstance(x, str) for x in names): raise TypeError('All names have to be strings.') if min(len(x) for x in samples) <= 4: From 1f91175e50be85b3701b3909fcc64a853ff8c066 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 6 Dec 2021 15:20:36 +0000 Subject: [PATCH 066/220] feat: check for non string names in Obs.__init__ optimized --- pyerrors/obs.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 38faa276..c6c97197 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -78,8 +78,11 @@ class Obs: if name_length > 1: if name_length != len(set(names)): raise Exception('names are not unique.') - if not all(isinstance(x, str) for x in names): - raise TypeError('All names have to be strings.') + if not all(isinstance(x, str) for x in names): + raise TypeError('All names have to be strings.') + else: + if not isinstance(names[0], str): + raise TypeError('All names have to be strings.') if min(len(x) for x in samples) <= 4: raise Exception('Samples have to have at least 5 entries.') From 52867fb03357d729e140385564f6cf3c07c022bf Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 6 Dec 2021 15:44:30 +0000 Subject: [PATCH 067/220] feat: tensordot array mode for covobs implemented --- pyerrors/obs.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index be6b4ceb..7d4927ab 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1148,11 +1148,16 @@ def derived_observable(func, data, array_mode=False, **kwargs): if array_mode is True: d_extracted = {} + g_extracted = {} for name in new_sample_names: d_extracted[name] = [] for i_dat, dat in enumerate(data): ens_length = len(new_idl_d[name]) d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas[name], o.idl[name], o.shape[name], new_idl_d[name]) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, ))) + for name in new_cov_names: + g_extracted[name] = [] + for i_dat, dat in enumerate(data): + g_extracted[name].append(np.array([obs.covobs[name]]).reshape(dat.shape + (1, ))) for i_val, new_val in np.ndenumerate(new_values): new_deltas = {} @@ -1163,9 +1168,10 @@ def derived_observable(func, data, array_mode=False, **kwargs): new_deltas[name] = np.zeros(ens_length) for i_dat, dat in enumerate(d_extracted[name]): new_deltas[name] += np.tensordot(deriv[i_val + (i_dat, )], dat) - for j_obs, obs in np.ndenumerate(data): - for name in obs.cov_names: - new_grad[name] = new_grad.get(name, 0) + deriv[i_val + j_obs] * obs.covobs[name].grad + for name in new_cov_names: + new_grad[name] = 0 + for i_dat, dat in enumerate(g_extracted[name]): + new_grad[name] += np.tensordot(deriv[i_val + (i_dat, )], dat) else: for j_obs, obs in np.ndenumerate(data): for name in obs.names: From 02d8f469eb93ec923171173a0ee4ec1a32a7d913 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 6 Dec 2021 21:59:41 +0000 Subject: [PATCH 068/220] feat: derived observable array mode works now, test added --- pyerrors/obs.py | 2 +- tests/linalg_test.py | 35 ++++++++++++++++++----------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 7d4927ab..96d91ac1 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1157,7 +1157,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): for name in new_cov_names: g_extracted[name] = [] for i_dat, dat in enumerate(data): - g_extracted[name].append(np.array([obs.covobs[name]]).reshape(dat.shape + (1, ))) + g_extracted[name].append(np.array([o.covobs[name].grad for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (1, ))) for i_val, new_val in np.ndenumerate(new_values): new_deltas = {} diff --git a/tests/linalg_test.py b/tests/linalg_test.py index d34da29f..b7fd4994 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -30,24 +30,25 @@ def get_complex_matrix(dimension): def test_matmul(): for dim in [4, 8]: - my_list = [] - length = 1000 + np.random.randint(200) - for i in range(dim ** 2): - my_list.append(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2'])) - my_array = np.array(my_list).reshape((dim, dim)) - tt = pe.linalg.matmul(my_array, my_array) - my_array @ my_array - for t, e in np.ndenumerate(tt): - assert e.is_zero(), t + for const in [1, pe.cov_Obs(1.0, 0.002, 'cov')]: + my_list = [] + length = 1000 + np.random.randint(200) + for i in range(dim ** 2): + my_list.append(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2'])) + my_array = const * np.array(my_list).reshape((dim, dim)) + tt = pe.linalg.matmul(my_array, my_array) - my_array @ my_array + for t, e in np.ndenumerate(tt): + assert e.is_zero(), t - my_list = [] - length = 1000 + np.random.randint(200) - for i in range(dim ** 2): - my_list.append(pe.CObs(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']), - pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']))) - my_array = np.array(my_list).reshape((dim, dim)) - tt = pe.linalg.matmul(my_array, my_array) - my_array @ my_array - for t, e in np.ndenumerate(tt): - assert e.is_zero(), t + my_list = [] + length = 1000 + np.random.randint(200) + for i in range(dim ** 2): + my_list.append(pe.CObs(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']), + pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']))) + my_array = np.array(my_list).reshape((dim, dim)) * const + tt = pe.linalg.matmul(my_array, my_array) - my_array @ my_array + for t, e in np.ndenumerate(tt): + assert e.is_zero(), t def test_jack_matmul(): From 93d87f8f8c33e56c2879f675193ef531d459838c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 6 Dec 2021 22:14:24 +0000 Subject: [PATCH 069/220] test: test for array mode extended --- pyerrors/obs.py | 1 + tests/linalg_test.py | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 96d91ac1..51e620da 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1146,6 +1146,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): final_result = np.zeros(new_values.shape, dtype=object) + # TODO: array mode does not work when matrices are defined on differenet ensembles if array_mode is True: d_extracted = {} g_extracted = {} diff --git a/tests/linalg_test.py b/tests/linalg_test.py index b7fd4994..08b6af39 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -153,7 +153,7 @@ def test_multi_dot(): length = 1000 + np.random.randint(200) for i in range(dim ** 2): my_list.append(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2'])) - my_array = np.array(my_list).reshape((dim, dim)) + my_array = pe.cov_Obs(1.0, 0.002, 'cov') * np.array(my_list).reshape((dim, dim)) tt = pe.linalg.matmul(my_array, my_array, my_array, my_array) - my_array @ my_array @ my_array @ my_array for t, e in np.ndenumerate(tt): assert e.is_zero(), t @@ -163,7 +163,7 @@ def test_multi_dot(): for i in range(dim ** 2): my_list.append(pe.CObs(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']), pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']))) - my_array = np.array(my_list).reshape((dim, dim)) + my_array = np.array(my_list).reshape((dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') tt = pe.linalg.matmul(my_array, my_array, my_array, my_array) - my_array @ my_array @ my_array @ my_array for t, e in np.ndenumerate(tt): assert e.is_zero(), t @@ -189,7 +189,7 @@ def test_matmul_irregular_histories(): standard_array = [] for i in range(dim ** 2): standard_array.append(pe.Obs([np.random.normal(1.1, 0.2, length)], ['ens1'])) - standard_matrix = np.array(standard_array).reshape((dim, dim)) + standard_matrix = np.array(standard_array).reshape((dim, dim)) * pe.pseudo_Obs(0.1, 0.002, 'qr') for idl in [range(1, 501, 2), range(250, 273), [2, 8, 19, 20, 78]]: irregular_array = [] From 674a1ea6f6ef1b8ddc8164eb64d6a30d10938c68 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 6 Dec 2021 22:18:28 +0000 Subject: [PATCH 070/220] test: test for array mode with different contents commented out until fix --- tests/linalg_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 08b6af39..b4216c2e 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -189,7 +189,7 @@ def test_matmul_irregular_histories(): standard_array = [] for i in range(dim ** 2): standard_array.append(pe.Obs([np.random.normal(1.1, 0.2, length)], ['ens1'])) - standard_matrix = np.array(standard_array).reshape((dim, dim)) * pe.pseudo_Obs(0.1, 0.002, 'qr') + standard_matrix = np.array(standard_array).reshape((dim, dim)) # * pe.pseudo_Obs(0.1, 0.002, 'qr') for idl in [range(1, 501, 2), range(250, 273), [2, 8, 19, 20, 78]]: irregular_array = [] From b0610544a8e16b5aee366647f940af4e662bad52 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 07:29:05 +0000 Subject: [PATCH 071/220] fix: array mode now works for elements with different covobs --- pyerrors/obs.py | 9 ++++++++- tests/linalg_test.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 51e620da..ea10e578 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1148,6 +1148,13 @@ def derived_observable(func, data, array_mode=False, **kwargs): # TODO: array mode does not work when matrices are defined on differenet ensembles if array_mode is True: + + class Zero_grad(): + def __init__(self): + self.grad = 0 + + zero_grad = Zero_grad() + d_extracted = {} g_extracted = {} for name in new_sample_names: @@ -1158,7 +1165,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): for name in new_cov_names: g_extracted[name] = [] for i_dat, dat in enumerate(data): - g_extracted[name].append(np.array([o.covobs[name].grad for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (1, ))) + g_extracted[name].append(np.array([o.covobs.get(name, zero_grad).grad for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (1, ))) for i_val, new_val in np.ndenumerate(new_values): new_deltas = {} diff --git a/tests/linalg_test.py b/tests/linalg_test.py index b4216c2e..bdbce655 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -189,7 +189,7 @@ def test_matmul_irregular_histories(): standard_array = [] for i in range(dim ** 2): standard_array.append(pe.Obs([np.random.normal(1.1, 0.2, length)], ['ens1'])) - standard_matrix = np.array(standard_array).reshape((dim, dim)) # * pe.pseudo_Obs(0.1, 0.002, 'qr') + standard_matrix = np.array(standard_array).reshape((dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') # * pe.pseudo_Obs(0.1, 0.002, 'qr') for idl in [range(1, 501, 2), range(250, 273), [2, 8, 19, 20, 78]]: irregular_array = [] From df6b151c1393f3ba952b934485f3842ff5d20271 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 07:36:24 +0000 Subject: [PATCH 072/220] fix: array mode now works with elements defined on different ensembles --- pyerrors/obs.py | 7 +++---- tests/linalg_test.py | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index ea10e578..f7029a63 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1146,14 +1146,13 @@ def derived_observable(func, data, array_mode=False, **kwargs): final_result = np.zeros(new_values.shape, dtype=object) - # TODO: array mode does not work when matrices are defined on differenet ensembles if array_mode is True: - class Zero_grad(): + class _Zero_grad(): def __init__(self): self.grad = 0 - zero_grad = Zero_grad() + zero_grad = _Zero_grad() d_extracted = {} g_extracted = {} @@ -1161,7 +1160,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): d_extracted[name] = [] for i_dat, dat in enumerate(data): ens_length = len(new_idl_d[name]) - d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas[name], o.idl[name], o.shape[name], new_idl_d[name]) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, ))) + d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas.get(name, np.zeros(ens_length)), o.idl.get(name, new_idl_d[name]), o.shape.get(name, ens_length), new_idl_d[name]) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, ))) for name in new_cov_names: g_extracted[name] = [] for i_dat, dat in enumerate(data): diff --git a/tests/linalg_test.py b/tests/linalg_test.py index bdbce655..73bcf5bb 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -29,10 +29,10 @@ def get_complex_matrix(dimension): def test_matmul(): - for dim in [4, 8]: + for dim in [4, 6]: for const in [1, pe.cov_Obs(1.0, 0.002, 'cov')]: my_list = [] - length = 1000 + np.random.randint(200) + length = 100 + np.random.randint(200) for i in range(dim ** 2): my_list.append(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2'])) my_array = const * np.array(my_list).reshape((dim, dim)) @@ -41,7 +41,7 @@ def test_matmul(): assert e.is_zero(), t my_list = [] - length = 1000 + np.random.randint(200) + length = 100 + np.random.randint(200) for i in range(dim ** 2): my_list.append(pe.CObs(pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']), pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']))) @@ -189,7 +189,7 @@ def test_matmul_irregular_histories(): standard_array = [] for i in range(dim ** 2): standard_array.append(pe.Obs([np.random.normal(1.1, 0.2, length)], ['ens1'])) - standard_matrix = np.array(standard_array).reshape((dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') # * pe.pseudo_Obs(0.1, 0.002, 'qr') + standard_matrix = np.array(standard_array).reshape((dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') * pe.pseudo_Obs(0.1, 0.002, 'qr') for idl in [range(1, 501, 2), range(250, 273), [2, 8, 19, 20, 78]]: irregular_array = [] From e8bcf8de6faa56f2147e64d333b76b7948aa4042 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 08:09:38 +0000 Subject: [PATCH 073/220] fix: array mode now also works with covobs with N>1 --- pyerrors/obs.py | 14 ++++++++------ tests/linalg_test.py | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index f7029a63..bc60a3a2 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1148,23 +1148,25 @@ def derived_observable(func, data, array_mode=False, **kwargs): if array_mode is True: - class _Zero_grad(): - def __init__(self): - self.grad = 0 + new_covobs_lengths = dict(set([y for x in [[(n, o.covobs[n].N) for n in o.cov_names] for o in raveled_data] for y in x])) - zero_grad = _Zero_grad() + class _Zero_grad(): + def __init__(self, N): + # self.grad = np.zeros(N) + self.grad = np.zeros((N, 1)) d_extracted = {} g_extracted = {} for name in new_sample_names: d_extracted[name] = [] + ens_length = len(new_idl_d[name]) for i_dat, dat in enumerate(data): - ens_length = len(new_idl_d[name]) d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas.get(name, np.zeros(ens_length)), o.idl.get(name, new_idl_d[name]), o.shape.get(name, ens_length), new_idl_d[name]) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, ))) for name in new_cov_names: g_extracted[name] = [] + zero_grad = _Zero_grad(new_covobs_lengths[name]) for i_dat, dat in enumerate(data): - g_extracted[name].append(np.array([o.covobs.get(name, zero_grad).grad for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (1, ))) + g_extracted[name].append(np.array([o.covobs.get(name, zero_grad).grad for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (new_covobs_lengths[name], 1))) for i_val, new_val in np.ndenumerate(new_values): new_deltas = {} diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 73bcf5bb..55e65e30 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -195,7 +195,7 @@ def test_matmul_irregular_histories(): irregular_array = [] for i in range(dim ** 2): irregular_array.append(pe.Obs([np.random.normal(1.1, 0.2, len(idl))], ['ens1'], idl=[idl])) - irregular_matrix = np.array(irregular_array).reshape((dim, dim)) + irregular_matrix = np.array(irregular_array).reshape((dim, dim)) * pe.cov_Obs([1.0, 1.0], [[0.001,0.0001], [0.0001, 0.002]], 'norm')[0] t1 = standard_matrix @ irregular_matrix t2 = pe.linalg.matmul(standard_matrix, irregular_matrix) @@ -213,7 +213,7 @@ def test_irregular_matrix_inverse(): irregular_array = [] for i in range(dim ** 2): irregular_array.append(pe.Obs([np.random.normal(1.1, 0.2, len(idl)), np.random.normal(0.25, 0.1, 10)], ['ens1', 'ens2'], idl=[idl, range(1, 11)])) - irregular_matrix = np.array(irregular_array).reshape((dim, dim)) + irregular_matrix = np.array(irregular_array).reshape((dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') * pe.pseudo_Obs(1.0, 0.002, 'ens2|r23') invertible_irregular_matrix = np.identity(dim) + irregular_matrix @ irregular_matrix.T From 757d8ade06694bd712a2e40c409b381bd942afc1 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 08:11:38 +0000 Subject: [PATCH 074/220] test: test for multidimensional covobs multiplication extended --- tests/linalg_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 55e65e30..58301814 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -30,7 +30,7 @@ def get_complex_matrix(dimension): def test_matmul(): for dim in [4, 6]: - for const in [1, pe.cov_Obs(1.0, 0.002, 'cov')]: + for const in [1, pe.cov_Obs([1.0, 1.0], [[0.001,0.0001], [0.0001, 0.002]], 'norm')[1]]: my_list = [] length = 100 + np.random.randint(200) for i in range(dim ** 2): From f223b12cc2b260acecfc5936425370a78f151bd6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 08:27:24 +0000 Subject: [PATCH 075/220] fix: instances of plot.show changed to plot.draw in fit module --- .gitignore | 1 + pyerrors/fits.py | 6 +++--- tests/fits_test.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 77feb98c..fdaac56f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ examples/B1k2_pcac_plateau.p examples/Untitled.* core.* *.swp +htmlcov diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 85e28557..1651cd93 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -678,7 +678,7 @@ def qqplot(x, o_y, func, p): plt.xlabel('Theoretical quantiles') plt.ylabel('Ordered Values') plt.legend() - plt.show() + plt.draw() def residual_plot(x, y, func, fit_res): @@ -707,7 +707,7 @@ def residual_plot(x, y, func, fit_res): ax1.set_xlim([xstart, xstop]) ax1.set_ylabel('Residuals') plt.subplots_adjust(wspace=None, hspace=None) - plt.show() + plt.draw() def covariance_matrix(y): @@ -782,7 +782,7 @@ def ks_test(obs=None): loc_max_diff = np.argmax(np.abs(diffs)) loc = Xs[loc_max_diff] plt.annotate(s='', xy=(loc, loc), xytext=(loc, loc + diffs[loc_max_diff]), arrowprops=dict(arrowstyle='<->', shrinkA=0, shrinkB=0)) - plt.show() + plt.draw() print(scipy.stats.kstest(Qs, 'uniform')) diff --git a/tests/fits_test.py b/tests/fits_test.py index 5d7f1de3..53a23dc9 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -29,7 +29,7 @@ def test_least_squares(): y = a[0] * np.exp(-a[1] * x) return y - out = pe.least_squares(x, oy, func) + out = pe.least_squares(x, oy, func, expected_chisquare=True, resplot=True, qqplot=True) beta = out.fit_parameters for i in range(2): @@ -133,7 +133,7 @@ def test_total_least_squares(): odr.set_job(fit_type=0, deriv=1) output = odr.run() - out = pe.total_least_squares(ox, oy, func) + out = pe.total_least_squares(ox, oy, func, expected_chisquare=True) beta = out.fit_parameters for i in range(2): From 370cd34e0fc376a78c6b188412653aad7e4d2401 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 08:31:24 +0000 Subject: [PATCH 076/220] refactor!: covariance3 removed --- pyerrors/obs.py | 64 ------------------------------------------------- 1 file changed, 64 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index bc60a3a2..bea4f7e0 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1546,70 +1546,6 @@ def covariance2(obs1, obs2, correlation=False, **kwargs): return dvalue -def covariance3(obs1, obs2, correlation=False, **kwargs): - """Another alternative implementation of the covariance of two observables. - - covariance2(obs, obs) is equal to obs.dvalue ** 2 - Currently only works if ensembles are identical. - The gamma method has to be applied first to both observables. - - If abs(covariance2(obs1, obs2)) > obs1.dvalue * obs2.dvalue, the covariance - is constrained to the maximum value in order to make sure that covariance - matrices are positive semidefinite. - - Keyword arguments - ----------------- - correlation -- if true the correlation instead of the covariance is - returned (default False) - plot -- if true, the integrated autocorrelation time for each ensemble is - plotted. - """ - - for name in sorted(set(obs1.names + obs2.names)): - if (obs1.shape.get(name) != obs2.shape.get(name)) and (obs1.shape.get(name) is not None) and (obs2.shape.get(name) is not None): - raise Exception('Shapes of ensemble', name, 'do not fit') - if (1 != len(set([len(idx) for idx in [obs1.idl[name], obs2.idl[name], _merge_idx([obs1.idl[name], obs2.idl[name]])]]))): - raise Exception('Shapes of ensemble', name, 'do not fit') - - if not hasattr(obs1, 'e_names') or not hasattr(obs2, 'e_names'): - raise Exception('The gamma method has to be applied to both Obs first.') - - tau_exp = [] - S = [] - for e_name in sorted(set(obs1.e_names + obs2.e_names)): - t_1 = obs1.tau_exp.get(e_name) - t_2 = obs2.tau_exp.get(e_name) - if t_1 is None: - t_1 = 0 - if t_2 is None: - t_2 = 0 - tau_exp.append(max(t_1, t_2)) - S_1 = obs1.S.get(e_name) - S_2 = obs2.S.get(e_name) - if S_1 is None: - S_1 = Obs.S_global - if S_2 is None: - S_2 = Obs.S_global - S.append(max(S_1, S_2)) - - check_obs = obs1 + obs2 - check_obs.gamma_method(tau_exp=tau_exp, S=S) - - if kwargs.get('plot'): - check_obs.plot_tauint() - check_obs.plot_rho() - - cov = (check_obs.dvalue ** 2 - obs1.dvalue ** 2 - obs2.dvalue ** 2) / 2 - - if np.abs(cov / obs1.dvalue / obs2.dvalue) > 1.0: - cov = np.sign(cov) * obs1.dvalue * obs2.dvalue - - if correlation: - cov = cov / obs1.dvalue / obs2.dvalue - - return cov - - def pseudo_Obs(value, dvalue, name, samples=1000): """Generate a pseudo Obs with given value, dvalue and name From 3324b0aa07046463a65a607f3bba69f08878dde3 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 08:37:33 +0000 Subject: [PATCH 077/220] docs: CONTRIBUTING extended --- CONTRIBUTING.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cc4b5132..df206c99 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,14 +20,15 @@ Please add docstrings to any new function, class or method you implement. The do ### Tests When implementing a new feature or fixing a bug please add meaningful tests to the files in the `tests` directory which cover the new code. - -### Continous integration For all pull requests tests are executed for the most recent python releases via ``` pytest --cov=pyerrors -vv ``` -requiring `pytest`, `pytest-cov` and `pytest-benchmark` -and the linter `flake8` is executed with the command +requiring `pytest`, `pytest-cov` and `pytest-benchmark`. To get a coverage report in html run +``` +pytest --cov=pyerrors --cov-report html +``` +The linter `flake8` is executed with the command ``` flake8 --ignore=E501,E722 --exclude=__init__.py pyerrors ``` From 31901400234902bd730ad46ec94273da3d137855 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 7 Dec 2021 17:15:46 +0100 Subject: [PATCH 078/220] Ensure fixed dimensions of cov and grad in covobs. Allow for differences of O(1e-14) in two cov matrices, when combining observables --- pyerrors/covobs.py | 3 +++ pyerrors/obs.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pyerrors/covobs.py b/pyerrors/covobs.py index b0eb4efb..64d90150 100644 --- a/pyerrors/covobs.py +++ b/pyerrors/covobs.py @@ -23,6 +23,7 @@ class Covobs: self.cov = np.array(cov) if self.cov.ndim == 0: self.N = 1 + self.cov = np.diag([self.cov]) elif self.cov.ndim == 1: self.N = len(self.cov) self.cov = np.diag(self.cov) @@ -48,6 +49,8 @@ class Covobs: self.grad[pos] = 1. else: self.grad = np.array(grad) + if self.grad.ndim == 1: + self.grad = np.reshape(self.grad, (self.N, 1)) self.value = mean def errsq(self): diff --git a/pyerrors/obs.py b/pyerrors/obs.py index bea4f7e0..934b2518 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1069,7 +1069,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): for o in raveled_data: for name in o.cov_names: if name in allcov: - if not np.array_equal(allcov[name], o.covobs[name].cov): + if not np.allclose(allcov[name], o.covobs[name].cov, rtol=1e-14, atol=1e-14): raise Exception('Inconsistent covariance matrices for %s!' % (name)) else: allcov[name] = o.covobs[name].cov From 7c5465d828d3712f3bd467b1447a2c846c3c8aa9 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 7 Dec 2021 17:33:40 +0100 Subject: [PATCH 079/220] Added tests when changing cov and grad in covobs --- pyerrors/covobs.py | 52 ++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/pyerrors/covobs.py b/pyerrors/covobs.py index 64d90150..9343dc41 100644 --- a/pyerrors/covobs.py +++ b/pyerrors/covobs.py @@ -20,19 +20,7 @@ class Covobs: grad : list or array Gradient of the Covobs wrt. the means belonging to cov. """ - self.cov = np.array(cov) - if self.cov.ndim == 0: - self.N = 1 - self.cov = np.diag([self.cov]) - elif self.cov.ndim == 1: - self.N = len(self.cov) - self.cov = np.diag(self.cov) - elif self.cov.ndim == 2: - self.N = self.cov.shape[0] - if self.cov.shape[1] != self.N: - raise Exception('Covariance matrix has to be a square matrix!') - else: - raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') + self.set_cov(cov) if '|' in name: raise Exception("Covobs name must not contain replica separator '|'.") self.name = name @@ -45,15 +33,43 @@ class Covobs: else: if pos > self.N: raise Exception('pos %d too large for covariance matrix with dimension %dx%d!' % (pos, self.N, self.N)) - self.grad = np.zeros((self.N, 1)) - self.grad[pos] = 1. + self._grad = np.zeros((self.N, 1)) + self._grad[pos] = 1. else: - self.grad = np.array(grad) - if self.grad.ndim == 1: - self.grad = np.reshape(self.grad, (self.N, 1)) + self.set_grad(grad) self.value = mean def errsq(self): """ Return the variance (= square of the error) of the Covobs """ return float(np.dot(np.transpose(self.grad), np.dot(self.cov, self.grad))) + + def set_cov(self, cov): + self._cov = np.array(cov) + if self._cov.ndim == 0: + self.N = 1 + self._cov = np.diag([self._cov]) + elif self._cov.ndim == 1: + self.N = len(self._cov) + self._cov = np.diag(self._cov) + elif self._cov.ndim == 2: + self.N = self._cov.shape[0] + if self._cov.shape[1] != self.N: + raise Exception('Covariance matrix has to be a square matrix!') + else: + raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') + + def set_grad(self, grad): + self._grad = np.array(grad) + if self._grad.ndim in [0, 1]: + self._grad = np.reshape(self._grad, (self.N, 1)) + elif self._grad.ndim != 2: + raise Exception('Invalid dimension of grad!') + + @property + def cov(self): + return self._cov + + @property + def grad(self): + return self._grad From ec4bb393990199f75e950a03624097c1198c9631 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 17:11:50 +0000 Subject: [PATCH 080/220] test: test for dirac gamma added --- tests/dirac_test.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/dirac_test.py b/tests/dirac_test.py index 28222da6..719490f4 100644 --- a/tests/dirac_test.py +++ b/tests/dirac_test.py @@ -10,3 +10,23 @@ def test_gamma_matrices(): assert np.allclose(matrix @ matrix, np.identity(4)) assert np.allclose(matrix, matrix.T.conj()) assert np.allclose(pe.dirac.gamma5, pe.dirac.gamma[0] @ pe.dirac.gamma[1] @ pe.dirac.gamma[2] @ pe.dirac.gamma[3]) + + +def test_grid_dirac(): + for gamma in ['Identity', + 'Gamma5', + 'GammaX', + 'GammaY', + 'GammaZ', + 'GammaT', + 'GammaXGamma5', + 'GammaYGamma5', + 'GammaZGamma5', + 'GammaTGamma5', + 'SigmaXT', + 'SigmaXY', + 'SigmaXZ', + 'SigmaYT', + 'SigmaYZ', + 'SigmaZT']: + pe.dirac.Grid_gamma(gamma) From fa7702a4adac901520b3500026293cff89114ca7 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 17:14:21 +0000 Subject: [PATCH 081/220] test: dirac test extended to last missing line --- tests/dirac_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/dirac_test.py b/tests/dirac_test.py index 719490f4..0a2c0379 100644 --- a/tests/dirac_test.py +++ b/tests/dirac_test.py @@ -30,3 +30,5 @@ def test_grid_dirac(): 'SigmaYZ', 'SigmaZT']: pe.dirac.Grid_gamma(gamma) + with pytest.raises(Exception): + pe.dirac.Grid_gamma('Not a gamma matrix') From a7363fb88e9d9569880345a998184bbee086a8a0 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 17:31:40 +0000 Subject: [PATCH 082/220] test: tests for exceptional cases extended --- tests/covobs_test.py | 3 +++ tests/obs_test.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/tests/covobs_test.py b/tests/covobs_test.py index c098bd73..bfb21dbf 100644 --- a/tests/covobs_test.py +++ b/tests/covobs_test.py @@ -62,6 +62,9 @@ def test_covobs_name_collision(): my_obs = pe.pseudo_Obs(2.3, 0.2, 'test') with pytest.raises(Exception): summed_obs = my_obs + covobs + covobs2 = pe.cov_Obs(0.3, 0.001, 'test') + with pytest.raises(Exception): + summed_obs = covobs + covobs2 def test_covobs_replica_separator(): diff --git a/tests/obs_test.py b/tests/obs_test.py index ce9d7f41..f5d04832 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -9,6 +9,43 @@ import pytest np.random.seed(0) +def test_Obs_exceptions(): + with pytest.raises(Exception): + pe.Obs([np.random.rand(10)], ['1', '2']) + with pytest.raises(Exception): + pe.Obs([np.random.rand(10)], ['1'], idl=[]) + with pytest.raises(Exception): + pe.Obs([np.random.rand(10), np.random.rand(10)], ['1', '1']) + with pytest.raises(Exception): + pe.Obs([np.random.rand(10), np.random.rand(10)], ['1', 1]) + with pytest.raises(Exception): + pe.Obs([np.random.rand(10)], [1]) + with pytest.raises(Exception): + pe.Obs([np.random.rand(4)], ['name']) + + my_obs = pe.Obs([np.random.rand(6)], ['name']) + my_obs._value = 0.0 + my_obs.details() + with pytest.raises(Exception): + my_obs.plot_tauint() + with pytest.raises(Exception): + my_obs.plot_rho() + with pytest.raises(Exception): + my_obs.plot_rep_dist() + with pytest.raises(Exception): + my_obs.plot_piechart() + with pytest.raises(Exception): + my_obs.gamma_method(S='2.3') + with pytest.raises(Exception): + my_obs.gamma_method(tau_exp=2.3) + my_obs.gamma_method() + my_obs.details() + + my_obs += pe.Obs([np.random.rand(6)], ['name2|r1']) + my_obs += pe.Obs([np.random.rand(6)], ['name2|r2']) + my_obs.gamma_method() + my_obs.details() + def test_dump(): value = np.random.normal(5, 10) dvalue = np.abs(np.random.normal(0, 1)) @@ -311,6 +348,7 @@ def test_overloaded_functions(): def test_utils(): my_obs = pe.pseudo_Obs(1.0, 0.5, 't|r01') my_obs += pe.pseudo_Obs(1.0, 0.5, 't|r02') + str(my_obs) for tau_exp in [0, 5]: my_obs.gamma_method(tau_exp=tau_exp) my_obs.tag = "Test description" @@ -325,6 +363,8 @@ def test_utils(): my_obs.plot_piechart() assert my_obs > (my_obs - 1) assert my_obs < (my_obs + 1) + float(my_obs) + str(my_obs) def test_cobs(): From 968cdf31812835a832edd4fed248d0cb187b76fa Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 17:34:02 +0000 Subject: [PATCH 083/220] fix: deprecated get_fmin call removed in fits --- pyerrors/fits.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 1651cd93..a08dfa64 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -402,7 +402,7 @@ def _prior_fit(x, y, func, priors, silent=False, **kwargs): if not silent: print('chisquare/d.o.f.:', output.chisquare_by_dof) - if not m.get_fmin().is_valid: + if not m.fmin.is_valid: raise Exception('The minimization procedure did not converge.') hess_inv = np.linalg.pinv(jacobian(jacobian(chisqfunc))(params)) From 9ddadaf6b35daf4f875173814a827ef6b9d112cf Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 7 Dec 2021 18:40:36 +0000 Subject: [PATCH 084/220] fix: fits and root now work when the value of the zeroth input is exactly zero. Tests extended. --- pyerrors/fits.py | 6 +++--- pyerrors/roots.py | 3 ++- tests/fits_test.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index a08dfa64..01a98c98 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -301,7 +301,7 @@ def total_least_squares(x, y, func, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda my_var, **kwargs: my_var[0] / x.ravel()[0].value * out.beta[i], list(x.ravel()) + list(y), man_grad=list(deriv_x[i]) + list(deriv_y[i]))) + result.append(derived_observable(lambda my_var, **kwargs: (my_var[0] + np.finfo(np.float64).eps) / (x.ravel()[0].value + np.finfo(np.float64).eps) * out.beta[i], list(x.ravel()) + list(y), man_grad=list(deriv_x[i]) + list(deriv_y[i]))) output.fit_parameters = result + const_par @@ -418,7 +418,7 @@ def _prior_fit(x, y, func, priors, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0] / y[0].value * params[i], list(y) + list(loc_priors), man_grad=list(deriv[i]))) + result.append(derived_observable(lambda x, **kwargs: (x[0] + np.finfo(np.float64).eps) / (y[0].value + np.finfo(np.float64).eps) * params[i], list(y) + list(loc_priors), man_grad=list(deriv[i]))) output.fit_parameters = result output.chisquare = chisqfunc(np.asarray(params)) @@ -612,7 +612,7 @@ def _standard_fit(x, y, func, silent=False, **kwargs): result = [] for i in range(n_parms): - result.append(derived_observable(lambda x, **kwargs: x[0] / y[0].value * fit_result.x[i], list(y), man_grad=list(deriv[i]))) + result.append(derived_observable(lambda x, **kwargs: (x[0] + np.finfo(np.float64).eps) / (y[0].value + np.finfo(np.float64).eps) * fit_result.x[i], list(y), man_grad=list(deriv[i]))) output.fit_parameters = result + const_par diff --git a/pyerrors/roots.py b/pyerrors/roots.py index 1cb7b46f..e26b44e7 100644 --- a/pyerrors/roots.py +++ b/pyerrors/roots.py @@ -1,3 +1,4 @@ +import numpy as np import scipy.optimize from autograd import jacobian from .obs import derived_observable @@ -33,5 +34,5 @@ def find_root(d, func, guess=1.0, **kwargs): da = jacobian(lambda u, v: func(v, u))(d.value, root[0]) deriv = - da / dx - res = derived_observable(lambda x, **kwargs: x[0] / d.value * root[0], [d], man_grad=[deriv]) + res = derived_observable(lambda x, **kwargs: (x[0] + np.finfo(np.float64).eps) / (d.value + np.finfo(np.float64).eps) * root[0], [d], man_grad=[deriv]) return res diff --git a/tests/fits_test.py b/tests/fits_test.py index 53a23dc9..78cb7c6b 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -10,6 +10,26 @@ import pytest np.random.seed(0) +def test_fit_lin(): + x = [0, 2] + y = [pe.pseudo_Obs(0, 0.1, 'ensemble'), + pe.pseudo_Obs(2, 0.1, 'ensemble')] + + res = pe.fits.fit_lin(x, y) + + assert res[0] == y[0] + assert res[1] == (y[1] - y[0]) / (x[1] - x[0]) + + x = y = [pe.pseudo_Obs(0, 0.1, 'ensemble'), + pe.pseudo_Obs(2, 0.1, 'ensemble')] + + res = pe.fits.fit_lin(x, y) + + m = (y[1] - y[0]) / (x[1] - x[0]) + assert res[0] == y[1] - x[1] * m + assert res[1] == m + + def test_least_squares(): dim = 10 + int(30 * np.random.rand()) x = np.arange(dim) @@ -32,6 +52,10 @@ def test_least_squares(): out = pe.least_squares(x, oy, func, expected_chisquare=True, resplot=True, qqplot=True) beta = out.fit_parameters + str(out) + repr(out) + len(out) + for i in range(2): beta[i].gamma_method(S=1.0) assert math.isclose(beta[i].value, popt[i], abs_tol=1e-5) @@ -136,6 +160,10 @@ def test_total_least_squares(): out = pe.total_least_squares(ox, oy, func, expected_chisquare=True) beta = out.fit_parameters + str(out) + repr(out) + len(out) + for i in range(2): beta[i].gamma_method(S=1.0) assert math.isclose(beta[i].value, output.beta[i], rel_tol=1e-5) From a5cf0270d37867599c2a588ddfeab0891a7eb75f Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Wed, 8 Dec 2021 08:55:40 +0100 Subject: [PATCH 085/220] Hidden _set_cov and _set_grad, modified test for equality of covs --- pyerrors/covobs.py | 8 ++++---- pyerrors/obs.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyerrors/covobs.py b/pyerrors/covobs.py index 9343dc41..2c8f81fc 100644 --- a/pyerrors/covobs.py +++ b/pyerrors/covobs.py @@ -20,7 +20,7 @@ class Covobs: grad : list or array Gradient of the Covobs wrt. the means belonging to cov. """ - self.set_cov(cov) + self._set_cov(cov) if '|' in name: raise Exception("Covobs name must not contain replica separator '|'.") self.name = name @@ -36,7 +36,7 @@ class Covobs: self._grad = np.zeros((self.N, 1)) self._grad[pos] = 1. else: - self.set_grad(grad) + self._set_grad(grad) self.value = mean def errsq(self): @@ -44,7 +44,7 @@ class Covobs: """ return float(np.dot(np.transpose(self.grad), np.dot(self.cov, self.grad))) - def set_cov(self, cov): + def _set_cov(self, cov): self._cov = np.array(cov) if self._cov.ndim == 0: self.N = 1 @@ -59,7 +59,7 @@ class Covobs: else: raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') - def set_grad(self, grad): + def _set_grad(self, grad): self._grad = np.array(grad) if self._grad.ndim in [0, 1]: self._grad = np.reshape(self._grad, (self.N, 1)) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 934b2518..c27670ed 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1069,7 +1069,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): for o in raveled_data: for name in o.cov_names: if name in allcov: - if not np.allclose(allcov[name], o.covobs[name].cov, rtol=1e-14, atol=1e-14): + if not np.allclose(allcov[name], o.covobs[name].cov): raise Exception('Inconsistent covariance matrices for %s!' % (name)) else: allcov[name] = o.covobs[name].cov From 1db59a9fdc91d8117efd1b86fbacaf42c976b060 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 14:34:48 +0000 Subject: [PATCH 086/220] feat: derived_observable now uses covobs when an input is not an Obs. This should result in a small speedup for all operations as one iteration over all data can be dropped. --- pyerrors/obs.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index c27670ed..6188dc4f 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1053,17 +1053,9 @@ def derived_observable(func, data, array_mode=False, **kwargs): raveled_data = data.ravel() # Workaround for matrix operations containing non Obs data - # TODO: Find more elegant solution here. - for i_data in raveled_data: - if isinstance(i_data, Obs): - first_name = i_data.names[0] - first_shape = i_data.shape[first_name] - first_idl = i_data.idl[first_name] - break - for i in range(len(raveled_data)): if isinstance(raveled_data[i], (int, float)): - raveled_data[i] = Obs([raveled_data[i] + np.zeros(first_shape)], [first_name], idl=[first_idl]) + raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "~#dummy_data#~") allcov = {} for o in raveled_data: From 5ced94e08635c5e991853d577ced10f2b66b10ee Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 15:00:44 +0000 Subject: [PATCH 087/220] feat: check for non Obs objects in derived observable optimized and only performed in array mode --- pyerrors/obs.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 6188dc4f..7b13d8dd 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1053,9 +1053,11 @@ def derived_observable(func, data, array_mode=False, **kwargs): raveled_data = data.ravel() # Workaround for matrix operations containing non Obs data - for i in range(len(raveled_data)): - if isinstance(raveled_data[i], (int, float)): - raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "~#dummy_data#~") + if array_mode is True: + if not all(isinstance(x, Obs) for x in raveled_data): + for i in range(len(raveled_data)): + if isinstance(raveled_data[i], (int, float)): + raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "###dummy_entry###") allcov = {} for o in raveled_data: From 3f0040a81545b7ca0847d0718d749fe49db1253d Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 15:09:40 +0000 Subject: [PATCH 088/220] refactor: generation of new r_values in derived_observable simplified. --- pyerrors/obs.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 7b13d8dd..681a398b 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1079,9 +1079,9 @@ def derived_observable(func, data, array_mode=False, **kwargs): for name in new_sample_names: idl = [] for i_data in raveled_data: - tmp = i_data.idl.get(name) - if tmp is not None: - idl.append(tmp) + tmp_idl = i_data.idl.get(name) + if tmp_idl is not None: + idl.append(tmp_idl) new_idl_d[name] = _merge_idx(idl) if not is_merged[name]: is_merged[name] = (1 != len(set([len(idx) for idx in [*idl, new_idl_d[name]]]))) @@ -1101,10 +1101,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): for name in new_sample_names: tmp_values = np.zeros(n_obs) for i, item in enumerate(raveled_data): - tmp = item.r_values.get(name) - if tmp is None: - tmp = item.value - tmp_values[i] = tmp + tmp_values[i] = item.r_values.get(name, item.value) if multi > 0: tmp_values = np.array(tmp_values).reshape(data.shape) new_r_values[name] = func(tmp_values, **kwargs) From 140268c1c93190d1e8754ad276355e95249e833b Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 15:17:32 +0000 Subject: [PATCH 089/220] refactor: two loops over new_sample_names merged. --- pyerrors/obs.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 681a398b..60441456 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1075,16 +1075,6 @@ def derived_observable(func, data, array_mode=False, **kwargs): is_merged = {name: (len(list(filter(lambda o: o.is_merged.get(name, False) is True, raveled_data))) > 0) for name in new_sample_names} reweighted = len(list(filter(lambda o: o.reweighted is True, raveled_data))) > 0 - new_idl_d = {} - for name in new_sample_names: - idl = [] - for i_data in raveled_data: - tmp_idl = i_data.idl.get(name) - if tmp_idl is not None: - idl.append(tmp_idl) - new_idl_d[name] = _merge_idx(idl) - if not is_merged[name]: - is_merged[name] = (1 != len(set([len(idx) for idx in [*idl, new_idl_d[name]]]))) if data.ndim == 1: values = np.array([o.value for o in data]) @@ -1098,13 +1088,21 @@ def derived_observable(func, data, array_mode=False, **kwargs): multi = 1 new_r_values = {} + new_idl_d = {} for name in new_sample_names: + idl = [] tmp_values = np.zeros(n_obs) for i, item in enumerate(raveled_data): tmp_values[i] = item.r_values.get(name, item.value) + tmp_idl = item.idl.get(name) + if tmp_idl is not None: + idl.append(tmp_idl) if multi > 0: tmp_values = np.array(tmp_values).reshape(data.shape) new_r_values[name] = func(tmp_values, **kwargs) + new_idl_d[name] = _merge_idx(idl) + if not is_merged[name]: + is_merged[name] = (1 != len(set([len(idx) for idx in [*idl, new_idl_d[name]]]))) if 'man_grad' in kwargs: deriv = np.asarray(kwargs.get('man_grad')) From 52705d8fcdbf320c02ce69a52a1a0bd1d1d24db0 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 15:26:27 +0000 Subject: [PATCH 090/220] refactor: minor simplifications in derived_observable --- pyerrors/obs.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 60441456..a2deda6d 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1057,7 +1057,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): if not all(isinstance(x, Obs) for x in raveled_data): for i in range(len(raveled_data)): if isinstance(raveled_data[i], (int, float)): - raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "###dummy_entry###") + raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "###dummy_covobs###") allcov = {} for o in raveled_data: @@ -1083,9 +1083,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): new_values = func(values, **kwargs) - multi = 0 - if isinstance(new_values, np.ndarray): - multi = 1 + multi = int(isinstance(new_values, np.ndarray)) new_r_values = {} new_idl_d = {} @@ -1137,13 +1135,11 @@ def derived_observable(func, data, array_mode=False, **kwargs): if array_mode is True: - new_covobs_lengths = dict(set([y for x in [[(n, o.covobs[n].N) for n in o.cov_names] for o in raveled_data] for y in x])) - class _Zero_grad(): def __init__(self, N): - # self.grad = np.zeros(N) self.grad = np.zeros((N, 1)) + new_covobs_lengths = dict(set([y for x in [[(n, o.covobs[n].N) for n in o.cov_names] for o in raveled_data] for y in x])) d_extracted = {} g_extracted = {} for name in new_sample_names: From 2702b5519d0e3dc2124867a4771f3ffc9b6106bb Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 16:11:44 +0000 Subject: [PATCH 091/220] refactor: loop and if clause eliminated in Obs.__init__ --- pyerrors/obs.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index a2deda6d..4247de8e 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -119,6 +119,7 @@ class Obs: for name, sample in sorted(zip(names, samples)): self.idl[name] = range(1, len(sample) + 1) + self._value = 0 if means is not None: for name, sample, mean in sorted(zip(names, samples, means)): self.shape[name] = len(self.idl[name]) @@ -126,6 +127,7 @@ class Obs: raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) self.r_values[name] = mean self.deltas[name] = sample + self.N = sum(list(self.shape.values())) else: for name, sample in sorted(zip(names, samples)): self.shape[name] = len(self.idl[name]) @@ -133,14 +135,12 @@ class Obs: raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) self.r_values[name] = np.mean(sample) self.deltas[name] = sample - self.r_values[name] - self.is_merged = {} - self.N = sum(list(self.shape.values())) - - self._value = 0 - if means is None: - for name in self.names: self._value += self.shape[name] * self.r_values[name] + self.N = sum(list(self.shape.values())) self._value /= self.N + + self.is_merged = {} + else: self._value = 0 self.is_merged = {} From ae53daa915d5c3675c1c81461fe6fd963ddf3468 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 16:14:48 +0000 Subject: [PATCH 092/220] refactor: calculation of N in Obs.__init__ optimized --- pyerrors/obs.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 4247de8e..c24da74a 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -120,23 +120,24 @@ class Obs: self.idl[name] = range(1, len(sample) + 1) self._value = 0 + self.N = 0 if means is not None: for name, sample, mean in sorted(zip(names, samples, means)): self.shape[name] = len(self.idl[name]) + self.N += self.shape[name] if len(sample) != self.shape[name]: raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) self.r_values[name] = mean self.deltas[name] = sample - self.N = sum(list(self.shape.values())) else: for name, sample in sorted(zip(names, samples)): self.shape[name] = len(self.idl[name]) + self.N += self.shape[name] if len(sample) != self.shape[name]: raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) self.r_values[name] = np.mean(sample) self.deltas[name] = sample - self.r_values[name] self._value += self.shape[name] * self.r_values[name] - self.N = sum(list(self.shape.values())) self._value /= self.N self.is_merged = {} From 5c9a521c295ef136f5a5227af1e762efa7ecdb4a Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 19:54:03 +0000 Subject: [PATCH 093/220] ci: scheduled pytest workflow once a day. --- .github/workflows/pytest.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 3c30013f..db0b8de1 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -6,6 +6,8 @@ on: - master - develop pull_request: + schedule: + - cron: '0 4 * * *' jobs: pytest: From 083247389b2d6633785d330b84f3408c632cee88 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 22:33:08 +0000 Subject: [PATCH 094/220] fix: bug occurring when Corr.fit is called without fit range fixed --- pyerrors/correlators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index a63a2b49..cdf4a339 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -443,7 +443,7 @@ class Corr: if self.prange: fitrange = self.prange else: - fitrange = [0, self.T] + fitrange = [0, self.T - 1] xs = [x for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None] ys = [self.content[x][0] for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None] From a9e80989fe4283367e730c00b5acae09996d6abd Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 22:37:38 +0000 Subject: [PATCH 095/220] test: test for Corr.fit added --- tests/correlators_test.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/correlators_test.py b/tests/correlators_test.py index d2bb6a2c..f27bba54 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -79,6 +79,18 @@ def test_T_symmetry(): T_symmetric = my_corr.T_symmetry(my_corr) +def test_fit_correlator(): + my_corr = pe.correlators.Corr([pe.pseudo_Obs(1.01324, 0.05, 't'), pe.pseudo_Obs(2.042345, 0.0004, 't')]) + + def f(a, x): + y = a[0] + a[1] * x + return y + + fit_res = my_corr.fit(f) + assert fit_res[0] == my_corr[0] + assert fit_res[1] == my_corr[1] - my_corr[0] + + def test_utility(): corr_content = [] for t in range(8): From fc25ec692910a0c838b7b47ba3e49655150fd961 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 8 Dec 2021 22:42:13 +0000 Subject: [PATCH 096/220] test: test for Corr.plateau added --- tests/correlators_test.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/correlators_test.py b/tests/correlators_test.py index f27bba54..6c3418f8 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -91,6 +91,14 @@ def test_fit_correlator(): assert fit_res[1] == my_corr[1] - my_corr[0] +def test_plateau(): + my_corr = pe.correlators.Corr([pe.pseudo_Obs(1.01324, 0.05, 't'), pe.pseudo_Obs(1.042345, 0.008, 't')]) + + my_corr.plateau([0, 1], method="fit") + my_corr.plateau([0, 1], method="mean") + with pytest.raises(Exception): + my_corr.plateau() + def test_utility(): corr_content = [] for t in range(8): From 53cea6267d75dd01f7e65431e640016c77eebaf2 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 07:36:34 +0000 Subject: [PATCH 097/220] test: additional test cases for reweighting and pseudo_Obs added --- tests/obs_test.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/obs_test.py b/tests/obs_test.py index f5d04832..cedad117 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -346,6 +346,7 @@ def test_overloaded_functions(): def test_utils(): + zero_pseudo_obs = pe.pseudo_Obs(1.0, 0.0, 'null') my_obs = pe.pseudo_Obs(1.0, 0.5, 't|r01') my_obs += pe.pseudo_Obs(1.0, 0.5, 't|r02') str(my_obs) @@ -412,6 +413,15 @@ def test_reweighting(): r_obs2 = r_obs[0] * my_obs assert r_obs2.reweighted + my_irregular_obs = pe.Obs([np.random.rand(500)], ['t'], idl=[range(1, 1001, 2)]) + assert not my_irregular_obs.reweighted + r_obs = pe.reweight(my_obs, [my_irregular_obs], all_configs=True) + r_obs = pe.reweight(my_obs, [my_irregular_obs], all_configs=False) + r_obs = pe.reweight(my_obs, [my_obs]) + assert r_obs[0].reweighted + r_obs2 = r_obs[0] * my_obs + assert r_obs2.reweighted + def test_merge_obs(): my_obs1 = pe.Obs([np.random.rand(100)], ['t']) From f30fcbd4d9c6e791928900de7902cf72b7924ecb Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 07:37:42 +0000 Subject: [PATCH 098/220] ci: pytest workflow scheduled to run once a month. --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index db0b8de1..b9d60c7a 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -7,7 +7,7 @@ on: - develop pull_request: schedule: - - cron: '0 4 * * *' + - cron: '0 4 1 * *' jobs: pytest: From 8879e6b3829bb4730bae609d0c5a949ac69a5472 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 09:44:50 +0000 Subject: [PATCH 099/220] refactor: check in Obs.__init__ withe means!=None removed which could never be reached. --- pyerrors/obs.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index c24da74a..168f7292 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -125,8 +125,6 @@ class Obs: for name, sample, mean in sorted(zip(names, samples, means)): self.shape[name] = len(self.idl[name]) self.N += self.shape[name] - if len(sample) != self.shape[name]: - raise Exception('Incompatible samples and idx for %s: %d vs. %d' % (name, len(sample), self.shape[name])) self.r_values[name] = mean self.deltas[name] = sample else: From b3a021985b3d477349324b9fc8300856b1ba1af6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 09:45:29 +0000 Subject: [PATCH 100/220] test: test for exceptions in Obs.__init__ extended --- tests/obs_test.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/obs_test.py b/tests/obs_test.py index cedad117..8fbfa43d 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -22,6 +22,12 @@ def test_Obs_exceptions(): pe.Obs([np.random.rand(10)], [1]) with pytest.raises(Exception): pe.Obs([np.random.rand(4)], ['name']) + with pytest.raises(Exception): + pe.Obs([np.random.rand(5)], ['1'], idl=[[5, 3, 2 ,4 ,1]]) + with pytest.raises(Exception): + pe.Obs([np.random.rand(5)], ['1'], idl=['t']) + with pytest.raises(Exception): + pe.Obs([np.random.rand(5)], ['1'], idl=[range(1, 8)]) my_obs = pe.Obs([np.random.rand(6)], ['name']) my_obs._value = 0.0 From 5a8b6483c8075286e419aad2a465e9d5f18fef6c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 10:05:20 +0000 Subject: [PATCH 101/220] test: tests for covobs initialization added --- tests/covobs_test.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/covobs_test.py b/tests/covobs_test.py index bfb21dbf..6f0e47f1 100644 --- a/tests/covobs_test.py +++ b/tests/covobs_test.py @@ -70,3 +70,23 @@ def test_covobs_name_collision(): def test_covobs_replica_separator(): with pytest.raises(Exception): covobs = pe.cov_Obs(0.5, 0.002, 'test|r2') + + +def test_covobs_init(): + covobs = pe.cov_Obs(0.5, 0.002, 'test') + covobs = pe.cov_Obs([1, 2], [0.1, 0.2], 'test') + covobs = pe.cov_Obs([1, 2], np.array([0.1, 0.2]), 'test') + covobs = pe.cov_Obs([1, 2], [[0.1, 0.2], [0.1, 0.2]], 'test') + covobs = pe.cov_Obs([1, 2], np.array([[0.1, 0.2], [0.1, 0.2]]), 'test') + + + +def test_covobs_exceptions(): + with pytest.raises(Exception): + covobs = pe.cov_Obs(0.1, [[0.1, 0.2], [0.1, 0.2]], 'test') + with pytest.raises(Exception): + covobs = pe.cov_Obs(0.1, np.array([[0.1, 0.2], [0.1, 0.2]]), 'test') + with pytest.raises(Exception): + covobs = pe.cov_Obs([0.5, 0.1], np.array([[2, 1, 3], [1, 2, 3]]), 'test') + with pytest.raises(Exception): + covobs = pe.cov_Obs([0.5, 0.1], np.random.random((2, 2, 2)), 'test') From 87c50f54c083e0e3d4d83a9aff52f8b53607aaeb Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 10:11:31 +0000 Subject: [PATCH 102/220] refactor!: fit_general deprecated and moved to tests --- pyerrors/fits.py | 105 +-------------------------------------------- tests/fits_test.py | 101 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 101 insertions(+), 105 deletions(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 01a98c98..ddebdb91 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -646,10 +646,10 @@ def fit_lin(x, y, **kwargs): return y if all(isinstance(n, Obs) for n in x): - out = odr_fit(x, y, f, **kwargs) + out = total_least_squares(x, y, f, **kwargs) return out.fit_parameters elif all(isinstance(n, float) or isinstance(n, int) for n in x) or isinstance(x, np.ndarray): - out = standard_fit(x, y, f, **kwargs) + out = least_squares(x, y, f, **kwargs) return out.fit_parameters else: raise Exception('Unsupported types for x') @@ -785,104 +785,3 @@ def ks_test(obs=None): plt.draw() print(scipy.stats.kstest(Qs, 'uniform')) - - -def fit_general(x, y, func, silent=False, **kwargs): - """Performs a non-linear fit to y = func(x) and returns a list of Obs corresponding to the fit parameters. - - Plausibility of the results should be checked. To control the numerical differentiation - the kwargs of numdifftools.step_generators.MaxStepGenerator can be used. - - func has to be of the form - - def func(a, x): - y = a[0] + a[1] * x + a[2] * np.sinh(x) - return y - - y has to be a list of Obs, the dvalues of the Obs are used as yerror for the fit. - x can either be a list of floats in which case no xerror is assumed, or - a list of Obs, where the dvalues of the Obs are used as xerror for the fit. - - Keyword arguments - ----------------- - silent -- If true all output to the console is omitted (default False). - initial_guess -- can provide an initial guess for the input parameters. Relevant for non-linear fits - with many parameters. - """ - - warnings.warn("New fit functions with exact error propagation are now available as alternative.", DeprecationWarning) - - if not callable(func): - raise TypeError('func has to be a function.') - - for i in range(10): - try: - func(np.arange(i), 0) - except: - pass - else: - break - n_parms = i - if not silent: - print('Fit with', n_parms, 'parameters') - - global print_output, beta0 - print_output = 1 - if 'initial_guess' in kwargs: - beta0 = kwargs.get('initial_guess') - if len(beta0) != n_parms: - raise Exception('Initial guess does not have the correct length.') - else: - beta0 = np.arange(n_parms) - - if len(x) != len(y): - raise Exception('x and y have to have the same length') - - if all(isinstance(n, Obs) for n in x): - obs = x + y - x_constants = None - xerr = [o.dvalue for o in x] - yerr = [o.dvalue for o in y] - elif all(isinstance(n, float) or isinstance(n, int) for n in x) or isinstance(x, np.ndarray): - obs = y - x_constants = x - xerr = None - yerr = [o.dvalue for o in y] - else: - raise Exception('Unsupported types for x') - - def do_the_fit(obs, **kwargs): - - global print_output, beta0 - - func = kwargs.get('function') - yerr = kwargs.get('yerr') - length = len(yerr) - - xerr = kwargs.get('xerr') - - if length == len(obs): - assert 'x_constants' in kwargs - data = RealData(kwargs.get('x_constants'), obs, sy=yerr) - fit_type = 2 - elif length == len(obs) // 2: - data = RealData(obs[:length], obs[length:], sx=xerr, sy=yerr) - fit_type = 0 - else: - raise Exception('x and y do not fit together.') - - model = Model(func) - - odr = ODR(data, model, beta0, partol=np.finfo(np.float64).eps) - odr.set_job(fit_type=fit_type, deriv=1) - output = odr.run() - if print_output and not silent: - print(*output.stopreason) - print('chisquare/d.o.f.:', output.res_var) - print_output = 0 - beta0 = output.beta - return output.beta[kwargs.get('n')] - res = [] - for n in range(n_parms): - res.append(derived_observable(do_the_fit, obs, function=func, xerr=xerr, yerr=yerr, x_constants=x_constants, num_grad=True, n=n, **kwargs)) - return res diff --git a/tests/fits_test.py b/tests/fits_test.py index 78cb7c6b..54c15ef4 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -232,8 +232,7 @@ def test_odr_derivatives(): out = pe.total_least_squares(x, y, func) fit1 = out.fit_parameters - with pytest.warns(DeprecationWarning): - tfit = pe.fits.fit_general(x, y, func, base_step=0.1, step_ratio=1.1, num_steps=20) + tfit = fit_general(x, y, func, base_step=0.1, step_ratio=1.1, num_steps=20) assert np.abs(np.max(np.array(list(fit1[1].deltas.values())) - np.array(list(tfit[1].deltas.values())))) < 10e-8 @@ -274,3 +273,101 @@ def test_r_value_persistence(): assert np.isclose(fitp[1].value, fitp[1].r_values['a']) assert np.isclose(fitp[1].value, fitp[1].r_values['b']) + +def fit_general(x, y, func, silent=False, **kwargs): + """Performs a non-linear fit to y = func(x) and returns a list of Obs corresponding to the fit parameters. + + Plausibility of the results should be checked. To control the numerical differentiation + the kwargs of numdifftools.step_generators.MaxStepGenerator can be used. + + func has to be of the form + + def func(a, x): + y = a[0] + a[1] * x + a[2] * np.sinh(x) + return y + + y has to be a list of Obs, the dvalues of the Obs are used as yerror for the fit. + x can either be a list of floats in which case no xerror is assumed, or + a list of Obs, where the dvalues of the Obs are used as xerror for the fit. + + Keyword arguments + ----------------- + silent -- If true all output to the console is omitted (default False). + initial_guess -- can provide an initial guess for the input parameters. Relevant for non-linear fits + with many parameters. + """ + + if not callable(func): + raise TypeError('func has to be a function.') + + for i in range(10): + try: + func(np.arange(i), 0) + except: + pass + else: + break + n_parms = i + if not silent: + print('Fit with', n_parms, 'parameters') + + global print_output, beta0 + print_output = 1 + if 'initial_guess' in kwargs: + beta0 = kwargs.get('initial_guess') + if len(beta0) != n_parms: + raise Exception('Initial guess does not have the correct length.') + else: + beta0 = np.arange(n_parms) + + if len(x) != len(y): + raise Exception('x and y have to have the same length') + + if all(isinstance(n, pe.Obs) for n in x): + obs = x + y + x_constants = None + xerr = [o.dvalue for o in x] + yerr = [o.dvalue for o in y] + elif all(isinstance(n, float) or isinstance(n, int) for n in x) or isinstance(x, np.ndarray): + obs = y + x_constants = x + xerr = None + yerr = [o.dvalue for o in y] + else: + raise Exception('Unsupported types for x') + + def do_the_fit(obs, **kwargs): + + global print_output, beta0 + + func = kwargs.get('function') + yerr = kwargs.get('yerr') + length = len(yerr) + + xerr = kwargs.get('xerr') + + if length == len(obs): + assert 'x_constants' in kwargs + data = RealData(kwargs.get('x_constants'), obs, sy=yerr) + fit_type = 2 + elif length == len(obs) // 2: + data = RealData(obs[:length], obs[length:], sx=xerr, sy=yerr) + fit_type = 0 + else: + raise Exception('x and y do not fit together.') + + model = Model(func) + + odr = ODR(data, model, beta0, partol=np.finfo(np.float64).eps) + odr.set_job(fit_type=fit_type, deriv=1) + output = odr.run() + if print_output and not silent: + print(*output.stopreason) + print('chisquare/d.o.f.:', output.res_var) + print_output = 0 + beta0 = output.beta + return output.beta[kwargs.get('n')] + res = [] + for n in range(n_parms): + res.append(pe.derived_observable(do_the_fit, obs, function=func, xerr=xerr, yerr=yerr, x_constants=x_constants, num_grad=True, n=n, **kwargs)) + return res From c2ff8c715abb7447bc0cebb622f41e1df3fe8e58 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 10:20:13 +0000 Subject: [PATCH 103/220] refactor!: ks_test removed from develop for now. --- pyerrors/fits.py | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index ddebdb91..331e7b0b 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -1,4 +1,3 @@ -import gc from collections.abc import Sequence import warnings import numpy as np @@ -739,49 +738,3 @@ def error_band(x, func, beta): err = np.array(err) return err - - -def ks_test(obs=None): - """Performs a Kolmogorov–Smirnov test for the Q-values of all fit object. - - If no list is given all Obs in memory are used. - - Disclaimer: The determination of the individual Q-values as well as this function have not been tested yet. - """ - - raise Exception('Not yet implemented') - - if obs is None: - obs_list = [] - for obj in gc.get_objects(): - if isinstance(obj, Obs): - obs_list.append(obj) - else: - obs_list = obs - - # TODO: Rework to apply to Q-values of all fits in memory - Qs = [] - for obs_i in obs_list: - for ens in obs_i.e_names: - if obs_i.e_Q[ens] is not None: - Qs.append(obs_i.e_Q[ens]) - - bins = len(Qs) - x = np.arange(0, 1.001, 0.001) - plt.plot(x, x, 'k', zorder=1) - plt.xlim(0, 1) - plt.ylim(0, 1) - plt.xlabel('Q value') - plt.ylabel('Cumulative probability') - plt.title(str(bins) + ' Q values') - - n = np.arange(1, bins + 1) / np.float64(bins) - Xs = np.sort(Qs) - plt.step(Xs, n) - diffs = n - Xs - loc_max_diff = np.argmax(np.abs(diffs)) - loc = Xs[loc_max_diff] - plt.annotate(s='', xy=(loc, loc), xytext=(loc, loc + diffs[loc_max_diff]), arrowprops=dict(arrowstyle='<->', shrinkA=0, shrinkB=0)) - plt.draw() - - print(scipy.stats.kstest(Qs, 'uniform')) From 071d550d1ddf1394a1c62de8e10eaa78f7ec18a9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 12:36:28 +0000 Subject: [PATCH 104/220] feat: priors in fits replaced by covobs, random hash added to avoid prior collisions. --- pyerrors/fits.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 331e7b0b..03df9f50 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -10,7 +10,7 @@ from scipy.odr import ODR, Model, RealData import iminuit from autograd import jacobian from autograd import elementwise_grad as egrad -from .obs import Obs, derived_observable, covariance, pseudo_Obs +from .obs import Obs, derived_observable, covariance, cov_Obs class Fit_result(Sequence): @@ -352,7 +352,7 @@ def _prior_fit(x, y, func, priors, silent=False, **kwargs): loc_priors.append(i_prior) else: loc_val, loc_dval = extract_val_and_dval(i_prior) - loc_priors.append(pseudo_Obs(loc_val, loc_dval, 'p' + str(i_n))) + loc_priors.append(cov_Obs(loc_val, loc_dval ** 2, '#prior' + str(i_n) + f"_{np.random.randint(2147483647):010d}")) output.priors = loc_priors From e213b374138c46e10998b7c7d9d9ebafea2b4265 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 12:50:52 +0000 Subject: [PATCH 105/220] fix: prior fit routine adjusted to work with iminuit version >= 2 --- pyerrors/fits.py | 6 ++++-- setup.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 03df9f50..023aaf53 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -386,13 +386,15 @@ def _prior_fit(x, y, func, priors, silent=False, **kwargs): if not silent: print('Method: migrad') - m = iminuit.Minuit.from_array_func(chisqfunc, x0, error=np.asarray(x0) * 0.01, errordef=1, print_level=0) + m = iminuit.Minuit(chisqfunc, x0) + m.errordef = 1 + m.print_level = 0 if 'tol' in kwargs: m.tol = kwargs.get('tol') else: m.tol = 1e-4 m.migrad() - params = np.asarray(m.values.values()) + params = np.asarray(m.values) output.chisquare_by_dof = m.fval / len(x) diff --git a/setup.py b/setup.py index d632fdcb..61355086 100644 --- a/setup.py +++ b/setup.py @@ -9,5 +9,5 @@ setup(name='pyerrors', author_email='fabian.joswig@ed.ac.uk', packages=find_packages(), python_requires='>=3.6.0', - install_requires=['numpy>=1.16', 'autograd>=1.2', 'numdifftools', 'matplotlib>=3.3', 'scipy', 'iminuit<2', 'h5py'] + install_requires=['numpy>=1.16', 'autograd>=1.2', 'numdifftools', 'matplotlib>=3.3', 'scipy', 'iminuit>=2', 'h5py'] ) From 352b93ee2c5419435828a81c794ce8ed511832c9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 13:06:49 +0000 Subject: [PATCH 106/220] fix: the covariance functions now correctly check whether the gamma_method was run. Tests added. --- pyerrors/obs.py | 4 ++-- tests/covobs_test.py | 1 + tests/fits_test.py | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 168f7292..c29c1bd8 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1358,7 +1358,7 @@ def covariance(obs1, obs2, correlation=False, **kwargs): if (1 != len(set([len(idx) for idx in [obs1.idl[name], obs2.idl[name], _merge_idx([obs1.idl[name], obs2.idl[name]])]]))): raise Exception('Shapes of ensemble', name, 'do not fit') - if not hasattr(obs1, 'e_names') or not hasattr(obs2, 'e_names'): + if not hasattr(obs1, 'e_dvalue') or not hasattr(obs2, 'e_dvalue'): raise Exception('The gamma method has to be applied to both Obs first.') dvalue = 0 @@ -1452,7 +1452,7 @@ def covariance2(obs1, obs2, correlation=False, **kwargs): if set(obs1.names).isdisjoint(set(obs2.names)): return 0. - if not hasattr(obs1, 'e_names') or not hasattr(obs2, 'e_names'): + if not hasattr(obs1, 'e_dvalue') or not hasattr(obs2, 'e_dvalue'): raise Exception('The gamma method has to be applied to both Obs first.') dvalue = 0 diff --git a/tests/covobs_test.py b/tests/covobs_test.py index 6f0e47f1..beedb54c 100644 --- a/tests/covobs_test.py +++ b/tests/covobs_test.py @@ -37,6 +37,7 @@ def test_covobs(): op.gamma_method() assert(np.isclose(oc.value, op.value, rtol=1e-14, atol=1e-14)) + [o.gamma_method() for o in cl] assert(pe.covariance(cl[0], cl[1]) == cov[0][1]) assert(pe.covariance2(cl[0], cl[1]) == cov[1][0]) diff --git a/tests/fits_test.py b/tests/fits_test.py index 54c15ef4..b37abc25 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -274,6 +274,41 @@ def test_r_value_persistence(): assert np.isclose(fitp[1].value, fitp[1].r_values['b']) +def test_prior_fit(): + def f(a, x): + return a[0] + a[1] * x + + a = pe.pseudo_Obs(0.0, 0.1, 'a') + b = pe.pseudo_Obs(1.0, 0.2, 'a') + + y = [a, b] + with pytest.raises(Exception): + fitp = pe.fits.least_squares([0, 1], 1 * np.array(y), f, priors=['0.0(8)', '1.0(8)']) + + [o.gamma_method() for o in y] + + fitp = pe.fits.least_squares([0, 1], y, f, priors=['0.0(8)', '1.0(8)']) + fitp = pe.fits.least_squares([0, 1], y, f, priors=y, resplot=True, qqplot=True) + + +def test_error_band(): + def f(a, x): + return a[0] + a[1] * x + + a = pe.pseudo_Obs(0.0, 0.1, 'a') + b = pe.pseudo_Obs(1.0, 0.2, 'a') + + x = [0, 1] + y = [a, b] + + fitp = pe.fits.least_squares(x, y, f) + + with pytest.raises(Exception): + pe.fits.error_band(x, f, fitp.fit_parameters) + fitp.gamma_method() + pe.fits.error_band(x, f, fitp.fit_parameters) + + def fit_general(x, y, func, silent=False, **kwargs): """Performs a non-linear fit to y = func(x) and returns a list of Obs corresponding to the fit parameters. From 860852b4d8631acf609f4e693c2d50d55eed58f6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 13:25:06 +0000 Subject: [PATCH 107/220] test: tests slightly extended to improve coverage. --- tests/covobs_test.py | 1 + tests/obs_test.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/covobs_test.py b/tests/covobs_test.py index beedb54c..513fb351 100644 --- a/tests/covobs_test.py +++ b/tests/covobs_test.py @@ -11,6 +11,7 @@ def test_covobs(): name = 'Covariance' co = pe.cov_Obs(val, cov, name) co.gamma_method() + co.details() assert (co.dvalue == np.sqrt(cov)) assert (co.value == val) diff --git a/tests/obs_test.py b/tests/obs_test.py index 8fbfa43d..7f7a459c 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -46,8 +46,9 @@ def test_Obs_exceptions(): my_obs.gamma_method(tau_exp=2.3) my_obs.gamma_method() my_obs.details() + my_obs.plot_rep_dist() - my_obs += pe.Obs([np.random.rand(6)], ['name2|r1']) + my_obs += pe.Obs([np.random.rand(6)], ['name2|r1'], idl=[[1, 3, 4, 5, 6, 7]]) my_obs += pe.Obs([np.random.rand(6)], ['name2|r2']) my_obs.gamma_method() my_obs.details() @@ -475,6 +476,7 @@ def test_irregular_error_propagation(): pe.Obs([np.random.rand(6)], ['t'], idl=[[4, 18, 27, 29, 57, 80]]), pe.Obs([np.random.rand(50)], ['t'], idl=[list(range(1, 26)) + list(range(50, 100, 2))])] for obs1 in obs_list: + obs1.details() for obs2 in obs_list: assert obs1 == (obs1 / obs2) * obs2 assert obs1 == (obs1 * obs2) / obs2 From b49c707127e0837a3ec78b65bf4b65062bd9a21d Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 15:49:01 +0000 Subject: [PATCH 108/220] refactor: created function import_json_string --- pyerrors/input/json.py | 71 ++++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 26 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index ce2e2fed..deda0d9e 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -203,20 +203,18 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): fp.close() -def load_json(fname, verbose=True, gz=True, full_output=False): - """Import a list of Obs or structures containing Obs from a .json.gz file. +def import_json_string(json_string, verbose=True, full_output=False): + """Reconstruct a list of Obs or structures containing Obs from a json string. The following structures are supported: Obs, list, numpy.ndarray If the list contains only one element, it is unpacked from the list. Parameters ---------- - fname : str - Filename of the input file. + json_string : str + json string containing the data. verbose : bool Print additional information that was written to the file. - gz : bool - If True, assumes that data is gzipped. If False, assumes JSON file. full_output : bool If True, a dict containing auxiliary information and the data is returned. If False, only the data is returned. @@ -281,35 +279,22 @@ def load_json(fname, verbose=True, gz=True, full_output=False): ret[-1].tag = taglist[i] return np.reshape(ret, layout) - if not fname.endswith('.json') and not fname.endswith('.gz'): - fname += '.json' - if gz: - if not fname.endswith('.gz'): - fname += '.gz' - with gzip.open(fname, 'r') as fin: - d = json.loads(fin.read().decode('utf-8')) - else: - if fname.endswith('.gz'): - warnings.warn("Trying to read from %s without unzipping!" % fname, UserWarning) - with open(fname, 'r', encoding='utf-8') as fin: - d = json.loads(fin.read()) - - prog = d.get('program', '') - version = d.get('version', '') - who = d.get('who', '') - date = d.get('date', '') - host = d.get('host', '') + prog = json_string.get('program', '') + version = json_string.get('version', '') + who = json_string.get('who', '') + date = json_string.get('date', '') + host = json_string.get('host', '') if prog and verbose: print('Data has been written using %s.' % (prog)) if version and verbose: print('Format version %s' % (version)) if np.any([who, date, host] and verbose): print('Written by %s on %s on host %s' % (who, date, host)) - description = d.get('description', '') + description = json_string.get('description', '') if description and verbose: print() print('Description: ', description) - obsdata = d['obsdata'] + obsdata = json_string['obsdata'] ol = [] for io in obsdata: if io['type'] == 'Obs': @@ -335,3 +320,37 @@ def load_json(fname, verbose=True, gz=True, full_output=False): ol = ol[0] return ol + + +def load_json(fname, verbose=True, gz=True, full_output=False): + """Import a list of Obs or structures containing Obs from a .json.gz file. + + The following structures are supported: Obs, list, numpy.ndarray + If the list contains only one element, it is unpacked from the list. + + Parameters + ---------- + fname : str + Filename of the input file. + verbose : bool + Print additional information that was written to the file. + gz : bool + If True, assumes that data is gzipped. If False, assumes JSON file. + full_output : bool + If True, a dict containing auxiliary information and the data is returned. + If False, only the data is returned. + """ + if not fname.endswith('.json') and not fname.endswith('.gz'): + fname += '.json' + if gz: + if not fname.endswith('.gz'): + fname += '.gz' + with gzip.open(fname, 'r') as fin: + d = json.loads(fin.read().decode('utf-8')) + else: + if fname.endswith('.gz'): + warnings.warn("Trying to read from %s without unzipping!" % fname, UserWarning) + with open(fname, 'r', encoding='utf-8') as fin: + d = json.loads(fin.read()) + + return import_json_string(d, verbose, full_output) From ca303c93e99a1512eccafbd7d75d774f5038d617 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 9 Dec 2021 15:59:53 +0000 Subject: [PATCH 109/220] test: tests for json io extended --- tests/io_test.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/io_test.py b/tests/io_test.py index 7bb80cc0..79b61c61 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -41,6 +41,9 @@ def test_jsonio(): os.remove(fname + '.json.gz') + for o, r in zip(ol, rl): + assert np.all(o == r) + for i in range(len(rl)): if isinstance(ol[i], pe.Obs): o = ol[i] - rl[i] @@ -57,6 +60,9 @@ def test_jsonio(): rl = jsonio.load_json(fname, gz=False, full_output=True) - assert(description == rl['description']) - os.remove(fname + '.json') + + for o, r in zip(ol, rl['obsdata']): + assert np.all(o == r) + + assert(description == rl['description']) From 2ce73fb3f2485b5e391732df34402d3a8f3fc5e8 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 10:37:50 +0000 Subject: [PATCH 110/220] fix: import_json_string now correctly reconstructs obs from string, test added --- pyerrors/input/json.py | 20 +++++++++++--------- tests/io_test.py | 9 ++++++++- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index deda0d9e..2e960c3b 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -279,22 +279,24 @@ def import_json_string(json_string, verbose=True, full_output=False): ret[-1].tag = taglist[i] return np.reshape(ret, layout) - prog = json_string.get('program', '') - version = json_string.get('version', '') - who = json_string.get('who', '') - date = json_string.get('date', '') - host = json_string.get('host', '') + json_dict = json.loads(json_string) + + prog = json_dict.get('program', '') + version = json_dict.get('version', '') + who = json_dict.get('who', '') + date = json_dict.get('date', '') + host = json_dict.get('host', '') if prog and verbose: print('Data has been written using %s.' % (prog)) if version and verbose: print('Format version %s' % (version)) if np.any([who, date, host] and verbose): print('Written by %s on %s on host %s' % (who, date, host)) - description = json_string.get('description', '') + description = json_dict.get('description', '') if description and verbose: print() print('Description: ', description) - obsdata = json_string['obsdata'] + obsdata = json_dict['obsdata'] ol = [] for io in obsdata: if io['type'] == 'Obs': @@ -346,11 +348,11 @@ def load_json(fname, verbose=True, gz=True, full_output=False): if not fname.endswith('.gz'): fname += '.gz' with gzip.open(fname, 'r') as fin: - d = json.loads(fin.read().decode('utf-8')) + d = fin.read().decode('utf-8') else: if fname.endswith('.gz'): warnings.warn("Trying to read from %s without unzipping!" % fname, UserWarning) with open(fname, 'r', encoding='utf-8') as fin: - d = json.loads(fin.read()) + d = fin.read() return import_json_string(d, verbose, full_output) diff --git a/tests/io_test.py b/tests/io_test.py index 79b61c61..18a48a76 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -1,4 +1,4 @@ -import pyerrors.obs as pe +import pyerrors as pe import pyerrors.input.json as jsonio import numpy as np import os @@ -66,3 +66,10 @@ def test_jsonio(): assert np.all(o == r) assert(description == rl['description']) + + +def test_json_string_reconstruction(): + my_obs = pe.Obs([np.random.rand(100)], ['name']) + json_string = pe.input.json.create_json_string(my_obs) + reconstructed_obs = pe.input.json.import_json_string(json_string) + assert my_obs == reconstructed_obs From f6dc78f5876b058d2f86783ec50b63fe4b8b74c7 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 10:40:49 +0000 Subject: [PATCH 111/220] feat!: json format timezone is now outputted in +0000 format. --- pyerrors/input/json.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 2e960c3b..4bd7031b 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -131,7 +131,7 @@ def create_json_string(ol, description='', indent=1): d['program'] = 'pyerrors %s' % (pyerrorsversion.__version__) d['version'] = '0.1' d['who'] = getpass.getuser() - d['date'] = datetime.datetime.now().astimezone().strftime('%Y-%m-%d %H:%M:%S %Z') + d['date'] = datetime.datetime.now().astimezone().strftime('%Y-%m-%d %H:%M:%S %z') d['host'] = socket.gethostname() + ', ' + platform.platform() if description: From f7e64b2d389c12a73b7b43745ba20d40130dec46 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 10:43:52 +0000 Subject: [PATCH 112/220] test: json io test extended --- tests/io_test.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/io_test.py b/tests/io_test.py index 18a48a76..a14ed52d 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -1,7 +1,8 @@ +import os +import gzip +import numpy as np import pyerrors as pe import pyerrors.input.json as jsonio -import numpy as np -import os def test_jsonio(): @@ -70,6 +71,15 @@ def test_jsonio(): def test_json_string_reconstruction(): my_obs = pe.Obs([np.random.rand(100)], ['name']) + json_string = pe.input.json.create_json_string(my_obs) - reconstructed_obs = pe.input.json.import_json_string(json_string) - assert my_obs == reconstructed_obs + reconstructed_obs1 = pe.input.json.import_json_string(json_string) + assert my_obs == reconstructed_obs1 + + compressed_string = gzip.compress(json_string.encode('utf-8')) + + reconstructed_string = gzip.decompress(compressed_string).decode('utf-8') + reconstructed_obs2 = pe.input.json.import_json_string(reconstructed_string) + + assert reconstructed_string == json_string + assert my_obs == reconstructed_obs2 From 1a5c3c8c29dd04f85e8bd9a780b020c0240cf7b6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 14:14:51 +0000 Subject: [PATCH 113/220] refactor: switched to autograd version from github which resolves the deprecation warnings stemming from numpy --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 61355086..5a971d92 100644 --- a/setup.py +++ b/setup.py @@ -9,5 +9,5 @@ setup(name='pyerrors', author_email='fabian.joswig@ed.ac.uk', packages=find_packages(), python_requires='>=3.6.0', - install_requires=['numpy>=1.16', 'autograd>=1.2', 'numdifftools', 'matplotlib>=3.3', 'scipy', 'iminuit>=2', 'h5py'] + install_requires=['numpy>=1.16', 'autograd @ git+https://github.com/HIPS/autograd.git', 'numdifftools', 'matplotlib>=3.3', 'scipy', 'iminuit>=2', 'h5py'] ) From 9056d369d324628a3647abb610bf62f00c11f59a Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 14:15:40 +0000 Subject: [PATCH 114/220] ci: wheel added to pytest workflow --- .github/workflows/pytest.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index b9d60c7a..9a2a4aa6 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -29,6 +29,7 @@ jobs: - name: Install run: | python -m pip install --upgrade pip + pip install wheel pip install . pip install pytest pip install pytest-cov From 5ebfda5250573050a5797e58886b0a1d8faf5b91 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 14:20:51 +0000 Subject: [PATCH 115/220] test: test for linalg.eig added --- tests/linalg_test.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 58301814..23060a60 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -300,6 +300,10 @@ def test_matrix_functions(): for j in range(dim): assert tmp[j].is_zero() + # Check eig function + e2 = pe.linalg.eig(sym) + assert np.all(e == e2[::-1]) + # Check svd u, v, vh = pe.linalg.svd(sym) diff = sym - u @ np.diag(v) @ vh From 525dea020917c9fc7a7415238b512f6839f51b48 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 14:26:05 +0000 Subject: [PATCH 116/220] refactor: removed code from autograd master, test adjusted --- pyerrors/linalg.py | 51 -------------------------------------------- tests/linalg_test.py | 2 +- 2 files changed, 1 insertion(+), 52 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index 237e6713..afdcb18a 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -2,9 +2,6 @@ import numpy as np import autograd.numpy as anp # Thinly-wrapped numpy from .obs import derived_observable, CObs, Obs, import_jackknife -from functools import partial -from autograd.extend import defvjp - def matmul(*operands): """Matrix multiply all operands. @@ -527,51 +524,3 @@ def _num_diff_svd(obs, **kwargs): res_mat2.append(row) return (np.array(res_mat0) @ np.identity(mid_index), np.array(res_mat1) @ np.identity(mid_index), np.array(res_mat2) @ np.identity(shape[1])) - - -# This code block is directly taken from the current master branch of autograd and remains -# only until the new version is released on PyPi -_dot = partial(anp.einsum, '...ij,...jk->...ik') - - -# batched diag -def _diag(a): - return anp.eye(a.shape[-1]) * a - - -# batched diagonal, similar to matrix_diag in tensorflow -def _matrix_diag(a): - reps = anp.array(a.shape) - reps[:-1] = 1 - reps[-1] = a.shape[-1] - newshape = list(a.shape) + [a.shape[-1]] - return _diag(anp.tile(a, reps).reshape(newshape)) - -# https://arxiv.org/pdf/1701.00392.pdf Eq(4.77) -# Note the formula from Sec3.1 in https://people.maths.ox.ac.uk/gilesm/files/NA-08-01.pdf is incomplete - - -def grad_eig(ans, x): - """Gradient of a general square (complex valued) matrix""" - e, u = ans # eigenvalues as 1d array, eigenvectors in columns - n = e.shape[-1] - - def vjp(g): - ge, gu = g - ge = _matrix_diag(ge) - f = 1 / (e[..., anp.newaxis, :] - e[..., :, anp.newaxis] + 1.e-20) - f -= _diag(f) - ut = anp.swapaxes(u, -1, -2) - r1 = f * _dot(ut, gu) - r2 = -f * (_dot(_dot(ut, anp.conj(u)), anp.real(_dot(ut, gu)) * anp.eye(n))) - r = _dot(_dot(anp.linalg.inv(ut), ge + r1 + r2), ut) - if not anp.iscomplexobj(x): - r = anp.real(r) - # the derivative is still complex for real input (imaginary delta is allowed), real output - # but the derivative should be real in real input case when imaginary delta is forbidden - return r - return vjp - - -defvjp(anp.linalg.eig, grad_eig) -# End of the code block from autograd.master diff --git a/tests/linalg_test.py b/tests/linalg_test.py index 23060a60..bc45a8f0 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -302,7 +302,7 @@ def test_matrix_functions(): # Check eig function e2 = pe.linalg.eig(sym) - assert np.all(e == e2[::-1]) + assert np.all(np.sort(e) == np.sort(e2)) # Check svd u, v, vh = pe.linalg.svd(sym) From 67ca53681aba2cae3f36262a643dbe2397f3e43f Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 14:37:58 +0000 Subject: [PATCH 117/220] fix: workaround for non Obs valued objects in derived_observable now also works outside of array mode. --- pyerrors/obs.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index c29c1bd8..34bc561b 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1052,11 +1052,10 @@ def derived_observable(func, data, array_mode=False, **kwargs): raveled_data = data.ravel() # Workaround for matrix operations containing non Obs data - if array_mode is True: - if not all(isinstance(x, Obs) for x in raveled_data): - for i in range(len(raveled_data)): - if isinstance(raveled_data[i], (int, float)): - raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "###dummy_covobs###") + if not all(isinstance(x, Obs) for x in raveled_data): + for i in range(len(raveled_data)): + if isinstance(raveled_data[i], (int, float)): + raveled_data[i] = cov_Obs(raveled_data[i], 0.0, "###dummy_covobs###") allcov = {} for o in raveled_data: From a2a799b591f3fb35f3def3d09f8d3fd60aa8a9d5 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 14:39:14 +0000 Subject: [PATCH 118/220] feat: linalg.det added, test added --- pyerrors/linalg.py | 7 ++++++- tests/linalg_test.py | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index afdcb18a..3b1950eb 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -203,7 +203,12 @@ def cholesky(x): return _mat_mat_op(anp.linalg.cholesky, x) -def scalar_mat_op(op, obs, **kwargs): +def det(x): + """Determinant of Obs valued matrices.""" + return _scalar_mat_op(anp.linalg.det, x) + + +def _scalar_mat_op(op, obs, **kwargs): """Computes the matrix to scalar operation op to a given matrix of Obs.""" def _mat(x, **kwargs): dim = int(np.sqrt(len(x))) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index bc45a8f0..f446d972 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -311,6 +311,9 @@ def test_matrix_functions(): for (i, j), entry in np.ndenumerate(diff): assert entry.is_zero() + # Check determinant + assert pe.linalg.det(np.diag(np.diag(matrix))) == np.prod(np.diag(matrix)) + def test_complex_matrix_operations(): dimension = 4 From 207a60c08539260d5fc29a83c61831fe7a4d1823 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 14:41:56 +0000 Subject: [PATCH 119/220] refactor: linalg.slogdet removed --- pyerrors/linalg.py | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index 3b1950eb..ff018652 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -300,31 +300,6 @@ def svd(obs, **kwargs): return (u, s, vh) -def slogdet(obs, **kwargs): - """Computes the determinant of a matrix of Obs via np.linalg.slogdet.""" - def _mat(x): - dim = int(np.sqrt(len(x))) - if np.sqrt(len(x)) != dim: - raise Exception('Input has to have dim**2 entries') - - mat = [] - for i in range(dim): - row = [] - for j in range(dim): - row.append(x[j + dim * i]) - mat.append(row) - - (sign, logdet) = anp.linalg.slogdet(np.array(mat)) - return sign * anp.exp(logdet) - - if isinstance(obs, np.ndarray): - return derived_observable(_mat, (1 * (obs.ravel())).tolist(), **kwargs) - elif isinstance(obs, list): - return derived_observable(_mat, obs, **kwargs) - else: - raise TypeError('Unproper type of input.') - - # Variants for numerical differentiation def _num_diff_mat_mat_op(op, obs, **kwargs): From fe03bf984476f5602369d87b0f63d2e69ae440ed Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 15:39:57 +0000 Subject: [PATCH 120/220] feat: linalg.einsum optimized --- pyerrors/linalg.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index ff018652..6eac3e69 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -178,7 +178,8 @@ def einsum(subscripts, *operands): tmp_subscripts = ','.join([o + '...' for o in subscripts.split(',')]) extended_subscripts = '->'.join([o + '...' for o in tmp_subscripts.split('->')[:-1]] + [tmp_subscripts.split('->')[-1]]) - jack_einsum = np.einsum(extended_subscripts, *conv_operands) + einsum_path = np.einsum_path(extended_subscripts, *conv_operands, optimize='optimal')[0] + jack_einsum = np.einsum(extended_subscripts, *conv_operands, optimize=einsum_path) if jack_einsum.dtype == complex: result = _imp_from_jack_c(jack_einsum, name, idl) From 7b433c8df7c6b1ebb63b67ac70981bb52d314cb0 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 16:12:38 +0000 Subject: [PATCH 121/220] refactor: unneeded parameter empty removed --- pyerrors/obs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 34bc561b..099f3157 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1632,7 +1632,7 @@ def cov_Obs(means, cov, name, grad=None): co : Covobs Covobs to be embedded into the Obs """ - o = Obs(None, None, empty=True) + o = Obs(None, None) o._value = co.value o.names.append(co.name) o.covobs[co.name] = co From 1ab16612d91be4f1e35bea790329e7eded12ff7b Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 16:24:40 +0000 Subject: [PATCH 122/220] feat: changed the way empty obs are initialized --- pyerrors/obs.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 099f3157..5690afd8 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -68,8 +68,9 @@ class Obs: already subtracted from the samples """ - if means is None and samples is not None: - if len(samples) != len(names): + sample_length = len(samples) + if means is None and sample_length: + if sample_length != len(names): raise Exception('Length of samples and names incompatible.') if idl is not None: if len(idl) != len(names): @@ -86,11 +87,7 @@ class Obs: if min(len(x) for x in samples) <= 4: raise Exception('Samples have to have at least 5 entries.') - if names: - self.names = sorted(names) - else: - self.names = [] - + self.names = sorted(names) self.shape = {} self.r_values = {} self.deltas = {} @@ -100,7 +97,7 @@ class Obs: self.covobs = covobs self.idl = {} - if samples is not None: + if sample_length: if idl is not None: for name, idx in sorted(zip(names, idl)): if isinstance(idx, range): @@ -1632,7 +1629,7 @@ def cov_Obs(means, cov, name, grad=None): co : Covobs Covobs to be embedded into the Obs """ - o = Obs(None, None) + o = Obs([], []) o._value = co.value o.names.append(co.name) o.covobs[co.name] = co From 5f2e33ccda1019891d0300f7a51909e935c59c0a Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 16:31:42 +0000 Subject: [PATCH 123/220] feat: repetative len(sample) calles reintroduced --- pyerrors/obs.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 5690afd8..411fe278 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -68,9 +68,8 @@ class Obs: already subtracted from the samples """ - sample_length = len(samples) - if means is None and sample_length: - if sample_length != len(names): + if means is None and len(samples): + if len(samples) != len(names): raise Exception('Length of samples and names incompatible.') if idl is not None: if len(idl) != len(names): @@ -97,7 +96,7 @@ class Obs: self.covobs = covobs self.idl = {} - if sample_length: + if len(samples): if idl is not None: for name, idx in sorted(zip(names, idl)): if isinstance(idx, range): From 7c9dc662e60c948628d49fa79a02932555d21ff9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 10 Dec 2021 16:49:30 +0000 Subject: [PATCH 124/220] test: test for empty Obs added --- tests/obs_test.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/obs_test.py b/tests/obs_test.py index 7f7a459c..fe8826f8 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -586,6 +586,12 @@ def test_covariance2_symmetry(): assert np.abs(cov_ab) < test_obs1.dvalue * test_obs2.dvalue * (1 + 10 * np.finfo(np.float64).eps) +def test_empty_obs(): + o = pe.Obs([np.random.rand(100)], ['test']) + q = o + pe.Obs([], []) + assert q == o + + def test_jackknife(): full_data = np.random.normal(1.1, 0.87, 5487) From 20edefad43d8bcdda74e5a213a5db809a3725190 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sat, 11 Dec 2021 22:59:01 +0000 Subject: [PATCH 125/220] docs: Introduction restructured --- pyerrors/__init__.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index 5ff2c925..9142ddea 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -1,17 +1,14 @@ r''' # What is pyerrors? `pyerrors` is a python package for error computation and propagation of Markov chain Monte Carlo data. -It is based on the **gamma method** [arXiv:hep-lat/0306017](https://arxiv.org/abs/hep-lat/0306017). Some of its features are: -- **automatic differentiation** as suggested in [arXiv:1809.01289](https://arxiv.org/abs/1809.01289) (partly based on the [autograd](https://github.com/HIPS/autograd) package) -- **treatment of slow modes** in the simulation as suggested in [arXiv:1009.5228](https://arxiv.org/abs/1009.5228) -- coherent **error propagation** for data from **different Markov chains** -- **non-linear fits with x- and y-errors** and exact linear error propagation based on automatic differentiation as introduced in [arXiv:1809.01289](https://arxiv.org/abs/1809.01289) -- **real and complex matrix operations** and their error propagation based on automatic differentiation (Cholesky decomposition, calculation of eigenvalues and eigenvectors, singular value decomposition...) +It is based on the gamma method [arXiv:hep-lat/0306017](https://arxiv.org/abs/hep-lat/0306017). Some of its features are: +- automatic differentiation for exact liner error propagation as suggested in [arXiv:1809.01289](https://arxiv.org/abs/1809.01289) (partly based on the [autograd](https://github.com/HIPS/autograd) package). +- treatment of slow modes in the simulation as suggested in [arXiv:1009.5228](https://arxiv.org/abs/1009.5228). +- coherent error propagation for data from different Markov chains. +- non-linear fits with x- and y-errors and exact linear error propagation based on automatic differentiation as introduced in [arXiv:1809.01289](https://arxiv.org/abs/1809.01289). +- real and complex matrix operations and their error propagation based on automatic differentiation (Matrix inverse, Cholesky decomposition, calculation of eigenvalues and eigenvectors, singular value decomposition...). -There exist similar publicly available implementations of gamma method error analysis suites in -- [Fortran](https://gitlab.ift.uam-csic.es/alberto/aderrors) -- [Julia](https://gitlab.ift.uam-csic.es/alberto/aderrors.jl) -- [Python](https://github.com/mbruno46/pyobs) +There exist similar publicly available implementations of gamma method error analysis suites in [Fortran](https://gitlab.ift.uam-csic.es/alberto/aderrors), [Julia](https://gitlab.ift.uam-csic.es/alberto/aderrors.jl) and [Python](https://github.com/mbruno46/pyobs). ## Basic example From 7e0308b155dde4a1fecf58c228655c97054e97d2 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sat, 11 Dec 2021 23:06:07 +0000 Subject: [PATCH 126/220] docs: doc extended, typos corrected. --- pyerrors/__init__.py | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index 9142ddea..9c427818 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -30,7 +30,6 @@ An `Obs` object can be initialized with two arguments, the first is a list conta The samples can either be provided as python list or as numpy array. The second argument is a list containing the names of the respective Monte Carlo chains as strings. These strings uniquely identify a Monte Carlo chain/ensemble. -Example: ```python import pyerrors as pe @@ -46,7 +45,6 @@ The required derivatives $\bar{f}_\alpha$ are evaluated up to machine precision The `Obs` class is designed such that mathematical numpy functions can be used on `Obs` just as for regular floats. -Example: ```python import numpy as np import pyerrors as pe @@ -69,7 +67,6 @@ print(iamzero == 0.0) The error estimation within `pyerrors` is based on the gamma method introduced in [arXiv:hep-lat/0306017](https://arxiv.org/abs/hep-lat/0306017). After having arrived at the derived quantity of interest the `gamma_method` can be called as detailed in the following example. -Example: ```python my_sum.gamma_method() print(my_sum) @@ -84,10 +81,9 @@ my_sum.details() We use the following definition of the integrated autocorrelation time established in [Madras & Sokal 1988](https://link.springer.com/article/10.1007/BF01022990) $$\tau_\mathrm{int}=\frac{1}{2}+\sum_{t=1}^{W}\rho(t)\geq \frac{1}{2}\,.$$ -The window $W$ is determined via the automatic windowing procedure described in [arXiv:hep-lat/0306017](https://arxiv.org/abs/hep-lat/0306017) +The window $W$ is determined via the automatic windowing procedure described in [arXiv:hep-lat/0306017](https://arxiv.org/abs/hep-lat/0306017). The standard value for the parameter $S$ of this automatic windowing procedure is $S=2$. Other values for $S$ can be passed to the `gamma_method` as parameter. -Example: ```python my_sum.gamma_method(S=3.0) my_sum.details() @@ -107,7 +103,6 @@ In this case the error estimate is identical to the sample standard error. Slow modes in the Monte Carlo history can be accounted for by attaching an exponential tail to the autocorrelation function $\rho$ as suggested in [arXiv:1009.5228](https://arxiv.org/abs/1009.5228). The longest autocorrelation time in the history, $\tau_\mathrm{exp}$, can be passed to the `gamma_method` as parameter. In this case the automatic windowing procedure is vacated and the parameter $S$ does not affect the error estimate. -Example: ```python my_sum.gamma_method(tau_exp=7.2) my_sum.details() @@ -117,13 +112,12 @@ my_sum.details() > · Ensemble 'ensemble_name' : 1000 configurations (from 1 to 1000) ``` -For the full API see `pyerrors.obs.Obs.gamma_method` +For the full API see `pyerrors.obs.Obs.gamma_method`. ## Multiple ensembles/replica Error propagation for multiple ensembles (Markov chains with different simulation parameters) is handled automatically. Ensembles are uniquely identified by their `name`. -Example: ```python obs1 = pe.Obs([samples1], ['ensemble1']) obs2 = pe.Obs([samples2], ['ensemble2']) @@ -138,7 +132,6 @@ my_sum.details() `pyerrors` identifies multiple replica (independent Markov chains with identical simulation parameters) by the vertical bar `|` in the name of the data set. -Example: ```python obs1 = pe.Obs([samples1], ['ensemble1|r01']) obs2 = pe.Obs([samples2], ['ensemble1|r02']) @@ -156,7 +149,6 @@ obs2 = pe.Obs([samples2], ['ensemble1|r02']) In order to keep track of different error analysis parameters for different ensembles one can make use of global dictionaries as detailed in the following example. -Example: ```python pe.Obs.S_dict['ensemble1'] = 2.5 pe.Obs.tau_exp_dict['ensemble2'] = 8.0 @@ -171,7 +163,6 @@ Passing arguments to the `gamma_method` still dominates over the dictionaries. Irregular Monte Carlo chains can be initialized with the parameter `idl`. -Example: ```python # Observable defined on configurations 20 to 519 obs1 = pe.Obs([samples1], ['ensemble1'], idl=[range(20, 520)]) @@ -199,17 +190,16 @@ obs3.details() **Warning:** Irregular Monte Carlo chains can result in odd patterns in the autocorrelation functions. Make sure to check the autocorrelation time with e.g. `pyerrors.obs.Obs.plot_rho` or `pyerrors.obs.Obs.plot_tauint`. -For the full API see `pyerrors.obs.Obs` +For the full API see `pyerrors.obs.Obs`. # Correlators -For the full API see `pyerrors.correlators.Corr` +For the full API see `pyerrors.correlators.Corr`. # Complex observables `pyerrors` can handle complex valued observables via the class `pyerrors.obs.CObs`. `CObs` are initialized with a real and an imaginary part which both can be `Obs` valued. -Example: ```python my_real_part = pe.Obs([samples1], ['ensemble1']) my_imag_part = pe.Obs([samples2], ['ensemble1']) @@ -239,8 +229,8 @@ print(my_derived_cobs) The preferred exported file format within `pyerrors` is ## Jackknife samples -For comparison with other analysis workflows `pyerrors` can generate jackknife samples from an `Obs` object. -See `pyerrors.obs.Obs.export_jackknife` for details. +For comparison with other analysis workflows `pyerrors` can generate jackknife samples from an `Obs` object or import jackknife samples into an `Obs` object. +See `pyerrors.obs.Obs.export_jackknife` and `pyerrors.obs.import_jackknife` for details. # Input `pyerrors.input` From 3fd63f8b673cee773cb35dd70629fc077d3bdf40 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 13 Dec 2021 14:47:57 +0000 Subject: [PATCH 127/220] refactor: bare excepts removed. --- pyerrors/correlators.py | 2 +- pyerrors/fits.py | 6 +++--- pyerrors/input/bdio.py | 2 +- pyerrors/obs.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index cdf4a339..90dcf193 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -536,7 +536,7 @@ class Corr: y_min = min([(x[0].value - x[0].dvalue) for x in self.content[x_range[0]: x_range[1] + 1] if (x is not None) and x[0].dvalue < 2 * np.abs(x[0].value)]) y_max = max([(x[0].value + x[0].dvalue) for x in self.content[x_range[0]: x_range[1] + 1] if (x is not None) and x[0].dvalue < 2 * np.abs(x[0].value)]) ax1.set_ylim([y_min - 0.1 * (y_max - y_min), y_max + 0.1 * (y_max - y_min)]) - except: + except Exception: pass else: ax1.set_ylim(y_range) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 023aaf53..d446e72e 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -187,7 +187,7 @@ def total_least_squares(x, y, func, silent=False, **kwargs): for i in range(25): try: func(np.arange(i), x.T[0]) - except: + except Exception: pass else: break @@ -328,7 +328,7 @@ def _prior_fit(x, y, func, priors, silent=False, **kwargs): for i in range(100): try: func(np.arange(i), 0) - except: + except Exception: pass else: break @@ -469,7 +469,7 @@ def _standard_fit(x, y, func, silent=False, **kwargs): for i in range(25): try: func(np.arange(i), x.T[0]) - except: + except Exception: pass else: break diff --git a/pyerrors/input/bdio.py b/pyerrors/input/bdio.py index 3e29924b..0a15cceb 100644 --- a/pyerrors/input/bdio.py +++ b/pyerrors/input/bdio.py @@ -226,7 +226,7 @@ def write_ADerrors(obs_list, file_path, bdio_path='./libbdio.so', **kwargs): for key in keys: try: # Try to convert key to integer ids.append(int(key)) - except: # If not possible construct a hash + except Exception: # If not possible construct a hash ids.append(int(hashlib.sha256(key.encode('utf-8')).hexdigest(), 16) % 10 ** 8) print('ids', ids) nt = [] diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 411fe278..34bbf46d 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -946,7 +946,7 @@ def _merge_idx(idl): g = groupby(idl) if next(g, True) and not next(g, False): return idl[0] - except: + except Exception: pass if np.all([type(idx) is range for idx in idl]): From 615cd05f2204025ef39159d0dc5ffae5347cf28a Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 13 Dec 2021 14:48:56 +0000 Subject: [PATCH 128/220] ci: E722 removed from flake8 exceptions. --- .github/workflows/flake8.yml | 2 +- CONTRIBUTING.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/flake8.yml b/.github/workflows/flake8.yml index e75a5ae1..efb81565 100644 --- a/.github/workflows/flake8.yml +++ b/.github/workflows/flake8.yml @@ -21,6 +21,6 @@ jobs: - name: flake8 Lint uses: py-actions/flake8@v1 with: - ignore: "E501,E722" + ignore: "E501" exclude: "__init__.py, input/__init__.py" path: "pyerrors" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index df206c99..cd627bd2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,6 +30,6 @@ pytest --cov=pyerrors --cov-report html ``` The linter `flake8` is executed with the command ``` -flake8 --ignore=E501,E722 --exclude=__init__.py pyerrors +flake8 --ignore=E501 --exclude=__init__.py pyerrors ``` Please make sure that all tests are passed for a new pull requests. From 06f4caf579dc231af79ed703ca33745108c930f6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 13 Dec 2021 14:54:30 +0000 Subject: [PATCH 129/220] ci: python 3.10 added to pytest workflow --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 9a2a4aa6..0f3ae2f3 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.6", "3.7", "3.8", "3.9"] + python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"] steps: - name: Checkout source From ec20ee38a66b7be8c5dc544f8944615329089076 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 13 Dec 2021 17:06:03 +0000 Subject: [PATCH 130/220] feat!: covariance replaced by covariance2, window altered to minimum of the window of the two observables. Tests adjusted. --- pyerrors/obs.py | 72 +------------------------------------------- tests/covobs_test.py | 2 +- tests/fits_test.py | 3 +- tests/obs_test.py | 12 ++++---- 4 files changed, 10 insertions(+), 79 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 34bbf46d..14138b92 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1334,76 +1334,6 @@ def covariance(obs1, obs2, correlation=False, **kwargs): is constrained to the maximum value in order to make sure that covariance matrices are positive semidefinite. - Parameters - ---------- - obs1 : Obs - First Obs - obs2 : Obs - Second Obs - correlation : bool - if true the correlation instead of the covariance is - returned (default False) - """ - if set(obs1.names).isdisjoint(set(obs2.names)): - return 0. - - for name in sorted(set(obs1.names + obs2.names)): - if (obs1.shape.get(name) != obs2.shape.get(name)) and (obs1.shape.get(name) is not None) and (obs2.shape.get(name) is not None): - raise Exception('Shapes of ensemble', name, 'do not fit') - if (1 != len(set([len(idx) for idx in [obs1.idl[name], obs2.idl[name], _merge_idx([obs1.idl[name], obs2.idl[name]])]]))): - raise Exception('Shapes of ensemble', name, 'do not fit') - - if not hasattr(obs1, 'e_dvalue') or not hasattr(obs2, 'e_dvalue'): - raise Exception('The gamma method has to be applied to both Obs first.') - - dvalue = 0 - - for e_name in obs1.mc_names: - - if e_name not in obs2.e_names: - continue - - gamma = 0 - r_length = [] - for r_name in obs1.e_content[e_name]: - if r_name not in obs2.e_content[e_name]: - continue - - r_length.append(len(obs1.deltas[r_name])) - - gamma += np.sum(obs1.deltas[r_name] * obs2.deltas[r_name]) - - e_N = np.sum(r_length) - - tau_combined = (obs1.e_tauint[e_name] + obs2.e_tauint[e_name]) / 2 - dvalue += gamma / e_N * (1 + 1 / e_N) / e_N * 2 * tau_combined - - for e_name in obs1.cov_names: - - if e_name not in obs2.cov_names: - continue - - dvalue += float(np.dot(np.transpose(obs1.covobs[e_name].grad), np.dot(obs1.covobs[e_name].cov, obs2.covobs[e_name].grad))) - - if np.abs(dvalue / obs1.dvalue / obs2.dvalue) > 1.0: - dvalue = np.sign(dvalue) * obs1.dvalue * obs2.dvalue - - if correlation: - dvalue = dvalue / obs1.dvalue / obs2.dvalue - - return dvalue - - -def covariance2(obs1, obs2, correlation=False, **kwargs): - """Alternative implementation of the covariance of two observables. - - covariance(obs, obs) is equal to obs.dvalue ** 2 - The gamma method has to be applied first to both observables. - - If abs(covariance(obs1, obs2)) > obs1.dvalue * obs2.dvalue, the covariance - is constrained to the maximum value in order to make sure that covariance - matrices are positive semidefinite. - Keyword arguments ----------------- correlation -- if true the correlation instead of the covariance is @@ -1503,7 +1433,7 @@ def covariance2(obs1, obs2, correlation=False, **kwargs): # Make sure no entry of tauint is smaller than 0.5 e_n_tauint[e_name][e_n_tauint[e_name] < 0.5] = 0.500000000001 - window = max(obs1.e_windowsize[e_name], obs2.e_windowsize[e_name]) + window = min(obs1.e_windowsize[e_name], obs2.e_windowsize[e_name]) # Bias correction hep-lat/0306017 eq. (49) e_dvalue[e_name] = 2 * (e_n_tauint[e_name][window] + obs1.tau_exp[e_name] * np.abs(e_rho[e_name][window + 1])) * (1 + (2 * window + 1) / e_N) * e_gamma[e_name][0] / e_N diff --git a/tests/covobs_test.py b/tests/covobs_test.py index 513fb351..215c75d3 100644 --- a/tests/covobs_test.py +++ b/tests/covobs_test.py @@ -40,7 +40,7 @@ def test_covobs(): [o.gamma_method() for o in cl] assert(pe.covariance(cl[0], cl[1]) == cov[0][1]) - assert(pe.covariance2(cl[0], cl[1]) == cov[1][0]) + assert(pe.covariance(cl[0], cl[1]) == cov[1][0]) do = cl[0] * cl[1] assert(np.array_equal(do.covobs['rAP'].grad, np.transpose([pi[1], pi[0]]).reshape(2, 1))) diff --git a/tests/fits_test.py b/tests/fits_test.py index b37abc25..8a9e0843 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -83,6 +83,8 @@ def test_least_squares(): assert math.isclose(pcov[i, i], betac[i].dvalue ** 2, abs_tol=1e-3) assert math.isclose(pe.covariance(betac[0], betac[1]), pcov[0, 1], abs_tol=1e-3) + +def test_correlated_fit(): num_samples = 400 N = 10 @@ -101,7 +103,6 @@ def test_least_squares(): c = cholesky(r, lower=True) y = np.dot(c, x) - x = np.arange(N) for linear in [True, False]: data = [] diff --git a/tests/obs_test.py b/tests/obs_test.py index fe8826f8..989a0064 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -555,7 +555,7 @@ def test_gamma_method_irregular(): assert((ae.e_tauint['a'] + 4 * ae.e_dtauint['a'] > ao.e_tauint['a'])) -def test_covariance2_symmetry(): +def test_covariance_symmetry(): value1 = np.random.normal(5, 10) dvalue1 = np.abs(np.random.normal(0, 1)) test_obs1 = pe.pseudo_Obs(value1, dvalue1, 't') @@ -564,8 +564,8 @@ def test_covariance2_symmetry(): dvalue2 = np.abs(np.random.normal(0, 1)) test_obs2 = pe.pseudo_Obs(value2, dvalue2, 't') test_obs2.gamma_method() - cov_ab = pe.covariance2(test_obs1, test_obs2) - cov_ba = pe.covariance2(test_obs2, test_obs1) + cov_ab = pe.covariance(test_obs1, test_obs2) + cov_ba = pe.covariance(test_obs2, test_obs1) assert np.abs(cov_ab - cov_ba) <= 10 * np.finfo(np.float64).eps assert np.abs(cov_ab) < test_obs1.dvalue * test_obs2.dvalue * (1 + 10 * np.finfo(np.float64).eps) @@ -578,10 +578,10 @@ def test_covariance2_symmetry(): idx = [i + 1 for i in range(len(configs)) if configs[i] == 1] a = pe.Obs([zero_arr], ['t'], idl=[idx]) a.gamma_method() - assert np.isclose(a.dvalue**2, pe.covariance2(a, a), atol=100, rtol=1e-4) + assert np.isclose(a.dvalue**2, pe.covariance(a, a), atol=100, rtol=1e-4) - cov_ab = pe.covariance2(test_obs1, a) - cov_ba = pe.covariance2(a, test_obs1) + cov_ab = pe.covariance(test_obs1, a) + cov_ba = pe.covariance(a, test_obs1) assert np.abs(cov_ab - cov_ba) <= 10 * np.finfo(np.float64).eps assert np.abs(cov_ab) < test_obs1.dvalue * test_obs2.dvalue * (1 + 10 * np.finfo(np.float64).eps) From 68a9a962d777786f7644cc6a734793f803bd5bca Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 13 Dec 2021 17:11:26 +0000 Subject: [PATCH 131/220] docs: docstring of covariance adjusted. --- pyerrors/obs.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 14138b92..796147ba 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1331,8 +1331,7 @@ def covariance(obs1, obs2, correlation=False, **kwargs): The gamma method has to be applied first to both observables. If abs(covariance(obs1, obs2)) > obs1.dvalue * obs2.dvalue, the covariance - is constrained to the maximum value in order to make sure that covariance - matrices are positive semidefinite. + is constrained to the maximum value. Keyword arguments ----------------- From 588d0045f23360fefaa157007f30a24f0bd45b7b Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 14 Dec 2021 13:07:20 +0100 Subject: [PATCH 132/220] Removed unnecessary entries for idl and shape in case of covobs. Changed Obs.covobs to Obs._covobs --- pyerrors/obs.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 796147ba..4bdf145b 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -42,7 +42,7 @@ class Obs: 'ddvalue', 'reweighted', 'S', 'tau_exp', 'N_sigma', 'e_dvalue', 'e_ddvalue', 'e_tauint', 'e_dtauint', 'e_windowsize', 'e_rho', 'e_drho', 'e_n_tauint', 'e_n_dtauint', - 'idl', 'is_merged', 'tag', 'covobs', '__dict__'] + 'idl', 'is_merged', 'tag', '_covobs', '__dict__'] S_global = 2.0 S_dict = {} @@ -91,9 +91,9 @@ class Obs: self.r_values = {} self.deltas = {} if covobs is None: - self.covobs = {} + self._covobs = {} else: - self.covobs = covobs + self._covobs = covobs self.idl = {} if len(samples): @@ -176,6 +176,10 @@ class Obs: res[e_name].append(e_name) return res + @property + def covobs(self): + return self._covobs + def gamma_method(self, **kwargs): """Estimate the error and related properties of the Obs. @@ -1191,9 +1195,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): final_result[i_val] = Obs(new_samples, new_names_obs, means=new_means, idl=new_idl) for name in new_covobs: final_result[i_val].names.append(name) - final_result[i_val].shape[name] = 1 - final_result[i_val].idl[name] = [] - final_result[i_val].covobs = new_covobs + final_result[i_val]._covobs = new_covobs final_result[i_val]._value = new_val final_result[i_val].is_merged = is_merged final_result[i_val].reweighted = reweighted @@ -1560,10 +1562,8 @@ def cov_Obs(means, cov, name, grad=None): o = Obs([], []) o._value = co.value o.names.append(co.name) - o.covobs[co.name] = co + o._covobs[co.name] = co o._dvalue = np.sqrt(co.errsq()) - o.shape[co.name] = 1 - o.idl[co.name] = [] return o ol = [] From 16ba1c1ee0f3a478a6486172c457d19dabd8ca50 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 14 Dec 2021 14:15:40 +0100 Subject: [PATCH 133/220] Removed parameter covobs from Obs.__init__ --- pyerrors/obs.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 4bdf145b..edef264e 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -52,7 +52,7 @@ class Obs: N_sigma_dict = {} filter_eps = 1e-10 - def __init__(self, samples, names, idl=None, means=None, covobs=None, **kwargs): + def __init__(self, samples, names, idl=None, means=None, **kwargs): """ Initialize Obs object. Parameters @@ -90,10 +90,7 @@ class Obs: self.shape = {} self.r_values = {} self.deltas = {} - if covobs is None: - self._covobs = {} - else: - self._covobs = covobs + self._covobs = {} self.idl = {} if len(samples): From b7bc508dcfed0ae537cbc0a23dfec1858940e04e Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 14 Dec 2021 15:47:14 +0100 Subject: [PATCH 134/220] Added covobs to json file format --- pyerrors/input/json.py | 55 +++++++++++++++++++++++++++++++++++++++++- tests/io_test.py | 7 +++++- 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 4bd7031b..3f900e0a 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -7,6 +7,7 @@ import datetime import platform import warnings from ..obs import Obs +from ..covobs import Covobs from .. import version as pyerrorsversion @@ -50,7 +51,7 @@ def create_json_string(ol, description='', indent=1): def _gen_data_d_from_list(ol): dl = [] - for name in ol[0].e_names: + for name in ol[0].mc_names: ed = {} ed['id'] = name ed['replica'] = [] @@ -69,6 +70,22 @@ def create_json_string(ol, description='', indent=1): dl.append(ed) return dl + def _gen_cdata_d_from_list(ol): + dl = [] + for name in ol[0].cov_names: + ed = {} + ed['id'] = name + ed['layout'] = str(ol[0].covobs[name].cov.shape).lstrip('(').rstrip(')').rstrip(',') + ed['cov'] = list(np.ravel(ol[0].covobs[name].cov)) + ncov = ol[0].covobs[name].cov.shape[0] + ed['grad'] = [] + for i in range(ncov): + ed['grad'].append([]) + for o in ol: + ed['grad'][-1].append(o.covobs[name].grad[i][0]) + dl.append(ed) + return dl + def _assert_equal_properties(ol, otype=Obs): for o in ol: if not isinstance(o, otype): @@ -93,6 +110,7 @@ def create_json_string(ol, description='', indent=1): d['reweighted'] = o.reweighted d['value'] = [o.value] d['data'] = _gen_data_d_from_list([o]) + d['cdata'] = _gen_cdata_d_from_list([o]) return d def write_List_to_dict(ol): @@ -107,6 +125,7 @@ def create_json_string(ol, description='', indent=1): d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] d['data'] = _gen_data_d_from_list(ol) + d['cdata'] = _gen_cdata_d_from_list(ol) return d def write_Array_to_dict(oa): @@ -122,6 +141,7 @@ def create_json_string(ol, description='', indent=1): d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] d['data'] = _gen_data_d_from_list(ol) + d['cdata'] = _gen_cdata_d_from_list(ol) return d if not isinstance(ol, list): @@ -234,6 +254,22 @@ def import_json_string(json_string, verbose=True, full_output=False): retd['is_merged'][rep['name']] = rep.get('is_merged', False) return retd + def _gen_covobsd_from_cdatad(d): + retd = {} + for ens in d: + retl = [] + name = ens['id'] + layouts = ens.get('layout', '1').strip() + layout = [int(ls.strip()) for ls in layouts.split(',') if len(ls) > 0] + cov = np.reshape(ens['cov'], layout) + grad = ens['grad'] + nobs = len(grad[0]) + print(nobs, grad) + for i in range(nobs): + retl.append({'name': name, 'cov': cov, 'grad': [g[i] for g in grad]}) + retd[name] = retl + return retd + def get_Obs_from_dict(o): layouts = o.get('layout', '1').strip() if layouts != '1': @@ -241,8 +277,14 @@ def import_json_string(json_string, verbose=True, full_output=False): values = o['value'] od = _gen_obsd_from_datad(o['data']) + cd = _gen_covobsd_from_cdatad(o['cdata']) ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl']) + for name in cd: + co = cd[name][0] + ret._covobs[name] = Covobs(None, co['cov'], co['name'], grad=co['grad']) + ret.names.append(co['name']) + ret.reweighted = o.get('reweighted', False) ret.is_merged = od['is_merged'] ret.tag = o.get('tag', [None])[0] @@ -253,11 +295,17 @@ def import_json_string(json_string, verbose=True, full_output=False): layout = int(layouts) values = o['value'] od = _gen_obsd_from_datad(o['data']) + cd = _gen_covobsd_from_cdatad(o['cdata']) ret = [] taglist = o.get('tag', layout * [None]) for i in range(layout): ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl'])) + for name in cd: + co = cd[name][i] + ret[-1]._covobs[name] = Covobs(None, co['cov'], co['name'], grad=co['grad']) + ret[-1].names.append(co['name']) + ret[-1].reweighted = o.get('reweighted', False) ret[-1].is_merged = od['is_merged'] ret[-1].tag = taglist[i] @@ -269,11 +317,16 @@ def import_json_string(json_string, verbose=True, full_output=False): N = np.prod(layout) values = o['value'] od = _gen_obsd_from_datad(o['data']) + cd = _gen_covobsd_from_cdatad(o['cdata']) ret = [] taglist = o.get('tag', N * [None]) for i in range(N): ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl'])) + for name in cd: + co = cd[name][i] + ret[-1]._covobs[name] = Covobs(None, co['cov'], co['name'], grad=co['grad']) + ret[-1].names.append(co['name']) ret[-1].reweighted = o.get('reweighted', False) ret[-1].is_merged = od['is_merged'] ret[-1].tag = taglist[i] diff --git a/tests/io_test.py b/tests/io_test.py index a14ed52d..7b64b2ff 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -13,10 +13,15 @@ def test_jsonio(): otag = 'This has been merged!' o4.tag = otag do = o - .2 * o4 + co1 = pe.cov_Obs(1., .123, 'cov1') + do *= co1 do.tag = {'A': 2} o5 = pe.pseudo_Obs(0.8, .1, 'two|r2') - o5.tag = 2*otag + co2 = pe.cov_Obs([1, 2], [[.12, .004], [.004, .02]], 'cov2') + o5 /= co2[0] + o3 /= co2[1] + o5.tag = 2 * otag testl = [o3, o5] arr = np.array([o3, o5]) From 76b483d7307425c9a9dfaa16698bd91117615d36 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 14 Dec 2021 15:54:52 +0100 Subject: [PATCH 135/220] Pretty output for cov and grad in json --- pyerrors/input/json.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 3f900e0a..b3f20768 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -49,6 +49,22 @@ def create_json_string(ol, description='', indent=1): def __str__(self): return self.__repr__() + class Floatlist: + def __init__(self, li): + self.li = list(li) + + def __repr__(self): + s = '[' + for i in range(len(self.li)): + if i > 0: + s += ', ' + s += '%1.15e' % (self.li[i]) + s += ']' + return s + + def __str__(self): + return self.__repr__() + def _gen_data_d_from_list(ol): dl = [] for name in ol[0].mc_names: @@ -76,13 +92,14 @@ def create_json_string(ol, description='', indent=1): ed = {} ed['id'] = name ed['layout'] = str(ol[0].covobs[name].cov.shape).lstrip('(').rstrip(')').rstrip(',') - ed['cov'] = list(np.ravel(ol[0].covobs[name].cov)) + ed['cov'] = Floatlist(np.ravel(ol[0].covobs[name].cov)) ncov = ol[0].covobs[name].cov.shape[0] ed['grad'] = [] for i in range(ncov): ed['grad'].append([]) for o in ol: ed['grad'][-1].append(o.covobs[name].grad[i][0]) + ed['grad'][-1] = Floatlist(ed['grad'][-1]) dl.append(ed) return dl @@ -174,9 +191,9 @@ def create_json_string(ol, description='', indent=1): deltas = False split = s.split('\n') for i in range(len(split)): - if '"deltas":' in split[i]: + if '"deltas":' in split[i] or '"cov":' in split[i] or '"grad":' in split[i]: deltas = True - elif deltas: + if deltas: split[i] = split[i].replace('"[', '[').replace(']"', ']') if split[i][-1] == ']': deltas = False From 533898206009c5e0736b239cdb0a02f2539cad9e Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 14 Dec 2021 16:27:05 +0100 Subject: [PATCH 136/220] Allow Obs in json format to be pure Covobs, i.e., to have empty deltas --- pyerrors/input/json.py | 83 +++++++++++++++++++++++++++--------------- tests/io_test.py | 4 +- 2 files changed, 56 insertions(+), 31 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index b3f20768..131dccf3 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -126,8 +126,12 @@ def create_json_string(ol, description='', indent=1): if o.reweighted: d['reweighted'] = o.reweighted d['value'] = [o.value] - d['data'] = _gen_data_d_from_list([o]) - d['cdata'] = _gen_cdata_d_from_list([o]) + data = _gen_data_d_from_list([o]) + if len(data) > 0: + d['data'] = data + cdata = _gen_cdata_d_from_list([o]) + if len(cdata) > 0: + d['cdata'] = cdata return d def write_List_to_dict(ol): @@ -141,8 +145,12 @@ def create_json_string(ol, description='', indent=1): if ol[0].reweighted: d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] - d['data'] = _gen_data_d_from_list(ol) - d['cdata'] = _gen_cdata_d_from_list(ol) + data = _gen_data_d_from_list(ol) + if len(data) > 0: + d['data'] = data + cdata = _gen_cdata_d_from_list(ol) + if len(cdata) > 0: + d['cdata'] = cdata return d def write_Array_to_dict(oa): @@ -157,8 +165,12 @@ def create_json_string(ol, description='', indent=1): if ol[0].reweighted: d['reweighted'] = ol[0].reweighted d['value'] = [o.value for o in ol] - d['data'] = _gen_data_d_from_list(ol) - d['cdata'] = _gen_cdata_d_from_list(ol) + data = _gen_data_d_from_list(ol) + if len(data) > 0: + d['data'] = data + cdata = _gen_cdata_d_from_list(ol) + if len(cdata) > 0: + d['cdata'] = cdata return d if not isinstance(ol, list): @@ -259,16 +271,17 @@ def import_json_string(json_string, verbose=True, full_output=False): def _gen_obsd_from_datad(d): retd = {} - retd['names'] = [] - retd['idl'] = [] - retd['deltas'] = [] - retd['is_merged'] = {} - for ens in d: - for rep in ens['replica']: - retd['names'].append(rep['name']) - retd['idl'].append([di[0] for di in rep['deltas']]) - retd['deltas'].append(np.array([di[1:] for di in rep['deltas']])) - retd['is_merged'][rep['name']] = rep.get('is_merged', False) + if d: + retd['names'] = [] + retd['idl'] = [] + retd['deltas'] = [] + retd['is_merged'] = {} + for ens in d: + for rep in ens['replica']: + retd['names'].append(rep['name']) + retd['idl'].append([di[0] for di in rep['deltas']]) + retd['deltas'].append(np.array([di[1:] for di in rep['deltas']])) + retd['is_merged'][rep['name']] = rep.get('is_merged', False) return retd def _gen_covobsd_from_cdatad(d): @@ -281,7 +294,6 @@ def import_json_string(json_string, verbose=True, full_output=False): cov = np.reshape(ens['cov'], layout) grad = ens['grad'] nobs = len(grad[0]) - print(nobs, grad) for i in range(nobs): retl.append({'name': name, 'cov': cov, 'grad': [g[i] for g in grad]}) retd[name] = retl @@ -293,17 +305,21 @@ def import_json_string(json_string, verbose=True, full_output=False): raise Exception("layout is %s has to be 1 for type Obs." % (layouts), RuntimeWarning) values = o['value'] - od = _gen_obsd_from_datad(o['data']) - cd = _gen_covobsd_from_cdatad(o['cdata']) + od = _gen_obsd_from_datad(o.get('data', {})) + cd = _gen_covobsd_from_cdatad(o.get('cdata', {})) - ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl']) + if od: + ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl']) + ret.is_merged = od['is_merged'] + else: + ret = Obs([], []) + ret._value = values[0] for name in cd: co = cd[name][0] ret._covobs[name] = Covobs(None, co['cov'], co['name'], grad=co['grad']) ret.names.append(co['name']) ret.reweighted = o.get('reweighted', False) - ret.is_merged = od['is_merged'] ret.tag = o.get('tag', [None])[0] return ret @@ -311,20 +327,25 @@ def import_json_string(json_string, verbose=True, full_output=False): layouts = o.get('layout', '1').strip() layout = int(layouts) values = o['value'] - od = _gen_obsd_from_datad(o['data']) - cd = _gen_covobsd_from_cdatad(o['cdata']) + od = _gen_obsd_from_datad(o.get('data', {})) + cd = _gen_covobsd_from_cdatad(o.get('cdata', {})) ret = [] taglist = o.get('tag', layout * [None]) for i in range(layout): - ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl'])) + if od: + ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl'])) + ret[-1].is_merged = od['is_merged'] + else: + ret.append(Obs([], [])) + ret[-1]._value = values[i] + print('Created Obs with means= ', values[i]) for name in cd: co = cd[name][i] ret[-1]._covobs[name] = Covobs(None, co['cov'], co['name'], grad=co['grad']) ret[-1].names.append(co['name']) ret[-1].reweighted = o.get('reweighted', False) - ret[-1].is_merged = od['is_merged'] ret[-1].tag = taglist[i] return ret @@ -333,19 +354,23 @@ def import_json_string(json_string, verbose=True, full_output=False): layout = [int(ls.strip()) for ls in layouts.split(',') if len(ls) > 0] N = np.prod(layout) values = o['value'] - od = _gen_obsd_from_datad(o['data']) - cd = _gen_covobsd_from_cdatad(o['cdata']) + od = _gen_obsd_from_datad(o.get('data', {})) + cd = _gen_covobsd_from_cdatad(o.get('cdata', {})) ret = [] taglist = o.get('tag', N * [None]) for i in range(N): - ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl'])) + if od: + ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl'])) + ret[-1].is_merged = od['is_merged'] + else: + ret.append(Obs([], [])) + ret[-1]._value = values[i] for name in cd: co = cd[name][i] ret[-1]._covobs[name] = Covobs(None, co['cov'], co['name'], grad=co['grad']) ret[-1].names.append(co['name']) ret[-1].reweighted = o.get('reweighted', False) - ret[-1].is_merged = od['is_merged'] ret[-1].tag = taglist[i] return np.reshape(ret, layout) diff --git a/tests/io_test.py b/tests/io_test.py index 7b64b2ff..151aede9 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -38,7 +38,7 @@ def test_jsonio(): tt.tag = 'Test Obs: Ä' - ol = [o4, do, testl, mat, arr, np.array([o]), np.array([tt, tt]), [tt, tt]] + ol = [o4, do, testl, mat, arr, np.array([o]), np.array([tt, tt]), [tt, tt], co1, co2, np.array(co2)] fname = 'test_rw' jsonio.dump_to_json(ol, fname, indent=1, description='[I am a tricky description]') @@ -50,7 +50,7 @@ def test_jsonio(): for o, r in zip(ol, rl): assert np.all(o == r) - for i in range(len(rl)): + for i in range(len(ol)): if isinstance(ol[i], pe.Obs): o = ol[i] - rl[i] assert(o.is_zero()) From a21554841ed4e4e6aa840a0d92c2d2521d358920 Mon Sep 17 00:00:00 2001 From: Simon Kuberski Date: Tue, 14 Dec 2021 16:31:33 +0100 Subject: [PATCH 137/220] Added tests for json --- tests/io_test.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/io_test.py b/tests/io_test.py index 151aede9..92781785 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -14,7 +14,8 @@ def test_jsonio(): o4.tag = otag do = o - .2 * o4 co1 = pe.cov_Obs(1., .123, 'cov1') - do *= co1 + co3 = pe.cov_Obs(4., .1 ** 2, 'cov3') + do *= co1 / co3 do.tag = {'A': 2} o5 = pe.pseudo_Obs(0.8, .1, 'two|r2') @@ -38,7 +39,7 @@ def test_jsonio(): tt.tag = 'Test Obs: Ä' - ol = [o4, do, testl, mat, arr, np.array([o]), np.array([tt, tt]), [tt, tt], co1, co2, np.array(co2)] + ol = [o4, do, testl, mat, arr, np.array([o]), np.array([tt, tt]), [tt, tt], co1, co2, np.array(co2), co1 / co2[0]] fname = 'test_rw' jsonio.dump_to_json(ol, fname, indent=1, description='[I am a tricky description]') From efa8d8a91d8e86076a8c0c89d11010fb8dd9acbb Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Wed, 15 Dec 2021 12:00:11 +0100 Subject: [PATCH 138/220] beta version of the openQCD.py input method --- pyerrors/input/openQCD.py | 150 +++++++++++++++++++++++++++++--------- 1 file changed, 114 insertions(+), 36 deletions(-) diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index 2483baa9..f11fb4e6 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -345,27 +345,71 @@ def _read_array_openQCD2(fp): return {'d': d, 'n': n, 'size': size, 'arr': arr} -def read_qtop(path, prefix, version = "1.2",**kwargs): +def read_qtop(path, prefix,c, dtr_cnfg = 1,**kwargs): """Read qtop format from given folder structure. Parameters ---------- - target -- specifies the topological sector to be reweighted to (default 0) - full -- if true read the charge instead of the reweighting factor. + path: + path of the measurement files + prefix: + prefix of the measurement files, e.g. _id0_r0.ms.dat + c: + ??? + dtr_cnfg: + ??? + target: int + specifies the topological sector to be reweighted to (default 0) + full: bool + if true read the charge instead of the reweighting factor. + version: str + version string of the openQCD (sfqcd) version used to create the ensemble + steps: int + step size of measurements + L: int + spatial length of the lattice in L/a. HAS to be set if version != sfqcd, since openQCD does not provide this in the header + r_start: list + offset of the first ensemble, making it easier to match later on with other Obs + r_stop: list + last ensemble that needs to be read + r_meas_start: list + offset of the first measured ensemble, if there is any + files: list + specify the exact files that need to be read from path, pratical if e.g. only one replicum is needed + names: list + Alternative labeling for replicas/ensembles. Has to have the appropriate length """ - dtr_cnfg = 4 - L = 20 - c = 0.35 + #dtr_cnfg = 4# was ist das denn hier? + #one could read L from the header in case of sfQCD + #c = 0.35 + known_versions = ["1.0","1.2","1.4","1.6","2.0", "sfqcd"] + version = "1.2" + if "version" in kwargs: + version = kwargs.get("version") + if not version in known_versions: + raise Exception("Unknown openQCD version.") target = 0 full = False - + if "steps" in kwargs: + steps = kwargs.get("steps") + else: + steps = 1 if 'target' in kwargs: target = kwargs.get('target') - - + if version == "sfqcd": + if "L" in kwargs: + supposed_L = kwargs.get("L") + else: + if not "L" in kwargs: + raise Exception("This version of openQCD needs you to provide the spatial length of the lattice as parameter 'L'.") + else: + L = kwargs.get("L") if kwargs.get('full'): full = True - + r_start = 1 + r_meas_start = 1 + if "r_meas_start" in kwargs: + r_meas_start = kwargs.get("r_meas_start") if "r_start" in kwargs: r_start = kwargs.get("r_start") if "r_stop" in kwargs: @@ -392,41 +436,62 @@ def read_qtop(path, prefix, version = "1.2",**kwargs): for rep,file in enumerate(files): with open(path+"/"+file, "rb") as fp: - #this, for now, is only for version 1.2 + #this, for now, is for version 1.2,1.4,1.6 and 2.0, but needs to be tested for the last 3, isncethe doc says its the same #header t = fp.read(12) - header = struct.unpack('iii', t) - dn = header[0] - nn = header[1] - tmax = header[2] - print('dn:', dn) + header = struct.unpack(' Date: Fri, 17 Dec 2021 12:08:08 +0100 Subject: [PATCH 139/220] hotfix, missing kwarg files in read_rwms method --- pyerrors/input/openQCD.py | 16 +++++++++------- pyerrors/input/utils.py | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 pyerrors/input/utils.py diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index f11fb4e6..08bb0223 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -39,13 +39,15 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): if not ls: raise Exception('Error, directory not found') - - # Exclude files with different names - for exc in ls: - if not fnmatch.fnmatch(exc, prefix + '*' + postfix + '.dat'): - ls = list(set(ls) - set([exc])) - if len(ls) > 1: - ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) + if 'files' in kwargs: + ls = kwargs.get('files') + else: + # Exclude files with different names + for exc in ls: + if not fnmatch.fnmatch(exc, prefix + '*' + postfix + '.dat'): + ls = list(set(ls) - set([exc])) + if len(ls) > 1: + ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) replica = len(ls) if 'r_start' in kwargs: diff --git a/pyerrors/input/utils.py b/pyerrors/input/utils.py new file mode 100644 index 00000000..f4264587 --- /dev/null +++ b/pyerrors/input/utils.py @@ -0,0 +1,15 @@ +import fnmatch + +def check_missing(idl,che): + missing = [] + for ind in che: + if not ind in idl: + missing.append(ind) + if(len(missing) == 0): + print("There are no measurements missing.") + else: + print(len(missing),"measurements missing") + miss_str = str(missing[0]) + for i in missing[1:]: + miss_str += ","+str(i) + print(miss_str) From c5292f8342469c731854c81005cf235ed1288222 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Fri, 17 Dec 2021 15:16:17 +0100 Subject: [PATCH 140/220] implemented idl into sfcf-read method --- pyerrors/input/sfcf.py | 255 +++++++++++++++------------------------- pyerrors/input/utils.py | 17 ++- 2 files changed, 105 insertions(+), 167 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 5915c56e..8ba9a3da 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -6,125 +6,41 @@ import fnmatch import re import numpy as np # Thinly-wrapped numpy from ..obs import Obs - - -def read_sfcf_old(path, prefix, name, quarks, noffset = 0, wf=0, wf2=0, **kwargs): - """Read sfcf format (from around 2012) from given folder structure. - - Keyword arguments - ----------------- - im -- if True, read imaginary instead of real part of the correlation function. - single -- if True, read a boundary-to-boundary correlation function with a single value - b2b -- if True, read a time-dependent boundary-to-boundary correlation function - names -- Alternative labeling for replicas/ensembles. Has to have the appropriate length - """ - if kwargs.get('im'): - im = 1 - part = 'imaginary' - else: - im = 0 - part = 'real' - - b2b = 0 - - if kwargs.get('b2b'): - b2b = 1 - - quarks = quarks.split(" ") - read = 0 - T = 0 - start = 0 - ls = [] - for (dirpath, dirnames, filenames) in os.walk(path): - ls.extend(dirnames) - break - if not ls: - print('Error, directory not found') - #sys.exit() - for exc in ls: - if fnmatch.fnmatch(exc, prefix + '*'): - ls = list(set(ls) - set(exc)) - if len(ls) > 1: - ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) - replica = len(ls) - print('Read', part, 'part of', name, 'from', prefix, ',', replica, 'replica') - if 'names' in kwargs: - new_names = kwargs.get('names') - if len(new_names) != replica: - raise Exception('Names does not have the required length', replica) - else: - new_names = ls - print(replica, 'replica') - for i, item in enumerate(ls): - print(item) - sub_ls = [] - for (dirpath, dirnames, filenames) in os.walk(path+'/'+item): - sub_ls.extend(dirnames) - break - for exc in sub_ls: - if fnmatch.fnmatch(exc, 'cfg*'): - sub_ls = list(set(sub_ls) - set(exc)) - sub_ls.sort(key=lambda x: int(x[3:])) - no_cfg = len(sub_ls) - print(no_cfg, 'configurations') - if i == 0: - with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: - for k, line in enumerate(fp): - #check if this is really the right file - pattern = "# "+name+" : offset "+str(noffset)+", wf "+"0" - #if b2b, a second wf is needed - if b2b: - pattern+=", wf_2 "+"0" - pattern+=" : "+quarks[0]+" - "+quarks[1] - - if read == 1 and not line.strip() and k > start + 1: - break - if read == 1 and k >= start: - T += 1 - if pattern in line: - #print(line) - read = 1 - start = k+1 - print(str(T)+" entries found.") - - deltas = [] - for j in range(T): - deltas.append([]) - - sublength = len(sub_ls) - for j in range(T): - deltas[j].append(np.zeros(sublength)) - - for cnfg, subitem in enumerate(sub_ls): - with open(path + '/' + item + '/' + subitem + '/'+name) as fp: - for k, line in enumerate(fp): - if(k >= start and k < start + T): - floats = list(map(float, line.split())) - deltas[k-start][i][cnfg] = floats[im] - - - result = [] - for t in range(T): - result.append(Obs(deltas[t], new_names)) - - return result - +from . import utils def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs): """Read sfcf c format from given folder structure. Parameters ---------- - quarks -- Label of the quarks used in the sfcf input file - noffset -- Offset of the source (only relevant when wavefunctions are used) - wf -- ID of wave function - wf2 -- ID of the second wavefunction (only relevant for boundary-to-boundary correlation functions) - im -- if True, read imaginary instead of real part of the correlation function. - b2b -- if True, read a time-dependent boundary-to-boundary correlation function - single -- if True, read time independent boundary to boundary correlation function - names -- Alternative labeling for replicas/ensembles. Has to have the appropriate length + quarks: str + Label of the quarks used in the sfcf input file. e.g. "quark quark" + for version 0.0 this does NOT need to be given with the typical " - " that is present in the output file, + this is done automatically for this version + noffset: int + Offset of the source (only relevant when wavefunctions are used) + wf: int + ID of wave function + wf2: int + ID of the second wavefunction (only relevant for boundary-to-boundary correlation functions) + im: bool + if True, read imaginary instead of real part of the correlation function. + b2b: bool + if True, read a time-dependent boundary-to-boundary correlation function + single: bool + if True, read time independent boundary to boundary correlation function + names: list + Alternative labeling for replicas/ensembles. Has to have the appropriate length ens_name : str replaces the name of the ensemble + version: str + version of SFCF, with which the measurement was done. if the compact output option (-c) was spectified, append a c to the version (e.g. "1.0c") + replica: list + list of replica to be read, default is all + files: list + list of files to be read per replica, default is all. for non-conpact ouztput format, hand the folders to be read here. + check_configs: + list of list of supposed configs, eg. [range(1,1000)] for one replicum with 1000 configs """ if kwargs.get('im'): im = 1 @@ -142,8 +58,8 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) else: b2b = 0 single = 0 - - files = [] + if "replica" in kwargs: + reps = kwargs.get("replica") if "files" in kwargs: files = kwargs.get("files") @@ -172,8 +88,8 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) if not ls: raise Exception('Error, directory not found') # Exclude folders with different names - if len(files) != 0: - ls = files + if "replica" in kwargs: + ls = reps else: for exc in ls: if not fnmatch.fnmatch(exc, prefix + '*'): @@ -182,9 +98,11 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) # New version, to cope with ids, etc. replica = len(ls) print('Read', part, 'part of', name, 'from', prefix[:-1], ',', replica, 'replica') - + idl = [] if 'names' in kwargs: new_names = kwargs.get('names') + if len(new_names)!=len(set(new_names)): + raise Exception("names are nor unique!") if len(new_names) != replica: raise Exception('Names does not have the required length', replica) else: @@ -194,59 +112,65 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) try: idx = entry.index('r') except: - idx = len(entry)-2 + raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") + if 'ens_name' in kwargs: new_names.append(kwargs.get('ens_name') + '|' + entry[idx:]) else: new_names.append(entry[:idx] + '|' + entry[idx:]) for i, item in enumerate(ls): sub_ls = [] - for (dirpath, dirnames, filenames) in os.walk(path + '/' + item): - if compact: - sub_ls.extend(filenames) - else: - sub_ls.extend(dirnames) - break - - #print(sub_ls) - for exc in sub_ls: - if compact: - if not fnmatch.fnmatch(exc, prefix + '*'): - sub_ls = list(set(sub_ls) - set([exc])) - sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) - else: - if not fnmatch.fnmatch(exc, 'cfg*'): - sub_ls = list(set(sub_ls) - set([exc])) - sub_ls.sort(key=lambda x: int(x[3:])) - - if compact: - first_cfg = int(re.findall(r'\d+', sub_ls[0])[-1]) - - last_cfg = len(sub_ls) + first_cfg - 1 - - for cfg in range(1, len(sub_ls)): - if int(re.findall(r'\d+', sub_ls[cfg])[-1]) != first_cfg + cfg: - last_cfg = cfg + first_cfg - 1 - break - - no_cfg = last_cfg - first_cfg + 1 - print(item, ':', no_cfg, 'evenly spaced configurations (', first_cfg, '-', last_cfg, ') ,', len(sub_ls) - no_cfg, 'configs omitted\n') + if "files" in kwargs: + sub_ls = kwargs.get("files") + sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) else: - no_cfg = len(sub_ls) - print(no_cfg, 'configurations') - - #here we have found all the files we need to look into. + for (dirpath, dirnames, filenames) in os.walk(path + '/' + item): + if compact: + sub_ls.extend(filenames) + else: + sub_ls.extend(dirnames) + break + + #print(sub_ls) + for exc in sub_ls: + if compact: + if not fnmatch.fnmatch(exc, prefix + '*'): + sub_ls = list(set(sub_ls) - set([exc])) + sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + else: + if not fnmatch.fnmatch(exc, 'cfg*'): + sub_ls = list(set(sub_ls) - set([exc])) + sub_ls.sort(key=lambda x: int(x[3:])) + #print(sub_ls) + rep_idl = [] + no_cfg = len(sub_ls) + for cfg in sub_ls: + try: + if compact: + rep_idl.append(int(cfg.split("n")[-1])) + else: + rep_idl.append(int(cfg[3:])) + except: + raise Exception("Couldn't parse idl from directroy, problem with file "+cfg) + rep_idl.sort() + #maybe there is a better way to print the idls + print(item, ':', no_cfg, ' configurations') + idl.append(rep_idl) + #here we have found all the files we need to look into. if i == 0: + #here, we want to find the place within the file, where the correlator we need is stored. + if compact: - + #to do so, the pattern needed is put together from the input values pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) if b2b: pattern += '\nwf_2 ' + str(wf2) - + #and the file is parsed through to find the pattern with open(path + '/' + item + '/' + sub_ls[0], 'r') as file: content = file.read() match = re.search(pattern, content) if match: + #the start and end point of the correlator in quaetion is extracted for later use in the other files start_read = content.count('\n', 0, match.start()) + 5 + b2b end_match = re.search(r'\n\s*\n', content[match.start():]) T = content[match.start():].count('\n', 0, end_match.start()) - 4 - b2b @@ -255,11 +179,11 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) else: raise Exception('Correlator with pattern\n' + pattern + '\nnot found.') else: - #print(path + '/' + item + '/')# + sub_ls[0] + '/' + name) + #this part does the same as above, but for non-compactified versions of the files with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: for k, line in enumerate(fp): if version == "0.0": - #check if this is really the right file + #check if this is really the right file by matchin pattern similar to above pattern = "# "+name+" : offset "+str(noffset)+", wf "+str(wf) #if b2b, a second wf is needed if b2b: @@ -284,19 +208,24 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) T -= b2b print(str(T)+" entries found.") #we found where the correlator that is to be read is in the files + #after preparing the datastructure the correlators get parsed into... deltas = [] for j in range(T): deltas.append([]) - + sublength = no_cfg for j in range(T): deltas[j].append(np.zeros(sublength)) + #... the actual parsing can start. we iterate through all measurement files in the path given... if compact: for cfg in range(no_cfg): with open(path + '/' + item + '/' + sub_ls[cfg]) as fp: lines = fp.readlines() + #check, if the correlator is in fact printed completely if(start_read + T>len(lines)): raise Exception("EOF before end of correlator data! Maybe "+path + '/' + item + '/' + sub_ls[cfg]+" is corrupted?") + #and start to read the correlator. + #the range here is chosen like this, since this allows for implementing a security check for every read correlator later... for k in range(start_read - 6,start_read + T): if k == start_read - 5 - b2b: if lines[k].strip() != 'name ' + name: @@ -307,6 +236,8 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) else: for cnfg, subitem in enumerate(sub_ls): with open(path + '/' + item + '/' + subitem + '/' + name) as fp: + #since the non-compatified files are typically not so long, we can iterate over the whole file. + #here one can also implement the chekc from above. for k, line in enumerate(fp): if(k >= start and k < start + T): floats = list(map(float, line.split())) @@ -315,9 +246,17 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) else: deltas[k - start][i][cnfg] = floats[1 + im - single] - + if "check_configs" in kwargs: + print("Chekcing for missing configs...") + che = kwargs.get("check_configs") + if not (len(che) == len(idl)): + raise Exception("check_configs has to be the same length as replica!") + for r in range(len(idl)): + print("checking "+new_names[r]) + utils.check_idl(idl[r], che[r]) + print("Done") result = [] for t in range(T): - result.append(Obs(deltas[t], new_names)) + result.append(Obs(deltas[t], new_names, idl = idl)) return result diff --git a/pyerrors/input/utils.py b/pyerrors/input/utils.py index f4264587..a8dd026e 100644 --- a/pyerrors/input/utils.py +++ b/pyerrors/input/utils.py @@ -1,14 +1,13 @@ -import fnmatch +"""Utilities for the input""" -def check_missing(idl,che): +def check_idl(idl,che): missing = [] - for ind in che: - if not ind in idl: - missing.append(ind) - if(len(missing) == 0): - print("There are no measurements missing.") - else: - print(len(missing),"measurements missing") + for c in che: + if not c in idl: + missing.append(c) + #print missing such that it can directly be parsed to slurm terminal + if not (len(missing) == 0): + print(len(missing),"configs missing") miss_str = str(missing[0]) for i in missing[1:]: miss_str += ","+str(i) From b55e410dcf27760c1709bcde67ca13df52cc2fa0 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Fri, 17 Dec 2021 15:20:04 +0100 Subject: [PATCH 141/220] input/__init__ edited to include utils --- pyerrors/input/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyerrors/input/__init__.py b/pyerrors/input/__init__.py index 2797841c..23948b4c 100644 --- a/pyerrors/input/__init__.py +++ b/pyerrors/input/__init__.py @@ -4,3 +4,4 @@ from . import json from . import misc from . import openQCD from . import sfcf +from . import utils From bc220fceaf6391b17dcd1e390f01394faeaa175e Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 20 Dec 2021 11:35:04 +0100 Subject: [PATCH 142/220] fix: get_item and reweighted now work with padded correlators. --- pyerrors/correlators.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 90dcf193..e2d8648e 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -65,14 +65,16 @@ class Corr: def __getitem__(self, idx): """Return the content of timeslice idx""" - if len(self.content[idx]) == 1: + if self.content[idx] is None: + return None + elif len(self.content[idx]) == 1: return self.content[idx][0] else: return self.content[idx] @property def reweighted(self): - bool_array = np.array([list(map(lambda x: x.reweighted, o)) for o in self.content]) + bool_array = np.array([list(map(lambda x: x.reweighted, o)) for o in list(filter(None.__ne__, self.content))]) if np.all(bool_array == 1): return True elif np.all(bool_array == 0): From 1c6510922738fd7654d71ce94699c48327ccdb31 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 20 Dec 2021 11:37:02 +0100 Subject: [PATCH 143/220] test: test for padded correlators added --- tests/correlators_test.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/correlators_test.py b/tests/correlators_test.py index 6c3418f8..0f43c8d6 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -99,6 +99,14 @@ def test_plateau(): with pytest.raises(Exception): my_corr.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.reweighted + [o for o in my_corr] + + def test_utility(): corr_content = [] for t in range(8): From 1cbbc68e8babb77e153ef6ec9f8dfbb526c09c61 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 20 Dec 2021 11:46:05 +0100 Subject: [PATCH 144/220] test criterion for correlated fit relaxed --- tests/fits_test.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/fits_test.py b/tests/fits_test.py index 8a9e0843..8a1759cb 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -93,10 +93,9 @@ def test_correlated_fit(): r = np.zeros((N, N)) for i in range(N): for j in range(N): - r[i, j] = np.exp(-0.1 * np.fabs(i - j)) + r[i, j] = np.exp(-0.8 * np.fabs(i - j)) errl = np.sqrt([3.4, 2.5, 3.6, 2.8, 4.2, 4.7, 4.9, 5.1, 3.2, 4.2]) - errl *= 4 for i in range(N): for j in range(N): r[i, j] *= errl[i] * errl[j] @@ -127,7 +126,7 @@ def test_correlated_fit(): for i in range(2): diff = fitp[i] - fitpc[i] diff.gamma_method() - assert(diff.is_zero_within_error(sigma=1.5)) + assert(diff.is_zero_within_error(sigma=5)) def test_total_least_squares(): From b50346dcf3504f64befce95fbcd0b38b55bdb5d9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 21 Dec 2021 20:28:08 +0100 Subject: [PATCH 145/220] feat: rank4 epsilon tensor added --- pyerrors/input/hadrons.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index efe4feb1..e139f2b2 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -298,6 +298,18 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None, vertices=["VA", "AV"]): return result_dict +def _epsilon_tensor(i, j, k, o): + """Rank-4 epsilon tensor + + Extension of https://codegolf.stackexchange.com/a/160375 + """ + test_set = set((i, j, k, o)) + if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))): + raise Exception("Unexpected input", i, j, k, o) + + return (i - j) * (j - k) * (k - i) * (i - o) * (j - o) * (o - k) / 12 + + def _get_lorentz_names(name): assert len(name) == 2 From c8cb0e4cb81ce28d24973693a96a5db2281a6e28 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 12:00:10 +0100 Subject: [PATCH 146/220] feat: epsilon tensors moved to dirac submodule, tests added --- pyerrors/dirac.py | 24 ++++++++++++++++++++++++ pyerrors/input/hadrons.py | 12 ------------ tests/dirac_test.py | 12 ++++++++++++ 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/pyerrors/dirac.py b/pyerrors/dirac.py index f5350b94..7f68cb22 100644 --- a/pyerrors/dirac.py +++ b/pyerrors/dirac.py @@ -22,6 +22,30 @@ identity = np.array( dtype=complex) +def epsilon_tensor(i, j, k): + """Rank-3 epsilon tensor + + Based on https://codegolf.stackexchange.com/a/160375 + """ + test_set = set((i, j, k)) + if not (test_set <= set((1, 2, 3)) or test_set <= set((0, 1, 2))): + raise Exception("Unexpected input", i, j, k) + + return (i - j) * (j - k) * (k - i) / 2 + + +def epsilon_tensor_rank4(i, j, k, o): + """Rank-4 epsilon tensor + + Extension of https://codegolf.stackexchange.com/a/160375 + """ + test_set = set((i, j, k, o)) + if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))): + raise Exception("Unexpected input", i, j, k, o) + + return (i - j) * (j - k) * (k - i) * (i - o) * (j - o) * (o - k) / 12 + + def Grid_gamma(gamma_tag): """Returns gamma matrix in Grid labeling.""" if gamma_tag == 'Identity': diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index e139f2b2..efe4feb1 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -298,18 +298,6 @@ def read_Fourquark_hd5(path, filestem, ens_id, idl=None, vertices=["VA", "AV"]): return result_dict -def _epsilon_tensor(i, j, k, o): - """Rank-4 epsilon tensor - - Extension of https://codegolf.stackexchange.com/a/160375 - """ - test_set = set((i, j, k, o)) - if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))): - raise Exception("Unexpected input", i, j, k, o) - - return (i - j) * (j - k) * (k - i) * (i - o) * (j - o) * (o - k) / 12 - - def _get_lorentz_names(name): assert len(name) == 2 diff --git a/tests/dirac_test.py b/tests/dirac_test.py index 0a2c0379..f36017a6 100644 --- a/tests/dirac_test.py +++ b/tests/dirac_test.py @@ -32,3 +32,15 @@ def test_grid_dirac(): pe.dirac.Grid_gamma(gamma) with pytest.raises(Exception): pe.dirac.Grid_gamma('Not a gamma matrix') + + +def test_epsilon_tensor(): + check = {(1, 2, 3) : 1.0, + (3, 1, 2) : 1.0, + (2, 3, 1) : 1.0, + (1, 1, 1) : 0.0, + (3, 2, 1) : -1.0, + (1, 3, 2) : -1.0, + (1, 1, 3) : 0.0} + for key, value in check.items(): + assert pe.dirac.epsilon_tensor(*key) == value From 3a57471ccf62d852dad80943691c7db4e31e12fc Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 12:06:28 +0100 Subject: [PATCH 147/220] test: tests for epsilon tensors extended --- tests/dirac_test.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/dirac_test.py b/tests/dirac_test.py index f36017a6..44812397 100644 --- a/tests/dirac_test.py +++ b/tests/dirac_test.py @@ -44,3 +44,20 @@ def test_epsilon_tensor(): (1, 1, 3) : 0.0} for key, value in check.items(): assert pe.dirac.epsilon_tensor(*key) == value + with pytest.raises(Exception): + pe.dirac.epsilon_tensor(0, 1, 3) + + +def test_epsilon_tensor_rank4(): + check = {(1, 4, 3, 2) : -1.0, + (1, 2, 3, 4) : 1.0, + (2, 1, 3, 4) : -1.0, + (4, 3, 2, 1) : 1.0, + (3, 2, 4, 3) : 0.0, + (0, 1, 2, 3) : 1.0, + (1, 1, 1, 1) : 0.0, + (1, 2, 3, 1) : 0.0} + for key, value in check.items(): + assert pe.dirac.epsilon_tensor_rank4(*key) == value + with pytest.raises(Exception): + pe.dirac.epsilon_tensor_rank4(0, 1, 3, 4) From 2ccbd97b39191c0ee8597bce6e55a2809e8716a3 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 12:20:55 +0100 Subject: [PATCH 148/220] test: tests for reweighting, merging and correlate extended --- tests/obs_test.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/obs_test.py b/tests/obs_test.py index 989a0064..9aeaf11d 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -428,6 +428,14 @@ def test_reweighting(): assert r_obs[0].reweighted r_obs2 = r_obs[0] * my_obs assert r_obs2.reweighted + my_covobs = pe.cov_Obs(1.0, 0.003, 'cov') + with pytest.raises(Exception): + pe.reweight(my_obs, [my_covobs]) + my_obs2 = pe.Obs([np.random.rand(1000)], ['t2']) + with pytest.raises(Exception): + pe.reweight(my_obs, [my_obs + my_obs2]) + with pytest.raises(Exception): + pe.reweight(my_irregular_obs, [my_obs]) def test_merge_obs(): @@ -436,6 +444,12 @@ def test_merge_obs(): merged = pe.merge_obs([my_obs1, my_obs2]) diff = merged - my_obs2 - my_obs1 assert diff == -(my_obs1.value + my_obs2.value) / 2 + with pytest.raises(Exception): + pe.merge_obs([my_obs1, my_obs1]) + my_covobs = pe.cov_Obs(1.0, 0.003, 'cov') + with pytest.raises(Exception): + pe.merge_obs([my_obs1, my_covobs]) + def test_merge_obs_r_values(): @@ -468,6 +482,17 @@ def test_correlate(): corr3 = pe.correlate(my_obs5, my_obs6) assert my_obs5.idl == corr3.idl + my_new_obs = pe.Obs([np.random.rand(100)], ['q3']) + with pytest.raises(Exception): + pe.correlate(my_obs1, my_new_obs) + my_covobs = pe.cov_Obs(1.0, 0.003, 'cov') + with pytest.raises(Exception): + pe.correlate(my_covobs, my_covobs) + r_obs = pe.reweight(my_obs1, [my_obs1])[0] + with pytest.warns(RuntimeWarning): + pe.correlate(r_obs, r_obs) + + def test_irregular_error_propagation(): obs_list = [pe.Obs([np.random.rand(100)], ['t']), From 64a8bc690fe2d34ffecfba222d65429e51982ee8 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 12:21:40 +0100 Subject: [PATCH 149/220] refactor!: Obs.print method removed --- pyerrors/obs.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index edef264e..6724e346 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -434,10 +434,6 @@ class Obs: my_string_list.append(my_string) print('\n'.join(my_string_list)) - def print(self, level=1): - warnings.warn("Method 'print' renamed to 'details'", DeprecationWarning) - self.details(level > 1) - def is_zero_within_error(self, sigma=1): """Checks whether the observable is zero within 'sigma' standard errors. From b7da7f4b7e00861c894bed58bb2c4860e06c6947 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 12:29:42 +0100 Subject: [PATCH 150/220] refactor: unnecessary overloading of np.sinc removed, tests added --- pyerrors/obs.py | 3 --- tests/obs_test.py | 7 +++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 6724e346..e19cc617 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -795,9 +795,6 @@ class Obs: def arctanh(self): return derived_observable(lambda x: anp.arctanh(x[0]), [self]) - def sinc(self): - return derived_observable(lambda x: anp.sinc(x[0]), [self]) - class CObs: """Class for a complex valued observable.""" diff --git a/tests/obs_test.py b/tests/obs_test.py index 9aeaf11d..a5e72ec9 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -57,6 +57,7 @@ def test_dump(): value = np.random.normal(5, 10) dvalue = np.abs(np.random.normal(0, 1)) test_obs = pe.pseudo_Obs(value, dvalue, 't') + test_obs.dump('test_dump', path=".") test_obs.dump('test_dump') new_obs = pe.load_object('test_dump.p') os.remove('test_dump.p') @@ -105,6 +106,12 @@ def test_function_overloading(): assert np.sqrt(b ** 2) == b assert np.sqrt(b) ** 2 == b + np.arcsin(1 / b) + np.arccos(1 / b) + np.arctan(1 / b) + np.arctanh(1 / b) + np.sinc(1 / b) + def test_overloading_vectorization(): a = np.random.randint(1, 100, 10) From 1ba7566a620a5f6ab1ffb5a5333798b2a35b3274 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 14:19:24 +0100 Subject: [PATCH 151/220] refactor!: Code for numerical differentation of linalg operations removed --- pyerrors/linalg.py | 223 +-------------------------------------------- 1 file changed, 1 insertion(+), 222 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index 6eac3e69..507569b2 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -248,10 +248,7 @@ def _mat_mat_op(op, obs, **kwargs): A[n, m] = entry B[n, m] = 0.0 big_matrix = np.block([[A, -B], [B, A]]) - if kwargs.get('num_grad') is True: - op_big_matrix = _num_diff_mat_mat_op(op, big_matrix, **kwargs) - else: - op_big_matrix = derived_observable(lambda x, **kwargs: op(x), [big_matrix], array_mode=True)[0] + op_big_matrix = derived_observable(lambda x, **kwargs: op(x), [big_matrix], array_mode=True)[0] dim = op_big_matrix.shape[0] op_A = op_big_matrix[0: dim // 2, 0: dim // 2] op_B = op_big_matrix[dim // 2:, 0: dim // 2] @@ -260,15 +257,11 @@ def _mat_mat_op(op, obs, **kwargs): res[n, m] = CObs(op_A[n, m], op_B[n, m]) return res else: - if kwargs.get('num_grad') is True: - return _num_diff_mat_mat_op(op, obs, **kwargs) return derived_observable(lambda x, **kwargs: op(x), [obs], array_mode=True)[0] def eigh(obs, **kwargs): """Computes the eigenvalues and eigenvectors of a given hermitian matrix of Obs according to np.linalg.eigh.""" - if kwargs.get('num_grad') is True: - return _num_diff_eigh(obs, **kwargs) w = derived_observable(lambda x, **kwargs: anp.linalg.eigh(x)[0], obs) v = derived_observable(lambda x, **kwargs: anp.linalg.eigh(x)[1], obs) return w, v @@ -276,232 +269,18 @@ def eigh(obs, **kwargs): def eig(obs, **kwargs): """Computes the eigenvalues of a given matrix of Obs according to np.linalg.eig.""" - if kwargs.get('num_grad') is True: - return _num_diff_eig(obs, **kwargs) - # Note: Automatic differentiation of eig is implemented in the git of autograd - # but not yet released to PyPi (1.3) w = derived_observable(lambda x, **kwargs: anp.real(anp.linalg.eig(x)[0]), obs) return w def pinv(obs, **kwargs): """Computes the Moore-Penrose pseudoinverse of a matrix of Obs.""" - if kwargs.get('num_grad') is True: - return _num_diff_pinv(obs, **kwargs) return derived_observable(lambda x, **kwargs: anp.linalg.pinv(x), obs) def svd(obs, **kwargs): """Computes the singular value decomposition of a matrix of Obs.""" - if kwargs.get('num_grad') is True: - return _num_diff_svd(obs, **kwargs) u = derived_observable(lambda x, **kwargs: anp.linalg.svd(x, full_matrices=False)[0], obs) s = derived_observable(lambda x, **kwargs: anp.linalg.svd(x, full_matrices=False)[1], obs) vh = derived_observable(lambda x, **kwargs: anp.linalg.svd(x, full_matrices=False)[2], obs) return (u, s, vh) - - -# Variants for numerical differentiation - -def _num_diff_mat_mat_op(op, obs, **kwargs): - """Computes the matrix to matrix operation op to a given matrix of Obs elementwise - which is suitable for numerical differentiation.""" - def _mat(x, **kwargs): - dim = int(np.sqrt(len(x))) - if np.sqrt(len(x)) != dim: - raise Exception('Input has to have dim**2 entries') - - mat = [] - for i in range(dim): - row = [] - for j in range(dim): - row.append(x[j + dim * i]) - mat.append(row) - - return op(np.array(mat))[kwargs.get('i')][kwargs.get('j')] - - if isinstance(obs, np.ndarray): - raveled_obs = (1 * (obs.ravel())).tolist() - elif isinstance(obs, list): - raveled_obs = obs - else: - raise TypeError('Unproper type of input.') - - dim = int(np.sqrt(len(raveled_obs))) - - res_mat = [] - for i in range(dim): - row = [] - for j in range(dim): - row.append(derived_observable(_mat, raveled_obs, i=i, j=j, **kwargs)) - res_mat.append(row) - - return np.array(res_mat) @ np.identity(dim) - - -def _num_diff_eigh(obs, **kwargs): - """Computes the eigenvalues and eigenvectors of a given hermitian matrix of Obs according to np.linalg.eigh - elementwise which is suitable for numerical differentiation.""" - def _mat(x, **kwargs): - dim = int(np.sqrt(len(x))) - if np.sqrt(len(x)) != dim: - raise Exception('Input has to have dim**2 entries') - - mat = [] - for i in range(dim): - row = [] - for j in range(dim): - row.append(x[j + dim * i]) - mat.append(row) - - n = kwargs.get('n') - res = np.linalg.eigh(np.array(mat))[n] - - if n == 0: - return res[kwargs.get('i')] - else: - return res[kwargs.get('i')][kwargs.get('j')] - - if isinstance(obs, np.ndarray): - raveled_obs = (1 * (obs.ravel())).tolist() - elif isinstance(obs, list): - raveled_obs = obs - else: - raise TypeError('Unproper type of input.') - - dim = int(np.sqrt(len(raveled_obs))) - - res_vec = [] - for i in range(dim): - res_vec.append(derived_observable(_mat, raveled_obs, n=0, i=i, **kwargs)) - - res_mat = [] - for i in range(dim): - row = [] - for j in range(dim): - row.append(derived_observable(_mat, raveled_obs, n=1, i=i, j=j, **kwargs)) - res_mat.append(row) - - return (np.array(res_vec) @ np.identity(dim), np.array(res_mat) @ np.identity(dim)) - - -def _num_diff_eig(obs, **kwargs): - """Computes the eigenvalues of a given matrix of Obs according to np.linalg.eig - elementwise which is suitable for numerical differentiation.""" - def _mat(x, **kwargs): - dim = int(np.sqrt(len(x))) - if np.sqrt(len(x)) != dim: - raise Exception('Input has to have dim**2 entries') - - mat = [] - for i in range(dim): - row = [] - for j in range(dim): - row.append(x[j + dim * i]) - mat.append(row) - - n = kwargs.get('n') - res = np.linalg.eig(np.array(mat))[n] - - if n == 0: - # Discard imaginary part of eigenvalue here - return np.real(res[kwargs.get('i')]) - else: - return res[kwargs.get('i')][kwargs.get('j')] - - if isinstance(obs, np.ndarray): - raveled_obs = (1 * (obs.ravel())).tolist() - elif isinstance(obs, list): - raveled_obs = obs - else: - raise TypeError('Unproper type of input.') - - dim = int(np.sqrt(len(raveled_obs))) - - res_vec = [] - for i in range(dim): - # Note: Automatic differentiation of eig is implemented in the git of autograd - # but not yet released to PyPi (1.3) - res_vec.append(derived_observable(_mat, raveled_obs, n=0, i=i, **kwargs)) - - return np.array(res_vec) @ np.identity(dim) - - -def _num_diff_pinv(obs, **kwargs): - """Computes the Moore-Penrose pseudoinverse of a matrix of Obs elementwise which is suitable - for numerical differentiation.""" - def _mat(x, **kwargs): - shape = kwargs.get('shape') - - mat = [] - for i in range(shape[0]): - row = [] - for j in range(shape[1]): - row.append(x[j + shape[1] * i]) - mat.append(row) - - return np.linalg.pinv(np.array(mat))[kwargs.get('i')][kwargs.get('j')] - - if isinstance(obs, np.ndarray): - shape = obs.shape - raveled_obs = (1 * (obs.ravel())).tolist() - else: - raise TypeError('Unproper type of input.') - - res_mat = [] - for i in range(shape[1]): - row = [] - for j in range(shape[0]): - row.append(derived_observable(_mat, raveled_obs, shape=shape, i=i, j=j, **kwargs)) - res_mat.append(row) - - return np.array(res_mat) @ np.identity(shape[0]) - - -def _num_diff_svd(obs, **kwargs): - """Computes the singular value decomposition of a matrix of Obs elementwise which - is suitable for numerical differentiation.""" - def _mat(x, **kwargs): - shape = kwargs.get('shape') - - mat = [] - for i in range(shape[0]): - row = [] - for j in range(shape[1]): - row.append(x[j + shape[1] * i]) - mat.append(row) - - res = np.linalg.svd(np.array(mat), full_matrices=False) - - if kwargs.get('n') == 1: - return res[1][kwargs.get('i')] - else: - return res[kwargs.get('n')][kwargs.get('i')][kwargs.get('j')] - - if isinstance(obs, np.ndarray): - shape = obs.shape - raveled_obs = (1 * (obs.ravel())).tolist() - else: - raise TypeError('Unproper type of input.') - - mid_index = min(shape[0], shape[1]) - - res_mat0 = [] - for i in range(shape[0]): - row = [] - for j in range(mid_index): - row.append(derived_observable(_mat, raveled_obs, shape=shape, n=0, i=i, j=j, **kwargs)) - res_mat0.append(row) - - res_mat1 = [] - for i in range(mid_index): - res_mat1.append(derived_observable(_mat, raveled_obs, shape=shape, n=1, i=i, **kwargs)) - - res_mat2 = [] - for i in range(mid_index): - row = [] - for j in range(shape[1]): - row.append(derived_observable(_mat, raveled_obs, shape=shape, n=2, i=i, j=j, **kwargs)) - res_mat2.append(row) - - return (np.array(res_mat0) @ np.identity(mid_index), np.array(res_mat1) @ np.identity(mid_index), np.array(res_mat2) @ np.identity(shape[1])) From b8c26fd41d9c2f14c7ab3f29241e93f8c7fcfb2f Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 14:26:17 +0100 Subject: [PATCH 152/220] refactor: unnecessary code in scalar_mat_op removed --- pyerrors/linalg.py | 4 ---- tests/linalg_test.py | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pyerrors/linalg.py b/pyerrors/linalg.py index 507569b2..61740e40 100644 --- a/pyerrors/linalg.py +++ b/pyerrors/linalg.py @@ -213,8 +213,6 @@ def _scalar_mat_op(op, obs, **kwargs): """Computes the matrix to scalar operation op to a given matrix of Obs.""" def _mat(x, **kwargs): dim = int(np.sqrt(len(x))) - if np.sqrt(len(x)) != dim: - raise Exception('Input has to have dim**2 entries') mat = [] for i in range(dim): @@ -227,8 +225,6 @@ def _scalar_mat_op(op, obs, **kwargs): if isinstance(obs, np.ndarray): raveled_obs = (1 * (obs.ravel())).tolist() - elif isinstance(obs, list): - raveled_obs = obs else: raise TypeError('Unproper type of input.') return derived_observable(_mat, raveled_obs, **kwargs) diff --git a/tests/linalg_test.py b/tests/linalg_test.py index f446d972..61c71514 100644 --- a/tests/linalg_test.py +++ b/tests/linalg_test.py @@ -314,6 +314,8 @@ def test_matrix_functions(): # Check determinant assert pe.linalg.det(np.diag(np.diag(matrix))) == np.prod(np.diag(matrix)) + pe.linalg.pinv(matrix[:,:3]) + def test_complex_matrix_operations(): dimension = 4 From 8d8fa82bbebc7535ecc2a1dfc293878f12b885cb Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 14:42:57 +0100 Subject: [PATCH 153/220] feat: Path can now be specified in Corr.dump --- pyerrors/correlators.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index e2d8648e..e074f95c 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -584,16 +584,17 @@ class Corr: return - def dump(self, filename): + def dump(self, filename, **kwargs): """Dumps the Corr into a pickle file Parameters ---------- filename : str Name of the file + path : str + specifies a custom path for the file (default '.') """ - dump_object(self, filename) - return + dump_object(self, filename, **kwargs) def print(self, range=[0, None]): print(self.__repr__(range)) From 6c7f1f06c9783564ee0d68312b07e77397b60bfd Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 14:56:49 +0100 Subject: [PATCH 154/220] test: mpm and corr dump test extended --- tests/correlators_test.py | 1 + tests/mpm_test.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 tests/mpm_test.py diff --git a/tests/correlators_test.py b/tests/correlators_test.py index 0f43c8d6..16719337 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -118,6 +118,7 @@ def test_utility(): corr.print([2, 4]) corr.show() + corr.dump('test_dump', path='.') corr.dump('test_dump') new_corr = pe.load_object('test_dump.p') os.remove('test_dump.p') diff --git a/tests/mpm_test.py b/tests/mpm_test.py new file mode 100644 index 00000000..165f09bc --- /dev/null +++ b/tests/mpm_test.py @@ -0,0 +1,14 @@ +import numpy as np +import pyerrors as pe +import pytest + +np.random.seed(0) + + +def test_mpm(): + corr_content = [] + for t in range(8): + f = 0.8 * np.exp(-0.4 * t) + corr_content.append(pe.pseudo_Obs(np.random.normal(f, 1e-2 * f), 1e-2 * f, 't')) + + res = pe.mpm.matrix_pencil_method(corr_content) From 47d6aa104efde09dc9e98caaeb060a09497cfd82 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 15:10:22 +0100 Subject: [PATCH 155/220] test: corr tests extended --- tests/correlators_test.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/correlators_test.py b/tests/correlators_test.py index 16719337..f4f5794a 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -31,6 +31,16 @@ def test_function_overloading(): assert np.isclose(con[0].dvalue, t2.dvalue) assert np.allclose(con[0].deltas['t'], t2.deltas['t']) + np.arcsin(corr_a) + np.arccos(corr_a) + np.arctan(corr_a) + np.arcsinh(corr_a) + np.arccosh(corr_a + 1.1) + np.arctanh(corr_a) + + with pytest.raises(Exception): + np.arccosh(corr_a) + def test_modify_correlator(): corr_content = [] @@ -47,7 +57,10 @@ def test_modify_correlator(): corr.roll(np.random.randint(100)) corr.deriv(symmetric=True) corr.deriv(symmetric=False) + corr.deriv().deriv() corr.second_deriv() + corr.second_deriv().second_deriv() + def test_m_eff(): From 145a211bd03393d6369397bb45bcd50bf3b724a5 Mon Sep 17 00:00:00 2001 From: JanNeuendorf <75676159+JanNeuendorf@users.noreply.github.com> Date: Thu, 23 Dec 2021 15:23:59 +0100 Subject: [PATCH 156/220] Some more changes to corr - GEVP method can return lists of eigenvector by solving the GEVP at multiple timeslices. The ordering is done according to arXiv:2004.10472 [hep-lat] - The projection method can deal with those lists - Constructor for Hankel matrix from a single corr - typechecks allow for complex-content - .real and .imag work on corrs - But everything else with CObs does not yet work. --- pyerrors/correlators.py | 281 +++++++++++++++++++++++++++++++++------- 1 file changed, 237 insertions(+), 44 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index e074f95c..c7427cd3 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -3,7 +3,7 @@ import numpy as np import autograd.numpy as anp import matplotlib.pyplot as plt import scipy.linalg -from .obs import Obs, reweight, correlate +from .obs import Obs, reweight, correlate, CObs from .misc import dump_object from .fits import least_squares from .linalg import eigh, inv, cholesky @@ -30,7 +30,7 @@ class Corr: raise TypeError('Corr__init__ expects a list of timeslices.') # data_input can have multiple shapes. The simplest one is a list of Obs. # We check, if this is the case - if all([isinstance(item, Obs) for item in data_input]): + if all([ (isinstance(item, Obs) or isinstance(item, CObs)) for item in data_input]): self.content = [np.asarray([item]) for item in data_input] # Wrapping the Obs in an array ensures that the data structure is consistent with smearing matrices. self.N = 1 # number of smearings @@ -97,7 +97,7 @@ class Corr: # The method can use one or two vectors. # If two are specified it returns v1@G@v2 (the order might be very important.) # By default it will return the lowest source, which usually means unsmeared-unsmeared (0,0), but it does not have to - def projected(self, vector_l=None, vector_r=None): + def projected(self, vector_l=None, vector_r=None,normalize=False): if self.N == 1: raise Exception("Trying to project a Corr, that already has N=1.") # This Exception is in no way necessary. One could just return self @@ -109,17 +109,34 @@ class Corr: vector_l, vector_r = np.asarray([1.] + (self.N - 1) * [0.]), np.asarray([1.] + (self.N - 1) * [0.]) elif(vector_r is None): vector_r = vector_l + + if isinstance(vector_l,list) and not isinstance(vector_r,list): + if len(vector_l)!=self.T: + raise Exception("Length of vector list must be equal to T") + vector_r=[vector_r]*self.T + if isinstance(vector_r,list) and not isinstance(vector_l,list): + if len(vector_r)!=self.T: + raise Exception("Length of vector list must be equal to T") + vector_l=[vector_l]*self.T + + + if not isinstance(vector_l,list): + if not vector_l.shape == vector_r.shape == (self.N,): + raise Exception("Vectors are of wrong shape!") + if normalize: + vector_l, vector_r = vector_l / np.sqrt((vector_l @ vector_l)), vector_r / np.sqrt(vector_r @ vector_r) + #if (not (0.95 < vector_r @ vector_r < 1.05)) or (not (0.95 < vector_l @ vector_l < 1.05)): + #print("Vectors are normalized before projection!") - if not vector_l.shape == vector_r.shape == (self.N,): - raise Exception("Vectors are of wrong shape!") - - # We always normalize before projecting! But we only raise a warning, when it is clear, they where not meant to be normalized. - if (not (0.95 < vector_r @ vector_r < 1.05)) or (not (0.95 < vector_l @ vector_l < 1.05)): - print("Vectors are normalized before projection!") - - vector_l, vector_r = vector_l / np.sqrt((vector_l @ vector_l)), vector_r / np.sqrt(vector_r @ vector_r) - - newcontent = [None if (item is None) else np.asarray([vector_l.T @ item @ vector_r]) for item in self.content] + newcontent = [None if (item is None) else np.asarray([vector_l.T @ item @ vector_r]) for item in self.content] + + else: + #There are no checks here yet. There are so many possible scenarios, where this can go wrong. + if normalize: + for t in range(self.T): + vector_l[t], vector_r[t] = vector_l[t] / np.sqrt((vector_l[t] @ vector_l[t])), vector_r[t] / np.sqrt(vector_r[t] @ vector_r[t]) + + newcontent = [None if (self.content[t] is None or vector_l[t] is None or vector_r[t] is None) else np.asarray([vector_l[t].T @ self.content[t] @ vector_r[t]]) for t in range(self.T)] return Corr(newcontent) def sum(self): @@ -195,20 +212,52 @@ class Corr: if self.N == 1: raise Exception("Trying to symmetrize a smearing matrix, that already has N=1.") - # We also include a simple GEVP method based on Scipy.linalg - def GEVP(self, t0, ts, state=1): - if (self.content[t0] is None) or (self.content[ts] is None): - raise Exception("Corr not defined at t0/ts") - G0, Gt = np.empty([self.N, self.N], dtype="double"), np.empty([self.N, self.N], dtype="double") - for i in range(self.N): - for j in range(self.N): - G0[i, j] = self.content[t0][i, j].value - Gt[i, j] = self.content[ts][i, j].value + # There are two ways, the GEVP metod can be called. + # 1. return_list=False will return a single eigenvector, normalized according to V*C(t_0)*V=1 + # 2. return_list=True will return a new eigenvector for every timeslice. The time t_s is used to order the vectors according to. arXiv:2004.10472 [hep-lat] + + + def GEVP(self, t0, ts, state=0, sorting="Eigenvalue",return_list=False): + if not return_list: + if (self.content[t0] is None) or (self.content[ts] is None): + raise Exception("Corr not defined at t0/ts") + G0, Gt = np.empty([self.N, self.N], dtype="double"), np.empty([self.N, self.N], dtype="double") + for i in range(self.N): + for j in range(self.N): + G0[i, j] = self.content[t0][i, j].value + Gt[i, j] = self.content[ts][i, j].value + + sp_vecs=GEVP_solver(Gt,G0) + sp_vec=sp_vecs[state] + return sp_vec + if return_list: + all_vecs=[] + for t in range(self.T): + try: + G0, Gt = np.empty([self.N, self.N], dtype="double"), np.empty([self.N, self.N], dtype="double") + for i in range(self.N): + for j in range(self.N): + G0[i, j] = self.content[t0][i, j].value + Gt[i, j] = self.content[t][i, j].value + + sp_vecs = GEVP_solver(Gt,G0) + if sorting=="Eigenvalue": + sp_vec = sp_vecs[state] + all_vecs.append(sp_vec) + else: + all_vecs.append(sp_vecs) + + + + except: #This could contain a check for real eigenvectors + all_vecs.append(None) + if sorting=="Eigenvector": + all_vecs=sort_vectors(all_vecs,ts) + all_vecs=[a[state] for a in all_vecs] + + return all_vecs + - sp_val, sp_vec = scipy.linalg.eig(Gt, G0) - sp_vec = sp_vec[:, np.argsort(sp_val)[-state]] # We only want the eigenvector belonging to the selected state - sp_vec = sp_vec / np.sqrt(sp_vec @ sp_vec) - return sp_vec def Eigenvalue(self, t0, state=1): G = self.smearing_symmetric() @@ -219,13 +268,56 @@ class Corr: LTi = inv(LT) newcontent = [] for t in range(self.T): - Gt = G.content[t] - M = Li @ Gt @ LTi - eigenvalues = eigh(M)[0] - eigenvalue = eigenvalues[-state] - newcontent.append(eigenvalue) + if self.content[t] is None: + newcontent.append(None) + else: + Gt = G.content[t] + M = Li @ Gt @ LTi + eigenvalues = eigh(M)[0] + eigenvalue = eigenvalues[-state] + newcontent.append(eigenvalue) return Corr(newcontent) + + + def Hankel(self,N,periodic=False): + #Constructs an NxN Hankel matrix + #C(t) c(t+1) ... c(t+n-1) + #C(t+1) c(t+2) ... c(t+n) + #................. + #C(t+(n-1)) c(t+n) ... c(t+2(n-1)) + + if self.N!=1: + raise Exception("Multi-operator Prony not implemented!") + + + array=np.empty([N,N],dtype="object") + new_content=[] + for t in range(self.T): + new_content.append(array.copy()) + + + def wrap(i): + if i>=self.T: + return i-self.T + return i + + for t in range(self.T): + for i in range(N): + for j in range(N): + if periodic: + new_content[t][i,j]=self.content[wrap(t+i+j)][0] + elif (t+i+j)>=self.T: + new_content[t]=None + else: + new_content[t][i,j]=self.content[t+i+j][0] + + + + return Corr(new_content) + + + def roll(self, dt): """Periodically shift the correlator by dt timeslices @@ -260,7 +352,7 @@ class Corr: new_content.append(None) else: new_content.append(np.array([correlate(o, partner.content[x0][0]) for o in t_slice])) - elif isinstance(partner, Obs): + elif isinstance(partner, Obs): # Should this include CObs? new_content.append(np.array([correlate(o, partner) for o in t_slice])) else: raise Exception("Can only correlate with an Obs or a Corr.") @@ -584,25 +676,35 @@ class Corr: return - def dump(self, filename, **kwargs): + def dump(self, filename): """Dumps the Corr into a pickle file Parameters ---------- filename : str Name of the file - path : str - specifies a custom path for the file (default '.') """ - dump_object(self, filename, **kwargs) + dump_object(self, filename) + return def print(self, range=[0, None]): print(self.__repr__(range)) def __repr__(self, range=[0, None]): content_string = "" + + content_string+="Corr T="+str(self.T)+" N="+str(self.N) +"\n"#+" filled with"+ str(type(self.content[0][0])) there should be a good solution here + + + if self.tag is not None: content_string += "Description: " + self.tag + "\n" + if self.N!=1: + return content_string + #This avoids a crash for N>1. I do not know, what else to do here. I like the list representation for N==1. We could print only one "smearing" or one matrix. Printing everything will just + #be a wall of numbers. + + if range[1]: range[1] += 1 content_string += 'x0/a\tCorr(x0/a)\n------------------\n' @@ -636,7 +738,7 @@ class Corr: newcontent.append(self.content[t] + y.content[t]) return Corr(newcontent) - elif isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float): + elif isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float) or isinstance(y, CObs): newcontent = [] for t in range(self.T): if (self.content[t] is None): @@ -659,7 +761,7 @@ class Corr: newcontent.append(self.content[t] * y.content[t]) return Corr(newcontent) - elif isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float): + elif isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float) or isinstance(y, CObs): newcontent = [] for t in range(self.T): if (self.content[t] is None): @@ -692,9 +794,14 @@ class Corr: raise Exception("Division returns completely undefined correlator") return Corr(newcontent) - elif isinstance(y, Obs): - if y.value == 0: - raise Exception('Division by zero will return undefined correlator') + elif isinstance(y, Obs) or isinstance(y, CObs): + if isinstance(y, Obs): + if y.value == 0: + raise Exception('Division by zero will return undefined correlator') + if isinstance(y, CObs): + if y.is_zero(): + raise Exception('Division by zero will return undefined correlator') + newcontent = [] for t in range(self.T): if (self.content[t] is None): @@ -724,7 +831,7 @@ class Corr: return self + (-y) def __pow__(self, y): - if isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float): + if isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float) or isinstance(y, CObs): newcontent = [None if (item is None) else item**y for item in self.content] return Corr(newcontent, prange=self.prange) else: @@ -747,11 +854,11 @@ class Corr: return Corr(newcontent, prange=self.prange) def _apply_func_to_corr(self, func): - newcontent = [None if (item is None) else func(item) for item in self.content] + newcontent = [None if (item is None ) else func(item) for item in self.content] for t in range(self.T): if newcontent[t] is None: continue - if np.isnan(np.sum(newcontent[t]).value): + if np.isnan(np.sum(newcontent[t]).value): newcontent[t] = None if all([item is None for item in newcontent]): raise Exception('Operation returns undefined correlator') @@ -805,3 +912,89 @@ class Corr: def __rtruediv__(self, y): return (self / y) ** (-1) + + @property + def real(self): + def return_real(obs_OR_cobs): + if isinstance(obs_OR_cobs, CObs): + return obs_OR_cobs.real + else: + return obs_OR_cobs + + return self._apply_func_to_corr(return_real) + + @property + def imag(self): + def return_imag(obs_OR_cobs): + if isinstance(obs_OR_cobs, CObs): + return obs_OR_cobs.imag + else: + return obs_OR_cobs*0 #So it stays the right type + + return self._apply_func_to_corr(return_imag) + + + + + + + + + + + + + + + + +def sort_vectors(vec_set, ts): #Helper function used to find a set of Eigenvectors consistent over all timeslices + reference_sorting=np.array(vec_set[ts]) + N=reference_sorting.shape[0] + sorted_vec_set=[] + for t in range(len(vec_set)): + if vec_set[t] is None: + sorted_vec_set.append(None) + elif not t==ts: + perms=permutation([i for i in range(N)]) + best_score=0 + for perm in perms: + current_score=1 + for k in range(N): + new_sorting=reference_sorting.copy() + new_sorting[perm[k],:]=vec_set[t][k] + current_score*=abs(np.linalg.det(new_sorting)) + if current_score>best_score: + best_score=current_score + best_perm=perm + #print("best perm", best_perm) + sorted_vec_set.append([vec_set[t][k] for k in best_perm]) + else: + sorted_vec_set.append(vec_set[t]) + + + return sorted_vec_set + + + + + + +def permutation(lst): #Shamelessly copied + if len(lst) == 1: + return [lst] + l = [] + for i in range(len(lst)): + m = lst[i] + remLst = lst[:i] + lst[i+1:] + # Generating all permutations where m is first + for p in permutation(remLst): + l.append([m] + p) + return l + + +def GEVP_solver(Gt,G0): #Just so normalization an sorting does not need to be repeated. Here we could later put in some checks + sp_val, sp_vecs = scipy.linalg.eig(Gt, G0) + sp_vecs=[sp_vecs[:, np.argsort(sp_val)[-i]]for i in range(1,sp_vecs.shape[0]+1) ] + sp_vecs=[v/np.sqrt((v.T@G0@v)) for v in sp_vecs] + return sp_vecs \ No newline at end of file From 773fd8e4c5ad557b4364a8dd7b27aca406cbccb9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 23 Dec 2021 16:42:53 +0100 Subject: [PATCH 157/220] docs: documentation of Corr objects added --- pyerrors/__init__.py | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index 9c427818..856b5178 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -193,6 +193,56 @@ Make sure to check the autocorrelation time with e.g. `pyerrors.obs.Obs.plot_rho For the full API see `pyerrors.obs.Obs`. # Correlators +When one is not interested in single observables but correlation functions, `pyerrors` offers the `Corr` class which simplifies the corresponding error propagation and provides the user with a set of standard methods. In order to initialize a `Corr` objects one needs to arrange the data as a list of `Obs´ +```python +my_corr = pe.Corr([obs_0, obs_1, obs_2, obs_3]) +print(my_corr) +> x0/a Corr(x0/a) +> ------------------ +> 0 0.7957(80) +> 1 0.5156(51) +> 2 0.3227(33) +> 3 0.2041(21) +``` +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) +print(my_corr) +> x0/a Corr(x0/a) +> ------------------ +> 0 +> 1 0.7957(80) +> 2 0.5156(51) +> 3 0.3227(33) +> 4 0.2041(21) +> 5 +``` +The individual entries of a correlator can be accessed via slicing +```python +print(my_corr[3]) +> 0.3227(33) +``` +Error propagation with the `Corr` class works very similar to `Obs` objects. Mathematical operations are overloaded and `Corr` objects can be computed together with other `Corr` objects, `Obs` objects or real numbers and integers. +```python +my_new_corr = 0.3 * my_corr[2] * my_corr * my_corr + 12 / my_corr +``` + +`pyerrors` provides the user with a set of regularly used methods for the manipulation of correlator objects: +- `Corr.gamma_method` applies the gamma method to all entries of the correlator. +- `Corr.m_eff` to construct effective masses. Various variants for periodic and fixed temporal boundary conditions are available. +- `Corr.deriv` returns the first derivative of the correlator as `Corr`. Different discretizations of the numerical derivative are available. +- `Corr.second_deriv` returns the second derivative of the correlator as `Corr`. Different discretizations of the numerical derivative are available. +- `Corr.symmetric` symmetrizes parity even correlations functions, assuming periodic boundary conditions. +- `Corr.anti_symmetric` anti-symmetrizes parity odd correlations functions, assuming periodic boundary conditions. +- `Corr.T_symmetry` averages a correlator with its time symmetry partner, assuming fixed boundary conditions. +- `Corr.plateau` extracts a plateau value from the correlator in a given range. +- `Corr.roll` periodically shifts the correlator. +- `Corr.reverse` reverses the time ordering of the correlator. +- `Corr.correlate` constructs a disconnected correlation function from the correlator and another `Corr` or `Obs` object. +- `Corr.reweight` reweights the correlator. + +`pyerrors` can also handle matrices of correlation functions and extract energy states from these matrices via a generalized eigenvalue problem (see `pyerrors.correlators.Corr.GEVP). + For the full API see `pyerrors.correlators.Corr`. # Complex observables From 01ada964b271d583e0e78f37157aacc5516616e9 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Mon, 3 Jan 2022 11:20:25 +0100 Subject: [PATCH 158/220] added read_qtop_sector method outsourcing funtionality of former 'full' key --- pyerrors/input/openQCD.py | 107 +++++++++++++++++++++++--------------- 1 file changed, 66 insertions(+), 41 deletions(-) diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index 08bb0223..f0b3a3df 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -8,6 +8,7 @@ import struct import numpy as np # Thinly-wrapped numpy from ..obs import Obs from ..fits import fit_lin +from . import utils def read_rwms(path, prefix, version='2.0', names=None, **kwargs): @@ -347,7 +348,7 @@ def _read_array_openQCD2(fp): return {'d': d, 'n': n, 'size': size, 'arr': arr} -def read_qtop(path, prefix,c, dtr_cnfg = 1,**kwargs): +def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): """Read qtop format from given folder structure. Parameters @@ -356,14 +357,12 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1,**kwargs): path of the measurement files prefix: prefix of the measurement files, e.g. _id0_r0.ms.dat - c: - ??? - dtr_cnfg: - ??? - target: int - specifies the topological sector to be reweighted to (default 0) - full: bool - if true read the charge instead of the reweighting factor. + c: double + Smearing radius in units of the lattice extent, c = sqrt(8 t0) / L + dtr_cnfg: int + (optional) parameter that specifies the number of trajectories between two configs. + if it is not set, the distance between two measurements in the file is assumed to be + the distance between two configurations. version: str version string of the openQCD (sfqcd) version used to create the ensemble steps: int @@ -373,7 +372,7 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1,**kwargs): r_start: list offset of the first ensemble, making it easier to match later on with other Obs r_stop: list - last ensemble that needs to be read + last configurations that need to be read (per replicum) r_meas_start: list offset of the first measured ensemble, if there is any files: list @@ -385,13 +384,10 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1,**kwargs): #one could read L from the header in case of sfQCD #c = 0.35 known_versions = ["1.0","1.2","1.4","1.6","2.0", "sfqcd"] - version = "1.2" - if "version" in kwargs: - version = kwargs.get("version") - if not version in known_versions: - raise Exception("Unknown openQCD version.") + + if not version in known_versions: + raise Exception("Unknown openQCD version.") target = 0 - full = False if "steps" in kwargs: steps = kwargs.get("steps") else: @@ -406,8 +402,6 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1,**kwargs): raise Exception("This version of openQCD needs you to provide the spatial length of the lattice as parameter 'L'.") else: L = kwargs.get("L") - if kwargs.get('full'): - full = True r_start = 1 r_meas_start = 1 if "r_meas_start" in kwargs: @@ -445,8 +439,6 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1,**kwargs): dn = header[0] # step size in integration steps "dnms" nn = header[1] # number of measurements, so "ntot"/dn tmax = header[2]# lattice T/a - #hier fehlen die L/a Angaben im header von Simon - #also muss man L nur für den fall von Fabian setzen if version == "sfqcd": t = fp.read(12) Ls = struct.unpack(' Date: Mon, 3 Jan 2022 14:40:12 +0100 Subject: [PATCH 159/220] read_qtop now also hands over idl of the result Obs --- pyerrors/input/openQCD.py | 92 +++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index f0b3a3df..5c44fd2f 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -363,10 +363,11 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): (optional) parameter that specifies the number of trajectories between two configs. if it is not set, the distance between two measurements in the file is assumed to be the distance between two configurations. + steps: int + (optional) (maybe only necessary for openQCD2.0) + nt step size, guessed if not given version: str version string of the openQCD (sfqcd) version used to create the ensemble - steps: int - step size of measurements L: int spatial length of the lattice in L/a. HAS to be set if version != sfqcd, since openQCD does not provide this in the header r_start: list @@ -380,7 +381,6 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): names: list Alternative labeling for replicas/ensembles. Has to have the appropriate length """ - #dtr_cnfg = 4# was ist das denn hier? #one could read L from the header in case of sfQCD #c = 0.35 known_versions = ["1.0","1.2","1.4","1.6","2.0", "sfqcd"] @@ -390,8 +390,7 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): target = 0 if "steps" in kwargs: steps = kwargs.get("steps") - else: - steps = 1 + if 'target' in kwargs: target = kwargs.get('target') if version == "sfqcd": @@ -429,6 +428,7 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): rep_names = [] deltas = [] + idl = [] for rep,file in enumerate(files): with open(path+"/"+file, "rb") as fp: @@ -457,30 +457,34 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): print('eps:', eps) Q = [] - - i = r_meas_start*steps + ncs = [] while 0 < 1: t = fp.read(4) #int nt if(len(t) < 4): break - nc = struct.unpack('i',t)[0] - if(nc != i): - print(nc) - raise Exception('Config ' + str(i) + ' missing?') - else: - t = fp.read(8 * tmax * (nn + 1))#Wsl - t = fp.read(8 * tmax * (nn + 1))#Ysl - t = fp.read(8 * tmax * (nn + 1))#Qsl, which is asked for in this method - #unpack the array of Qtops, on each timeslice t=0,...,tmax-1 and the - #measurement number in = 0...nn (see README.qcd1) - tmpd = struct.unpack('d' * tmax * (nn + 1), t) - Q.append(tmpd) - i += 1*steps + ncs.append(struct.unpack('i',t)[0]) + t = fp.read(8 * tmax * (nn + 1))#Wsl + t = fp.read(8 * tmax * (nn + 1))#Ysl + t = fp.read(8 * tmax * (nn + 1))#Qsl, which is asked for in this method + #unpack the array of Qtops, on each timeslice t=0,...,tmax-1 and the + #measurement number in = 0...nn (see README.qcd1) + tmpd = struct.unpack('d' * tmax * (nn + 1), t) + Q.append(tmpd) #set step by reading all entries, then set stepsize, then check if everything is there #make a dtr_config param, which is checked against difference... #difference != step - #len(set(difference)) == 1 - #!!!also implement the idl stuff for everything... + + if not len(set([ncs[i]-ncs[i-1] for i in range(1,len(ncs))])): + raise Exception("Irregularities in stepsize found") + else: + if 'steps' in kwargs: + if steps != ncs[1]-ncs[0]: + raise Exception("steps and the found stepsize are not the same") + else: + steps = ncs[1]-ncs[0] + if ncs[0]//steps == ncs[0]/steps: + r_meas_start = ncs[0]//steps + print(len(Q)) print('max_t:', dn * (nn) * eps) @@ -499,36 +503,40 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): Q_round = [] for i in range(len(Q) // dtr_cnfg): Q_round.append(round(Q_sum[dtr_cnfg * i][index_aim])) - - replica = len(files) - - truncated_file = file[:-7] #as seen in previous examples, this could lead to some weird behaviour... maybe -7 fixes this. - print(truncated_file) - try: - idx = truncated_file.index('r') - except: - if not "names" in kwargs: - raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") + if len(Q_round) != len(ncs)//dtr_cnfg: + raise Exception("qtops and ncs dont have the same length") + + #replica = len(files) + + truncated_file = file[:-7] + print(truncated_file) + idl_start = 1 - # this might be a quite fishy way to find out which replicum we are actually talking about... if "r_start" in kwargs: - Q_round = Q_round[r_start[int(truncated_file[idx+1:])-1]:] + Q_round = Q_round[r_start[rep]:] + idl_start = r_start[rep] if "r_stop" in kwargs: - Q_round = Q_round[:r_stop[int(truncated_file[idx+1:])-1]] - if "ens_name" in kwargs: - ens_name = kwargs.get("ens_name") - else: - ens_name = truncated_file[:idx] + Q_round = Q_round[:r_stop[rep]] + idl_stop = idl_start+len(Q_round) #keyword "names" prevails over "ens_name" if not "names" in kwargs: + try: + idx = truncated_file.index('r') + except: + if not "names" in kwargs: + raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") + if "ens_name" in kwargs: + ens_name = kwargs.get("ens_name") + else: + ens_name = truncated_file[:idx] rep_names.append(ens_name + '|' + truncated_file[idx:]) else: names = kwargs.get("names") rep_names = names deltas.append(np.array(Q_round)) - - - result = Obs(deltas, rep_names) + idl.append(range(idl_start,idl_stop)) + #print(idl) + result = Obs(deltas, rep_names, idl = idl) return result def read_qtop_sector(target = 0, **kwargs): From b8b1d3612556e1bfdb06526d0c79f2a03cfe2b03 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Mon, 3 Jan 2022 14:41:14 +0100 Subject: [PATCH 160/220] small bug fixes after first pull request --- pyerrors/input/sfcf.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 8ba9a3da..6382e5f0 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -8,7 +8,7 @@ import numpy as np # Thinly-wrapped numpy from ..obs import Obs from . import utils -def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs): +def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = "1.0", **kwargs): """Read sfcf c format from given folder structure. Parameters @@ -66,8 +66,7 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) #due to higher usage in current projects, compact file format is default compact = True #get version string - version = "1.0" - known_versions = ["0.0","1.0","2.0","1.0c","2.0c"] + known_versions = ["0.0","1.0","2.0","1.0c","2.0c","1.0a","2.0a"] if "version" in kwargs: version = kwargs.get("version") if not version in known_versions: @@ -247,7 +246,7 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, **kwargs) deltas[k - start][i][cnfg] = floats[1 + im - single] if "check_configs" in kwargs: - print("Chekcing for missing configs...") + print("Checking for missing configs...") che = kwargs.get("check_configs") if not (len(che) == len(idl)): raise Exception("check_configs has to be the same length as replica!") From 31c2ada963593d3f41c0ba25ed214212f7842391 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Mon, 3 Jan 2022 14:46:19 +0100 Subject: [PATCH 161/220] corrected small error in init --- pyerrors/input/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyerrors/input/__init__.py b/pyerrors/input/__init__.py index 23948b4c..2797841c 100644 --- a/pyerrors/input/__init__.py +++ b/pyerrors/input/__init__.py @@ -4,4 +4,3 @@ from . import json from . import misc from . import openQCD from . import sfcf -from . import utils From ebdc17aa664f8096d4372f09427546125ec47cd7 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Mon, 3 Jan 2022 21:34:04 +0100 Subject: [PATCH 162/220] implemented read_sfcf for append-mode output, bug fixes --- pyerrors/input/sfcf.py | 401 +++++++++++++++++++++++++---------------- 1 file changed, 249 insertions(+), 152 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 6382e5f0..5095e3ce 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -8,7 +8,7 @@ import numpy as np # Thinly-wrapped numpy from ..obs import Obs from . import utils -def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = "1.0", **kwargs): +def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = "1.0c", **kwargs): """Read sfcf c format from given folder structure. Parameters @@ -65,186 +65,283 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = #due to higher usage in current projects, compact file format is default compact = True + appended = False #get version string known_versions = ["0.0","1.0","2.0","1.0c","2.0c","1.0a","2.0a"] - if "version" in kwargs: - version = kwargs.get("version") - if not version in known_versions: - raise Exception("This version is not known!") - #if the letter c is appended to the version, the compact fileformat is used (former read_sfcf_c) - if(version[-1] == "c"): - compact = True - version = version[:-1] - else: - compact = False + + if not version in known_versions: + raise Exception("This version is not known!") + #if the letter c is appended to the version, the compact fileformat is used (former read_sfcf_c) + if(version[-1] == "c"): + appended = False + compact = True + version = version[:-1] + elif(version[-1] == "a"): + appended = True + compact = False + version = version[:-1] + else: + compact = False + appended = False read = 0 T = 0 start = 0 ls = [] - for (dirpath, dirnames, filenames) in os.walk(path): - ls.extend(dirnames) - break - if not ls: - raise Exception('Error, directory not found') - # Exclude folders with different names if "replica" in kwargs: ls = reps else: + for (dirpath, dirnames, filenames) in os.walk(path): + if not appended: + ls.extend(dirnames) + else: + ls.extend(filenames) + break + if not ls: + raise Exception('Error, directory not found') + # Exclude folders with different names for exc in ls: if not fnmatch.fnmatch(exc, prefix + '*'): ls = list(set(ls) - set([exc])) if len(ls) > 1: ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) # New version, to cope with ids, etc. - replica = len(ls) + if not appended: + replica = len(ls) + else: + replica = len([l.split(".")[-1] for l in ls])//len(set([l.split(".")[-1] for l in ls])) print('Read', part, 'part of', name, 'from', prefix[:-1], ',', replica, 'replica') - idl = [] if 'names' in kwargs: new_names = kwargs.get('names') if len(new_names)!=len(set(new_names)): - raise Exception("names are nor unique!") + raise Exception("names are not unique!") if len(new_names) != replica: raise Exception('Names does not have the required length', replica) else: # Adjust replica names to new bookmarking system + new_names = [] - for entry in ls: - try: - idx = entry.index('r') - except: - raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") - - if 'ens_name' in kwargs: - new_names.append(kwargs.get('ens_name') + '|' + entry[idx:]) - else: - new_names.append(entry[:idx] + '|' + entry[idx:]) - for i, item in enumerate(ls): - sub_ls = [] - if "files" in kwargs: - sub_ls = kwargs.get("files") - sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + if not appended: + for entry in ls: + try: + idx = entry.index('r') + except: + raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") + + if 'ens_name' in kwargs: + new_names.append(kwargs.get('ens_name') + '|' + entry[idx:]) + else: + new_names.append(entry[:idx] + '|' + entry[idx:]) else: - for (dirpath, dirnames, filenames) in os.walk(path + '/' + item): - if compact: - sub_ls.extend(filenames) - else: - sub_ls.extend(dirnames) - break - - #print(sub_ls) - for exc in sub_ls: - if compact: - if not fnmatch.fnmatch(exc, prefix + '*'): - sub_ls = list(set(sub_ls) - set([exc])) - sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) - else: - if not fnmatch.fnmatch(exc, 'cfg*'): - sub_ls = list(set(sub_ls) - set([exc])) - sub_ls.sort(key=lambda x: int(x[3:])) - #print(sub_ls) - rep_idl = [] - no_cfg = len(sub_ls) - for cfg in sub_ls: - try: - if compact: - rep_idl.append(int(cfg.split("n")[-1])) - else: - rep_idl.append(int(cfg[3:])) - except: - raise Exception("Couldn't parse idl from directroy, problem with file "+cfg) - rep_idl.sort() - #maybe there is a better way to print the idls - print(item, ':', no_cfg, ' configurations') - idl.append(rep_idl) - #here we have found all the files we need to look into. - if i == 0: - #here, we want to find the place within the file, where the correlator we need is stored. - if compact: - #to do so, the pattern needed is put together from the input values - pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) - if b2b: - pattern += '\nwf_2 ' + str(wf2) - #and the file is parsed through to find the pattern - with open(path + '/' + item + '/' + sub_ls[0], 'r') as file: - content = file.read() - match = re.search(pattern, content) - if match: - #the start and end point of the correlator in quaetion is extracted for later use in the other files - start_read = content.count('\n', 0, match.start()) + 5 + b2b - end_match = re.search(r'\n\s*\n', content[match.start():]) - T = content[match.start():].count('\n', 0, end_match.start()) - 4 - b2b - assert T > 0 - print(T, 'entries, starting to read in line', start_read) - else: - raise Exception('Correlator with pattern\n' + pattern + '\nnot found.') + for exc in ls: + if not fnmatch.fnmatch(exc, prefix + '*.'+name): + ls = list(set(ls) - set([exc])) + ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + for entry in ls: + myentry = entry.removesuffix("."+name) + try: + idx = myentry.index('r') + except: + raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") + + if 'ens_name' in kwargs: + new_names.append(kwargs.get('ens_name') + '|' + myentry[idx:]) + else: + new_names.append(myentry[:idx] + '|' + myentry[idx:]) + #print(new_names) + idl = [] + if not appended: + for i, item in enumerate(ls): + sub_ls = [] + if "files" in kwargs: + sub_ls = kwargs.get("files") + sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) else: - #this part does the same as above, but for non-compactified versions of the files - with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: - for k, line in enumerate(fp): - if version == "0.0": - #check if this is really the right file by matchin pattern similar to above - pattern = "# "+name+" : offset "+str(noffset)+", wf "+str(wf) - #if b2b, a second wf is needed - if b2b: - pattern+=", wf_2 "+str(wf2) - qs = quarks.split(" ") - pattern+=" : "+qs[0]+" - "+qs[1] - #print(pattern) - if read == 1 and not line.strip() and k > start + 1: - break - if read == 1 and k >= start: - T += 1 - - if version == "0.0": - if pattern in line: - #print(line) - read = 1 - start = k+1 + for (dirpath, dirnames, filenames) in os.walk(path + '/' + item): + if compact: + sub_ls.extend(filenames) + else: + sub_ls.extend(dirnames) + break + + #print(sub_ls) + for exc in sub_ls: + if compact: + if not fnmatch.fnmatch(exc, prefix + '*'): + sub_ls = list(set(sub_ls) - set([exc])) + sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + else: + if not fnmatch.fnmatch(exc, 'cfg*'): + sub_ls = list(set(sub_ls) - set([exc])) + sub_ls.sort(key=lambda x: int(x[3:])) + #print(sub_ls) + rep_idl = [] + no_cfg = len(sub_ls) + for cfg in sub_ls: + try: + if compact: + rep_idl.append(int(cfg.split("n")[-1])) + else: + rep_idl.append(int(cfg[3:])) + except: + raise Exception("Couldn't parse idl from directroy, problem with file "+cfg) + rep_idl.sort() + #maybe there is a better way to print the idls + print(item, ':', no_cfg, ' configurations') + idl.append(rep_idl) + #here we have found all the files we need to look into. + if i == 0: + #here, we want to find the place within the file, where the correlator we need is stored. + if compact: + #to do so, the pattern needed is put together from the input values + pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) + if b2b: + pattern += '\nwf_2 ' + str(wf2) + #and the file is parsed through to find the pattern + with open(path + '/' + item + '/' + sub_ls[0], 'r') as file: + content = file.read() + match = re.search(pattern, content) + if match: + #the start and end point of the correlator in quaetion is extracted for later use in the other files + start_read = content.count('\n', 0, match.start()) + 5 + b2b + end_match = re.search(r'\n\s*\n', content[match.start():]) + T = content[match.start():].count('\n', 0, end_match.start()) - 4 - b2b + assert T > 0 + print(T, 'entries, starting to read in line', start_read) else: - if '[correlator]' in line: - read = 1 - start = k + 7 + b2b - T -= b2b - print(str(T)+" entries found.") - #we found where the correlator that is to be read is in the files - #after preparing the datastructure the correlators get parsed into... - deltas = [] - for j in range(T): - deltas.append([]) - - sublength = no_cfg - for j in range(T): - deltas[j].append(np.zeros(sublength)) - #... the actual parsing can start. we iterate through all measurement files in the path given... - if compact: - for cfg in range(no_cfg): - with open(path + '/' + item + '/' + sub_ls[cfg]) as fp: - lines = fp.readlines() - #check, if the correlator is in fact printed completely - if(start_read + T>len(lines)): - raise Exception("EOF before end of correlator data! Maybe "+path + '/' + item + '/' + sub_ls[cfg]+" is corrupted?") - #and start to read the correlator. - #the range here is chosen like this, since this allows for implementing a security check for every read correlator later... - for k in range(start_read - 6,start_read + T): - if k == start_read - 5 - b2b: - if lines[k].strip() != 'name ' + name: - raise Exception('Wrong format', sub_ls[cfg]) - if(k >= start_read and k < start_read + T): - floats = list(map(float, lines[k].split())) - deltas[k - start_read][i][cfg] = floats[-2:][im] - else: - for cnfg, subitem in enumerate(sub_ls): - with open(path + '/' + item + '/' + subitem + '/' + name) as fp: - #since the non-compatified files are typically not so long, we can iterate over the whole file. - #here one can also implement the chekc from above. - for k, line in enumerate(fp): - if(k >= start and k < start + T): - floats = list(map(float, line.split())) + raise Exception('Correlator with pattern\n' + pattern + '\nnot found.') + else: + #this part does the same as above, but for non-compactified versions of the files + with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: + for k, line in enumerate(fp): if version == "0.0": - deltas[k-start][i][cnfg] = floats[im] - else: - deltas[k - start][i][cnfg] = floats[1 + im - single] + #check if this is really the right file by matchin pattern similar to above + pattern = "# "+name+" : offset "+str(noffset)+", wf "+str(wf) + #if b2b, a second wf is needed + if b2b: + pattern+=", wf_2 "+str(wf2) + qs = quarks.split(" ") + pattern+=" : "+qs[0]+" - "+qs[1] + #print(pattern) + if read == 1 and not line.strip() and k > start + 1: + break + if read == 1 and k >= start: + T += 1 + if version == "0.0": + if pattern in line: + #print(line) + read = 1 + start = k+1 + else: + if '[correlator]' in line: + read = 1 + start = k + 7 + b2b + T -= b2b + print(str(T)+" entries found.") + #we found where the correlator that is to be read is in the files + #after preparing the datastructure the correlators get parsed into... + deltas = [] + for j in range(T): + deltas.append([]) + + + for t in range(T): + deltas[t].append(np.zeros(no_cfg)) + #... the actual parsing can start. we iterate through all measurement files in the path given... + if compact: + for cfg in range(no_cfg): + with open(path + '/' + item + '/' + sub_ls[cfg]) as fp: + lines = fp.readlines() + #check, if the correlator is in fact printed completely + if(start_read + T>len(lines)): + raise Exception("EOF before end of correlator data! Maybe "+path + '/' + item + '/' + sub_ls[cfg]+" is corrupted?") + #and start to read the correlator. + #the range here is chosen like this, since this allows for implementing a security check for every read correlator later... + for k in range(start_read - 6,start_read + T): + if k == start_read - 5 - b2b: + if lines[k].strip() != 'name ' + name: + raise Exception('Wrong format', sub_ls[cfg]) + if(k >= start_read and k < start_read + T): + floats = list(map(float, lines[k].split())) + deltas[k - start_read][i][cfg] = floats[-2:][im] + else: + for cnfg, subitem in enumerate(sub_ls): + with open(path + '/' + item + '/' + subitem + '/' + name) as fp: + #since the non-compatified files are typically not so long, we can iterate over the whole file. + #here one can also implement the chekc from above. + for k, line in enumerate(fp): + if(k >= start and k < start + T): + floats = list(map(float, line.split())) + if version == "0.0": + deltas[k-start][i][cnfg] = floats[im] + else: + deltas[k - start][i][cnfg] = floats[1 + im - single] + + else: + for exc in ls: + if not fnmatch.fnmatch(exc, prefix + '*.'+name): + ls = list(set(ls) - set([exc])) + ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + #print(ls) + pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) + if b2b: + pattern += '\nwf_2 ' + str(wf2) + for rep,file in enumerate(ls): + rep_idl = [] + with open(path + '/' + file, 'r') as fp: + content = fp.readlines() + data_starts = [] + for l,line in enumerate(content): + if "[run]" in line: + data_starts.append(l) + if len(set([data_starts[i]-data_starts[i-1] for i in range(1,len(data_starts))])) > 1: + raise Exception ("Irregularities in file structure found, not all runs have the same output length") + #print(data_starts) + #first chunk of data + chunk = content[:data_starts[1]] + for l,line in enumerate(chunk): + if line.startswith("gauge_name"): + gauge_line = l + #meta_data["gauge_name"] = (line.strip()).split("/")[-1] + elif line.startswith("[correlator]"): + corr_line = l + found_pat = "" + for li in chunk[corr_line+1:corr_line+6+b2b]: + found_pat += li + if re.search(pattern,found_pat): + start_read = corr_line+7+b2b + T=len(chunk)-1-start_read + if rep == 0: + deltas = [] + for t in range(T): + deltas.append([]) + for t in range(T): + deltas[t].append(np.zeros(len(data_starts))) + #all other chunks should follow the same structure + for cnfg in range(len(data_starts)): + start = data_starts[cnfg] + stop = start+data_starts[1] + chunk = content[start:stop] + #meta_data = {} + + try: + rep_idl.append(int(chunk[gauge_line].split("n")[-1])) + except: + raise Exception("Couldn't parse idl from directroy, problem with chunk around line "+gauge_line) + + found_pat = "" + for li in chunk[corr_line+1:corr_line+6+b2b]: + found_pat += li + if re.search(pattern,found_pat): + #print("found pattern") + for t,line in enumerate(chunk[start_read:start_read+T]): + floats = list(map(float, line.split())) + deltas[t][rep][cnfg] = floats[-2:][im] + idl.append(rep_idl) + + #print(new_names) + #print(deltas) + #print(idl) if "check_configs" in kwargs: print("Checking for missing configs...") che = kwargs.get("check_configs") From 5d0d56596f7680e2df084dbee9bff9d5238b732f Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 5 Jan 2022 20:08:08 +0100 Subject: [PATCH 163/220] refactor: redundant tree parameter removed from input/hadrons/read_meson_hd5 --- pyerrors/input/hadrons.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pyerrors/input/hadrons.py b/pyerrors/input/hadrons.py index efe4feb1..92e4bc40 100644 --- a/pyerrors/input/hadrons.py +++ b/pyerrors/input/hadrons.py @@ -58,16 +58,13 @@ def read_meson_hd5(path, filestem, ens_id, meson='meson_0', tree='meson', idl=No meson : str label of the meson to be extracted, standard value meson_0 which corresponds to the pseudoscalar pseudoscalar two-point function. - tree : str - Label of the upmost directory in the hdf5 file, default 'meson' - for outputs of the Meson module. Can be altered to read input - from other modules with similar structures. idl : range If specified only configurations in the given range are read in. """ files, idx = _get_files(path, filestem, idl) + tree = meson.rsplit('_')[0] corr_data = [] infos = [] for hd5_file in files: From 2af19c9c8e28e4d995e6cf245c5b1c279fe05aec Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 10:58:49 +0100 Subject: [PATCH 164/220] feat: example 01 updated --- examples/01_basic_example.ipynb | 150 +++++++------------------------- 1 file changed, 32 insertions(+), 118 deletions(-) diff --git a/examples/01_basic_example.ipynb b/examples/01_basic_example.ipynb index e529c865..834f9d39 100644 --- a/examples/01_basic_example.ipynb +++ b/examples/01_basic_example.ipynb @@ -65,8 +65,8 @@ "metadata": {}, "outputs": [], "source": [ - "obs1 = pe.Obs([test_sample1], ['ens1'])\n", - "obs2 = pe.Obs([test_sample2], ['ens1'])" + "obs1 = pe.Obs([test_sample1], ['ensemble1'])\n", + "obs2 = pe.Obs([test_sample2], ['ensemble1'])" ] }, { @@ -96,7 +96,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If we are now interested in the error of obs3, we can use the `gamma_method` to compute it and then print the object to the notebook" + "If we are now interested in the error of `obs3`, we can use the `gamma_method` to compute it and then print the object to the notebook" ] }, { @@ -108,7 +108,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Obs[1.387(19)]\n" + "1.367(20)\n" ] } ], @@ -121,7 +121,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With print level 1 we can take a look at the integrated autocorrelation time estimated by the automatic windowing procedure." + "With the method `details` we can take a look at the integrated autocorrelation time estimated by the automatic windowing procedure as well as the detailed content of the `Obs` object." ] }, { @@ -133,13 +133,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Result\t 1.38669742e+00 +/- 1.94840399e-02 +/- 9.74201997e-04 (1.405%)\n", - " t_int\t 5.01998002e-01 +/- 4.47213596e-02 S = 2.00\n" + "Result\t 1.36706932e+00 +/- 2.04253682e-02 +/- 1.02126841e-03 (1.494%)\n", + " t_int\t 5.01998002e-01 +/- 4.47213595e-02 S = 2.00\n", + "1000 samples in 1 ensemble:\n", + " · Ensemble 'ensemble1' : 1000 configurations (from 1 to 1000)\n" ] } ], "source": [ - "obs3.print(1)" + "obs3.details()" ] }, { @@ -156,7 +158,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAGJCAYAAAC5Lib1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAqXUlEQVR4nO3da4xc533f8d9/77zsznApUqZ1X0pqwrKOTEpWDDs1Iu22BmIlcEFKKZQWCBCRcYHUNlpwS/WFoDcWlkWTuEaRcm0gQGOioLmJ08ovVJBy4USNLUtcKw4jo5Y4kijKVFba3ZlZXvY2+/TFnFnNzu4s9zJnnnP5foABd85l96+zoz2/8zzPeY455wQAAIDGavFdAAAAQBIRsgAAAEJAyAIAAAgBIQsAACAEhCwAAIAQELIAAABCQMgCAAAIQZvvAnwxM5P0cUlTvmsBAACx0i3pF+4mk42mNmSpHLAu+y4CAADE0u2S3lttgzSHrClJevfdd9XT0+O7FjTYB8VpfefVy3r8wdu1q6fLdzkAgIQoFou64447pDX0hKU5ZEmSenp6CFkJNK0OdW3bru6eHvUQsgAAHjDwHYnU2d6q/bdl1Nne6rsUAEBKpb4lC8mU2dKugX23+i4DAJBitGQhkeZKC/rw6ozmSgu+SwEApBQhC4k0eW1Wf/bDdzR5bdZ3KQCAlCJkAQAAhICQBQAAEAJCFgAAQAgIWUis1hbzXQIAIMXsJo/dSSwz65FUKBQKTEYKAADWpFgsKpPJSFLGOVdcbVtasgAAAEIQqclIzaxf0lHn3OE1bn8s+PIhSTnn3GBoxSFWxq/O6IW/f1+f/8cf087tnb7LAYBNGStOa2xqZtny3d2d2s2jwyIrEiHLzA5IekJSVlLfGvcZqg5VZnbGzM6sNaAh2UoLTmPFGZUW0tkdDiBZTr18SV9/8Y1ly7/86H366sD9HirCWkQiZDnnRiWNmtkhSQ/ebHszy0rqN7Oscy4fLH5O0nkz63PO5UIrFgCAJnvy4Ts1sO9WvTl2VV85/Zr++IkHdO/u7drdTUt9lEUiZG1QX/AaDd7nqpYTsgAAibG7p2tJt+C9u7dr/20ZjxVhLWIZsoLWqx01iyvdjAQsAAA8OnHihCRpfHxcknT8+HENDw/r2LFjq+225u/7yiuvqK+vT0NDQzfdZ3h4ePHrfD6/6RrWI5Yhq46jks7RVQhJ6tnSrt/4xB71bGn3XQoANERpwemnl/OSpJ9ezuuX9/REcj7Ao0eP6vDhw+rv719cdvjw5odLDw4OLglVhw8f1uHDh3XmzJm6+wwPDy8JViMjI8u+T5giNU9WMCbruHPu4Dr3OyDpjKSDVWO0arfplFTded0t6TLzZAEAou6FC1f07POv60phenHZnkyXnnlsnz6/f4/HypbbsWOHJicnlyzL5/N66qmnVg1Eq8nn83r00Uf14osvKpvNSpJGR0d18OBBXbx4UX19K98zt3fvXp09e3bJ+pXqW480zpM1pFUCVuC4pELV63IT6oIn12bmdf6dSV2bmfddCgBsygsXruhL3x5dErAk6f3CtL707VG9cOGKp8pWls/nlc/nlyzLZrMaGBjY1PfN5XLK5T7qrKoEp+pltXXkcrllASyfz2t0dHTFfRot9iHLzE6qPLdW/iabPicpU/W6PeTS4NG1mXn91c8/IGQBiLXSgtOzz7+ulfqcKsueff71SE1X09/fr4MHD+rcuXNLlh85cmTD3zObzWpyclIHDhxYXFYJV/VaseqFr2w2W3ddo8U6ZJnZEUlDlXFYZtYXdB0u45ybcc4VKy9JU82sFQCA9frxWxPLWrCqOUlXCtP68VsTzSvqJs6cObPYcmVmGhgYWBa4GuHkyZPq7++vG7ImJlY+Jr29vXXXNVrUBr73rrTQzPok9TvnhquWHVIweWmwPitpQBKzvgMAEmFsqn7A2sh2zZDNZnX+/HmNjo7q9OnTOnfunAYGBnTmzBkdOnRI0toHwg8MDKzYAjY6Oqpz587p/PnzDa290SIRsqpmfD+kcmg6Kel8VajqVzk8DQfbZ1Ue6L6Mc+5o6AUDANAEu7vX9sictW7XTAcOHFjs3hscHNRTTz21GLI2OgC+YnBwUOfPn18cBL+S3t4V2200MTFRd12jRaK70Dk36pwbdM7tdc6Zc+5odauVc27YObe36n0+2G7Zy89/AaKmo61Ffbu2qaMtEh9xANiQT93Tqz2ZLtU7uZnKdxl+6p7mhIabyefzGhkZWbZ8aGhoxQHxG3H06FGdPHly1YAlfTRWq/Zn5vP5ul2MjRaJliyg0bJbO/RbD9zmuwwA2JTWFtMzj+3Tl749KpOWDICvBK9nHtsXqfmyzp49u9hiVa2vr28xGG20u3B4eFiDg4NL7izM5/NLBsRXZLNZ9fX1aWJiYlkgW2n7MERqnqxmMrMeSQXmyUqm0oLTzHxJnW2tkfrjAwAbEYV5sipjrFabyDOfz+uee+7RN7/5zSVBa2RkRK+88sqmJgEdGRlRLpdbDEj5fF5nz57V0NCQstnsivXVTkZa+34j1jNPFiGLkJVIY8VpnXr5kp58+M4lz/sCgLgqLTidfuWSnv7uBX3ti/v1xEN3NvUicmRkRE899ZTOnz9ft7stn8/rO9/5jh588EGdPn1aO3fu1Pj4uHbu3LmpYJPP57VjR+3T9MoqOaYym/vFixeXrD9x4oSy2azy+bzGx8c3Pds7IWsNCFnJRsgCkEQX3ivoC994Sd/7g896eUD06OjoYjdcWqVxxncAABJrrDitC+8V9ObYVUnSm2NXdeG9gsaKzZ26YaUZ1FEfA98BAIi4Uy9f0tdffGPx/VdOvyZJ+vKj9+mrA/c3pYZm3pWXFIQsAAAi7smH79TAvluXLd/d3dm0GrLZbNPuyksKxmQxJiuRFhac5hYW1N7SohbuLgQANMh6xmTRkoVEamkxdba0+i4DAJBiDHxHIk1em9VfjF7W5LVZ36UAAFKKkIVEmist6J3x65orLfguBQCQUoQsAACAEBCyAAAAQkDIAgAACAEhC4m0vatNv/5Lu7W9ixtoAQB+cAZCIm3taNMDd2R9lwEASDFaspBI03Ml/exKUdNzJd+lAABSipCFRCremNMLF95X8cac71IAAClFyAIAAAgBIQsAACAEhCwAAIAQELKQSG2tLdqT6VJbKx9xAIAfTOGAROrd1qHf/tSdvssAAKQYl/kAAAAhIGQhkcaK0/qjsz/XWHHadykAgJQiZAEAAISAkAUAABACQhYAAEAICFkAAAAhYAoHJFLvtg797mfu1vZOPuIAAD84AyGR2lpblN3a4bsMAECK0V2IRCpcn9MLF66ocH3OdykAgJQiZCGRZuZL+tmVKc3Ml3yXAgBIKUIWAABACAhZAAAAISBkAQAAhICQhUTa2tmmX+3bqa1M4QAA8IQzEBJpe2ebPr13p+8yAAApRksWEmlmvqS3P7zG3YUAAG8iFbLMrN/Mzqxj+yNVr2Nh1oZ4KVyf03d/8h7zZAEAvIlEd6GZHZD0hKSspL417nNEUtY5dyJ4f8jMhpxzg6EVCgAAsEaRaMlyzo0G4ejsOnYblDRS9T1GJB1pdG0AAAAbEYmQtV5mlpXU55zL1azKBq1iAAAAXsUyZKl+l2J+lXVIkZYWU3Zru1pazHcpAICUisSYrA3orbN8ot46M+uU1Fm1qLvRRSE6btneqd/9zD2+ywAApFhcW7I24rikQtXrst9yAABAksU1ZE3UWd67yrrnJGWqXreHUBci4oOpGf23H1zUB1MzvksBAKRUXLsLc1J5ALxzLl+1PFtZV8s5NyNp8YxrxlidJHPO6cZsSc4536UAAFIqli1ZQbDKaYXxV8650aYXBAAAUCNqIaveoPW+YPLRakOSDlVtc0TlubMAAAC8i0TIMrMDZjakckg6YGYna0JVv2oClHNuONi38kidvZXZ3wEAAHyztI5ZMbMeSYVCoaCenh7f5aDBZucX9OHVGd2yvVMdbZG4lgAAJECxWFQmk5GkjHOuuNq2cR34Dqyqo61FH89u8V0GACDFuMRHIk1Nz+kHP/9AU9NzvksBAKQUIQuJdGO2pNF3JnVjtuS7FABAShGyAAAAQkDIAgAACAEhCwAAIASELCRSV0erfuWOjLo6Wn2XAgBIKaZwQCL1dLXrkV+61XcZAIAUoyULiTRXWtBYcVpzpQXfpQAAUoqQhUSavDarUy9f0uS1Wd+lAABSipAFAAAQAkIWAABACAhZAAAAISBkIZms/JBome9CAABpZc453zV4YWY9kgqFQkE9PT2+ywEAADFQLBaVyWQkKeOcK662LS1ZAAAAISBkIZHGr87ov//wbY1fnfFdCgAgpQhZSKTSgtP41VmVFtLZHQ4A8I+QBQAAEAJCFgAAQAgIWQAAACEgZCGRera06zcf+Lh6trT7LgUAkFJtvgsAwtDV3qq9u7b7LgMAkGK0ZCGRrs3M68dvTejazLzvUgAAKUXIQiJdm5nX/33zQ0IWAMAbQhYAAEAICFkAAAAhIGQBAACEgJCFROpsa9V9t25XZ1ur71IAACnFFA5IpMzWdn3hEx/3XQYAIMVoyUIilRacpqbneEA0AMAbQhYSafzqjL71129p/OqM71IAAClFyAIAAAgBIQsAACAEhCwAAIAQELIAAABCwBQOSKRd3Z36g0fuVWuL+S4FAJBShCwkkpmprZWABQDwh+5CJNLktVmdefVdTV6b9V0KACClItWSZWZHqt5mnXMn1rFPVtJOSc855/KNrw5xMlda0OXJG5orLfguBQCQUpEJWUFYWgxWZnbIzIacc4Or7HNM0nAlVJlZVtKQpKPhVwwAAFBflLoLByWNVN4450YkHam/uSRpoLrVKvi6L4ziAAAA1iMSIStogepzzuVqVmXN7MAqu/YGrVkAAACREomQpfqtT/lV1knl1q8hMztrZlkzq9tVaGadZtZTeUnq3lTFiLTurnYN7LtV3V3tvksBAKRUVEJWb53lE6usk3PunKQBSf2SJiW9skJrWMVxSYWq1+UNV4vI29LRqv23ZbSlo9V3KQCAlIpKyNoQM+uTdEDSDknDks7U3KFY7TlJmarX7U0pEl7cmC3pwnsF3Zgt+S4FAJBSUQlZE3WW966yTpKGnHMnnHN559xRlVu1Tgbhawnn3Ixzrlh5SZrafNmIqqnpOZ19/R80NT3nuxQAQEpFJWTlpMUB8NWylXW1ggHxS9YF3YcnVO4+BAAA8CYSISuYeiGnFcZfOedG1/ntLqpOMAMAAGiWSISswJCkQ5U3wdiqwar3fdXjrYLwdWCF1q+DQYsWAACAN5GZ8d05N2xmxyozv0vaWTPbe7/KoWu4atlhScfNTJLGVX6sTt0Z4pEe7a0tun3HFrW3Ruk6AgCQJuac812DF8FcWYVCoaCenh7f5QAAgBgoFovKZDKSlAlupKuLy3wkknNO86UFpfUiAgDgHyELifTB1Iy+8f039cHUjO9SAAApRcgCAAAIASELAAAgBIQsAACAEBCyAAAAQhCZebKARtq5vVO/92v3aGsHH3EAgB+cgZBIrS2m7q5232UAAFKM7kIkUuH6nL7301+ocH3OdykAgJQiZCGRZuZLeuMfrmpmvuS7FABAShGyAAAAQkDIAgAACAEhCwAAIASELCTSts42febeW7StkxtoAQB+cAZCIm3rbNOn7un1XQYAIMVoyUIiTc+VdPGDq5qe4+5CAIAfhCwkUvHGnP7Xa79Q8QbzZAEA/CBkAQAAhICQBQAAEAJCFgAAQAgIWUik1hbTzu0dam0x36UAAFKKKRyQSDu3d+pff/pu32UAAFKMliwAAIAQNDxkmdndVV9/0syeMrMHGv1zgNWMTU3rv/6fNzU2Ne27FABASoXRktVf+cI59xPn3DclPRjCzwHqc9Ls/ILkfBcCAEirhozJMrNPSjoYvB0wWzLYOCvpIUnfasTPAgAAiIOGhCzn3E/MLC9pSOVQdW/V6nFJ/6ERPwcAACAuGnZ3oXPuLTN7SlK/c+7Pq9dVj9MCAABIA3Ou8YNWzOwRlVu0Ko465/55w3/QJphZj6RCoVBQT0+P73LQYHOlBU1em9WObR1qb+UmWgBAYxSLRWUyGUnKOOeKq23b8HmyzOw7KgesfNXivkb/HGA17a0t2t3T5bsMAECKhTEZ6ekVugsfDeHnAHUVp+f06tsTevDuXvV0tfsuBwCQQmH0o6zU/zgews8B6pqeLelv3y1oerbkuxQAQEqF0ZK118z+t6TRqmX9Kk/jAAAAkAphhKwnJJ2uWcZTegEAQKqEEbIGnXMvVi8ws3Mh/BwAAIDIaviYrNqAFZhs9M8BVrOlo1UH7tqhLR2tvksBAKRUox6r8y8knXPOFc3s39eulvS4GJOFJuruatfn7t/luwwAQIptuCWrJkw9rY8eAv3PVA5WlZfEmCw02ez8gn6Rv1F+SDQAAB5seMZ3MytJ2lE726mZfdI595ObLavzPY9Uvc06506ssZZj+mjy0wnn3Mga9mHG9wQbK07r1MuX9OTDdzIpKQCgYdYz4/tmxmSt2Dq1UphaR8DKOueGnXPDknJmNrSG/c5KGgn2eVXSmZtWDgAAELLNDnxv5IMPByUttkAFrVFH6m++GMxGnXO5YJ9RSQcbWBMAAMCGbDZkPW1mjwRdbxtmZllJfZWwVCVrZgdW2XVI0tnqBUHQAgAA8Gozdxc6SSdVbjn6lpl9UlJO5ZneX1Fwt+Eav1e9B0jng3XLglMQzLIqB7FKi9de59zgSt/IzDoldVYt6l5jbYghM9OWjlaZcc8FAKTBWHFaY1Mzy5bv7u70NjZ3MyHLJCl4GPSfS+UB7io/QudplVuZ7lvj9+qts3xilXWVYNYbjMeSmfWb2Rnn3OEVtj8u6Zk11oOY29Xdqd//3F7fZQAAmuTUy5f09RffWLb8y4/ep68O3O+hos2FrBFJByS9XVkQDHD/iaT/tLmy1qQSvl6t+vnnzOysma3U9ficpD+set8t6XLINQIAEAtRbAlajycfvlMD+27Vm2NX9ZXTr+mPn3hA9+7ert3dnTffOSQbDlnOucfN7L+ZWc4599om65ios7x3lXW5mn8r8iqHvyXLnXMzkhY/PXQjJduHV2f0/N/+Qo/9ysd1y3Z//4MBSI+4h5QotgStx+6eriXH+d7d27X/tozHijY547tz7veDLsLNyknlcVbOuXzV8qyWh6jKz84FQal2zFa2AfUg5hYWnPLX57Sw0MgbYAGgvriHlCi2BMXdph+rs5Y5sNbwPfJmllO55Spfs261uwVHtfKYLe4wRCzF/UoY2Iy4f/7jHlKi2BIUdw15dmGDDEk6JOmEtDgH1uKdgmbWJ6m/Msg9MCjpsKRzVfuMrDAeC4iFuF8Jw6+4h5S4f/4JKagVmZDlnBs2s2OVmd8l7ayZjqFf5VA1XLXPOTPrq54Zvs6dhUAsxP1KOO4n+biLe0iJ++cfqBWZkCVJqz2rMGjBGq6zHFgis7VdX/zkbcpsbfddyrrE/Uo47if5uIfEuIeUuH/+gVqRCllAo3S2teruW7b5LiN14n6Sj3tIJKQA0ULIQiJdnZnX310u6J/cntH2Tj7mzRL3k3zcQyKAaOHsg0S6PjOvH+XGtXfXNkIW1izuIRFAtGz2AdEAAABYAZf4WCLuA38BAIgKQhaWiPvAXwAAooKQhSXiPvC30hJ3dXpe2zpalfvgmsamZmiJAwA0HSELS8R94G8SWuJKC04/vZyXJP30cl6/vKdHrS080BwA4oaQhWXifJKvtMT9v/en9O/O/K3+8+Ff0T/6WHdsWuJeuHBFzz7/uq4UpiVJT3/3gr7x/Tf1zGP79Pn9ezxXBwBYD+4uxBIvXLiizw59X09/94Kk8kn+s0Pf1wsXrniubG1293Rp/20Z7QpC1a7uTu2/LROLrsIXLlzRl749uhiwKt4vTOtL3x6Nze8AAFBGyMIiTvL+lBacnn3+dbkV1lWWPfv86yotrLQFACCKCFmQxEnetx+/NbEs3FZzkq4UpvXjtyaaV9QG1XY385kBkFaELEhK1kk+jsam6h/7jWznS9y7mwGgkQhZISgtOP3w4rj+52vv6YcXx2NxJZ+Uk7xUPv4/u1KUJP3sSjEWx39399rGjK11Ox+S0t0c95Y46veL+v2KWv3mXLwOYKOYWY+kQqFQUE9PT8O+b+3dYZK0J9MV+bvDfnhxXP/ymz+66Xb/46lf1af37mxCRRsT1+NfWnD67ND39X5hesUuW5P0sUyXXhp8JJJ3elbqr9caGvX6K+L6+amgfr+o369m1V8sFpXJZCQp45wrrrYtLVkNFOcr+U/d06s9mS7VO/2Zyh/WT93T28yy1iXOx7+1xfTMY/skadnvoPL+mcf2RTagJKG7Oc6fH4n6faN+v6JaPyGrQeI+cDzuJ/m4H39J+vz+PfqT3zmgj2WWdgl+LNOlP/mdA5G+kox7d3PcPz/U7xf1+xXl+glZDZKEK/k4n+STcPyl8u/gpcFH9LUv7pckfe2L+/XS4CORPvZS/MeUxf3zQ/1+Ub9fUa6fGd8bJO5X8hWf379HA/s+ptOvXNLT372gr31xv5546M7ItmBVJOX4S+VWxU/cnpUkfeL2bOSPvfRRd/PNxpRFtbs57p8f6veL+v2Kcv20ZDVI3K/kq8XxJJ+k4x9Hce9ujvvnh/r9on6/olw/IatBkjBwXJLGitO68F5Bb45dlSS9OXZVF94raKwYzSuYiqQc/ziLc3dz3D8/1O8X9fsV5foJWQ0S9yv5ilMvX9IXvvGSvnL6NUnSV06/pi984yWdevmS38JuIinHP+7iOqYs7p8f6veL+v2Kcv3Mk8U8WUuMFac1NjWzbPnu7s7YPGQ5zse/4sJ7BX3hGy/pe3/wWe2/LeO7nHWLa/1x//xQv1/U71cU58mScy6VL0k9klyhUHCNNl9acH/z5ofuL39y2f3Nmx+6+dJCw38G6psvLbg/fSnn7hr8nvvTl3KxPP5/dznv7hr8nvu7y3nfpWxInOufLy24Uz962901+D136kdvx+7zQ/1+Ub9fzai/UCg4lW9a7HE3yRrcXRiC1haL9KzoSdfaYurbtV2S1Ldre2SbuBFNcbzxoxr1+0X9fkWtfkIWECGV7trqGw+k+HTXAgA+QsgCIuTUy5f09RffWHxfuQHhy4/ep68O3O+pKgDARhCygAh58uE7NbDv1mXLd3d3eqgGALAZhCwkSqW77d2J65Kkdyeu68J7hdh0t+3u6YpFnQCAmyNkIVFqu9v+419ekER3GwCg+QhZSJRKd9uCcyotOLW2mFrM6G4DADQdIQuJUuluGytO69TLl/Tkw3fS/dZE3B0JAB8hZAFoGO6OBICPELIANAx3RwLARwhZABqGuyMB4COELAAIMKYMQCMRspBIO7d36ujn+tTZ1uq7FMQIY8oANFKkQpaZHal6m3XOnVjn/medcwMNLgsx1Npi2toRqY83YiDuY8poiQOiJTJnoSBgLQYrMztkZkPOucE17n9IUn+YNSI+8tdn9YOff6DP3b9L2a0dvstBTMR9TFncW+IIiUiayIQsSYOSFluhnHMjZvbNYPmqzCwrqS+80hA3s/MLyn1wTZ/u2+m7FKBp4t4SF/eQCNSKRMiqhCTnXK5mVdbMDjjnRm/yLR6XNCxpKIz6ACAO4t4SF/eQSEscakUiZKl+K1Q+WFc3ZJnZAUmvhlATAKCJ4h4S494SR0hsvKiErN46yydWWVfxoHNuOGgNAwDAi7i3xMU9JEZRVELWhpjZIefc8Bq37ZRU/UnvDqcqRMG2zjb90/t3aVtnrD/iAGIk7i1xcQ+JUWyJi8oZaKLO8t5664KWq/w6fsZxSc+sqyrE1rbONh28a4fvMgAgNuIeEqPYEmfOOS8/eEkR5cA0KWmHcy5ftdxJOrjSwPdgyoe9ksaDRXslHVH5bsScc26kZvuVWrIuFwoF9fT0NO4/BpEwPVfSpYnrurN3q7ramZAUAJKu0pJVq9EtWcViUZlMRpIyzrniattGImRJkpldlDRQfYehmTnnnK1x/z5JF9exfY+kAiErmcaK0zr18iU9+fCdsb4yAwBEy3pCVktzSlqTIUmHKm+ClqrBqvd9NTPC18qGVxoAAMD6RCZkVQawm9kRMzsmaW/NY3X6VWdi0iB8DQVfnzEzZn4HAABeRWXguyRptWcVBiFsxTsJV1sHAADgQ2RasoBGam0x7e7pVGvLmoboAQDQcJFqyQIaZef2Tj358F2+ywAApBgtWQAAACEgZCGRxorT+i8vvqGx4rTvUgAAKUXIQmKVFqIxBxwAIJ0IWQAAACEgZAEAAISAkAUAABACpnBAIu3Y1qF/9em7lNnS7rsUAEBKEbKQSO2tLbple6fvMgAAKUZ3IRKpcGNOZ1//BxVuzPkuBQCQUoQsJNLMXEkX3itoZq7kuxQAQEoRsgAAAEJAyAIAAAgBIQsAACAEhCwk0paOVj10d6+2dLT6LgUAkFJM4YBE6u5q12fvu8V3GQCAFKMlC4k0M1/SuxPXNTPP3YUAAD8IWUikwvU5jZy/rMJ15skCAPhByAIAAAgBIQsAACAEhCwAAIAQELKQSGam7q42mZnvUgAAKcUUDkikXd2d+r1f6/NdBgAgxWjJAgAACAEhC4n0wdSMvvXXOX0wNeO7FABAShGykEjOOU1Nz8s557sUAEBKEbIAAABCQMgCAAAIASELAAAgBIQsJFJma7sOHbxdma3tvksBAKQU82QhkTrbWnVH71bfZQAAUoyWLCTS1PScXnrjQ01Nz/kuBQCQUoQsJNKN2ZJeeXtCN2ZLvksBAKQUIQsAACAEhCwAAIAQELIAAABCQMhCInW2t2r/bRl1trf6LgUAkFJM4YBEymxp18C+W32XAQBIsUiFLDM7UvU265w7sYZ9jgVfPiQp55wbDKU4xMpcaUGFG3PKbGlXeysNtgCA5ovM2ScIWFnn3LBzblhSzsyGbrLPkHPuRPA6LKnPzM40pWBE2uS1Wf3ZD9/R5LVZ36UAAFIqMiFL0qCkkcob59yIpCP1NjazrKT+4N+K5yQdMrO+kGoEAABYk0iErCAo9TnncjWrsmZ2YJVd+4JXRa5qOQAAgDdRGZNVLxTlg3WjtSucc3lJO+p8n9qwBgAA0FRRCVm9dZZPrLJuJUclnVuhRUxm1imps2pR9zq+L2KotcV8lwAASLGohKxNC7oV+yUdrLPJcUnPNK8i+LS7p0v/9tH7fJcBAEixSIzJUrnFaiW9q6yrNSTpYNCNuJLnJGWqXrevp0AAAID1iErIykmLA+CrZbWG8VVmdlLS0VUClpxzM865YuUlaWrD1SLyxq/O6NTL72j86ozvUgAAKRWJkBWEo5xWGH/lnFs26L1aML/WUGUclpn13eSORKRAacFprDij0oLzXQoAIKUiEbICQ5IOVd4E4Wmw6n1fzYzwMrNDKrd29ZlZf/B+UNxdCAAAPIvMwHfn3LCZHavM/C5pZ80jcvpVDlDD0mLX4oqzuzvnjoZbLQAAwOoiE7IkabVnFQaP2hmuep+XxD36AAAgkqLUXQg0TM+Wdv3GJ/aoZ0u771IAACkVqZYsoFG62lt1/63MNwsA8IeWLCTStZl5nX9nUtdm5n2XAgBIKUIWEunazLz+6ucfELIAAN4QsgAAAEJAyAIAAAgBIQsAACAEhCwkUkdbi/p2bVNHGx9xAIAfTOGARMpu7dBvPXCb7zIAACnGZT4SqbTgdH12ngdEAwC8IWQhkcavzujkD3IavzrjuxQAQEoRsgAAAEJAyAIAAAgBIQsAACAEhCwAAIAQMIUDEumW7Z36N7++V+0tXEcAAPwgZCGRWlpMnS2tvssAAKQYl/lIpMlrs/qL0cuavDbruxQAQEoRspBIc6UFvTN+XXOlBd+lAABSipAFAAAQAkIWAABACAhZAAAAISBkIZG2d7Xp139pt7Z3cQMtAMAPzkBIpK0dbXrgjqzvMgAAKUZLFhJpeq6kn10panqu5LsUAEBKEbKQSMUbc3rhwvsq3pjzXQoAIKUIWQAAACEgZAEAAISAkAUAABACQhYSqa21RXsyXWpr5SMOAPCDKRyQSL3bOvTbn7rTdxkAgBTjMh8AACAEhCwk0lhxWn909ucaK077LgUAkFKELAAAgBAQsgAAAEJAyAIAAAgBIQsAACAETOGAROrd1qHf/czd2t7JRxwA4EekzkBmdqTqbdY5dyKMfZB8ba0tym7t8F0GACDFItNdGISlrHNu2Dk3LClnZkON3gfpULg+pxcuXFHh+pzvUgAAKRWZkCVpUNJI5Y1zbkTSkfqbb3gfpMDMfEk/uzKlmfmS71IAACkViZBlZllJfc65XM2qrJkdaNQ+AAAAzRKJkCWpr87y/CrrNrIPAABAU0Rl4HtvneUTq6xb1z5m1imps2pRtyQVi8U1log4mSpO66///pJ+85ez6tKs73IAAAmxntwQlZDVDMclPVO78I477vBQCprlu1/1XQEAIKG6Ja2auKISsibqLO9dZd1693lO0h+u4/tvVreky5JulzQV0s9AfRx/vzj+fnH8/eL4+9WM498t6Rc32ygqISsnlQezO+fyVcuzlXWb3cc5NyNppmZxaH2FZlb5cso5R59kk3H8/eL4+8Xx94vj71eTjv+avm8kBr4HISmnFcZSOedGG7UPAABAs0QiZAWGJB2qvAkmGh2set9XM7v7TfcBAADwJTIhK5ixXWZ2xMyOSdpb84icftUEqDXs49OMpGe1vIsSzcHx94vj7xfH3y+Ov1+ROf7mnPNdAwAAQOJEpiULAAAgSQhZAAAAIYjKFA4AEsjMzjrnBnzXASCZzKxf0lHn3OEV1lXfLJf1MWabkBWCKPxi0yy4CUKSHpKUc85xx6kHZnZI5RtW0GTB/wP54O2Ec27EYzmpUvX3Pytpp6TnauZyRAOY2QFJT6h8nJc9rzj4PSyef83skJkNNft8wMD3BlvpFyvpIU70zVH7P5GZnZGkla5yEB4zy0o6ImnIOWc32RwNZGZnVb6yzwUnovP8DpojCLfDlVAV/H8w5Jw76rOuJAvOscedcwdrll+UNOCcy1Utm3TO7WhmfYzJarxBSYtXjcEVZO38XghB8AetP/i34jlJh8xs2ZUOQvW4pGHfRaRNcJE3WjmxBBMzH1x9LzTQQHWrVfA1f3uaLDgH9FUHrEA2uPBoGkJWA0XpF5tifVr6Ry1XtRxNEHzWX/VdR0oNSTpbvYAnYDRVb9VwBfhT7+99fpV1oSBkNVZkfrFp5JzLO+d21JxUKse93jMw0XgPcmJvvuAiL6vyRd2R4DXkt6rUGZQ0ZGZnzSwbHH+6Cptv2eP2AhOrrAsFIauxIvOLxaKjks6t0LqIEJjZocqTGNB0lQuKXufccPB7OFsZl4jwOefOSRpQ+YaPSUmv8Lcn3QhZSKyg26pfEoPemyBoScl7LiPNKhdyi121wUmfMYlNEhznA5J2qDwm8cwKz9xF+CbqLO9dZV0omMKhsSLzi4Wk8viUg9w+3TSPS9pbNf5wr7R4x1WOaQRCl6v5tyKv8omfFpXwDVXdyXw0aEU8a2a0pjdXTipf+NX8/c+qyf8fELIaKzK/2LQzs5Mq38ae911LWtR2EwZX9UeYJ645gikbpHK3YfWYuKyXglImuLhY8nfeOXfOzE6o3KJON3qTOOfyZpZTuYEjX7OuqeNF6S5soOCEXvnF1q5jIHCTBM3zQ5UrRzPr4+5OL7K+C0ihUa08/pO/P/5cFBfZYao33nlI0qHKm+C80PT5KglZjReJX2xaBRPTZSX1mVl/8H5Q/JFrqkrQDb4+Ezz6AuEbVNUYxOD3MEJXVfiCC+kDNfP0SeUhC+c8lJRoZnYguHtzUOXjfrJ6/FulZT24y/aYpL0+WtWZ8T0EVY+0yErayWzvzRH8cZtcaR0zXiMtghPN3sp7/v40T/A36Hjwdlw8Vif1CFkAAAAhoLsQAAAgBIQsAACAEBCyAAAAQkDIAgAACAEhCwAAIASELAAAgBAQsgAAAEJAyAKQOsHs0JNm5szsfPBkgMq6Y1XrLlbPIl21rwu2ObL8uwNAGZORAkil4CHiR1Z6GkDw1IYhSTtWmq3bzM445w7XLgeAarRkAUir/BrWLXv4bPCw8edCqAdAwhCyAKTVuLT4vLlalVaqldb1Bw8DBoBVEbIApFU++HdJa1UwPmuozrp+SSOhVwYgEQhZANIqF/ybrSyoatVati7Q55zLCQDWgJAFIK0mgn+rW6sed86NrLQuaOH6TpNqA5AAhCwAaZUP/s1Kkpn1KWjBqrqjsLIuK6l3pTsNAaAeQhaAtKptrep3zp2r2WZn8O/jzrnh5pQFICkIWQBSqbq1KpiW4dWaTfLBuj59FMgAYM0IWQDSbq+kB1eYlmFC5VauQ8E4LQBYF0IWgDTLS+qXVNtNeLN1AHBTbb4LAACPJiSdqzMtQ07SBBOPAtgoWrIApNmopME663KSjjaxFgAJwwOiAQAAQkBLFgAAQAgIWQAAACEgZAEAAISAkAUAABACQhYAAEAICFkAAAAhIGQBAACEgJAFAAAQAkIWAABACAhZAAAAISBkAQAAhICQBQAAEIL/DyABXwWs63H7AAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -190,7 +192,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can now generate fake data with given covariance matrix and integrated autocorrelation times:" + "We can now generate fake data with a given covariance matrix and integrated autocorrelation times:" ] }, { @@ -199,8 +201,8 @@ "metadata": {}, "outputs": [], "source": [ - "cov = np.array([[0.5, -0.2], [-0.2, 0.3]]) # Covariance matrix\n", - "tau = [4, 8] # Autocorrelation times\n", + "cov = np.array([[0.5, -0.2], [-0.2, 0.3]]) # Covariance matrix\n", + "tau = [4, 8] # Autocorrelation times\n", "c_obs1, c_obs2 = pe.misc.gen_correlated_data([2.8, 2.1], cov, 'ens1', tau)" ] }, @@ -220,15 +222,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Result\t 3.27194697e-01 +/- 1.79228480e+00 +/- 3.07835024e-01 (547.773%)\n", - " t_int\t 5.31748262e+00 +/- 1.57262234e+00 S = 2.00\n" + "Result\t 3.27194697e-01 +/- 1.53249111e+00 +/- 2.49471479e-01 (468.373%)\n", + " t_int\t 4.75187177e+00 +/- 1.33949719e+00 S = 2.00\n", + "1000 samples in 1 ensemble:\n", + " · Ensemble 'ens1' : 1000 configurations (from 1 to 1000)\n" ] } ], "source": [ "c_obs3 = np.sin(c_obs1 / c_obs2 - 1)\n", "c_obs3.gamma_method()\n", - "c_obs3.print()" + "c_obs3.details()" ] }, { @@ -245,7 +249,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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vnp7e/N+RqTTafX29k78W7I+I8bGJr5HN9xwgxYsWDD+GZH9+SBJS+vn6w9vXDD++SB5nxE33XSTJOnnP/+5Ll78sNYy++8uyFqbyJukDq/4kx4/I2lTKc6R9Kfy/s0VvN13333WWmuPHDmSc3/gjjvumLTvW9/6lrXW2m9+85uT9n32s5+11lo7ODiY83n7+/uttdZu3Lhx0r6vfvWr1lprn3322Un7brnllvEyzZ8/f9L+np4ea621X/ziFyft+8pXvmKttfb73//+pH3Lly8ff97ly5dP2v/973/fWmvtV77ylUn7vvjFL1prre3p6Zm0b/78+ePPe8stt0za/+yzz1prrf3qV786ad/GjRuttdb29/fnfA8HBwettdZ+9rOfnbTvm9/8prXW2m9961uT9t1xxx3jZcr1vEeOHLHWWnvfffdN2tf4yd+312z/rm2+97FJ+1avXj3+vEuWLJm0/yc/+Ym11tqHH3540r7Nf/iv7TXbv2v3fO8HEx5fsPZT9prt3y16+7vXT9rHH3980vN2/s7vWmutfeedd3L+rQePnbbXbP+u/cQdn5y076mnnrLWWvvUU09N2nfXXXdZa60dGRmxkmzt9Xfa5Q/+9YQy3fH4AfuZP/zfJ537+OOP2yujY/bffHOPXbD2U7b66hutTJWVZNva2sbfw6aPf2bSc7b/6T/Y7735rv3Sl740/rortz1vV257fsJxK7d9x67c9rytvf5OK8kuXf9b9toc71tw3OPf+gdrrbU7duzwymmqbPXVN9oFaz9lP735QXtldCz3Z4Spss/89G17zfbv2ra7N43/HYn8jDBV9n/e/oT9u9dP2v+498Ckv2XFHZ8r+B7++bdfsFdGx+wN2//Wrtz2nbz/Vpc/+NcTnrvSPiN27NhhrbV2//790/qM+PDf9uT3cvzftqmyyx/867zv98pt37HLH/xru/O//L3T50j11TdOKtPIyIi11tq77rprWp8R2bd33nnHWmvtpk2bcn5GWGvt3//930/al/kZUV9fP/kz7eBBa621X/rSl/J+Pkx4D/3zlixZMv68q1evzllmSQ22SL4xNuuXUFIYYzokvWCtNVmPH5PUZf0+ZNM5J0+N2ckf/vCH1JhRYzalX8NBjdlVS5fp7PCQTrzt/ZIrVmP25b85pK//3s36VxsK15g98P/+Ss/963bNGfqw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\n", "text/plain": [ "
" ] @@ -257,7 +261,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -289,13 +293,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Result\t 3.27194697e-01 +/- 1.88231459e+00 +/- 2.01855751e-01 (575.289%)\n", - " t_int\t 5.86511391e+00 +/- 2.16269625e+00 tau_exp = 20.00, N_sigma = 1\n" + "Result\t 3.27194697e-01 +/- 1.67779862e+00 +/- 2.08884244e-01 (512.783%)\n", + " t_int\t 5.69571763e+00 +/- 2.09295390e+00 tau_exp = 20.00, N_sigma = 1\n", + "1000 samples in 1 ensemble:\n", + " · Ensemble 'ens1' : 1000 configurations (from 1 to 1000)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAGJCAYAAAB4qWxZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAA9hAAAPYQGoP6dpAABFbElEQVR4nO3de3Rb1Z0v8O+WbEt+SbKdOHaexA4BjIFgh6Qp3FIgpmkpbemEpF0pc+fRJtDO3NIZJm64s5rhTi/U6Uxf3JZJ2pm500LvhKSlnQzTdBwI7UApCXEDNeGR2Al5OTixLckvyba07x/SUSRZto5sSWfr6PtZy0uxdGztWK/v+e3f2UdIKUFEREREU7MYPQAiIiIi1TEwERERESXBwERERESUBAMTERERURIMTERERERJMDARERERJcHARERERJREgdEDSBchhAAwH8Cg0WMhIiKinFIO4LycZnFK0wQmhMLSWaMHQURERDlpIYBzU91opsA0CABnzpyBw+Eweiw0Qxe9Pjz96llsWLkQcx12o4dDREQm5/V6sWjRIiDJDJWZAhMAwOFwMDDlMB+KYC8tQ7nDAQcDExERKYJN36QUW6EVjQucsBVajR4KERFRhOkqTJTbnMWFaGmYZ/QwiIiIYrDCREoZDwRxaciP8UDQ6KEQERFFMDCRUgaGx/Cjl9/FwPCY0UMhIiKKYGAiIiIiSoKBiYiIiCgJBiYiIiKiJBiYSDlWizB6CERERDHENKdNySlCCAcAj8fj4cKVREREpIvX64XT6QQAp5TSO9V2rDARERERJaHUwpVCiM3hf7oAVAF4TErpNmxAlHV9Q37sf+MC1l1bg6oym9HDISIiAqBQYBJCbAWwSwtIQggXgDYAWwwcFmVZICjR6/UjEDTHVDEREZmDSlNyLdHVpPC/6wwbDREREVGYSoGpMlxlIiIiIlKKMlNyAFoBtAshWgDcC2AbOB1HREREU+j1+tA76J90fXW5DdUOe1rvS5nAJKU8EA5L7QAGANwrpeyeanshhA1AdFdweYaHSFngKC7EXdfXwlFcaPRQiIhIcU+9chrffu74pOu/eMeV+FLL8rTelzKBSQhRB6AJQAVCzd57hBBbpJS7pviRbQC2Z2t8lB32QiuWz2P2JSKi5DatXoyWhnk40TuEB3cfxbc2rsCy6jJUl6f/KGtlAhOANinlveF/bxFC7EFoiu7AFJWmxwB8I+r7cgBnMz1Iyqxh/wTeujCIq2vKUWpT6elJRESqqXbYY6bellWXoXGBMyP3pUTTtxCiCUBMKJJSHgCwA8DaRD8jpfRLKb3aF4DBzI+UMm3YP4Ffv3MRw/4Jo4dCREQUoURgmkYX4oIUERERUbYpEZiklB0AmsKLVUZrDleaiIiIiAyjUpPIvQC2CSEAoA+hU6O0GjoiIiIiIigUmMIrezMg5bmiAgvq5paiqECJ4icREREAhQITEQC4Sorw8RULjB4GERFRDO7Gk1ICQYmRsQmefJeIiJTCwERK6RvyY+evutE3NHmpeyIiIqMwMBERERElwcBERERElAQDExEREVESDExERERESXBZAVLKnDIbPn9bPQotzPJERKQOBiZSisUiYLNYjR4GERFRDO7Gk1IGhsfw046zGBgeM3ooREREEQxMpJTxQBDv9o1gPBA0eihEREQRDExERERESTAwERERESXBwERERESUBAMTKaXMXoDbrq5GmZ0HcBIRkTr4qURKKSkqwIpFLqOHQUREFIMVJlKKbzyAN3u88I0HjB4KERFRBAMTKcU7Oo79nRfgHR03eihEREQRDExERERESTAwERERESXBwERERESUBAMTKaXAakGt044CK5+aRESkDi4rQEqpLC3Cp1YtNnoYREREMbgbT0RERJQEAxMppdfrwzfb30Gv12f0UIiIiCIYmIiIiIiSUCYwCSH2CCFkgq8jRo+NiIiI8ptKTd/9AFrCl5qNAHYbMxwiIiKiEJUCU7uU8oD2jRDCBaBPStlh3JCIiIiIFApMUsq9cVdtk1K2GjIYMkxlaRH++OYrUGZT5qlJRESkTmCKJoRoAnA4yTY2ALaoq8ozOijKigKrBa6SIqOHQUREFEOZpu842xJUnCZtA8AT9XU246OijPOMjGN/Zw88I+NGD4WIiChCucAkhKjTueljAJxRXwszNijKGv9EAG/2DMI/ETB6KERERBEqTsmtB9CdbCMppR+AX/teCJHJMREREVEeU67ChNBSAl1GD4KIiIhIo2JgqkPsWkxEREREhlIxMLkAuA0eAxmkxFaA99VVoYTLChARkUJU/FRygxWmvFVmK8Ca+iqjh0FERBRDucAkpawwegxkHP9EAD1uH2pddtgKrEYPh4iICICaU3KUxzwj43jmd+e4DhMRESmF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tb/xWoSO0uJjkSXxU3HhnrLN0U35fL/KnvDr4yRCO3TdUddplHivMt2UXPiPmbA/g0/0rJlqTrkNwHrtm3AvB9eYybDw37kt6o2oTgjRxNdKVmlN3tF/a1f4spuPheFcCa7j+1V2vRp3FFwdEJmqc0OB14fpAlMYn+gGEEI0hY9saAXQJITYGb0yq7ZXJ4TYHC5913Ml48wKr23iQmgZgbXh71txea+Mr5UsCL+p74r7QNgIoENKeSD8PR8LA2g7FOF/7wmvOM33qywKB6L2uKu3Ifb5b/jrw5QLVwKRuWg3Qh8WVVwtl/KNtvheotviVjTmayULwo/HtqirXJh8ahQ+FpS3og6CqAdwJMHUqaGvD9MGJiIiIqJ0MeuUHBEREVHaMDARERERJcHARERERJQEAxMRERFREgxMREREREkwMBERERElwcBERERElAQDExHlvPCq8gNCCCmEOBJe0Vy7bWvUbV3Rq89H/awMb7N58m8nIuLClURkEuETDG+OXsU86ratCJ1aoSLu5J3a7XuklPdmfpRElKtYYSIis3DruG3SyTuFEE0AHsvAeIjIRBiYiMgs+oDIOdviadWjRLetzeYZz4koNzEwEZFZuMOXMVWkcD9T2xS3rQWwN+MjI6Kcx8BERGbRHb50aVdEVZsm3RZWJ6XsBhFREgxMRGQW/eHL6CrSBinl3kS3hStPT2dpbESU4xiYiMgs3OFLFwAIIeoQrixFHRmn3eYCUJnoiDkiokQYmIjILOKrSGullAfitqkKX26QUu7KzrCIyAwYmIjIFKKrSOGlAl6N28Qdvq0Ol8MVEZEuDExEZDb1AFYmWCqgH6Hq0/pwXxMRkW4MTERkJm4AawHET8Ulu42IaFoFRg+AiCiN+gEcmGKpgG4A/VykkohmghUmIjKTDgCtU9zWDWBLFsdCRCbCk+8SERERJcEKExEREVESDExERERESTAwERERESXBwERERESUBAMTERERURIMTERERERJMDARERERJcHARERERJQEAxMRERFREgxMREREREkwMBERERElwcBERERElMT/B7CAMqg6w3YKAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -308,113 +314,21 @@ ], "source": [ "c_obs3.gamma_method(tau_exp=20)\n", - "c_obs3.print()\n", + "c_obs3.details()\n", "c_obs3.plot_tauint()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Jackknife" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For comparison and as a crosscheck, we can do a jackknife binning analysis. We compare the result for different binsizes with the result from the gamma method. Besides the more robust approach of the gamma method, it can also be shown that the systematic error of the error decreases faster with $N$ in comparison to the binning approach (see hep-lat/0306017)" - ] - }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Binning analysis:\n", - "Result:\t 3.27194697e-01 +/- 1.30323584e+00 +/- 1.74847436e-01 (398.306%)\n", - "Result:\t 3.27194697e-01 +/- 1.42921199e+00 +/- 3.13124657e-01 (436.808%)\n", - "Result:\t 3.27194697e-01 +/- 1.36761713e+00 +/- 4.28131883e-01 (417.983%)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk8AAAGfCAYAAABGETbcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvfklEQVR4nO3dQWwcV57f8d9f3qyEjUi2pQlHXHuVEaUZxAzXq1CWvQ58ssWFg6wPNiQTgZ1bRrIOg/EggbTSRdDFXhrBwAMjcCTnFvmglQIdPIsIkOTTALO2ZY7hZYQAI1Mbr2bkMLFMUsaC2qz9cuhqqdhsklXNqn7vVX0/AGF3sdl87jarfvV//3plzjkBAAAgmw2+BwAAABATwhMAAEAOhCcAAIAcCE8AAAA5EJ4AAAByIDwBAADkQHgCAADIgfAEAACQw+/4HgCAejIzJ2lO0lVJM8nmg8k/z0u6LWlY0mOSGs45K2EMY5KuSHrGOTdV9OsDqCbCEwBfZiTtcc7NtTaYWSsoHUg/0cw+NrNh59yMind7vS9Q4tgABIjwBKDnzGxY0mQ6OK3hlKRG0eNIqk071/MaSfVqWPerZwAqjp4nAD40lC9sXJW0pZyhrNuE7wEA6C3CEwAf5tQMRFnNKOP0mpkNm9lYUt1qbWu0tnd47r70c/Mws4OSjnTzswDiRXgC0HPOuZkcU3Zyzs0556bMbL+ZHUy+TpnZvvTzkhB0VNLHkvanvnUs2Xau7bmTki5J2pdsG0v6q75Kflfr9x0xs3Nm1kj9/H5Je5KHh5LxnEo/B0A1mXPO9xgAQFKzMVzNhvFlfUhJWJlIN5Ob2WeSDrRfKZdcyXfUOfdGatsRSYfaX9vMvkqee7rt50+r2Zc1k2w7J+m2c+5Qh991wDl3vtv/bgBxofIEICb72h5PSTrU4Xmd+qnmVnjNTtOBM5K2tF1B91GH3w+ghrjaDkAUksrO+aRvaZ+aYairXqWMPmp7PFfi7wIQEcITgCgkvURXJF12zh1Ntu1RuFfhAagopu0AxOKcpKut4NQuwxVzjcJH1HkcB9d+FoCYEZ4AxGKfmlfGpQ23fb9lrsPPr2sxzFW0/65GSb8HQCAITwBiMSdpb+tBUmma0f2w0kg996pSYSmZ8ntM0vAKFapG2+NOU4Htz0n/rr3J7xlTs4kdQIWxVAEAr5LAcUjNKlKrenRZzWB0zjl3OXnesJq3aZmS9JmaywacT5Y3uCzpVGpZgYakd9Rs+p5T84q6LWqu63Q7+X231Vz/aX/yu04lr9PaNifptHPuqJlNJtuG1VzC4FRreYS2cX2ZXh4BQDURngAAAHJg2g4AACAHwhMAAEAOhCcAAIAcCE8AAAA5EJ4AAAByIDwBAADkUJl725mZSfp9SXd8jwUAAESlT9JvXcb1myoTntQMTjd9DwIAAETpYUm/yfLEKoWnO5L0t3/7t+rv7/c9FgAAEIGFhQX9wR/8gZRj5qpK4UmS1N/fT3gCAACloWEcAAAgB8ITAABADoQnAACAHAhPAAAAORCeAAAAciA8AQAA5BDcUgVmdkTSXPLwtnPuvMfhAAAALBFUeDKzS5IOOedmzGxM0seSzPOwAAAA7glm2s7MDkqacs7NSJJzbkrSHr+jAgAAWCqY8CRpUtKl9IYkQAEAAAQjiGk7M2tIakhqJBUoSdrpnDvqbVAAAAAdBBGeJA0n/9zinDstSWa2z8zOOecOdPoBM9soaWNqU1/JYwQAoCuzC4uavXN32fbBvo0a7N/kYURYj1DC05bkn1dbG5xzl83skpkNt/qg2hyTdKInowMAYB3e/eBz/ezKr5dt//Ez39dPxn/gYURYD3PO+R6DzGxY0meSHnTOzaW2fyXph52WK1ih8nRzfn5e/f39JY8YAIDsWpWn67Nf69Wzn+jNid3aNbiZylMAFhYWNDAwIEkDzrmFLD8TROUpWZpAak7fpZvEG6v8zF1J92qgyc8DABCcwf5NS0LSrsHNGn1owOOIsB4hXW03pfvTd+3bAQAAghBSeDoq6V5zeHLV3fkV+p0AAAC8CGLaTrrXID5sZpOpbR2vtAMAAPAlmPAkSa1lCgAAAEIV0rQdAABA8AhPAAAAORCeAAAAciA8AQAA5EB4AgAAyIHwBAAAkAPhCQAAIAfCEwAAQA6EJwAAgByCWmEcAABUz+zCombv3F22fbBvowb7N3kY0foQngAAQKne/eBz/ezKr5dt//Ez39dPxn9w73EsIYvwBAAASvXSE9s1PvJdXZ/9Wq+e/URvTuzWrsHNGuzbuOR5WUOWb4QnAABQqsH+TUsqR7sGN2v0oYFlz8sasnwjPAEAgCBkDVm+cbUdAABADoQnAACAHAhPAAAAOdDzBABYJpZLxgEfCE8AgGViuWQc8IHwBACRK6NKFMsl44APhCcAiFwZVaJYLhkHfCA8AUDkqBIBvUV4AoDIUSUCeoulCgAAAHIgPAEAAORAeAIAAMiB8AQAAJAD4QkAACAHwhMAAEAOhCcAAIAcCE8AAAA5EJ4AAAByYIVxAABSyrjRMqqF8AQAQEoZN1pGtRCeAABIieVGy1TI/CE8ATXEThdYWSw3WqZC5g/hCaghdrpAuLKe3MRSIasiwhNQQ+x0gXBlPbmJpUJWRYQnoIbY6cIHpouz4eQmfEGGJzNrOOfmfI8DAFAcpouz4eQmfMGEJzPbJ+lS6vGMpHHn3Iy/UQEAikJFBT6UUfEMJjxJakjak/z7HKEJAKqFigp8KKPiGVJ4kqQZpusAAEBRyqh4hhaeAAAAClNGxTO08PSimd1O/n2vc+6o19EAgCdcmQaEK6TwNKPmtN2UJJnZFjM75Zw71OnJZrZRUrrm1teDMQJAT3BlGhCuYMJTKzSlXJZ0ysyOrtAHdUzSidIHBqCWfFd+uDINCFcw4amdc27GzCRpWFJ7sJKk1yX9NPW4T9LNHgwNQA34rvxwZRoQriDCk5k1JN2QtKe1REGybUXOubuS7p0WJkELQA2VUSWi8gOsznd11qcgwlPiatvaTsNSx+k8AFiijCoRlR9gdb6rsz4FEZ6cc3Nmdqlt8zFJXG0HVAxVIqAa6vx3F0R4kiTn3BtmdiR5uFPSJefcaZ9jAlC8PGerWYMWVSKg9+r8dxdMeJKaAcr3GACUK8/Zap2nBequzv00CF9Q4QlA9eU5W63ztEDdEZwRMsITgGDVeVqg7gjOCBnhCQAQHIIzQrbB9wAAAABiQngCAADIgWk7AIXg6igAdUF4AlAIro4CUBeEJwCF4OooAHVBeAJQCK6OAlAXhCcAQNdi6nWLaawIG+EJANC1mHrdYhorwkZ4ArAiztSxlph63WIaK8JGeAKwIs7UsZaYet1iGivCRngCsCLO1AFgOcITgBVxpg4Ay3F7FgAAgByoPAEA0CUuqqgnwhMAAF3ioop6IjwBANAlLqqoJ8ITANQEU0zF46KKeiI8AUAP+QwwTDEBxSA8AUAP+QwwTDEBxSA8AUAP+QwwTDEBxSA8AR7Qe1JfBBggfoQnwAN6T4BicCICHwhPCF4sO8c846T3BCgGJyLwgfCE4MWyc8wzTqZugGJwIgIfCE8IXiw7x1jGCVQJJyLwgfCE4MWyc4xlnACA9dngewAAAAAxITwBAADkQHgCAADIgZ4nALUSy9IXAMJFeAJQK2UsfUEgA+qF8IRa4mBXX2UsKRHLWmQAikF4Qi1xsKuvMpaUYI0voF4IT6glDnYoEmt8AfVCeEItcbADAHSLpQoAAAByIDwBAADkEOy0nZldcs6N+x4HwJV5AIC0IMOTme2XtM/3OACJK/MAAEsFF57MrCFp2Pc4gBauzAMApAUXniS9KOm0pEnfAwEkv1fmMWUIAOEJKjyZ2Zikq77HAYSCKUMACE9Q4UnSY86508nU3arMbKOk9LxJX2mjAjxhyhAAwhNMeDKz/c650zl+5JikE2WNBwgBi3kCKAItAMUKIjwllaa5nD/2uqSfph73SbpZ0JAAAKgMWgCKFUR4UrNJfGfS8yRJOyXJzI5ImnHOnW//AefcXUn3YrSZ9WKcAABEhxaAYgURntqn68xsWNJB59wbnoYEAEBl0AJQrFBvz9LwPQAAAIBOggtPZnZQyRpPZnbOzFhpHAAABCOIabu0ZAovz1V3AMTVNADQK8GFJwDd4WoaIGzffOv06c05SdKnN+f0yFC/HtjAxU4xIjwBFcHVNEC4Lk7f0sn3runW/KIk6fiFab31/nWdeG5Ez44OeR4d8gqu5wlAdwb7N2n0oQHtGtws6f7VNEzZAX5dnL6lw2em7gWnli/mF3X4zJQuTt/yNDJ0i8oTAAAl+eZbp5PvXZPr8D0nySSdfO+axke2MYWXk88+T8ITAAAl+fDG7WUVpzQn6db8oj68cVtP7tzau4FVgM8+T8ITUFM0rwLlm72zcnDq5nm4z2efJ+EJqCGaV4HeGOzLNn2U9Xm9EMuyJz5XTSc8ATXTal5t78FoNa++/fIYASpCVBLD9PiOLRoa2KQv5hc79j2ZpG0Dm/T4ji29HtqKWPZkbVxtB9TIWs2rUrN59ZtvOz0Dobo4fUtPTb6v4xemJTUriU9Nvr/uq7jaAxn/X+T3wAbTiedGJDWDUlrr8YnnRoIKui89sV0//9FTenNityTpzYnd+vmPntJLT2z3O7CAEJ6AGsnTvIo4lHUZfFmBrI6eHR3S2y+PadvA0imvbQObgqz0suzJ2ghPQI3QvFotZVUSWZeoeM+ODukXR5/Wa8+PSpJee35Uvzj6dHDBCdnQ84RCxdJoWFcxNq9iZWVcBs+6ROV5YIPp0YcbkqRHH27w/kWssPBkZs9I+lLSjHNuoajXRVxoNAxbjM2rWFkZlUTWJQLW1tW0nZm93WHzjJr73gkze2Fdo0K0aDQMW4zNq1hZGZVEpnaBtXXb87Rsz+qcu+Gc+5Vz7h1Jw+sbFmJFo2H4YmtexcpalcSVoq5JGspZSWRqF1hbpmk7MxuQtCO1aYeZ/ZGWh6gtagancUn/sZARAijcs6NDGh/ZprMffa7jF6b12vOjmti7nYpTZFqVxMNnpmTSkqnYbiuJTO2iLFVaiyxPz9NWSQckHUwe/2qF530s6cX1DAroFg3r2dG8Wg2tSmJ6xXipGXC6WTG+jEAG5LmrQQwhK1N4cs7NS7oi6YqZTUkac869UurIgC7QsI46KrqSWHQgQ73luatBLLeOyn21nXPutJn9sIzBIEwxVXN83igS8KnoSiJTuyhCnqUvLl37IppbR3W1VEHSFL4iM3vbOXe4uyEhNDFVc3zeKBKoGqZ2sV5Zl774q8++jGp9sa7XeUqWI9ibPGy0fftFSYSniqCag6LF0NMAYP2yLmnxy5n/G9X6Yl2FJzP7czUbx69Kmmv7dkPLwxQiRjUHRSqrp6GMQEbIA9Yn+5IW2f6uQllfrOt72znntjjn/sQ592Lb159IWnVaD0A9dXPPtPYA0+k+bWXcxJYb4wLrl3UtsqzVpFDWF+s2PH20xvePdvm6ACqqm5vYZgkwZdzENpQb42YJjigH730xst7V4I+Htxa+4GuZuq48mVn/Kt/majwAS+S5Z5qULcB0E8jWUsZrdqOqla8YQklV33tfstzVILZbR3Ubnj6TdMzMXjezF9q/JB0qcIxAFDtcrP455blnWtYA81czX+YKZFnkDXllCKXyVbQYQklV33vfnh0d0i+OPq3Xnh+VJL32/Kh+cfTpJX2OMd06qtur7d5Xsyl8TsuDUkPquM8DuhLLoml1t9bnlOeeaVkDzC8/+zLTa+ZpMvV9Y9w86+KEchaeRZ6FEn2p6nsfiixLX8Syvli3lacZ59yGpGm8/WuDpP9W5CBRX5wF+pe1YXutzynPTWyzB5Ns52l5mkx93xg3hMpX0UKZCl1LFd/7GMWwvli34WmthvDXu3xd4J5YdrhVlmWaJevnJClzT0PWYPLk8HcKbzLNE/LK4LvyVYZYQklI733WVgVaGvzoKjw5566s8ZQ93bwukBbLDreqslb98nxOWXsasgaYP965tfAmU9+Nq74rX2UIKZSsJpT3PmtvWAw9ZFW1Zngys++Z2fdSj/vN7OlVvl4QSxWgALHscKsoT9Uv7+eUpXE0T4Apo8nUZ+Oq78pXGUIJJWsJ4b3PetJCS4NfWSpPU5IupR7vlXQ5+Tq/wtdwscNEHcWyw03LU0IPudyep5rUzeeUtXE0a4DJEsjyKuM1s/Bd+SpDCKEkC9/vfdaTlr//h29pafAsS3g6IOmV1OMZSedpGEfZYtnhtuQpoYdebs9TTSrzc8oTYMpoMvXVuBrTJdtZ+A4lefh877OetPzXX/4NLQ2erRmenHNX0j1OzrkbomEcPRDTDjdPCT2GcnuealLZn1MMV96UwVflqywxBUJf733Wk5b/dfvvCn095Ndtw/iNNb7/q+6GAywVww43T39QLFcQ5q0mxfA5xahqwTFvKPE5te3jvc960vJPt/xeoa+H/Lq+PctKzGzAzH5d9Ouivso6Cyxqx5ynPyiWKwi7qSZVrVKCcmQNJaFPbZch60nLv33ye1G1NFRR7vBkZjvM7O2VvtRsJOcTQ6GKPgsscsecpz8opisIu6kmVa1SAj9imNouQ9aTlt/9nQ3RtDSEougqZjeVp4aat2TZKWlr6munpHFJD6oZoBC42YVFTf9mftnX7IL/A3eZit4x5+kPiu0KQqpJ6LVYprbLkvWkhany7MqoYnZzb7s5Saedc690+qaZ/Qs1AxQC9+4Hn+tnV5bPsP74me/rJ+M/8DCi8pVx76pWqf2L+cWOr2tq7tBaJfQ8zw0B1ST0Up6p7Sd3bu3dwHoo6/3dQrgPXHtF55Gh/qD2EVnuqfgvt//j3K+bu/K01tV2SbM46zxF4KUntuvnP3pKb07sliS9ObFbP//RU3rpie09+f0+Kl9l9Bzl6Q+K6QpCIKsip0RimtouU9aTFp8nN6H3pZVZxeym8iTn3PwaT2l087rorcH+TRrsv1/y3TW4WaMPDfTs9/uofJW1Y26V0E++d21JONs2sEknnhtZtqBj1ucCobs4fWvJ/8vHL0zrrfevd/3/cmxT23WVpaLje1+W9WT547/5Kvdr5w5PZjYg6ZlVnjKs5irkeV+3IenF5OFONQPYUefcXN7XQhxeemK7xke+q+uzX+vVs5/ozYnd2jW4WYN9G0v7nd3umLOUpvOU0EMotwPrVcYBNO80OHqvjPaHMmQ9Cf4/X+evYnbTMD6s+7dh+S8dvvZKOtjF605KuuqcO+2ca00LnuvidRCJwf5NGn1oQLsGN0u6X/lKV8OK1s1q2HlK03lK6PQS1VfIt+bJqqwpkbKntqvw3vsWy5IrWU+W/8nm/MecbsLTnFa/PctEhmm9ToYl7Us9/qztMbBueXfMdb1kGuUJvU8kqzIPoGVdSVaV9963WPrSsp4s7/le/mvcum0YX3b7lWRxzBfMbHfuUTRfd9w590Zq006x5AFKkHXHXPdLplG8EMJ4UZWXsg+gRS+TEcJ7XxWx9KWVWcXs9vYsy26/klSbrkgyM/sP3bxui5m1qlCH1vM6wEqy7JhjKU0jDiGE8SIrL704gBY1tR3Ce18lMd20vawq5rpuz5JUmv5d60vSATWbySfW8ZoH1ex1OuScm1nleRvNrL/1Jamv29+JelprxxxKaZoejWrwHcaLrrzEdAD1/d5XTWxLrpSx2G9X4Sm5RcttSW8kX69I+rPk38fVDFFdSRrG90g6amZHVnnqMUnzqa+b3f7OKqnrquFlCKE0TY9GOXwEUp9hvIzKS0wH0FBOhKokthXOi75Ap6t1niQdkbTHOXfDzH7onHun9Y1khfFhSX+zrpE1r767ZGbnV6hAvS7pp6nHfSJA1XLV8LL4vmQ6hnVUYlT0ukRZ+QzjZa3aHcuaZWW/96Gvsl2WOi+50u203VTSOC5JS1ZV7GaFcTNrmNm5ZK2nllZg6njFnXPurnNuofUl6U6e31lVvlcNrxKfZ9b0aJTDZ9Owz2muMisvMdz/sMz3vu7V4bouudJteErvsX+V9DulNXK+XqtBPP1/bus1Vux7wnI+1k6qMl+laXo0ild2IF1rKtBnGC+78uL7AOrrvecKvvrqNjyZmf1nM/vIOXdF0itm9u/N7OkkSI3neTHn3JSaNxtOB6UJNStcLFcAr3ycWdOjUbwyA2nW6oOvMB5Tc3devt57qsP11u1SBe9I+ljS6WTTPkn/Rs11mSa1yo2DV/G6mU22vtSsPK12GxgEqopXh/X6zDqEZvWqKSuQ5q0++AjjMTV35+Hzvac6XG9dL1XgnHun1SjunJtzzj0m6UHn3Fbn3CddvN6cc+5o6usQ97WLT93n/4tS5UqBL2UE0m6rDz6muWK7Omotvt97qsP1tq51ntLM7GlJO5I1l1BDzP8Xp9tKQRWrfkUpI5DGVn2Iobk7K9/vPdXheut2nae3O2y+oeb+Z8LMXljXqBCctQ7KzP8XL2+lgKrf6sqYuoqx+uC7ubsovt97qsP11nXDePsG59wN59yvkqm8XEsVIGxZDsq+zwKrKmulgKpfNkVPXVF98Mf3e1/VPjJkkyk8JTf93d36UnN67o/S25Kvrq62Q7iyHpR9nwVW2VqVAqp++RQ5dUX1wZ8Q3vuq9ZEhuzyVp61q3oZlSs1w9Kvk39Nfl9W8me8rxQ4TPuQ5KPs+C6wzqn75FTV1RfXBn1De+yr1kSG7TOHJOTfvnLvinHtFzWB02jm3YYWvvanVxxGxPAflEM4C64qqn19UH/wJ5b2vSh8Zssvd8+ScO63mGk+ouDwH5VDOAqX6XXFG1c8/qg/+8N7Dh/UskomKy3tQDuEssI5XnFH1CwPVB39479Frha3zhOrp5qDs8yywrlechVT1A4A6IDxhRd0elH2cBdb9irMQqn4AUBeEJ6wqloMyV5zR+wEAvfI7vgeA8D07OqTxkW06+9HnOn5hWq89P6qJvduDmgbiirMmej8AoHxUnpBJ6AdlrjgDAPQK4QmVwBVnAIBeYdouErMLi5q9c3fZ9sG+jRrsp5rSam4/fGZKJi1pHOeKMwBAkQhPkXj3g8/1syu/Xrb9x898Xz8Z/0HXr9u+oOQjQ/3RBoxWc/vJ964taR7fNrBJJ54boXEaQK1VaX/vG+EpEi89sV3jI9/V9dmv9erZT/TmxG7tGtyswb6NXb/mxelbS4LG8QvTeuv961EHjRia2wGg16q4v/eJnqdIDPZv0uhDA9o1uFmStGtws0YfGuh6yq7KC0qG3twOAL1U5f29L4SnGqr7gpIAUBfs78tBeKohFpQEgHpgf18OwlMNhbSgZHsDI2c/AFCckPb3VUJ4qqC1AkkoC0penL6lpybf1/EL05KaDYxPTb7P/DsAFCSU/X3VEJ4qJksgCWFBSRoYAaB8Iezvq4jwVCFZA0lrQUlJy/6gerGgJA2MANAbvvf3VUV4qoi8gaS1oOS2gaWl2m0Dm/T2y2OlrvtBAyMA9E43+/tY+lF9jZNFMisiTyB5cudWSf4WlKSBEQB6K8/+PpYFNX2Ok8pTRXQbSHwsKEkDIwD0Xpb9fSz9qL7HSXiqiJgCCQ2MABCeWPpRQxgn4akiYgokNDACQHhi6UcNYZyEJ49mFxY1/Zv5ZV+zC/l7fWILJD4b1gEAy8XSjxrCOGkY9+jdDz7Xz678etn2Hz/zff1k/Ae5X68VSNINdFIzkITW6Cf5a1gHACwXS/tHCOMkPHn00hPbNT7yXV2f/Vqvnv1Eb07s1q7BzRrs29j1a8YWSHw0rAMAlmu1f3wxv9ixn8jUPBn33f4RwjiZtvNosH+TRh8a0K7BzZKkXYObNfrQgAb715eWqxZIWtOb12e/liRdn/266+lNAEBnsbR/hDBOwhOC9+4Hn+tP3/qFXj37iSTp1bOf6E/f+oXe/eBzvwMDgIqJpR/V9ziZtkPwWtOb7dYzvQkA6CyW9g+f4yQ8IXiD/ZvWPZUJAMgulvYPX+MkPAE1NLuwqNk7d5f0kUnNah5BFQBWR3iKSPsNEB8Z6g/2bABha18mo9VP1u0yGQBQJ4SnSMRyo0bEgT4yAOge4SkCrRsgtq9n0boBYkhXQCAO9JEBQPdYqiBwIdwAEQAA3BdU5cnMjiT/ulfSjHPuqM/xhCDPDRCf3Lm1dwMDAKCmgglPZjaZDktmds7MzjnnDvgcl28h3AARAADcF0R4MrOGpH1m1nDOzSWbX5f0sZkNO+dmvA3OsxBugFhFXKoPAOhWEOEpMZx8TSWPZ1LbaxueQrgBYhWVcak+gQwA6iGI8JRUmx5s2zyc/LNjcDKzjZLS11X3FT8y/1o3QDx8ZkomLQlQId2oMTZlXKrP2kkAUA9BhKcVHJJ0eZUpu2OSTvRwPN60boCYXudJalacQlvnKZbqSxmX6ucJZLG8TwCA5YIMT2Y2JmmfpD2rPO11ST9NPe6TdLPMcZUh66rhPm+AmOdAX+fqS55AVuf3CQBiF2R4kjQpaU+qeXwZ59xdSXdbj83im7bKu2q4rxsg5jnQV3Hl6jKqRFV8nwCgLoILT2Z2StKh1YJT6FoH23bpg21Mq4bnOdBXceXqMqpEVXyfAKAuggpPZnZQ0mSrz8nMhiU1nHNTq/9kWNoPti2tg+1aq4abmquGj49sC6IRvO4HeqpExaLfC0DsgglPZrZfUkPScCs0SRqXFN0q462D7fXZr/Xq2U/05sRu7RrcfO9gy6rhcalzeMwTdLI+l34vALELIjwli2Se6/Q959yh3o5m/doPtrsGN2v0oYF7j1k1HLHIE3SyPpdKHoDYBRGekv4m//NTPcKq4YhFnqCT9bl5KnlM8QEIURDhqW5YNRyxyBN0ypjezFrNImQB6CXCkwehrBrOAQehy1rNoo8KQC8RnjwJYdVwDjgIXdZqVt37qDgRAnqL8ORRGauG59mJ1v2AEwMOitmUMWUY03vPiRDQW4Qnz4peNTzPTrSKl+DHdMDLgoOiPzG995wIAb1FeKqYuu9EYzrgZVH3z9OnmN77ulfegF4jPFVMFatJecR0wMui7p+nT3V/76t2IgIUifCESqn7AQ8oStVORIAiEZ5K8s23Tp/enJMkfXpzTo8M9QdxnzoAyIITEWBlhKcSXJy+tWQJguMXpvXW+9d7tgQB6okelWrh8wTCRXgq2MXpWzp8ZmrZyuFfzC/q8Jkpvf3yGAEqwcGhWPSoVAufJxAuwlOBvvnW6eR71zrecsWpuXr4yfeuaXxkG1N44uBQNHpUqoXPEwgX4alAH964vWS18HZO0q35RX1447ae3Lm1dwMLFAeHYtGjUi18nkC4CE8Fmr2zcnDq5nlLfqaCU1wcHADURRX34XVGeCrQYF/Gu89nfF4aU1wAEC/24dVCeCrQ4zu2aGhgk76YX+zY92Rq3vj38R1bcr82U1xAMagAwAf24dVCeCrQAxtMJ54b0eEzUzJpSYBqtYefeG6kq2ZxpriAYviuANQ5vNX5v519eLUQngr27OiQ3n55bMk6T1Kz4sQ6T4B/visAvsObT3X+b0e1EJ5K8OzokMZHtunsR5/r+IVpvfb8qCb2bmd5AiAAvisAvsObT3X+b0e1EJ4yapWb261Ubn5gg+nRhxuSpEcfbhCcgArLMx3lO7z5VOf/dlQL4Smj9nJzy3rKzXWe/weqhOmoamHfjLUQnjJqlZuvz36tV89+ojcndmvX4OZ1lZvZ4QLVEMt0VBmhoKyg4TPAsG/GWghPGbWXm3cNbtboQwPres1YdrgAVhfLdFQZoaCsoOEzwLBvxloITx7FssMFUA1lhIKygobPAMO+GWshPAFATZQRCsoKGgQYhGyD7wEAAADEhMoTAAAB4Wq/8BGecvjmW6dPb85Jkj69OadHhvpZvwkAIhFLKMnaLB/Lf48U11izIDxldHH61pJbrhy/MK233r/OLVcAIBKxLEGQtVk+lv8eKa6xZkF4yuDi9C0dPjO15Ea/kvTF/KIOn5nS2y+PLQlQVUvYAFAFsSxBkLVZPpb/Hin7WGM5fhKe1vDNt04n37u2LDhJkpNkkk6+d03jI9vuTeFVLWEDQKjqfGucmP57so41luMn4WkNH964fW+qrhMn6db8oj68cVtP7twqKa6zAQCIWSwHW2QTy/GT8LSG2TsrB6eVnhfT2QAAxMz3wTaWaaZYxHL8JDytYbAv24eY9XkAgOL4PthS+aonwtMaHt+xRUMDm/TF/GLHvieTtG1gkx7fsaXXQwMAeOa78gU/CE9reGCD6cRzIzp8ZkomLQlQrRWeTjw3wnpPAFBDvitfPtV5ypLwlMGzo0N6++WxJes8Sc2KE+s8AQDqqM5TloSnjJ4dHdL4yDad/ehzHb8wrdeeH9XE3u1UnAAAtVTnKUvCUw4PbDA9+nBDkvToww2CEwCgtmKZsixjejGo8GRm+yQdcs4d8D0WAAAQvzKmF4MIT2Y2JmlCUkPSsN/RAACAqihjejGI8OScm5I0ZWb7JT3mezwAAKAaypheDCI8+dKaB21Xh8ssAQBAd2odntrnQVs6zYPWeT0LAABwX63DU2se9Prs13r17Cd6c2K3dg1u7jgPWuf1LAAAwH3Rhicz2ygpnXL68r7GYP8mbd28UZ/enJMk/d3f/4MeGervuARBndezAADEjdmTYkUbniQdk3RiPS9wcfrWklXDj1+Y1lvvX++4angs61kAANCO2ZNixRyeXpf009TjPkk3s/7wxelbOnxmatnNfr+YX9ThM1N6++UxbrsCAKgEZk+KFW14cs7dlXTvUjmz7Kt9f/Ot08n3ri0LTlLzxr8m6eR71zQ+so1VxAEA0WP2pFgbfA+gzZZe/JIPb9xecoPfdk7SrflFfXjjdi+GAwBAMGYXFjX9m/kl/VHTv5nX7MLKx826CaLylFphfL+kYTM7Jelj59zpMn7f7J1s/wNkfR4AAFVBf9TagghPrRXGJR3txe8b7MtWusz6PAAAqoL+qLUFEZ567fEdWzQ0sElfzC927HsySdsGNunxHT2ZRQQAIBix9Ef5XH6hluHpgQ2mE8+N6PCZKZm0JEC12sNPPDdCszgAAIHyOb1oznWqvcTHzPolzc/Pz6u/vz/Tz7Sv8yRJQwObOq7zBAAAwlHU/WkXFhY0MDAgSQPOuYUsP1Pr8CQ1ly04+9HnOn5hWq89P6qJvdupOAEAUBPdhKfQlirouQc2mB59uCFJevThBsEJAACsqpY9Ty3c6wcAAORV6/DEWhYAACCvWocn1rIAAAB51To8xbKWBQAACEftG8YBAADyIDwBAADkQHgCAADIgfAEAACQA+EJAAAgB8ITAABADoQnAACAHCq5ztPswqJuzS/qf/x2Xl/93f/Tg7/3j/TPf39AQwOs6wQAANankuHp5HvX9Jd/fWvZ9n/9h0P6Ty+NeRgRAACoispN21269kXH4CRJf/nXt3RxuvP3AAAAsqhcePrz//4/V/yeqVmV+uZb17sBAQCASqlcePrfC3dX/J6TdGt+UR/euN27AQEAgEqpXHjKYvbOou8hAACASNUyPA32ccUdAADoTuXC03f7N676/aGBTXp8x5YejQYAAFRN5cLTn/2rf7bq9088N6IHNliPRgMAAKqmcuFpfGSbJl/4Q31n8+8u2f6dzb+ryRf+UM+ODnkaGQAAqAJzrhqX7ZtZv6T5+fl59ff365tvnT68cVuzdxY12NecqqPiBAAA0hYWFjQwMCBJA865hSw/U8kVxiXpgQ2mJ3du9T0MAABQMZWbtgMAACgT4QkAACAHwhMAAEAOhCcAAIAcCE8AAAA5EJ4AAAByIDwBAADkQHgCAADIgfAEAACQA+EJAAAgh8rdnmVhIdNtaQAAALrKDVW6MfBDkm76HgcAAIjSw86532R5YpXCk0n6fUl3fI8FkqQ+NcPsw+IzCRmfU/j4jOLA5xS+1T6jPkm/dRlDUWWm7ZL/4EyJEeVrZllJ0h3nHHOpgeJzCh+fURz4nMK3xmeU6zOjYRwAACAHwhMAAEAOhCeU5a6kk8k/ES4+p/DxGcWBzyl8hX1GlWkYBwAA6AUqTwAAADkQngAAAHKozFIF8MfM9kk65Jw70OF7B1MPG865N3o3MgAol5ldcs6Nt21jvxcIM2s45+YKf116ntAtMxuTNCGpIekx59yetu8fVGrHYWb7Je11zh3t9VjrzsyOJP+6V9JM+2fAzt4/M2tIejF5uFPNv6uj6R0/n1NYkn3aOeecpbax3/MsOaG/lNo0I2ncOTeTes66/pYIT1i3ZOdwrEN4+kzL/4f9yjn3YK/HWGdmNpnecZvZOUlqVQrZ2YfBzE5JOuWcm0o9Hm5VNficwpKE3YOSJtvCE/s9z5K/jdb7P5f+LJLvr/tvifCEdesUnpIdy1fpnUqy3Una0zpAoFzJ53BF0jOtCkZSMfxY0k7n3Aw7+zCY2SVJl1I79CNKHZj5nMKSHID/Qqn9HPu9MCTHpMsrTdcV8bdEwzjKMrzC9rlVvodyDGvpe97aYQwnO/vh9jMzSY0kZKFHnHPjbVMHOyVdlu4dlPmcApG851c7fIv9XuCK+lsiPKEsW1bYfnuV76Fgzrk559yDbWe8rZ34jNjZB8nMhiXtk3Qo2cTnFJbHVqgisd8Lx4tmtj/5mkxtL+RvifAE1M8hNUvaM2JnH5xkOuicmlewts6O+ZwCYWb7nXOnfY8Dq5qRdNU5d945d17SZ0kPoVTQ3xLhCWW5vcL2Lat8DyVLytL7JC1bVgJhcM6dTvoHj6aukkQAkimfuVWewn4vAM65qbbK4GVJB5PPrxCs84SyzEgd19ho6H7PDXpvUs3G1bnkMTv7cE1KumRm58XnFIoXJe1M9cbslO41988o1aPGfi8cyYUxUnNarpC/JcITSuGcmzOz1rTQXNv3uOLEg6Rsfahtp07IDUByRvyOpB+mPofW+79Pzau6+Jw8a5+uS3rTDqYb/dnv+ZX8Ld1Q8yRxJrWtpZB9HtN2KMJK88STkva3HiS9HKxJ40Hy3k+mdibDZjaW7Dw69j6xs++pVoN4+nNoJP+c4XMKVqPDNvZ7/l1tu5puWLo3nTenAv6WCE/ompmNJVcxHJU0Zman0qu2ts7SzOxgUtbeyYrIvZesedJQc2mCfcnjo7p/lsXO3rNkp326bYc/IWnKOXc5ecznFJDWCUny7+eSVa3Z73mWhKNLbZuPaenfyrr/llgkE6iw1qJ9nb7XtiryETWnGRqStrJqde8ln9Wx1KaGlt+ehc8JyCB1scVOSR93mHJd198S4QkAACAHpu0AAAByIDwBAADkQHgCAADIgfAEAACQA+EJAAAgB1YYB+BNskJzQ/cXggSA4FF5AuBFcn+wU5I+VrIC8BrP32dmXyWBq+ixlPbaAKqH8ATAi+RWCeM5f6zMm+Byg10AmbBIJgCvzMypeRNP7tEGIApUngAAAHIgPAGIgpm1bmzciOm1AVQP03YAvEqm7cZ1v2m8IUnpO9EnjdytO6GPO+cuJ3exn0x+7pnUz+9Nfn7JjT7NbL+kLWr2Nm1R84ahlyTNtL92alznJX2k5g1Ed0o6IumAc+588px9ksaS7++RdKn1PQDVxVIFAEJwwDl3qPXAzI6Y2aVWQ7lzbkbSgSTQKNl2WdKeZNuEpNeT5Q7OJ1fOfZQKOcOSJpxzB9K/Y6XXTipQp9vGdEnS5dRr7u/wmp+Z2VwrgAGoJqbtAITgXPpBUnXalwSUtLkOPzuX/Ez6e1eVVKASY0oqWintFaL0z29JjykZxz5JB1LPeUfS6x1e86gAVBqVJwAh6LRMwIya03lZpsE+ans8l37gnDtvZu+Y2WfJ611KqkMzq4zntnSvCvWOpEOtgJZM1zUkPda2NtSXkrhqEKg4whOAUM0ow+KZq2i0Pd6h+71NR8xsRs0lEubaf7Bt2zlJV51zp1PbWuP6C1ZGB+qHaTsAodqilStDuZjZmHNuzjl3yDm3U9KDut8ovtrPHVTbdF2y7WrykBXJgRoiPAEIwZYO28bU1gu1DsPp/qmkWnRIq4SfZLrulFLTdYlGsqDnnJrBqv3njhQyYgDBIjwBCMGS27SY2aSk8x2uWmto+XRc++OVth1rezys5lIFK732OTWvrrs3XZdUneaShwckHUuvDZX0QtHzBFQcPU8AfDsv6fVUxWarpC/T6zQlNxFuhZ9JM9ui5tRZetuwpNNqTsXtkzRnZkqWG5iTdCr5HXPJzzScc2+s8Nq3k9d4IwlMDTXXeTqoJOgla009I+kdM2utBTXDMgVA9bFIJgAAQA5M2wEAAORAeAIAAMiB8AQAAJAD4QkAACAHwhMAAEAOhCcAAIAcCE8AAAA5EJ4AAAByIDwBAADkQHgCAADIgfAEAACQA+EJAAAgB8ITAABADv8ftC30msj63NUAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result from the automatic windowing procedure for comparison:\n", - "Result\t 3.27194697e-01 +/- 1.78414777e+00 +/- 2.73504675e-01 (545.286%)\n", - " t_int\t 5.26930916e+00 +/- 1.36902941e+00 S = 1.50\n", - "Result\t 3.27194697e-01 +/- 1.79228480e+00 +/- 3.07835024e-01 (547.773%)\n", - " t_int\t 5.31748262e+00 +/- 1.57262234e+00 S = 2.00\n", - "Result\t 3.27194697e-01 +/- 1.67905409e+00 +/- 3.16358031e-01 (513.167%)\n", - " t_int\t 4.66682386e+00 +/- 1.53936903e+00 S = 3.00\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "import pyerrors.jackknifing as jn\n", - "jack1 = jn.generate_jack(c_obs1, max_binsize=50)\n", - "jack2 = jn.generate_jack(c_obs2, max_binsize=50)\n", - "jack3 = jn.derived_jack(lambda x: np.sin(x[0] / x[1] - 1), [jack1, jack2])\n", - "\n", - "print('Binning analysis:')\n", - "jack3.print(binsize=10)\n", - "jack3.print(binsize=25)\n", - "jack3.print(binsize=50)\n", - "\n", - "jack3.plot_tauint()\n", - "\n", - "print('Result from the automatic windowing procedure for comparison:')\n", - "c_obs3.gamma_method(S=1.5)\n", - "c_obs3.print()\n", - "c_obs3.gamma_method(S=2)\n", - "c_obs3.print()\n", - "c_obs3.gamma_method(S=3)\n", - "c_obs3.print()\n", - "\n", - "c_obs3.gamma_method(S=2)\n", - "c_obs3.plot_tauint()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For this specific example the binned Jackknife procedure seems to underestimate the final error, the deduced intergrated autocorrelation time depends strongly on the chosen binsize. The automatic windowing procedure displayed for comparison gives more robust results for this example." - ] + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -428,7 +342,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.8.10" } }, "nbformat": 4, From 52a2c3490743bb56869580317e2cd71e5e43d62d Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 11:16:00 +0100 Subject: [PATCH 165/220] feat: example 2 and accompanying data file updated --- examples/02_correlators.ipynb | 48 ++++++++++++++++---------- examples/data/correlator_test.json.gz | Bin 0 -> 7407 bytes examples/data/correlator_test.p | Bin 94740 -> 0 bytes 3 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 examples/data/correlator_test.json.gz delete mode 100644 examples/data/correlator_test.p diff --git a/examples/02_correlators.ipynb b/examples/02_correlators.ipynb index db4dcdef..112e50d9 100644 --- a/examples/02_correlators.ipynb +++ b/examples/02_correlators.ipynb @@ -28,17 +28,29 @@ "id": "e5764fd0", "metadata": {}, "source": [ - "We can load data from preprocessed pickle files which contain a list of `pyerror` `Obs`:" + "We can load data from a preprocessed file which contain a list of `pyerror` `Obs`:" ] }, { "cell_type": "code", "execution_count": 3, - "id": "c49ff771", + "id": "fbfa65f5", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data has been written using pyerrors 2.0.0.\n", + "Format version 0.1\n", + "Written by fjosw on 2022-01-06 11:11:19 +0100 on host XPS139305, Linux-5.11.0-44-generic-x86_64-with-glibc2.29\n", + "\n", + "Description: Test data for the correlator example\n" + ] + } + ], "source": [ - "correlator_data = pe.load_object('./data/correlator_test.p') " + "correlator_data = pe.input.json.load_json(\"./data/correlator_test\")" ] }, { @@ -71,13 +83,13 @@ "text": [ "x0/a\tCorr(x0/a)\n", "------------------\n", - "8\t548(13)\n", - "9\t433(11)\n", - "10\t343.1(8.6)\n", - "11\t273.2(6.6)\n", - "12\t217.5(5.6)\n", - "13\t172.9(4.9)\n", - "14\t137.6(4.6)\n", + "8\t 548(13)\n", + "9\t 433(11)\n", + "10\t 343.1(8.6)\n", + "11\t 273.2(6.6)\n", + "12\t 217.5(5.6)\n", + "13\t 172.9(4.9)\n", + "14\t 137.6(4.6)\n", "\n" ] } @@ -102,7 +114,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -179,7 +191,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -256,7 +268,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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DTI+o7PfGNPin81prU0YY8Dp6gz8ntbao8BRXx2ynEJERALbfif84psT9/9gU+r2JV+Hj3ZOLCdSYULR3QngtoCd62/9MsbY9O5I37EGYAfOOLN42r5mYDtwOO14xN23wA1sgd4zQx1qgBF1d4qITIL0lrRs1JImM9xM7O7swmkB87ouW/Atj+GOL2vxZnNaa2PGmM1pXZobgZi7lAYZjrcC/b6Wt5zvKSIiU0jhSyRFaFrSILm4rBeqGn0zMb1B/x3W2nrfvgip65rVu2USWY4v9J8z33sWUF+1pImIiEgghbakhSqkzTQKaSIiIhJUoSEtFIvZioiIiEgqhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREFJIExEREQkhhTQRERGREJoz3RXwM8a0Awl3M2Kt3ZynfATY4G7WA1Fgk7U24SvT7juOtbbNd6wJaAMGgDjQDGyz1vaXeCkiIiIiJQlNSPPClLW2191uMsb0+ENVBt1At7U27r6mB+jDCVsYY7qttR2+9+gxxgxYa5vdXRGgCWjBCWndCmgiIiISBmHq7uwEer0Na+0g0JrnNVGcgOUZAtZCspWtwf3s6QGajDFR376V1lpjra33AqKIiIjIdAtFS5obmiL+bkrfsSY3sE3gaxHzNAL+smtxglzM3Y67nyNF1nMuMNe3a14x5xERERHJJxQhDSdIZZKgwEBljGlxy64HcAPfgrRiTe7nuG/fBmPMMFAL1Pu7RzPoBG4opD4iIiIipQhLSMvGC09Z+SYPRIC+TK1xPp1Am69MDMA3pq3VGNNnrV2f5fVdwLd82/OAF3NegYiIiEgRwh7ScgY0SLaYeZMNWo0xh3HGmSX85Ywx3cAW/7gzL5z53Af0GGMydr1aa48CR33nLPhCRERERIIIy8SB9LDkiWQ7ZoyJGGO60yYGDDI+Y9NftgUYSl/Sw92f5Atm2bpfRURERKZE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\n", "text/plain": [ "
" ] @@ -287,7 +299,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -349,7 +361,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -375,7 +387,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -389,7 +401,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/examples/data/correlator_test.json.gz b/examples/data/correlator_test.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..95c714ea1f5d69c23c1f33b7d9a1108346820b54 GIT binary patch literal 7407 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 literal 0 HcmV?d00001 diff --git a/examples/data/correlator_test.p b/examples/data/correlator_test.p deleted file mode 100644 index ecc7547b0c70a24a0bd43e5951ac38608f257dd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94740 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

h4xoYUBH2$+0 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 From 5f691e096a019c0d67cb2f639e1b652eda3359c8 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 11:50:03 +0100 Subject: [PATCH 166/220] feat: example 3 and accompanying data files updated --- examples/03_pcac_example.ipynb | 373 +++++++++------------------------ examples/data/B1k2_f_A.p | Bin 187237 -> 0 bytes examples/data/B1k2_f_P.p | Bin 187237 -> 0 bytes examples/data/f_A.json.gz | Bin 0 -> 15009 bytes examples/data/f_P.json.gz | Bin 0 -> 15072 bytes 5 files changed, 103 insertions(+), 270 deletions(-) delete mode 100644 examples/data/B1k2_f_A.p delete mode 100644 examples/data/B1k2_f_P.p create mode 100644 examples/data/f_A.json.gz create mode 100644 examples/data/f_P.json.gz diff --git a/examples/03_pcac_example.ipynb b/examples/03_pcac_example.ipynb index 595a1be5..c5b5aecb 100644 --- a/examples/03_pcac_example.ipynb +++ b/examples/03_pcac_example.ipynb @@ -32,27 +32,46 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can load data from preprocessed pickle files which contain a list of `pyerror` `Obs`:" + "We can load data from preprocessed files which contains lists of `pyerror` `Obs` and convert them to `Corr` objects. We use the parameters `padding_front` and `padding_back` to keep track of the fixed boundary conditions at both temporal ends of the lattice." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data has been written using pyerrors 2.0.0.\n", + "Format version 0.1\n", + "Written by fjosw on 2022-01-06 11:27:27 +0100 on host XPS139305, Linux-5.11.0-44-generic-x86_64-with-glibc2.29\n", + "\n", + "Description: SF correlation function f_A on a test ensemble\n", + "Data has been written using pyerrors 2.0.0.\n", + "Format version 0.1\n", + "Written by fjosw on 2022-01-06 11:27:34 +0100 on host XPS139305, Linux-5.11.0-44-generic-x86_64-with-glibc2.29\n", + "\n", + "Description: SF correlation function f_P on a test ensemble\n" + ] + } + ], "source": [ "p_obs_names = [r'f_A', r'f_P']\n", "\n", "p_obs = {}\n", "for i, item in enumerate(p_obs_names):\n", - " p_obs[item] = pe.load_object('./data/B1k2_' + item + '.p') " + " 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].tag = item" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can now use the `pyerrors` function `plot_corrs` to have a quick look at the data we just read in " + "We can now use the method `Corr.show` to have a quick look at the data we just read in " ] }, { @@ -62,7 +81,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "

" ] @@ -74,23 +93,21 @@ } ], "source": [ - "pe.plot_corrs([p_obs['f_A'], p_obs['f_P']])" + "p_obs['f_A'].show(comp=p_obs['f_P'], y_range=[-0.8, 8])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Secondary observables" + "## Constructing the PCAC mass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "One way of generating secondary observables is to write the desired math operations as for standard floats. `pyerrors` currently supports the basic arithmetic operations as well as numpy's basic trigonometric functions.\n", - "\n", - "We start by looking at the unimproved pcac mass $am=\\tilde{\\partial}_0 f_\\mathrm{A}/2 f_\\mathrm{P}$" + "For the PCAC mass we now need to obtain the first derivative of f_A and the second derivative of f_P" ] }, { @@ -99,16 +116,8 @@ "metadata": {}, "outputs": [], "source": [ - "uimpr_mass = []\n", - "for i in range(1, len(p_obs['f_A']) - 1):\n", - " uimpr_mass.append((p_obs['f_A'][i + 1] - p_obs['f_A'][i - 1]) / 2 / (2 * p_obs['f_P'][i]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more complicated secondary obsevables or secondary observables we use over and over again it is often useful to define a dedicated function for it. Here is an example for the improved pcac mass" + "first_deriv_fA = p_obs['f_A'].deriv()\n", + "first_deriv_fA.tag = r\"First derivative of f_A\"" ] }, { @@ -117,15 +126,15 @@ "metadata": {}, "outputs": [], "source": [ - "def pcac_mass(data, ca=0, **kwargs):\n", - " return ((data[1] - data[0]) / 2. + ca * (data[2] - 2 * data[3] + data[4])) / 2. / data[3]" + "second_deriv_fP = p_obs['f_P'].second_deriv()\n", + "second_deriv_fP.tag = r\"Second derivative of f_P\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can construct the derived observable `pcac_mass` from the primary ones. Note the additional argument `ca` with which we can provide a value for the $\\mathrm{O}(a)$ improvement coefficient of the axial vector current." + "We can use these to obtain the unimproved PCAC mass:" ] }, { @@ -134,17 +143,15 @@ "metadata": {}, "outputs": [], "source": [ - "impr_mass = []\n", - "for i in range(1, len(p_obs['f_A']) - 1):\n", - " impr_mass.append(pcac_mass([p_obs['f_A'][i - 1], p_obs['f_A'][i + 1], p_obs['f_P'][i - 1],\n", - " p_obs['f_P'][i], p_obs['f_P'][i + 1]], ca=-0.03888694628624465))" + "am_pcac = first_deriv_fA / 2 / p_obs['f_P']\n", + "am_pcac.tag = \"Unimproved PCAC mass\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To calculate the error of an observable we use the `gamma_method`. Let us have a look at the docstring" + "And with the inclusion of the improvement coefficient $c_\\mathrm{A}$ also the $\\mathrm{O}(a)$ improved PCAC mass:" ] }, { @@ -153,42 +160,26 @@ "metadata": {}, "outputs": [], "source": [ - "?pe.Obs.gamma_method" + "cA = -0.03888694628624465\n", + "am_pcac_impr = (first_deriv_fA + cA * second_deriv_fP) / 2 / p_obs['f_P']\n", + "am_pcac_impr.tag = \"Improved PCAC mass\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can apply the `gamma_method` to the pcac mass on every time slice for both the unimproved and the improved mass." + "We can take a look at the time dependence of the PCAC mass with the method `Corr.show`:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, - "outputs": [], - "source": [ - "masses = [uimpr_mass, impr_mass]\n", - "for i, item in enumerate(masses):\n", - " [o.gamma_method() for o in item]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now have a look at the result by plotting the two lists of `Obs`" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -200,109 +191,64 @@ } ], "source": [ - "pe.plot_corrs([impr_mass, uimpr_mass], xrange=[0.5, 18.5], label=['Improved pcac mass', 'Unimproved pcac mass'])" + "am_pcac_impr.show(comp=am_pcac)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Tertiary observables" + "## Plateau values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can now construct a plateau as (tertiary) derived observable from the masses. At this point the distinction between primary and secondary observables becomes blurred. We can again and again resample objects into new observables which allows us to modulize the analysis. Note that `np.mean` and similar functions can be applied to the `Obs` as if they were real numbers." + "We can now construct a plateau as a derived observable from the masses." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fit with 1 parameters\n", + "Method: Levenberg-Marquardt\n", + "`ftol` termination condition is satisfied.\n", + "chisquare/d.o.f.: 0.2704765091136813\n", + "Result\t 5.03431904e-03 +/- 5.38835422e-04 +/- 8.24919899e-05 (10.703%)\n", + " t_int\t 5.15384615e-01 +/- 1.25000000e-01 S = 3.00\n", + "64 samples in 1 ensemble:\n", + " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" + ] + } + ], + "source": [ + "pcac_plateau = am_pcac_impr.plateau([7, 16]) # We manually specify the plateau range here\n", + "pcac_plateau.gamma_method()\n", + "pcac_plateau.details()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now plot the data with the two plateaus" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result\t 4.79208242e-03 +/- 2.09091228e-04 +/- 1.90500140e-05 (4.363%)\n", - " t_int\t 1.09826949e+00 +/- 1.84087104e-01 S = 2.00\n" - ] - } - ], - "source": [ - "pcac_plateau = np.mean(impr_mass[6:15])\n", - "pcac_plateau.gamma_method()\n", - "pcac_plateau.print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also use a weighted average with given `plateau_range` (passed to the function as kwarg)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def weighted_plateau(data, **kwargs):\n", - " if 'plateau_range' in kwargs:\n", - " plateau_range = kwargs.get('plateau_range')\n", - " else:\n", - " raise Exception('No range given.')\n", - " \n", - " num = 0\n", - " den = 0\n", - " for i in range(plateau_range[0], plateau_range[1]):\n", - " if data[i].dvalue == 0.0:\n", - " raise Exception('Run gamma_method for input first')\n", - " num += 1 / data[i].dvalue * data[i]\n", - " den += 1 / data[i].dvalue\n", - " return num / den" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result\t 4.78698515e-03 +/- 2.04149923e-04 +/- 1.85998184e-05 (4.265%)\n", - " t_int\t 1.06605715e+00 +/- 1.79069383e-01 S = 2.00\n" - ] - } - ], - "source": [ - "w_pcac_plateau = weighted_plateau(impr_mass, plateau_range=[6, 15])\n", - "w_pcac_plateau.gamma_method()\n", - "w_pcac_plateau.print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case the two variants of the plateau are almost identical\n", - "\n", - "We can now plot the data with the two plateaus" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA10AAAGLCAYAAAA8g/hEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAA9hAAAPYQGoP6dpAABUM0lEQVR4nO3de3gc13nn+d8BKd4BNEESliiShkDqMrZGFxCSM76MrAic2CtHyWPxYo/WM9Z4BDw7kUf2kyxBzvPMhsk+GwrcKGNNmNkl5Iy0sTUOL9ImijUeh1QkxbITyxBEaeVYkUiQIqCLKRJogKR4EYizf9RpsNDo6i4AXV3d1d/P84BA1elTdaobaNbb55z3GGutAAAAAADRqIm7AQAAAACQZARdAAAAABAhgi4AAAAAiBBBFwAAAABEiKALAAAAACJE0AUAAAAAESLoAgAAAIAIzY67AeXIGGMkLZd0Ku62AACAilIr6R3LQqgAfAi6clsuaSDuRgAAgIq0QtLbcTcCQPkg6MrtlCT19/errq4u7rYAAIAKMDIyopUrV0qMlAGQhaArj7q6OoIuAAAAADNCIg0AAAAAiBBBFwAAAABEiKALAAAAACJE0AUAAAAAESLoAgAAAIAIEXQBAAAAQIQIugAAAAAgQgRdAAAAABAhgi4AAAAAiBBBFwAAAABEiKALAAAAACJE0AUAAAAAESLoAgAAQEUzxqSMMc1xtwMIQtAFAACAsmKMaTbG7DLGWGPMkDGmy33tMsbsNca0+R7bIukZSfvja/HUGWPajDF7424HSmN23A0AAAAA/Ky1fZI6XO9Vn7W2M1NmjElJeskY02Wt7bbW9hpj7pM05QDGGNNure0uWsPDnbNF0iZJKUn0zlUJeroAAABQMay1aUm7JHX5dqenebh1M23PVFlre10QWVE9c5gZgi4AAABUmrSklOv1mjI3B6xLRe5pyp5bltmebjuRHAwvBAAAQKVZLW/YYTroAS74aXGbt0jab6094Lbb5AVczS74kqTtmeO5fT9zj0lnhiDmO6YbNpgJ5Fa7x2yVtFlSh6SSDmNEeSHoAgAASKimLU+3KdwQumNHH7zzT7Lq/pak+yT9sEDd/UcfvDMTzKhpy9PzJP1eUPlMucCnXdIdBR66S15QtEPSPmPMYWPMWmtt2lq7zxiTltTsny/mjr9fUpcvmNprjOlz2/mO2euCtV2ZY1lrO10whipH0AUAAJBc8+UlbChkMMe+RZJ+GqL+/Bz7UgXKp6LVGNPujrnE7bsqXy+X06GJ19Unr4drX1AFFyC1+nrEJG/uVYekAyGOmet5LNROVAGCLgAAgOQ6q3A3/acD9oWpezbHvnSB8qnomU6GQWttn5tPtVFeMNTgvvJplTRojFnv25eSN9RwuscECLoAAACSyg3rm9bQvuzhhlOod05SZ8EHRswYs1nSLdbaDW57U4HHjyfAsNbm7A2b6jGdVNg2I7kIugAAAJAoLltgl7XW+HanXFmLtbY3R7UWST3KkdHQBWSDIY6Z1uSeL3rCQNAFoEqces/7ClJ7ufcFACg3YYKWVK46xpiUb+5X5jjNknrlzcdqdo/LLMLca4zZ51802QVwLa5OoWMO+tvi6ma3bSrXhYQw1tq421B2jDF1koaHh4dVV1cXd3MAFMOz26XnHwwuv22LdPvW0rUHQOKMjIyovr5ekuqttSNxt6eSuSCoQ1669bS8dOvbcyXP8KVqb5O0I5ON0A0FXC0vEUZaXpC1S9JeX0CVSRd/2D9vzO0/6eoNZoYbhjxmJulHn3tMh7ygrNNae8C1d5Ok9W5/t6SXpjNvDZWDoCsHgi4ggfw9XSfekJ68T/riI9LSa7x99HQBmCGCLgBBGF4IoPTiGOqX65hLr5GW31Tc8wAAAGQh6AJQej2PMtQPAABUDYIuAKXXeq907ee9n4OG+gEAACQEQReA0mOoHwAAqCIlCbpcFpeMlLV2x0zrhDmmyzCTdpuDQQvdAQAAAEBUIg+6MmkzM0GRMWa9MaYrk85zOnXCHNMYs19Sh7W2z6XmfEmSmXQyAMDMsQ4aAACBStHT1SlpXWbDWrvPGPOI2z/dOnnLXVDWa63tc+W9xpi1RboeAEA2kqMAABAo0qDLrcLdnAl+fFLGmBZrbe9U68itHl7gmF2SNvgLc50LACJVTb0/JEcBACBQ1D1dzQH7064sVyBUqE6QtKRmY0yfvFXAU755X6sLDGecK2mub1dtnvMAQDjV1PtDchQAAAJFHXQ1BOwfzFNWqE66QHkmMGuw1nZLkjGmzRiz11q7IaDuVkm/G1AGIElOHpZe7PZ+frFb+sxvS0tWR3Muen8AAICSmTI+E7T1ZHZYaw8YY/YbY3INS5Sk7ZL+yLddK2kgwjYC5aGahr9J0svflZ76+qXtV77nfd21U7r5nuKfj96faFXb7y8AoGJFHXQNBuxvyFNWqE6h8kxQlR1cpSW15Ngva+15Secz28aQ5BBVopqGv5087AVcduzSvszPT90vrfqV6Hq8EI1q+v0FkJfLCdAQ8OE6ELuog64+yftDsNamfftTyhH8hKyTt9yliJcmzxlLTesKgCSrpuFvL39HwatGGK+8bVsJG4QZq6bfX6DKGGOa5WWlbpf3wbkbF66UvA/ad1lrD7jHtkh6xJVVxKdnbi1ZSbpF3v1rvqzeSIBIgy5rbdoltpg0Fysom2CYOiGO2avcc8PIYAj4xT38rZTzq9LHJNmAQuvKUVHi+v1lWCMQOddj1eGCr76stVhTkl5ya7R2u6WB7pO0d6rnMca0Z3IAlEqOtWX3Fsg9gASoKcE5uiStz2y4jIL+X7RmX5bBUHVClHfKlzLele+jyxkoIy9/V9rZ6s2pkrzvO1ullx+P5nypVcrb05VaFc15kTw9j0rdtwV/9TwadwuBRHMjnXbJux/MSE/zcOsKP6R4XMDY5r5nbJe03gWYSKjIE2lYa7uNMZtd4JOStCSrC7VNXpDUHbZOiPIDLpjr8u3j0wOgXMQxv+rmr0g/fjig0HrlSUFPTLQY1giUg7S85YGyp5uE4oKercq/HNGUZc8ty2xLGvS1s1kTp8H0+fbTQZBQJcleaK3dkaesW76AK0ydkOUl7SoGMAVxzK9astrLUvjU/d457EXJuM7+u3YmK4kGCSaiFcewRgJpINtqecMO00EPcD1HLW7zFkn7M/PA5H3o3yxvjdfMh/TbM8dz+37mHpP2LUMUeEw3t6zL1cn8p7JV0mZJHZK63fEXZzU1E/gRcCVYElPGAyh3cc2vuvkerxftRw9JBx+XbvxytPPI4kJPTPIQSAPjXODTLumOAg/dJS8o2iFpnzHmsDFmrbU2ba3dZ4xJS2rOTmJhjNkvqcsXTO01xvS57XzH7HXB2q7Msay1nS4Yy6dD0gGmwSQbQReA0otzftWS1dKt7V7QdWt7aQKuUiYMkeJPkILiI5DGdG2rb1O4eUvHtG34T7Lq/pak+yT9sEDd/do2fGB8a1v9PEm/F1g+da3+KSVu31UhhhV2aOJSQ33yerj2BVVwAVKrr0dMkva7Yx0IccxcSxsFttOdr03S2qDHIBkIugCUXjXNryr1gsxxK3WAWS0IpDF98xVu2ZxcwcIiST8NUX9+jn2pAuVT0TOdaSNuGaFmY8xGedfXoNzZrf1aJQ0aY9b79qXkDTWc7jHz6ZK0djrz0lBZCLoAlF61zK+qtgWZqy3ABCrDWYXL7Hc6YF+Yumdz7EsXKI+cWwvrlkwyNWPMpgKPH0+qYa3N2Rs21WM6qYBj7ZLUQcBVHQi6AMSjGuZXVdOCzHEGmPSuAcG8YX3TG9qXPdwwfL1zmriUT8m5rIFd1lr/m3DKlbUErBfbIqlHOTIauoBsMMQx05rc8zWpJ8wNl+zyZTlslpQKWscWla8U63QBKHfZN60nD5fmvJn5VVLp5leVUjUtyBwmwIzkvCVe780vrr8boPqEGb6XylUnaz2szHH82QKb3eMyizD3ykuQMb6GrDtGS8hjDvrb4h47oW1u6GJKXubENrfdKbIXJho9XUC1Y0hYdKppQeY4Asw4e9f4uwEi5YKgDnlJJtIuK+D2XEPx/KnajTFd1tpON/eqU1KXy0aYlrRBXmbBvdL4/Kxud+zDmXlj1toNxpguN5QwLW+NrX3uXIWOmTbGdLi6fe4xvZI6jDF98nrS9ua6Zmttx0yeM5Q3gi6gXMSxDk+1zTkqtWpKGBJHgBnX8E3+boDIuWF3nQoxTNH1Tk3K0Biwpuu6rMfkPH6e/WGOmZ30I3t4Z9AbFxKMoAsoF3Gsw1NNc47iUC0JQ6R4Asy4hm/ydwMAmCKCLiCXOHqd4liHp5rmHPlf0xNvTPwuRfOaSvEmDCllgok4Asy4hm/G+XdD0hAAqEgEXUAucfQ6xbEOTzXNOcr1mj5536Wfo3hNM+JYkDmOOUelDjDjGr4Z198N88gAoGIRdAG5xNHrFIdqmnPkf01zScprKsU756iUAWZcwzfj+LthHhkAVDRSxgO51F7u9TAtv+lSoJXpdVp+U3Ju0DM3raZGMrO8fabG+0rYnKPjNqXX7FWBX8dtKu4mFk9c6dvjcPM90v090o1f8rZv/LK3HWXPTxx/N9X0mgJAAtHThfIWx9yqalMNixRLevynx/TwM28Glj9wx9X65rprStiiCFXTXD0pnuGbpf67qbbXFAAShqAL5S2OuVXVKI6b1hK75xOrtO5jH5EkHTp+Wt/YfVDf2nST1jQukiQ11s6Ns3nFVU1z9eJUyr8bXlMAqGgEXShv1TK3qsqceOctpd/v9zaG3pLGrpDe+Ln0/mlJUmrZSi1d/tGinrOxbp4a6+ZN2LemcZGuv7K+qOcpC9U0V69a8JoCQEUj6EJ5iyOjHyL35g/+WP+s/5FLO2okPffvxjf/buV9Wvq1Pyx9w5KimtYHqxa8pgBQ0Qi6gHJTBevwXP35r+vQ+78pSeofPKs//Ot/1O/8i2u1smG+V75sZYytS4gqmatXVXhNAaBiEXShrB0fOafjp857G+9fkMaapOMXJDssyZuHkz1krKJVyTo8S5d/dHz44Lm3h/XzH17Qsmtu1ZqkDfWLa0HmjCqYq1d1eE0RsaYtT18h6Yo8D3n36IN3vluq9gBJQdCFsjY549wfSH/+vqT3JZUg41wpe51Yhyd54lyQGQCmp0PS7+Yp/z1J20rTFCA5CLpQ1vwZ5/rfOKiVz/579d/+n7XympskRZxxrtS9TmHW4WnbVvzzIjpVtCBzLL3ScfUkxt2DCURrl6Sn3M/XSXpc0j2SXnf76OWKkDGmS1KzpO3W2t6424PiIehCWfNnnJt3YpbW1BzVvIZZ0Q9Di6PXiXV4kqeKbr7/4ke9+ssX/PcH90m7X5T0oiTpNz7dovY7P1nck8bVk0gPJhLMDR18V5Katjyd2f360QfvLGkAYIxpkdfr1i4pLalb0i5rbV8p2xGD7ZKOyAt+kSAEXUAucfQ6sQ5P4kzo/ckhSXMS75n1jNrnBmecPDPrdyQVOeiKqyexinowgbi4Xp4OY0yzpD5rbWfcbSoFa23aGJP0wLIqEXShMpw8rCU/f0ySvO8rroh2flMcvU5xrMPDMKlITZ6TOFHkcxJLaOGn7pNu+HVJ0qH3T+uBPz+oh790k9Ys8xafXhjF71Fcv5/8XaAKNG15+mpJ97vN+5u2PL396IN3Br+hoZgG424Aio+gC+XPza1Kuc3Um09Ibz4RbUa/OHqdYliH58yPH9HCv8/qnfANkzrzK7+jhZ/7j0U/b5yOnDijx35yVJL02E+O6rduX6Orli6M5Fz+OYmHjp/WN3Yf1Lc23aQ1jV4gEumcxFLzBSLn7LB+bod1buk/lZYnLCMlUAWatjx9r6Rv69Knj/9K0r9u2vL0144+eOdjsTUMqGCJD7qMMSlrbTrudmCafHOrMiGQKUVGvzh6naSSr8Pz+MU79JfnFweW/8bFFrVHcuZ47Onp15YnXh3ffrJ3QE/2Dqjr7hu0obX4a4P55yRmrGlcpOuTlho/JtU0fDOWXmn/OXOhxy+RXA/Xt+UtW58xy33/06YtT79w9ME7D5W+ZR5jTJukLrd5n7ykEw2S1lprO4wx7fJ6ijbJl4zCGLNeUmay5XZXJyVpSWboontMl6ReeXOq1kmSr3yzpMzQv2Zr7Q53vk7Xjg3W2n1uPtoz7rEbrLV9LkHGz9zj0tbabt81bXY/Zo7dEOJ5KHg9WcdPu+dF1tp9bn+zpBb3sFsk7bfWHghTN6BN03ptwrTFV1fyPYdB+4PaGKeSBF3uCclIWWt3zLROvnL3ou/3bfdJWlcFky+TJ66MfjH0Ok04d4nW4fnNz7Tokzd9XFLye2KOnDijLU+8qjHfqNHMz51PvKpbmhrUFFGPF6JRTcM3Y0nekeucfiQMSap/I2lME4OuDCvpa7p0s19y1toDxphOeUFRgy+AOGyM6fIFSJL0iKS1rt4+t2+vpN7MPaExpssYs8ta2+F7zFZ5N/K75QUIMsbskrQ3EwgYY5qNMfuttevcfeauTFustb3GmO2Ze1NjzH5JXb66e40xfe5auiSd9D025dpd6HkoeD2+dh/OBCLu3M3ufLvkBTc7JO1zz+HaTGdFgbpFe22cwLa4ADM7WFwftL/QcxeXyIMuFxylfL9M6/1P/HTqhDhmSpdeyDTBVgWLM6NfiXud4lBNPTF7evq9N3o7+ffJGKPdPf3q/Nx1MbQsAlUyV6+qhm/GkbzDf84Tb3hB3hcfkZZeE905UQ6alDvg8pfHbVBeT5O/Vyb7Xq9XGp+ZkJGWl5TD/9jtkobcfWSfe0yzrxem193Mb8wEMpLkeq8ajDFtLthoMMa0+OqlpfEsjK1Zbd0vL0lIj6TN1lrjO+5UEmnkvR633e4/vrxeuUzPUIcmzh/rk9QmL+hpLlA3yHRfm8C2uO0Nxpg91tq0e+4PyPUu5thflkrR09Up1z0rjUfmj7j9060T5ph9DCtMgJgy+l0atrRUavqq1Ptj7/u5pdLbw8kathSjUs6vGhg6K5sj4JIka60Ghs5Gct5YVElK82r60CCWQDnXOZdeIy2/qbTtQKkdVXBPV6a8HKRzbB/O2pdrmN6Eei7IScsb2pYJDrKDhLYc+zKPWyfpgLyU9h3ygqk2SXvcY1olDWZ6ZZyUvKGGbTmuY6om1M+6nlzlff6fXY/dRnkBT4MuPWct+epOpU0K8drka4u7z++QF0z2StrtOl56A/aXpUiDLtdF2pzjRUplfRoQuo68X/ApHRMVzM2tspoYennb0c2tmjxs6Q+kP39f0vuSEjZsKSalnl+1YvH8vD1dKxbPL/o5Y0NKcwDT918lbQ4oM5L+tIRtyafcMvztkvSSvMAru6cn51yorECs5Nx8rVustRvc9qYiHXrKr02htrhhnM3yAtVOY8wSa21n0P4iXEPRRd3T1RywP+3KcgVIheoEyT7mRmNM5kW/pVxfABSwZLVevOH3tfbgf5SVkZEd//7Sjb+vWyMa6ucfttT/xkGtfPbfq//2/6yV19wkKWHDlmIQx/yqja0rtev57A/aPNZabYog0ItNQoYPlquqSuCBqnP0wTvfbNry9NfkBVdWXhKNi/ICrq/FmUSjSFL+Dfdhf0q570kzenQpQYRfi7x5X5memr6sxA6ZupPuX12gkGuY3VRNqJ/jeiYd3517UN48M/9n2ilX3hLUNjenq6jTdlyb87WlVdIed95uY8weSc+453rS/mK2rZiiDrqCsq8M5ikrVCcd4ph98oYXZjLWNPgnFWYzxsyV5L+LrpWk0yNDqtHFgNOhFN4aPKsvvdislXpIm2Y9pxXmfQ3YZdp98bPqf/Fyff/md7Sqofg9FAskNdW6jfnndH3NUWn+OTXVusyJOqvTI9ENR6s5c0oLJH1w5pTGRoYiO4/fB2dOu+8jOj0yVuDRM/PdH7+Vb9CovvPjN/XN2z9a1HMumyP9/p1r9L897d0vjFmpxjXi9+9co6VzLuj0yIWintOvlM9v3OK41lKe89G/Pab/64WBwPL/5dMr9Fv/PFmLmcfxnlSJTo+MxN2Eojj64J2PNW15+gVJ/0HSvZL+TNIflFnAlX2/mCqwndFsJma23iqpO18g4RJjHDDGrPclbWiRlzfA34O1S17wsDir7j5jTLsvIUVKUosbNtedVZbJ4hfU/ildjzv+5qxEHeNBYFbdzHPa7GtbrrqFgq6pvjYN+driHt8uyT90sC/P/rKUyJTxOYYYHpC0yxjTGTDPa6uk383e+caP/1KLFiRoyFEFevxorWQX6S1drh2jX5pQViOrR/7qb3VP06lI2zB44j1dL+mdX7yoc+9HmLjDZ8EHA/qYpKO9B/TBgtdLcs6jpy+TtExHX3pGNYs+jPRcr7+Z0pidr1zz9ay1ev3NN/V6zc+Kft7rJD188yw9OVCrZ48v0G3LPtAXV5zSFUPv6PXni366CUr5/MYtjmst5TlbLtRox41eBu2BD2brP7+5WP/+6iGtWDAqSVp8/j29/vyLRT3n0IUaDV2YFVi+eM5FLZ4TXbAZx3tSJTr9QXLmhh598M5DTVue3ikv6NpZ6oDLBTUdcvOe3DylXfJutLvkTSvZJW8+/1b3uAY3yqkv+zG++78+SW2+eU8nfYnaMinPW1y9THINWWs3uMyAmWBgtbXWn31P8uZxTRqC46s7nn7dl+mwwxiz2VzKyj0or5epyxiTN0V7oevxHT/nuV2mwS7jZVdMS9rgnuO9herm4l6z6bw2fQXaknbHzwzHbJaXkn5jwP6yFHXQFTSmsyFPWaE6Uz6mezGl4CGN2yX9kW+7VtKAmT1HsxckcEJ2BTkxOjcwd6FXPl+zF+RLsjRzs+aMuO8LIv19GDxvNHTeC0Lmjp7T2FiTjo4u1flR7wOzxXOtGubmezZmZtao9zzOmrdIsxdE21Nw+aLZMidzTq8aL4/quV65QPrCZUbPHpe+cJXRyrpFkZwnWymfX//vUi5J+l2K45zLFkjLMucd8c770YZ5Wl0X3XkPvHuZdvfNCSzf1HxBX14dXbA5ayztfZ+3iP8X8zAXGB1TLO4D9A73lW1d1nanJidoy35Mhr93Knve1QFNTGOe3aa8U1VcYJfzMfnq5kj+UCjQ8gu8nkLnDkg6sS7rMaGn57jXbFqvTZi25FCW63EFiTroynRtZi9QnFJw91+hOnnLXdfnEXkLsY0/Nl8jrbXnJY0P0HcBmmZdNk+XzWPdnjhdXiuZ4wE358bo8trZumxe8X+NZ58f0uzzaUnS6OgJSVL96AnVXvBGoY7OTWl0bvCiwtPx074hvdCXdltG0n3Sa5Lkpf7+dHNKd32suOf0m33OfZ8zX5dFPB3l166Snjyau8zK6HPNc3TZvOAbzJkq5bVK0tunpR+87f38g7fna+MC6coIY70Db0n/7Y3g8n95jXTPtdGdv9TPb1znLOV5v7Ba+uSV3s/9p6U/fFn6nZulle73qGFexH8zF7xRH9518v9ikFmXfRB3E2asacvTV0i6wm1m1tG4rmnL05mHvHv0wTvfLXnDiicVdwOKLBV3AxBOpEGXb62BSXOxgrIMhqmTr9wFWD1ZY3Ob850T5WvdSmlfwIAGa6V/EdG0icUDz6ix78kJ+1qP/BcvnJd0vPmLen91cZMO/ctZz2jr3CcDy9+a9UWdLt81/6bkykXSAzdJDx/0wstMbmIrb//yBN3T7T8mPfzKpYGUfzMgPTPgXee6iHJ3fP6j0ie8PDABN+jRnFfyAsy/cn8nf3VE2nh1tAFmtWiYN/l1W7lIWpOKpTlItg5NnnLxuO/n35O0rWStKRI3dLBT3hyovOvFVoKkXU81KMWcri55q0NnJuG1y9fNmEnzmJlAGKZOvnIXtO3PasNW5V8XDGVq4s25Veb23MpEenM+tOIOnVrmjTDoPyX9ny9L/+vN0kqXXGN0bqro5zzXdIcOX1Hac2bEcaO8bqX08QZp9xvSgQHpV1dIm65JVsD19mkv4LK6tMR3ZgDawwe964/ieuO6QY8jwET05px5Vw3HfihJajj2Q5246jd0YeEVBWqhgu2S9FSe8ors5XJDB8t24dypStr1VIPIgy5rbbdvgmBKUnb+/Eyk3h22TojyHW7Sn+RNaNyfFdShgmRuzv/i58Oqef8fNLbsY/rNj6civTkfnbt4fPjg8Jj0cysNL5SW1SXrnFK8N8rLF0q/fpUXdP36VckKuCRpf78UsDSYjJH++pj01X9S+nZFIa4AM3NueteikXr7OS3/h0cubb/7I6Xe/ZHe+Xi70stvi7FliIobOliRgRVQzkqSvTDf6tAuGJoUEBVaUXqm5agsyxdKG64c0meHd+q5K/8PLVuYirtJiRDnjXI1+OUHwclCZL3ypIgrwKR3LTpzzryr5f/wiBtl4PHWSpSW/7xbH6Su1YUFrAcHAGEkMmV8sQy+8n1dmJ9/8sPovCW68uZ/MWHf2y//tWafO1nw+GMfuV5XNP/T8e0PL1zQ4EtPhGrbvGvbVN+wbHz7xHvHdPHIjwvWszWzdfknNkzY987rL2rWUO5FY/1G61bqyo9/esK+d3/2F6oZLZwi16y4RY0r14xvnz41rDOv/feC9SSp/qbf0Lz5C8a3h0+8rbFjf1+w3sU5dVq+9s4J+95+9VnNPvNe4bpLr9Xyq1smfIL+33/2D/rs/MP6yKzTeevOWfNZLV52aejN0Pvv6sKh5wqeU5I+8s++PGH73LFe/fIX/1iw3ujCy3XlDbdP2PfOS09r1oX8a8b8xZkbZfRPZHOkbjca0//7d69r/cJXAusvvP5/0qLaS5nMjvcfkh0onOp9bPZ8XXHLb07Yd6HvBf3yfH/BuhcXr9by626dsO+9n+6VGRstWHfWVZ/S0ssvTQQ8P/K+fvmLcKMzGtbercvmXEpU8G7f/6eaX76Wt86iMzfK6DpZ5cqwOaZFQ6/rl38X/PwW8z3i3Mlj+uUvonuPeGvkk7J2lXIvAzCmt47165fpnwTWn857xC8vLtLDQ1+Q9YUF3ocGVg8flD7y1vfz/r3O9D3CXtEyoYftjjN/VfD9QSrue8Q7b/Zq1olo3iOaz/9CVpNf0cw8zMte/C/qn5s/ki7me8TbP39Bs0dK+x4xPPi+zv1j+PcIAAhC0JXHZaMfaPZo/vSvFy9O7gYwF89p9uiZgsc/Pzp5IdYw9STvJsZv7OJoqLpjNZdNPtZouPaOjp6ftK9m9Gy4uln/2dmxsVD1jC5qzsgxzftwrhad9dK/zb0wqDkX0t5xampklXvtGpvjWk3oa70w6RP0/eeu01+fu07/dv6P9Jm5bwbWHRu7OGk77Os6qb1jF0LVvTh6btK+MK/NYJ6U/NaV5zuGHRvL2g73e5jr1qfm4vmQr83ka501+oFqxgqny754MevMNtzvYS52tPBr89nZr+kHynVT6vUW3D77tbzHKOZ7hEK+NtN9j2g0QzJaGRDAe+X5jjGd94gfn/0nrudlclhgNKYff7BSG+f3BNafyXvE84P1+rPXs3rYdGfB9wepuO8RYX4Ppem9Ryy4ODKhl8vPyGrBxZGC5y7me4RGS/8eYWfwHgEAfgRdeXw4e4FGZ+fv6bKzJpfbWfM0OrvwmCwze3J63zD1JGm2mfjJec2s2aHq2prJL7mZHa69mj130q6x2fNz/+eYfY6s85qamlDnvOz8SX30lR2qM5f+E101+GMNW6/u6LwGjc7NPelpbPbkha1tyGs9PlabY9idl1/v22f/uZrnjQR+oj2nZmIQWFMzSxdCvq6T2lszJ9zrmuP3dGz2fI0WuMlomH1e5kPlvK0yrjzf+efWTPw9NDXhfg9zvTZjs+aG/LuZfK0XZy/QWJhPsWdl/f6bcL+HudtR+LVZOvui/vXsn+v/Gbp+UpbGexe9qCVzL2pUwcco5nuEQr42032P+NSCfj19/sZcR5SV0acW9Gt0Vp5rncZ7xHG7OO+HBsft4rzHmO57xC8vLtKfHW/OMSzXFHx/kIr7HhHm91Ca3nvEBxfrZMfezxl4WRl9MKuu4LmL+R6h2aV/jzAzeI8AAD9jAyccVC9jTJ2k4R/95aNavGRZwccjOv71soIy+hV7vSxJeuwX0hOHpbEcfx41Rrp7dbQJEA6lpQd+JD38mWgzzr19Wup4Njjo6v7V6Od0lepa4zznO2cuZWlsK3GWxlJe6/7+4GUAophfFdffabW8P8w5867W/OR3pKy+RO+yjQ596iHmdGUZOvm+PvMb90pSvbU2//huAFWFni6ENnjO+wqSK031TMWV0a9aEiBU03pZ/t/f/tMTv0vR/P5mJD1LY0aplwGIax2/ON8fSpmp8cLCK/TOx9u1/Ofdsm7IZib8eufj7QRcSbWt3r84ci7vatsw2Q2BKSLoQmg/eEv6b28El//La6R7ri1de6L0kQXBmdhkvPKolDr9dTWslyXl/v39w5cv/Zyk3984lTLAjOtDg7jeH+LI1Jhefps+SF2rpX1/ocXv/q3SV3xGJ5p/k4Ar2XItjuxXkYsjA3Ej6EJon/+o9ImPeD/3n/ZuWH/nZm/RVSm6XoI4xPUJelzpr6uhJ8b/+5tLkn5/M6ph/ao4PjSI4/0hzuUdLiy4XIOrfk2L3/1bDa76NQKu5PMvjnydpMcl3SPpdbePXq4KYozpktQsabu1tjfu9lQzgi6Elmv41cpF0c4piGtIWByfoLNmVrSiHD5Yjqpp/apSf2gQx/tDNS20jZh5Qwe9wGrbeLr/17VtuKQ37MaYZnm9bpslpeWt6brdWpt25bsktUs6IKnLWhsqt38mCLHWbij44GTYLumIvGAaMSLoyuPih+f04TlSxeYyeqFG0nyNXjirD8+NFXz8dH3/8GXa3Tcxg5t/SNim5gv68urCaYCn47PLpGs/ZbS37zL9zbuX6bNXfKgNzR/qigVWH+aZ2zZdPzxymYy5TNbmSrlt9T/6PtRXro7mWqXSvaaSNHjeaOi8d50DZ4ykeTo6dE6jF7w7ysVzrRrmJivJTymf33fOGD38yvzA9auuXXhWVyyI7vkt5bXGdc5Svz+8d2qurJ2lXOugyVq9d+qiPjw3eVmPYpl9wVuP0Xt++X8xyMUoXvwqZa3tk9RpjGmR1Get7cwq7zDGpLP3h/AzSYUXU00Ia23aGNMXdztA0JWXHb2g0Q+G425GWbp47jJJ83Xx3GmNzo4uEGhbUqO1tbnX4ZKkxXMuavSD6G6wlkn6XONl+pt3l+lzjWkt04cajWiS/HunU7J28rpBl8pHI/19LNVrKkk/OFarvf21E/b9p9cudUNtWHlKm1adirQNpVbK53f/W7UyypWV0sjI6q+PXtQ9TdE9v6W81jjPWcr3h6Wza2W0KDBF/tLZZzX6QZSv6enx76M1/L8YxOZYW69ibau/WtL9but+bavfrm3D+RehK70pB0/W2n1RNKTMDcbdABB05XXNp35DdXURp8mrIOb0cZkzxyVJ805+oI+/+qY+dtXVal7izRq3CxtlFzXG2cRIjL13WnrlVTWtvUPXXR7dhJjrxt7S3598WxdzDh8yuu7qq3XdbR+N7Pyluk5J+nenL2jD6eCbk2WL5mjZoslrVFWyUj6/54bekN45EbAWgNG5+qt03W3XRHb+Ul5rnOcs5Xn/7T89q7/c9XLga3rfr/9zrWrIsbZVkdT88jXpF99SU0ubxj5yfWTnqXQjIyOSHoi7GTO3rf5eSd/Wpd+4fyXpX2tb/de0bfix2NoFVDCCrjwW1S3WIoKuS176v6XnH5QkXS/p6bmS/oev/LYt0u1b42hZpBac8hb3XLCwTovq6gs8evr+50/N0aN//3bOMivpK5+6WovqopusUqrrlKRFddJVkZ6h/JTy+W1qrJd5/WTOCUDGGDU11mtRXfHXt8so5bXGec5SnvfjdYvVdfdFdT7xqiRvjbAaN9Kw6+4b9LGm5ZGdW5J02uuZXrCwVorwd6fSjSl4ZEbF8Hq4vi1vqmJG5sL+VNvqX9C24YBUMvExxrRJ6nKb98lLHtEsabW1tsM9pkXSI5JkrV2bp16DpLVuCGO7vJ6iTfIlozDGrJeUuenZ7uqkJC3JDHl0j+mS1CtvTtU6d+5M+WZJmaF/zdbaHe58na4dG6y1+1y7n3GP3WCt7XNz037mHpe21nb7novN7sfMsRtCPH8Fryfr+Gn3vIz3Hrp5eC3uYbdI2p891y6obkCbpvXahGmLr67kew6D9ge1cSoIuhBe673StZ+XJPW/eVArn31A/bc/rJVX3+SV15LRaiauWrpQXXffEHhT1bSULBqV5vjIOR0/5c2zOXT89ITvktRYO1eNdcXP7rGxdaV2PX84Z5m1VptaE5ZJo0psaF2pW5oatPPZQ9r30oC+2LJC99++hvcGFNu/0aX8MNmspK/p0s152bDWHjDGdMoLbhp8gcBhY0yLtbbXWtvre0yYel2+AEnyAra1rt4+t2+vpF43B03GmC5jzC5rbYfvMVvl3cjvlhcgZBKB7M0EAsaYZmPMfmvtOjcHa1emLa7d2621O9xj98uXPMQYs9cY0+eupUvSSd9jU67dhZ6/gtfja/fhTCDizt3szrdLXnCzQ9I+9xyuzUp+ElR3qq9p4GvjBLbFBZjZweL6oP2FnruwCLoQXu3l44HV+fe9G8fzqTXS8ptibFSycFOVLI//9JgefmbiFIhv7D44/vMDd1ytb64r/jA/Avjkalq6UF/9ZJP2vTSgr36yidcSUWhS7oDLX16uBuX1GPl7V/rk9Vj0+rbD1vPrldfz45eWl+TD/9jtkoZcUNDnHtPs64XpdTfzGzOBjOQlDjHGNBhj2lyw0ZAJFn3nyvTWtWa1db+kDmNMj6TN1peRa4qJNPJej9tutxMzfnXqUs9QhybOH+uT1CYv6GkuUDfIdF+bwLa47Q3GmD3W2rR77g/I9S7m2F8UBF1AmeGmKjnu+cQqrftY8OJgjbVzIzs3ATxm7NR73pcknXhj4ndpwgdxSJSjCu7pypSXs3SO7YLD6wLqZQ8ZyHWcCfVckJOWN7QtExxkBwltOfZlHrdOXhr8bnmBQ4cbZrfHPaZV0mCmV8ZJyRtq2JbjOqZqQv2s68lV3uf/2fXYbZQX8DTo0nPWkq/uVNqkEK9Nvra4Xr0OecFkr6TdrkesN2B/URB0YcqOnDijbx88pzMX7tfCg+fUceUZXcWNXEWKa/hbtWismxfr80cAH42q+bvpeXR8Hu+4J++79HNC5/FC/1Xe2li5GEl/WsK2SJd6qsKabqa+csvwt0vSS/ICr+yenpxzobICsZJz87VuyayBZozZVKRDT/m1KdQWN4yzWV6g2mmMWWKt7QzaX4RrIOjC1Ozp6dcWN2RJ9hPS6+e15/Xn1HX3DdqQoHki1XJTFdfwN6AY4vo7rZq/G9883pzo5UqmbcNvalv91+QFV1ZeEo2L8gKur8WQRGO/QsxJilHKv+HmUKV0aThjLj26lCDCr0XevK9MT01fVmKHTN1JQagLFHINs5uqCfVzXM+k47tzD8qbZ+YfPphy5S1BbXNzuoq6jphrc762tEra487bbYzZI+kZ91xP2l+sdhF0IbQjJ85oyxOvamw8Idqs8WSynU+8qluaGhLzSXq13FTFOfwNyRJHABTX32nV/N0wfLB6bRt+TNvqX5D0HyTdK+nPJP1BHFkLM0PBjDGb/UO93Byj7TmqZA8BTBXYnmm9ZmNMKpMsQl7SjO58gYRLjHHAGLPel7ShRV6mPH8P1i55wcPirLr7jDHtvoQUKUkt7rnqzirLZPELav+Urscdf/y1cOceDwKz6mae02Zf23LVLRR0TfW1acjXFvf4dkn+oYN9efYXBUEXQtvT0+9liAlIQ727p1+dn7suhpYVX7XcVMU9/A3JEUcAFNffabX83fgD6VyS0uOPANuGD2lb/U55QdfOONPEuyFfm33JHCQvu186s+GCli5JKZclr1NewNAmqcEYMyjvBrpLXmCxy6Udn0q98cf4zt0nqc037+mkL6teJuV5i6uXSa4ha+0GlxkwEwyszqSx99kjaXWO5yNTdzz9ui/TYYd7rtrdwwfl9TJ1GWPCLA4deD2+4+c8t8s02OWyK6YlbZAXOO4tVDeXGbw2fQXaknbHzwzHbJaXkn5jwP6iIOhCaANDZ2VzBFySl4Z6YOhsiVsUnWq5qQKKJY4AiL/TaOUKpP2S0uOPylAooYHL8rcua3en+/Kb8Jjp1vPx905lz7s6oIlpzLPbnHeukAvscj4mX90cz1WhQMsv8HoKnTvgNcp+vkPPj5rJaxOmLTkUZT2uIARdCG3F4vnewqp6RxtnPa8V5n0N2GXac/E29ZvlWrF4ftxNBBATAqDk8QfSh46f1jd2H9S3Nt2kNY2LJCWnxx+YoVTcDSiyVNwNSCqCLoS2sXWlTv7oT7X9skdkZWRkZWXUMeuvtGW0XZtab4u7iQCAIskVSK9pXKTrr6yPqUUoiW31V0i6wm1dN/592/jr/q62Db9b8naVGTd0sFPeUMWuqfTglKOkXU85IuhCaFeZ99R12bdlZDWeQUNW1ko7LntE3tIGk4YeI6RqyZgIYOp4f0AJdUj63ax9j/t+/j1J20rWmjLlhg4WbeHcuCXtesoRQRfCe/k7LpHGxN3GuH9e/o7Uti2OliVCtWRMBDB1vD+ghHZJeipPedX3cgHTQdCF8NLHNCniGmddOaarWjImApg63h9QMt7QQQIroMgIuhBeapW8tRFzMa4c00UiAhQLQ9GSh/cHAKhsJQm6fGsFSFKqUNrPMHWmckxjzH5rbaE0kSjk5q9IP344oNB65QBix1A0AADKS+RBlwuOxoMiY8z6QllRCtWZyjHdAmdtxb+yKrRktXTXTump+2UlGTsma2q8vq+7dnrlAGLHUDQAAMqLCVrstmgnMOawpHWZFbjdviFr7eLp1gl7TGNMSlK7vBXAg8bF5Tp/naTh4eFh1dXVha1WPU4e1tAPt2vxG3s1dM0GLf61rQRcAJBgr709rC/88Qv6/tc/Tcr4PEZGRlRfXy9J9dbakbjbA6B81ER5cBf0NPuDIydljGmZTp0pHnOjIl5duiotWa2TH/+qJHnfCbgAILGOnDijx35yVJL02E+O6siJM/E2CAAqUKRBl6TmgP3pPGWF6oQ6pgvAego1EAAA5Lanp193PPScnuwdkCQ92TugOx56Tnt7+mNuGQBUlqiDroaA/YN5ygrVCXvMVmttb8EWSjLGzDXG1GW+JNWGqQcAQFIdOXFGW554VWNWGnMzETI/dz7xqo7S4wUAoUUddMXCGLPeWjuVYYVbJQ37vgYiaViFOz5yTq+9PazX3h7Wm4MX9dpYk/fd7Ts+ci7uJgIAimRPT7+MyT0d2hij3fR2AUBoUWcvHAzY35CnrFCdvOVuzlc6ZPsytkv6I992rQi8JpmchvoPpB+eln74giTSUANAkgwMnVVQsi1rrQaGzpa4RQBQuaIOuvokLzmGtTbt25/KlE2jTqHyjZJW+5JqrHaP3yypz1q7L/uE1trzks5ntoM+2at2E9JQv/+P0pP3SV98RFp2rSTSUANAkqxYPN/7/zBH4GWM0YrF82NoFQBUpkiDLmtt2hjTJ68XKp1VlnO+VZg6BconHNcY0yypPcyCzMivsW6eGuvmeRtmjlRzVGqcIy0nfTAAJM3G1pXa9fzhnGXWWm1qXRnNiU+9530Fqb3c+wKAChL54siSuiStl5RZyLhd0vgixi4oasuag5W3Tohyv1QxLgIAgGpy1dKF6rr7BnU+8aokL4FGjRsI0nX3DWpaujCaE/c8Kj3/YHD5bVuk27dGc24AiEjkiyNL40P70vICoCXWWn/Q1S6p01q7OmydMOW+Y2+Q1CZpn6Rd1toDIdrL4si5+D99PPHGpeGFS908Lj59BIDEOXrijHY+e0j7XhrQ+rUrdP/ta6ILuKSK/r+GxZEBBClJ0FVpCLoCPLudTx8BoAq99vawvvDHL+j7X/+0rr+yhEPK3zkodd8mtT8vLb+pdOedJoIuAEFKMbwQSdF6r3Tt54PLy/STRwAAACBOBF0Ir4yHdAAAAADlKpGLIwMAAABAuSDoAgAAAIAIEXQBAAAAQIQIugAAAAAgQgRdAACg/Jw8LL3Y7f38Yre3DQAViqALAACUl5e/K+1slV75nrf9yve87Zcfj7ddADBNpIwHAACTHB85p+OnzkuSDh0/PeG7JDXWzlVj3bzin/jkYempr0t27NK+zM9P3S+t+hVpyerinxcAIkTQBQAAJnn8p8f08DNvTtj3jd0Hx39+4I6r9c111xT/xC9/R5IJKDReedu24p8XACJE0AUAACa55xOrtO5jHwksb6ydG82J08ck2YBC68oBoLIQdFUo/7CPXCIb9gEAqAqNdfPi+X8ktUp5e7pSq0rZGgAoCoKuCpVr2IdfZMM+AACI0s1fkX78cECh9coBoMIQdFUo/7CPQ8dP6xu7D+pbm27SmsZFkiIc9gEAQJSWrJbu2uklzZCR7EXJuGTLd+0kiQaAikTQVaFyDftY07hI119ZH1OLAAAokpvv8bIU/ugh6eDj0o1flj7z2wRcACoW63QBAIDys2S1dGu79/Ot7QRcACoaQRcAAAAARIigCwAAAAAiRNAFAAAAABEi6KpwR06c0WM/OSpJeuwnR3XkxJl4GwQAAABgAoKuCranp193PPScnuwdkCQ92TugOx56Tnt7+mNuGQAAAIAMgq4KdeTEGW154lWNWWnMevsyP3c+8aqO0uMFAAAAlAWCrgq1p6dfxpicZcYY7aa3CwBQiU69J71z0Ps68Ya378Qbl/adei++tgHANLE4coUaGDora23OMmutBobOlrhFAAAUQc+j0vMPTtz35H2Xfr5ti3T71tK2CQBmiKCrQq1YPN/r6coReBljtGLx/BhaBQDADLXeK137+eDy2stL1xYAKBKCrgq1sXWldj1/OGeZtVabWleWuEUAAMzccZvScRv8wWGjnavGErYHAIqBoKtCXbV0obruvkGdT7wqyUugUeOmeHXdfYOali6MsXUAAEzP4z89poefeTOw/IE7rtY3111TwhYBwMyZoHlBRT2JMe2+zZS1dsdM6+QrN8akJG10m6slpSR1WmvTIdtbJ2l4eHhYdXV1YarE5uiJM9r57CHte2lA69eu0P23ryHgAgBUrOMj53T81HlJ0qHjp/WN3Qf1rU03aU3jIklSY+1cNdbNi7OJgUZGRlRfXy9J9dbakbjbA6B8RJ690AVHKWttt7W2W1KfMaZrJnVCHLNLUo8r73T79hb1wspE09KF+uonmyRJX/1kEwEXAKCiNdbN0/VX1uv6K+vHA601jYvG95VrwAUA+ZQiZXynpH2ZDWvtPkntwQ8PVadQebOkNt/24axtAAAAACiJSIMuN8yv2Vrbl1WUMsa0TKdOmGNaa9dlDUdcLenANC8DAAAAAKYt6kQazQH7066sdxp1guQ8pjEm0+u1LqiiMWaupLm+XbV5zgMAAAAAoUU9vLAhYP9gnrJCdUIf08392iupI0fPmN9WScO+r4E8jwUAAACA0BKdMt4l2eg2xuw3xrTkyZq4XdIf+bZrVeaB14l33lL6/X5J0vuDZ/Vxc0TvvzFHh054a5uklq3U0uUfjbOJAAAAABR90DUYsL8hT1mhOtM5Zpek/caYfbl6vKy15yWdz2wbYwIOUz7e/MEf65/1PyJJWiPp9rmSnr9U/ncr79PSr/1hLG0DAAAAcEnUQVef5CXHyFojK5Upm0advOUu0cYjku7zlWfO1SapexrXUXau/vzXdej93/Q2ht6S/uZ/l371P0qLvd6tq5etjK9xAAAAAMZFGnRZa9PGmD55vVDprLJcSTRC1clX7jIYtmWVp9z3fPO6KsrS5R+9NHzwnUXSc+9K13xcWn5TrO0CAKAYjpw4o8d+clSS9NhPjuq3bl+jq1iLEkCFKsU6XV2S1mc2XHKLTt92s9sXuk6+cheYdWcNI9wkqddaS9p4AADK3J6eft3x0HN6stebXv1k74DueOg57e3pj7llADA9xlob/UmM2Syv1yklaYm11h90tUvqtNauDlsnxDFT8jISZqTcOdIh21snaXh4eFh1dXVhqsTrnYNS921S+/P0dAEAKtqRE2d0x0PPaSzH7UmNkf7mtz+rpjLt8RoZGVF9fb0k1VtrR+JuD4DyUZLshXmyBo5nGJxKnRDHTGtizxgAAKgAe3r6vYRWOT4UNsZod0+/Oj93XQwtA4DpK8XwQkTp5GHpRRezvtjtbQMAUKEGhs4qaBSOtVYDQ2dL3CIAmDmCrkr28nelna3SK9/ztl/5nrf98uPxtgsAgGlasXh+4NItxhitWDy/xC0CgJkj6KpUJw9LT31dsmPel3Tp56fup8cLAFCRNrauzNvTtamVJVEAVB6Crkr18nckBS3ibFw5AACV5aqlC9V19w2qMV7iDEnjP3fdfUPZJtEAgHxKkkgDEUgfkxSUedK6cgAAKs+G1pW6palBO589pH0vDeiLLSt0/+1rCLgAVCx6uipVapXy9nSlVpWyNQAAFFXT0oX66iebJElf/WQTAReAikbQValu/ory9nTd/JVStgYAAABAAIKuSrVktXTXTsnUSGaWt8/UeF937fTKAQAAAMSOoKuS3XyPdH+PdOOXvO0bv+xt33xPvO0CAAAAMI6gq9ItWS3d2u79fGs7PVwAAABAmSHoAgAAAIAIEXQBAAAAQIRYpwsAAJSN4yPndPzUeUnSoeOnJ3yXpMbauWqsmxdL2wBgugi6AABA2Xj8p8f08DNvTtj3jd0Hx39+4I6r9c1115S4VQAwMwRdlerUe96XJJ14Y+J3Saq93PsCAKCC3POJVVr3sY8EljfWzi1hawCgOAi6KlXPo9LzD07c9+R9l36+bYt0+9bStgkAgBlqrJvH8EEAiUPQVala75Wu/XxwOb1cAAAAQFkg6KpUDB8EAAAAKgIp4wEAAAAgQgRdAAAAABAhgi4AAAAAiBBBFwAAAABEiKALAAAAACJE0AUAAAAAESLoAgAAAIAIEXQBAAAAQIRKsjiyMabdt5my1u6YaZ0Q5Zvdj7dI6rPWdk6x2QAAAAAwY5H3dLngKGWt7bbWdkvqM8Z0zaROiPIua+0O97VBUrMxZm8kFwgAAAAAeRhrbbQnMOawpHXW2j7fviFr7eLp1slXboxJSXpG0h3W2rQra5H0kqTV/jp5zl8naXh4eFh1dXVTu2AAAFCVRkZGVF9fL0n11tqRuNsDoHxE2tPlAqDmHIFOygVCU64T8pjN7iujz7cfAAAAAEom6jldQUFO2pX1TqNOkLS8YKxXUnYvWqZewV4uAAAAACimqIOuhoD9g3nKCtVJT+OYHZIOBA0tNMbMlTTXt6s24DgAAAAAMCWJTxnvhhy2SdqQ52FbJQ37vgZK0DQAAAAAVSDqoGswYH9DnrJCdaZ6zC5JazNJNQJsl1Tv+1qR57EAAAAAEFrUQVefNJ4cwy+l4PlVheqEPqYxZpekjgIBl6y15621I5kvSafyPR4AAAAAwoo06HLBTp9yzLVyCS+mXCfsMd1aXl2ZeVzGmOagjIkAAAAAEJVSzOnqkrQ+s+GCoU7fdrPbF7pOiGOul9fz1WyMaXPbnSJ7IQAAAIASi3xxZEkyxmyWl3UwJWmJtdYfILVL6rTWrg5bJ1+5G3Y4lKsd1loTsr0sjgwAAKaExZEBBClJ0FVpCLoAAMBUEXQBCJL4lPEAAAAAECeCLgAAAACIEEEXAAAAAESIoAsAAAAAIkTQBQAAAAARIugCAAAAgAgRdAEAAABAhAi6AAAAACBCBF0AAAAAECGCLgAAAACIEEEXAAAAAESIoAsAAAAAIkTQBQAAAAARIugCAAAAgAgRdAEAAABAhAi6AAAAACBCBF0AAAAAECGCLgAAAACIEEEXAAAAAESIoAsAAAAAIkTQBQAAAAARIugCAAAAgAgRdAEAAABAhAi6AAAAACBCBF0AAAAAECGCLgAAAACI0OxSnMQY0+7bTFlrd8y0TphjGmPaJHVYazdMtc0AAAAAUAyR93S54Chlre221nZL6jPGdM2kTojyFre9QVJzFNcFAAAAAGEYa220JzDmsKR11to+374ha+3i6dYJe0xjzHpJW621a6fY5jpJw8PDw6qrq5tKVQAAUKVGRkZUX18vSfXW2pG42wOgfEQ6vNAYk5LU7A+OnJQxpsVa2zvVOpL6pnpMAACAQKfe876C1F7ufQHANEU9pytoaF/aleUKkArVCZLvmAAAALn1PCo9/2Bw+W1bpNu3lq49ABIn6qCrIWD/YJ6yQnXS0zhmXsaYuZLm+nbVTuc4AACgArXeK137ee/nE29IT94nffERaek13j56uQDMUEmyF1aArZJ+N+5GAACAGOQaPrj0Gmn5TbE0B0DyRJ29cDBgf0OeskJ1pnPMQrZLqvd9rZjmcQAAAABggqiDrj5pPDmGXypTNo060zlmXtba89bakcyXpFPTOQ4AAAAAZIs06LLWpuUFQpPmWgVlGSxUZzrHBAAAAIC4RL44sqQuSeszG25h407fdrPbF7pOiPKMaSXWAAAAAIBiiTzostZ2S15gZIzZLGm1tXaH7yFtygqYCtUpVG6MaTHGdLnjthhjduUI7AAAAAAgcsZaG3cbyo4xpk7S8PDwsOrq6uJuDgAAKIWTh6UfPSQdfFy66R7pM78tLVkduvrIyIjq6+slqd7NEQcASaUZXggAAFDeXv6utLNVeuV73vYr3/O2X3483nYBSATW6Zqh4yPndPzU+cDyxtq5aqybV8IWAQCAKTl5WHrq65Idu7Qv8/NT90urfmVKPV4AkI2ga4Ye/+kxPfzMm4HlD9xxtb657poStggAAEzJy9+RZAIKjVfetq2EDQKQNARdM3TPJ1Zp3cc+Ikk6dPy0vrH7oL616SataVwkyevpAgAAZSx9TFLQHHfrygFg+gi6Zqixbt6k4YNrGhfp+ivrY2oRAACYktQq5e3pSq0qZWsAJBCJNAAAQHW7+SvK29N181dK2RoACUTQBQAAqtuS1dJdOyVTI5lZ3j5T433dtZMkGgBmjKALAADg5nuk+3ukG7/kbd/4ZW/75nvibReARCDoAgAAkLwerVvbvZ9vbaeHC0DREHQVyZETZ/TYT45Kkh77yVEdOXEm3gYBAAAAKAsEXUWwp6dfdzz0nJ7sHZAkPdk7oDseek57e/pjbhkAAACAuBF0zdCRE2e05YlXNWalMZf4KPNz5xOv6ig9XgAAAEBVI+iaoT09/TIm99oexhjtprcLAAAAqGosjjxDA0NnZW3utT2stRoYOlviFgEAgCk59Z73JUkn3pj4XZJqL/e+AGCaCLpmaMXi+V5PV47AyxijFYvnx9AqAAAQWs+j0vMPTtz35H2Xfr5ti3T71tK2CUCiEHTN0MbWldr1/OGcZdZabWpdWeIWAQCAKWm9V7r288Hl9HIBmCGCrhm6aulCdd19gzqfeFWSl0Cjxk3x6rr7BjUtXRhj6wAAQEEMHwQQMYKuItjQulK3NDVo57OHtO+lAX2xZYXuv30NARcAAAAAshcWS9PShfrqJ5skSV/9ZBMBFwAAAABJBF0AAAAAECmGFwIAgKp2fOScjp86H1jeWDtXjXXzStgiAElD0AUAAKra4z89poefeTOw/IE7rtY3111TwhYBSBqCLgAAUNXu+cQqrfvYRyRJh46f1jd2H9S3Nt2kNY2LJHk9XQAwEwRdAACgqjXWzZs0fHBN4yJdf2V9TC0CkDQEXTPkHwd+6PjpCd8lxoEDAAAA1Y6ga4ZyjQP/xu6D4z8zDhwAAACobgRdM+QfB54L48ABAACA6laSoMsY0+7bTFlrd8y0zkzLiyXXOHAAAAAAyIh8cWQX/KSstd3W2m5JfcaYrpnUmWk5AAAAAJSKsdZGewJjDktaZ63t8+0bstYunm6dmZaHaHOdpOHh4WHV1dWFvlYAAFC5jpw4oz959pD2vTSg9WtX6LduX6Orli4MXX9kZET19fWSVG+tHYmsoQAqTqRBlzEmJWnIWmuy9ltJa621vVOtI6lvJuW5zpmjDQRdAABUkT09/dryxKuSpDEr1bi7iK67b9CG1pWhjkHQBSBI1MMLmwP2p/OUFaoz0/JJjDFzjTF1mS9JtQHHAAAACXPkxBlteeJVjVkv4JI0/nPnE6/q6Ikz8TYQQMWLOuhqCNg/mKesUJ2ZlueyVdKw72sg4HEAACBh9vT0yxiTs8wYo909/SVuEYCkiTyRRoXYLqne97Ui3uYAAIBSGRg6q6DpFtZaDQydLXGLACRN1CnjBwP2N+QpK1RnpuWTWGvPSzqf2Q76tAsAACTPisXzvf/7cwRexhitWDw/hlYBSJKog64+yUuOYa1N+/anMmXTqDPT8uI69Z73FaT2cu8LAACUpY2tK7Xr+cM5y6y12hQykQYABIk06LLWpo0xffJ6mdJZZTmzCIapM9Pyoup5VHr+weDy27ZIt28t+mkBAEBxXLV0obruvkGdAdkLm6aQNh4AcinFOl2ZhYp3BGw3S2pzixiHrTOj7RBtDp8y3t/TdeIN6cn7pC8+Ii29xttHTxcAABXh6Ikz2ulbp+v+29dMKeAiZTyAIJEHXZJkjNksr9cpJWmJtbbTV9YuqdNauzpsnWKUF2jv9Nbpeueg1H2b1P68tPym8PUAAEBZeO3tYX3hj1/Q97/+aV1/Zf2U6hJ0AQgS9ZwuSVK+HibXw9WdY3/eXqmZlgMAAABAKZAyHgAAAAAiRNAFAAAAABEi6AIAAACACJVkTldVOHlYetFNTXuxW/rMb0tLVuevAwAAYnd85JyOnzovSTp0/PSE75LUWDtXjXXzYmkbgGQoSfbCSjPl7IUvf1d66uvez3ZMMq4D8a6d0s33RNZOAAAwc/9p/xt6+Jk3A8sfuONqfXPdNQWPQ/ZCAEEIunKYUtB18rC0s9ULtiYdqEa6v4ceLwAAypi/pyuXsD1dBF0AgjC8cKZe/o4kE1BovPK2bSVsEAAAmIrGunkMHwQQKRJpzFT6mKSg3kLrygEAAABUK4KumUqtUt6ertSqUrYGAAAAQJkh6Jqpm7+ivD1dN3+llK0BAAAAUGYIumZqyWovS6Gpkcwsb5+p8b7u2kkSDQAAAKDKEXQVw833eFkKb/ySt33jl71t0sUDAAAAVY+gq1iWrJZubfd+vrWdHi4AAAAAkgi6AAAAACBSBF0AAAAAECGCLgAAAACI0Oy4G1DxTr3nfUnSiTcmfpek2su9LwAAAABViaBrpnoelZ5/cOK+J++79PNtW6Tbt5a2TQAAAADKBkHXTLXeK137+eByerkAAACAqkbQNVMMHwQAAACQB4k0AAAAACBCBF0AAAAAECGCLgAAAACIEEEXAAAAAESIoAsAAAAAIhR59kJjTLtvM2Wt3THTOmGOaYxpk9Rhrd0w1TYDAAAAQLFE2tPlgqOUtbbbWtstqc8Y0zWTOiHKW9z2BknNUVwXAAAAAIRlrLXRHdyYw5LWWWv7fPuGrLWLp1sn7DGNMeslbbXWrp1Gu+skDQ8PD6uurm6q1QEAQBUaGRlRfX29JNVba0fibg+A8hFZT5cxJiWp2R8cOSljTMt06kznmAAAAAAQpyiHFwYN7UvnKStUZzrHBAAAAIDYRJlIoyFg/2CeskJ10tM4JgAAAADEJvLshZXAGDNX0lzfrtq42gIAAAAgWUIHXS5r4LoQD+10c64GA8ob8pQVqjOdY4axVdLvzqA+AAAAAOQUOuhy6dm7p3DsPslLjmGtTfv2pzJl06gznWOGsV3SH/m2ayUNzOB4AAAAACApwuGF1tq0MaZPOeZiWWt7p1tnqscM2dbzks5nto0x0z0UAAAAAEwQ6eLIkrokrc9suCGKnb7tZrcvdJ0Q5Rkk1gAAAAAQu0gXR5YkY8xmeb1SKUlLrLX+oKtd3hyw1WHrhDhmi6RN8gKzZnlDIl9ywyPDtpnFkQEAwJSwODKAIJEHXZWIoAsAAEwVQReAIFEPLwQAAACAqkbQBQAAAAARIugCAAAAgAgRdAEAAABAhAi6AAAAACBCBF0AAAAAEKHZcTegnI2MkO0VAACEw30DgCCs05WDMeZKSQNxtwMAAFSkFdbat+NuBIDyQdCVgzHGSFou6VTcbQmpVl6QuEKV0+bpqJbrlLjWJKqW65S41iSqluuUZn6ttZLesdxgAfBheGEO7o2yYj6h8mJESdIpa21ixzZUy3VKXGsSVct1SlxrElXLdUpFudZEPz8ApodEGgAAAAAQIYIuAAAAAIgQQVcynJf0e+57klXLdUpcaxJVy3VKXGsSVct1StV1rQBKhEQaAAAAABAheroAAAAAIEIEXQAAAAAQIVLGo+IYY/Zba9fF3Q4giDGmTVKHtXZDjrJ232bKWrujdC0rvgLXutn9eIukPmttZ0kbV2T5rjXrcRX9HlXoOt3rmnabg9bafaVqW7GF/FtNSVoiabu1Nl261gFIEoKuCpe0m5pCjDHrJbXF3Y6oJemmJp+k3dQYY1okbZJ3Pc05ytvlC7SMMeuNMV2V+Hcb4lonXJcxZq8xZm+hgKUcFbrWrMdW7HtUmOs0xuyXF6T0uce/JMnkemw5C/H7u1lSd+b9yBiTktQlqaNkjQSQKARdFSxJNzVhuP/08t7wJEFSbmoKSeJNjbW2V1Kvu/FuzfGQTknrfI/fZ4x5xO2vKPmu1b2WbcaYlC+I3i7pJWNMs7W2r6SNnaEQr6ukyn+PKnSd7kOD3szrZ63tNcasLXEziyLEa7rO3wttrU0bYyr2tQUQP+Z0VSj/TY1v93ZJ6xP8H8NGSd1xNyJKuW5qJFXkTU0I6/y9Wu7npP7ujt+Q5wg4Ui64TppmTXw9+3z7kyrp71Fdkvb7d7j3qCRq8I0kAYAZI+iqbFVzU+NuSnvibkcJcFOTXEF/l+k8ZRXJWpu21i7O+t3NXGNF9XKFlfT3KPehQUrehwTt7qsr3lZFqlNSlzFmvzEm5a61YnvhAcSPoKtCVeFNTWuCgw9J3NRUwU1NQ8D+wTxlSdIh6UClDS2cgqS/R2X+f2mw1nZba7sl7TfG7I2zUVGx1h6QNxS4TdKQpJ8l+HcXQAkQdCVLIm9qjDHr3X/wScdNTcJ+d+FxvUBtkpI637Qa3qMyHwyM9+a5v+FEDml319QiabG8IaN7szKPAsCUEHQlRFJvalzvTzrmZpQKNzXJvqkZDNjfkKcsKbokra3kzJRBqug9qi/re0Za3t9x0nRZa3e4USUd8j4g2pXE92IApUH2wuRI6k3NRkmrfYkGVkvjme/6EpZKvdBNTdJ6gbp8mTY7XI/efmNM4nprnT7Ju0nP+jtNKXmv7ThjzC552TjTcbclIlXxHuWyqUpej7x/GGUqlgZFyL2WE/4mrbUHjDE75H24mfReTQARIOhKgCTf1GQP2XGfMrZX+oKyuXBTk+ybGpdyuk9ez1Y6qyyRc4Fcz2VXJoh2f7+pJF1vNb1HyXtfyjX/MDGvZwGHleAPSABEi+GFFS7XTU1C009npOJuQMS4qUnGTU1QYowuSeszG+7vt+LW6MqS81rd+kcpSc3GmDa33anKfn3DJDxJRd2IEgi6zk75hrC73999Fd4zPela3YcCLVlLskjeaJIDJWkVgMQx1tq424Bpcjcx/l6RlLxx551J7PVy/8FvkNcTsk/SrqT9B2iMaZO0wc0hyFzzuiQueO0Wgd7g/101xuzKXHslch94bJIXWDXL67F7yd8b4oadpeX9vS7xL3BeSfJdq7tZHcpVz1pbcQt9h3ld3eMq+j0q5O9vu9wQSklK4u+vK09J2uoeflLSEknbk/h/K4DSIOiqUEm7qcElSbmpKYSbGgAAUC0IugAAAAAgQszpAgAAAIAIEXQBAAAAQIQIugAAAAAgQgRdAAAAABAhgi4AAAAAiBBBFwAAAABEiKALAIrEGNNsjGmOux0AAKC8EHQBQPEkciFrAAAwMwRdAFA8zdbavrgbAQAAygtBFwAUgTGmRVJv3O0AAADlh6ALAIqjQ9KuuBsBAADKD0EXABQHQwsBAEBOBF0AMEMMLQQAAPnMjrsBAFBKLkBqdl+StE/S+ky5tXbHNA7bIakr4HzrJd0i6aSkPkmbJG231hKkAQBQJQi6AFQNt4ZWs7V2n9sekrTaWtthjNklqVXSdIKunEMLjTHtkjZYa9f5ttdLum+61wAAACoPQReAatJmre32back7Xc/T2uNraChhS7A2yVpsW93n6S0tTY9nXMBAIDKRNAFoJrsyfzggiJJOiBJ2YGQK18vL1BqlrQvIFFG0NDCXa6O/7gtmfMBAIDqQdAFoGpkBUBtknrz9DrttdaulSRjTErSM5LW5nhcUNbCNnkBmd86XepZAwAAVYLshQCq1TpJPbkK3JDBVGbbBWYpX+9Y5nFtCh5aqBzHbxM9XQAAVB2CLgBVIytoapP0kq9sva+sVVI6q3pa3vBAvw3KvyDyeA+YC9Bkre01xrRkB3AAACC5CLoAVAUXVB02xqTcz4PuKzN8sMH38FSmLEtD1nbOoYVuX2YuWOb4HboUyLWxkDIAANWDOV0AqkWvpG5JG+UFVOskdRpjGiQpK6thWpMDLMkXiAUNLfTZIKnDGHNYXsbCDcaYvcaYzQXqAQCAhDHW2rjbAABlxc3p2mutXe3bd1jSukwPlVvXq4seKwAAUAjDCwEgi7V2Qk+UGx6YzgqwgrIWAgAATMDwQgDIbYMxpkvSzyTdIm+4oKTxoYWkfgcAAKEwvBAApoihhQAAYCoYXggAU9dAwAUAAMKipwsAAAAAIkRPFwAAAABEiKALAAAAACJE0AUAAAAAESLoAgAAAIAIEXQBAAAAQIQIugAAAAAgQgRdAAAAABAhgi4AAAAAiND/D0tWm/fKyM8HAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -314,8 +260,7 @@ } ], "source": [ - "pe.plot_corrs([impr_mass, uimpr_mass], plateau=[pcac_plateau, w_pcac_plateau], xrange=[0.5, 18.5],\n", - " label=['Improved pcac mass', 'Unimproved pcac mass'])" + "am_pcac_impr.show(comp=am_pcac, plateau=pcac_plateau)" ] }, { @@ -334,22 +279,24 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Result\t 4.79208242e-03 +/- 2.02509166e-04 +/- 2.05063968e-05 (4.226%)\n", - " t_int\t 1.03021214e+00 +/- 1.94552148e-01 S = 3.00\n" + "Result\t 5.03431904e-03 +/- 5.38835422e-04 +/- 8.24919899e-05 (10.703%)\n", + " t_int\t 5.15384615e-01 +/- 1.25000000e-01 S = 3.00\n", + "64 samples in 1 ensemble:\n", + " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" ] } ], "source": [ "pe.Obs.S_global = 3.0\n", "pcac_plateau.gamma_method()\n", - "pcac_plateau.print()" + "pcac_plateau.details()" ] }, { @@ -361,70 +308,23 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Result\t 4.79208242e-03 +/- 2.04669865e-04 +/- 1.97135904e-05 (4.271%)\n", - " t_int\t 1.05231340e+00 +/- 1.88061498e-01 S = 2.50\n" + "Result\t 5.03431904e-03 +/- 5.38835422e-04 +/- 8.24919899e-05 (10.703%)\n", + " t_int\t 5.15384615e-01 +/- 1.25000000e-01 S = 2.50\n", + "64 samples in 1 ensemble:\n", + " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" ] } ], "source": [ "pcac_plateau.gamma_method(S=2.5)\n", - "pcac_plateau.print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can have a look at the respective normalized autocorrelation function (rho) and the integrated autocorrelation time" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "pcac_plateau.plot_rho()\n", - "pcac_plateau.plot_tauint()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Critical slowing down" + "pcac_plateau.details()" ] }, { @@ -436,90 +336,23 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Result\t 4.79208242e-03 +/- 2.28649024e-04 +/- 1.67571716e-05 (4.771%)\n", - " t_int\t 1.31333644e+00 +/- 5.19554793e-01 tau_exp = 10.00, N_sigma = 1\n" + "Result\t 5.03431904e-03 +/- 7.82447810e-04 +/- 1.19787368e-04 (15.542%)\n", + " t_int\t 1.08675071e+00 +/- 1.63643098e+00 tau_exp = 10.00, N_sigma = 1\n", + "64 samples in 1 ensemble:\n", + " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" ] } ], "source": [ - "pcac_plateau.gamma_method(tau_exp=10, N_sigma=1)\n", - "pcac_plateau.print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The attached tail, which takes into account long range autocorrelations, is shown in the plots for rho and tauint" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "pcac_plateau.plot_rho()\n", - "pcac_plateau.plot_tauint()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Additional information on the ensembles and replicas can be printed with print level 2 (In this case there is only one ensemble with one replicum.)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result\t 4.79208242e-03 +/- 2.28649024e-04 +/- 1.67571716e-05 (4.771%)\n", - " t_int\t 1.31333644e+00 +/- 5.19554793e-01 tau_exp = 10.00, N_sigma = 1\n", - "1024 samples in 1 ensembles:\n", - " : ['B1k2r2']\n" - ] - } - ], - "source": [ - "pcac_plateau.print(2)" + "pcac_plateau.gamma_method(tau_exp=10)\n", + "pcac_plateau.details()" ] }, { @@ -531,12 +364,12 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl8AAAGICAYAAAB/bIUXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAiHElEQVR4nO3dv48bR4Iv8G89L2xYgGbmrEDAYR1oFChdyOvogE1OThxtINt/wcnBBZtZULR4kWAFD3CwgfT+glsruGgT6yUGNvKesKkCSYH3HaBANmeEJ511EOoFbGppihw2h2Tz1+cDEBK7Weya4gz5ZVV1dam1BgCAbvyPVVcAAGCXCF8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAbppRypZTyH6WUH0spV6Y89nIp5Zvmsde6qiMwmfAFLEUp5XAbjrGOaq33aq0fJDlo8dj7tdaPll8roC3hC1i4UsrlJJc3/RgboDfDY39YViWA2QhfwDKcOBS2QccAWDjhC1iopkfqy00/BsCy/GLVFQC2RynlapLB/KLPSymD/1+vtfaGHnc5yWdJHia5mORhrfXO0P4rSQ7THyp7L83cplrrrbbHmFC/iccdCnS/TvIvTZHBsT9M8i8jP8PEOi7geB8l+aS5P+jh+yjJ7VrrvZEf62BkIv0HbdpiWv2AJaq1urm5uS30lqQmuTph35X0P+SHt/1HkmvN/w+TfD2mzJdtj3Ga4w5t+zHJ7SSHQ9u+Tj/4pG0dF3C8r4d/vvTnt9UkByNlvxl5vsvN9oOR7Q+Hj922fm5ubou/GXYEunY7bw4Z3kxyvfn/YXN7rfZ7ex4u+bgDPyR5r9b6aGjbd/n5HLM2dZz3eFeTvO7lqrXeb/7765HyX4/U435TbtqwbNv6AQsmfAGdaYa5DpP8ZWTX/Wb7IMQcNutS3W6GGVPnGA5rc9wR343c7w3fmVbHBR2vV1sMHWb8WYzfJfl0UoFT1A9YIHO+gC4NPtivlFJGe3A+H/r/hSQ30u/9uVZK6SX556Hen2Udd6DX4jlPquMijjfP0hC9nLwG2Kz1AxZI+AKWrpRyrekVGgyt3ZsUpEoph80Q3PUk10spB+kPj/3v9CeTTzvGOFOPO4sWdVzo8U7hYk4OkKuuH+w0w47AMvTGbWw+6Ht5c97S4OzBJLk8GMZryvRqrZ/nzeGwsceY47izOLGOSzjezPVL8sdJO9egfrDThC9gGf6S/vIMg0sADS+P8En+3luU5jEH+fvyEUl/OC8j+0eXWDjpGOO0Oe7AwZT7beq46ONN8rPnG1oCY9rE+VnqByxQqbWuug7AlmnC0O0k3yQ/X/uq2X85/blFD9P0YA1NVr+av6931WuKHCS5U3++ztYbxyiljH1Dq7WWFscd7LuW/rDc3Vrr9VLKl+nP6zpMcjf9MwIPW9Zx3uPdaX7G95rHXk1/Uvy/NT/vl02ZwTpfB0nO1VpfB69Jx5lWP2B5hC8AgA4ZdgQA6JDwBQDQIeELAKBDwhcAQIeELwCADlnhfoxSSknyj0merbouAMBGOZvkP+sJy0kIX+P9Y5K/rboSAMBG+mWS/ztpp/A13rMk+f7777O3t7fqugAAG+D4+Djvv/9+MmXkrJPwVUr5IkOrQI+udn2aMs1lMD5N8kmtddzlNT5Pf+XrR+lfLuO7WuvdWeq9t7cnfAEAC7X0CfdNiEqt9U5z2Yr7pZTb85RpLonxafqX0nhvzFMcJLmS/mU5bid5OGvwAgBYhqVfXqiU8mOSCyPXO6uDa63NU6a5BtyNWusHY7bfGy4/Y533khwdHR3p+QIAWjk+Ps7+/n6S7Ndajyc9bqk9X82Fbw/GhaBmaHAhZeZVSnmnlLI3uKV/pgIAwMIte87X4YTtvfSHBhdVZpxPSyk/pD8sebHWev2Ex95I8vsZnhsA4FRWtcjqIBQtq8z99Icd7zZzxh6WUr4+4fE3k+wP3X45Y90AAFpZ1VITswavmcrUWh+NbPpjktullLHDmbXWn5L8NLjfX2MVAGDxlt3zNRqCBg5O2HeaMj/TTLh/bShwTRrSBADoxFLDV9MD1Wsm0Y/uu7eoMsOa9b++Hi7fbEtahjcAgGXpYs7XzfTX3EryulfqztD9w8G6Xm3LDHljKLLp5bo1MvR4Lcnd0y49AQCwKEtf5yt5vWjqIAx9OHzmYSnlWpLrtdaLM5Q5THI1yWdJLie5laEV7JuermtDT3duytmOo/W1zhcAMJO263x1Er42jfAFsH5evHyVB0+e5dL5s3n37bdWXR14Q9vw5cLaAKy9Fy9f5eOvvs3jp89z4dyZ/Ol3vxHA2FirWucLAFp78ORZHj99niR5/PR5Hjx5tuIawekJXwCsvUvnz+bCuTNJkgvnzuTSeVeBY3OZ8zWGOV8A68ecL9adOV8AbJV3334rv3r/YNXVgLkZdgQA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPDFWnnx8lX++n0vL16+WnVVmJPXEmA8lxdibbx4+Soff/VtHj99ngvnzuRPv/uN67dtKK8lwGR6vlgbD548y+Onz5Mkj58+z4Mnz1ZcI07LawkwmfDF2rh0/mwunDuTJLlw7kwunT+74hpxWl5LgMlKrXXVdVg7pZS9JEdHR0fZ29tbdXV2youXr/LgybNcOn/WMNWG81oCu+b4+Dj7+/tJsl9rPZ70OHO+WCvvvv1WfvX+waqrwQJ4LQHGM+wIANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AVu7Fy1f56/e9vHj5atVVgaVzYW0AVurFy1f5+Ktv8/jp81w4dyZ/+t1v8u7bb626WrA0er4AWKkHT57l8dPnSZLHT5/nwZNnK64RLJfwBcBKXTp/NhfOnUmSXDh3JpfOn11xjWC5Sq111XVYO6WUvSRHR0dH2dvbW3V1AE704uWrPHjyLJfOn93Y4bpt+Bna2JWfc1cdHx9nf38/SfZrrceTHmfOF8AG25b5Uu++/VZ+9f7BqquxVNvyWjE/w44AG8x8qc3htWJA+ALYYOZLbQ6vFQPmfI1hzhewScwj2hxeq+1mzhfAjtiF+VLbwmtF0lH4KqV8kaTX3D2otd6at0wp5SDJp0k+qbV+tIhjAgAs29LnfDUhKLXWO7XWO0nul1Juz1OmlHI5/eB1kOS9RRyT3eASJgCs2tLnfJVSfkxyodbaG9pWa61l3jKllKtJbtRaP5j3mCPlzfnaQk7zBmCZ2s75WmrPVynlMP0hv96YfVcWVWYBx3ynlLI3uCVxCsoWcpo3AOtg2cOOhxO299IfMlxUmXnL30hyNHT7W4vjsGGc5g3My9QFFmFVZzv+kDFztZZQpm35m0n+19D9sxHAts67b7+VP/3uN07zBk6lzdQFS0nQxqrC12lC1DzB68Tytdafkvw0uF9Kq6lhbCCneQOnNW7qwvD7iXmltLXsYcdHE7YfnLDvNGUWWR4A3jBt6oJ5pbS11J6vWuujUkqvlHJYa300su/eosossjwAjDNt6sIgnA16vswrZZIuru14M8nrswyb5SHuDN0/HKzL1bbMkJPmcLUpDwCtDaYujBtOHISzf//XfzLkyIk6ubZjE64GvVAf1lqvD+27luR6rfXiDGUOk1xN8lmSy0luJfmu1nq3TfkW9bXOFwAwk7brfLmw9hjCFwAwq7VYZBUAgJ8TvgAAOiR8AQB0SPgCAOiQ8AUA0CHha0u42CsAbIZVXduRBXI9MQDYHHq+toDriQFA90476qTnawu4nhgAdGvcqFNbwtcWmHax17ZevHw193MAwC4YN+p0uN9uQFH42hKDi72elnljANDeuFGn//6v/9eqrPBFkvEJfp4wt830EG4PryVwWuNGnf77v9qVFb5IYt5YW3oIt4fXEjbbOnx5Ou2ok/BFksXNG9t2egi3h9cSNtemf3my1ASvDRL8Jv0Cd23QQ5hkpT2EFtWd37q8lsDsNn2JJT1fMIN16CHc9G9862IdXsu21mF4BdbJpk+VEb5gRvOeWTovw2WL0+a1XHXwEbbhTZv05Wkcw46wYQyXdWcQfH77hz/n46++Xckw76YPr8CybPJUGT1fsGE2/RvfJllEL+O8PWebPrwCvEn4gg206qHPXTFv8FnEkKGwDdtH+AKYYN7gs6j5ecI2bBdzvqBjlonYLPPMKzE/Dxin1FpXXYe1U0rZS3J0dHSUvb29VVeHLeLMtd2z6rMlge4cHx9nf38/SfZrrceTHqfnCzrkzLXds8lnZAHLIXxBhwxDAZh+YdhxDMOOLJNhKGCXbfP0C8OOsKYMQwG7rM30i23vGbPUBAA7Qa/zepi2ft4294wNCF8AbL1d+EDfFNPWz9uF69cadgRgK5w0VOVM4/Vy0vSLXTgxSc8XABtvWs+Wa2Rujl24pJbwBcDGmzZUtQsf6Ntk2y+pZdgRgI3XZqjKmcasC+t8jWGdL4DN42xGVq3tOl+GHQHYCts+VMX2MOwIANAh4QsAoEPCF7Cxtv0SJMB2MucL2EhWLAc2lZ4vYKxpvUqr7nWyYjmwqTrp+SqlfJGk19w9qLXemrfMSftLKVeSfJ7kmySPknyU5Lta693T/xSwO6b1Kq1Dr5MVy2E5LNmxfEsPX01ISq31TnP/Sinldq3189OWafGcB0muJLmafvj6cp7g5RexHe20PaatFr4OF761YjksXtsvVt7v59NFz9eNJBcGd2qt90op36TfM3XaMm2e80KttTdv5dfhG/4m0E7bZVqv0rr0OlnXCRarzRcr7/fzW+qcr1LKYfpDgr0x+66cpsxpnnMeXc0rWff5NdOsSzuxGINepX//138a+8Y6bT9wOqt+j2tzmSbzLee37J6vwwnbe+kPDZ6mTNvn/LSU8kOS95JcrLVen1TJUso7Sd4Z2vT6t62Lb/ibML9mmnVoJxZrWq+SXqftYQhpPazDe1yb4fx16fneZKtaamIQik5TptfiOe8nSa31UZKUUq6VUr6utX4yoeyNJL8ft6OLeSWbML9mmnVoJ2B26/CBT9+6vMe1+eJlvuV8VrXUxKzBq02Z1/trrY8GwavxxyRXSykHE8reTLI/dPvl8M7BL+KyfsGmdfO26QZeB6tuJ2B2hpDWxya9xy37/X7blVrr8p68Pz/rYa21jGyvST6qtd6btUz6Zy+e+JyllKujZzc2+z+otd5vUe+9JEdHR0fZ29tr9bPOa1q3v2GBPu0Ai6Xna714j+vOMtr6+Pg4+/v7SbJfaz2e9Lilhq8kKaX8mH7oeTS0rY6Gp1nKnLS/6d36Mf15XoNhx8G2f2hzBuQqwhfAqvjAZ9cs60tH2/DVxbDjzfTX3EqSlFKuJrkzdP9wsG5X2zIn7W/C1a2RYcdrSe4uYukJgG1jCIlds+rh9qX3fCWvF0UdhKEPh888LKVcS3K91nqxbZkWz3mQfuAaOHfS2Y5j6qvnCwC21Kp7vjoJX5tG+AJYLEObrJtVzvla1VITO8WbDrDLTOpnHa1yrcJVLTWxVU5akXjwpvPbP/w5H3/1rZXZgZ2z6vk1sG6ErzlNC1fedP5u1ZfNAFZjk9av2gTeSzefYcc5TVuR2GUY+gw7wO6yIvrieC/dDsLXnKaFK286fety2QxgNTbhWqCbMD/Xe+l2EL7m1CZcbcKbzrLpAQTW2ab0KC3ivXQTQua2s9TEGJaaWA5/8MC6+uv3vfz2D39+ff/f//Wf1vZL8zzvpZsSMjfVOq1wD0msog2sr006KWCe91Inga0Hw44A7LxdmZ9rCsh6MOw4hmFHALaVKSDLY9gRAHhDF1NArEV2MsOOAMDCmNQ/nZ4vYGv59r042pK2TOqfTs8XrZknwCbx7XtxtCWzMKl/OuGLVrz5smmsBL44bdrSlzMGduXM0XkYdtwR8w4Z6EZmFeb5vd2kdZvW3bS2HHw5++0f/pyPv/rW0CTWdZxCz9cOWESvlW5kujbv761v34szrS31MsJshK8dsIg3Rh9k22UThogW9XsrBCzGSW3pyxnMRvjaAYt6Y/RBth02Zf6eD/TFWXbY9uUMZmOF+zG2cYX7TejpYHFOer135QLCXVn3Om5K2IZt0HaFez1fO0Kv1e6Y9mG7ST1K6/57uwnBxnwsWD/CF2yZaR+2hogWZxOCzSaFbdgVwhdsmTYftuveo7QpNiHYCNuwfsz5GmMb53yxW9Z9HtI20dbAgDlfsMP0bHVHWwOzssI9AGwRF0Fff3q+AGBLbMIZuOj5AoCt4Tq8m0H4ggXT5Q+sigvKbwZnO47hbEdOS5c/sGrOwF2dtmc76vmCBdLlD6za4AxcwWt9CV+wQLr8AZjGsOMYhh2Zhy5/gN1kkVVYEYtuAnASw44AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXsBKugQnsqk7W+SqlfJGk19w9qLXemrfMvPuB1XENTGCXLb3nqwlBqbXeqbXeSXK/lHJ7njLz7gdWyzUwgV229MsLlVJ+THKh1tob2lZrreW0Zebd36LOLi+0w1weaPn0fAHbaC0uL1RKOUx/yK83Zt+VWuu9WcskeTTP/gnHfCfJO0ObXA15RwkF3Xj37bfyp9/9RsgFdtKyhx0PJ2zvJTk4ZZl5949zI8nR0O1vEx7HljMc1p3BNTAFL2DXrOpsxx+SvLfgMvPsv5lkf+j2yxnrxpa4dP5sLpw7kyS5cO5MLp3XCQrAYnVytuMYswavNmVOvb/W+lOSnwb3S2k1NYwtZDgMgGVbds/XownbD07YN63MvPvZYotYO8pwGADL1NXZjh/UWh8NbWtztuPEMvPub1FnZztuIJPlAViltmc7djHn62aSK4M7pZSrSe4M3T8crMvVtswC9rOFTJYHYBMsPXw1K8sflFKuNiHow1rr50MPuZLk81nKzLuf7WSyPACbYOnDjpvIsOPmskAqAItwms+TtVhkFbo2mCwPAKe17DnEq1rnCwBgLS17DrHwBQAwZNlziM35GsOcLwDYbcuc86XnCwDYOvMuur3MBbdNuAcAtsq6L7qt5wsA2Crrvui28AUAbJV1X3TbhPsxTLgHgM22ikW3LbIKAOysdV5027AjAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfsIZevHyVv37fy4uXr1ZdFQAWzLUdYc28ePkqH3/1bR4/fZ4L587kT7/7TWcXhQVg+fR8wZp58ORZHj99niR5/PR5Hjx5tuIaAbBIwhesmUvnz+bCuTNJkgvnzuTS+bMrrhEAi1Rqrauuw9oppewlOTo6Osre3t6qq8MOevHyVR48eZZL588acgTYEMfHx9nf30+S/Vrr8aTHmfMFa+jdt9/Kr94/WHU1AFgCw44AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQId+sewDlFK+SNJr7h7UWm/NW+ak/aWUK0k+T/JNkkdJPkryXa317ul/CgCAxVhqz1cTklJrvVNrvZPkfinl9jxlWjznQZIrSW43t4eCFwCwLkqtdXlPXsqPSS7UWntD22qttZy2TIv9V5PcG95/inrvJTk6OjrK3t7eaZ8GANghx8fH2d/fT5L9WuvxpMctreerlHKY/pBgb8y+K6cpc5rnbFnXd0ope4NbkrOnfS4AgJMsc87X4YTtvfSHBk9Tpu1zflpK+SHJe0ku1lqvT6xl340kv5/yGACAua3ibMdBKFpkmeH999MfdrzbzAl7WEr5esrz30yyP3T75Yz1AwBopXXPVzOX6rMWD71Za71/wv5Zg1ebMq/311ofjez7Y5LbpZSxw5VNmZ+S/DS4X8rEKWkAAHNpHb6aMwZnOWtwNAQNHJywb1qZqc9ZSrk6fHZjrbXXhKnD9HvFAABWZmnDjk0PVK+ZJD+6795pykzbX0o5SPL18P5mWzI5uAEAdGbZc75upr/mVpLXQ5d3hu4fDtbtalvmpP3NsOKtkaHHa0nuzrP0BADAoix1na/k9aKogzD04fCZh6WUa0mu11ovti3T4jkP0g9cA+danO04WmfrfAEAM2m7ztfSw9cmEr4AgFmtfJFVAADeJHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOvSLZR+glPJFkl5z96DWemveMqWUgySfJvmk1vrRIo4JANCFpfZ8NSEotdY7tdY7Se6XUm7PU6aUcjn94HWQ5L1FHBMAoCul1rq8Jy/lxyQXaq29oW211lrmLVNKuZrkRq31g3mPOaYOe0mOjo6Osre317YYALDDjo+Ps7+/nyT7tdbjSY9bWs9XKeUw/SG/3ph9VxZVZhHlSynvlFL2BrckZ6cdCwDgNJY57Hg4YXsv/SHDRZVZRPkbSY6Gbn9rcSwAgJmt4mzHHzJmrtYSysxS/maS/aHbL+c4FgDARK3PdmzmWH3W4qE3a633T9h/mhA1T/CaWr7W+lOSnwb3S2k9PQwAYCatw1et9W6SuzM896MJ2w9O2HeaMossDwCwVEsbdqy1PkrSaybBj+67t6gyiywPALBsy57zdTPJ67MMm6HLO0P3DwfrcrUtM2TSUGLb8gAAnVvqOl/J60VPB0N+H9Zarw/tu5bkeq314gxlDpMM5p9dTnIryXfNsOjU8i3rbJ0vAGAmbdf5Wnr42kTCFwAwq5UvsgoAwJuELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCF8AKvXj5Kn/9vpcXL1+tuipAR36x6goA7KoXL1/l46++zeOnz3Ph3Jn86Xe/ybtvv7XqagFLpucLYEUePHmWx0+fJ0keP32eB0+erbhGQBeEL4AVuXT+bC6cO5MkuXDuTC6dP7viGgFdKLXWVddh7ZRS9pIcHR0dZW9vb9XVAbbYi5ev8uDJs1w6f9aQI2y44+Pj7O/vJ8l+rfV40uPM+QJYoXfffiu/ev9g1dUAOmTYEQCgQ8IXAECHhC8AgA4tfc5XKeWLJL3m7kGt9da8ZUopB0k+TfJJrfWjkX1Xknye5Jskj5J8lOS7Wuvd0/8UAACLsdSeryZEpdZ6p9Z6J8n9UsrtecqUUi6nH7wOkrw35ikOklxJcru5PRS8AIB1sdSlJkopPya5UGvtDW2rtdYyb5lSytUkN2qtH4zZfm+4/CnqbakJAGAmbZeaWFrPVynlMP0hw96YfVcWVWYRSinvlFL2BrckVjoEAJZimXO+Dids76U/NLioMuN8Wkr5If1hyYu11utTHn8jye9neH4AgFNZxdmOg1C0rDL30x92vNvMGXtYSvl6SpmbSfaHbr+csX4AAK207vlq5lJ91uKhN2ut90/YP2vwmqlMrfXRyKY/JrldShk7nNmU+SnJT4P7pUyckgYAMJfW4as5Y3CWswZHQ9DAwQn7TlPmZ0opV4fPbqy19powdZh+r1hrx8cT58oBAPxM29ywtDlftdZHpZReKeVwtDeq1npvUWWGNet/fV1KuTgo32xLWoa3xtkkef/992coAgCQpJ8jVnZh7Zvpr7l1J3k9dHlnsLM5u/HqyCKqJ5YZ8sZQZNPLdWskuF1LcnfGpSf+M/15X8+a+2eT/G1kG7PTjoujLRdDOy6OtlwM7bg4q2rLs+nniImWus5X8nrR1EEY+nD4zMNSyrUk12utF2coc5hkMP/scpJbGVrBvunpujb0dOdanO047WfYS3KUKet2cDLtuDjacjG04+Joy8XQjouzzm259PC1Ddb5Bdwk2nFxtOViaMfF0ZaLoR0XZ53b0oW1AQA6JHy181OS/5mh5Sg4Fe24ONpyMbTj4mjLxdCOi7O2bWnYEQCgQ3q+AAA6JHwBAHRI+AIA6JDwBQDQoWWvcL/xmgVfe83dg5HV+BmjWej20ySf1Fo/GrNfm86gaa8kuZgktdbPx+zvNXe15xhDv5NJvx0Pk/zL8JUvtOPplFK+Gf0715bTlVKuJPk8yTfpLyr+UYYWDG8eox1nUEr5MsnD5u4P69yWwtcJBh96tdbBpY6ulFJuj3748XellMtJfp3+xdDfuASUNp1NKeXLkSs83B7+sNOerX2Z5Muha77eTvJ1+h942vGUmsu/XRnZpi3bOUi/7a6mH76+HBMWtGMLzZer/5Pkn5vLDF5O8h9JSrN/7drSUhMnKKX8mOTCyLfjWmstq6vVZmjelG/UWj8Y2a5NWxpcKD79HsRes23wpnKxuRC99myhlPJNkm8G33abN+MbtdZ/aO5rxxkN9SbeHm4nbdlO8x55b9J1h7Vje82XqYfDvVmllCu11nvN/9euLc35mqC5huTBuD+MpruYGWnTU/l1+kNkA4Nrnh5oz/ZqrR+NDDN8mGTwxqwdT+fTJH8c3qAtF0M7zuxakrullMNB+wwFr7VsS8OOkx1O2N5Lv7uY2WnTGTRvFv8wsnnwZvEo/WA2Ti/ac6Kmx+EgySfNJr+XM2o+tO6N2aUtZ/NpKeWH9KdoXByaYqAdW2rCVZJcTv998dFgWkETwNayLYWv2Q3+UFgcbdrejSSfN/MaJj1Ge44xNEx2kP4bc29KEe042UEz7H3Q8vHa8k33k2RoHuK1UsrXtdZPTiijHd80CFe9Wuv9JCmlXE/yOG9+eR220rYUvmbnF3/xtGkLzZk8/zaYNHoC7TlGE7YGE26vDeaBnFBEO45RSrnW4ndwlLYcMQhdQ/6Y5PaUQKsdJ/vL4D/Nl9ODKcOKK21Lc74mG/3DGDg4YR8n06an1AyVPRyZt6Q9W2jehL8c+VC7l7+fbaYdW2pO+PjLCQ/Rli01f9OvDfXEHkY7zmJSe/Syxm0pfE3QfCvpDY0nD+8bN9eBKbTp6QxNIB302hyUUg61Z2uHSb7Iz7/pHjT/9rTjTN5LcqWU8kVzxuiXSf/s0VLKVW3ZzuBM5uF2Gvpy8Eg7tte01aO8ObfrIMlf1rUtha+T3czQGjbNN5VZu9t31aQuXW06g6an4XKS+82ZPIfpn9nzQ/MQ7TlFMw/k1sgwz2dJ7g+9+WrHFmqt92qttwa3JLeb7beG1qjSllM0vVyjv5PXktwd6gHTju1dT/9vOsnPlvG432xau7a0ztcUzbe7wR/Ih8MLXvKmJhxcTf8P4XKSWxm/arM2naL5Jvw4Y87IGVlXSXtO0bTltaFNF5NcH7PCvXZsqfkA+yz9v/db6a+jNji9X1tOMeZ38txoO2nH9kop1/L398q1b0vhCwCgQ4YdAQA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDo0P8HKEq58vhxTAsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] @@ -560,11 +393,11 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "pcac_plateau.dump('B1k2_pcac_plateau')" + "pe.input.json.dump_to_json(pcac_plateau, \"pcac_plateau_test_ensemble\")" ] }, { @@ -577,7 +410,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -591,7 +424,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/examples/data/B1k2_f_A.p b/examples/data/B1k2_f_A.p deleted file mode 100644 index 48c52af677fd7bc21b95e5fd94b4beeb46a0a95c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187237 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

wT?#@Py8V%o~2ZVO{b!8 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

uO$9?i^Az>}1>(%du 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 z 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 O2}aRN>WvGRW&aD|o^m1p diff --git a/examples/data/B1k2_f_P.p b/examples/data/B1k2_f_P.p deleted file mode 100644 index 748b6b30750aca8b72250ce386215c014819d904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187237 zcmZ_0c|eS98~1-@DI^9VYm-EXCTo(;u_an0Tb63ti_}bu7GfkRYf(waps0{Yq|!0% zd!~J_Y2Wv#NZ#YVpXYhs-#~W*Lfbt_xK*4Gwx&q4kd5Ob~U%Rx3hQH z@W20=amd7B21jJgRn8=L&SZK0sT4)o8lN|J;7l>#Ow|{~x4V_jZM5IW5jFnzLkBBk zwmC=4oioi!RGXUOpg#?N#NOzFv5gb{(sXyu3@cGnTc`7E*A1q2_U0STJJ~o|8{69( zyUuVhHMTLfpTQCT&*wAD99`MwGdMH#C*fCED03tbonv^4Fj>(>Bi(VdG{POZrCTFe}XPzEM(&67LH8ZzyGTOA_Y3f(>=$?6$|Y3XSgKcLA#g+cl&u{TNwh?wP(h=ZaPQqZtymIHgcY7i zQ=?KrsQ-I6X-)wb!!U)oG6z}J3siYf#`;u9~ziZOk762uPmG2NTRF7Ezj+!CRrwtOVw(GgcYtfYt`=p z!rtB=*OyWb6!Y;RakFBeZq1$JFV2JZ-GWPSp6)YbCxbLGH{)(SHm zO91M^%S|&n0|{-y-DJlyylDi>a4Bu=OqKbV~_Jf zPBRFOydTLoY9s7dmpx|9ZUSchH%|T3G@zDrHA(*Qh3JsC6$h8r0pso7+2`KY5vKD} zdF|9#LOUY0XUU~9!hLS6t<+ghq<(HT_qx|anAf^>to@^bI}mdH1~VP_wF? z=I+PUIY}T)NthSomj&$cRh!Ju6%(G5(-i&fxe#};J7mtS24Jb{JPYi|2kP6rknoRB zfOXEtO>zZL(3Y0b~qEznBc`!0`gCCt}ufBF`5FF^DI zsu<|8=O~52EMNwyD_q*fCrsv+cY(I?gr>6cYgADk2!CCxRVgn4Zs0|kEy5%Ss=T3b z9`B#F(nYy7zYJKthJSmgGT;Aqigq|Iq;i~qX2*35+cHfr@%#wf& zS~HRfpXF|>Nzc~3s_>e0~AO2q(WEd ze59}qn5V{u11G)^wx7jMYJVxALegXU-d+X%mI#LCu0&v`ESay*tp{e;vZl;WHNgG7 zx7N;{2lV2%2bPu;0{u~m_}aNI z&|V}Ux&_0>@}4)rXx3cU6*t;}-F90;FBC(xug!j^G zS$X<*!VFyLzlohhq^^85>K$q(zB;#_9(SoEl-!{oaO@RuX}VIcoWe-ByGqfpL<8BZ zGce$L<|kpQSodcw?;`Xq!yiNC+eq}5lgHLb35al(md~`MRV2tTa`yebZG`{Fq}oiW zfv}==T&}*#B7BF5JnDQV5gN)L(S|w_BqQPe&I`}G&eD5jLNj4@9f;Uzo&Yo{eXG~j z<%GUHXw?%1J_xy!r6)K6ay6+chtga#QOIB)GH#P!u&zE`Di@y-5_tNdRrnVDyHY2@luYgcW zN16ji8VT#PpP%)?6vC2U^jZ|M2zQ$7lMsba!rhk^BQrxtW-7=A9NscOgq7M~Ex%>~ z*ECq=NYpn%U$jVM<&9jBI=HtlZlZ&*Xpb#cGx>ySN!@6fl?vRt;@K7h`9$~kNb{~6 z<%Ivk$L}5opWmMLk&TbDf#Gw+rCFsISmJ&gLrtql|H8lYR@oXN$UDF{Yc3_Ma;1oJ z&UfIw)iYAHO99{U#DM+gm`8dGgHoaqSt5ukk0>8UOxFT(-LC-6-uM{f>00 z#?eOLhjt%-l9>lw*+toZ=k{%bzXawUW>xhEp&`xjuYAD^>P^eZr{*Iih1rT}Ow z?y|e0Ft2C@>ehB$#_Ogl<;DwuKK=GmVvE-yJf$`+mka&Q?&_v}WrW_xrrXcO`wV*N zvu@i@R+s^*C}vqr*}9bcyIUQC3MhEI22$tV4@ zoKL;Ys3p{?#CzPUR|#W!wBpFsa^lN%9`UXf5^ma(3$=xb7(ahGWH0U@6&26o^iTH? zs`an1gTNcVON)SLXBlGe#Mm#UUQ`J503)El_$l) zs~Sl3H0ezL!$pMJ_4)4dPk})17&sAUeEg2v7oZMBW$nxhBD&go zzWM8mfyNWtdRV3svNH2`{Gc_FpuU4cc3K$UtK_y#SrAY7?SghuS{`B2+%8W8_2iDq^W$C|?Nq@nOMuu`Z(0tmS9+GST zev+)?__yFs}K#$S#8;Igr7(2YHo6LYf? zSUFx9G9|f$|7l(D$&U?$F86>Db}$*Jsz~Lp({2Ohl$cf~jq`ZNy;;qeKd8vPb`nRP z5_+orexHRI(En(ZuW`QwcowPjC5uxCe@JxdlJqn}_p|u5;e7?6q|sy=J(Z56pU*>~5`e5PlI$S~HnX`qy%d&n6cFW!vL(BQXR!;xSLImI z<&YB8F;fTUS*8*0@RzkmmqdWZt(o?#WE%Pd|=dZz19T77*W-Ne&Y-WkkP` zec3{y0jOh#uN^!1fLNL2s!D`40{67e$l}Owh;9jdKC-h2gk!wRYlJyK&!2RiYE1|3 z1{Zo#Uo7F@vR>a7|DDhWL~qSllS_n|k-Imo;{!MU==ITqp-}T=>WH}EAZd5m;4^Jk z6A`8yF*o>_L6~utVg{Wh5bay~aIJPB^tb*RpZTgDxFfHw`uvCljj1-fqh%W*dRs%e z{hVUZpCmG)SV{sayba@s$Nx_TL$!7=SH(NaU6yZ?PN}igy==x_x9*l0lh5d$Lw0v*$mtTN76Y_zf#jhh zZQx=*El;xy^&VfWCzj*@^?2u!KW$+^X&4HJj^jMqb*S~;^)g`oeNtYKhxNtJ#z+I_ z>xABDEaT#oOlV3@lc%T@5@z#xx4;dtgnnXE(t`PUgxb6F{PoBR;@j+1xHz#MB)c7V zJQ(Z;YKorD%Yz=^`(RhAeh9{ap;HUxZQ}^7HaNgHw;FZe)r)&(RRfb+@MJh75m@H$ zAM0A(MSb}5=a?XgRB#U;Y<__GzhnN{g>RFI@XnFI2lE?% z_ka?MI+pO$Z1W*z02mt*85x{?zJ zQ+3=rN(IMB{0MXB>oUmNFU6nnwGnvx9;a9jWfDg4vriHF0$}@e6l+Lge7Y^Ym-ZR! zg~KBUVFmo74olkM1pRrpiIXEOIDC zyb~C`g->*bu`aedJ6mQo#uaT@y5&R}aD|Ij73;hr!m(O++5Oc-(7)#W=0{aPmASnU z$;-!ex4nlKkwC0;HlIj!YyzSEb&@e4qFGG}fCHR-wH3FF?N%>X>*h4HzWv)tN)pz}xQdvEMZn9)rL@)IEVzM25iqWF1B~1Z@{&>TQ z>%3&*TdMr!F|7pp@2l2|qkg7G>1ni@7n6#IpZ$IG+KJS2P_*)FBct;?PM*?0-9A4x z?xI&7;mxgQFAu}~^J!cs{7pUK)s*UYlQ$_jiH{jmN(iU$$OKH6|Y8{^anSW@%95N2rf z%0w2{invPI40)R(m*Glzh%Hn_x_ueSU`LkyYI|>T~CC^e2(9Y$R*JO z=N)#LmV(RQYs=Rev_OB=g_5B)<%E~Oo3%X(eTDgR)g@!{2!CVu8L#`XK!5S_xR*`^ zVHU}(9p-%??E7(ZtR!23?U}Qrb8<8AY?h0GRs~@slz&&gTu6ku2|-hXQb_xzEE~zT zPK;+IL;iV~7sH3Uk8}ayuL+vfyE6-fNte$iKE*n0%37)UChvfXj`kh9`W(1-zRVk6 zSpfX6KST~ri6>lNnr6moOue9KUQ$2EL}N_>0pYfVnh&NSPN)b&`!=v@?Y|V@*a0r)YOc&5LeTZ2PMub(2KvqAa)%D`Nw~s0&0Bar-^mwli_ED6 zN`LR0^tV1h@6^9B#VZ^2s{e1d$^y_`J5Q0~V;q{kFzUo$JseG0G?uvI7onfNyJJR3 zF7UR!%M0vBy*AXw?myau`hRTln@Y^rHEt{+82L#QF~II5HIOrPC3C6)}n)(*k%_tXPzuWp*v zDy)0QvVV(crnC6>K!pGQhVpR~-ii&PzR|>$Yw$ zfO(~;_~pJ@!Z!NzeDk{&!j@T56Vh5qSib!5jJSMY{3*>Ibgu&1xT;*Ydx3#m?tw;HGiQFo_;HOf>R0no#%}kK173H)GWU5c@_G>A-03g zMT8Z#z-W(bI_bY5yCB-Igs_Htnu}es!Fzu`rz5u+>#=9Ui8kqkGP7^~wCo88Wz21E zRARmA=u++Bfxg`Dou69iSw#01L&Vdkgm4#^`2XmR0ILJ*6lXjT0xSQ9{66YCFl~19 zpRWhto!k9-6D^xiGiuEmE22P{M{D0PJ(V!$%$ccB@)f9YVg4oZfKanK{V&LPK|kkS zLHWEA)L-pPXPn^5#>OLRI;o4U*K-c|hFgb!x=#{#C zeoZyRH(X`Lv{uw(F$cA0`PMsw)qu>&=4G<(O{|aW4wu!{{3S|DX^Ye*mnHM1?DGD z-ct+o^?UVS$;38-)VB?9#{61iP4mY6y3> z)De!&3!nsn8TO9eAh^DI>|uB{p&AX;1JHkvI`dj@jv~e{j%8c6Dz3YPecU&$=s#LV zpL9-01@<4&b}=sYT^dh#OFs@HJh}AJa(vHFKR4&0GwQ)fjQOlPSUDj^#`%Xl=dguXgqPikli@C&8epf~NXQ zAAug#xFKmHpYW2K zM0_8{V4kgZzEPxBMA#yya+khqB`#Yo-2dXxMTG0?WJ4JB=zr9z%;aXFo=vu_q9+ht z>B?R8k19!4xZ8^Nr_e_iD}BAB9iR7^Mb|g6BMDV|w5>+tAz>CrzPR2R3k$5_YH?&JY}ukWq%C>zb1JGF>(G2H#L~vFeLo%t_FKz62VvF))bkm zU4%;ZN?A1dK5!L}%D=Wx2JWVlnv0kM!asM>czRY)W$TgZ4_oZeuq! z&o05beap7a^bXR$GV9Cu*&^s?Z=g*%PzJ)5gWbVixIQ{cYu?0_1NXkJNLG0U;Vvn? z(L3i22>0Gf$)vDPcUvsmmxu99%_U^lnruQ79JuanhCY>}N8hH|1;Cn`o;tzGz~{Ya zmX~-A1i8@NqCYmkv}E&naTw3&z256(;?lu4Uuu18Ks8Y3ttb5n#CkU8^m^ucynX|j z6RNRsz+@Y3Rh0OE{fv*R4GHSW&NkB@mFa|jQS;Hs6+-g1XK&=+l>>y`b9qf^a1Dt* zWAkg-x+1~_hWk|^>UX1wqN;VRppm&|(nqY1sS}>#%pi=PL3fqvyfHsM>{_YtFqQE4 zN;Nrq#1LP>k*MX7=p%H@PFmDe3RG**G{2J`=sTYaJ00*5q7%R8964G=G_+Hn{xrlq zpCQxvI1}S1r|(wS>L!vHl@M{1KT7C#swMq0&@YYcP2Q=TLWHEE_fR~>sT(UNp0e^l z;AkmZdmeST&dgwo{hq*d_v=$#k_AB{fl8nJF&|w&-jm0Aj6R@PpwQ$q;Vs^>>vajn zua7F{Bx>_O|BJD&nN153oTN9UU&ZxryX@wjlem8Pmo0f!NyMeVFEWaczEpd#jeIT# zc(!e-o~jtPqKcO{)1yIu!?`8BShf!Nb^iXD`DRFqcsofPQJ`Swf@(!*#C%(T63Y6P#IMccgn5hA1uxCMSK+$w7%=d}>v=rzqNfAr*J+m4 zugS>}w0nhp>#Ro5h;!9;v}uE&!B?9{+#9iM&>ST&N_FF!oLS}j2x^j&l_{rdFE4bjF=7h3%bdgxdo<#9-lqx(O~-RMRvr+jL>rF9X0q?sYt%Xn%-t-dZ2oN63VXnt+ z8?)})x;oyJu50 z-wy-@o&|P~nhDoWY2&yIy0t^5r%lTHyHxE3o<&0w6 z;&Nb3S75%GjI_YUrZ$<5Z17clwY#ys0ciUxKd-b8b?y4z zD@YAcW{*bMDaF8*@+x|V>V$i7?!JjrpD-G$k8t)DkoJXAOCkgfs74O2lZc1`?u|Pt z9pjn6U6DEQ_%hNHys8_|wUJ^l;{F*<{03ZwrWYpYdQ-2YmR)}m1%l$bqS#-ZAhb*? zl@o6#zAlgVuYAxA{1>B6-n;@}&Rn+lz(VX2AKYV~vk_f}n&QcCM7z*kyUNP5!|R?H z-+ku+RwWXV?<*$Pqsz87w6zF7cVha;c%u4aOtTC5-2&X_&eoqX>+sLL@Qs(i?BVwz zO|J44q1>27&cEXb{Z}6I(@(4-h^+70%Wc>#vx-~OSpeMjRnL9zrW4v^V*1Rt3}!wC z=jx>cAl&dbYffY(R0OV+&PnJ1-I-IF5#t!es%7>}Ir0hkPb^XS=YhzPBqo4?A zxe+4ub$H#*6Fwj0(bazTe*Z*T4Z1fG&NDy6fwyS;7OF7kP6^|_Oc1)VOz)oV0b0X=B4cj{@I}*KZF>_#sA(-;n~&cl z+=hnfV#kv}>R8y}&wuc~+wRL`jbhj9ewAG3rb2Yn?{0o}DgnEFK3w8nLf8-L-s`3a z3HxyRpr8`xU4n_}-&3_DyrJHrcm{S|Pc2iq9rg-X>z1y)_M{x$PfM|S-b-||CeD2A zEe7F|U3|`E%u0Fm7q56-K(~5nZ6wzN!WqUF_8T_?e=xV=(L1c7XGz#L?dm4H)q~e~ zRj8^Ap8P3D=_M2^=hR&-UvvRKUSiLT2ilii-pZ>w33t@*m$M|g^80rdjP(!9|nYin4yrUm#{^S8t!#Y7!(Nmll6$ELte)K0Jy^xuzSkPPAQ;%fF^)ne zj{n&EgbjvRtvz+94|s{{`%;OG9W4uJ4k?z#lIVJ#d14S$@d5Z53JX4_6cPT}*9zkD zvA~Tmymwb_SPv{=|5oq__B% zvma3YN9s;Lh#^ez7mP^fw8Z{9`!r!H$H=J_C8V17Ib%KkE9!pU>CD@ zhoz!&4X{L7e78Ku?t2y|ij?=0thx0Tnp3eG9?4Q{QAj7Ok+W0%x8@LC{n*RaeGP<9 z|M9E35c5I1g`I-oCtzH^>^j8_tNe8f>O^GmIX~HR{$gSh;kPVKWBKDa%dWHNX{bkc zBt>aU-Dkpj*if8Xj_S--#?1Xo4hXksK1#ob>-vaI-M#u&?D`kB^9fd^Yr}1uK9mwc z^7e&qQyU2*(SJ%-BF>X*D>`Tw|$!h~7 zdXv-pdFTd>o|%4lSJy>XZkv!opNo1=o#xzJo=6l)}|rYj$Do%IGc zESvisDT_JkV^4q4C+Q=HJmp?C2TgXyF1eN zWrZz7cf$k!g^L=2#p!*hpH_UTX@QDD$%5DPexNUt z%}ZO1l*z<;UHY0>!hK^9c`O>;hADwxZk)%eG`T%NHwxoLMh;E2@G}wKTgN}Vpo(yJ zOwkbYO~o#f;eLe>q<*-e>YhGvKn+g+y5=}ii#KHsS=M3qMrqQ)`4bI9qn#`7A>KfI zj~MKHwy>Bm`=m#_cH(@G=PZxjT#58g^8t@gq{%L*?@RrHZfW+>si}KvfoinrD$R%k z*2qJD*EK~%cf2GxV;tR;tkZv{Ir?K)wMM2XU z2UMK8T5vkjK^I;g%4b!9w_QAy^BVK$>s?(j7cibo^cp@^MXJp(JpHRE&QsCQO?is9 zfuAomSv3y3`ne>Df=~LzZRc!$`wkI%_oIodDdP?eapTMJSW|zO&R52=)1Zr_mbh zT8W63GgHb4UrZ(Ih7nR7vmQ9L<`f|XkbZfuCFaG`HYe><(e2LP?39Du0T!i|Y^B?X zl*N-Rw`ZW+Ib}lTfeq>?QPnpa_J7B!hFYHymw|NTK61~l74vw+cow?B!sS&uYmejg zG9)&y{ToQ=jDyFPDRvO1{iV#CotTFiAAj!olMUP*v$=PCUIL|RlvC}R2XxgtEq^{V z0qg#JH(PCVFXlE5I&j({T;j{gW&>QGY_FF?2DyZPw6ayl3#kEOFg1M)_2ubRs})jn zuxrDfler<9uqC{Id&blP`}Ml0v~SH2G;X!xxee+&sflA*y*Q7KCiYD$#j5jWXY`HG zdZPQq&F#u?iZ&bU2$@Q2W6KIqe@N^HO&v%dygMmdQw$8-oeCAFQ5OW~otwHQi3l&;WmY&e5GrXDnavX}@IJXM3f3=?Wu$##`luRuBA zY`&cbj{Da9+^IGgw><(@q-6Ah#vyCgG?#7=1XjMJngl@k?0CI$awi1+63vNc3qgZ9 za(nGYbQw$E1+0752mEOyLVad5aI=>FJR^eZR$JVy=xY{XWqIq*>%shZ;@ZYNlHtHD zJK&$Q598?_N^Gn>f$;ZbY8|RTcfNUi%EM9YwhSijNts;@w1vyN6WTg~XV$ycat*p1 zil?-@CDTCn@avy@!?D}A_lEct<$OZXm18<)oj|JkMY=(L9Y|F!*U}j7hM?{TzW%x$ zz?!-I*Kg4xaIqW77BR)+pRF6j61srhy*S(qsb*$pk9_A%KG28V|N8k=f^brf@9x@0 zn095&-wqze*LA{^D{Mbw-PD@ykcL#-^C=Ou-$B5%EEo1cCea-^YH;vF17S#RTzA&K zi7;F(Hs0&12Km3^QI3-aFn-ywi4=CRdnUWS3r!?^wPIZb3m^>lWtUspkX9`J)M@g8 z2SVoEtPv^&sF-KET0!ZA9kkolJ|5}iX}4n?y*kL~Bj=ty=O`xEesT87N}R{cRnHYS zVEon|@bC{t_wk0={h#wukN74{opTPyrCsIuYYYcP+zl?Q1i)@fpci30`YMC0`yF_W5BU<@zVo7B<*zJ^|mH%Gg%+hM&ry7NTyK-c@wr-Mv%k)3ESpDWiArgpmZtS5OycX7z~SD&yO{4%zw z<4G&{YGudnJ(*-7wxtvJ^`98^&$@w^ zuqWD1T{hkYFJpA0e?I0JH{d!7*L`cW3Mt0# zc9p{sHK5z|V2O@b5y;!#-Xd}osqWc6KRnw|*J+BXI;LQJ?d1+OEkyc^W%?<5@1!QkC!;R3 z{;n8*599b56}cb$WME2H95k20co>&oRUQw->iwGS?uvtiuRgQ;$d*iC8f{*h!OjB8 z#XrSp~w{jk1iHZtAf-32b&qg1y_BkiH2X|_}vcRw6hJ#a7?UBK6$U1rE(ete>4B&mEG z=o(kIW^1F{9CSBi#oi*|ZEoHZy15o;IrADuuwHKeZa6az#t5_X-sI8WnS^U_sqb_s zkNCPCm6e>2l>FnU4<~T_bL)*RdAvueC~UzG5gVium#yP`62o{B-5>3YT}0H?*5pAA zVJ!V~GAI!9LrsO|&}XFODtnbGBG83(t}zswK$>&@{=WTp`iXF+&AWs&bek_~+DPAQ zB{Ztw-n*sPrMqXv8=fiz!L}JM*=bdTS{?95>uEmWS#)oDmYhz63GeH5=N5sk*yyIM z7iuAHx|MZ}BT|`qk9IZ1;`}XoSU-LkyOOasS~Y3tUKg0s{cTb~*HCgx%@VBJLiR0b z{q%@%`_DgAz8Xgaya#H%lQI7um`nk3_#%XtLfFX=I<0 zn-y=<$!OFBXw+H?x#RAn5vHQ}M z&%jU)Q&}??b@9TJ;lsn4q|?C$C`lO@SkFPrjE3>2FH4 z<8lZ+@Ikfvv`(OZ_VjO;ts~PiODm-&jS}8*Zy&`<)Sr(pSZ>otswO9M_1GDtEl+*5 z*^nQGwAqPC`wWl*Y`-(UztJ4)zOP35YPkMBR-RQPrG&o8_wG+09EVf4gC1F-jVQhe8%%EdH%$# zAeV5Le-$4&)kKu@mU?QP!ugnDFq(89>w$^G16RX}iL(E0@w+?Qfv*N9mmc~KG%J*U z-9v=se-^wVOxc}80i?t0~Wg(l;Jq^rbRpn1#YRO zD8DKn1UKh{Ry6t}S+AY^HiDOS*cz-`B^SkQYr^Mi;$JtYl?x0R%ZiUTx zI(J{iZr6V6AN_$PQ1OF(^R}lDm`gN%#pm`(E-?6pM&0E zUDa**_z3EtFT9(7^ge(vu>NZO6{H(eWEpHbq;pMoMj6Xg5Pp;E>(j%i2SekZ$h?RL zX20kmGFpw4L5j$AyRT%t{P@12y@TkZsg1v}e@rxf7P?6@2C$14q?TIJOK7vS-k-)@ zM|`{I_pK68KO9ys&&Y2l(Q!J{RXWjk$Y^Vk!#a&QGBjm7^AqYNqwxwA)B(?@ZGM)N zhkn<+UF3cnaCh&iPE*MQtMg}XZbj;v8!K}0Knm7p&qDjN)6j34C3@%J8H@wjGyhbr zM*r)Zn#|%-&Xo}Ph_tkuK?v5Xtctq)Ihv^NMriiWu6Gcwio{T|D*FG-tuNFD zaTl1f!KFD z67#P|_m$(413(x5k(gbNwDpq<2bB9!$JeiT{bLdOg3jXaubitu`fSzFNe-xkRYQA6 zrXnr;XWfI<_2`StdA;-=3w>YdYJm|WlQ2iZ-Yiuv2L^4^*)f-5!uUX!sg&X4|Fz=hEzQ|jihr2|Mhg>kmu79r2ZyVz(!ffm> zJHf>~t#Ui&j>tO@@?yL_y3mJcd2C;IC6(~vmIq5Fv}2vSMtnH99E2}t1=&QRE?d9* zf$|u}587DE(L%gWTbqfC7GHsX`ccU76wK$R_AA@|v#Z2=M_uRpTqWPKy#(av9UDph+5)ug88rTT%*Vfdh zLA}E{=&y!74)}GPa7*M*C8i?H(vy_@f4TWK;q6MSW4{4%>C#$-q&&WqgM6TNRcU>$I zwokIE=4U|Ayr|GyHMpBN<0h+iA+D!=ky{>Q)Izk=InJxKcwGkP1p)JWfU!$D>UKyY z5&C4e(Z3cz){~O-R~bX3Uq)J^Tdx?H=7tN09EC&>Dp>58gwOBf=+SZt?=yL9rg9|Fn8i}xl$9RFtY#zh8yg2PxS(8A(bN)h|jm@OC2R!3oO=djewXsa5*P0cj6zq z#B5GZ@ReHNEwne%|A%gPm3z?jNd*yTQPQ+kIImF%M=d&aA-oJ+XWy&#m$w z3cUMLD*Chw$BxZyYbU}lTmSBG8z8iquJ5;2;5w5M7EcZ{CN63nqfQ@Cx8L4gFf)&-V8!ps?Ouy>Lj`bW4XeQNG+(-?ieh_xEaJcU{!;D zqrFX=sd^1k^4m|OWw#SSspRRBP3XsU8C;PP;yO|L=`F{}B$OggI%Vh$5eimbc#l3G z@7`6TIaitpeRGmqMQsW2Z<)r9ulfMY$ypDg_Tp~6mDT<0HG~lTaffC4tahMu_qwIW zegn$d{^|vXFTnlKc*8%Uk%WupzuC7F^UStUWwl#r#P@saEM*s@khISw_{TL9VMJA` z$py??)l23*S%g&0673xqJ#ikX&NFX8`kASG@2KVJc%thPzW?>?G9u`*u0MGn^J7fG zlSm`fuiScZy^aSU-zAy9K@{uCYTAYVS=e9PzVIqb0rm08(8@%lZulSE3hbg{uuf76;x!;o@y;uQI;Dk8j;MT2iD`9OsY z*}O7J1S-{QU*^6Rpo@svcD-&Rx{}*Jz7$~pLrdB>%j_3k*W`K9dpn5l@;Cbqi?$Np ztRj<>>CNDh<=<`dvLBSa=B;In_W`5o*}b!uEo%U7ji0@hYBumP!~C8LaX0iR*lh~xL*3n6QD2U` zUoZTf{d>&->3?WoywOvH$+vkIJvk8Pb^FD}zk88R2;br&5{~mk|GwDr`XXR#6WJ)< zg}Prw`rO7o)MJ{fTn!fBxUYS)-tBH12=^^hh!n?u)ZJ=-H-dD$UU%}wU$}d{{?r_? z{BmFqNL9`~+E0At$-qpjeiE%XE42PF?h>7UlK1x*J}*OG6D_2Xn0_z9Y;3cDk$U!2 zCGHa8`<;`y`x~j&`}yaX+&_vgi1NKMj~iMu^H3r1H6U=3l;^P4-5v zsTSO)m|25+2U${sgvu-1rLyNXq1ejDgnQlseS2@AQYh{!tiAceZ)r7Ht$n!4SrO~q z+S=d0&W8hQ<;4A1#XMkLjgM>!z+KsM9cT_nD>L8t{9K{*1^8SD{529!xPNv9txk9k z%HK9cD(`MX-(Bry+C20Tc2-SeUq=6sUB6iA80w5C6&EzM0|<9OW>ZBr`gq?S+OEHV zevJAqshhRm2~{%FThjphv|UP9qZH4&FP>? z1=YaObL1Q`aj^P_@32Co!|J~r$Nwb?j(Ty9>2Z!*t+G09_5Y9!D`YgRkj^+^g+zwF z6;c>hNM4+@Le}Dx719-_tq`X;V}%5TffX_nhE|A37+E12!LmXi!q^Ha2oo#B9!#we zb1?fa=3ws5vG~83gXRCj9IXC_Imo*vehW0kzlLG$#W}0TIrlH-VDtYlhx7kn4z_w6 zyZ>Ph?Ehg7jCrpeY%2xeODlhv)_`R~ko)*$=s{aTah2!KJR%>k(sU+nW@laTa64j) zWv6FtBg+NTlygKH(L?+51e=QI;HH?3B}wO>V>&%>^vB8MOyZl{UO#Mza`uDv1DYJ# zzw;Je?b!Yb?VhHCUmyy@vGSEY*hXi1-e&%^$M!_^qAziGYf1avk=?!{L34}Ua@&=#%1Y0;f*grmCtj?Qc%zJEIXf8w&D=4`Br zObY|y=RrNsYP28uLDw#19|S4@=ESp0f&Xqb^RY_`Ft0g$sMjhW!X5gj)=A_+|JZ>L zfAN0cI-EXzVPgvs4(JSeru0Dg56u~Smf`hY>VBJ&`wwI&{aLWNfCOERb-H6TK$tSC z-+C!yn_RHp-l8AJZ_0KJ*CiEr-C1qt!4#nNiKl;58UWuiDf1*-w6U%( zU3BebF^uXxSQk=@HkFy!{EMOun7%~!Ke1>69?x4YQ0yPu{Hdx~Y8v!k6)&u^C?q@w z_2tiIqHQSix8t$$FxpQ>q1%rYA`Gs1S79Z#6}gsk_OHcqG;LR~R9PBfvwHWA#-qLe zb>pJdy*X%)YwC#0hT|r{^S>_U#GoA`sl9D`H-!JaxODS_e&`P~VaY5+=$@a{dei~G z|M!s#bvjsPe;oE)ITQr^T{Mk%5-Ehso3i5lZ`}MeuVJTkYYXTvD`QvHEp8#nCA!p(idGsZs`gU0R9glBgLK%=&@`6?If;gZ|OH@Ht$K1^lYg=#=m9kvAJ<4xAeUXRzP!_rDZJToiH_yJw zgAGd($h4@VUKxuKyO1AS)megRbCFg4%<~1LWaILAL&pZ8VrjyT?by!K?aUu3u)}oO zKb&Q3_ngqT#y|eL0^5A)Vqe?SONs7fAF~M+w1NLzxFunQuQMKQ+7#Q0ZIIUZbM{qO z4&1r9Gi;D#b(_(`{W=Is;t>1Ye%xGRu-m*R?GrG!T^jeEnv8#pBW}8RJ8s@c+BTnK z-$;BFsQb&pab9zEQ+zv0adYnO(>h%O!e|nm7qh1uT%H`ZcD3jv?Hcagw=ZD2WS8A% zhNDbMS3CWG*!uEtsKc)RK}w2{%2tSMMT$yP_Y@*pBxI>fsfZM!B+F0;iXc>Tnk>V{2ikqzvGN9NS~Uo$%aeaXIjx zo&|GfMt*2=HlqK$bL7qO8EnxQSK|H=;GMKA#~ETD@=CO2Hu8aXy@@>JSyKRJ>JIIB zHIPmHiYylhglnEm{6c3c$6S{#FJJmvkE#5b9<~5~m)(q^G;W6WZnfuh{y}KVfcM*2 z3NoZ#l_Umh2V&@{K7D^@8Y#As^5V0Zh-IvbJNG3qkcc#EMYI>RUFCQ4XK8(y@@T_4 z(t#RG=!*Qc%{cAf_)5L#kcOplwRbkW0TJl1t*^!rI?(eAa}STUAU<_**`KMS$YT5R z4P+K*KQ~uc-ry?6Qrzy|OT!>@&>Pf$xde2U%HG1Z1c04>@FiNbf~;j#l~Jq!W}qG( zywC^N&VDH+yZJ&)QR4I4ArCZy+_sGTwj#vn+`;u0Ox6U`Qip?z0H?2SzHy_i5a`NS zt@QfVe17i8J^6F=68I`|m>8n4Chd$$D0b zYPUf!XrEz`(x|E>&K-hQCNWWSb} zKs{o1`ql3YV+@!2$s=a1AYL}m99@kEc<%k9tY8{WNt(WV)*Wb*;?wriWS|knk{Z>w zHzBSdzhlovXqfAdDa~1qh8fkH_ccSkwW*9{#1Hl0lsv}@$pA3He$Vmez7BPTD5>6? z(1EywcPVesg*N4e3b*lo_Z4uh!T-Ecs`zAsD1tRQ6b%>l7`NU@njI}Hdcj6s#vB;|-t*|JdZ*1$; zo5A!>HAKb+i(qy+A?7U>SPK1t%nrMD8ZtBu?>*hn4d%$HAKwi+kO-e@8r2CxmUK0Z zC4x#oT)q@8&j!E8Hok$57J#)Ub9(CFPaTysHSNtqAja?1++3NC2+0bn`~L!s6YQU5 zcopP=*#-^mJ-;#aL9>}S56}nIYVBAa!ho0>q_18FdF883e2&#{4;WrLxGD!Uwd6Ja zcf(*x?*FRoJOy<;Fp39YS0w+4cTA_Nxw&O}^HFNgStc6MIXspO5CLZZP2y^*MK?x0irCuTEAut`=+R zhJ&H$M59mnU@uZZscWNkvX9q59pwuLS4F`>TB z#I=)fa+RkE;Fqywx94D9y`{L>PCg%5G#HKUa01wXspg?&!#Eb{-(#c{(t_8`{bV(! zPh&69I(w(VQA~Po-bXrHi3Ug6Qdh1r;9hYEeoX}U&(~-k} zr3*Or$1T&gP+krGN15%!TEj8;ygBxw-u8IsHL!B1s zqh2sJDaJ;00WCxT79~87UQ!7GTw0KE zt$rQ!OW`-Eau?urDtPz=^#T5pVqvN<022?bK1*5`V9UhuEV-B7Fn-efjdn&M5qJJr zjhRxYe+QaAZ3Fq#f5?a?bR$5N?zZ-qd9J1DWi z6D$nnDGwkoZ+$U>0f~+5-1Zs>9&Xn;md6b1ue)XY+KZDXFp1@@x7~+_XiPv zbxVXxJ;jXgfAsry)?xC`il9}~98CEte!MTJ6BG6b+}eG#1Q|Y8Y^{*!hQ5!q;K|d6 z7Np1xg9dOfCTu7a3(Wxf<@7;+k1|Y_{NjG1ZxVAU?l)B}8pq_IwhgXNLB8t4CTQaa z&(Y0s2a4Y~rne;c=cWQo@4ttw#~)13thVYNt8h=1c2>F|=*J(wi+#pEiXp)0P(wVJ zj+1xJW0fyB?%g(?lfe>oN?fC4A4eVSyZmu zKs$Fl+PB#Q>L2I3!Mt}3$jdV$*)@3-Q7QHVy@88J=g>uO#m(~|?`$w9J#oS$XA_Nu zTBxhe%{+XvFn+%hAO-Zoy>x&o7{JHCiec=Lb!k($w%PJf=TYc0ukUhH`1BD>@dW|} zLRpw-cZTf!xd;*d`WJsE=b>!9J7aq;16>t-Ug)VAn6&@waCLkG_1EhjpMzj3BG2k{ zZ!1g1h9b{bDM|$C_9?5GwCI&l`z^=I68_g2zRWuD^KAzSqTqPE|}T4Bl2#z)#L1)229!o zbC?m4rjI}TMt)00N>U%;JSgWmK1qaoddmZ2R~dM}$K)*58qEEZm7?kQx7DmsfaLT8Na}p1!lx=I%X>%<0GXl zvK^|0&%@cQfmDd)_fV}a-KQh6*ZjUaX#jtJ9yk*L=4(p!)y+%^04I4^X1TtHx#&CX z^LBHfL!OUbI;;o%m(0C!qD2)F*};4E?kI$@tdFqkUoM7lutjhGxGa!S6kX9wt%do? z+h19;9n6*y4uhmoTqYP)Ik^++-~i=;0oy7fIA~SQeS1TATD(%uW=& zebV-J6F}=Z7cHMo!PJHhZiOZ)^3vu_FugE^M2uz9FBsM%Kfij5^=>mrekUm};M^=C z$w(_%OG4jvLVh`Q6=1$6f@U+Q2;11)S3AxMbl#h8lNZTD$jf16Cae?e8^=oLI4Ys< zyh2Q;PS`-P)c02{`<_^d1G59YvK`DgrL9>4!#!Z)@Q zhg?B>R_}rd+n3*#e+1^=EmZ}*%g|TW2H!~D4(Imt*5f7LyRe`89Y1OwgopBn-<-pz@K{Aung!4ksH1WIh)o&ngtNcMiFO0ExzqUHJ#oAcA43s1n*`0>Mj zHQ91ZjuLlVGJnE&d>~uAG*r1~E11Qrgl=p3^+K4MZ2i6RK6K>+ z?Z_vY8B9rX(cbp44y&1;P~9cOzS520f|Bkrb#bx1K&J*qKp9g!e%h2eeCA5-+7eyO<+@~w!w*Xm+GZfKjK_`470 z?2GZ`X-Sn>gp}$=9HOBRW!-LxZGa<4$)9=sC>daWWz~Z_0aiE4yR48Dk3>Wc7C%2Z ziRs4m>k7bp=@%n#;vz4B$dx`OO&0XmP1Zz< zcZk5Xp+H38F5K5Pxv|MGcSh|lsQ5aCNQ-UGf-rZ`B_rJyw!{5XbL!*lv!A$Dly92< z$P~_2>B>A|4&0#ftm1_k0b{T4)z|1iEbkhZTQ=6yYsh$oNh{R?-b1AsN-s(Nj}JgdbYQQRD;~) zvqwl^J!b3GNW5bLFm^$km~|h7EBq+0>Cfy&*)*=tzAiwM@`Q4!twCrK=;9WKp^oSO z?UB6>HXqAWMZXH@lRb78kAuuaUgBDd%?9jiOa0=XzX-1ln z@ptw~_ad&f%DS}}kYD9>3w;Or%VK{!nfLP;ULdxM$FR)8Jx%^1zlDKl88?E?Lm zz&+9W=}SN^6Os5zyuOu~g2+L_7r&~0WP^9qr*DF6m@pCAF4vk4IBXqvbO78}E=w$j z`|1(d_2^UOgzpf-9L=<{_!!x|9?VPxTuAeB$pX0oXioE^H4h>RD403f!X+mQ1DZn@Vc=p)u`-0^+x!T4u11`;|ww#eJK=l4C2R|Fb`HL8B zI$uzT2|sAJt(XC~IAHcfG!$rz*|ouOR-l2BgD3Co0K3LP-|Fc`kn3FaU_QhLHi3hs zC?Q+`TTo3i{M9dvY)hXyT3Xti3lu*1&P` z>2{EHf9?v*yflkNdIDwkroiX)=drRqb2r!oPvv|+$Ut6S9wgS8_9F{3<4#T=u=lYa zyT}<1xEMv}T5lTQqw*O?=k7tBBOh2-)z^d|WK}WvY&~K$N-*MWIuUi(tE@11zEb*+ zs8?HbV4dHpHqiq|SrsSLf#ukOxq92-ox>YF6My=AU(#lJ9%|oOm6~ zkzj=?&`-bE=On;@m{QN3x>iRHI`dnRiHG`afplZ}r+ z9?|tlHh2Z*@E6-zese?p3Ya^$P7*@(9$s*m2?F_a-OTTnN8LC(VR(3C1n_!^%q8(K zkVyzioZmgPj!5DtZ&Bqc5&ZeIw*XO<^O>0pKsM`Wz0)rWLjFFTe-}5^i|HQMyVvW&JU>*K zKm8o;Zvt`|=!0+$4gu<6?Lkbs8Fu+f9rOw3eOB&U#UV!vPc!4H0Yp=z1vcCp1UuK` z1?x+IPacTTzSj>X>fm&--ZFT$D(t3t!5+j`!&iD*5}u3YDiNvhNTg(=bUJ4MXnia6 zB|Etu5tuY)lS+Voc4IbTw)~Fe-x)m8;-X`&y=zh`@z8IzNDdwysz4<1CWqbkfu39T z`F`s>gjg$QobLiTN%p$X9n5w8m|9#G`dO$QlPl#X$>*quuHhOxs|7Npu=A7RDfy`E zz)52FJ>W5hA6hy5>IOVL+CZtDil|PRubQl85q);klc%u^umvR>s5Jl{RP)DC`5p!9 zC=2K(LwE>HN#Iaj%obu?y~T25Cmq5@Ul?jw0A5*|FIVac^O~Ojk(q9wn}gY{<~YcR zQPZ|7SOcCXy;Y7`=N44E@a#8d41|Uqxs#$h0yygKtqTj4V>slHPMdtgBqD^G2L`-^ zu)RQjzw)h2L^6&0!a==CM5um8p`4nAdjk&AE}-?L+;;XKg#LS~vOC-<0uijxe9m*| z54EgkHY8PH+6k41?-gLKGiG-ymo7#`#SK9V`L&o}`drp424pMx)8~1P_u;sHv%we1 z&=;T4IjZy-aD}kg*Dm+_ke{z^{0}sP$d^9XDojVA?8B7qys2IYZ4k?xxd{KB`&|6t za1ZiI{&u$X@-SM6>8&@DWgyDlZ25N+fQwCgif!7^iRnAo5{)Cfkk>-|F%6YrurCQX zjQe_k?Belv8*Qjp&Z>Jxq>C|wrhhzp5o8l?k*=1|zbdiZ)zA%r^GbJNTUP`8LdAm7 zH*V)oFUf?+z$~uf3jbLc_^|&>5X76CM=S-eRG*Wg9d?D z8xmoziGRA2tsMBml|-^IglN*Uqi2(3nlRVQ8?kxz5x|2EE*}N@oiO?Jl2&E~BJdaQ zp!>WlVEpnGw}?{4T1%H41F0gkb1!}alrAEqCP%KGsUWR^3D zD|gsiaGbrJu8Uz0B2C6rRzQ6vn7iu__rcur`kQUxj@J+ZYrDlC>?=f`2(6D|izwxK z(3h3)-*C?kzVN;TJk61Y{e#xuaar-f>XD8y%+<`7zWJZ+^2CH~Gs`bbzV4UP6z~gC zlFz4(55eDWch^|$_eVtcch4k~A>8Ya^%TcA)O$6jR|0gHb9#5G_ki4uc1-U>rPTGzV-4xt+v+b#x%`k7|tM3|yx-nAN&!HKQshgkIVH)K8mQtgtK>HU2e_T)O z$6lJlMxMsN<6Zukll2n%iuArm{4KyQnOJ>ODQN(lVE+-?-a2ga^wG&}#{pN~x7{FS z3~-@B`*Zyz5Hk9vFg_rB43p34IV<`%VnVbGzs9XF?B}h#S{@AifRCzpHAgcNkvi~8 z;@2$l>b$(4V}Oa6a)XlDR}6FAiSJ%$0QeTo@Q+uFp#R}28_%EV!qkfk4~63E5w$m4 zZS*%RA<+LEzKt6~t7*}WcY*-#Qe~A$q<|bj)>QWO{V`N4u={=26*`vU%sjGI33H70 zH~L88BpSRkP-CMvkLU(nf}vT35FWIv^kZ@nCf>eqYU{)pN{L1H(!mzV*y&$3dJXDx z(e#pC8q_(VcSC9_qllP3T_vC2heUYm1*BI;L57oohgaaa`78Qbb@0BX%uf*NePpJu3g$ZV~_>a9LRrj|~w-UGF!k}W5{5|qO?0vEr@wc`bjyQd4| zCNR;U+VkW=Xct#2O&hh-;h2_kznh*#1lo<-kZ%u zHiN1)cK)2LRbC9L#?9s=2dkRs? z<~&07cjCn1P0P7^X7T33kxu)?p}aSiw-oIRNAfB$m;2l2(E`u@_Li+M-tO4`ar`eF zt6a$#%v>jXf-HdcfUc*?eG!dp-7(Xl3R9G7A~6rIlq zR=J>C%H|1lwr(-sQVGDy-A-ig!ajg&4_^3o9^kdsG~xF2kBBcdLw0CUm%0wdEuH_|9 zsc>y_JG$K+fefQss?ivft?Iv1L$#o0EbaFxxY~xkwHnGv$g&U(uT`GPD;Y%Dt_h4A zE%5%PH(!@LhoNn{+Qj>N4qP;YCU#+o_^kDd-;BIXL_%JrV#FAneLd;@729(jS*ov7A*RXqI{&?IVH-Hwo%CPMCf zcp!NemsK;^#i4zzty&h-N`yAhk6YMR2GsDeC06EUpjP{7>@v8!1=`KH_Ik@9tP>LX zI>n?1Yl_$+VSN}gvbuNiz;j33{nxTdejJfs#GUN=)rR7VgQ@Q0gNVTBm^;)K3gs=g zq6$=}BqvwO#uI}`wU2sUGK@hm}T5i+j!1XO*!3+;RQAH(isP?cM3 z*`fmN3}O7x{5I`k$T*)Wf3_9M;-7N+(9J!VT*o%<4feTOTK{v=qOp<0Jk#(uy%Ii5Kb>rdW)`dZk8>Btn?UasEewBqT zi-PL)g16qA-J@u;dX&vzHG#<2b4L4?z%-(kY@N=&(1*Q5W+8QK6kJL|6C6{ZZoGmU zM-qB)+!yid>zN0!bJB0o5|>F({R#Jd$$)FCsJBu$>nXB1|FyVSy%%NQ*I1Wc(hoF% z^Vjby0K+*_v$W-bmeA;$KC+OH9EE1Zf)jv-@Cmx9L56n6{XpY8hh|(GG}*R+6TV-* zrstO109($fKGHlN2JN4}>h1h8*rA}gB-I4jTl2)NlLnoTdH4e_Un_w2?{(Xz`EQtT z_#ESFTnYNtom<4E3eUe9Woe@CJCd^0RpQ$*kEr?I#Pf;)K4@SVJcJ!Rwd_4ySE`^* z@G<;3`jLSQzm{wl>;XDQzdpzOaV8=?m5P-81ohc8I){HAXh(JnZ`s!%!w@`HF!>f# z`_IJd!tEO%yOrtwVP|MVxxF>(*oxqKW;#g_uR|hNvIc)2tVZ&qo05<{ zjDbs@ocp?fPWrQ%ncE~85kx@(^9aV(9D~`0@&*`Zl)JyALpJgJ{>?{>!0lqnQh!7M zRMx$V!SsEzxb}kS3n^M7TIiI{q^}JiO?PXv@yX!oT?1~%fz$JJ8Q$(?|8rMX(!PBrw$d&H76n3`e7H& zs0mD-jiER^gfSzApET(QFkqZ7tx&WK(G$LUUD-d12okYZ%(L5Z-0$M_*L5qXHrJ8p zF$eH>_dOmJI_$7$2xFOD2hXe3@e%pgO+fQ2hikpKdes`uRL>>y>kIlXzQksft)_g0Z5uDW4%SglIM@`{Jp-m>! z#!e_yz&&g-dU$YCFUU1M$Q-k+#9pooehZMDee-sa^e4S(>DMJ*9Y;w)b0qjls})-0&~rEGhhzy*5!bEVcJaGy=d+l*MI zA`(iyV;I;CZM9KnpAyJ0n1)GDk9Q%it@XE~6JZ?n3>y*o3^3K1efOQX@-Z>?@MZ!t z&^U6f`j6EC?lY_4ocG`cKq0NBnZ^@o-W!; z-EdA*E_Y-;iO2Ml#s@wy&tkIlCQALwajcW(8B~`#iK#0q2?2?aAv|R(o&7-n!h1vUglBe!2#*^jx-Q;hPR@bN$ke(0-r^rbYVRoPqn6>4Uq>+!Q8i zos{l626QXgILD3%Ki8!f_9pjYv1X5)+b}oKW~^`0%oYnEb6Py~s~-b7Hd8kR{#XZW zyfAmh2-LB|FXu;fAiay9VC2C9=~+*LpOZ;IuMF;a_~vLC>;~cd+BOIESo9r5et!wH z-42$&0{bz+~Q}fVO`XHt`C56A=1LweN+hd_+82622*HzwvdZN^@KAsz3 zy9>NYUDmLBOE$pZY9HJS&(yB3o?S!)W*)sml;23c>t)KeKOigg-Sd`QUy5lTA9KFs zgnntSa{&={f7R|B`5_0pUI=JVHv2WCT{P+H?*%zSqTc$!pZDgmycMSgQ`#8*u|fPn z8~YO0T+T2mc>uqk)BDnX;}XpGCSbks)j4dK)N)m)yC2inBsnd9P6K_jE=o1E3{(2= z*QO={ytVhnP)ZTNPDTY^SgJ>G%-sM@BN7AaL=e=@?gE&@$0kJh8a&sZl8mQ0L3R+D zxZ#ob1k(I{?nM2_1g4sH_*24R=g%Mhn*E+#xb`@3FcBcz6@1OJ^7jv>abg*DE8QK6jeP=eg|%?r@i36v zTpX^c^Z^-56zvKh$YTi}1hKz2AdRf!VT9lPP8`Sf)@+Pp40dPn$&Q8h;Yv#1jhRds za}P;h9={2F?2Bl&S#UF@cs{vOo?i#9(?iP-qN5@Ew1J=fNhPMfc}9w1rh**8J&ZLX z6I?&xdaT+o4#%2YbDM>}TjY*4gQWuhV0vA$i4Ew$KfI2|kC*>kY6ic z1Zbw*Vd=fkJE2dM zq@qD-U7+HLjh+HG)jCn2SgBmy+KUIz*n~3HZ zi$61n@Zq%lsju&0Cydwh&qv^nlbt;GQV!@e!v$)VUkTEDCD>cT-HYPhmI>b!nnx)* zW0KZI!{~!SdZ+GAxIfkObydDLBI1r4#R^|Kk;S^N_JbA-?4@$vsbmY#=&uZ%T2LKI zJUqYgry$T&LnD_WBH^C6mmH5pp>I02!GhumbWW!$+0geL>|7HWJP&ga?U|p6h$ehp zhzBP(z=Sso30A80li;G0dh_#KHX;lc#B707BEqp>vtlNYO4i85`%N3h@XxisHYEVe zln|HmuB{GdcL*tNXHTPch!6nJ8?d5tRAy+_Xw!0rG)$F%Y+yV5_Ee}ug zvw4`fxK1=r6Yj6_Ocvo|>DX~E>qDbobVP~h%S)}AL0+bu)4NUng1gD|$MWbBWEQKc zi9!7*K9RVg>X?HVtTv&xbv-ECWA6`}&PhzOYQAapYZ~NMtY@S@FG0P^&p7o2;FD2; zTJ35k(C$7!RhDnz0Kgh(3Q&U0+$-cr5!b4kRBkz zUwBy?WR&$bPv`Q1<~W}A{N%rWEu^b#QWFS>K~w=|1&(AYuBD5!u~I>n$5Vbbc-JiUT5HxEshfm3a<9_VktoRK z-oDt(Hjim44?de&_aU}Um&M26uA!aq8&F0dOZSxNGO&Q>lM=bFKe-Cz&+#_~dH~i) z+t7i*4d<1$=~j;re7^OBA0Ixq;#y{vXM3&;z}zkC$-$ZdyQtQ2d^M>-dM^Z7SvSMI zqL;Y5Aho7UF1p%hBfyDQ#H#Xris2rxYh6AC|1RHhXYOr3?8@^LQ~@@dDyKaps*m+0)70=?ux<^I+DK{II=Ai>UXwzvjhcT@x#WkLytf% z$dh%wq__rBY=li7UrdAZza%|z2A&(&GXZ8^(U1z@70+i3JH!TyUhNG6*NY;?il z7piU5P>WcGlnleLGJ|ZW>l}%kvkGO%D~ff`!`@YR-HGJ_x%aT!V9Maua4qIKCTl4W z_#2h&Ncvd)2Id#dw!>xntFVYL*9+El1IU7uu`}Fh4UsJMNlO5mk3KZ|;&hvdsCn$y zy6B&33E@>m-rFrzl-kGMJqgo%-LT4=ruSW%Ir}B66H9> zm!;qB0lYu1Y+?5ea4*g7x})pwhbYV6@?*eVUS@mnjF%6%zs7AFUsGw=_l8f%Rfk!` zmEHYQ#~WnFOw4B|)1iKNKf1&e_z81$NDJS5*Nk-P^(QQDbR(|kd9E9>fzA!-k~WqG zdNH%hmj~p+ZCd6>tJ0W=q~<>5a8u~3*p!zts=x*Ox_FS+EeUWUhsqYx5Tc)}ozETu z*X1hLK^u)~$XI`6iaE$Yrr+!T>y=J&p!* z88zN8RHn2AheY4)FumW4uUuEOayJBgp`63dVLTS-DbD?oTYq7lIQugf)cYY_uFHz$ zWHVBGs&VL0)FNhkD{7KB-iPTkD*Ak#P=C$q`~Dh1eNR-9ih{YA?Ra*>vGtHTWt*on z8v*@Ht-|?z0v|C+A!KhKWD~c&aud_^`3V@R3EKo;XXpDa%RygcSN zbz}wZ&&w?a(g(kxvSZ%KJ8Yw*tL*mARgF{1<%xkLrQ1p`N|C zs(#k@2PV7BJ{~=pfQ5uSZrKC_O~d;j`HtQ!vRFIo{dNponQnG|L~1D}XZN0pA+}(K z-mf>atCNr(!)x}w9PaN^ADw-Z;C_u*JKe=KgBV8*lgl-i5rL(9g%Fqt^00+&mK-A-C!d(+O0&NPE#F0dqgyYcqQj(9B+cMz-2l;=|hYZhOSJiPU3EM6Euc zJ4L+)qogqAEe}6qRx%IS{&s4DkkUo0l=Nw+hUfnIr;m*%li1t48LozO7GAKN8WC7&X@h*aasc1p`#6=w=kbmSK2zmr5J(Rg)w%0j20neI` zT`vlB#4l<5s0nsQ*07zYS^@oTw`E1gyA+8q8b6;0TA}vzM?pTjeoU*nHzO)Jhsb`q z_fE;yqq6r*m+svKTH4#=scbU5e)p!+3gvKaGR*3=0e6V`(nU4{ye}mEn@XtX94ga3 zd&+7T1Cztnc%OSuVoKCvxs)o*k!ttMJ+EazYKe?coeI#E@pAsXSB7A2oVY3&LB~qh z){p+Gj+7v$FDMEjbOKQNtJI9(sO7}Wu4~W^9!`=Rg$O9EYO9$c82BsW}zd! zTlp86!zPj1(c`R7H?1eyOy<~;-$EKzq1Lf0qJSfwJK#_W_bwwj`ldt|q@_h_e1EUd zkNs-nA{L?=fOb=;+J0vo^F45583Q>$?J)-lw@|2`{u0rh;7TRh9haQn2KT_AzvE{b z!2J`{&;I}9Tr)0Ry?cMbPQ$YAJJ=yLcUu|xQq&mq3*KKO9)iqaMsNIO3+xgRb1#yM zgY)hEi`&^N3i)MZ{W=Tj5`GJ=Pa@5`K*kt!TaV%ewB?JA4OxIoT<+&x9|11X{8g9h z;!wX!t7?j`!|O=8e~jD+_fySAj@Strmg32wR^NmFKNB|9Iu(m3U(`L+MVf#<3gNpI zSOd0$-x+x`aIX%GFiYgX`z|?s+?yi=QH1(q3)VVd_av(#|FveA=dPB#^#D0+nwMFH zK{2F(^}LwPZNc{Xa!I=?=CIU7cj?OcF--BNrSjY;!gOsbbl@P|H)RQSw6pyv?j>2% z6jBE^r|75%6W~0@@8F5c0$liS*83fOWteLJ?OIQJD>9soa!`EQ1^6I4tm=ZaQ$6-% z0;w0$333Cp*#OUe$)(fD0{DL*E6Ftn=ys8=>WLeG7n}{U3wT6Bania6DMr z}0{~I`bZw=-co7p`~4>0WDUC%+GLBIIzMCNG4IaNW$DzyDcr2wu=XRc!}f`9mlM0NWHNZ`7Ox`vLn;Tfwc5iM7gD1XuYuxWPB%rOy zb6$3wE`^AqA$tDO4AA|T9tcV1R$v|4^AqL1<6vt%a>yyX6X?>=6e{fEl+r%L&|I3r z@@f^FoA_aeoWX_lx(nda?PMo<+=bM~@4E{my~!X$Oe;t&s*hoZ>ml9;*?V?%1dmasMCR}iB54FO#_8k-sib2Z@;fqPGH z3mSZTcK1?tH+W}qq}bsdXLy|31Bc7{K5OKIO-A0w1I`gKzqUg!7CWe9Qm@mP&9^S?yKH=tvZDWqaG7cOi^eddr$3qK{z)-g(KBVFR^2=goqh| z0XEW$e@^8WV~b_Rpk~Yj?8FmelGzD;WlQs;$n0Q{Q5+rE9trsBRCvBk6v*bH=;s;M zW!Nv+<7mJ%{62NY#lEukz}JO~N?(Va1x@8Acr&4o^}8hX%NpiF#iMx@f-P7ruKIMe>9?1hcELbLHI* z?%nWQZ4=qS0682<*yqRZ%kXnt<`AWytb`pH>8X0_N<*(A74;Wz9W-Q~sXIiK)C=-C!+i3Q}h-$Fr<6YNYCytDW| z;L_z=Wyh^&QQ5vT(V7F0;&*@lcoqSJJ>OBz^;!=me1SgQyC3P?m(f}V`&jL>)H=&W z_m?cd zRs0C|RpWR_8@V4dSgzMvuT5cRy8ih=-7+dy60Adoo({U0)ixBp}g!T*sty!$6}2>B;-2>mB>c>ho45cW^z z@Zq1#A^e}r;p0D9kq9K7~0Cw=zY zPPF~(X&a|&8~;BthcEvtb4d6nb4b*+P5O__;p=~74si~V=@pm8G1rY7WdSmvvR$#T z6$Sd4nC4^ph**rA+fT-{A74kL(zV3mG5mU2KQccxk43}_j~^Z9f>nk-R=o#@0d6Cc zGQ}=kfmLYy`p15i;kcMxPdXf6oaO!&l=|Qgva!3m?`1Byr)Lg&R+~ckJo#$JD8K+I zQWCa%jzb$uTH(><;{fG*Ex^{I%u9un&;}f}Kh_Pj zynUYH=F3oq90MHmGQf3oy~8P@1LFlwZM&~hf1wODdeBmm5nV4{q(};`Ta{bacFV!I zobgeP>&YPEy0*<`vTqjEX1ta??+P-9glG9Ln;^tx=(?cLdI+JiPge_e1^22J3zNxW z+dtXEjZKe|@ZU=k4eOeqeN>xQ7*m7rsWZDzaioJw)cGx~Gv3#^l4gT?Fp}SV
z*E`h>?$JcAD-QRluzFUgx$bEl<}+(K{;6;pQ-0;Q^TBGM z+Kzo>PA!15#(9PHa%UklId|>gEpQ>e+n-E}9)i`?#{!a90anzHiQT}I3M&_{yETM2 zAsda{{7nC89HMhUuf25&Qx``>LS8fi47)SKm=iwF-gc|T2c?jPA?vkr4B*?Z>WhAN z6CiARWg%KO68p91uZUWKtLau2U6v2VMKRvWx^Wsx5n^?`Y}=2@VouK6gl-^8r9ZOR zv;=C(S8ZLjA}mCU>V?x6A!J`-GIZDYWdf1pm~g5g1XdHNF3PY5ZY5Iqldn(i1(%<1 zZUo0nGbT|roHtegEz`Nfq0l~1*%CfAJa2!{3QGWHUT$Uj0rV}aij)=&F=EDlKI>;- z&Dec%N)8ad${OeO=nYMS3Hp9? z8dSaCer}131Ub(ys!qss5~O4Np}GRCL;iaw#Oy^2ic6|}oXH36UflT)7a&}m%k^D) zF2^*Qnaovn2U!xq3ZHa?73rkyQZlWYFa{dma2jo>gC#c&KBae{-EaupyAt&q`?1C( z`Dc$~DXSZ#E;YFR;#`g##xq#tx2FCfBEWG>Mp4Rb45W08Il5wG7~})|Gq*OhflHK~ z&QdgmsQaq7_&``Q@ojDQo6|tY91Cjo+|-Tf&urXDArSh#BgwO}9>yppKO^ta0dQ~M zO1h2mz-9gU@SlP-M6#OX{JmU<+OEIIAwK{&i8l88aB2iC=o^>2F93}mcyjg+&p2Li zneC1&9R*iwviY|0DeNm(wRDv*jTg2Uy_7hx0BXE7O!^8m*uyiDpRTuH5f=J_Q*Iry zvHEr)%zgloS>ha@6_?-_pZ4G?yk!oMV4EC+2=t$ieWsSlDDd7Ua%3T@veZe30x z7@K%97p7V(5uxX(c&BF*>J^B{F1iBes^78aa(y(mu;6jo+^`DEO&-YH{ugTRfBf&E zT^U%MyKufRZW<+C>KD!pgZH!D&+nYq1fp!oENpbG#)Oac*)Mi~gYmN4a&#^Sr%+Zj zDR+jj*WcB*#Z^5pW_XV~e+RhndfQ^ELpg+__fyh1sSrBHRnf4k7(#uM-_yikRq2-> zrbo*moPR2x@OBfx&}$uXHm8QMql-=4nFScr_ND8mScc&;x=wI88?=MZgLj1l)I$ma zA19W8@h?VpZXy|6+SlBwI%~QyRXIZNFB{0SwylfOJQD@#Vo&=8pq&=jo$p;xhIXae zBuvC64axs}Q@ZxI3yGi0*DSm-jcNB}(tiZ?A#&wdR)bbQ+Ba=|_ZHMgk_l@wdG#02 zfm2Kh&KOa(b*k9BF_upsv)!OFfkSrvak}@W2ipW2f6mtex3#9q50-y2Joa?j`td?o z+7rU2CF_sKEth&SR&p_!^LUxn-c+Ei2)#ywO<1!n+<3VXTogf2cf-=|kf_8d<_DdbjX{qA~L9ZY;_ z;Lrjz=(c0E+oK^>phPWMuMvA4SV+_mVj~iJBz8WHE`inZ*JTbQ*+W{JX=8& z_V8`IJkXX2Mb-HQf~zj9X-RSr?r-j^@AS6QFrW6Nq*ae8?DvHE*Cvo#GG3Z-zn+6t z&&iwbgd78RoLkU7x2GkTTz}7M;=%}`1d4X__Q2gvIhV2sqwdmvBiAzixbKWTzgedHc=nOh~hV&E*=JVahG=U zb2pHez05gxcfJTo;`i&R}_+i^v1qj0Dlazg_Ln#)_W2 zyl!zAE1f2rpG%m+QjYf+I$3berW{l%pOk~!eKy5$J`3tf(;1f)=&yPUdBa{6D-Lbv2f30KIZq&I9tSxH*UCRw z!7)}2e`Rw*9BBf_j17q{ zsY0DMxM{4f0q5s%pVtW`3drBu4)lt39pmYg$jg`*GsO~ z=Z3z)Q9_hEwGf4zR-Xv-??EA6Q#IGDVN5%BuvcFvGbRP%;|rD8o{A-#MFp55oQR zDsjDGKhBPOb3QR+9$d6S;rd-b*HW49JY0YjD0}M?|Ahe@=kea!5`JF4q{9^#IiZhv zQzCe#tsB>#(etin>B1owWW5GKzH9HHbTd#2o_F(B$LazY&seyu6UYOo(b?CdVKO$ZeV>xW}lXEyG!vl~&+okQYZh9MlBzmv0n9g!~Qq2rXuN)++ha9ERL z5|P)Q1M;sM4gSPBL1gfDVj@7NGmHH#hshFSoM4mvHh*EKUD}cN0qb` zFTk%}_f9nW2Qm{iw}+NToCR6&$%L52*9$1lKaF{^V+3W#1Y2Krf%(H(CGaeS5c-)G z&bbfwV$!egD`a_qH**sYU)wW=rA+r$lo6(Y{@D3hcsrc`Gq$0P;D#XIa4%W=T#Do^ zwvqSz`~RZH#hTK`ahb)%^7P%kc=J~`X1OmjnDG5jx?YJtxSy62#=(ti(O-4xmpRm1 z94SLdW1zb``Kyx10JBB7=o`-Ep$?@kk}LycYaTYOm9OFJZ2r1WRMaEVkSq7>w^k&d z-u~<^>j2{GQ@zu44nCKnN;B);aYXw5srKJ0RdP|vmKeT5WdGJ#dFd)EQ9jg?Qb8X@ zwPzwTXe#jUx#Ysfp@|^x-AUVB+zI1+&SVyICURWiW!o1|N2BMgoU<#Ikc?%n*t98u zNZ%_EN;ozROVs|<=PPRf+|ZNNNdwv1V0Oe3xVa4z_C^+h>?fx6PVH}ir#$Enknr~v z98$7A`^tw|xQA$e9*1cn;v)m*?^nG^KqYkivX7BTp4B-<}pCT3zSPOEBB>p^i;86;}l ziy7)W$m1vA+`1XCMy=}yx788L_rlSb^w5I$7#GkOa*vp8Hv*k_=9JOlvMNlSN%(E> zrUj84q(*7b-->8C9F1In`g7}mUq86fMI5)WKRVwGeaf)34`B@dKeo<0p6d7i|HsNq zDwR-F$_OE|)OA8pgi1mx$!f_ap+i<>Mv){bh3rjq9V2`1?bv&7k>9iL?f3b7|M~v) z{^xxQ=e%Cm^&I!d$IA#AB;~-1tly@ zVC=trLqI1C)?z$HHC8vk1yRoTm4gQ0XT5q4QUUiNo!grD0XP=n;`heq!~KBiol!j2 z-i9M{-)7m|1UIWWZPAdofH_52MAJogW8#V7QPUR?8nt}q3PrdTT+zIyZ`wdz(a|&` zB=`|osQ$DyU>`)Yr?y*EYQh@NKUM6w5MYL#vSwdEZDw(_awHl|P<8H4ib`+Jz?y%d zwEYVR*MMkf8%U3@0npNNZ+2(T-1ii@4xd~4U{0w+YNrIA@JN( zTk1R>s=!r0dHo12@LqL~oYz>RB@)f{@4Rwz0>xy7J+*a!^?jZV(Z`sU7@D?y$Jcid zwh}or-ku5d5l(ho>x;*sEU&D$4F96gBjGnRRl(#qrgL+_1J-LBVIPiN?*z97^_(-d z@P5ZyRA$}J#G30=Hh1D0;Js2bkqiNsuV*~Qw`2gve=NJXzn!KKIVKjmE##xUOnPnht~yknVDR z4cZTQVvoU!i%JEUuTC)d_SB#{?Kaj64B!?iV<~dXIS15K#VN1Ot|5}T=COvnV$9ok z%rSHqglu@OaDRQ>hd8LFgZMv=BOQh6_kaFQA#Veh8YUwc81(mjR@y)Y|E&~AE&D-I53nvHuooy6^zlZB#?we2L$ROss!J8MI zSoVwFj%rX#M~1ITyaUtPNaN3UE_^9N2F_P@a_yhP^7oVj#p{=_!N^&mEg!&neEP2m z(N|#xU2_fNr!!dXQrV{syo8C^clD_{;3@{Y?=8Z45%8z36uc;{Xo+BVi%a zI5M-x_sKU{O9=@Yt1zr0-m33y!X)_j?DNtactFK_ux6IzRSfm+K{=V1u>P}4d{$Fa zfC+vI)`?@G`0I4Ng9Hb-k2rqV>!}GLWjUYrOw7TWqIdJe&We9B1*_Ix&Q2UE9`Vfu zT!%DY)B7udYFveRknZi`9OAh6WARYl24b0aZ+>M(O@AeWzl$m&i!0k)Lb-kx`hxjZ@W$jG)oFkMXMI z(4Qr%2;HaA$6YHyd;Kp`5jD*Wcb)@GiIVsBdP+|ns@okP+35m!fny*8NgBq;XBbD{ zyo2YXkJ9tf3;G^@Ro`@o4mZf5b6K-2M{HFe#J#j(O@DIM@rMS4Sq*t|)1_@9%9X`T z1G`2v+wfp0!x~&H(+%I;>i~R&ZhJ$n8K`>GY#aAq8NeLR@9d2E2=)A-H{yR+R+0C% z-~I-I6A}(}_ul7k_dn>z zK5VDg8$8xw4n)4q{dxgYX4o#Bp#Zk*GZPdIG6+iH3iqfusH*)b%q$%Pu*Oe`A}c5`~X;9)%q$XmR7k_y)I!KKue8R3W+x*;a33)r_rb>|^nPfUpXjQgBn z?%}4};xRpk+T1%VPO&l)$<0H8_zIZR4~AUP5{7x?^w-**+OT$A(;810PKUnX{i}ut zuy#(=_EVRF=UPt+FOS2|;UC?%&1e=kg^lN*`?iKH-s>{lPKLEM;l!c=sTiwVGkbI} z8t?~CKiczGAXK%0aC$7H8A8=cZ>itwMJm?U88k-W`JE9nSozfsnC9u=_CAp1NEd&g z%UZy72M27^AN<3pCo6TW7NAdSF~4sKE)oJvN2~3#Fi|p@Q!@ePZY894`pSAl*67=_ zGcXtNiU%rwyZP__6rr_bnt|}t*yqj`5Jr}eTP+m_E?&9;N8aVZ?;)kBbubwIzKd06 zD~CXR>RMLI0^vmzGtOUUHDK=evUra~3Cu0*j%&x+L%mhlcy;gb9*|dU6;+G@hIgoM zFx7*M$s>moS)ajrzpCmE>+Kax`&{Hm^=s%W$Tn1;Mms=ml$)|ZKZ;_GydL2I9GK7& zSWMRl>n>wb`Ix~PQt}87JtPJ7F`sG&&-rq2vFS;!mjV1vfnR6KVF0Ocf4S9M2kW~c znM`{7W=!<_%=YCDU>g=UIu1XY#1;pJx3jVX?(tLjjQL-fpT89h{JOs%EgJbvWZhUn zZI_!lefXJ)k-q~S9)1M;sh|1{m+vAXJ>ToC?A(NDbIu6P1;9KiXt!pbFu2p~OuSCM z4foWl{!rR{7uJbVQ9Qs0{bkQAt;a?pg!)e1dvMncaQ6c{9ykUg3xRvw(frGpc*l2K z?pzDj>E~4R_kp=}i%G8s6W|_>e8p5OU`FmS@m0eY?w!^YeU7srA1h`H+B9v%M09i? z3o}Lr_huYYAe?}*5B}Hv&{v*~YPfM2W3%na69VAwLwGV?5GB!yHMx%jixWU)ef}m- z!tYk3^EzY?`PeXa;=RRD;KNEJyq2ZiwG$)Fo}9yb)4|tnj{_&Fa@q0?gsPtk!-~ z2hxf20C&zmh&NVB$~I>KCGR|9loHy6DDrl!Cx`lxMe#1qgenN7>Zwfc1$hg3&)qnG za7!T)?gSbLfV+ct=;9U~e2$y1q~#yObC_T?9Gnbuk^4rBj2O=G!$G%hek(x9Z*thq zL7z!@@LM7!zXqv1l+kixhk1^aqiXYscIo5A@*xf&o!F>J+Mn~_!aCJ>K#Y^<{oU1P#&HeJUYQQ{yEKpFlQbV|+kuPi z`RRQ|N4gQQ@7nc0+WDCHg#GhG97v@0cO4Y<1$klee20;46DHcFR_o?wpgKk7_D8(! z_$v(ux)}sNpYG|wK_@s5iFNN84Ym`B#A8knUW5o9>_yX;1`#2EaHy!s7c=*OiV)(h^WO!Cs8T;%T%R zW=9e6?T+xbx52gB*<-%7umbU3zVUTKas+FR7 zThXA_R#A(7FG>KpP|xoZy2dq_qA#kjE(fj}-*Uc3h{8SGYjTGry#xo0G*uUO^rFzv z9XwnfAcu@NRCVnMd>$-w-}m0nz{#9i`Elp#k$`@0YF{$kd)Jh`O4ecia<1SRuUZ$H z%|9|w3ZX09%v+OlNh`>wC8s=~66(yM8?SO=esr> z3sLm%5z|FnXCY9f%>lBJqK9m`2_s1C)Ix~VCBS48OH|Zjpf6&{`jARfhXq2yyX*!Q zvE~Q8YYErDO~kO`7|+!eY~kT2`6vnI`g^BO@iD->&xtj*sWS-X05R(eRG@bMCU10k zAI6b?T7UcqFGZeyq@#Dh?MY=UYNAJD4%Ic3%8?Y|?k-Fmva5)^vtY+DntH_cp*eQTWeElF zKl`vNegaYYOf-p2Q%E3$#X(ID@C2sevA2{ltg~nB;nv|L2-oDx7FPlHsut7L;iOr_ z%XcrBb4LXhn=9whOB=_d8Pf0Vz%`OByCY2SEX;4y=5Dgmz&!ro@N41-xFkrio;9Nk zV)DdkpQxZ>6iNS$c|*Jb>Cfr*e<)iQ}j?rl~?(1bAWrz`R__C+M zP69DmW4g)uL>tuS{ksEh)?u@pmuY|IRuFfCXsOX1I5*;77?6xQaJIf-f0r~oU)7?< zPV{j9XZ&iPn$N_Mx5Bqu?}2{(;8|J8VsP`nGq^8&3C@)jQdIO`aPvGZaIz-}WYGFY zRPk}Zn@4Q4yPW5-EdS?Qantbc_j_YAgCR6)M>VOE1ar_;YF$YgGSrXv19_((Aqas> z@?nR$;$m4|?;^M_Ei0y_7>r{E-ebGwA1vTen`7x(?$CcqVzk=`@RQr>P0Yp1n0H&- za(Md`%twNbpAuch2C_YhxMCi{@^;0!JQ)Lb^YiDPh^%6Z;7p~{W2=~9j_Wg<<09N= zgR)LlO%UR@o~Z}>2M$yfRD2Iw_4w7O8VB;{vmTNj{SR}<`G+~={=*!8{=*#d{$URJ|1gJN|1byq4|5>@!yF3!Kju*AY+3YQ%%S*y zF^Av(!5qGd^E1vK-c7VD@w6kZU5Mn9iD<7yz2Z#dlN|vZqN8kB;SS)<8IgdF}nQ z4rCC!xGOyZ%B&`SuC-tX9$1uGE$n0XBT-liC38e4fjkAA=$9zeIKcYLB0Ek zS#WO~GB8}VJ|qIFn=1zd<<7(F+;q9|X51USue_#RN!fi zq#r?Dtj}-ohNrbp!5GCZJm9G~WT5ZO81_#e zMvMK2UT^%|PHft~hX3lXA}f{l7aE9`7&CCcQvJXr(!aAyU#}d@Bv0(3rjuDgHtv=h z_wDx)Deu@P9mfX|uh~U`8()6^8>7lU;CzD#3Gyjt*wP`CMUcB^5-8sN=6gA5!Bl3B z+ew24e!qA7rR=H30GCJ&Z^^I6t7uDFsAn7*{Pfb;y8`BO$1b4@ihvVvR(+a1n}Lb( z6N0Vp$`HAQZkAIE=ql0I-|BwUV;?Qu>+zSC;QRW1<_ssS?f;4^R>RtPR^ynVgTgcx zu14`&K#|8!Hwh)*T0$zf6cwDUCt%(E^eX@3XheQ1BcThJ0D1X@c#tNHSKmZ5a*K_D zIprwpjB7q7nZff|MElk_TNR|Sr22r`+9U&PzY7E28{X0btzIceM!)@SsB7p#*( z#d7?Wj-pOAjuDSKR&WZ+myeMz|6WK1RYn>o({dMP$fkW`2*<9N%%n5leo%)7t#J8t zL))tw$|iLULRP3An#W}=peom#q)a6k*A}m?-@H?R>!L$gpDRNdcx2vjFLx|%%Dy~d zPBjT@n2)dKL~9{~>OuyGEsOT|y2lCkdPPV7>b=&uxHEfH@9av2N7?_md5- z;mWs@h;Vy6>mGeG&i-mUDAG9ws@}b?78qdMs7@ImX>b;ycS zdv}t{U>XHzf4uu1#s(DY7`CY#pbX9SI80i?IC8tmg9`O3OgZ~)*zgLN_mzp2x<`Q8 zFy7VTcF7!0omS=elRb}>{t$!gzfNH-{ntC4GM2HDkeK|E^$MO`dUpNB&?@$syIZ+} zmoY`@25-azpms&*^Ip7xG9=-h%TVt$;`O}zt8E0rWk~P)t5y~eTM#Rw;I~Pn<7%|C zp=AvbFTCZusSah~9?qUGe4nwlmCIH4WAOf!O+VFi0$OtV$t6!v&+@9$<{fo}HOh-* z4|ge8yM}Rd46vkut4nCyhud)O7C4`H-3!l${Z;kv(}3-$@34GBRe&fualKMRF!`4D z+AMY1LUoMlRPhtAKCf~-!_6L!z6w?@1vhS?SsAaZSNA|U#OS)}aCZWEyNqbF9E9;? zO9(D3gy++1VYkuILIc)h z_4ZM_%nQLJ(W-s*aSdeI=A}!?3}KaXas3uxo@>M<%9Alag)Mqw5;OS#pYs~mqTdHp zp^5P1KrDP7nR2gW{E{%ch*pSs2-VRz9qP;m zO55u|=J~oY6lzlTF-jE5qF~#RM3GWVDAkD@WA8!2;^L@P4cs@hnZ0kYfIEmtg78LQ z2_kW=r&vaeAu@e6U1oC&WLq^~@o9%OW;$ot0aT0o^}oCL{RT`4f2Xcxgm$?fD0W*g zk2+ZHFy9aN*A1ybyYnTOj9f#eYcdg$-9o-qz79fCH1B4m!`SD55?yNkFIW#W97r^T z^$ErNiS7x=931M52&9GQ?Lnica!m@DzZ$q6U0TLnZ~Ml5gP;uBow~;O?|m^D?jf1L zdbR39ro@drq!Pt=e3=e1?e)wA`iv$Ki8NKvs~U@vwIwQLzYT&aZTtEp5z1|gCd~N| zzUNO2P2&%sT%KxSnVkIvZWTQ*7mwy6g1Kqnj`u&2PVXn5)4VLi$iR22$9FX%^0cMQ za5;>X?GMni<3?n#x9Dd|R~xSLKAZ706+YLI>xJc=Q8@d?&aP6(L>*O+yv583?OMkB z3sYPzm~Fu%^I1_V=FsdIE(08cT&JeIe-Efo4iW8H?29njWOP!KITIUPxHf!tVGw7Z zR`%2Nq#%pR`PJtmpcdrD-tZ@(ZX`)hIKQS(UYwH$kF5d6Evl1i~( zfyxbjlCU^EgUtMQr9Gvj4=$78`VOpz|hea{S`FmGHoICl2pGF9(29xE_6y=M^< zUkvwEPjONOj6rzMdo;&ak76x7sh@u}=kaKYnRRR94Ca(hj~W(U#99y5v-xr$vNVK}S@J(i0nQiCRC-MMA(+qF zu**!O3}PMn%RjHggKL79P|#x-3z9}6R}*Yt4c?T({Q6%=(a5P?f>&$6jB>tkA6pt~ zi#U?`v>DXF9F^^c_Am}L)xYaSw}HYlz$Fng5Vf9scz*W+w0X9y$vo8kh+sp-b8?R@ zGI%zp$i^QxPzB)_^>{H?^EkL9m%fFu2 z+d&=q_hmloB%W2za!Z&5lj()&wlJs{$a3`(uFq<5fM$YI0fzT+;E{l=>I~YTkho_~ zGY|#D%6Gk8g}SIqwDH#r2@x-kb)H^?wtA=DE>inAs-u*!J6?e7)icTJtYRHFS)q%c z-nIdmosHu<{9zS~58dT@lT0AXcGvHDqq~WTxi-7&#Wrz&W|XM#iDevr`fJ@ia3e}( z4iGwi0I&$9{GU5w7O}p?(sf7Lbu31VGgDZCF_pL8N99Z1Dy=T)f3-U`64r=fKHbCzCRdQFS2nU#`i(UKz z`0TkBsktjK&ga?Of7=zpz#^B;7U^IOd3I&Y7u-h3uP;2MX=nl05jWB*hVhQxllN<| z?jv1ty3G*=7+L`PefpLmJW3VlQ(iZYr(a8+4sKfo(@OQ$kC$OBOc@YQEqI6X(mBnO zR^VRNnStM660>!SsWR7&;9pyh{gVu4F^kQ?b@M;-SdHmNOv&>(%;Mu*WL33_7sZ}O zT!i<6cs@)iWupjf>v0w#r!M30{Grj({B=CItky7kY6}xLES+M-s=;JG?3Z1B1Qzh+ zFK$m9Lu{^H7tHN}-d8vqLA5Z8G~;@m-GUks@m@Obse4ej9X+yx{HO_OKJZ#J+X10B zqLIp1*lCHQ6;duCzH~&3z!1@bd04lZWw$K;SVFVnmW&?&$EJ`gEqYSHOfln4=YC#T zNA+cw6h?x%;cZLJEsr^*-|OtZ3NC0`m&>0Wl%OLrIKES3e-CONR_gm-d{&UY%?)fv zTtVI~TIAl#%TSl>rVVoNf^+z^f@?(+Cc6#K=Lx`?a?xaG<3H2Ft)S*WWO|NzqQWHnj z7Hf(FXOV^V6n@xi(OLsV)lqNbJUxc&4<2gMcd&xpVy- z0LQ6O$!ipy!Uiwx)pvNV0zMXaKDc57$6w27epkMVNjCdVJvx;S=kHy&m$_fCrnAZ? zC%9KupL(ubtAhUSy+PoPVO&IFa?h7*!WNY|&aQwN5ONb0 z>ZaafvVDo&{NZgx&1jRR!xnu=C6r#0)(Gki4<1%8sX#;&_t?1*2IpCKQdDC#^a<&a zk*4Jxh;WAPPcj3HMP&YL$?Yn_n*0J^Y`9=uxGz5X56v$`Z2WM~8C<2Zoo6d!c;H^z z)4cN{JB(fO{&;ycwP8t$iC9!DjJXaKSiR$iF%SoW25v4ZhF>jLN3H&EAE%@nkT z=HhiO<``?Je+VLuxsOyoQ(N0~2FJ!7HZ0Eb?U@d0>m$35S? z@yWpg8`dO&2NNiO%Vn$7YZfpE?&-tjKM?WV;@-fURmj5lV3e_J2bQOM5{bdxgnZDh ze7S4^mF-4ncEEi{Fkl>hR}O23>*gIJnQ+c(_ufy~596GCfpP*5^gYK1J$|T+<7BON zD=!{UK@Q)krS)pWl1~R>bSJ@V*fM%@;(0ENw<^0oaDcgTD6O-nauN34%SV%$KqA}71|Gfm=T zb+M1l8Q>~6FgeMmRENG20$UF`feQr1)oXHQ6=fGbG97;bYXOV+kgk)BC_Qa6eYY#r zkL4`6@4mqOxNfqiyAANDsKT5mp#enFHd@@v3F^q`hrv~mU9fI0WZMZUWQu&W;S0fH zaJ4beHWC3myow04`|d?}yJG{-Hzv8g zb%@P-nR)c=BpNk1^*pQy>M7+{mhVr@A>vZ*CQ~_>p!Pp2P!sG#tHlP}GtaD`D(YE% z8coQ`cCYwU%K?4MWScdsC5(w5o#jux3^Iu&x;uR;fMFRFvLC)28QB@hRf5Exr^A{zxtY|=_;;^2=tF@gzrmc^7{Jfcf9c> z;HSXSG*)@9N6YYd1rsceEB_E~!j#*0B%=OyV#1pnjQs3hAsm#!-dVZ>H$132T|B>q z`*-LMhsVs~>}rbnh%?k_e)FF--Qjuf+hnq0>;QK;M`J@WU=?;|CoAoHv4#9+-7EoE zEAS<9T7XKCbV4-$w-F1Guy@bO>a#kelR$YUsnCxcx|0*w82%uEBU+*jgYbR&VXI1C z3Tg`$yRH6X8BuI($B*s-SH5>SR5`&*Nc+&Ww?6!!!jtefynU`0e_eR#OgTD%4J2O_ z?kjG<-b&e5X!gNeDn6iv+P@au8CvHhK&3?(`&iPNoeLp4iBiK-xe&&3;UU;P!CG+I zO{py&g?<)2@>vw_IkdgALL7eIjQUu`8`Fr~o^?Oop#a>DLcM%XfU8OVMXxhXFlW)C z+g5%p8SC(Q2~pfukW+zSdWH|+8V9Bo(hoBd111z>UjR0kd}cq5lG_vtFkKaup8z=! zQ_}p+PEZja@BhXO<7x6AJq;;_76^-pxgqbAi-)61A2~DaB8q)juxg#HN03+WAPe03 z`0T>AWf`s^+VJKFcSC1z_U`T0zApf~ZKWE|lmr*dsQ$zqxlq^lEN}Q7`Hj89+m(g% z$8n3(hs(^lb6ECDYK0svjGw19Xt;wQTywH`s_{e*grtcK{07x*3H;b zDGBZ``Oa=bwugv^3s6`H=4dwe;;eHLP3`_hADn#evW4|ZzAXGt_ zi{@Q2qL}NSI(?HsB)JC_?Jk0OorRj~UZFr7pRJkc3HZE#f2-UHu2D>}unhZnxCB&k zxi5}N!ut0z?a6@JGE6G|(OJHlhgMAuLetcte<{zfULcL(68l%Gp#bOBnHCGL?e7Ep z92d78Zie|CcWAjGtQl3fM(knt!E3dx@eofV9{t*9z-v2&;|EtNJ<9+KXT9OoSv-cz z8b_+%bOJ8u{la9r9_~|-s$^<$2)B7V&UC}22UjrZpRbjh#iK&=8E^g$;f*F4DaHrj z+FH_co(cL6HtDB7-3Lana1*g=eq#==8ebPN${WE|#x|lVfDZ-eq~q?m9=vg>{E3q~ z^v_Gi@fjYK;C`Vi|3nq=plp_Q(udcW_)S4pg{B0P+{}fS{0b27N@Dk2#z`b*+)(fi zO(R2RcTvk}I^tpG9cP4==JBNK%Z(W^n2(Ly`gk5G!jWs52Up;^A=D|!H7NrAx>s={I3wkvi-_RZGG4N1~}P0U6!p_UE!IuN8bWw8c?@#Ij?%Wj-mTc|O#N#|W5A3icbKg&cB55x$(|$m z%ZM)_o8GN_8I4wqYuQYJJSyYjS_ruBjTY@<&HV+Y?}WgJvWLxR!|-XDa4Fma9F`}! z`Rzfj@p_l8av8Ydgl%4MfIjFfVf-A-FDWABp}Y6Odhw|F(h)chG&ipZ-In=-1{06w z4nAZiiiw%IJWX9gq1xwoT`iXp+2chfNw6A8#sqA<`wQ!->!+FL0W+@Cvyau-0yjb$ zAG5I}Fj42K(Qk6@!UiP~%QlJ?nApbWakaG(T=F(TUYz)hRui7yX*Ywvd$m5!I;$0H zIR+~`qgkBCJb2c{3S>#qM#IG^^*GtN((EW@81r2)`$4%5vbkRO@rx1A#}D#8da$no zS$JI65cmN2{nPx@PnuIOiP_`Tg%9waUQ_vy+z;z{fzZ^M3UIG`OpGnu1MZsUhFWQ* zJ&1O=W-d8(9P3Q}OiOeA=jzncoY0(&IQ$QKC{9AC&(eSvzjF&mCflSY$Su#c; z6!s=tCUG->p_8nYB#twtVcxfQdLQK$BZgPbv=mps`l1c^&EiLJ=z(?4Gg?EKmj1

HRQsVmg6Xi%Q%`?t4sth&ypY-lTL|q5&bHXEJ&WRx z%c*$Z-b7;7E$Qe3EAj!L=MpQ{_X%rHC3)(qJD=jj7yequsPL&BrX zmzd&pWmB zaUS}b-lU(kI+KXu_Sxt@m364sPB~}sa1k|8n-Oys4Y7@rv-D)z3UWBwt}1WJ>S+2?mw9(q^|mGL^zz$^vXIAdCxdEUD!5{diFi$aNlAelFe3kUHApqnNpVY zhj$=9@$`vHyio%3l^O2zppTf>do^+3WEUb{(KmDOf%#n80blc@J=n_AL`!?yBJ8WA z$1+?>F{xzT?N%}DBaSD$FO+P6` zPZ*T(WI&xwCTYsUxmy^OaG@E_gZv?tnw|_q;xsNafDlH5r%LL_*y};{-}Kz{eH>OB z|Li=RJ&xl`F8fK#%_BvR$%&KVLAi4ten8s1APPu9P zVEf$4Jgn~x%Cwp4NwC-2 z>HnbFZG=WyuOVFA$T~L9f(jh=l_c#TGmkam4ZYxlh}1A? zR4(pTDL|6U9{!&-0VnXQ2^>~i02wW*TiBM2bV!Goc1Xc|@6H}|UY%@krQ9bu-dTx! zrUx(eRj=Vk>U!dNor@4caa!uD^bB7A?(3p@dmih&E@D;wI*Avz;jF)dW7vI3$Lov1 zI?n#ZI1>ZdT%Ewe9%nO<&)IaPyw!ucw@jfn;2O-;|C~FquWb#7;!c0M_BCw&id^uD z8eAvRsdL(Xr69s6;iaW#1MD9P{{&hO;`r@RQ3|ay5JF;{z5VzM(mCMUw(J6XDir}< zkKhtK>G3&BYMqWat8lfQMQadQ*4S9q{vVjbe~E%RPs{qNmJNV8H2fc!L*qZpq3J)E zL-Rk(q2(Xu(E1N^X#0mbwEx2#I{sk}o&PY0u78+A_dm>`=O5UgnKRW$hqZ4tZJ*U$q?hAIxF&e=&!#f0)DgRm+M0U=EZ2!5nnj z<{7>h3}CaN5s}9nV4^(xJ%&VvYsCH79fTC!lWcqOQJlMAjJuaEJR-7Am3WC(BxiP+v{^+W}2-yc#?J;>7PEg z!kP$Ufs4%P)IVAfCEE4wrH7zui*oqIztWBbP9-fkk>T2{mwLY84&w_8+Y5=8>JgJ! z`9Z5Oc)i~dnIkMQWFh)br#ZA>gOx$Uoo`za$%BsWqsnKT{k`>z!vC26$hE(bD8wp! zd@_%ILfi7&ap(m#sA}GDaUEQB26LaJn0>{gIG}Q07WojkSj2pkHSur77Wc)>k#Qqh zUzi_NqNOHsFYNDqI0NOSo|wR&sx)-f=F)2#DZm`oxHLCxyKoGb^7-30pl#o)G4n~N z1t%^)zZ1C|+MHgITEZ__M=sOKYVnQZvS%tcxg+3p2*N*KPv+n%jo|V8+67ogE7_YJ zhBn}RP2E151{llfo%-(3j?5~;r$1LO;=^IvU8%J}_1v%Cm09{5XP3#p$eDw7dQ*19 zf6fjItm(y1xtX+5UgTX~b;)QQ7=r@BjEZ6|zh$>!ZdIOhCsiH);Xq2$D( z4yOx!X#UN%ri+HG#Bc##?#jYdWEl0dbEgO`QAfvmRprnG3ezkR$jN3PYSTrssJl`T z%Pr=wLC-`?t|v(hc*ENKi}XX+kT{^t_MMmC3+7>Yey8^im7(mnN!EMPA@j2OKCJKx zak9(h`+wxekboK`F9g)31{Mx?3P}xE;DYnsvC452@Itgj->D8LEWP1<3Q)$nkT!fg zpiJqMYw&&Ru zzAGI<7G_miZ1vCV4BJ_Zw-5UcKDm2Gcn&fX_E;vP&|U!sw-IQoy4zAuKqew(LMoo?FqoG! z%75B!1uEUn@A7HmU(q0&>WJ&)A~M(-ABuQAgOei`V$Jt9!CK_{Hi_YKL~ybkq<$NY zyrmC?mP^CA;cu>T>T?<*IosTwIna&M=azE^_dpr?AaSYw36xE4*wj7H8@1J2+;2WU zj>Kw3o~^g^qvTEHKYLA!aPr)!Ux_KTP}!q>Tz9Wo`oFJnVjKFJtR`>v)xxxhhM#$Po@ z(nHr4@#L=npC>>$wjCU|vUt=7s;VCSdVzTq&@OJc#nOmv9P`$qDi;vngnq*V{W;{5 zBGvhs56qU*?jN!22Um&?%03=zGN`hY&iLJdv3!V%jbvXTHn3p$-8$cZSBJQ5G!$mA z&HnKZkzndYJh!V|?FN+Rlqnj{wP^T!d^@`N1*Z)M49%;09At_Wtd zrx-<^B=Lf~i>%7K978Zc3oB8I;-a9!4~!1aCTWOedoH??L}8uzB&THH-7tDo_~X3k zsVOMS9DTSE;}mjzlB1A$g9$ZGwmUV!SV zuUdxOXh-r7R{jP`Z-5!uAwkPGkoooA;J)ux0w%YLsnKb|*qvc3Bl+D7cBpus^&5V=bK|hH{H!Ogd296l@cO%=F8*X=uY*M|y04R}{uP;)c@n zzIiyC_oiWXDP%joS$Wks0qb9p@V;xxg=m)Wm-8xDDSq?bM)1ORXlL#2bH~@OV20=C z_Pc?37p1|qHNCJC2b^R}bG}rIwf1)XjFgA93{^TY_x=l{sn_pXya?^rv(jBLV3w$I zU4x{zpMqyg_530{2eJ1|(^}ZRR=@;3t<_)YU=pLbQsns}%*(0y`b}^pa*(hwe&4;F z7(lfY?-2m^nQ=sB_*60A1;44eW!sQXvsdTG{ytnr|9k#X0$_C9{?w6&?Po!SpnbOYy*^}svWRJg zU(Uv2F2|~Nu)_I6A97f(uL=neosQS_!Z=oFdukA0Et>TwZmNF)SD;uF}8I;#E&8)&$?kuO#D70w?(s?6Qmuqn3 zHm)6E4zT_-NxmqgH;pCpd)^SP_u-8^u?pw=Q+RT)t$VV69*3^i4@@=9;bZL-$` z_!513&Y+S(1ojtTF+w+=_twLu=dgNee-w1z7Mk%oiotnfp+u!anGTH1<1Q|B|Z2hoWBnf zW14M1jrNJ=g^B=Rcy13@$8`Uhj3OX5iyu z94S4~TlXXd^J-+@m=dhSEOU1wbDxi3r6OJ0)k<*l>S|Z!c+&xEF`E!3(O|5iym|TQ zyD6k{>_BG`(+F}K9X(Ir-9{X|*?&Io3t*P^7be0bYLUUg&-@oeE70r@ChOwAE#S^G z^2|ye+AAHQa~$_NFfWCCm-zL2nthe?Ed_p&Wq(q$`qdhZ5=5_x`!%~;23 z>(MI{#-M^b`SxsY`Z!LP3i$i2Vh)QMy_y!WT*2`bX$B=jD>z2GC|K3NFvB2%r3}Gpq<7}$2Q{4^jF|>`?R_$ z3M%PQ9_8W2e5`Z2AUtz+8H>%oT#Zfz(>=Br=gIAp*z9DgW1Y+*UW~79oGn?zg?2Bc zxYN z`uxV1W^)iR#aNh8GY@@>eOwSg1ECcn>SsRq!kXP;GE2L278zZ2bWc3Fh+bX2+VD7) zni%@wz`o|_CB!B-;T8w@gn)&eQfL1V(o49l; zpMTs$RciF9PBv>Oe7fLs^RHEKdArNqeP$IoTqPvkwu3gfidvq-4DhV9oU78^{fKWR zc%Ovo2#z=IPz=%mYTx50$@U~XKXE5M$Nqx*=|aLFMLY{fp8g{jAKQ*&mQ&uJGoHc4 zyb>R{sKA`iQ8)g)CafR0HcQsOK?Y>Dx`)*Y1trsv&*vJBp+#Y#T>=$=f5hw%X@hke zv8!nLgG4U+_4{5ys5=dD^1i5&d-ehvmDtSVF@sR5%eK}L*`OA^kuOj$+KS}qcxVp% zm_=PWDrrfd7m&_R&9?b8SOe{-m$aoWhfGpZ%FWxMx3}!y4_>p4xbmazwj%@R1RWg~_qk zjt{dJ0?rumvg%tY)-M-j*(rb=hnhdSw!!ZrXs)@VjZ5pbnV0x z@4>>-d{EOXh;K_h4X!|KD=sVG%Al#w`fTetxb%@MuWY`C|7K`ai?Kk4d*5$y`KU>} zQ9W*AI0kjHAD?4oB;5an{^#SF0Kd={xBJqcggu{oB)aK=i{AI<)!aUCh0(}&7(Y~q zCu5kh!!H9CV!cQ7w>_942d`~uLpYf5L4!pbWpI!95b9kW)rJ=*#1xIL!a(Cq7+4d|@|703Xftx|{+y2)? zHyGbapW2>e0_U)ioH4gR0W#1Gx%HH}1_uPuxcIJ&Agw-6?wmky#-nFMU0@4c}YLCSW{flRb*-rY5#+6whIcL(Dq6-HR}R?^n7j^xp*C?)VG69++1} zriWh*`kRltB5y=Bb)hGhYtRu1AAj!+rb|OC zVg^(N-xpDOaWT=?9o|2G!Mo?cg$2w{&pF~oa33rBgh6#?(o%Wnf+H2NxSNAt_5B|t znW`k4DZPLwMfY>UE>@%DG40jtBY+>~3FjRMX@Jb!PY3%dAcX3RoU3IxoF}xiPfWwx z(P*Q`^pN`$$~$qbuTB@%3eA0L>znC_%`@evtV07}p+S>-l>vify(nm{3-x=^!L{k1 z5c;&KI&C;fL9+(pPS^7q5P7EFk@Bq`Ts3|x(SeL)@L9*3b=^f2%$8%nrMQ4Xf6Dlj zZw{czBR^JncPt|U?^W>#twb2_MlQGMde!QyiB$X*Ta$f=VTt;9vD+qcJ9(U$b_WyD;N{n^9{z)PG{61noov8<><=7@i?2X! zKQ!`8b^-2U(tK?df&|{jR;cJuR&(&ZEAgOr<-E zFFeo;$jx2Gp&hB$C7welfz=(Jqc7?(!>y7)Mu|xXKgt|Yyt;%bEFYye6w9z|kr@B? zJAh%77ifuq3YC&Be5L2w5cc8kEs8bW!d+tzYrNxT@${au%dT#q8qDdqev}VF=B%xG zRMz1+?|WVINfp)tw>#Cf^Lwy&P(xbtJuvfD3n%5Rz~8InFnr}OGqDaG{xKf|YgNH% zeLIB)#8PvsyY$-%3bn9b3_T9vY2pr#`!&Xp(JqdAJ?@~w=bewMYU~HhT$}#l@jvL> zDd`cK!?5m}+AB{3_OGXNIj#YIP5^_sPO&HE z6|H)CoTCtFJ|p(890h!AN|8R+5mfeOGP~sl8j!FiYW;yPfWX+tilZulqb0lRuZ8e_+=P8QF*KJ_?FN^3I$*o@J}h7nw~2&26Gf*Q=_P z)>w#jR?i=BKVL?Vgfwl;+!m1Rg;pDX@fpOD&^o^AumIW7KepBED@H`Mrwbca@O<)l zI}Rj!V!yYvyIEL41zYx-aX~f{&35!{y)A3O`udftG8coK(?u+Lx}C#S2b5VGQ6 zyA|9UJC4N`6wbFF2iM1p#K#l2$8dnipB}cBQOqG!#aAFWhqY<6FVP=``IoQIE1_Gx zh_c)?$+}*PRA$;~CU*m#ucz{}*9rRPd#9D33V}P@*M!hdhG6nt@}pD%Q1IP;g2c&pIcj!hOv^}9;=`nP;H)*%o^M|h8gk`$}IOl{pw}S{!IziA}#^eKU&@Z zcG2?PL>1J-X3-ZVxJNK8)diE(Q=^!HpL%uHZW=Q%yMGm87{N_R&1d`*Zi^z?csxbv#ycIzGl(YPta~cx3ISVX}B7HY6OQM%y7AYH!VUg-E#1(W37wb8t`0?d2I@flToN zu?^>21t=za;xYl;C`mhy)fqibfI3<83H?cs7o_>_5^SO1^!e8K)}xC!efM`dwq4-P zq_cZ4MX?^9?qf*TR+ZKOE(C;3TT>CbaP08D^M&^MDAo^1e%4dJfXOVMBXX_U zu-V5IneN6xY|((PR+snS)yFG-HT=yG5<9=Sr8A1nwx!i3dyV7l@Pxu@NBA5!6Eil# zt1u}wqnfe06fh0`n>(cYvDTR5BAXC|MQQFduaJVZ;4cUHij)SdWT75mJT#5#_Ftzs zFpc2k_{+^QuR9>*;zo^6UMC_`IoMrIOGir923~zO^B@PfxTakV_{_K2wz~s>^Kkvt z@G2ugsPksT_9(#ISWXk9<{A<0u`XLb)fGe>WK!F6w+L`F=^6W@@Ln%ZhdiH71pMfL zqe%eFs}wxzj>HC{Iw2F&qKXB?9mt*%u?gzt54VP*{TYZl){md+7Sj;JGyCVY;U4GJ z^kP~%+l>NrFILLY5r_hOQ_XP`Q)u;SUvaZTBlb=(excwB^~YAf!fPV9n|{09$n~Wh zhmN1J{jpj9|JXY7K&ZRF{SQe(rIIa`JxL`I70#3;N<~tVBncH|jqHRFQG|pfiO3eR zAKA&i?*@ahkA2tg-S_!E&tJd$kD0`+F=jsJoa=pEuM4P)$EzouWKd|j?}io^P&Q>u z{bfKe5~vDw;0FpQo#X3uC;4$qy)u99uwXOjU|PF=aX{(syL0JRl|Uc4$4R~Oz6B_H z>vHyB1Bzq4|3D}WsEXfcZnQ5|BD1_>8D~CsqEOwltpsM+r~f8ck(PmO+g8DLDKG)2 zC?VsZgA{Z_K6uCWWZ1VgT#>o#2)-24nfTc@VBWB-%efF5xwF1*-%sO=Yi~m0zGdk#%Y&B3?emCeoIsr763%?|A zAM77ay;GhL3d2#9iG~7Zu!-57$T77F#=@c#JDFjOSy3=!zE%b2@A0w($TmbBM)IUDE_ zFYdj3k$^b%cC8w;52E&*;`HlrFuwHL7z=aC1Rc}JMft`e;+E3p+E=uQ@;>gakNyMK zJL>Y+Q1eC9?avw_Smn7Dq?p(KJd_LuTgqtDL)C9UQ*isKaf&+$6+Y+S z&8^JE>rJh@KNDcS<;EBGkpcE8SLm54I$%F|m+WLQ^8svm^AFyx!dTdG(Qix^O5?(k zjF^Gere(#eu*g3Nw)dgVa<|WLZmr(2KQ#`EY){-z$vq{YGb#jMDid-?g}<`0yO;7&ib%ThTG1$C%-Gu8RR(2(H;O&~s+0o- zmtRNr6RhKgg9)T#MK}PBT>TylKc99RsquaW%A)rd++7CeHUf|C@3wZl=at&}5jbfBaS7$Ls#z75IY^H?yky!6*Hw4E?u}76w@Pz4B)GU> zqE5r-NO;{=oSpV=c`}Pjrbau@`@{P+NJx3?pbustu1FGuhq2ffir!Tphz~2=8LNtD z!D35iwjRiYbBl#+$99@-Wo z+1WG&ueW18JunyG_(Hwo{RQ+l-I-1mDVQtnPp@f~1e&Fo zFBj&+zN+)}jKc?4wA?dmVWCe;v^}-ozq148E9oEFX**gFVeuMk`~(?knRrjv9jV9b z0|xO@j!TGRe>bHsZ5)>zSYUlI4myd2QOig5d91Md#JTMJ3a-}Pr@ZU>B9x=3zcZ7Z z#jLCWHwX7naa^{O0{=YNskU19_k9GaW57Fe&EN2TtBBoq)~+9sn)nzb=^^e$<30ae zyA%_;G-*uUL_(bHVzg}UIKFgKJnzrN8En;*)6o3{#_or2JTh49f-;2VH}4jK7Bunn z@ZT4M$cw_~FAelU7gzDEf2+zdxzDhq&=g`-JEPuN(NXd2ji_*o;d$&UOFB+B(T}C+ zvQMLSh>1SD8!i|{M!u2Zy+#k<@mW8tnQ!u5EXP)=P2ou6ttI8$f@;=OdYFOR!5E zSN;XiXQI*#L;}Vaa5|x?O2-G{#*5pe!+uYKe#}9=2j$n{@$_3cz;;qGT4*2a40BJ3 z(yN2JmT+NcTK09-Aza2_zT>pxG7k7)@k;>gGsY_C%1j>63ry7eAt1u;Vh5eis%mbQMD=px>YL#vnbG!j?0UP{+k7}n7 zDdJC($iuq++Me! zhueSN2a9e0^Ofwz9G3|m77YJB;(BGV{XbvC2)F=2cBH^) z2^`ImUk7)bTLJJt{h6Nh8O#u#;gsf1#w^CWup)2((QucPh_uQQfWl!;$wOK~f*Ju_?fhR}z6Z+X1^B0)!V z*|2bB7Qra0>qpeJdyvo{@ZDXKk&8%?8GW0Qg)maoYddkT0;OEvcl#WGR4GsV*HS7W zQ9|z&DD4ADjh9?L$8jsp6No9><~fQf2{KuRIdJsB-NuJ)J|dR}6_yt_x{+}>>kNO- zDyqonwRlpxf>Qpn-f~=kedlD&t9 z--=roVllgfVKEq~(~Z9oeEk4M@CmyDrx{_3pL&`jA}jUM1j|hRA!b&o?agN8L{@y$cCF zxSvFE-cF?Cs(C+sHjCz^dgYpa(GVRDXH0&-(~tCc_Zkmc(i26l@7!$UCJ>{&JXk-e z?*S$O#}^ZPG}Vf4@We0?ByhD5;DNaD3)B zHMzo(tH&zd-5QSKcRcupKq4xxA?t&9&0atW*3ONC|U5}-aY!y0!)du;S znSH=1Yxa8}aA6CO|UVq-|@7?wZ>>7U!dmg)?9N?s%UJ`N>y zOG@NotqTc~4Z36KIQxlPpCM_dx2le>g}^AZ`ed>UXE~wcKMs;_rYR7)gQ=ftc6}Mx%blVVu0-NK>aBfPax9^Hlv)eo8SIPi{b&!?y3{4Xv()9|H6AQ8L)@xt3wnNdz%{(DL?jbCZ z?3cbj6rAK;3N9$14F_rL3Fp}h0Ok1;u4$nF(C$bO_c_#xN!j!1?v9mM>%?S``z(P- z-HmQ#0T@1N?>FC!jPZXXq-Tf3=!sf$%xg~0tLmsVEyUXUU+y9^oc4bCovlJBk9+c z`khWqSTEz2WlDWB(z$qAj3F1UW8G%+M#tdjWjn*+!2z%Tm1X_P=_0TuRh$@bt3!-| zPdE$u;QIP8q_?;e0A*Z~iszD`mv!QJeBJ9>w487}_UmPMesVQ2$Dei-Ai$?%4c9k< zfM&pf`cx#wITKwh0m=6-kNQocGr&3hm2G=u0!Wn%`@XG#G&(e#|A)O1oTkOmxgVnt zk8fn&h8JwvXy456Nc_UY9sUlBk@5eCCe=k>AW7jU>yH>J;rA^y6e-q@vv}W|x!Vll zlq2D0%O~K-C2(|Crwk-eOQ|K#z(Vru#>2m-&n{xdV;V#LMT>AfSK@B~M`x6SS3*<{ z0O$U)aW4e4VB6fzTS)-uqMkBc9Zc@T?xi%f5y4=M==9w`txClyK=vW%l5yUpuO4g8 z!S^xy$zD7;W4w2z-I$Mr`u%loF`=ji>Kneg;8E^$QsPc3#5Lyy0*TD2vk!qlF~ zEr}V3j^{Vqu^%KP(8w?Q>;fe7hiHQ-kAdtl`bay^t`@s6NUx>*hC~xm+)ry5kK0*; zt!&}<-u{8O?+)~~l9Nsef3O3>hjWqri})b`f|ck=e}e?Z`Kg9ZuQIIV+Zy}n85t8i zPwa_=!YC?p;*uZ~PPptj(IC!TgBUy(y-nfhO3_iV=~M?WUv}v!@sa{mZ}-L75F`>J zW@K)MEkD6kUU}2*3tkpHkRG}Pl46VM23vQ>U}M2nO>*u$5_U4t@Oe9n3fngV5*Nl$ z;(dKpCYm|4JpCZxmdFV7lQ(~<5Br7n*e}U3%>6A!jo{l;6;9Na%d(JYv%W7L}xS#=aUvG;`JZkW`9{ zW%k-vo@&Nw?hrsNYQdrJtm;Vc?|J#;cdhh+q~4LLKT(to}joN1(vxvO(SX|X$02%WI@#J*S z5m_`emNna8{SAFSKxxl_f*andt@Hp;mTb0LbI(Lk1+;A)zo7W!=u5qOwXKlcePo)o zzYuzH1@HVSp2gXXTsO#>tC(>7RJ)oZj8eS&CVJ5VW_e2JrBu&g0X6nrmd}Tq5v?}?E&-@KP`_qW!;5XSZ32_mParPzfDK1Xd6yp z(WP_uX#mM!W!HGhZ;+BAT0aH-#O?HSVb<^Ac^S#NP}tmpg?EMQ*cms52<{(xjA&co zsQyg33SI}qN}lJ8ra%l(e#%3kg?)+PJwBG&?RK>NcVCtJ?8Aa^PrAhq{H z;xqZHhhicSC2-oGtWF$9cP9*cfwf_|Uvb;-Ic(*`XE}8pM!BEXL=HIDVJ=o*@%c|n zIMva!X3B378+Tf!_x6wDoV2&$&XhS!cXiD?PihYPO5fEGR)M2o^UJmFxFy_{Wm#hj zApN)p@qcd>!x56zC?_y_35yg(eGOS%!+U~1S^7t>g2iHXLH8<1NKYhr0+cFo*1D8{ zJ`~0=^Za>FzX;Z}h3nI~tEB)^t|w_cuf+tv5X+*iAc@+oZ{zy?28r3YMBZI%!lFA` z^yK;$kk}ma?Tk49dDA{5&prf8jf%;Dfz<@6NK4XgKSx7s&ycMqnarYa;m1wILnNe} z-?W@8+KI$oj9n1=wgMKg&vcWj%V>G=gQ(f_?L^!5;-+zdRm8lLF7((HNWRKaWjNPY z5QPH`zg`6kXza%UQC&!^eO>zeyr%&%?0^1QXbpg}Z1ayZ2LY^|rFpw1X9$kAb1mUw zuwFF8oP6~P66=361%&~CN%)}Asu3!3 zKGuj+vI2ciEI@(L#UXXa6e#lPdfz+e)DI+^vD&vu*~sNF+neik$=FO($ogj_4N)h> zHvL4)45H2^Jmg4$kz#@R+0)i-h!96Qcw@!|*?N>NsI-s~i}FJz6`v`j6TcF9j6y=T z4`huR#oLh#x=3gL6ReXpX`v?;zaZnDZ89~^V5OL`V0Q;FEaeWO6%EDG+d{sVe_05e=t$*ZBtEr z3Ffx8-Po1{J>9oUY*zM?@m0~Rv-&G@xYO_Im$a`?*mLQU``*}k%%N#9>Iq2_YItfI z?dBj>_CDkiyO)YNgx)ATC6D0&Yvp)qzznuc@F89OJ%i&epBf}WGMJZ9;G<+$M-o7DM-9X zME+uJfgbE1qSYtgf(7@nV(e!qL}3u$P?DmVL0TzaJ`p7VaNQO@IAWWNiNmhPSw~B- z8T|#W(m$Qh=i3}H+74D*?&PvxzxqH5Hg5C%2GA$2tqG`xn$Gc>ZZhhzInSD(~HBojC)R4iDLVbw*P#TGJ7;&5y?}^Lu4) z#iZdvC)!cly*1eQr|j4L4?s!;B7R>16k6qGAKidtmznw{X$@Kmu5jOJH3jeAXy>pl z*^?lleH4r#O@TBtaF>|J2_qk&xE22kR45))Xx$u70D|Axc>Wo%0$h{R{Nsb~6adEVdr&6<68eE!O?{u}G;Rx75jG|55f86j76s24eEq@BdZ~JL?-GXGl&h-Gj zV3i3Rbtk26e?bYR#spWYoS>kTL!+*mngn9IOA`O9M{7_7@$wM?l0mlWO~d}NO~`h~ z_JNB}f$UVWvbxQ+9;tQuwi(T|!t2q1BX+eFQSUHa&VB@m(X-MGUZEgqJ=nQB_YCY~ z(%05`@?gJoBqn)Oa|ksjxi5GaQql5lt{1FDvxv&>)on5gBRUmDV__&BsLxr@P)8tz z-tjKi=_Dhu@yxWMDA<3}F+}&q5r`%$W&;xp@c8N<2vD4dk?_l&K41Xd zB>F|ty+?&8;Owd6TXRNH%9P+Sb|UBrEzuEsLT8|;l%zckqpFnnyIFh)dX=yB&Gm9@ zqL^Oki0lbQqD!r!^D9l*=P^lrKUx@xvx*6JTg{pggQ!q^#H%sHl0&(txU(J;->Q## zi&r9S1?!0(e|^UCgBfgtsZ7XIQ&1FL3P)#G8u7VIMY`mcaO4|a&%5Bv0*9O=>kS@Veuz);7>O`I4v1Cczf^4o(E_Gz~peLh~wM|t@Vqk4ffR#@P-NR=cZ z9_z(3x#?6?{dnv^!OI2Yn*g;0S|n6$`-QeYeHA%8yC{PaHjo+<1M6vdAU#nE@9}+} zz}*>o7e;f)KrCtg8+~vHDU-H;H2Vn&-F#9@Bu^2JdaliE9Mg`h5>;%cwFgmnj=bVh z+W;i>gl}d)>_%Q89D!L{uwP^gwEYf52)*Vkiz7y00q}`I0!L$`%j0 zr)!T05`RW=lH*a#)2_*Khzu=@+&`7X3G1qSTlA&8?L@QEu4;?oab#8dPK8bjtUzCj zvVNWELeh5Ov(v6rWW0wpmcy_InMpfdJ<{HQT#A>GdpXda@y7{iT`)_p# zrZhBa?W~66E8U2`@$o@Kjx~9D01B)0`1ER94JuLfqu-3J4PXf>V>kVHz7r=-i~BvB z>&I#)yL1Okej`zpJ=T8Ic~rq18>JycMlR!;5$`wB!GcqzW@|nUqg1}DOa=fN#-1`t z-yspL#C%fZCXnNPJab7s*Mg%;MPhmMYp~jK&db#s6s%l#>7|J+obQgWrR|4gY5mGa znYwNBD2uu-^Og(9rup6{7YpJ2wz?z4c@p#*(yiDBOGPN?`l}D2@5xYTVn*klO+j?= zg*$~2Sjwk)>CfbVp0ViZg@nOkFfmIx^a;*0QqumJb>Fe=g)PC~C&3Ej%x_&)nfz8x+E3p8DVWLhR9u35KfBmohYNF|6odpLm^Pq^RO@_h!A4hml~$R^{U z^$*(&ItCDrj%($ex6L?jJ~4kw+XQwoOZRBUjwNJeIx--R~2CUD#(ikRGb6L!@JiQDme38xGzDQ~3%BJtvvWP*MN-kdFO z`m7EXIQtJLFD60(@#-0ql{|>J{3&_G$pYtO-|srB=f9wofxRE!!@ACM&dG*dz5*RL zKOO0Obq4E6dba!`m*T|}XBlGz;C1!f^q$ca5TNwOoLC-bBhrE2UDbCR5Z%^RVSEJ$ zMD5M|k1KN!v*m@KwudM1+2~&FFPt#CQ{HxlMW6~uc+{%SqfnHn{<^Y;sSie#M}&vL zs;yOX#A_i9K;B$ZTWMNGamj>E7hfjmQZjjLXH5%nA-kmF27L-jsk`|sLaYz2dmge~ zdpa=7x$t+E^PMOl(p^^l%5Q8;2n-#D^JvuB&=mU%FiJdS^-xe3_LY9C!Puq_*5Rz9 zBAG>4TEgtv`&j4~w2p|iA6OQ5DKaU2ha_za8_VaBc0~Lg%_#P%5mC=q zhrTL+b23Ix!+vxjTl?n^d?J8Ar1Ps>e>dp;0!o2N&$|*I&u+Yn7j3q zg7kDqZqq$~aL`5vM<(c?#9+>%zX=e18j!6z99NA29nnUx0`gf=1C!N`JQO;Z6n+wj zE-qnySQ*xzti|LRgG`x=4UUWK>+VO-bN3`GvNcwiG3o}no;*=UPhmv7E zjxtpqsM!vL<HIF^>H^;;PzlIDOUTwA?Th2l?N$o$o+q zc3by_d9NXotnlB8EgLAV^3Y7aJ^VhWR*ofGkD{Q%*Afl2p_ryiqIKxaC|d6tR=Ym7 zh^U96kFm2t;aKmb(`pwdP<>3(N!jWlOxT+F`#fI`=E#-vi%tXrDTAwX!zi3j^}4>B zU$zDd(%%NZ*i?vU{t2h-3 zd1j)cY3{>*b>)lE^LfPb_crg}!}VCtR6TVgdI?2|tW|q`E5vc`1_{mkq2S;)XV|gh z!z@e&Lui!u2&PmBH)>%t3b|2E>>yhBMdTd1&V(ckP7=v_0$e}-7FL^b?M&B zMIaR~i1@t#!h#Fi&U?-<9}s)6ZPTcz0d(W(o@-b0uvj3=lO|rUnuN}&^HFJuL_%bJ zSx7CmT`4H7z0!cp4z`@Xc(WCgHRziRC1AhxLN{z#rwMDZa5FngLjf}F1%CDuzi?2- zp$7KCDNJY_wK(~{4_`fg_x|)D*vH%5<<+(y$1<)Kv%INu_(qps{wp{iC>ImCHFaTK z3*7QEYa3V^RyQBm1cFZF?^VoZ2c!4EnOf`!^QR|!--|D0<0$t-K4rd8*iQL1SK|gm zk=>uH2@-vnEwu1m`FkMt{IO}vw8HMHP2*1KkG)~=cnIo#Awi4bQ0&HgS$v}#EfZPlc0mzUXnccwJLn6_7ur=+ zp)g*{iH_(R0TD-Dp7=n=Qp`|$(OBUt%*hm#Mmsb{Ft<^uUJ5TnR!c{}a~Z{=dR~g` z-4Y6-ZhGJn|9(U~;doHNH5ZB#k0eO${R>58>}88zCXlU|>bplZQ0$S%-lfqF1z~bI zmv+7>!)hyMaz0BTLS_}ScUm4)q#_@|)5y6m$>T+gWS;m)UJoTTJaS!o2( z;5e^cdRyR}TC_a_zXb9g?-1s=2J4@7T0!agZoK?jkXeFl8gYL;Q$mKvxFT^wvi$fM&Y7Umi`+hkc|y5< zBs79fef`tWcZdKNo;lfWUP4A{mcd`kJ?gRXsy@rJBVZ-_=#=PtvIHVFTkJ0%hXU$d z%-6pHsgGb5d^1?oACbmC8~WdeqMV1dhpv4bN6h!-JC@iMQH=i=*>7NRepV|cdpiL!Z&+BLx(H-h8^J1Xi7Hfore~xd zEC4RHJByOxx>Ynk8>+Y)3QJ8NAI)n8Yo6jl)o=e06uR`|$O}g}uWO8Hi1JpVv2tO+ z7sC2}|KuSX*jH2Ucis1)TaxTD41e}5Kpv|#;r zFYaiu@87+IqXpZ)`_qmV?Emhi9W6Ni-Jf-|;QV(l<7mP4?_SQ)V*kH;qN4@(zxxZ0 z76<;_D>zylg!}*6C=S6N9W8j^_Wx`Yy#Kz6{tAK4(s;Y01>b)@`X3v`%2kiQ8p2zN z7X0v+o)!Xdd)-11ZvSJW5c;35{I8AT@V}41Mj`y4FFFFZ|7)WV`S+Rs+9+b=*AE|a zf&}x{ZKg}tGO!hqb>!gg0c`A58%g;Ha@v)x)BCw#xsK*r66=E`@x}?4lcDjLc<$q^ zgKFQfnXsOx&081)W#7L?qXNe(#7)1NTaU%RoDn<|LB*_UEZ2gI2XUrdTdMf{7_M^2 zoH^GtiQgvIuvFVF;Wv>oIr2}z_$4c4%N?o= z$h7P}yUT%;5jX76#LL=`siOgd&96Gq4l!kF+c-;OvNW^_{u!)N^ z+(L}eEU0JB=|_}(^fXT`9nQ(# z=wWzUMvR5co#@5F-mxm>FuoFa->zd8F^;?yqMLnh@@}Lqp%ksVLcBmuP&meB$a@=(eMc59)I7$>^O9}R$@mo%S2NC4e7ggw zhDqDVI*nlIPD$JQEIrs(@V)iNZM`7#ch4pS|3XCcE~z>hhzTSkA>GfDm?e0(es^0X zj?!?56@mTfVdm0e4Q!_#Omi)CVm%ehrwjGagPRm_pqK}?E!I!; zGEAFMg4_|`^Ne&v<-ychZ`yIRseD9S-UI+w^lheUoyF+2kxV}O7!C1i?rh=lAB#wS z-7jyu5EId4jcAp$0?yc_vG$WWjVQ&`{Ai6&A^cp&Ejv}yklshS;2PU(#B{cU-p0Yhu3dOO7>LyPPj}zcu&fD4&yx^+c`6kS*ZHYXKrYh zfCKQ-aU;tH6l4%*XW=!373Ov-ik5;LoA~6zt*?-*qAhiv7yFG17orqi89~qLuc=3` zbpgb^dtaimZ7QzKI$iy6dL9-2e6akD|0@oSRS4c}8Aj60H{L(|3bL(?S_q`xgXW2cYS39Bkqhn(WE^bpx9; z`jMJokH)ynAI#&J_-0rNqxzS2u^~IbiOaahTyta!DaA#^(sqNKF7cLL=4vsPR!}*V zM%RjXcF|48zQc$?=p_9`AOMIdtk;gt6eGR7+hd*3UrW7JYIab$0&fa9T7I|;PC9{A znM;aInAEo4Z_~X1>+#9c|8B`g6o%{i7O9iCgq}L8!~o86u1DI{5s*CN*>rjSu@=wE z9zS3NeT3J>B2K-9WRXX6Nm?I_HN1XnH$|>fuurRNxqUut11)zbHs7DeW^#IO)QhGt z<*1#%{|xji3x?P{1e;T{v#eyQ4ktIzIQz+FXOd?(<;nvN`8<7i zmWOjzbaDvm2VZ|&;SE4S7gfJma2%({ZwsUOGlIRibXDjBNVw#rywjQx06&KyzjhK5 zozwt{Fxmm+LKj-L6V+g0k=ggQm5s>l+FrvuHmj&8*+!LIF@q|m)ivM47?`I>u>0cU zJaB3Umfi7ALV|cw+Fl+gRoWpxGQ*nWbDx8*yeeDjS?WMmhn9c_lND4JgSv*gRzdxlE*u>R-9$|*;wgE7pB{1GEwV1h}S26oGAkGz;3Mv?{-|6 z!CY<+E}gwj!R~ssCWeP00VFPvI>J7Hy%uCX6z^`w0oUw_YRfRj>K9zkwETwUhWR5r zOj(HSeV^6c{r`}$C-q^B8)Smp~Dcl)N~#5qI0*gdc~-QPe9*xi^LY z?9CJIQ^{xoV6dv&RmD%3pcGbs()%0IBJu3Ty6|j>F8}lGuX4Z{uegnjqu=U8n zqj6xH*!o(SXn+fMjC%|da#8c4UFR}D4kFk437UfKjN-(2s;{^Wkv5+Fc*y?;$r)}I zCH|R5GLLj_-_#gE8xeUys%HsAvSyhdkr|G4G-3M;XCMhce|EjW7VLQ{Q8Th5g{Zym zb{GNrMx_U7B~PCRxrT47??6j7R(SvI&DWr5eECXbhjIBFzH-K|t_hO*q|E+jePBBx zus%BWRv$q1YR{P10hFB+Y3k4|J&J1+;um}kXYgU4x-Q9wAZyuoFkBzZ!D>a%CI@tZ z{BR=KZg*7x$Up8WkL>c1$?-pIT{43>pyBzm&Anw<>{uoLA3cz#PAGZ=JArJvu)k?Q zydG_`humOd9mXazU+#+NgYD$DRBc&MJ64k}*mCnq5n}MZp2<{Jk0!d(&Rt9do3C8e zw=;cT(9R-PFK;n;J%0C{igxHnT-!A*DVWNH$w4vANtIls=_nLs zj6Mjb+=Ni zjj~!W&tTZPE@K*&5M@y9YJ}^EO~Oj`#0(-`=Uyz_KZUBZZ|gX}9!172EOo{S!-)Pu z{b33X*dfl>Jh}ZCWP!r>0e94kQ7FOkR7rX#dUu%N)0f6I#5O3~@rGd&)wnswG-Pfk z_FgfzdADl`Nfi$7I=nzb%v57-;ig?dEMJo3?m|+Rp{aebJEc9O z^m`CFe;1$N-~gUla$W5-8pae;5AV=U_<7#0v2fIN<9U&s*6}qMpI=S!OaeP}XM@#t zPo)Jcz%9;wVG-o3nc-e*uqg{GI1_X^f%vrB4m}R%^;O^Tc$o6jb zE}Gk5i~OC)&_ADp-(1X8Fe0s?`CDQNa#hfyIzGXclmta2lRuU3?W#tF8kUa&6FRZ2 z*0j7K^yQk2Q)rX!LIKaZ`TYjED*msZ*VK=F{0JLifpxr<5kQT-sMGCm2mzS@Y>t`+^#l$gOM${BJ#M#rl)}nbp;u<`(+ZpU<3OG^^jV?94G4V ze}>`l2M!& zTb;Y>2pRiu_02sb8kI z5T#8oJC*S^;`CzIMZF6^K)kTB@BOJ7#HcjyB?IfH-jCL!pHKcl=|gd}-n?YAxpKAZ zIsmAjn`RG4o2;PgO}mn!P3F;Z-|{grt!^Ydo?Y|xL@O?|?N<}In21~!ZSq5Qr32tN z%7Eo$8uGfS?)s#o6Y)i9-+6ps2A$ryI`i@->|^q2@xJYqsNF2Z?$)mn)G6id4*oXU5^G_gMtM5Y@z;_6Ugbd{@X2T%ZTAv?3D)PJ_Nw>;Of)W$SP@{OdHz(GBm&I zdk+YrIu3IXU;=RU_X5T{MgV3_w90m{u18^mYZXopSJ1QF`b(YabVPUKgYRD)g<_{A zbM1zUji_4CLMau1?(@g&m7*t_P<~?~xhwPHA^mqn^ z{^;M<{1e`%K4-KW>3gxLUVcRl3#`|=N;mdAgZ&golG(-NN+5d8i%jqiV{LwOT0;Vm z_eSmA9l%bkB~vW&TmZ({Om=6HVh`qMlv5S$8N;3rJ*T%Ntw2$L=1<4XX*?TlSn~ni zH>;ARv5XZ%IF9d)B)4q`K4^HxAS)Gmk-y(tEdJh%J>QY?1jlDl41dijf8haixna@i zcRC%hgspaWH3R5LQJ=Q89RH4bR}U^-*tP*h62gYJ&Vd|xE6zunLL-QB>%QYfhi;IOM?QWN=s-K2NRE=r zV57)fl6e%7jC8h}?s^C3K1%TUEURb3NKeQ-_-IZxq8{Yf@Z6|D?PP|%4fk4*e#=zN z0u)LyzYsa6oj;CVnjiZu$GDZKrtbN~E4>e?ZIPy9z669x#pkc;<&zPmQ>h{+i;8^T zj)gG$labesUfP&DKp=DWt-M^Bir5UQK6CJI0Exl0C;O9c|?taIo z!H(egVKN;OmtO@p+iKep+tFPxjtMlHUJL$-Bz{-= znCHzPnGPY6n;h6tpX41nwit}d92QoZy_RiZkr9AhXR&M z7Ge3?mDsqqJ))TwY&rAkORe8Q=SX8}amXLVTunC=RwXyl!D&O@GwV=XN$|;bDX2v< zk?C4Zd&W@cQ1e4YTCm@F%~~f6|3V6cBEx&VFlN}=_o!HbgmmuzIneiD7|(Aje>5sM zjA?hy_UvvR!}EmCOvUyCNNk>O$-y7Ss^-0HGe2Aq$Es?a#WyJKZTuc0!O@B9DSUlL z8i1hW&*pl@Y!FZAXh)u1p2h8F1l;yI!8)TI&Ow8xfmBCxux?-wx8GuUQg*!siLL%j zvK?r|looRv86J3^d`?nW&Xl70vDufE>;1Uh=i{BnzEFe^7qEToPd(<~IrYkRv={Af z2|JR<#Y_~wG3&d3wHb$gmT)+(3x!SB*N;vPLQEj&fXNc9uVQOil+O#W&k>OiQ%$bM z3{J;JM&y7nQe|uBa=r?$T6<@@X+ojRa02O`#R#VMdfw6e(SsL1mxNrqHHHJ|g&sT) z0~^?p^sVwIYw;e=9Eqko;a`qQy4B)Faw zqTLWzin?-=oE-9R{Bli4Dmm>R&|iy_Jq<5^ylh=Q)P{L{JJ)Qq%CK~~uZ(&@Gvc{8 z#N?)*g){kgb5}z`dXMZC>gNm~cDe~aa_9oGk%@5CXizayyK|URo2TY;4LyVo-`ih{(9lVbgO!KQX7nK4(t4SCs{emj1@16}tLCGm^FI=*LBHr$AU zWN7vtHsu%r``oRv1}H)a|FP{QtJf5Y^1RYevtt?!D-_TuSS=!_jRe+Cvkhb)&G4Nz zf{D1zmWk(^5rMes5_o=adJ}1lZ4M=BbfDIdq0MWaD?r}y!ex8m{lq7~)_>ybiHo-XyJGJN9AG9~+&v2fNxDm<`63{o zD3jNo1pY)`9^W%t{`Mg*3teM&ZTPv5JX}+m|BTJ%2S;9amt&Th(}C*7MJSk(H9fI+ z5rw|_Q1+7_bZKu(Ew$rdKYUD( z6$lQU`*<|JR%6?|^gD-CL08EYmrwPDVi3(`8HM0vL@&7fwiLlQ^oN;_pBWjypVod| z`wGaFeOA$2m)o(`!RV@M9uPY!G!1J1HjJ5zchOXCAI0r4L5s!DdT`XRBKsV*7YM^$ zj7sa3P}JC(_54^b7F*yub495cEeA<6xN!GkgJ@z>b(WT zr(x-~g>L~lamLg?i2%KAM`JU=bsVwjoPKlT*aCW5n6CZ9aRwDk`&^VwT0v?uoc4z# z$VmU&TkV5D*m7vmoS*wKgw>d)xH3OOQI`Sn^|hn0?lNZo=2dCLL?wp7>%*~#@Z#3B z_{(W1F{R`4)DtMayjAEb;$4Ucmb9WrGvd&CkvJhc48EVZ2scmCG}>d|S}2kJ-4xAKQmkG@p~(%L@_Y9Z>oy}31(vrE3;5;o4HMUq9pekH#MjFx zg*%a_=GY&sBr!OK3ve^DuvFx&0(w4&yXe1Tv@L!}EX2 zEg_bX8Dn!1^jbaVYK7@`jP+V=n@_&0!&bZQck&!2VFGXZz2n(0F*9vapkp8qqh}mQ zhrW*C$d^O@!e|^bxJ`<)H#8HsBX-n&(D-3U5pC0>wWdU39+(@IPTloV2k6O z-G3uB9ShSi1xo+v#0n1%<`!y=Vu6r-cvO~zDKFi`RyZ3Fp=L_@L3Jc%B|wzs&Nz1e z@bdoqkbYb&I(gLs>=MnVmfVxP$MH?}iyBU6=kQ4nzRqU`vp7cNDmANb9H+dTxy=E# zABx3FwKkB&EFi49J&ze{>c)}AKlq;=8^Y~r zhfnO~h3D({Vg>WXI-IEQadtR$6mMRv)8GKR3&(H9l{1<{*yYLKFIL77G*8JI)4Txo zKGC`*mgynn!u-^ref$GDT_=>gcx(;D=$`nB*QSt`)f1&#^1Z0~G{0Pi$^;^*$;a;w z&A`m8j~rV$$cQ`K(?4#@AYSUYuT6J*4$leW55GkhaA(botjZN2a(=ySV$d~%$rY&S z;daoC`TXfTfJiL8vBpDCg#vK8h*H(6TuguYm~f223R=vqIyE4_gvjg3hC}+NCTk6XLHkmk4o3>|FQO%?pV-I|bi!fH(w& zC}{em0sSgJv~5iXUPlFXf^~oMFlm$f3c8bm>qXv<#nY7|qV)#lAWa??zS&zDb6^H{ zhr5~I=$gbl@*UcKx}6YfNtF^|{))3SEt#FUn1DIIUzX`fs9pGCYH(%~-YF`3mwtE|2`eQ&I12k2mW7~e16mM2zWbHI z88%K&rL?k7WLRw@gm0UxLP)S0TLb9b2vJ_cE zrAUfoC;PsKT=t#DzBBf1>_XYT)AK&x`_K3Nb6=QwV&<9qzR&ACf5&l9%LhPk#=PAf zXP;hVE(kDyrTGas{y!MSe|dwG@VJ}#DL5*dpN1n~6#p#$7o!l`dK55?1&rdt)(RNK#jO=E3W=>1 zFp5jC{)vE(6DZ zFp4YxdFHNr^G|?fQw@`MD9m}%2f3yjgYR&Z=dfbTFT~^GDCR?!wUqthx zr5+^CG%cpLzX^=920niR;~)Mnd;@QH4`b5{ojbpRO3$XZ(uDK(6dv_F=~X=8ZealRzz9^ zp|>1+AAHK2$_47WD|&U0h?9sIvzyfsa%L#n zeXZ2(aD*(U zM+vU0Q<)zpurGbhT`w0HcO}f3rkw_iV^gU zpxszZQzt2(5463jnOrRxjh!(ePU*wAE;CXMnq}B510T0}Uxi3XH|JYtDG5YH&7s$2 zeMt0*(E6W7c}1;rc}d=r#Djr1)k;>(vP35ChS94e1t%z4D> zL*{A?GONsHuz%8t3TuU;U;ZjV>|H+{h2+7#Kx)@a$oU+spU9egcMU!VI~d~{tbQZX zW4m{4Ev1;C?W4-x3V-+Iy62H8b%-f5M$z*g7+n=2Wv)z6Ymy zG_nWOVK2(*SFTi}wM6zel+=A#pLYM7mvFge^4Yd#l~Rg{fq%Kbag5<8?dsuJZJ?RG zY3R&>6n3@Vb(+u*G_qM!$X6bCeT}_u-@J$MS9r){p`;X0^~5*&1C6b8 zAb{B>vjs0Io_a4;FouTs2377ohH=aKoNQf49pu?vPfZg}#Dqrmhu_P~5c}C}raNDQ zT8XlQ{ID(vYpsY8->No%+ChckWd*45Uhnd_{G5z;nRdzU5(i_*qeI~`ha#|})Jb{Y zxCq3=$o*Z07W~NuDr=`P~EGh~~yf0A)rLfJh?7Q^bACA;t9 zek>gCYb%mV!dkiR$EL1Bc{UgxCQFzCV=ZeD(cm#0spIMLfe0$m!L`aeT+oIkCkU_s zh$5Rl{OFlL)N5Bu8m*tgd%41*HVBLOK6}{r z&5n6Y$rh(i!!?IZv=6jPKzp?L%-upj8fe;Mw_He=Hio zMdfGAqr@M`WAn!q`{>_@`?P;khv76*nYtFU>+%S4G%nBl+?{) zYjlJ{ug?uS1faa#Ub37_1{LlDvE|PLt%&`O_DCo-jN5$q=}Eekc;e)FzrUaY@&6S2 zBpPxq2P$^zu0VO4Ky|9^z7u?|cs~|yKlK^wTR(UnTL>!6(P!SeZ!uQd7N{x!See$H z(!_({ZbH=8N*kT6#WFVfjS^H~)aGiZ|9%Bjy_V??nfpsIQ{l+V^J1Nt`hrfB(Gj3Q zf9|e#m;{W>ux&BSG6OCC@bAFn9xOPRpnT7H4!0f2-2N?Y9^2@&veR%ud7ag$A?uWa z3CDt&zVB$jMz1u~J`usqgZ%COqgqh2M6qi9?ij$`k21`7if6ItZ138SEcpMPD)Cv0 zZUpCSdvo1=x*t0VMNt|-{-Efx>Q$#fczu7f(`T$wu_xK%;b z@>}f(GR@$n7_$Y#%&Y8IJnX?(QdoQaguwu2zgCt18rn1m9}eFynTBz74(IzOvOm^Z z`>OIyYY@9KFXfHA0=1*u$?SF!Fj@=OTxo~x9Eq#-p3(%=1H}gFWQ!&kr&P=vMuD3I zMOjNmi8^9pwbQnS@i7HAtKm#HsGG}eTx<0kk>XLQ`TW&k$ir;>s{g1K5q1|i`}AW_ z{j(os{08@>^gzB39;H}L5&u-#+lMI(&-}hk<%Z0LF8R@w{YGh@epdN(%%ZiK$7AQM zhLHIEo4iioYI4wV==81YLnuR{_&eir6Q}`bLc&L2JifWdw_qh3E9nlYkKI^7mP3o_ zhe5rYquA}d0rW35(Jx?sGGL3(R#Ws~JE;`z6w3pg7g>meD1(mcFC*^v`fqYd@-gAm>7Luyk}<`_(1)S> z!!d2Q-XXu6FgC2&6U)VtgJl9uG$Gs!3%#T%G$?I@ZMA&%s&N{oV0d}4uQUQV>Kh@^2je7wFD3}oMvyg4&bVe&?Qp?L=8 zo}~4c8T^IbMmxpqi5kVdfes9!;C2)^W|StQNeaGMxs`0RVT3i0-|*sj;lBjU%W zU;JvTkp#8v(5XaFSC+NX&__ieo%{D`hm~M#u)(>Rmz@o+8&qyPFL@#gvpqZS?y5#9 z83L-?wt)P?unY5xKTze-TU^7RYO&d6-3<=F@V;zkBZh2_}66=e?{xDPqVT>Bad zxzc}hSX-uNurt@}t&u(Bxa@p!kr!IT%*D{xDt?+m8lYqAkUZy9&-)nQ$enjyMU=+pgk38@LSElxk{Kr~~CO~5jySMZ^ z#lZcbw0SiqN)+7xd{$e=B&)H@%urRajFaZ_amsfGu8HmVn=Npf=R^U#P z$9j?tFlz7Q&Fvxco#^f5Na>B&b4aO5)X|ny4|(u@JD5E)P)wFwu$WO3s3JO|ubvLY zMj7^(Ja>a(^@8V3HkVSoa?d>OBFiA+exrCg=NQHmVpr~Urp2LCrWGEErGQUC_PWp> z`0qIdb(g`d#``?C-~~odPl8*twS+%9Mw=x^3z%A|(v34}hd|}}IofFA8`J|d?Xi~f z;9^JLo;|z29A|~_?vxN7#?4w;*NlS5`1x?RM~n14URw^letmotkL8g>&78nRZS~y4 zm@LS7^(^$-)6|b8cAm2h+D1uWnlyGI8p8P&b?e-eISCD&RQs?AZi6Q>s@hzW!N~ut z@p1xRIr6sY(7>I%-aYF}}Xb#`p-L=nvg7dZHGwo6DK~c=`)e z@Ri4A?v~&jU-?gN@1YH|w8~N}1FmiFS=To-+F`$B=9v-u5h;!LMa5S^+xSEF#KCkY zL~ONJvbzA|$DsXtQ)otUY0Lifze1z9ljp>Z4eMb%{mamsmwgVG8%$WcM?*cXdAs}J zrDp7@y$$7)AP0A+BKJsEJaoNnre%`=#KuhBVMyAiBNa89~+WEQVD9a%6r3fQIYz6Z?Tr|=CP zd^_?R;DeC{5_CR8c#q_)_&fG_Y*f%LoC9r3Xy7@F8@A#E+4~po7{Gp0Mwr(BFpNbg zqjI*#_29h%b)2*DfLXDtz4BgxAcycW_N42{$oo2*=M84q&-?$;nc7i=xev8^slKQ| zYkl7pPRey-H}TA?-NlrIP*E+5%g-kfIo+v3L$Dt$I`ayZ*OG9I=6h+qGH7QrlqoRf zIATZ2!ShE%eqocB2Jg#+K(+KpK(K_f5VHjfJ+`<{Lm-^tPMi|WMQc*`M7zGjb>nx* zrXZ;shn_SUjlWQXXr&$aI#|I)Qt8(_h0JlJRrp>+aW4%)o#lMxX;49%@;H>;vl>K> z3NLni_sK@xv)9Lmr2!Kdem<9Qx*xGq{an$|CZUmubGkf%e^CN&aMAT2f6(IVu7d%* z^GN89)~KChADVrCM(*)5aMhtu43O)W0e2nlp!=S1e|=qig3j+FW?~*@=K%xww7`dH z&M=(4#V{nmiUw=Ps1e+&V0B%83@!X?z4MtOUwWf>VAF|_D5=t6dc zO9|=QMo`x5+$Fo`vq+uwY!KJcDO4z_aFC9^658m5(;1JTAMsjiLZ zBK?iG{e24R%YyZXb-m@taq;Eg9+70keq#6zUo{Eckl$rjQ@w=P4;okgISp!Vq5^4` zHW>5984vizrJ;ifkQ~7%v)ajHhR%bNB zknqn=WZoTGk>^l7S8chfUP_S$( zG~y#6oevkMz3zZ4BeY3*ZdW@pqw=T`Bz7YIFi$0?a_9$)l$ zdJ#<Ra0uCUUY5 zAK%L}=A#VbfbHc<(q2=r?`riI)EmLBLK#-I{*ySkM3*I69LCT>nRQ1;GmztfT+v%B z0a(d@E>l1c0(nbbagkm?Fx@-PiL-X#IrOz>=nlBM`QOag*cG~rVzSfJXmb0}j+2cs z*4Ar?sfl%?=|w4SZzEPtP6A$a^ST!D0094<(v=Hk|E za>vp?fMI^uHg|<$!1VX!Tyc3^k7B@4=6E2~gQ@DZwX*-l`+!|kzmh3CfxH=S$J?U4D zL6OCqSMzNkFy^w1VSPvw>i(oP^8xlHd;7xWhibdAXo5qRKkNrqlxeNCM8I96zxQ2O z)F|TaR=0ioB?WTsd&^Dsz`o7Ldvp68BDf0X54BVM#1pY+xZ@>Ac*@>y4*Z$}W zEC6@Y&P9LS_aDKmmR3t=Lm-I zXaC;T&F==e-JAkBv;@hi-8r!7*@6>lm^1Y+lCbB+5-v5$aqRg>fQQUX#2&XLEY#kE zfxJdv3o&LGYqgwf{V~~wWm-C@KKqj(xFw8r;zK)9nmVesXaW7{6Pagh5(cr7%`L;A z8}&Hl$~_HT#df4a|GfU^P#Fq*udXEvZia=X>3-C20E4!ODf9+4DM7_AhSe9`2(Cun ze$NE%s@EQ^XASkDmA51=XUPy);j^TY5RM(y z=05Z*!G5*2@k_xgz`ha^8%6H+V&c39Mf+wg&fmu{eMD>!N15lme|Q|+72^0QPn72% zik4ds_>V?nV&?9TpRUzliqno~C88Vw&+zJguT_RfPPTI=v{Nwma+q~j=2k$cK*uTz z^j!wXVznAD26kXM8K@5Te{R#%!<_Ya_83{%_6`a5)vWQgdl!%^V~j3$#w7Gn(quWJ zvcQd3IPmAwUL>>DlwOrcLY~h*9&LNNikutn4H}Bgq5Q+AJhF^tQF-9X19tOel>bit zW!S|S&+ANkKP^4e!hVm ze|)>~s-YVNgj_!_ud#xRn7)4dd;naG9?A}LS=XWr>lf?}(!CMV?-&MM`wz#Efm7h$3lFCCcU_F1#|8CBg@C4*LxX znpMEcpQg`w-z4D|d2jhEVBb|p^2_Z>g8HL`fojtfWOD}tDlbzuqtJ71>+FE@hh~`@ zU*8Qz0i-b8#@ zs=5%ruccBcsQ2eReO2@J!SzVX-ny#@5ZspN1`?wOhMSeW_eTtx_t-uLrFlMbn>G;$(&p`?K}TU%umr9P`Xm{Wk=; z;j9k98&z<9XW{zQ5Aw3g2|w0d;1bE3A#`Kh4^fo+N4$x0!~SfpTEf5u}tCi znLo(tq9ntqWIBS8!AD@JHjqdBOQQtAzo^@=LGOL*Jh*=!_meGaz&h>&Zq~E?xbX3X z9a0PF*eqzq^T1~aoPC&Ts2taeRT!?-RPWjPJ9&zjRpJr%0@YvtNO0lK*&DpFA6#9P ze1_V=T{&uBQmrAl#H}bXHL$8q<66Z!now$R1A1g%c;90N@5*+0%6A_6KyhK)eWzgm zFA}$Nr*kuoym=_)%;*4Kx$yI_^0^YsL?N&todGTirlU3qEfYBHe8hmT$TT(xxTKb& z4%apBZ>_I$A(;HrHuIO3nRu`JqV{>CX(Xg}B zwa#-Kue3bc>-?t=f|mjWO0Gg*ty)Tnzpohk?ylQNgT7SE2@egKxBa;ItngnG2(aHf zMr)WDI)bM!)3M(V01V_vvT@s!c|5&u%FRg+f<)O;rPsv3Z8@Cb(BSzATq);%CMRtU zM=~jX6s-dHqq3b*Z%y;C8RyPmg7*L>h20d0UhBcG&G$JR=7+Jf!X1b6KS8!4^O#LS z&l2xCMM3-^zJ$ie6i2Iih`2T^{l559kcnNh&+C+&!R*(atiPR~#M~E_*-63Em}JE{ zOvB%V3xhP-tqd8zI+F6zS$6H5Buyuk>6`S0lSZ!YfES3YQeO& z`F^vP$e1kcCLMif0t+h*yz6Zl#)Y@DT7JpKV>6xo(x&4bh-uj1k3G0}5w2Zk^Y1A@ zd-vw@3#n)gRx;6B&SjJcGBYC=CnU@p(e5At7Ja6^Un@ zP>)7069q3#;}hw=+YMai@#DuF_n#-uV~LU02D$@Nc(?LTtNtLUQ_pj9Ef_%mQ~npj z#kB&=bl=cCOsEO1L|OQ|KcgVfHH)=A0bEzhA@0#92Ix;}n?IKpO~SLOQ5x14N|0V5 z$6n&qK`buCZe7X-{YkGx9M3h3$KH2wT5G^Qd*`{hJ0rt@TU}gIgg{-Pb`hUg#bV^y z@MqtlWVjEpEVKxUj$lWbHN%?hMy%KSWT%zj3?4H*dCvn}N*vXVJtJqL5x4W@pz9E% z#GUcYxrQ$bH3vKFb{>H~sPUfY_%!%;{*XT_g*0QCnNQkO{Xp+chB@zkI_gaX|8Hh6LgIXbqaJ^q%9Vxq*f*T~>@@^;L# zB)k^f4+n#(Wy|qUP!efE82ZTV$rqoefDG?%U5PWygR8KhO3LwZw^}LZ( zVgStjtfDu5{y^g5HCh&O&@X$uExz z+d-HE%#PpkI0*BKb{RfDi&1QvdhsIpL@$E5Pyp!6^RA8z{o#ZsynFsBC@%j(}18v;1F-;^x+) zfKe!It^Z;ax3<0pj6!*91&reM)(RMf%GL@P#htAcFbdVJ6)+05trai|^{o{!io07Y zU=$i#D_|6wTPt7`TCo0$QE0=L_U8BC_+O0T{?@bpi&5zO^WA?iib}s3YpTgrWUdQ8 zbTik3qq6w}IR1lC=>O-L|6&vmx4r|6!r-4L8N%^@F$$xtNB+eq3W>}LX8|K1uY7PQ zaokOhPKle%QfK=z$0%OZ z$*Ff^{*`*_H?)wq=#g^MTfY?tP|S{u_)KArIQnxx*M@P8^RA5+7BIV`lL&4WpTzy~ z5QeaE4zS& z7w`YtXEl%QSj<8h^uP@8Z@KN?s4N_lG_tc?rwX^zr?-%q!4-q>?1(N2a<$F9?OYsS zj6AQ!_E0_o=NPJ-lCg&Ik=aO)^a!Zv*L$ue>p+=Pa;o#K^c1obcP=g?E+BTPpyjdb zGUQ4V8awp51E(~d>ncoXMngmVKEaD*#CuTYR8ZU~^645poHDh9Li0IPI;_``k$5iS zESLZl)6oUrQd>f_W}kxxj{)r!t$+NQOc^HZ&Bz&gS%)aP$JVLd6yX>tK8~5M4On9I z1>L^(2JCw3#VGZuMl9;A>wN{NGhWeiFDyJpu;_jo9$7;oCi#BdHpe}HcA2YG)3buw zcAdMvyQm+v4{+Mu{$7GJ>ZXq`dv=29b!C5yz#wXEyJ)=Af`YIj@sQWht{1T@URSm> z?#3Q+lP}oQpxtSk&(POahq>!beYeFyIcB0x=8vw!#P24<1#V54`<>8hm)$u?$xdCC zKClI?P;003A1fM|PD9*D4F*%+sxi0BHpQp0Ntm6) z+D1cYfNkzrhl+X`qIj$>?rfTf4;E0Jo*n4JmLkq<*{yK;*OuKFDuO)jeyTuHMFBea za@C)jViS3rc8&gOEJW=2r3X6dzyvh9Nm}w+JXT5+bD#2_MZBKhv7T5zs!jcNEU0}6 z)rKGW?Ys}hG1_n9b;e_n7BN5k-X`S5-_9Hw+Eb1wym}ZFbBB?4L)N6v?E>uCGeo!< zK82*|qTe`z3X!6e!f$da2G3eup%u8$ip05(|8e53K;CBhc6t};uukQHv~}rrY_|Hn zFHOG#Q7;RMn1ERj`>hN_-wU~d;`6HxABqu^PZ!_${B*2d=A^pMX&fCV$!ZvY`kY%V zJM>Oj4(4u%__XU;D+>Lb*E32e!{TF)_ek|XIds>IZ{dj_7NXZX9u(Jrm`aF+#`nNX znk^=YG7j7=@?-2z&vzr6dL5s3as@gYp5a!jG>CnMH7~!Yhj13vQuE2AGL-Yuex(XR z7##Hu-$^)>iP{eZWccOGpcIo|4z}TqsJnkGuH3R2i!$Xaf8__2ZB-gw;LApAWt-_x z4{B=BV~h;h4@R+(TGvD(v?Je8e&^wZ9PbT=SKk77hcJb}z@d|c30QqEZFZ>K4D#Pr zvpbKk6wGb)!v(|Yp^Y<o z7{qjR*8;jC=CEkwt-0$ZpwinF`)Vw03_A+ujCJKf4z2|ML5u5<59PXVjK>Mu1aXZY z4{*Z!|#59X?9}Y4DZyPvwgTRf??ec)S1rvzS1RFk+I(0*l4B_F#VbkGpB=c z+Ee`X{2nxkWJ;8qBz4;{F}`!}!n+n^C1h{G=dg?_BiAc?%1cqsZ=>cBxgyMAR#V!( zO2)~Gq_P${D5p7>tJQsH@u!gV)#}0-tS7m8=-s;k{44S(udxV>VP#%Bn%ctHD8s@p zVR0DCpUiXqWkAOHJBxK&$EUFl`KQhv1Z@KDWLGJ_A>7NB(=j{&`Ofps4;E`OQOar! z8@*vaT1mL~G~*Ps??d=5H+ZJtt78^lJgnwXd&eJ-SQap~r^)r2dI{Kp$IC%T0>)6FjwDeyM8V9@&xXVPG#0V(*U2dFzt z*@pT1zMm$E^HVf14>^qhToC1|C6d>n8N87tqNbuF0bpsJ)S3$$kBd;819Sy zT<0HWx?zv65fw`Nz;(kb(XX0`h?6+CQ+hGMcID?o_CJt^&cqy^S~%Q@#f3J$C^oj@ z#ZS5+vu^+!__;7zcLDII+3WK+s%wzYr{1Z@_O)m%Py5IN-8RII1C44tU~Iu=*tMKd z1gZf3PRUzNcts~7+$FdihuW)9s68#hLd^TyKf>Qd5aly@cJmW%?)ep(c4rZpNiwH@ zHm&FV zIEStE`>G^-?nJLoJXFm>{;KZc(H?+h#+>{URS4}T(c2bI%L$08GMnZ6!~*hGOR4)-4S1G$ zVtyBlE0lc0N4hu5F@d8@U+qsZE@a6dFI#>`8LzTU-v4dI+?)eeXO4nOBIW2_J_3ZR z(3-H#6;{KTIfKF*Om@|+tNK=c_hF``sGH&IP(R2^t#r3_BJT9HLAjsJ=mZY7xi>Y2 zyv<{6@4L<*JNCOfJl}&^`FQHBxtcb>q8h%d2_!?P3Dwxp`qj!%q(Q z)r{r7+uAM3HDZb7QJq3D2nD-!OjWma4*P4n?N1wnymbTOJ?|M%_3R+Y9E6aj6Mb@& zEIn;_jPh9x{p<|xGybT*mpFmnhRw=G^NeEisqqQx!}FNuoeWurW)Yuzv7Eo-$sDu? z+B^m!-_$96UqtR|#zt#JlW*+7Ts`8rbL!PhY<5iI=FrDByi&4MaoDaM z6Fg6zOVx_TmF}mS@BZn)iUaGFhoJoznx$?0I1$vjC+QiL)JVu^?dy%KnnuLC{>)v2 z0mgo3uA7*AYKO2N^XT-XCM?umY4GxJ0qSnQfp}t9P_3!5m?j&XZ!Eae@$`1WafUg8 zZy^h4?DFwW^G}eM`=*Mjb#W9?AEmKnT^&a{+l*T+Sc?&9lP3Gu4Afy_ewnHw4M;+d zjd~Nd>0>4GdIm=AI6Se*w)Y6MySX^1_6-7#cF<8hy&S?2k~t2Az8=B1Xq8h(A#9If zwOLtE7R<_1GF&9%XYe$2#3;Qhm~el2$dLf5@5tTPA4|k`VA`T+9k!8wauEnHrOUG7JLJcA!)oBEMAeU)F@#bPvc&HY)}_90NWi1JyS ztU%(ubdTcIppC7$-CDBi7h>|OE3{m%Mwadq;@c|$6F42U)84xj>y)w7J!8#5Da&Qw zJD}cjtp89+if{pw$jg5o=(QjUJa2{T0#T)N5E{(vM%*kF+a`l5u+UWS)yjzmWMk6k z_bMMkIWi1Xv#W*MK^$#OYXgeKOKFOhIfNXY*-YPDG_wUMH<3!DItjKHnKKjWlPW8xkATE#M z&4jNsf!q_=(jsA^dG`ozW{F|jYylHx<7&S=l{FX-zODVzl#41$nRKN%psr}U8#%vw z0Oj-g$YhcS0z#=90%*wxI|JU4`VcZc6IR|XI*pDK6u zX(Af);^HXps=}l<=}8Pp#h86=lY3`2G_y<4*EzFz#=kJx1+=#wH1TM`&E|AuL*P1?F?$fk$TCAcw`huCzjoK_@S6`s*n3!VH?snSG^v};OpJvi$Lk{>(-lgw z%2Y-~n9(3sao0UEd%F!s2++!-B>rrH8c(ImXxnLTsL{3Zn!dSf6~_nwU-y(zpK=Z2?rzP z#~)VU!b_v{a#jt<=)@5>T0T(WhAvSkNNgaTkp)4?c5w4k&wOPk-i17(o-noXHe>Ep z$9p>&Dlo-J{WsGO)hLvlqU&rHgQ@MlQn`WZ%8}!}qSu~SZ2EN5KO+soIW}9Yu2q&H zp`vw0Em9}89}}k7CB){%|?v84sLy4FV3I|G?OxaDDah z`X9t=5yaKtJdHe!gR0Lw0@oLw7Zl6tRZw@l)o)#OMFcCiidVd#%Insda(oCX>~~TZ z_RSQcO2@EC@oi9-=@QBG_3--n1#J1gwxaIt+iiS%$SAVoMcOU1c_i`SY_iPMB4Yoo z%(EB`@6UD%H(k2{B&XSJ{hnnUDPY8J9kZ_9mTxsIr_GB1?7bO)>v_w zL4*yup+9+FkmEvH)b{`n-0aunt&s#WlzLOC*Q|>uFwKcWoCeySw7=^17wF*12;=w3 z_W%cIG`*Plwhbw5^zbIVt%C5?;DoO)Dv?}HM?PzB6UrIeoh?-gp(?yW9ItW<(JWE% zQG8Yj)~OS_R-pvrjFapFELLrp)_>}C))P1{g|!-L*a3GST62nZkKlPWw^H{j1DMwL z=$ml&3Q(b5ls@(s)bVLd-@i8v;{m-EmFME%7MAyy5kDHo2ZcUd_Rt!~MilcnUUj~YAy?5gmP%gYyhn4fvr zS^7GdDL-}%v2};=7gJe_PxbJ=)(-0`I)S_9^8Nz9Cu!jR!D_ifa}h$9&RE_q%f?TB zYbEomK!_$Gzo$XA4vk%rYR&d)Mky2YeKr?5VH`#w|7WNPk@&9edwH@I$yw>J#^}KQ zTk)JHw@YRMM0}_{#`35L*}^@Bs$DmodPY6Y50P9>aAhS&1lNT0&eG-U^;lgc%b-IT@XQ9%C1MYl z*&jLFF_b-plti^3<-e{(F?V$ih@EbP>$tjTJ$E6fq}Md_Qq$1dx-XTBRx=Dg&-L9u zK8Zyyyi9NRg4a)V;q&>y4sZizY&q=?p%j;mo$^!w(3;TsQY;Mnxiu~8<(qIlfBJrMAhjBw2$+$O0dsk? zgjz;XS*Z7Ai}&0y2X$^}$`a?d0whtPrZxmPhmdE*@tq8Sr}`!2+ey@8;uO=F5d)~J z=!E7gwJMQgexsZ*=P+`tC$^tb1U2nf8hWavPE_{J;AAh&7=BD~`^QW_^c9*Yv?brC zBc-mA=4~fRu-TiQ+2?ToH#&CfOT9YuU%6;FTyDgIOUdRQ{fm9r2z}h#zXoo$`*4)f z-x4I`_oVHybRII3c(TwPorzQ0qolgs3y{YnGMg-DwJ7dZN{b-CrO)_uEr)=r`N|Q_ zWu0LNCz3Y#CJ!!0mk%=}AIL>x675&C%fJm}PUifv#}Gy)8D5@PG>3G)N8kLe594yD zBsK3tUlDB`jm!L7z(Xp3(DQ=RsZ=W%jyV4QH9FxPNM*gB4H1eqG z=^vC+X7lEQ?f_EHw>sRB`Ui>Yj_Y~cg)nT()YXfR+mT}k%SiUO20RwKZI75>3xp|O zQ)jvduh%TUxHnT9adQ}DDD-zj2yorT7jRo5%Vk8I?u5^`SPp%M=jew@{Vp1bs&odY@&I4@!2k|V8I0^4%S>xxo zAB2#E@6E|7V3KcGdnoJWPkgi1hJ#mm62GFI4oJ=%#AB-QWLvsPTzEA>*CeSHsk~kb z7y;Q7xp@6$Ah?j)1myG=&h_H4XPSKNy3l_b$fxK(4lc{wKHA1`o`wefxOFBW8w(|j z@;@WBB2mMWo!zTYr|Bc9$t$q$?9mCN(+xwk&Vpa-wCm9t6$In+hZBH!Jjr+WdHQPDHce%CaH5`GEgpIhD(n5!vY1ks(V6M=Co{ct_KLk2m{RrSc76vz>|+ zi9Fn@|mKi<`tYbnDX;bQAbOXp-=1ISErg zt9UnQ4Et8|Tn$Fg0W97w=udT|0qXM5fwi5Zm@`*fPHlcLtQ z3uJEW)_#qd7iVyArd}ys_AG8?H7hwb2O)keoeHPb`*9cD-4HbhAL-#-eb#@Bj49c5 zw%bLKF+u7VRYqU|_IKI7XzL4OAYjB~vU>lqDBo^MS5VAvU6z}pl*MC0%FnD9_6YjAf zHwiu?Ydlp3;lk|UlHVi1%`7LpXq5j=C#lw0i60UPfsqc6gIe#LX zDvcLy4P7W9{ubj^kxf+JrePklIETb5q#tm8+H!Sq*>zs$2NL38sUSY9h48fr54MF) zEN)1BLv#VKVv#5LB0vxo=;sCYpYF$s=Ki-8oj|s?Kgnbl;8XSpOmmE?0@RoYztlaRJ+vggaj2n8ZyAb~S|a^ldY@k>?vUyT8Boi4M4w8xG$u zcLTi9`bW~?;sIPQE?pTt4*jc&*5m^eMEtkqoXzc0a6eYaw7Gu>`uu5EokU$hwtgg9 zLFXX!_tr+A=RBH0rN4@#O^z}XxSaL3S z`|vs6%u1{uNq=JX7R;Fzyjf+h_h192`)&EzBba^YmHIoluN4Nb{`IV$Mkz63F5Mtg z^LI3^KY0)ORwChY#4in4JmTiU2bNCU9XD3>L}v#YiJ`46d)oB!qs& zK^XAGSEubct7fEBvm2oA4SZ* zwANy~`*)>3+*pS>&fBY53*m_UDe>S~RR{LI>L$RvP>pCS#wfq}?j#UgjdQ{*!A;b5 z_c7hMTyQ<E#jw9AdHk@j0o+ZW=6^|N1o@HR=f43W<9On{K>7g}GUg&oPP`|BJGd(jJvP+@ zA$F}1+0TZMk=;e@3dvTi8tu>?)IEx0oXf_FLP6%iZNqN$q7@OHao*RMd` zT)J;le|jSUnHvKPU}^6y{qiU=$WxD_|6sTPt7`&$m{Y`0dx zC|+!>fKj}J^p` zxicL9!6;n*^UQxS3fHag0Hb*Q&y(EX_`ev1`_?1>ViXbsk|7d}-T1iZyC?BqNm!KE z-aN7p+z}jEUY1n0;_lW3IyR*)tg*IWmgq5n6&n&$C;sNSM znVU8~9>JSQb_D0ab?-8)(d znLpjfPe(Gs*pYPnzPf>QF1F!)q!hy32xan{EWVrdNax&kPj0G4Fpuk+59$EwbUzcv z7xNM%A^w_DwtWyN(nlKdUmDOs-ZoAo(}82mc4-!TZbzl9mLH`}pv_-MxnrjnjLSGV zXj?!{=euW~vDBv>r5tDc*fmZ@65rLkK821VXL)NG(y?XK`uQHA5lkD0PE-wKpP5Ec zOGrT9Xagm@ypxxF6f%naC1t}L3sGzR{)J@_`6OvgjLM znvvtJ4_xDLStC7;rFv3ai(S1G)uIN+Q20uP-rp~qh!~r8`{ZIDYH$0>@yHlVf_pNX zm~NKg*-fIrGgok5P!05@l7h^0p)+HFx0)fe!pZxS*)OcL&#`{KybRe?d)+GOhA~J? z%0>D7-{{VS3Gr<#(3%DcJ9{EP)hNU!msy>FiRU5|t2?S7%k47vQ-dtbeTlte{l-tE zKFM@F0sLuZrOllsDl)LoP>JHlwLwf|a?P9wg5N8@EW79jpQ8j#)~m8E*y^B>hKRy4 zQsUMKSpS}fp;6cD6ASGo$J4qWqqDHe^@9R8x`z=dU&;UIPz{PfZPQ+i(@5CzLXIvy z2~kY2%~$ZcqewqHlGac^$+Z2+l(=S;D z)rjM4-+RB{@3@^by6=<;P|P#?FKRQ%AX~u$h?m%l;K2Zg+9YjQrMv*!!3h z8P2t1y^hzeO)iivH`-`kc%mF}U(e)T_0PpaN4)Q3p6W+0Tp0GOLfC<0MAP>fcgR%K zYYiIfc?T*rGnEwfYFrqe7kAS+6q(&(e0G~ug5{QOy;pcyjrJaJPNM$Uh#ajpRosR> z(Jtpp3OQFskS7<5ZR{Gf$J;9CmMXik@!_#etD_J;qrpTO%2$Farw@ovca~!b(vkDV zpkmqhEJ;!7{Tq$RGJIjp?M0#do!+^h60q;GWY6bkBusnBzCkLo8aIEZFBwf7!gLNb z4)3W)u+P5fQ91#jAM+l>Qy+xvG3zKoAC%D~4YmQ>OIKd^rQ+5PA+DeeZBnm42ii7%S4_v`8%)PPYa9bDMOm|Tv8 z`Wi$pY7;R9lXni4;Wz9%R+d|F3(9j*JFiI9608(GY;g@T#*JM1Y<5^w0<|j5m>Us~ zi9P)LG?a@mqgZ%huP=;q(vs#yfg+Zts9;W(fNZI=D+Z5#w_|$U%C~V+19;&e=iq~L zVDjpJV)WNGpcb1VR95&$@NFl@4K7X!PoC()#O1n& z&Sz@@D{EL;{R1i;n}mKljZ~EJEAweC+W;QhXuC`9EJY~-6j}Odb*M6$XTN?Jw4I*j zQ?F8jIcv7r1T*Z?V#J)r?(WNGBWZbveb!}zMV>uwn}Cx5=vC+QmIsujLf7^Duj?GN`#!JpJdV#H+zBS8d$$hUsRiYiItjvLhA?l)WlVe5 zL!{VmHcc{OS+)=rob$CB+{zycYkX9=7hz;l zx2eVHpP+p0_e^a$9P7VO3|imYh){C#Ib*Xn5ZcDc%fW~;76Fy=%^by~OT;*5t$8D? zd7dyLSvUbd3f6zOmqi!6kJ7eg{(1<#X3Kq;9m8v)o6=YQ76FamN88DU9%zc6G?k?e z!M=5`3M+2)LF{wphlQ4-AV-ai%{Co^8jjjB4t0bp3T&~L6=(%3@8;#ICrzLidTY%E z*JhZ_ohUBXYJ^XBT^Bq=>7}*8=oVB_c49N|l}n{1nOs<_tD44y?Ro!8@*$J0P|mq4 zB(8x9O@Zcy!5k=aVdozj?5YPYdG3Q_d=dD2vuSR>+l1N0ldkUWv7k8Ja6#V&&qqNg z%45SWFo>1v(m2)ta_5#MWyEpZzER!vwPQVK%>}4meSr|Tg7jyqrd5RIi2ZM^Ii$}R zs?GE1pvz~@#`KqQAE9X(W8G8dhH(48*@w5pk^FnK2_2*1*e-Egh*2y7L-~X`h5;OZ z*}T(oVDKgnt}p*gHJT^YlJ~+!Bt{5T_0U}!no7dgpDxwfjv3P!ek@VaKyqqnvo9Ca z1J%Qw$2&I`My(yDl=&LrLPCcE^M^ScGaL;~ql`h62K)W@U;2T`I-%d`@GzX@IeqAC zGP=5pUX%L^JrH&B^4}cAacqYb{YiX?8IO(hPj5}*->+k*1?|yVQhsYv^vcCT;G(_w zCSW^KG#=EL=v!n$%fSsbffbmY%N2e}Jp;GN?6-xcYLpt+Zt``-ri+7dw4q;p6;n95|YchzI6l1^a_d)oZojluuAuCimHL;P0 z;V>%7`)yQkn0Pf^mCQ57`+ZEng{LYA*F7zNYHur2kJ45pX8N!lbs^yIn>?7>>^F_uhch94iS@@Y}*zq+@`JgOXPJ>$(HNg8TuG{;Xtz0UXnJ*v2RbUa>wmD zwT)$uZWTm?tI3Itqg=1+kj+NsETGs$p31AG5Qk+m)|GCQ4_>)!w6UuP)C$kDvYjmf zuDH(`0{8n#2Yb)3eZo8m3>p;SG#?_>^U?hMNtikB!Z(?iUyX7X1CG@BQZo9@F{Sot zGf}uhm3jOI$EP|!uPjG!6KIUHJI{=+IGLvQQB~Xq?~S@7=7D3Hv!ze$qymVLpmA39 z$S^67zaX?U~s_zlnj^k>ZwVD>1B!*DdH{VS8fZI1dy~jFvZ^#Y-kEll%^1-B= z`{zPWAyV27rJb8*-$xUH7isQU2D06aW(zGEhO z8gjc|ZsWoFJU)2G!gwf#!Z9?*Jj|#B=lqWhUNPAI-F!)G>0uKDO8eIGRbzJdr21vM z;4)BCua!1QYXh&l>P^D9?UiPDNcqee0Et6o$5z--7Pe0H8vD{HF>H7DRcr4fUR33a zQ^$wMY|m$BHi=3y$;5VwPZZl7ceR&2lS>HOnxgx@hOOwLev*0lTQa&QmWw7?zmswK z)^$h9mdNEayE+GdI_W=`Z_;e^ULdtAD_=eAe-Tu{vF1gzlIrt62G<$k^)hkKEtT|W z!uBltg;RPiq3{>v6_i&K$$df$n=`N-;gHo@-%Np5bAzS2c|#C%+woxt%6X{QV)%0= zsv+%ufuh-kLD;6fPipYuBpmBDy0E!y9CZArX|+yG!1s<5bpgMrkTEiRl~Ww4cpX>R z_wDF}sJKHX?pd_K$gOa((~~IIIDg6iwSO~A`c;QDzC!nhs1fVEf<_`zU;A0muAHcy zr{Ue!S4Nn%0(uDxhKA)+9^4YmCy6TD8QRw?h(Vmi1@2L76Eq(AZdQ+N{10o7MR#`+ znmq;KjG;xK=6*5IC9RBb8(YW;DCA5{izOrtAGuUnU zY#oj8V-kGCS8sk2x<>aK{=7U4x_=4##$PC_eZ*^Y0bN&|%6$He<(*JFWgcIA49B2K zw`BY>e2JUjoorf%DN-JDjj!DsLwMG>+|qsWPiEdC>bxNhL#y5@nOLNNL)o!h$_nmV zPESWUHx|O~UHu!~E4qlz*=ySkHdm9-jj#gn3&LnJw_#TcyxU2J=#vs#ki6p|`OAOLmlR*BL&@v2Q@CLs^`( z-T*L5WO-Q}McDVkeM>{f6oYRex#vt7}U;lw029ZGD^%jylH4 z0t`rDc$t>b?rH}HYU{3jzgz~i*Y~<`7~r@uVeO~>9t{7GH}2YkZ5LUE1<$L=NK>=s zica4$1hvT3(Po)|(X{vj$FWTnJ9FgEJq&A_vu@vX5veoGJ5LM$vB(FWLmKof_waps zm0Q*JIl72M1O1eC)PjlIM^iDRztFJQgvcqF!Lc=ThwtWhg8iGcZ(n=XY@n&*KT6PyRxEB+eiX; zU6|L2A0S7}iwY~4)=TsGboC^s<9Kf3=AgrY4ie~mpJhq3k>tE_-X~Dn3Obeb`bXCf zW4PkGA@M)M#D8gGc|7eq5jde-LrwWf*u(@?szpZ#)3++_ML#M@ym()n0cD8N1Dyhw zxg&`I5wm0ZkPnoPV>TnLD68hkh{=nIB$r={aIyzthIi1nL#}UnNq(lC;Is4F?)GC+#^%+1$Db`!QM z!>;qrRUlb3&Fyn<9$kIKws#`?h_ah6M{eg3aTsW77=ac-wKj`Sd|3>J{l@RNZA0q8 z%(}^-TMeWkO<=F-n;)e3s6=S82%bkGwTy2bRHAFIceS|7ofy9Hx94NRaDvW)N4Nfw@vk2QQ(!TWVUJSsP*VIp+k;^l{&6(6zqTtsG|kb`~hVC?h&5ZEr&O zfk?g0KVsvJ;Vrh*xl9S9b%xp0v_T=byq($hBdia!w46GOWji6FLfvF_6#ErRYGRj1 zdmxQPTG=jh09H1vcs#s^V}zT={5H>vK~FkT@O=h`b_vuls^02{okF^kxe}9*x1GKE z$L3+!9D5}E!Sx}eYsoG6b0gGO_tcVjLju@vM>ixzqU@)MWB8!_V-OnBW)Fh!Ti#4`9YMsD;)8-Asbvy@_+i;siZ}cZS^S=2c#ECZ2RXOmb3$eLD+3|)#N+L zd;B$mdwH2i1&ThAoEgNiljM7_`b~I>b0>_u=LpS$>eYkzn|{bMGbuodhg?>3Lata3 z#`LyVsE_W02{-z3UO4H|#)Ks8M@VZgaO?2nGC!Wi* z$|p+;17degiiphzszp}-$}%Fw*?t7#*i@4`FlL$xRGVejnK$@%_gk%rpUDH6W9h!p z%oF77TNxuEb(Cp5_AvTYg8h-!&(~POB0()N%%AHo_CxXwYlhySY_sg$1qTMaFY<+H zw`@U5VoXw%@l7hUo=QG39f{-4`YFbUifUL=t<7r{LOPhG&C=xmRo z<_WV^J4^=;-&t3FYJtQah|lHtJWN{NBv?dvqZ}qHzw^WGGNMLDb7)NhzORfgoA!MA z7aI6>>f9fc&0Ppkn~B6Qu!;RQrQYPjNujw&Hp4z(2-)hlX(!gTM{hlPF5QSBy+-^z z`|OF$Fr_~0M*_&O3D1`2w?iHgJNO)_a2-~uo~1ZeaqFPnW&Wv=guW2qw))&jLO*+d zjnPdZCfQqi?y=&&b*;xpUjjn^-^yPPeG?9$>6?RlXEEGi-50h)yKwybwQuSCGS-(? z%kJUvmLPqvfH*R@fYrM{n%?!lNomOmf!n|5iGsFu)3=Of63P^QF|)lIs4d~TFY?j| zm&=#FJzMGs^-b0jC;no%3m(2mw{H{T`0?`%gmi$?Bz2t|Qs0`tujaAf0WE^tEUUlxduOaMN!R_er%`ESb6;;M>pj zX_xm9SPIHm{lF}8H+A!$suT?O`P7^Kb!rNdEQ)uBKNy73x$6tZ*4Ja0sc(4i=0-5L ztQp>nR0WD1S4D_i0UYfQk*DlM8(H&n z8Y0K6HgWF2AT;vYTnU~TM7iMCEtx54Bx-tmY6BF3)PUKw9X5C!QDIn6$NmkCgQP)^ z@dyQjr18=C8cH_w5jpx*`8M}BLZp{?hK_O9ie#T%;vL6DBFs>KYW8iY>F8# zro>?V@Psk0&AAZv?pZxpkFVe8ba7(%`#y-6`tXkaJ%%c7e4L~uSwl>2{!TrjUkp1o zeRjxR?IKB;N6x4y&6Cw>mIO^F?E8e~gt;qNLfb_3^NNpDvYW=@`1)}iTQ{G0xjXj{ zxg6x!;#m0|Lztp;AM4}$NTRdV5LSs+#Gk&MIKDD(>63SLrwQAmXP~gNe*`nhdY3eaddNL+AAIU{pus(gvy@S2PVff&w zX_P01^3b|{jzxK4-1bEWW2B=U31D6Ci1k&R74LV;NTT*(CGzhm?iV|rT|Xu_L8?uS zzqkJwCX^)SHx{u7FP9C|J1c{A;(WC~kG?Lj{2nQ+LYa7k)8PYrd(hTdMCQz6P(EGt zTKIN)CiZ8l?px#{^-(aUDVZdY;#-u1o(bI~$a9Cr)sQ}5W4@;&U_74OM{uJE3PLg`kx zk)|9NV?79q%|5!D<55l(6&SJe$pCQq-+k$da!`}LclzoE`H(iY9Nk|&3ipqn4pKDh zhrpZzBCIcmpqk+u<#SmtaVgHqRWR*^qgO+sJyF&a)xt3-hUZD5bxw)H2#%+}H2H&X zJF&V|>2uVw2<0JC=hh^|ka9=Xwm~tZDtMcI&n(UdD=o*S@g=lLUTm__q<1FN>W4GY zexE@`-~p{&J_Y3qcjT{xH4_2azrW_M6rg{nEMXJIa4V)q z_jald5~e?+@Od_b3G3~NbMDCXL;ckvG!dJtq|3zd3 z$KBb^bto&%+8n6g>^4V~rJa@yB4&sg|B-j^Gmz?}KdJ6#h2iV2Wk25dPLrh*Pb3BT zI|)VFlXh&P9kgxA*k=2vKruVYr5;!a>&lgEa-D`j&9$>`R=)#AKk98d(vR12pD+`$Hcr4i0i0-PHzCk528p$%Uaz zU(@xlx_N+|DIOUpk9FIE>N_Ko70G?~disR{oMrxNrukL3`lr;j%I6=68!H5=YS z&0#Qhv7fGtMOuZW{I~YVQFw0eIZpQnL%bc7j(xEjhgi{aevz|NAhiE+*0Bt%`%8IV zSY7M`i*9%0AG0G6Ngp-!6=gwfA`gc|3oy*;W58{~RtrfO;G|O53oL^5ZCfx*rn))A zUZWdB;(d>IY{&k=j<@nh546-m=nj_5YkI?If2n`_u^#6`-zskusFlGD)AFIBXCpAK zC&sQp9fT8(J!#+WVMxW8DGzT*FXVr4;k?y|bPq)-R%@0lkPK}!wPi*dQ}eRU>$QX6 zuHZs>@gBpHk}BQRc6UNri|4K&voW+c_0Obf_rsI9u66;5@fK~MJ(sG zlBn%)zp$>3_{Kwh>8An`VXbI&i4$pzDtfKjUuuXA?HA-a)DV$tVcnCPuC;O@ z7MumgBr-2y|0htoa@Q%8aeLm*&}`~~yv~82T^!@kw0*B>DxS|*Yz7^!UhM}y`%_1E zMPtAJbm*PFO6=E}d~)`*&LJsH@yg$|ddX`ejbjJeS4mps^+qNPfunj&9-LK28;P}M zR_FE_GP_n#^)ED#jDii%Meb6N7P4HkhOZBHGx;n?B{u?#zI4H)Svv&(8PxoP`{#0j zd2Qnf3X#sFJN@)UB{O?B66d|l1N$bO zIhtV$Gu?7>3zfVO_yX3|4d50Suh;Ka2b8Gr-gxIm5K5)Em2`Ardcwrl-6rGEQk8V) z!Q=?YD$a$?D-8lI&%nX!aa72&yHRpIq#GK}c^TZz!#QKcJl7_l_k`xB9b=bR8<~yT zpf;|G{S6a|r28)Tx)ki1`A|{|>*Ti5U-m%RxLyO(&4MbNpP7}k|q9n^QKQb0WhK!C@s9+a-){Z;z^XL#zucqBBq&9#>n2Jqk7Rtr7bxrpp z>2unVPD!P77!>y1r7PeqB3?RiQb)%dNz^?VooCPnVX1Q3ZS2En6S04lu>y6TTw>g`ENxTh1b6o zWfb23R+Lfr{992*@$uh^G78^+E6OPR{;epZ@W=JPGKv8F@TFNG9{*QH5%lj_|0|;i z{?BLsBcssTx^?}AEAzxG1ixr+7K%qjvoJjVM@A9;KhONHjN;S3&rn7Y@t-Gs#^e8$ zQAGZGWWE`8=R7Ysm$-Ae%dyLT1uo3rwaM*I@ru|2Ru3k=M=osTdS<4WA zO8-u52Nei@j0x`}6s>E|j;wDbI{2TQPADU85oaRTj$oGDii)=R!YAP1y!Y^3@DMrr zXL~(&0%k@RUbAO9-H%}e=a>}I5#s9{(ZA0k8$xMTi}!p=gGuR6IP|TDanZx=T<2RM z(R23l5Ce|;FOJh|O&62Fg+uSU+FFQR+C9(bBE!UvPJHsvNH@Z*icYbgMRoDL^Qnos z2-&$S#9wJ!imd9VM2hD$}1qbZ=&x#b7_kKeihd zjB5a)=(n9lc6fQ-t6%JRH5ry%FO*!;pCWBu)JLh8i(&rn2isf8gT!V=HcE^?7b29H z%IFd?^JW4_$7V+SW6?3Q;~FimfuL& zip`tmQqc8D?a;9Po`G$L0t)Ac36ih#JyVW-iR8;$vasrK5H!6$Y9{yg%QkX zDwmaK+MS4HVLJ`A=R`EPm5qK@sqZCPj0NEf?^{5?ElA{QFS@Grw^TJM)DT~pnORnj zVsPUS-17xhYxzD2nI4s0aKV<|N0hMv+nb+DFBYI1zBtcFEV3GGOsi`LtK5L%DWF7s zhwVXSX+_qY8X~F3rZv-tZ7%~?j^v?a5_RqJo)`>Op_~*6xOk|a{NQ)p@@WCHlYefo zco2gjEkUpTgq=?!(jO1*9ghnE$&-3NN23wO=A^o(mJ13r9)?R_LeQQdppkyavmQPY|KWIrj+NiPAX zQV0x=+3lr_P(u3D68$Pvi#oX2S}CJkDXMAH!y<&>s%d2$G_ofmQD=l~D(W%(gT>c! zrU+hbqVOi6i_hVnlfaKtD5Fr+Je_2R?Tha&JN~ej!*A9tfBkWLpEpP|Gx)9tWW0j= zoa@mAU|BrGklzG!sSnSYIQGMq33kZaH~}v*@5L!$=)|FSE`?7K?m2F`XL~Nq7z{@2 z67EqL1~!FQD*>eR)K<}kF={r07LU3~rD8pZK($+b@L1K|@7zCX8s^dDEJ_9zzBGoZhXQgfbz$%6ZGvUO=s5zk16q3ywyg{3;eT zMchsq2{FDeB~H&j&Gw36_S>U1jKe!xfN8T2gyH+dutL8SWk>ui(bpfzl#dOdy&!WJ`ZGNTb1_2lcPW`y1H zz2fj(hvTxUwMBnT%=@4^_;p#l`v9AsPs!|y~bOfW+s zuMRV{XJl7IYKZiA>s}7F8j$PwOZR%Y6vKZOw)&s?LC)Ip(1)X|x$9EUt`l^vMB3%{ z^+ysYn-cy(FTDH=X7e_6+|@_}GhOc1v9IU~$QY5_jjkx^>RvudJXl!CIulhR)qewM=)={eW;C{Gii;SKnS z+X9=1M_f;#N?YGNVpyNMA68t;{+QtQd-j>^LGLQe2tC%nwE6+%4U9qxrb@No;<=^& z`8diS%&3QL(WSAd&h+Q~*&jqMX8DU}ExL$zriOnA#r9f*7;DA;1+r?}d}i}B!o%lc z7HhWkLg3~;#wp(xnB5^N@u(2Dbss|ok8mV{!}Vb{skhiBU*2zfVpkg3DAoRM;X1ZM zZ*8bzLCBueTzs=gZZ(XC8&va}H^8cL)r7hZwgWYO%O0h}^S#ph?Yl(`CGg`cW!YUu z^7j>#J-pLF7!3B0X&fIUG@hx(8+If^Xxu@ouwe{uU`Zvd!HJ-ked}hyVj%?DD>F`A z!}iGpm4W-YE0O)atCMC3!QI1ptCYEw2Bh5V+s_`nOAIw*r zB7!*Z{k$fIAtbU3@~wxwk?ajDn#(L((prJd%ZT677Ta}ZkCQ!dIFw5koLQ{K`vbkL! zXkH(?VmjMPq=fF}-aOR`Hfst3=T##Km!0K>1S*9@NE9F4_Mi`9j(a8jUd6HHC*$ez zx1msc+2|ZaVgOyIGT%qsYauGAf92h!VpuJz7U$<_1D)7?FW%sG$1UXj+DnGDBzUOm zi&+7}=!SXdf1k?*>i+uWNfD$fHEun1%({aJWHyW>a`ux!(M`O?&7I((U3cZxZwkyZ zMChytbdy9ubH{s{bwqN<4WlYXqzSCi2)r&cLl#SJnxq@d5VrH1KWxp#w*2YuMIREY zP_`l2yL~%mtWQ0nHpq+<ZDaLk+@#hl{Whz18^2j=I zBXlj>X+QNA&IZHymhOo6NDnGm;w_1ff~c?~E2@VP?%yRr|2(7+bj<%wx`{M{f|`qo z;pS|xVKJ}GZNuNAS87>bcAgA>-zJ}IJVtU#HMf02d76&W#+;!8c$O zyW4x~iH5I@hf^AclZ`gUR!oIMiq4GS9rJFu^KJi9oLDQYde3SJDIn~B$HUUY6)7Mo z$w*ICN4VX`5P~N%!@ExI{7+{kqJgLHl)H01@Q)%sH z7}k)eH7oLOTa?kI7nKicNNx?EMOw)IO4d^^aopWlSG4~+(kZeOAKX;P1DYg_%C+s8 zKn+wM5wb{ySC0=wh~ijLN>oR3G@=PyT$envXK}pgaZPwXjz5Q=s(bHW#L&IpHXmw? z>ws-Ii}%LUOkh|u&G}^s@5}Wu=jL(Tuo%Ukz>n<@!LK%bRZaa+>6z?WgtCEKH|Lo{ z?~Q@#)^ppmo*@*ph1o}#jDd@`!HC3~dgyrHZKEWCR4Da}+jq7#LW0|`2b%(@P|euz z>U&QO@GV&H0FO54qT}S1mTUoOkE6|jl_}uFus32W(r;wGuX!N6VSuEptBTx++3X5t zpSB&mJW9%y{L}C5El22X_x^<)UD$>;^>g?7N+|o{8dOlmlV7745&10#+*s13_F2sn z*=_GKwK*1vyp_4J808Prk3w|$Z_km}8($Vqmn@P*ie22!^+?Ns^IwbDdWntK+SU^X zgNO)S{Iv`Pq>J%J>2I^W>T%m}Q~jYSDG4MSJ8g}mK65RBuxm_U26?KnP}=e{PR^A+9vo6~AaaKBMHJ;|{T$8gydNA}U7 zd|B?wt~WjCBJAusrPz(Kiu_v}RqYNE-(C72zTCie6IXj&_Mc)xW$9dYEBHpLEj?wg zls1x4GR2|C-whn?9|EMJ@p}HW?1|zJ~vF^*`?DLLC8LdlMyhK1Ngl2kbo_mTRo2*|tR9~PR=zLGz^Vv+8b`gE5 zU5NFHw|IH?$_EnqmF&LgR|(Xo4_Lesdw@&hmU=a|f8rg|iZce#?KOO8Th0b_b+by* zcw$zv$B(u59MA=3Qg5o`QC|%iT%Jh}EwCQDPKGD1cY#SRYrpfpbnxsaJsB^R#C`YvYB%y?^{u0{X3zIbv%hnygmK{SWzCGsLe59A` zcv-G)yhI^1OARYW{;B|V`EY~#r92|!VpUU>*H0+A+IiF?I2LT8zsnaH1zZM3QA<)8 zggHTiMdZ*b5zr7;+k*B9Y8CJ1SRs@HS@mg(q&^~4iN-$|6NO{ek1qs|SCO2vlwT|n z{p8Q1iKPh74bqGA>u;ayM;Z5uj}BXQH;GzO-F`>6o(LTh7B9_4de5iD@*oWRh?2;T zVw@f(#n+aZSJ)Sba{Dpe0Pml~Fr8e;+d4=XxRv};XVJ};%JKK)I&%V=uyiaBVNchY7e}PE=;#qA{t097{n~+ai=Jy=Yd=rf(v0 z9VV>TvKNSf@>?YtvV>G5>vx-PH4&O0TPNJY?8uAP>jTmp=E)BBRzL?Z2lQD!wAh}IEKoy)H4X8P; zbP%~KLT9I$no$OD^xl`C5-575w{|PGX)mm@dwfj7I%4Nlp`RXD*VGt0#&vf>ifKlZ zXdqrs$M{A5N_L|h;#&)FWMwDP5Qh{Ug+7CobbaEA1h%^?hG}JhH4!e2suOMt=+eFz zV#9a8h-5^}w4WI(Ac1_c#v%RK7qMKEE~)AVYLSf@Nh)nb#7>KKYAh4%a)q61CWc9@ z>-$4VOjxg(Z;C4XgmjEk@>GufA7O{bAg8WRBWbv5*&T@?mUk5&_k7 zmhdZOgp8h837>q3*OyBM#y4N4K;$e<1La;PsJ;Huqn3m}e_l)U8z20=#aGgey-=38 zp>Z|rS18K$&892p8eu{0YG^Npo*H`XRl0`zM;(C=wt?bEiMTxTf*WaJ(ke-(t3q># z!nMzuzcads$n=(rzfiVD^M+mQs-GJ%*}-1DH!Bq~uGyb04{!Sy>hnQ;BVL!@r`RiD zUxy}DOMLW1Dg3DY;OHKPVZEHTyx}Q}#DJfAp8Gt8*Z!>=tkVnuS(T=kCi+UE6RH%b zj(tx_<;-YbNANL`38}7s7m8vo<*j_u088XuKGc2%De2 zk0KXR7B;(_3UNq={IPPb8*W8p*(GyxR084I zB%HP=Jx8c*O;Q>+lfjs6Sbmae2%N*dKBn`>{;|)wS3*9eAfsL}lfJea=7-xy8gbl_ zwDs{isTvH|8@|D{IDq>to|T*}Ib&d?`Y~uGU;x5t!o@Su-MwWwJGAc<1r(o&1my0< ze&898AX_s((BjDTIq6LaC$1TkiyXJ4^R^(p&bjtdRuGu1sGYrM(nXGH zsJy9QMY`WYNzvA~vq(RIy0^KZM5M%elaWz3p)mVBTVDIuOg6~B7@-pYrFXC}G@zThlF=BqQtLE0xCBp1HB@nxSwwPq;SLfY3$Y`uX zPh~?jsIhVeysvB~5tm+Ryr7u!zW?a0uY@#G z(S&|F);cC)J;B7;Gw%V3M;SC8nPO-gB{h!I1;e_|iH7BM*CADNyvegYf-LTn=c_9o zC2a$neEYe}fR5gEMDx%%(Xrk8BYR^e#LC;uRVbDri1V<4?~qd?c<$y zMB1DW2i=ClMT2DW@7{(Iq+gpa^*G;QZ-c-~L|#$=@2iv#7i+VVNPMU3oFfwzska&o zX@*5adY8PEIA0@~WIor@woD~9@;9b36gye`Mw~c>YBo47gP1;XUK5=&XF4G9w^%`Xu7rM%cmvLi$ z6Sl;^>Aa`4z}b=LlFFf zH)FmH$J^~47Z@r#pmyQ03-2MEW4zIH{T9{>alQ(}f0RDB`KB%p4gs5#lyYlJV2!rB-eG95c$xPZ?8GH=s z0>&fU_C9#s5ntu6N*e-=eEA21{Ycd!Y3etvU4dbN_Bvtegj33FDSIae!C~fY&tgg^ z(0?%6cTjm4j;P(}JV-&>YIx}R()}YKf1{UeH{BSl>uZ{&Y9oc>nf{f-8>t|=CujbR z6xt*9zh@Ok+U?>;fowI)VXQOg8<}z%Aj3QN{sDW@xZ?9wVA7PMH$$~GzeY6aD`pzrJ(FI0B3AnqAbJ)AjQb7 zXZ%w;hSOSQHXiDPgLKj<7ENuybt7Qc?YwFT3{ap%t@Oh8&3kh^vj@SilVw!~Fs!6m zIFvuT2U>d7@?Oc0z*2bdsS#cb)0sK-cz(4TLy}Ugcx`+@W^3ndP72BkyRD_!P6M9D zf)TFaI4|lQe9BmL2M2rpO|x@5FP(6-`aHCSL>e>4A6HY8l(R5r@046 z+jOX5VqhtWefB)-oGDU=3N#l)k@`r#owp8H20`Td;dYge9bh6;xGw!gHAvE1|DKL5 z#ZXmR+5;ET$naOD+0Ms(#Ek7c(YdoqWab~g-Bmn`;fSx=9cc0I$K?Lk)wq%Ds1Xw~ zwMSX;8|&WbLnR=$_Ij6XEz-{^=I8ebndIb=luP`86pdaZtl! zr6d`gcP+C!Gc_VDN2zJoNtCNaT?(g6=8-y?l0zG{vEF=`mh+ZA1f&f%Xc$X z8YGL5d_U*7xji)`qDo44k+mJVDoa8it6`md-c?1HBM2^Nyx;fu8eY%p6Gs))(Kg4~ zZCbMf3Ta@C0YY!hl^g>qCNIh58GK8eE*r6oMcoH9)hIM;WJFw&vekJ81i;( zAT3`~zOmhC#@{y~*WaiHybA8!{!Z?mpSB|qmSKLw$!G}TV;$`h zlm?)`sL3iVxDPmF3(lNUKzqK5D2-b}guF~?y$`qtWxx3S4w4%H>pTUz(u7No0J#CrHvr24Y z=LNDhp&c4p_47Nt;YN*iY7Ex(6x(xsan0EGvbkiqjy4kQDH(^nBP_t{x2VRE#U^k& z|3jHqCKHOiM|n0s!hVn0Y}x(o*x#=g-YWLI0y0j$ELCdigzIm)p2b{5n%mEoK$qhK zkpK04&^4pagd#6gtNs(^tqW_kEUdo#eJqFFv3|0AO)_@8I~S4L6z?=zH96#eH(#d!R`GK!LakNj6gu_B!u zE^JB#g~#V(y56>d#{J;ItP>bwLHRRldaV&^qnGaN-i2dw7mD39mJ5cAU0k2mwZp`V z$a+`iUhqpDpXSA~m%VClvI367b$Y&zFdJ7u=Wxc+kn#c8+kEq6?Rs<%tZ5&4h^p=+ z2Sl)jwt=@qb?m0!gOJAOw)F1l04(xFShV8U;^}aWkPP0YzYj`SDsgndv)dW#f1v8> z)zcq(w3kL;M4vud?ehraDZf0n9WP%70q4KX7U#fhaq;_>&DieMPIU5p;|NjCCQO2M z)g*AkjW+Ftd=L`bRb;`_Kq9PuWX}1w5sFIn+ssgGpUFhL@8;+L!vl%y^PF+J5?IQZ z&QneD=kC_5h=vjBSg5Yyj#5x_BZ*fg5yCgbU?TPj;m=kb?XQBm$?hGdzA`(;N%BtZ zqNsy&BueRN-*fgJVm#~oUJzY2vtF|iV+p;4DH<4h6a^jvgQ_p z++ZnDpxn=Rd!vphY!$xeC0S1nTw5x#Ug?CRFFi+3qPpAHYEON@x;o%n4Em|5T?;l0 z>7GB1+Ysu^*wP-GFN7^&GD@PYk=WRst#sEqkwC!2B+{w>}Y6(ohK*(9UyTqBra z8+|FzVl)eMHoiXL72i*EZk!6)eBiP9^yn^c+sU zIfO6ofpPsODlsWJxmoHW!X~xdM(X&vnfv%TODG9uE5DbQ-N(?4=TB1m9VkRL^-Fas4`zcY zZgQ_%A3;_x8^|7W>LQn)cO?Is#Bppiy|}$_Cqg7!H8xb$5*q6l+p{khfk@@0#$=68 z#MkC^G@VKt%xV_X-n`QUhE0cZ2juW}n}M**5DG{`uEt$ecThN#6cdYK21`qSRrf&? zvD%-zso4?bA7MMfJNH$Sc*@LuhIfm^@VRVJei}kx#ny&Rh17z%#+GpN6F5%o@rk24 zWfB^ZIr@@P8bS{fBB3Z<1dAf(RT>Ct^fglo2KgH0E`F?2_=PwSDzc_P#C zdH?-kg#OWM?;aaPsGR+iy4TOpU1k00r0tqkGPz;Qm|BgHTPL;%kyq%>QVII;h!dfU z>O8DD%8o?DBc@3CZVBOl+X~EYQ8qze7WVX6D4}C1xH46WZn=cU^rGt(5Sty{saoFw z)gW>!Odg@Qb~`)S}EKJemSr$sSj*7rG|g==z=?4rk^?AcY*-b`VXT@ z1L(Hi`{eeb4_fxoy53h9foq?B^ug#5JX_qH1n#|1XR&J_Jq2ABvh5ELmWv@i`cyxJ z@kLEeSxtVahok2m49v%nronhU<<-_S;`Z7sR`eH+e~u4dRnYAL>H7!nSB<^}>5bIV z*LCiD0YbxbSYKAi2-*w7 z`nYWS!E()uNg8uJ|B_A4?G9}~x8C(r*AN1$D`+R^{0*UIB@J%{-t@x;iP%GinHctA zR#jikR1bV79>7}MR#)b6AKJX38`NYaCvOZSg7h7Eyg?5V3ggbTw9U03-#ohi$3Qda zy(UE>hxN$%oaivAd#MyCH30+nLNj%tp<7RL8#__8@fhaRQ0TI2IVV%bhAx0TJuIytGG^vfab@31;mUlzr_e6+>uNmrr(&OCFZ( z>|eO$APt;9ezCqx--4l5lDigf^?}T}Um?fj>p)B{F@YH~74807K2}Vwgg_~)8&sw? zFfY#$h)ym5na5m?toB&;mlS|J4c>=#HHGdsh$NEBg-**43*c4%ludKzAdH`5((Vo) zg3>d6pPu0Vubdn#{D`v+mc-Kg-FnbPlygz3>`O1uUt7Lc!HJOKuK}9JF_Zi~-ftux zcflsn@8>r+cEiWtKW*g?V^$`0m#XUowt<->-|bQ=g4yRT!{MBDka069khd1Yw-$mc z#OjBUdf=}3ITN=DJ9Esq*mH=$qdDDq(>XGnxovNe7`k5FlM0G_I^a*-*lO-c9ItLQ z{C)X4%Es1SNXQm;2Cn#;(b5Yzu4YT#?c|n9qA!*2K5+xHdKdTkN#M32|LG`)^j4IA zS--qEFI$V{FQeNV@l3eERvwuBtsZOybZu%)atZYuYiaIN3?pLpQjy}L5|+uCA=OxP zl{fTzQo4ex^jmjP85I~g?_XEsUP`OKkD-LL_$BkF+bZPtHmfCn?;2fEwON;W(#N8*J+s1+{vAwe& z+i*e?jG{-@cMx{npBMb52Y}aWN`E4u6Q0-y$Z(&f!mI0dqYWi`FzfL7_AaGPSotte zcBiio{wR5|j+tWnpjhMUpHy@uKlG@4@;Q@Gz8ExZo5=>b0Grp%%%xzXMXS$#F`EeR zOh0%xjhXh3p4Pq_K*+82T_rx}AfVB#Yi1WQ1@Exbi;Hb|Kl;Ql^Wb?L5ovzpskaZy z^IdT#t&K`xo_XC@`{FLJvQ}7R+Ef8Ldx{yax*{adt}k7eDHUcdR{dwjI!MM@&G&x~ z)d9_!(ht`wGKk2_UPaZrO(dW9U0z!=W)gp6l3KeR!)r?07eq&FiN^ZlIW&=j#JBx) zg(HrcDbDoaa{5_N?(TcLdtEb7&zx^n`Gr&j`%F0=;d(+NefanDg9t~L(%fVFB@3uu zoTycy@#yw_`!E)%OfPJ*94y_2NfNi)iIB=h;M*@b=_OYNzUA{nlfBKvD%GWXOBsd4 zYavU3nHup#I->oB2aUcD+ zDNPf9rF+k;O@~QS^Q(=m{YXpUoHl3R_(H5+9X`0}49Y<}LYO-`aCT|Sz0;ajlhAXLj4oP#6~MBEJP;~LJtNC8da1M-*=yPfAz=# zgEEIJ#}AbP+iTDD$tP35Ion<09?~bI^Ku${*B63=Q*3kSNxa{V-&n^s8V;1CHn>z! z1orjhVYVgGMzqIQ_-`XLaO>Zqcj;8v`NYAT?mcG4b1&V!fny6Q1J}-i)&!Wh>XZG+ ziQz*lY}R8v{-E3T{myl);}zX?Uk<5sgN|#+h|gsVpDJkoYSc3b1@k}UtPc;tbz51> zJ!dgA#WgC0V^<@{DQ4PvB3+>+R&=MyKqELDar-5ijBSU<0h*_+D`3!YQ;gl&b~tLi z)^u4Gf4-?T2~5XRvAxBpe^R&_vnAKp?s(Em;@=#gtHp6g+i1T&cQ3-}*W9ocji@0y z@^7vEULpKkx$;=7u`e(m{pqqc1KkVtPmX+!%Ya1}@!el8AmsQ+ltQ83Ea|X5k|t02 zNvOwLjvc}fz8%i>%*)DCM1<|0YUQnB!Y1VE{wTK>Wfr^h80sQO;ukB`sPH0uJ>%7~ zmum@IO7Bxs=S=uNY@K-^RZ-jaiBM50NrhB0luAOBEQvCd6qTexl1h;zA|Zq%q(}&v z5;D)+X2(1o^T9DoG9?M|-97K~z5jgQKYKYt!r6Q6weI_OUDsHc@Q3Zsi$U@Id7ffj z8cPulNxKN&l&6F;K)SYO{mC5C98k7aQAjiE`$)*DuAp^&y7liZju0?D8%dc$?~(} zibmr7;)Va7ggjE>!&9*n)r83@_lC2TTOcl3U->R(d`}Kf?`^IqB+RS446=Tf17&Sa z2a^Y?J1uP)4{=rjEh(HSEeylDcGG!gS0hH+Abff&;y3))-#zZYcFydY<*RkL{x%+B zcBqPN1d7hz+Xh9WM3a;Hc}vGv;=AVk&XMaA1cO`So3koOwXMfb_X!N)*%xfGYGoX> zi8yVmZ%D&%!x%^RJAQbM}zrQyS)niwW)b^qa-*K(&lT1hZ;cYO(JC$BEfzIyVmzaU>4++nQ4|C%D^y6&F z_yA%#qO}@HUH-s+Stln8u?mLBt6?vzTu8t=0kwJCGO&(+sxivi0oE~Zux!KFO-dr!bN7@zlF>5bXX2(%5gvISZ!a6MXnZ4U7s)F+inM-||-VDCD zNn>ZH0oxO{;MX_H(0we|W-JM>qrD%dUWaFcf~aimU8Xlg+fiNO(zjMZ*9_|yYAOe= zC05P#EkplYOG0d#(Cu+f+Eq6m?>8@w-f`(ICOX${ye*4C+>mMbkj+Ax#A#HerAT~H@4o%U5!}d%5b5_G)GX8>0WmDTu974N5qaU z_Y#H3zTI7SN{IDGOBs7+8tL(U{hObWLxD%Jz{G%w0^G5y^NcU|lF)n2E1K@r5sJiE ze&$du_|cSji#PNWLp3}5X7K^Se>G-sOcL9)9jm3A_|cVMx4>m#GjxY^J^R4c1~G?h z|BO95qJbyEw4nB4BT;y2UavYq!}HBksE(JTfux3=r;kNX5}p|Tpz`O7M9hOvMSz0W!Ni)+yw`$Z>>BgB zE4wDiPA6Wiot6XSZ=3v}@=zyq6jM}8?xBpObi}B6HW@>vf>mW>8wppbP}`+)3};J; z%o7v+3I((3iN38lkf{3F#k|`jp@YE9V=`hiEcV1HCZc0dQ{ zYaNVlZNYuW`nzT~wc23OYGt0=J`780Ull9)t_8d$#1xHs6G`Y1F2&hJJdcNDYVXx& z5Y7HFoYkztuVv{@Xjpf|{NdYAZy-WYvZ}Z-z8>7i2?;Gtq(iKEO zLX0IQ1NZmqE*x*;wIyu7U-sPDHi~Lv4UKf)43Knb8O!mc6TQXK!GMn#*2E?JX|X?< zDD|&govniBA&9)QQ3!wn)*U~;IAstz?e*zFpK@}J6u)H<*@6MR_Iqz{}14KfO3`ar>n zBE0Dc-aqElI$0;b5c8}K=}>z>Q++jGuTc!q>G5k5yp8u;x!X6Ldhm0l@?8J(`z(o} za9)4Ax`)uT8TA?-7ov=dugj2|LIRxQrNcdwV03fU<4*l0l70RCZq;gRFLtbat3696 zoHCXl%2*SL=Jr;bN9(GI=H`Xvg|m$$)lQH_cQv*##2Lkt+|U(lzxtNOU#Xx!9(}7I zFO8VLzjg4eDZpgSw>18ZhzAVv)fJw&E0{aZ|xUoDZCL7J$@m69dAbs)vhH;{4>#~NoZ;XW2{pq}O2lp-84v*XB zP)Yi;4eQD>M#+kb!+9yyKZ*1a$Lh^BQ-nuW#^%+<0g~(l!_mW&#I>bCYs2~Pc;6{% z-4R140pb~QKDHP(b_rwS(THx_N_HCXRX8qD>I{k|r;V>B;@>(Rcjr7ZbFid!z z!v)%;(3NEKfgd#GcA`{qLX0gGWfShM^tLH%56vj9lVR;3ZCs8i%~UEepSwy)+fqa% zRX${_O=%)CZ6z+QCFczspG--6$fSVBZegm@87$o;hX{%^|Tl&Ao}ZUs^QOcc>;swxKp# z^m@Vc9h<_!*IK+EcN(id_9K>#@&WmUeJD%RRAtUD1hvNx#P^90lFWXS+Kl*O;9n8N z9fMdmdzsJH$qk`tdq7lo5Sa zcymF%7tD)JtX9CfUU=Et{hC?mhH6%^!tP}+5ifhE6fIGU{gBuL(+l+= zb9H&=(+TW9{MAh9GNY0>zB`#`_G7(lcOK!dM-9?-w$F|?~=_5KHGYYOg z#d^qoeo^%~yx%rES)}y6z&b_L!8p4zNSu7hxl1(`L!}4yE1ZfW4u(gaD;(bw%J7kKf14JGVeZ~>RMVn$R1C3Y zc1o(GLR)`Z!6o}TklA&xP%aX&B*l48sq9+N&p%-5t(y!Hi9aR3Szs7wd)Nb(kWylK z+WEZag<&#NFrde}xt)mYi||c5(o1Cel{foG(n!7S;Jcd7-Q={S&anm4Ub5oxs2@Ay zPr^JgEmCNXu3U~c_Uod0-kh~BtYkNu^A~-JG7xTqkyw!zbAioZCv|u>IJ6Xk>O^Ze zhw1QcNYR3m-U6C(X~QqsP_`)aR8>FUoD^*Psra)v4?1E#3%}y)fT5Rb{8-;%I4y&5 zp%+IVykkFqh2=&+#2T1?Wj@>oygy~aJF!ot{d4WM6m&}$cyXlAejMv1FFA(Yx+z#c zy4U|oz6;%MntNV-YJ{Q|Qwe5iln*~QU2c@$Eknbf7ZHc}dz5Z`6 zXwT_+hjZb&Bw~em)X7GoZRw!@0NpJXzlHT=zG;B88CTA-O?^;Q%3C{&@-{<@guO1o zC}ZL)Yc!PwP&?~Wt-Z4oZUsi>b%Y=;rh4quKIJy(%$Bj{vh4?+pKDr2Q3khDPvA)P z&Hpiv7JmN)kUm&0Kj ze%!AmP;G0as?gPgC3C97xC7ERJDxp=?q5bylD{l9hhTNnrH4;~rRA8!TY=P>^8%}%|p9ysFEnsO(O4jz`vad@Gz%)QA4Ml#au1ml|^w(v@? zpGX(v1yLtk@%-Xk3@)>~f|yBolhr$x0x%l)Vp;lz^_XA%?0wDNL}mGA==Zs9BI97A zD{ydu=*USNTi-NJ=rWpaMTKF6eYa!Pso`cKusP;e!h>`o@>OF`HY?uumG>I5Ycv7f zz>=aq_z@BxZmt>PLQF|&?}VLp15o1k6$_rNBi^xcLhEaiAgH%q>)vn;IILznIXGJY zn$#S=f7f$_ZSi?HM{6pQQqsYOGcDeI;9)bmbM1Iuf+Pf)_L=z%IGquR=4)A7zN$WC9}&4 z+DPm*%U)KN1;SJ4^NOS98=18FcFOZe6`6FM{1!e_2=$>y9u~hS0fEWqBdL@+_?8$| z^Trm>%XN+qw4-UzqIN%`))KLz9_OPuhUh{n+-2gFlu866pWn|BY=MAMA$k9ldf*Zr z_IWynbw+NL3fZ&GuwVP&3X4kvP_ygY%i#GwSpDhi8*ff@wPO{SEfDL)P#AetFT|El z2Vefg$J&Xmi#)s%PZA;Y`xIC8hz}7MW!RDvl}geXSGaYHVZUd4roUKU9g6F&wXW;O z^*jb$45$2Uzd<7wp6RZ{}F%opzGJZuEN>fzqs z+}Ka@7-hMrlm~VyMY%iHQ{lSiv-XYNy^s=OS@Y*L_TS{PjXRFr0|5b#;2mO#;Mue! z_uvW2CdZ>iLeAs;<+#H6ht23xu~9Ss*5Ps@sKy<|=hgu&f0<&B!EfT=!=`JJkpUKE z2m@GJl;iRLgHil1Z$QD#3*Y2 zjfhdy{TmUZsQ))2M$zzZM2w>G--sAR)4vfh3hKWRF^cAYBVrUS|3<_pTK|oRQMBRs zUyPz1zkF)Zfye*FC_4YW>whr{+J7GX4@NQm+?M_Fnh|2rg-^O#bmQ^7MGqeTgHh1` z=bit>D0=@rLX4vCKX2;C22_JZKIW5+lq=%8mcy>Vq}7szpb|K$|b0$=%3YRTCP$|T?g!cu>R;*G=a}nJ82`1>g%4fK^l5!F7IYH(G!E0 zhh~4|sLo;{NN!SYs@{v{Y`RZqHkp_meeZi3MXk(9~vX@%8mBUx}w*pl#RIexeu4$v{;tCp?cHZ%J81Jb}91E#qq%VQ}vp+qo(Y zD6@qD6-(9Nk`w4RX@F(=^YfJ))=rQZyYb5VXQ=k_KXT$jZ6eWk(y~f;RD>BsrAt3j za*zUkCaS?+K-eGabL_fDBXt|y&hfQO5of-=azeNbuh#zkNb_JP=wyzB^_dTn8j*kD1f#v5H@i?M?{GssSm8ryz94@Ay8iMD_ z=7(o0FyuqHcSFaq4p5St5Z=9t3OX4#Iz4`&3&ytYdq-Dh!^}C;dcKM-a{6{+OJh1N z&)TOr=4kCi%)2crF0mX=r^U@?@%0d~RACRsg0=&Klt}kI*dT+STgU7Fl*oUZF{^G4uVfwTQK${!8Ilt9MYaXd%QLR3f#wsMsS-QXQ_0p4sY*rzqE(Fb~TYf5ivgR z7&O(S82qsKGEO+76&|UY7eTJn#%+8X8_`tidEc$G1*mT7_`BE|N|es#x3i=-kaCK# z-)i5VB*M<&S( z{;sfTj}A~9JmGQaGYw3S{XXDfjOU|)u1buGD>M%MJz{ba!&c6j$f(3rlhf(D4v#js zk+wU(VhXw_JKCVZ?4#yp*Ln=mh(GcS>F-yEstwnoTf!a2 zPOZZ{{h$!l8No7AK$Yo5Hg3uH7+qKA7Qm;jA3vCOUXeJlm0S95dn{M4YTY zilG)eLS8@SYz6-Jy`1W=dm!~^6U}v~8+LjKtcX3<33Ile^$HbgAah;g+}2CQWH+PF z#^-71t|R+6N?s!u=9tAta+&DF$VmRpEia_#|1haI7yAR;O@AM6bql|1f+a7+B4o3Xvw=W|$F*m)!S#fh4stUstjqY~C#zj99HkDpT zy?rUk@>efd*x9=7WamU|qYq5zTj_`Ru; z27cp#Yh~6WuIHC|Vvh$u*8`yDY zxwOO-!~KO8uU{*=A#kFpOzwCyy3JGyi;ub#*$2!n5|&?&`1R# zdP|(`>rSwA$a@!mtPW_(9$!z$;dPszxmvrt66AazwS3A)eCop17I~F8@TQr4<~GFk zxtzj!fj-meDuC82?T`YJRUd*9T`9+Jk!ps1PA7k$ZeE z&ZA?lpPp&f!ZW(-feRP9!EHvi#2sne`aSk5j$^jBz+&r_3y1LW^!zcE3oRhy!zXQH z-U^zBD{dH2OF=Yx$pXIXU9tDqeltluWSXKliwB3VTSIcva$0>0IH;vwZ6I_n8XEVi*W7V4Tdv>ra21Yv0#o;7KZ9N?n7Q^~#d_Rvs-N)_Wv()$t_( zgMwyF(u6z--Eze3Ec1I1v902mSSSIy#2__k5i^|eo!LVrpw|^?r1qtjs0eM^b)kw5 zJ6-02B%GVU{nOty-gQV1cj(SJ%C$mi!?;U8dpqnp&3B`Rw+Ad8lXSW{sz7Yls$Jw3 z(%~cJf}GM3gp$L*M))wQZP!zkt5N0UDR#H*`XOw4Un})kx`wV5Ls#`B=KPU@uJl}G z@SYSzmwL=GI)c~!a|<%#!^C`K)1Q=vOrp|Jv@>R;g6QNK@!0GrhH$y!=&PGCi%(=c zENcd_jnm9YTSJ{l09OQ8%jY66iu|~ojhU!A(c~Ggs%J&d5jhc1DYS!1?Hlg zhMfHD=e0MWc8InCYHYxc*~0JUrhxDzbI+i6LYY1dH6?iQzxoiTeKeW zej}N}DZAFYVp&R^)|hrVA0`*gB^Ax9h`^qs+ltDoh{Uv==WXaEU9XN!7QC7y2Xj9j z)f1T{mfn)ynYQgDV2S;O-)tl4TNu&KJl9Kn@2SSwVQ7mi_wn~}-WWn76w|ecs;0$l zzGfE@cTf=D-#)Gs2KuhG@=WUa5VJeV7h$F}+OZaUMyeX?=Fmq5zMgd8<%DHmRKuJ5}|qpU5l)_tqL<7?s%(PPZyl zy&O#DpIn=OZNf$4>w_3V_4SXGO=bf4ZXnhw%6LB%sPf!@^BDQbUS2r-3f*8nu3gwi zuLCxGgJ8TRf;jUa!~$8li3 z6>{^999ZsS_|KJx_Tuv`P_miZY_%<_-Jeg*&Re&^oe$q)(}nSKc_t(0DDnke*iJ-! zEI`wC%i$%jCMxmpIl!$pI7}?A{ur~19wrP1JeO<^HIlg{(<5hi8%f*a+COtXso1Ab z9%Q(PpTlX}8I7cmkUp}i;>PDua^GTCaa{En+2`y}x7hNN+=LfxXgP=yDX4MRmJLg(}XrRx?~*NYK)HrE<~rMDMkN zc`X2^XjlCj;V5AL^Qmqa=Nrz8bwW{w1;jVmSl2_o6*AS822OdD5(ag(kKe=mh<fyA7_TVEmJdgS zGpx7g_7clZ_VuhAXk@@zOErdut}{2@=gbK;6W=2mYRmeVaeTpdliHI!;zl21eQ>#f z=ykK~&MRvsi4B7q&bmp2*{es5NwAr$<5D@>d=WFwh5a&ien6K%yO-VD>6yeW{XqJz zmJ%2-)E8Hdry!mh6XU2x0mi?Zk2*fW^VE7w$>uH{wqBtpZjtYV{nT)7j#r)FQ}NI& zZV@qLvq8lAtS11D-~&2w&2U=5yg2!deBRDDPV{g z2cN#9wPKu%`0mhD&~G5sDYB7QXK_8ow0q1dnGT-@qp+z*2cb7t-Q&XJq@@ zE5YUNcMxaoh2=~gCL=6=Ii^I@AXr@qQ^2`IFmYI14hnIa0-bQqb*bsGu>z6ExrHtUj5NwZ9RsHja+5k5r!@e;(F=Hx7ic|-i8F3mZSpvaV4R3X?=uicxsOR zqnZS)p)aW~mm^N88ewPAM?$xL*{MkHCdnBs#&2#6lX(A&@pm>NM&3T&q%Vfprp`1iuR{2t&UAYyr4bUB3wE=d#?S4N_2~RyHL17% zwuS3-GB`Y0_M&}6w*v{W8n2^2$c*C8yZfhFNGikhV&GymvE=XxpC2zL0%xl%HhKGz z0+!vKkq%$cME=&=n_mnF?fP%$OYIH7P%NO0URFe)$D&6rCmr3Vp8UM-Rzwn?N0wdE z$iuL%69F6SO-Af79i z!;i@zUc1}3bTT~`G9zNCt|`Uf_Tg<#&f`Kdw>mE=aj=*uSqQQyA|9W}DyvW@gDz41 za*{{f+Cb*F#Kp<2Euj3HOM^wB4cMJ?%Riv|jL-I05BS$0p8j$@LqL-sIBNx26yy0U zcK0u(_941gBy5k}X4Hx9W9#KZ?Qp))2{uf}FizgsxASbN^`LV%LRoob0TKA&Vjplk z8#LF4lpH*S>(l((n+`fw5|MDn8;OXSFy9h3w2W;d3Ik%-0@r^aiK;!_IUE$wjcGl^ z&x+^M&de9q&$@_hS+bgP=_E&}a?6GuB9pB-oAwi3 z^ODweUk(f>%*Xhb5;Yr%&iYSJ`ixSsuEo(2K>tJv%uZh$OQw*EK~I+MXHAhg$G3v~ zFVcwg-_lzPn}>-*BPXlPa1gvp`Lst(b&!+{`j?&hHc7@9%r@Su4r z3y+)2&M^(}Bg6K9*E&28CmtJI+vfzKW_+iFZe@`A)sjhOwHc&j_|6C3aa8XIyk*JX z;(%uFSq;ro7|L7Vyps(>GfX_BUhY^%^JmW~`b>si?2dGi#gv_T zOdo#`nV4B0+Cyxo?r*vAPzT!;W1iEZ=0K)D224B0j*$q9eC27BDHRyB3eFyQ0iVp` zKl1m~1AU_ZLgyiLM+~H|E9q+@yq7xoIQ*%^Vd;m;N10&oD`UD|WQO~rgAIoyQo3N2 z1pcVLh3&>wb4;2Nd5GH`h}6CLk|+q(I>^kXkx7@NFWU?;#34*P_Sn5hs83PU_1c(B zG@CD44B90T=emgZcNV&cd7SUr38_@TF6kC6CtP>j{o~Ik5(`Ag?(P}mza(S&;iSIJ zBuO6M@}yFXPI%Hb%|3`KBzkiT=TBl7Y|M4K>Hah5dV9&mtX`@BOtjWpE=AX1T~~F+ zOfnqwH7jg$x)+kFY^!O07ECE{#A(xV*Vg2-D^`cas543JXbnF6hhaJo3>-mhP^~j zbal1xB~(dUJ^34TD1!_nop0YLiuiooh9thbMOX)xy1(~!Ah0}6i>2qGtl@}w*{Xw| zVPsuzr-NiIbd6j8zs6p%h1s@=T(8%Y?vGGH<@Ms$_5uQzs&5x)$E_l6#Aq;b_*M&+9CME6#M zl&%uupV6EbjIHP-cg*N{R2hxPuy$H%YK>qx-oc9e>M1gl9-ew=dYW7nRF`^v;V(%y z@7BF_Wsum6Cdk_J&Ja%~+dSL*EyQ%yHCgt3?ZnM}?pg9Vl%YKIla*vwuiyM4uV*Ahp8lX4dk9N>#p38s-YUZH{r9||$jajJ_zoWUVjr}Dxs zf8y{~K{V)Y5oEI;z2xEC0-{CyK|6>O;nIs;O|J8)aYfd>c{y-Ke9?@*U5!#MI1v zmobc4fpS-U)p8Y}57rjT>KfpdE8C!u*aS<@*9Jb;Xo1YJ#N!u48epxh7~`5L40pZy zVdlVrO3>Lud;Zfu9kG9_5H=00+g<;~!V*vqq04QGY&lfeFh8m_P(&xErD&4-A0o!f zSuZB?4(lkU1-p19Gl2d1&%%M!ZZhkare>?zN8Fr+t@ksR61H6@17+suWbM*Tr{R-W z=hJ3$alX<-^s6`Ov#JN6%dwrDUTg^H)Er{^Yf=Xy;qh}RGZf0L)k}n z)P^;|)TUo5x^|7A^mUH{TSq1M$;m$$Nv=fMk`HHoH};QuJq%K6XR)Yk5W`VR`ZH#p+5r(SA~SlmB`fahAn?$3B0cQ_%=Y%zO9MV1cQ?2poxYrEi_W?0vvaxeTntN)oBpYQMD z-_yx$R*2zm*FWjp3Poa{&wj@L&zp88SQ6*!soi^0&q+3-8z|E% zwZnKHitYpVSLN}FwDiCL^Tea_dF%te z@U6~pr~&`=ul=Rint*HeO}XUdB2wVyQGE1J1EKTQPjQ!K5v7b!3Jli}SK7|Vd#tz~ zix#m^<}M(5UA-d3hnk4dTHSq$d39t?%j)^9)*|8=x0tR;ZzHB-D~mQX7eH?7r7>f4 zANEac5_yY#5{cW4*{KHTI*{P?{*4*B2`_$3{B#!Uf_8zY{~phS0_p9~GFx3CXmc-h z|BiN&GJ7Rh)$JD<+g@CG4RN4?XR33Lq&^aXA*XYvSWyP@eEz~ZMt6vl73vgwjPjoC zUE~G2h%yids-v_MP>%WjFpI#xozu-5k~r^iRYhJ9-httH4@Flf?nnk_#`t+h(_##< zy;HPa1m9;EdhwH4F)8Xg+sltK1J3l^h)UZ`GFhN<(w#jMM%(y?8+P^+_R#j%CD*Bh zL2XmUmgnVQ`Ra#&`UI|fU}xfLgQqX1h!w}*kIvWnhyd{pXiZ5Wo@E}!_wl|zdFbkUp4n0uNV2EW z(^Pz(UN>-=ujuTtL6^2)#gUSS5L0YSo*o>=efowitGu<}5H+n=zlPZKGT;M+id!Y#UeiGYVjA3 z=Pj1-_#cd7`G4N|UyOob1%4OAC>U`(Z?OW8{}-cR`uECzF$xKZs2lrB+oAfy{!bH$ zjj*~%A%eRDx1G*i@=8ee#_cZCdhS&QeZK{b6#g{8W<}X`J58EkQPVe^m}rEx%5^5qMip>v=g?i9?=*O=8SrFoWf%N-{l&JTtR2QmU)rQ}Q^7fY z%_Mhd7ih~bNEQ0iKxuo1Y4fQL*vOu9{!vC7Y;*}>^W4)0=@Hj#y^#i&>pSM0VcZRy z4yIjNY{qs*+k5>1R9WhqRekhq3Im0@Kk|ku06H^Ynr^wLfK@=*^}(=4!eHX$;y9`X zvkHDHTdq=x&dZ0c%+i%aUNv+7Tdi^cqvb1|3N661S2jM+49!T@jBcx&mk>=|#n=Zi zsPYPw@bL0Zgc&=Ro`C!A?Lq0!2CJD$+Pv6dd*LN! zwtl`XZd!z9I+1(rH>8oaA!YSXtm&j}U(UJ++g8kq|2ty#YJ@m!_gYn>YDKQ?)=p+| zrGR!S$AlbL0kEZBCV5`iwqo>(xpM+dgm$m);bN-?irD-5bfmdC?;UO!It;|R>ChL> zXBC9=q^sg>=QI*QVeCr8@_I4`&L!wmVC##OXVs7%#LRY)>!M{Ka5QYmeF4>4k<^ac zBPk^LlSyRYN(><}<-cI}rWDOaV>dE>ZwB_SUYxzf^`NOTvg`7xMlgxoweWLi3J848 z(K3J1Nn(DDq@P}eCPvlzpRSNb;@KOrek`pT+?tbVtZp5I>Q`Peyt@o3RezJ5Vl=gT z+mVp+r;TX(E$XhTZbpn|kNtMGG7@7N93T0&i_A9PY}97!B@TnZh5?Tw$axzZn;h>E z49`e66Ldi{;8$VhnKK52dF~9y?#Wyo>vsU>y72b(O-Z4 zTS)!O?^{#Mv8`&8^2i<$HxRqGol)GE_W6=}iL^XMt5}jKGj+)& zrWS%EKm1%xZG{cG`*V}Un!zh1A#6)OKCVBXILeB29q;V}`X{1c&oMXjmq%5o#{(AK zk9mZh^61^34M@R#IZv-BqmWdWmY__@E>v|gam`X}fIW&(9rxvf@sFQR886op_KCG8 zU!r=;sCh9g?hm$~t^7hTdA8}o58bVs!q$k1~@lw z;Cil_2$b?|pJ#hgA@|j7sloYnSi>f$x81!3;yEIYc?>tf9?s~|8*=raeDcKe$hZ!O zx*zXw`8gfrSx3IT+J$DK&ChNLx3z%|=b2|#Ii0YsvRFa(08+M9k~j5z8gcs(J;*gv z12gsKwm-R!Dq7Zp%B?!N@F$9IDk8K2jLr8C#-SN^+oKzg^K&y$Wv>2Z@n|ZDY#wSg z$SEY$di#sk=<-rvwB>TFMl=x!dAxG8J{;D*+A}Xvji&J7=8j*mjlF5{*jIH_t)>gl z9zT>o1taN|RGR}h{|4`uEqX`=wZ2Gs#s@T*F?XIi|Dpp{I#ZcEjwK#xtJAHP_1C`htJcZ0S1*a=;M~?!XSG6oW?&FC6Pz8BL7fe zxilj>jb#>(&N7j;OU;lvxg)zJ1Tz6?6}N`B)q=Lh4hC(#GMLmd?Ead7E*nkr*VOx* ziBd?;`K5fMf7!=f=FgV_J@cmZAZskJ?b!0DLA3%pF1v9$-bFRe;Qb*E#co*5@02xG z-UQiVE>$<)wSdG;W|2=~)xhSIP~ywi3AUH`xLzC9L$@uL zw&L%foSeVG`dkBWu0MHpR~MGE-jzl_+3*6}i8-0-F8Sc1IcWdt4izY0oPAAKmk>7d zo}-e>*dA?^2~R@|Vt-^Mqk{H03C&R3?|ZEjT$iq1tAE`H-25rBVnJxWxUK8Tm;1Qg z?j(1wRoardKELcAm+^7Tz_}6iD00Dy`{B8(NMFO2!XNDUKp%|Gblr@m|Fi3!Xy7tl zpW%$#6gRp?*l%VW&cUoi>5CsFTXKoD`9nkb5H!_pc?E|}TMg8)Q&VspH2Xrj{W`cLHZ{^M38IZnf<#Tx}+)is4$P61|$ieD6{pS+nf!Q^~ zYfh<*Y}d#%@|2)KwT2K)n71Cz9LPEQHK+;X%_YB%Zf*otvCNlRjxFF3^zP*qZ#0WM zq+Ay=T?{e%9{Z*5%?ES3@4~0Q;e_Y!_9-SMTrW82Tym$O>%eG(`ZP-gDbRkjm>8ai z>yw`ok7Qq=+2DSyt8*AyGOP0W*qOIPTJT}hJZ6@ATgfq&_u_iumiBbd&3_>U4N6k_ zS-{x7x9)ZXsy>2BUo2gXLCkR0OnV>-B>&RlcSK^QUc=0n!O~iCn)6*Ky944ze~Qq# zv5=$}pVIFZXdqS6;+OvTHNYdg-*pSD=;p!A-+M0-ua7I~16-R2(3NE6=Lvj&Xlk`r zzkDE=Zr*f*Iiv&%l*O)#2R-C`qft?`!ytKBvb>?= z-X!UsrUoucx8n8fU3()8Y4?sb$Jwx*#t`pNXB?OdN)c>dmQSDxV1Rjzi*F1t)Lcqj z+?zyNWI@O0Hl5ICcjVNa&4PnsViAcB^&muP7qL=9Y-D2<>&)4YM5Sb(yvutU5gh*P zRrwX$M5*a^jDolg?|Ad1Tt5}qzK66v^C%!OceXvRc$EuF&M#A*@?%>-W|u(w$}5oi z{s>5=a8J@Lzmrqm; z8TYBbG+BxFV{$^Eyf_jwEZ2X?jQWJQ8J#+5RR{q(z7%=P?2eJq^;|ig3ta2YH0GtE zDf8OiHAM}fusY`jm$6>~aA{neQ`=b%_K&&THPJ;UbjO2F8+4*cj8qBbf^!xaYw)DH z#n!>2{8Rb&73zUma%4M=p&6>RxWBELMKz2V<7wrwWKhVvs8MU?PYmyGxPBKi8Z{r; zWFE`Id83^-V(alHuzx#0`NgUR3?F%Mi|?!D@u-@JAwGwEm{9jl`gQ} zlO}s#A2CK(?f5Ivcpsz1TfQ-B0HI$4ueS$#Qa-7_Pd#=L_RFiDL*o zbJKa0bckvC9xERqn$AN)amOo&Y0vV9s)N}6bec-02?i3qqXryr)d5Wyg}x`qV*7;q zWAJRuOH_s3nqEaRz|&TF$8s~yPZQ&+UoB&S9`;VEsyY{@)mRF4y+@32i{{EjPu$+0 zZJNC z11$NAW;R^}V1KqZdd(^tVegvZkZNcp5e&f>x_Y{Z{=JhmDi&12t^0Yq;Z1C}Rrdb2 z(o8058!kTV!?KmmE8PXn-Hjx1+qn1ju23Ra=h;xghoOL%l046{mVrWU_ss+1*j^n; zl(v|PCdqCO>(n?)L0^KKqJtT{nzEIDKB1bdI{S`x-023$QSLp~l-mJgt2z`m$25b4 z$n7zkuoh_fyisXiEVesYe|bGaoY;EuFng5f0I|&cXzw6fMy~lWS3T;&{g1k-(aIyf zBxLy{g_RAlp!?IO_h%%400(z?^Xni8)lW{1i1`GWWzWTCR8xRrtP=12tAIG%BR+wH zUy1&WS9F;moX15$MBqSL2vUnAn@`&ySPCl83^!kYQ9lKs+9|@)n-cw|CVE0 z7Isrf3!8%c#ykCFcI}^@2h~4_?jey6Z66>H$?pL0fTrpEZd5VEx*M5i&#Zg|iAN}e5dJh`9q$U28mTQM4RpDpG!cFkFB7CFupLSr7WuYk{ zE|TjO_SXCo1)_!$Q~x+tfVi9sA3qlmljtM&(zc?yPyP>wMQ|Rdag1(uipP1?*5zRS zqXZJOd*O~Dn%4I97yRN(!F}_q6+c!_A@0cYEBA};%EnM0zq%XO8%aR_ z^@15n0qHOxWE&kbx;Khhb$`Wu*^L*pekpXX+FxvZ?{Xk!AHNl~Kh{tDe0bPfWzi*N z$@a*E%!c+A`Zn7diGoqb5Q7i4< zYd1)E@2B^FJJm_riu?o*wO0}WBlCz!iD)p*`NB%whv6W4o<+QO3gCWi;DKh}1_<21 zC_X8R_wP@Q$30e|sryavDGSa7f$uu!*YZZe-d&d0-I!1%92-(Uf46}Yj7T+0;q_T^ zQ}UU1WeHIj-(xe)9|C@*Y2u>!7*a*ucG8769V&OoebQAyjKX7dq$&6cD4pYFD>Ftn zw_9On8In_p%#9Z+&YHLml<>TyCsqox(a*)dMBu*N)a}v2Sr6hyduTSJ*G|^DZ13Dj zzLAk$y$v7jQ%GX2XR_%13^-EEHL59rs#zt&`xBb=1m1^8v*NnnoIUN(lb_g*%7(k+ zeJ&(MAXcI-CznK+ZMdLCC}1%>=wY*9-?Q+58H}wtUnb(dbtH3blNkrPVaVu&SR0lAkJ;DX9{-1} z^Ny!Fe*eCtlB7YRgk*&>5)xgM3N2}%tgM72B#9C-N|GWnv-jTX;@Eq0Y-LN5RFZVR z`~JT7@1Ohr=ks=)^Js9+=ks}A*YkS5_EjOZEX@Bp*%!}?EdBXz9El@*BJ!H;zU`AGP)YY4^z=wscn|?a*|c@Jac%1Y7K{$qHyjzfkKc?z$eJd0^j8%ijyS z43~}Dr)NR0AXBzT4)M(w^zk#)-q|mm`3E=!rH`LD2g6?InKUh?@ zp^w^IRMx(eWz;oON^0~f z0=CCt*-pXvz$4H6Ov`c>Xwn_D0?RKTYqt5VvU)0X?oJGRPOvnZhzZGpl=J8~=09{r zvc3shRd57=^&OcPV{|s41x||IVff=z~59-`GRy z4atu-YzQBQMjpjitlB-G8=he8BQp*^N-n4tty1Af!ibTu#uO;bs{Wq)SwKR#oX4Ie z#enaPDz!f8Dl%TxJ6t?G4VCL(M%Ml%`%G>1^&@35kZ=2#Dq%t_1KZ#TqjNPzk4C+S zooaqhJltqx*MnR|6Y-@#NjvR>89u`@P*5tY z7JcXewO6tFbbLC5tgX@hX;uj|YhzNCv`mmY-?l7@n_z&io@KARDMIH&CzWqSJ|K2io5oQu}EGhagPiXcX42Aglmcl=- z1t4~|W0<`*36=z&#l9V!1?Lb2fj;8`RG$%zjl0!{3FSh7=b&91{oDO=8K zKcr$xYV*@@zkWQ%_xzzSb|KRZH(7a-d9Gspx+ykf2>D-qr3R9=0o{nitA))qBph;| z!L(I2=I88Z7t82|=o8*YjcQ4|Ob3oWY$E#=wO0XW#UpU)_g=4!T=kgkwtcaqkAkV8 zez`x3s2J}xXD>cgkKQ}~%FLQ~;EL3j0gridA9C>84ZDmNP<;O8z4vtkkX~Z_eXVdD ztZbhs-Bn*n!gyadcJ-6+-cLP+UKe}FSWU_A>8NsWR+p%FdpZcyLo1&JnvwfHp`eI3 zV&C!he{zH&qYKKy=*1S3gTR}nm5gf}_p- zWUoW5py{dhd!)1ioEx*{=S(ADmw1Z3-*(dW4LTWd$i*G0340mD)N9E5m+Q4_Q$Hws zi;L|m&4K~G=a($*)&j5KyJSs;0kGWUAr?Vw#55z%)(M=x4Rmtvj7l$6!$jeeW+I~p z*76(rCW#ZU-DIS6%i&3|kIRoZDO?L-iaR)`N{QX`?4ze*6cXkzY?;p1Pd*P4dM*C{SXjrU$=IgS7hew)8Du;XxAZxz3;^@Z7ubfirRxc-Zd=aE#3YRW9dU z?Y%~rA50v05!y>^#wp$w*P8H0fUsy0sn6P){G54^UIQbwJmdTsq`kL(ZQ_=IEMW8E zt{GX|1S5J~t^4m1Dg0iq`D(8^5DWTX<@texEuB5H&Tvf>$i2-LE_+js19_IxOh-xo zVLGw*sZ%|QOtzE_Tp}Sy#>W`Gx+mh;K-6U1&3dF(bGR~zRKatDb0aIARD7p<;eLSv zsn>kviSqP%4}GP-BM(05gj#WC?@zV4Xv?!IE=cZobu^|Ne)c zozx*|J-4dxky`M_NF#8;Wc*eU#?0YL2d819rsHL(ep~?r@FJ`^E!HX#pq-T zS{%Q6g1cZ4E(hN+W;#CtGJVgw?;4eW{+Zzc`Pw1ywQ|>t+&ctHsK&nAm*81BhMF4r z-k?BrQ)StmfTw<0Tt3p@irzU{fwxI});YDK(629oNb>JL-1sIDSE!8&+XV^EvQ;%c zS^=22>$3c)Pt(!qx%IPQ?WEf^Wf%FB(zF8@GhfoBk~5{otL;-f)eZz%2g`F&Os|S z#PYlrw??G2%1`&RSS&)rBL~H-hH$Fv#odBut!U+yc0g&K)J>*}&U`x^2LV6m z1++uS^-;dR&*wxN1_(W>J=9Iw_1;T<$8zU6+-d1%%%o$`;g^G=i?ewKGJr7RrAE`ecPMe@UPs0dF^>fVbF{pfA`fvesf`t9PFA<@0U^OHd zX{9s@&YKgjUNIy%zCgj_@3n0ZF~JwLUo{Q2AMhWFK8AXFnT@Z0228oJHzj zJw@|uzg<0E9uD{AawGdMW!D_mxmX8n97OZuKP&3l9@F2$lrLZePgX$LB+>Zp6&uf}5C;*@3PCe)5I z*S~$P1=;9Yna4v1NElL|TqtKR{LkN9fP#Ljwb(JN(EyL6jt`}hkh&?t+Rou0N?5iwZpSi0Wg#2SG<5{}( zINd!WMOErR&1Y7xnXVfK8aqqpmD;fWw{G^J(Aa4A+~%Mr{C5dU)u0tP`kzFp3@jR)SHmlJ&nB z#ZL02lQkPT{x3$s{_j=)i&5|q^qu~6X zSN<2H;QIH7U=-Z{dC^{S{J$6l&%bB>i%}%)=9gx_(uE$@9QvJP>h`$#;y%OpCTy>t zRi;$bq4xQ|RRw3t(JthQIT31;3*N+g#iwk{cexiacDkd4YinxoornJrG#p0 zjH6rre6I^fDo+3A4erGCT;@Oirgfrhgw~lKq|I)j#TS~ULPgqOyU&5*y%;p+D#}{h zgY!QtFFY|11pCLFn3k7^tSMJsdz}}*LBsI$hceK z{t=CQ7zo^Ug(Wl(XddNzHN8CxEYb99a&D9W)8Gxq%%vLetiD-4BNK^VcyQCfk(eZ;?mw94fVIJ@`$simy8Q6l@uyz`@mGgWE*T zT)fRNDPoX>k!Yn0Gk3Kh)qWTI0k1^xnOM$X@UDb1-Km8qwmx`v&2RmkDMT9B&oOr{ z=LL91C&#qnT2- z7Ux598@f5KdRJy4HcwPu1K&DaR#v-ukCYp1%R*GQkCgzc?-j*6X7!*}KOG*#76fKo z0@djxQ#3?P>#Wf>MArKBFX!_bu+eJS&%u^m87`0&2L63H&m zb*=tBTUia0l4=4cquWsGOQYkWAfc_^UtPN8(mSE?J#?gcbZ?ojZf zxYk>t%yBaNpwKfl*9~lzICW696h*eD@QGNY!;ml6gWN6ED4B1ty2X{0XA&I34O_Fx z`}vs4hr$|^>3M(c=;kO8iKET={5Tz$6KZsiyc>dts+6L)jRw_vM?B(w9>jk506+(_T3qkv}R}os~17}=H#>61WxSO4_SS#6qk@2&~ zjBk_af4kN~mB9{-n_S76VnBX@zGR zp3F(I6xi0>@Z(^A4`}wXx}W~^9KvRyD-OAKKx={2Y%@q4B1DvHA;$twKrOu(Lk+u$M@iF>|hO#`?a?pBMdDE zPR;k>jUGiEgA2q?kdUi-?tVA6B*zq0-0ULwfPF^?nP%X;ydnQJY2(jXol~{E(T*Vk z=Bw?xg}8lx>GrX7BAE=|cJ9os4lI63|MkhsT)h0)faZ!-5e6!&OH!Oufw6MSx|xD< zoK<+9%r=?_@s6sSdeYt_>o)y?_Z{_6DIHC<-T7($4Bt>o1zY=oT|h4fGng*vsVaB%EDm#8riGDEqE*soi}R6zZXYj zz3RyOM=B?y*uD`H@8_+iy{*Obshc9Y=gTnnYwGA>`Bt>A@|yLGP6ls9+t2zeIVkmg zZpUf|1v!Lzk|BhHp_kLxiKE7Z=UXi=4FJYIJAXAWH* zItux9@A1jQ+RFs0#S;#>~SS~J!>`bluO)OC-8lTxAf<4>^`*?i0v*8THG zAQO%YujkG={|VkK%6>mFfJpmw^Xgm1M&wsMX>{PdYRy%34_tDp0b)S%O=}N zW92h`M1q^VuC|+$$&_HGJYXglwe{0AKKAC|BNbyOJ?A>m7NIdb@uU!a`<`h9nY_hD z32#SE<2;z(lsS`77Y0M0Z6&yNPeAIS(BLOzD)XwXc8M;TG6@;eidefX6ZcF#x@)7- zirjPu!u$Wa;@OHGBb{T}I5ETDPsc~W?yZsAgIVi=(y#l>qNEb3KfibEKbQ*LgKdix znMT;|=D76HsuABT8h?nqL#8w`J=e3pkA=H>sWdK^`k?qsy`WMXLV5usEpa+zC_Bmp^f$PE`Ln79iAwk34=k$9+&aZet3rk z)C2LeV4JmR{(?veDPwuaDPPV<8EK1k)P!gfcBLvu+m!}^$2pKS z^>4oJFaze>_vkc}`=xic6LY`NRKrfm#;@v=y)YoQ_}PSxWTtlHWIpVjg%d~aJ31S8 zK<;U`C&r3n&?!mbpBYNW^dEA(B`5PSGTnU>t|>>;17`FUx6_C`wQ19zig0M#4f}G0 z2EgKoCFdn#Eio~RT0dh?Y&T3iOC2mtm`+!v4rnnJhwP?%P@1X zs*Y_p1sA5Ho?1H*IitC4%=nGBIHz>@x_e2Kj*50(!sK% zu#@#;Gx|i2xee)%^ANk1e9o2@)Vnt0T=b_0Hwl~N%zW%Zq4np-(gu2PLEZX{{@O-7 zx;OVAw{9!uufW*>{uUfQ!tL#05W-RvPf zMAnhcCJR|!e806mo5*4xu`ljOxdCDfHZDiHC@AK**fh$~iDqZLBE3HJA?H*1ZpPtm z+-W4f@#2mi^wP=s8}8hR>I-~uXbmaxAKuNiiNW$p6}5kp(L#a%n`#y@3HYEjhnGiHq54qkAzRBBS)$7 z@V&GWWahu?pI*`pA0o6aYQOG+o^b9MHis_wR%*iVE~y8b%NGn%oE)U7TDW7h?M!#=7=-Cq%Hq(=Ig1y)SMHVJRllB)ne7B)J*+-J6GzIVKEefqA#G@L8oIPkyG`XL&kgd1xkHXo5?>WcI2>$i!%BwB+lfd+c zrMN&iVq;m-Z^mDwES&jpaC%E1xjzV3%h1b!WMj6nl&WHQlh2^|TelcE9}5c?ZEpfI zbFr7%WSW!p@%i>BlNtEA!E)mg3klPU+r4GjJsX=#$3{entn{JzjnSv)y3o3;*Z%-R z3##g6Q40qMuDM>e4$KH%{MYco?6D}Mtv7F8X{pD+4hyNDva#^dhDqZ@SUJ{5a~-!M zQ<5T|LMmFHm5_FEh6wFJ5)LPqwdNg5C&Ao*-%ImuK{%xHL>z4ChS3Zn@&0 z9q-DpQZ#4w^}0%Aku}rOl`e#SkMVN?Ye>ef=v|g|t9iJ>lWVWpT#7Q*c~6?;qv4&a z($hJ83ep;8?N%bz#DG4nW3s-@1e?5@@oIk(uJS)L|9G?(?5q7_ub+s9(q9sG3o1>Z zEmU0EzMV+6H<{ind=-crf{X7jzv+WE^UVC)4J1@TBu+B>K@KprHc{NZHbbApI^ji) zO0Z@NbK$r>3U4)$790X?tp0_Wc}Y&-&)+nln2TWrHjB-;p_O5CloCaW2azg(g* z_pJcq?<-R0uXcgr6LSxL?jdNGKQ^XKsfGh5Ck0%MdLeH2$=Bfh2LeL{8q;DUApC}_ zCd02m2$L;YqKp%q&sXH0Ftrq~iG>=48;n3~py#LCTPZL!nnWMZ(gY3G7E0oceIVU3 zAL-vn&PS9TPaXDD1KSP0Zx&|J*zE>e?7!86lAq3g=9782Z05JpySmhRg&_;uCAgygxKv~QMgQz= zcjF-BytAk>T`rpK^qTp5nu4u~AVo@ABp@p#beG4Bs*J=jR!+^B8e4`Osb zW3|2ofZHqOs5hVTus|iI_{K~Zc>kqn8`S0kLuOp`OM)Rw9g5q%$%?e?O$zv4?bbuK zozq@VXWxT*(xBMa-*wndxy_@2 zE+1Mie9hP6jl-Tmf1V(MLGQOoSEBbP_dA~jVv^%au}sLYa(`w4#>?FP<-t~h4!#`g z7dVKm=g(O6WM{khs2e!L1e)`o7pSegq%8JCzA_Sax){bUBMOFbxv%9$7_zQHr6 znJ#%*w&00M--kV9Tw>HFSWKR|1L~7YQUwoBfZuiXR3zb1v0sXph2%#-!oPQi0Mi$^ zD!M7pEp8MJM!PsO7}OD|_rq-+bp*#qI^LnRlk7j<-5Q7dgYNX!txVy~;8WNOoYEop`?C-t-1q;lsUsdT1xu`#syAmSf0BcPlI>K8t~3Nx;N*MAPV zcBpoN)x71XxN!`cy|xMQ3#f$Wf`@v;y%fQjKaUf>UpO5?0)ZZNDpS|CpNdI1&a@Hu>G>2Lifh38`P*XLS&Gpg zjHt}6#Nz3g$@;}83m)lQ5ZxVJ2Bxj1bs7)>oHLnGG-|cLcFIL*r+*qme9{$24txox zM!tye3u=bB?w!gyyK6D~lHjePoMIT;s3PN&Sp@S}>r`21!a=I_ZrgR~3E&;Q9>@isvVfADOB>@gMw$Lu3ks^Obq|kc+QpJWtObfwUU(-VDo7X zlzbWkBk54}vn?K_w8OTwC|4juaI)O-j50KS^*rob0|^~UOg5R|sm8IDg&O~>ZD^?? z+RdC^LBeHJTe#aJut#vKiq=Icuq`Keym~;cTYoR31S=UMSuWgp&ZQkE zM0xFbd&@ze?GOL>Z)akwc^^4H=zuP1H1A)gl;alj7q8h~^^oz3YZa9mS)j+petz7l z3l><{%r-fE0Mz&zDX2->)TWHj#@EL~;oQ#q;=gNw7M9X%oGVB@j4$V^VI~A{xGW_X zlXlj+Gq+9jLV%}FmOk?w1wZ*j6`lG#0B0F(^&P!3z|nTUV;!+$NEh6T$u{qT1~aeB zyUhga(<#bT^ohg9a`EN4nIcGAUb5IAGzi<*eqB4HJ_@JXX>IO(8w9%Z<(5~?9_OFVtVia zKu*Hj`Ja@-Z0itH_k%2;VNY87xx@+^eVAoWa^}MkE?S|2nogiSvbg=cK|N3fYIk0! zi$b;{#&;JpVt{4j(He7m3Tit)o(TThjN5%4@7K_)LYcOs4i8=sY_87B>92D!TIW*J z50up7Y`QbuNk!5&EmyR>^P&@(thq*7J`r1GzM<0!rze670j}xgHt~>p=2K$@9&5PjI~X%xh-0Ui6^=`d(|6}HS*H5{F+9jdhB}cbego& zc{V&<_Gm)8bF$-W-q&E=ko8o8a3`$PWjz0~y%{TqhunmoAWAr;l{2laBvHi&V?Wap zJmQ4(}^PHPua1$3KSQXaBnTV?Nzr!@231vl_ua_eV6o63KwVj1r+x z&Jk$ad|q;hi3)c6Q|J<|)PYP_m9!~aGF+Y(ZI9fNj=Jq9*_dXV(R6G3C>xc618ep- zo)67HQ{JZ;ZKU4bHU=?YJ8aVmi8W*GRm}|+cR^o!kX~%tBt?E)AyjTiD8egY!|XW47O!9Xh->)tNw=x)->1pXu|`G z8uUK#ihZ)b8r@znKXgA>gtyV1hUp?1dkVe1F+!x8w0Etw=taAcagY4s9}>=xeZJ0Y z#|L8bp?Tlq{j&!rkCroEA>&;V*DYN>>X9+!+&a2gzgAfKz3q}#VjCWh{$YO0pMu9X zRQa(xk$&4DuKW#wRCF*Jcs_66jh&afcc|nSB8NfN9np`SDC`)~7sWxa1FlW|Mmvc; z;z#BgBj0Z1qQnLDFjj4Z);r1Z_V)tp~PQJ4cL~-@yIYwJCdYwna z?4E3RqRx4Mv#sngO{$Ph4Y~4_9tP4-3h3L(I-9&}L}`lYC;FDRQ%lD(Fklu z-)@zsiNecbidtto$herhO91brGx#x_zDK9t2$Hrm*RJd<#bdEc3Y&DAi7j2vPvY?# zwDdA4XXhUWfetqx;f@YqTsoImaU>TdBt31el6rG3hq>4Rr5IRZS{=M1*otAw6{3$x zKZGvObZ_s?Qp^`llHVC04Qf-SW_8qez!yI|RY)xHqIO;MHZx?L!c)s)6Kxze4=>o> zBbZg}(g_{$*=l_BN=}@bMe3{H*~3+cg(a7o^QM-k9p~7yrFa*pxZcWa{*E81zke_+ zk(MBM`I?-&j-+oflH8TU7)QaaTuS~5H|y}~kJ{>AMGc64W!p9T$$iG*3Lgcb4iui| z|5{1LK3ALUcB}sB##T#DJ;j$@Xm(3`cn7h>`a%oSH_0IUSgTZ2rA;hiW1n{=GZtdz zT!dhzR~y>uUQW8PQjBkeZkO=1XW#7FDIGUNx;O&`W&$jAN&3}>~;$-+-982>ug06Wv_^;SqdtRXRip66aZE(;htO9 z>(G}crvLlaTGS1`dE&7l2|?z&Y<;Dkgt;fakqFzEi3U#lf)4A~;7rKN%7L6td=UJt z;+QMJ%-@fF$q)+yO|{5xY@|P?e67i)jlUJ&pV?|GVc&^==@q$nPxOMzgg*WL$TB$A zQQj_?*oYg?_+8Yu8-~6iKB0BrE75u%fdOo-dCBqrgHil1Z@@>McemyzM|EofawHhV zf0q9jqY(V}EWs%D|6BiyQ3(C}nqU;d|5k!gi2Pd#MseWZN-&Cp|5k!gi2hp%Mj`fZ zB^ZVHzm;GV68~0$Q5^cW5{yFf-%2ow!({z0Mj=JMbh4Hv$N$ABWd6PCe=&+9|9SL3 z7=`jCf$yn4y@CQ)z2s;>(tgsewAzwrw2@>hn{XccP2`2ET>GP0tO-5i zU~M<`ubsxC@9(<46*FdDamve(>1C>{v0*vMwDrk4e9gEGvudp>>X%!QH&2?=^l}>} zpU%$t{-=RVckewsWYmFeN?ZngqXbE**N9PX?XY^cKQKPqv5l5$AKUK6jt>2Q+eHtr;Po+!QE-gX-t%|u=X z#lF1}B!h{8)lceGCTMoP`?0rsknLV;*c3U9v9XsPdgD%} z!e&z>HocBOUeUQ1r`Hug`~vUo#pni@)jwQ4yS)?}wPz;s-xVM?OuVeKtVh!$!A@HP z-h+M-PiYsK9x#1!^3Z5X1j_h5=q?FNBG!i^VUv43Q7mL9)o>sb*v_UY=i1i72ebJ< zv~?q3YP<1mnnf9I<)6?lNi9P`Q~f8^L8T~XzQ@hOn>@ZHo@OJGg?r_)Xdb9nVY0#& zov&p2Xew^;6%6M9WAN)Ux+Ybi&}?1$VVfU{)tukdZc~SzW$S%%&ZVPB?8DBu!76m~ z{8i$?UV;(J;v2*HNml*qeLEk%P63(n()5>vZlx-Zs|Z-vzz)q`5ilrEOusBA2Le+-lyxCZ+De?;Emrpbn8M9&U~%gvd(@SnkQfDzP;ZMi##G3=PdHj zsx12{H~IOo#Jo%``&5e0>JMG?dRK+MAAZ%H_#90zl6A(hWSegFq=+kZLoCU#)e~BO zIT(C`C+Zl#kAUU(PMS#VPAJt9y%TqL1X%W^3$Ok25#H7AZ1^_*5lkmM8+URfV028q zz)f`u!CqEZP1-2HBF?Smp_>bgdv#xpSY*Tg7Nz8(*%45V^@wXs?0{AF{n_R(JE5_j zW*sYe|B0;)6^~uWhgz8p*>}#?V!#h~?$2t?nEXNV=|EZ?4$vWkG-(^3o!C5^Ou`m? zR}uzF>SEE?R%5g949PZ*xbV;_)D++R>Q62bYy!c;+ugI1IpBFL;bYWeLZyB<+%f4B z0bN+!8cz#pQ=A zH5AeYr4M2MaFwHhe4m5jT7*tKGF&X~SKfF+1K6S(V+L zX=XJd<@5D>_ulnWHR^7$4`iTFu<>z`YY>qz$!zwDF(GXeo!)ty3r%$><39CC<4`No z4>=f!sT2}QG0=K>vIs{QCA@Wiy@IJ9pRUKLj8QFm!K2DAM10WRM$N z0j+P8boR8=pjDuQjeRena9elLX|gwvkPzHq5==6$9XFXey>7zUp|$nviL^;+(S1Zv znp|c(KILa?5c)lH?Uo1^3Z_rV8uY$SK}iWZmaFNl*qIRI+9^)t)K?0t-} ziAe+c+uAr(9BxMQ`VISI99l89y~dit(~VYV!#zE!&0_K5>7G`+w)f>bN;L(WLlP9)$?dmmh~*)5BKIn*S!;FWM>CO74td-D z%*EEt7n-?M3vh!Ji-Z7w1Ceen9_>ub!SpvRo}Mk0Ahd45MvweHXgI3t>D(P4AlGj- zt!V_tk`G?JvV+K;b53kerIa2`PhkzGOo2`n|qM$YjF)mE(ONynX5## z=E=UIT}2p1Rnj6}Hl%x2uxF!k21IN))O0~U7Tv6w;~B~Aw3XE6OdYKRypvY3M!lNI z%qr=hc2%^aB$M}Gi$e#Nb1_|++1ZMvbdN4uI*}cYdney2nsBKYG zR-1wM6#`e^a5tdBj!mDLpT)z{yK@p@5?Lsw^=(*JC?8lVLzQe8ry+fe_4I^L4t`Aj z+Q$CxyyVo)q*vZR%2}NC^d=;1&mkFUICtINH*^yo9S|L~*+W9K zHg7w-^-CI3wbt4B@FgL4=%v?t&*dPsMDopcLJ^C_%kqyCdU$?W;)>HsDsbo8Bv+Rf z!W+&jvMCj$O_KA~b-hIoD9EH<=nZ}fa@pUHX)=}J{EL12ST2zE^Go%cLc5BQH^}hu zzl_;3?FE~a)KEx&P~o1QLqZPjw5;wO4M||uTqiMh?giIC7+RPsDhJn;?I44Xp|JO8^cPG+f^l2w1AR5 zy>mQWRwR=&W?#dtZFQi0EfnSIb20t-!PwtgZ_t)wu=QJS4zxD)ed^f%3g|*#_b%p- zL;Th=BD#__V4C=%moJc(4JeZDO!1I8ye8aR>nxr4~g2(un?-u`*V zGxtq2F#cw|;k>C0inqQQUZti(?YYjw-4D{y@p-^&E#6|Jk?Pufh2WCu-<3{n;!6R2 z(X?y(uNUKp?vP@K!4vZQo{b)^=@7WMEzF_c^GXh&T-jrSMlYvvWW*;5>mV*{w&(wTq$wgoH>JZZ= z66WM~ooCFv9%TGlixo~1`SHFsk&=iy$Zk6`Z)4I6Wy70d?9K0@XDPR^&_X2Ic1yaL z5KL2M`zU*z9+}Pz%-3k;%fc0Xy%>gjIjF!Ztk<~bEd<(Za2woOj=p&&>$bfpK_RBO zvwkbh1oJo-l}GT|{PP90qBSMB%W&n626HV&hF4x~6sg5?^1m_#J&B}J@_oqml@?U^ z-5=NfDGPaTPJM`?&4A0ZhPpnNTX0_BgwdE&97xawygEoEwcR?8bM$7)F~GCZCE1i% zqq6o1J$^~>IZyeYt0Ww+P(TxWNV&g-W!2py`%e?ersCQP z8B+13`}OluP*fY_|44aOw3}EMPK9YwN{mT6b$8h1PbDbFvM*V>tQPHu2VSgP%SP=m zpF-o>CMa!SH%dgs^i{tzo5ulT?v%lt+xwC)>FTic4Bn(DslNGwdV_8KyRDHx*nZKOpu3w+Q0 z-Q~KW00&0d*~cw&LECOwwBMVw(eGZ5V7-z7ngd5Q4H%2jiZxlvaT~F%gjGrzyJtXl z>4lW9#Ga$z>oGWYAcRb(X=bJ0P6p~$-!`^4v1I!6m+Z5qe7r1p@zMU2c90X|&$r#* z3Tnw6n^$#OfL`BWzPY*;gpYV_-gAe@J2yOgI2!O46hwA1{9d2{&8Z0V)oBD0_41e6LC$6(PUQktsh`avlFzzj2Bh0@{%;$3g?kFq-GY;H?1CreSxb zD~-uRhdgmCVwE+V+v2MRHNXkaXXHx2g-eCjn zdA;R3A3)CDS(9#&oKM3Y;*(Veh+W`MiO@M;-0Ge@ziU4!U%Wb6yZe3|I_LRlaNc_l z^Ii>fYtBa^jrgObE&11=c5?9Vt4#>`NA)h7^Cf^|^y|oPFG^AH^nPKv^`yKVoTT3% z5rKg-;(Y7+b3pT8NpG1$39!Xy@h<9S!DX(49iRS?|L?{7obNyM!^lf^+E==hU^k39 z^4cUMAS3Osr}=x-?&(u$XlWz&y{gn8GtxHh)qi!ISjf1}Z^;det3V$kN9%H?8f^S> zYKep3Uj=4cxZC-vQU9;56pvsC&~I;V2|iSe*-cE(v>i!iy!S7s_1DOGTzh-H>%DfA zvwC7w;?|5*1KJ+z=?bL#NEv!;O6-5rT)JJkacFz`p>d8`2HHzi9TFweU)&uiyCt*$ z?CWMFCx18M$fb+M$M0sM%>Ba&judj;5$$56utWo$oek>c6Y_dtwCiSJH8L2p&M_RT z!}%tL7t#jNI3~D`d7_{moI|CiUgahNUFAI&o;ws+A~ek@&s^|zd#o7uD+WvX9;`cm zjfC=C%VnwAOETd%@^IzcdJ9wXuG>FYG=et$gEh|tYM|(n^ja_c2=f-A_n)SdsjW5F zf8M?6kDh{d0cSbN!1k?u>Tv8JID0wOUs`N}Z0iSm56xFXptY?8Pecba9=|#*H`WJb z$qVnV)zw3G>#)KtB`QS!x%HvW|0j%GNpb072?JX->1~e;sn9CiBOdDA1Xc}Pc86ri z`>W_rIi1M>1inn)tJO()dq&@u`=D=AuE9FsY0hBFQv-=LjL9Gj;*D#r;rQy%;^)@xYU217;J)#s`$v>bo zqKz25c_A?JLL<&I9^tP~EySTj%fvb~;_Ox{{kFMcQI!3cde30C-hrfwyA zb3Jve464HUTXs4HgY{VKyl?H5b_$m1ZM6y=qdmTeErz^m!-(lCqV>uwB^(<0vLoH~s zCOW*6qQE1!4?nowiDjYRR^&=}99UPGF&!xZKb2I)40509v*UU92Y+BRdFp;rWE3LQTA4VR5m+vmd<@eip$W`ST)&cV zq*{*{XY=_Xu+0-;*+-dxe6JMd_jiWK^>X~wk-!EJ$r7+iP;CRNKeE9*%w?GW=%sc- z53wCNL~WH5Uj*k*Q%$8CpAbvSNaF4r6g1r+J(2N=)L}|C`4;QELHk_Sn!?w`7{6!a zopNCoa4%3C=j0P%{xQe6W^n^7>z`CVZ{7h*f^Pd7&&OaymY=oc(>w^#f3xVy)(Il) z$8+R(2Z5$IvFZKEepr9{_HxD(5?cCT`ESxFv6JeJFWJNoLHd+j>ALP*VvU^C>N9wX z^tnns4|bM;yFcx>tD+wu|H~nlWrES_-?1sEeH;qj(kBf!Ung>9^($jEh9oRlf30yw zODWV+hYEG{$h7oR(dz>Z#Im=mDEMGNCi%RJ$=xS)(IfK~*2-O^-83?I@C%g!++Q!- znk)rl#81Zq2d;)gt$c^wA?YlzvdCXMQyPaXJO-Nb=LvStU``)C{TgVrFQ0OG-2z+p z&Y9+Ol5Ba|RO_u{rC`-H|Cf2p7wmnW+^Dwy0-hOGw?Fofw&I5!6@$c@Iv>4xkJi3C zs7*K(p_WEMe0Sce{q9u=OD~7Uv$y1vFsFxQJ{ybBw`+1rTDS;&<$Ogr$keG_n*X$QoWg0&)DhX(KCesIJU95{4{K|0Hi8cA)jZWmCWouy(CGAD~@q@mb>hWNK zBxj6jD_&hUA=)n2j+{aPZl5PwaN^98^Ne#H(sKxGs@&O$GCJv!g%eFE^M~{3)WKXd zeRpu^=}ZdF9#7$^ByISJvte)a%1gjGrK^Qr>^-D!6}$hbBnhX^pDZfiDMvN&Q!Jmj z%5hb+L zvIXV_AMIkpdSn*8U%Y#gG30~*o zy)^*qc(Ly_FHGa>$azpr%E4lF5K)O zC9AI3WXE(9$#n0&-e7!R7Mt`4&jf4u`i6+mpQhe7d(mAq zcuj^$C*tXPcW-=>r4UQ4uuh|dY$ADEIz)0X4Ja$)v~Nq^B(OC_YT2ckEGhPM*94=8~V^ zj+yf|x;;|n?d0tCj@&$G0CT~4Mn-g1os7Q>!AVqj;oN=s<+^&fGwe8+nOh5a^1D>l zHKI)HF5i0JjWw`EV0-H-3?)pPyS2Ay2kxWy6-Jv6(LkWrVn9qQA6S;MjKA+Igr;Y^ zc&NhYw&TBBi!S>%iSa4mX+2#A+|=?)^DS}ErfnSQ2#qA|{DTKF=xQQgvcFHOJ&-iD zc5tuyGC=rEz%c%1CvkY3HU9|RS>)R+eV+~I5IWI6wLY>r;Kh4ZKj?Dk(WBYzw z%`e38bl%Uw-x0ISnv+^Hd=a>L_Z!7CVP7F&g;%jNj|fRwc_p12CKbca=nv%%5>K|` z+spLrL~8kxyYuA^qE=A5a5Vy5q)#Qk?wD>RlqA7Y`hftDjCpO%IrtiMB}^vGt|W=$6iEv;K(H0}nLbDe)LjG(KJrs%#GI`TMop%GG5X1_Vtp-ifp-_1G|v3(}#D>5r3;LR7hSdZuC2&P}Ig{NA; zT0KX1?U_#Kzu$LD)gJ5OjFTVyE2wZpSSfI8JBGFz%uVnmwL zv@!lt2P{;vE!c?u3n5OPy2_dhHRm?9g_-Aq$Uvh1!vh^eKD_q&%|CTS{?P|7zsvXG zPKWv*9;Ghgbh=l^ch@9gcVZXeI-QSo(3rie26_qm_O03B-+G8ZVSnvGbfp|#t9>^+ zvzt7*=y^6Mx*9T81+WddsaNQaHGLrF;&;hrcu(f+K9010i6!nIEGm8q&`8lf zm+j?`^B_yyU{N$HAJ4~|nk`W_BRmmE_dM8R6c#sT+H z>JG*;dws!upnP+wO&<70aqYisnNC;>7tY;QZzE2>Yo3UF&4!?#J>U0UZ6|br_d@iZ zd4We=>J@|0VNzG)eWa)o&rQuIWP;gp;H~q|W7Ds&-y616-a3;_9De9Xt;uWv6(^g6 zmrhhdom58S*YZ+Os^YzVZ*?q@*HKvY{8R|2=v$19s=p&FVY2md%$e%)##$Q0Maf_0^2o;PP7s_{W zXT$r9x%^_UX7Jon(pHN7SA(mz8nb-`@KK*;YF>jfXlav4u913h6-v6-TKXKaB)TlM zZLm(bjZQU5wgbwzf7isYpeyWoLp3IcCJgsl3Jf~X3aVGvZO|G(7rf7r^P;Nxa6&H9 zNU(?sdhzSbl+&od-S3?ogy*Lf>#g-2dr&sFjrSo_Qz`^4Tw3eCyBc~mSB0ngw!!id zraMCq>OeAKPs8INixiqH&RU(iXq5(W- z{Ac=qF^V()9z~2o>EHZcj6(U}ZNwt*=BI{PTuS$fz<7?y1x@<;DylN+g6y|0NMQ; z{%|SQ!q2CN*6rm(Tq9-s$v7+Pp*CiY6%~l)#O?=6&HMw$rsIj{ z@3WA)6RAFGN&kknJTl9F;`@%BG$P{L^GBI6o}kag4m05rIBqzxrp<~9>a49?@6S@9 zh+&_1R&WvVlQvm$Z>oU{r^{#8>g0p#rVm^X(-B)xRD9gO5w|^j<=179W|SFV4m2N15#l{TTd9!(B$PnhPl5NSvp(V zkY`><3}jb09K_<$4ZuME#wC9eb9SVV-q0233Tg)gIfIGDlh0CFomFJ)z zX#G;`CO>O;-7RLD4-J#fs50+LS(1cunq zJWWqVLxd}mSSKFa^E|4C44>J1Lwq?9vSvn|gi*a@dHaT5g+~mmt9Ujd%~lBqzK0EJ zoWf(OxfZ)f??Vhli8|o=D}}IsjGNy&)=GGndGB)mrV-g{Ns|~yDopva*NeDTfDZHh z-gWeN?02~Q{o{c|C{r+7Q(@alsATUkT0aGP4}DWk9iN``Hs21*IzZoeik<#yu!sEC_Cxs*6ObQUvD zONO?X44WU?@sKERjWhI67h#cIQE}Xy2ctB3ExF?ux6}DSN=E7(k^HNve!VCQDC<;% z=Y_Kf?bYEj{#^xNFOsEl^>7s)mjg}++XO-HCYxYKx-wY0a&Ozqg;*l6{I%Q4*nH_ zFd&#`P^^+T?YT|=_+&0&`E)yy0o!B+C({)5%KM0W$L>R+4_b&+rCOg>K|8Uvq2^yc zSVS}~_#8N3mP>Lw+AXG6p$my;^F~8djU;sLjppH^f!f2&KZB$Wt!s5sdy=|+5c z`Fc-}r-0|R(w}~dxun7> z+Zrd$>s~z(ph1^_IMoBMGbSb1HzzZ9K-eFv!p~wI@H)I`U_~B@VO(r}bvG2$PSiMR#1s;h z+4pw0GHO8P{md*^4638exz{wx)_}c}dFA_(Dj2*b`nV;l7E&Ya&r1omV;E1Fh_hWY z)L!b>3q-e$KL0g_XQKc-!-Oc^g=w%(qUFBuMO6R4v#w@T$pt6nMg0l(N;063E-U%G z7IXuDA79s552ia_XE`Gcs-}?UYa!nOVrsXVPF1x7uaH}_5r!uSL~b7a9?%91D^;Qv zX!iEw>}H)O+o;g@csu)mbThU{8V5dbVc3Pk7J-%HXpS!=7GuU-2pf1GZC^qP+)3ls zmMf>4p_;$Mc1XAhk_@8Or^{4A(a}xUcVOoC)Rg_*CTVtVI>u`pNP>sN!gvq9DOl1f+``TO_4 zuYB<4-eIZiN(EQ(z-xL<1w_7hdRAp$6v%ZdoQ%jqm9NIvcdskrA*IF2!7T{4+uL+T zouyHIcFNh4D7V6FD9mbL7Bth;LEUVm_9+Lyv9I4(0}oSFy8N+RBfn-(R_Y2s+{O7S z?mblCt=5(E-baC7iX6{#50%07(>=r0XcAU2d#%pmbsi)=+Q*;25x3dDchb{HB9z)m zwNon5)be7e$Kx}xWcZjO)TJi@<=e52zj=8?=ch~FgRPT9;OY+3rQj5pGv^8JNI>=P zxf>bB1rRIIQd8k>egs)bT;`T#8Dwd7SL5IjY)e<#`cG|r32LS6V!w4zr8VX-GR~fZ z7>d4SHDe06@kh|kFnFi%FI0t9i+q0btO5>AjVYV>)<95Y zY@J(WE@U0nOCR)mO`HbDu!2@fWcG;}TjOys=F1-a7`9yC(o(n(O^0qGPwzZ*ufprH zbQLt4(ctvHP@ZGDO<~;l?7uDo z#DC~$GOWioQrWkmt&j^WE#57myD$U!&)83Yw;UpHy+C_0B$QlaAZ=YNqonA_Mm{c= zdLlKi(kS@?O+9HH?QUy-AZH;jUg^OI&jA^F^st1N&fI>L98@vwo-jd6O1SYJ!jQ zIq)_U`RV<~T4WCH$BSC%p7`#ZU;(kKvs^6$_EF z7S|ik^#p?+`nLm(>Er`-KHxi=C?6GF$!SrWBpgpvMV<*4z|?(#$GaTS#4dE@#`2yA zAn%_h5kDVE%r1qE`|f#5K!joLVc9fc>D%4^s(py`E_AlLE@FG;;<{;$l{{h_U25BZ zp_Sl&j$yY=Kbgq+D%N;tjLcX#8JmdK5;wU~igs2fk%`i+GJTy7vIU%1cC6&WtxOSN z>VYzFP)`VKKaK7-F@txK7TDp|lfROu3elWat2W+YG7uP@wlMabMZD%){z;z8RFLnm zuRWrY4!-W+DsIi7IX~yvehK>$LXrQtpTr4!ixp-e_KN6)Tl6O`WXvd=0Q} zD(X_>7R3BIguXfD#)9RBh6jrs>ELiAeE!F=c` za!#htrDk}Bw8dJQFiSR&p64R$Av%4eO(97vtHzfYJoNr?cbh->9^swX+*APuzpUi1 z@1&3zwo8L z&zAx3mEsbQ9c2(=Gnmh-Pz`q;SDmwOsD_?)w;YjYbzrs<)jM_!!$>r&^xQ8LgJAUJ zpgm(gky=wN&t{I{0(887)W!rdC{Zyre-TY^N5r*tA|&3MKE%tLvy%O5%T@W6h12(x)iTe#Bv~#9y-9gy#+W zgQ9ugni^r*c&$;-5|#nND#c%F=M!<;-LLJwWr37kp%iB(eqK!@%7Z-`2;=(6im!up zWGYCyKmS$+X2x^O1f*qwXoPM~j4hfop83+MDoKUJxc9y880I6};GGs|MJ0=x0ms?n z8_BvmZ&iZnM#$$YM+UhVCdn>Zde^FSIY6WKFDP zeYy7y9KU`&^W-pw^eL~L73}aJbZeG}g|}sa${VTeWr(rRHS>E;`&ghMrIM}{s;f`1 z)xYCG^G_4|zN^-uh#fu@lQOGo1$MZ1=_a-f{yM!#O;Bux1MEk3MdItCIAfN1;|;bY z{m)L_gjxvZdUKv4(g2BPGCmhl8eqz9aFfK^R0vr~INWdz+ih(_ZT+ICE?z6mRjr;! zSZjmRBoN!Q^lc9;){iBNB8HztCCV@??YxBi1H4Q5}{TNVokrvqK7&sQ^UP2&4Zd$+@dA>#G1ggHdF zhHyp2*-5#e**S$xWcTK12=R`fRMRk9J5D%c&^ZFKf(+L(u0m7N1rWF4@dH<_mqr^F z0|`ZXmrma4auRc8K!zdx4RPq_J-GUM32f-iH~j8g2)>CPrk886O}?{z_I_458Gd(7 zOkx4sRlj6em%4Kh=U%b;N{6ao*ZB?kj=ki$Mw44g!UrN@9$b>@jqjh?)8&^<^k9Fe znnGPw6WqSt(|JW3-JR~!_( z&DOW%WY`C~ugmi!<^Z>EX+kt9a9tfxS>Hu8Y6Me%+-fC~N7=kO7qa2(PW7R&@oo|# zJ?Q-)tdwxv{aek3s(rO{a=It`sf4C*Xqk4h3)>L6Z_RxRNSmI>C6`9T3C?~uz5A?& zv^i~^-SsR1QZ_3u#5Gfay-5A6d1)a?cAfqD3*SFWjr0)*`;&pa#K-)FSqKan1&hz8 zV@Q@(CbVQ^lPoi(8}~Dk38!{S`a?Y`as3jWo!t~pxN|L48y;7HYuV$WX;KEd3X4rk zyAaz=5wj_!mV(C9ne#7MG4w5ZWW+X0kA&oeTQm#CK}$8y!-Iy!z}3_J^p8pwWyj!t_Rgsn;)kViqX7fL$D7B@%2$ZvlPK`2kEg%r)okOUEvm0en#@D zRtxF1*TMB)=0`Wg0%RSm_*;Gvae!xrhp+q%g{PjM(xpRipWJBrc>Op9Eb_t>%SCX% zZC`tJ>1Hk{DsPXr&@Uzf_v~WaE%TwPv|W*ZXF1ePZg*(WK&)3lKWjCA8FXc&PY#>} z=p9&K_-RfBj+eiVunv{NOzRetE2h|9W34~qHfsPr9kC(#?e*~To*qo5;JR#dlv*E= z4oY@*ufiO%pl!qal9qTFjBU`)EgPa?D2MMpkGlz^=9);w{jD^j-sFGe%wJq*)$@Ki z@)n^h&AKFCHW~?u^?Xu%HUS>&sI4|cEX11>E|#2XAT!xA%p>P&$N^5Xm;7fs3BTPB z^~9_pq7hekPROj4bGQb=1z!%)vg%-L z`%}~AbC}Wmb!vvEK8JAA-dTLY@VT}_HgfvZ3L?+??Yj+s1{qd(=)HKTjO6W=q7R#` zCPUU<)iUK1#5`cnK3$e9(v+CIq>QTN>s2bbI*dhlJ;-r3`Q-oy;-i{s*WtN5Tqdng zHXUSkp9yQ)kO>A6j&XdiUy)OS%s;gs43nh6-GWEA6cJ6z12%>}43#K2*b`<|Oa|$S zM~>R{lM@r4yk82B5hg-$!`%jP-={g+(p^i$XAPO?1{w&>D%Uu2vJg1a(pcv_OTg=a zuu#hK9HFa;q~~e9LJq8K{ZqUa-QpPH&S^!}64%jw-!HG7p=5`e!ua}J5HC`4TiaDY zBm*}ew4RD1fiu6F)vBq)y&^m6>1ZQq>tGlYtB%9W@p=9-n?&Mz*u4J6+g8Hkmzuk9 zt(OQXY_F^??ImZ|USykZ9452A-nt(odr4f(p`JqyeI%+hx}$@N^}M&TyPi?(z?-Rc z;ErVxp^TY&9R1o$+;}#&pEhYD2GGi26XHcqAG6h$)y{_{%5i>Uu~Zndy{?zMfag7* z1n(mn4Wz+qW4sb;C6SCOKl9~uGFaqNoA-Zf1VPc+jx8@*z?)&su?rdaIg*wVajFae z_Al$~Rk!$(x$$EL6LQSx6c(h*3z$npkBv}7ni-d|zQeVeRg2OJdM=(pajpv18WQpWt#IL{4F$5v;Tf+?2ZDu0US3S0@03MQA zYIzA&=j)6GiE<&B7Z(PEkz@;|QH) zd%Bi?DL8pw+J4Zk0aBifS^6}f8`C{k?bB&9~n;|F*c9a@Ja^}ZOdj~N6unk zak!!0;?Y4Q_uQ%Cc#=*o#K{N5I(8EC$fJLA&b%e_osF9n5G!=8SgcZ;^C4;*4<;&O z=w+{zv0%>~Y=e8AI%JVuN_00qmAgR0ddFz+)fS_CV!8WWa$i4U)QRkUHe-k@NQUgU z6pbQ9{6DmmH^-AQEA{mb$5EE@pfs~v0?pnxvS$_{J|;OcbcUfKkSH$jsddTLl9>vP zjeliU9L4@m>|1^wzJGV7$-SjHDzmT(M){D`wMeyeMC|xDZk}) z7O_0Pt?E&99~n*2OW%C23VcuA9cbnUQn%jjULj)8YHmq(MK|7%5Es=VyH{9G=sO`U z;$sQ}434W_a@3N%7umnr8ybj!)#U|?H-RMP=%xo7>=Q`fiN43{4a>pb@bj2*6BRh$ zhu3dy2XwjKB|Fbh4s%(awO4)@!Vbl>3q~opud>Z98(+fpDg02DnM5mOth1{2;I4rU z<1zW`zU3g6dG}$caRL56wF1)8(_!jKMLKg;6_FC?i%v%u6QP=C_3Q0wAeP4Txo}k# zY`C9aCM`^b3tqPCgXGagPc^P3kAgJ z`;&-oJ=xIg(;KnhjRyAdX7Lhnm5?@_M-$(a2TKMY>WX@Df!qJq>O+y~=o*w7_vLsh zBz(Dfg0&n&hwjMmbk>G|`58;`MJ5VazNM;p5yL|V=p~p;*409lCx_AbkF_9O|6AQf zs|MU9uAQ=fSOY0zj1OI2)Pm$Q0f@*ihDWtS>%MfL`<$SGvHLr`e&5$QNEm~NjNi#f z+ub?jq1`0Slkq)Ki%AO?W_wR2T3I&E&b1TXUHkdmsg1~8Fo(uSQ}oh1)*h2_4D>MAfMVRQHyS#*&R;HVOg!v zP#N`VJ%-phly|d>gcrf%k+7qYku>N(zNv-_T|+p7kE{#F_4%Iuckl9>h##-(E3(l* zm+jG&v7IPKdAggekU6!dDVMOOlyFb8vZz^ zwgi@0MFi{-7f|1JctWZUF`J`NhHDhiWso`D(bNXr7*0%OOTNcY6w~G(T7tC@W5)G7 zOB6%9_Sm6gdjkZ9z4bcc1|W2H&3Y%Sqhc^d(ib&!*|oXQb@W^d2y|^=+VL(1_D*Mh zKkJT|$ILJ7SgSU8B3H&Ig0h8m#=2Xa54XVL&IbdFh%ZULIC%G)RXykrx?Mbj?O>&r zr|Q>J(&0eiiRwcC61cuL*e>&Z9fU}KZ1r|*1tpgC_UZqyiQ5-%#kf_2%&Ep|uF-lh zx85FhD;Gl|+UGpjcecafYrC}y$J;>4-KZ$Gf(CL$0Rk5vR}$YpH~Q52LdY$l=dWj^ z0oJ-*6G~{U2C)Ml@9i?H1GTsij*IUyiINC1q>|7D<`_T?B_5`XYB8D+v?tYRPF_F*9ygCUQ*kAP3y)MWc46aPKK9*~QLm$VA zA0KBM(LZ1ArMiVmvW&KD;L7m@lNxE&^yCg=v(mi%OVTJ|`Pv)WGM`1NsvB))(4{-A za`U6g)=r{w!joYc-DC@HGRGgP?Ihnra%4^MygImi!{Ui0K#)uGOGVtr8s(07(SNFf zBIRdUKQu7J!>*YXozo%aX``>2tshY4xZHkfCWDe?FkRRwl&N-0$@!vd-b3pPeJMik zN!h)-fyX%Ux-Q9T*KdvZ;@kc8V?VP%GOYcTHF!kYiS{Y0VJEHx%--kpgsW zZsE>{9ZADgxszpx-3{wSeQqdv16f8zW9zx=A>=V-B;yXcyjvfnzLF||<}mh8mHSZ! zdPAD;5Z1Hh73KN!uDXFbkAkAkscO>o$<(G`r3IuL4(iMAEQbC*M)NHdh<8|xdh@WN z%R1ekpzV`2ApU;M#6(mUSRQ@ttWbk>ub)M1?rgXoP&6&R-71Er?=MH&l(By1wqD-E z1LfLI!GESlD&Ty3a*zy111yh~td7`*VJfSxoRJTDMd;|hysvSqg^dpmi05-Rz|gtv zH)Ez6K>sn*PygR2ds)+D)ijezd{dukJU1$ZgaoJgET9qF9rxF4%g0a;Lxcfrt*_(w z|G_B!mp8b9k3Y3G!cpDY7)Qh?{xki*7=_8dM-ihi{Wt#?qcHn-8!?KT|7OG}ZvC4P zqqzNVMvTJz-;5ZA#lIObiaY;i#3=6mn-Qb1{5K;;VfAlDjKccgj2MLt&i}&cF%VPWOqspz5>+g$>`=7boavj_s) zZkzER%|?^l-quk1QjjtdySb4Y)rz|=7kAcBF|)n4?{Z-^e3aV0t_!yr2Aqc$Pp-!8 zEA3OX%CmY{6nwxiF@pbI%e5+5%XMfTbi;Ym85+zd8V4G*H9(q+;qA8zwXi;@;^~kD z4V3Kjba!=8!SCG)q+uDhFxji&FRB0Zwy20FA zMktbtgO$Ht6747Vv{SIHF?Z1Fecs(BqIUJ&HKDR}64=4KYddC;(v^JF*_^3OWFOr6 z&DEU?J3SK|GqFwIA~e=}_yq-c-2@)`g_V$_`^2MP3*y_`B=Qq|7OFQ26kY0GWWaL% zCB836Mc1TW%Xi7j1o_~A*oD$mGTf;9{#&#cN!q&e@YjdQpk^{HAB`q>@_d;MC041h z9948I05hBE)`g7yo)1F`Iiyr`mIao-vXm#)6qApQPEXXW>&W-)vntu@S+K+$`t}no z1B{X;mUil6yKg1Rgz1V09#_N~tVXhlz_j?|YQpAkSKE2&ePJ!xNMxNzbTq{5#1lnQp=Hh4`jlwM4_D-Z(O>hWG|* z4tYGLkPp|3_ny|p^4luQkCBH_m9ysl>}|scVv>Kj`=v)8xhLr%PE8yq>|0+7t^Qn2 zc*b5+Zr0&tXnRyle0eF6d-4GseY3)Z(Cc;jA{Wo=`X)I z2Z-nM9+TsA-NbcsdN`Fg39~4#8;td%Do|_5c5q7uge0B`-|@2?EPn=6U3~cj@{CT7 z6`nv9zWY$GyIlZb*9vf`77c`_w{@xMqXT3&Tz?8JeCFe8C?!lLQ?OM=TizEl>x?w`d`x&$qnYE?VctP~> z=rbK?PImFsHrp3pF=LlcKP~!uC4}ugQznjW9LdbC&ajMH*v+x!Q5aIi_P-YxR{J+Y zOb2V<lc5^-%_pOg`+c z(1yp(7aV4k&PIs8C;UzgY06vE?_b7QP(kIL_%)m0EZ=DWiC0aeBVj*%kcwUG8i%Fp#EK+!4&CK{^i2ae7ERF=f> z0A)2bHdi2H_y0x+D52WKPW`LlW<1W`_*uwoj;fd1H_VC5uc0W>EsSDcL~NBRWcE&? zik8E`VXnl7oE_hlZ)7$|Dr`$v^J_K{`+)_ok%N^a%=0E!vmRdWwm#K$s(VU83Ky*| zEl@#H@!f~kgMJ`#wqa9Ub}8`2J~y2_itZt+lVv}?OCofK-8bJ`R|+id#8*V17!>;y zCcpEPL&6>9yE!7|P~`Sox|}HosrH#CUo|VC#@9gd1_zeS1!Vp0_e8>9O7j*y#R8zb zJ$9sN;t2#Fd-9AIDuL0T&u1%^x7CBDgmfe8VcCxBW$-K&;%m;w2tBF=i_Oy){9Gxp zBZkB1P02r1gwATvOU1M%T0UV;jq<$y zVU!pg^0qrn34z(uF72nSOCYKKX{8Desuz=1UzED#OSrpc?_JrA?L?Q@@t@~2!Btp# z@8UTti1NuC51v4?-xywt%RRWOd4sZB5|eJvF^}JAu|cn>wTrLP2V(I zlB5z(6gj^)w#TGF-Id)EAug}bHOBGg&r`KTj-f<0T?CIsoTlDw_Q~L2bmGToMK)oH zu~&1;iy^1|9&LYnV~B`nwpFs*Hxk8I;krHVtBF%!!p!4siLf(oc+dJ+3K;M+Q(HIY z5dErTzjsITK<;gXW70@A7<{VR;~G#&1U72q6$s(+>AIcW$KfZ0eP!vcr%*L98kIgC zA`GCqW2xW~Ue^q4nD!@-XwqT*aN(~ey3~~aVZ1+v`-hm90wJkbPNZWKGoHipO)p*X zWqwP-@?t=r@6>A|Ua643zatyiS8jc8Sse&;%F)Gfx$&fA<3d~9LI=5KVlZ-;`2%U| zQL^>M5H!Ixo4Z+ak*2>Zq878=8Ys<~x3)P46RsK;hUi^wM7Mk=Z4(W#h|_BQ2PM0S z^s|gD>ioD~=kC1S;vYxa)}Fe=a;KJT2p>$?r1O^eH$6L*JJ?SKw1a;BW~d~#)~DJe zgj&gru$RSl3;}AWU!GHL&jA&~`8x00NRR8X+crMMu$fs7Pj4+}_^tqv-UbPvW>@!djaw2ZWq2&D$%_Hc zx53-keNpW{E}7)a_6k(AFYj4n)=UnGWh?0kP7^t+=3{}k>WImwrAHZ^y~N?Kgxe;q zOhQ>$7J1rqk4W(>+Fpn*gt@VEmG?vO?|Q!W{G;cgm_eG|A92hN40wL+nAsaoSoyds z_bXtz-=u%ZG(H_v-<^E&1KU?LZ~a>aQw89;Qt9l1>Zh0!evQTQ?OKK~+#O z_a06vWN$thCxGQZ5!LuzLEjP2d91Wp%~(R>66VX6jZg*bm9t?{C6Po03OL3LAueFT z%W(W}5nk^qPRnB1TR`x#$nUqyn zk8S#^SNXS$=R@1It~c$b<)mWM`;YG{E6Iei*_rciddT>Z0Jp5>52XK>P(eDDRhlk0 zGd>)^vWxk+h?i12@r=Dx-Mlq}#MrvD|2Y~Dzh?v?OV{;}p_J#cLB-TUEd zJw zJYTD8&s;@>I0EN)oYuDLs>F%Id*rWs zF7aVuENX-WE{hJ20ZakU@&P&ez-U6+joI zP4%&2HfRToq~16h3Um_|7sBt95v5V{6Cu-Og!@3iHk*~rq(&oNB&t4#gJm-3E{R_ksQ$TM&br8Wq*x6Ga><^38hYu|h)kG_;**bs5pS zn!Ic@mIPy>Ce;?%*rV)LO!o%WHiitbt5C@8;~s zw%AFzWGl9`9wK$`u2gA96A5GcVc_$-ll-KA*>}wgJ`yp%o~ zPY>(R4a9aQkHph#h8N)db|L9UJh~Yv4K^=&`9sK~h|f;56yT`(khVC2VLRP2OLe-a zI_4JG+8K$M>l3B@`=p-0kxnbMTw_%I7wh`W#G`xVuCz1yTT+PG%NO(iDGQfUX-UqQ z<^C|dXX0=%Xg>NpD}z|X+iPE#JAPI}OkCr#s1CYd@wcyhm_=8EYZ>wUlh1*ZBO>l6 zJ-T4t&)hmZlncD8H;$=l<8@#z>U#J)Y_kSVX;!O;k}?$~rn=BlGR#nDte}Hs>5C9Y zw>=lJ;l7J`w@L{m>!=ec4`b#?$5*FM| zbFNl_V9{)#TqU5Z=JM|=fn`AHNtnItmkW9KMk^1iqWj~3H_fvo2TprgHqo8SMK?=2 z-P^~}CG%;hb4^SR=$#FCX=GdgGK|c8o6IU=(Y;%=)^KF_)i~+O4`x0SJX&{i`vnQYR3GqF!vN!o?4Jq1kb)rln zo2Yy-3=kfnlE9m%dsMwD3Cr`0e$DN8T`lh&s4}T0A-%5Qx2S;-(Z6I2b{Z4S$- z+4%j0?uQ9zf7V!+LQOmoF8#~5^Lds`vEl@{g-Pw5Mz;Y zWcJj5MtWlmxIO+RfJo0r-Ft00#6YlJb_?4ZqB4J2acDDQBWxiV!PYe-P>D@VUn3C& zUY_X5sdOdB>9h^D=GBs#^|xoQ2zHQ+;`uSSKl|JI}eU z{Vj2w<=VsIo`vC&v!2i8t`pC$EdiHZ(uql|o75@uP7>7gU}9}DzMs-s|6bi<4xSc{ z)I6UYFes5?Dc+m}A~kHsrIL~fDl)4_K~l-`dX{Y{A1FQ4Sd^Ow zu7}S?7_z(~W0Jj@S4v7r)}qW9{6>tztoYba+Zk-LB?!luhrnNWv_L)Bi*0f1>0-4! z!pRsTxXm=5xL(W6FRXe9uG6b@K6rV8$gZtVS`!06iZ_s*;Z7z5o}(Y8ZN=AL@=^sO z%WI-N%&DZ>hM2IL;m(F~Y`b2jc?oQy5La&so5I;lGH|uF{gg^J@wTws&=cB9x?Ijm zKCvx^xu=P6lCJ_WuL-GHrV!#<*#7I%{2ih)9yj)RX9?-*=^CHjQw0pRid^#V8{rTo z@)=yIg&A;qpje0XmCs#oE1uCHjOW_tSEwrODqcI@igF#X8_usBq${BJsF{Vy(Rw)f zyo%>^A+GbEhZ?rDJAjBojPa0F5}57ULxQFebNjYkPxN~z;S351stt^Xy0S;RK4xWr z_}=tf{fc5(ET|S>!tk=N9E}o1Yy+`Bb-KsOiE^>%DE=E#HQ;Y`egA2bY@pk%DOsR; zm(*<=76F_`9amkCe^!_mp2RBwdbAC>_2Ovh*-j`NqRyGMt_~Hgl&C{Rj=Uvm>}v8Y`SHYH^ox^=R3hQEkjbuSX&{tcTF-QF-CMq0$?&Qy z16)g4W&eJ9Ni5qo{PiuZAblyqr zdEW$LmM*zfQx!2j_W_;KV>M(+J~Gxw3hP*wIvY(dm6Ls6sLkxlBjhrJd3<8qFlm|f zd9-GtoA5i+)(A><6K&p#*YvA0h)|oLnK-t^qY722saVIT;lF=nMm~=uxfJXYS;p{~ zOlLmTsvyE)j&;RH+2G5*ZG7?4Q>@2XhIt%EoM=c`T;NOtsk`2kw0?CAalI52!{z*f zjJ+6j%$LJHMM+lg?ih3*`RVGn*P<9SY=7OhZ_kIGvz4oU8D)d4GMC(2JCsRErn0^* z&V{$ab?H1!D3|iveAnEu3OH;MxPH;_oONd6>U2O988&aNH@KM&mO?|1jt1tCw2F~F zk&jj2$4cR(nNwiwqW^enP&rh}C{os^SAt_&t3PWn1>J3e)3rau0e|f4KmqR}Fp4lX zH?l>%)%dd5q$7>!3IFxpccK)`LUT7AJLL;8_T3!E=6yiD>>8_;91Yd*vZ~rQunv_N z*mbWp4;JqnH9UL|T_gDL#3z|SF6>B;t=Ng7;GX9WUYivn8e#&?d8<2!qKYD z!B+9Mb6q}>f1_pbXgQfwjmoib(dFR&`S5wAD(oX1WKTT1QjU0Z{({~V$}|OfuH8;Y z*K3X>!GnpR==L#HD({m4+MV_sD~6SX!rVOe-8>E2zNSnkJ0%jwaXUTVFX%e!HRH{W z=aZb9=Q0>(@f;mi9e2P0>m&yI&zjd)f?sq*q-YbWpFPq`UcN5^58>gb7u*rw5Jl^J z+a#dd(3_zxpig2}n6!j#GKgZJbHS-ceZ(nIRoBG3hj?43dwNW?kdR|aOidT6iLGDn znE-KDL3Ow=SFkj*jnb*6v;ZUj!%<6nuvAI;m6O%zf)j$ z(e=sKbq&z1FQ~KsM?Dl&oGpzju7+Fl8_^i02(}rowz3ngfi;Fg7w)!HgFnBd&DVl* z;255kFjqy_#`=@5UZD)i^~=Bt_lqhx$X_+qoLdcMkGp9h0$8U^ndT8MLz(QS`D<^6 z(?D`6{@|z5SkK4}K8kZp^V?7pIX!(EGI`4R_qyO()$!HiA8BtLRQAwg4Nw!ET zMItI8E30ft_TKZdHy18@yf1spj*^iw3L!<3?$h`8y?_7Q_dn;jd@hfN$2HF9ocH_r zdc8WJ%U|lvG_Hp?$aYiBVt45iIStAdyXzq*?~IyJUIWyZ1jarZZ^Uj}!ng7Y;$R=; zzN_ZExILa~cYb)R5fTd9gWGY)aMgYKhcgdx*v6YXoxgCOO!oG@zUn!=j!KS>B>by0 zml;$rW7n`xR}`mD>2*Tl9Z6v% zgXgdMc}Kw}2sS!5E^8Qvj=qy>Qme<|=+@ccs~ddXc8p z!KoZv2M9eVFk0+^&l~BeYr+%P1)pc}u@6;(kmh;y+oT%k4L@)b(_7G#|C6VnssJ?Z zF?H(^ys;~6`gNyD7qDDrobCw1=O?4jahnZ!$b&cGv313JT!#>P^l)hmY291uV?A7p z^4?k1EI8uuE$baGgzC${^RwL z7vazw!nz|s8@p6JBR!CK7K%QZcuCW}!u`rk!-kBX>DU!-)UbB09Yxc%7`dPvP*hDC z-Oty9D0XTF@1FKVCNirW3>`RJidyBiqcX<$7{`?wQj$Tafd5q7cYv&W8VdW1@V;Ur ziYG+@htyLQE0n4dflo!-w0#`A4Hxo0y~><}oPLr0Iq|vpr@Gs@jL=~uaPy1$*N-Gb zCupn?yI8$ z#9^SK4b7y)RsdQuI~M+cyg-<+?shu}TIDY6Kn5do)2LRqv{q% z7r!Bh^^i~3@zo)&%Ho0D7*Dc(koM*^#_rF>zLv;3jb)slt6rP@!g$|REuMm5?5^Cl zBW)o(7le|^&~$4x$oCZW%ga^+k$y6k2g`-X3oo|GKbt|LVeppw&rn#(YTY1%*%~Jo_D=0LzPLeT(KjB(W4SM_cJD(Bap$`4Z{F7*6w)x|6mmV%Nuy$>t5C` z@u+F-iARi4{Ac=qF^X6Ju40VB>)-rejN#-pZn3?Bc3QN;ewGyjWG#Ql4OF^c&AJShQ> z{}-c3{CDNQ7=?)JM0uk}J=`@j?zq2H26Z<~7`Q)>;7dbHo=67~vTlhy3AN1!hUZ}0 z!h^T@OC>S8lFC4*tU>J&{y5d_k4|m0r~^Cs9{oK_^)OwS#w3l~dcRa2nZBcLg8MpQ zpRda_LxOI5rvO&JZQ0Xij*#l1WJ5H4X!x2EuRhESlc$j6CIb^_|P>HgHA22slIP{<=qCl+`?$P2B4l&pM_mex?KZs(cd~%9@#3rDWUMw( ziCyrey@7=2mRJ~Rv(emIiUdyyR=emhuE%8rpt&&OUM}M>Xj8L4G{qK<#5*mDj~P^; zM~oJe<==WyNjMm&HDi^0aF{!V2oYy3-8)y0Rg+yxJGri4IzLNmVR0lO7P7zf4O{b< z!I(2y{G5f>)ZJZ5(h;JirE9s+GA5@>AOG5aPJZ0gxqVzUNN%f*9LuC#r~El%CC z{#G*ZWydRrtmh)n6Pz~_Su%j_ir5jD!)>Y=M<0>U+sMVDsAaJphroC)?@eBC2fpO> zq#DH(Y;MGnn78^4t=JoW%DdNr?(X@N-_<#YtX7imG!ovRPoI57#hm((e%VT~fo}p@ znw-1AnN|#UJxmns6w6S7m06^mDsDTs9dRp_!fJA+q}tcN`p`fp-3xWBG78dm&*vO% zN2eV36-ZN;B02%OG0X4}bcTEKvw>zc9C$!=PM?ho3k>Q5zuD_xP5Ryy@)CfCX+L$@ z6EZ0Jwzp0gXM*esb#}tm2oe=wI5d019m#!(>`>T=spjUQy=_HiI2`2d%@v~x#N@m0 z)hs;@d10v1@Wk2MX0Lx`xm?3$zcpePc-V5$l~1Q_EtoLIluEbnsYo7-hm*VCtz%Po zZWW4ROm&}10P}2dYjwav? zsug0RWok9(-gcQQ*^Ap3?TjB9|eo8WB^S|2@-CnB( z$k2VNzqF?wo9);&J_c@*ma-9ey)P#m@!GY zVlv#7+$*C&T?W^FsIx48ECNg6>YM&+-azUgzvgBkfVRw-Q|3$(V*1tZ5P3WZCcC0W z>hSmG*RQAJC+=3k@oWCs8WRoh*kSCuonr-v?0TPmu&D}$sWi`DajS*jjFqESCtBcI zq|imG>kVLHS*c;=Oa`;IE>UXi{t_N0`TGz@D#TH{Qrw(`Tyr765e{%V(c~{y10jQE^2jVce*K9WZz`$5=7-DsIX1ES@%=kz z260>#bzhm+znF)!&%OK)NY?-_{nUoFZa6#=e;u87orG%iD0Brqa5-1^kK&!9w_#>! zuOm6@9b$ZBlb!ab17+{sY*Nv}nZYK9Ufg|)F)*ING1G_1Xx3Dz&+SY-HlyR!Rk~q; z(u4Q*EQXeXgfqu2MbT1NuJ^vbu91%H#FDK2Wk}eh@vf)$og%oYgaYF9%7C&XEHIY6 z0-C<|XZY;Q1HpyGzjkM&GU{Qmjb?iMZ&`K|m8RV{j} zjGLvs;#du)K+l*))lv;(K{?@~2?WGYlyk4hy9_z;cGmka_$s3A9u@yN=NBQfn9uY_UDANXN29{11%F>SPan#0Dg(O0A`8f@4yss|pAQDRd+hTEZr%J}sO9XYUgv!U?{DvGCe zJ1(<=%O4E;e}$PufOhm{+9xN&(eFn-WtY;i=`wHxx;wl_9nbtTI_ZjlMQw|z=r}G< z-pW;a?sEZovtOyZBNK(L8`~cGw7&zrte^NBnmCEl_Z-!rZ|g)2GV$42i?}_rneP(o z@fZz=7^xhqX+YjdX_loQd(oLdwrRrR0FvJCL$}MX9L+w8X8%fTMbghoEZ&$A;iKcs z!c9ve{0y@`{0n~{@&a$)3N6Ova&ciA)j=;1S)=#u5$Zvc`+QWNyzoL2EbjI++O^Ox zJ{3#6h`?>&BH=fKi_=N7@2*c~ZquVDsXF5;4?g{6zZyPn5+~~*6DGLFUm1!&RpY=+Lc1kI)9+v(gL^j zhu;U4UdEKY?Ck3Gjso~H+}3uNj|kkyJ|8wwEd|BTDYu?FCP*pOu35_4$XV zy8zmD)mRC6HbKa#9g4EF^}x}ou7%Dc1;r;lZ}zQTGa&H(;lw+_!vC+H(}qG zceQXj;ZkcRGsZG~<;xqq$WWv?-o`47)oknw+YyG1!10ICsk|Ml3waNn-s|dtWOHrj zJ^6}2;?d{pksiU=Jej}kj%Wc;9C*iFcG3@8p32>~+>65)f^yiKl43wY^xR83$xv+a zExh>F7^@$;^`m{Us>NGj;%NH&7$94{ojZ#+TTUw*8i`-Cz?{n6Vw$5GRjU3jexFW8 zfj1?l7iB6@PxsSr30Ad8?gqV`j&~noVt(1&^WznSMw*!DJSagan}?~>Z&f43YU?dK zJ#4)MAHFvG5K+@3$(?8L{qsoUn(XAmYLL?)C?z-NA{(R2hoxq+VbJ&0g@c7PurKtF zbJK}r*#4lOJxEQ0DV5++g^vv|WTch;Q?Cj-`;Ltpm0-75!I+J$-vR?V=#Hyw8@j2^kR`@v+s-ocUBm0Hj2Ex+TzLR$j0hfH!0v#( zC0RY|d{sdA_FW9!t_MsM{lP8|n63ARVGgg#t~AdfL_^ zrHamY3cpHQ!Cgu7$~uWcDRvGi0|%qhqseRyK*fk z9w>pejp0^*t2D%FA4(N-tOvD(IR8~stU!lCXkDMpl_Bxc=#VV&YDB6ueQ$Ls83L7rE`30R_@b7RL%2QE zv^wysqYybNRfQeciCs^+MV`w_y+fUqb&vMt(vvRLhIrShT$rhQ(Z^+c`ouWP zZ9W0lLe5Uqa_qUB7IiF;ZTqFLmy;I z!eH;m%dsD}ahTNa-dY{WGDPcFC{Z9$jm)*GIbS?4Ltee;a|;DYWZbe(mSFY&5u^E=_kk6LHoO#YZ@rkmzkAr)a@gB)w07)Vf*% zdgVs^#R&0g79h z>w#}GV8(gHPUkieu5mFPli5)NY0*=i+V``-HQ6eYA-)C4>~N2uP&7j`R*xSCxsu_` zeiyAMt14jse19=zPc(K@LU!5786XjC`0%G|6pDz5Q+xQe33>H<$EeU2p{uggne2Qm zC`PC@e&2RIGNNwNK64=(9)}6Io$4SXifGEPk(HM~`@nri^k6Og^kYlCA ziVC`F=#?^fdw-b>kNbLrIZojHx&rA-M?L|G`H)F2?)dxm#(Mk7CX2YpDSR08$_I6t3X+&6~ z15saVBCX2NSZdI`)(0%}F*#@`O-&D{XIpdGOeV3|8NfJ{uUN!b*Pp^uELQw7?i=vp~*)QDFJnjtk&HP-aVM3C%qIx1*Rs+ZWBnc!R3ucR~Vub32^4UUjgTH%s!Y`O6`pq)I+kLBFQ}ow+lyZ^wKU(jC6MV=umc5Y(u+>YCi) zv31Zz%drOZ@?7|uDRU?4^DY1OL9hqi{d)Ww71c0GO_o~;yxNV3nt?o1>;1?K{cV~p z!s|C9|G{D|2c*vx)%(Xf9#x;VD;wqOL=&98Uwbf~LOe-d&)wh+Y1WgpK3hbvvAf82 zY%vomWV`NnFNGrA#3X`nPXP)wd62%BuM(vdoJ=GfO@ZSpBe;u&!vy-ohO^4BYCVO> z(&m7}!76FuCa~Jyjgo^?PwxSeFbrFpX3c;o?i~iZeab-ShIX5!BE~i5Y3oYT9nnV( zzaLj}afk!?X98#`Ml;E5XF&UT<3LBLQi!IVXDK#~M$%!k*LIvK zN2hlD2(K0-p}MwTl7FzufFYkE=&XXHUR zo1qE?Yro0in|8yYjN3#(eg|aKy1BZ8It`VdSa>XnWfvFDUt}J9(E?Jx{~8uw!tJ?1 ze~w<8dT>1^lJ^ed$3xCKRT~c*;U2HV4ciTXYp8g1tg8${+D2~rFgAg%%KUmHc7bwh zl)hJX>L%K7cglD^mIPnF)7syR>A>|!qu#~o*U0GPv#hwvEZFsT<^mtC(;ne_>^#F> z0v;CTtSNydu*<>c>HUXzA1m{UHfT5+PCk1+Ea`&x?U{<9z?=!})~B*d4kaRH*6G*H zqTPt)%MLxj%c+wc3&!Oz+E) zca)$pH{Q2}QqKQ6{J041kuUE^ep7=U)sFx0Vk<>V#j5QJ7@Iwi!+CkEj)=U!-}+(@ znhoZQBC*4?Lr5aCOK`6v0cBa21bjM^fj%&w7ijq1f<)A6gQd2+kw!qK;NP`O99CUG znkorK+aqs&sglc)oCJ03bnOt@Q#H&m-GJS0tgM`Bub4w4yN}yHqytfETs~UxNaHwTl7@Icm*^iG z@VeO4Te4VY5}vls+3N?vrxILVC*k|b#)A7zr&=`PR;S3{nt>j4pPmez z!eQBGjDk*JlYNI1yCVq?(vapL>L|eBtuo&VJXM_x(R-yPr8^<*i0#tLu$`vZMdskG zkk_&W7{kkW+p-jl>Iypo9I%Thp@>@%VcCoH#JgYfuPcC7SmUSG3w&Po=-Q(lTM2|N zFNaYsYqV>g_iUth9xOO8B-ptXp#C!-hNx>xfcN5;w~vfoKozr&*;zg^oQy7c?iWJ_ zabBq}I|i{FYWRKghHov@(y}pXch-QS`U=hYz4-Slv5_M~_&!j7;e*}YT2SpNyGdn^ zanYNn7)Abg!B%Hybeeqz>iE?l8Qd_4REJk~1}62PtA)$wTd-Mv!IXEsYDFb_$=VhE zWnUXQ!SJG_l@hyR*!#qPX(K?HEJH&~XA!h}E*#s&ZV69=hg+21;4mT1k(Zg+bw@4Z z)qdKBX3$p;vJ8HhTL+RKTrW? z4ZjbmJ#GYg_JTcP7<;v=x)Jd7Lk)QT?tafJRtF25nU(Tvd9dqejbpMy8W`!no-r;@ zhxaZnLTYQ}pz+Qw{7zaHsF;X_7d6*|!j#kUub?Vu3JfLZ%QwUM`PN<&>t<+kyS{MC ztQG2{)V^(=tbzJe^%JZYT2MQ!M8)Mp4d9#QLAj%r1a@nE+QcUfAh^71|A~wiATGY{ z56WxA=RD4(oCBgTZJ9G3QHovU?;W8`|Jekj-%ZP-h4o-1;FQp*h_RAPmc!&rRiH!X zzxQ1`b{n-@p)`)GgXQ%fSDGJTJk&h<#1bVwr=QzDojr)%FI?Iy;}bD1(RY4@;El2C z&<;*5N99G=^vr>Unj83dFa~4vqaohKgPYbt?~dZrSm@OZwDBs5wreW zh2_hEn}=;`;~~7hH2M&B2T>;R3VIJ<7t5QKwjRp$ur$wQ9{;=vZoiCWq0GSUgw#7I zzlW)V=ws%aTb8~sk@mvvBd()`3Myu6idUhLPRT}9wp7R*Q2hMN6l2*4$Ebz}^~m<|b{Cgf4+wCA3 zMnHsn?mUaHMsWD@l5_yqJET5)G5V}M8QF(FAKl;FjJVhY3%;o(gD3k6Yx@2)*m(Rm zFtjNS8f+$$zum;^|DkKYi>;I?VW@)iaJ(DNO>S| zwt-7yD+L*9{T}&AXhss#Z&U9b%z`AN&^zldFlN`;_P%p43VolAZqQZlLBk+8>wA)f zco{Ff@JjN5vC}UKWSJ_lTLPy`=jRf1rqcI4g%NfcYyO)_yp;i5?C*A8I++4%H-@&n zzvUo*)u@yFwfP|Q)Inl~svpG*<*=ql=ObFhHC`gFI}L2fgiU;_gpkh%?A@#JzFdC& zQ|NUvOz*n2ZF3vTc#!fF73|(AG~v&4*032=zdO&{YvIQW7kc}#yYYq>cQW6*dN}!N zz;=NX<1FLWwBnNWaFpxA*?sg_Zn{&tEO-XXL+$-kR-ziAa;eqK(y|`1PakKf;ctdU zZ?_#&*sEM&7J;}grM{nhX3`Nw=3d%UM_++t<9^?Ir-bYJ@2_PX zf0PYdG%;)I=ds*F`o4|%{(AVrL2dS}4c9BE{9ZEpWI%1KH@9gJmc#8g0zzK zYP^*Kfw><03GBW}F|t2m;=MUKbz#-8DySGV7wQ)~nCoCutoCHBaS60htiF2S9*#N; zP@mR4G6a8Lzx&Rw0S2j!ZW&;#Zy=Srduz4@kp*mJ&P$jg-t5k(u8cwucW_x%m?5IP zBAuQ*j00IGVHm*1nt;du4@U97yg@R)?q!{VM@{QgJYtOEKhyt}7^BGfH)D(<_uq^$ioAa_#what%^0I7_%~yWqVV60 zF$&_p8DkVhc>XU&QH+0dwl2Zr|6&xRf6w|~jH2{EkNyXv@UL5x&=G4y)@AsYUe@J! z)U>X^<9{%U%Kv%he=&-xe~&OmQT?AM)!^~}VidLiuKX9Hpr+amXOyjkB97BsBe?9X zy~%$}ShWE36rUBiU^V1EA+5$Pg)FFRGBHV?&xO--Hy&}|vYlw28|&o$3g8w`@cFx5 z3fJl50@U!wOW?L%p07$Ns8}<64LDj0%CQ|sKoFo&%v_dspaw!~4)#cYt%PVvcAipc zfV##0_qQUe;V4GrVCZTMiNJZ_BsiEil6zArCkHXX8w)) zS*l@N|Fe-+Pc_u6JLOGgDl!*`VukDEY|23=lAwV(dx9^ypxKiqoJy8bN1XYUTz* z+3xrEWW}41M0je#cvmdg6v}Xj`lmu3b5z)vOEPlf@qFyeWrk!9`%ThbE=7}|Iub!q zjWfCB4*flbT_vJD2cO?afkZu)GNwJ{ATuVEQ=I+)2s6s3n)T9+1c^8x{}L^-#n2qdPdp1)a3M5;8a2Z|21p@S{OIWs23U{k(bd}28RhlMap zFh%0F&rP2{r{5E?%A@I;?bR?~%%!7xR7r&RGt%)rBIz*s;NjMfzrnDpWw-49jT$6l zH16{8{zF7T^W5RjMmCV|Y`AYLHqXl;=;CWV}*~)|{*d$2ZI19ok)_aT%)!Q%-&&`QwbXMEXWKmlVjG>^{8A z)PVY1x=$baj8(V%K&~vcMl~hfDR!4CfKTRW){q4msa~Yo!Lpf*F0$-D-8xW@x`g+& z^C@A|MI61LCRB;MY3Mg9h^eT+)(vHrViUqnru!FuKS$(q+mj>bl91WER8bEczOu>6 zQmbq`fj9)%^E^9o*us~+1DOG>IQ!5_+iF)iaueZTdL-=x`u)!3bbK*T^XHY5TR{`@ zd}wv+#>;rDj;6M1CbZ-5lPTk-8*NC`oFahsX%xuV4X>0)q$5#j`M*2$6F_{YQ7hm5Jg`>1eL(eK5fZvvdvvaagxajm z1Tw$LLO)xkuUB2`LQa}u&$94sdn<(Xj>!|O+SlPuD0)LgZsY-F-fbr&Fq*{4kMS5v z>X3X@{c_l^>_a$$x0|#reDUM^%fTf>093ZI38iyCN4!xAc$iEitenT@f%2w*yn3D? zfywiPhX*2%evj;|eY8DrMG1yUCKMx$o3RBpn}MLH+!)KSh%>$RwfgAfXCwCg?Mu1= zX-K=eL3d{X4$EoIdRr)y0`=-bzY@o>+1#y0>ALhX$WpI0AFQbXb=95oud&MAZTIW& zefg%y?E!Uyj?5!?Fe2dDh}&Tk^>fE}##Vz}Sa+<|qY}`Tq8EuchgI=L_v_Q2Rl~vJ zrmId1INavc;zpxMJwzBJUqA)`x-8rs=lBcs2nFE5 zqaSzWcMSwH&m<+%MML4su%%a5@%EPgxrUr%1$;U!Z1E|m2uA#4BQy^eVl{ubi-hhg z2qu1#>G==|qPq7e1+?%nyF5=Z&&mbJrHP$WS3z@qfjUO%o9XSkN!vKOv_Smi1= zIgHV1Q;9!W#@o~GAG>x`Db>SmsiA|j$H{Q4{oqa06J&6a38J@pMgr@gRx%wuUdPkr zwdRguJmB&{d%NRxICIkYRC#nHu+8>$4%?Cd-1YJW`D@^BoO^W`sTLY_qnQ7+;p6Q# zBkk9uTA+F-pPho+JBeK_aaE2*Xcr;$bopd1T)S8#NIij7zq|$cUVPYmRX%%@jok@^ z$``BkE)}5g?>g4IB5(*r@6h+PG=C7i6Y~8C(-3M%P~D`ZYei!!O~bm0H7G43h&G0QrIyyD6NX%-Lh16XElg-GRLD&h+r0!*9l`e#j5v0AxP7}dc*kwk$fPi`&*fvJ- zF}|WZZ*6uW1BNweR3in65Qb9R&pjxHmWyVOh0mqJGiDKu$4OYdr=D@w*dPa4T7Nuq ztuF%Nb%@%Rhp@Ugnu$NP8g5PQW8hjJLI zJ|!sDK*icIc}A?x>pGihqxYB$;h&y6^kOWh;NIhwqh8hE(s`KiO=&5Z=m~FG^_D=% zxG>#odaRZ^Y)z;18?VDRjHv?l`^Yv3}`> zv;sY464Y?ph)4QdQ|5alQ+>K3D%J_@8fyK#s*(XAE%{uh@o{RyUE#=Ax+G-shneyk zT`?LFncgAElmfgGH;b&l*n#Sq)bFm=Sas;OXsg(m4(#6L_1HxKF4ie$v&Lq_!kyqT zqwEZLl^b~N?OjaM{(ZG$r?wZyG+*&=7vzEBLpsM@vjxa9|BPmYYZFo}+co&oEghLy z8LHh{ECR9VZ~0-#M2P;-Iq~{(CU~(4Ig&<-AS*|_V~#Tk==$g6?xquvR!FuA)TRTk zqhl76UnzKKEoLr0C;?Np)L4FjGH}xjKE3lpDTqE?tk~m{2u$}r_~v?sqj6_Z`Rh_e zXobUFAzT?}-VaPk2h#n~EsVxJK_G|m1aT~x=`K7K- zLogbts5hf$$i`-ZmktKvMcQWX=8rIQ+y=?1Y*gpg0vEXAR~cP_oJ4L!Ww57%sJzK% z%0J1F@6teK)-AYx6gLPQIlbixf*~t{Ys{GK% zgh}2d@svz_9{ih)dbt=RGnZokDkKNN6`L5hh^=fZG1Ya?|^<>G@-_|(Df8HwB3 z*{wUcW$?P`_N4y8Q7wDqX2J5Yb}11_(5;VeCK7;XD>b?390YFHt{vB?_CpoBu0J+$ zz%F0vmb)2)29Wlx4jY&2d5}WK5mtOV8z}NR;=j7917TO09OoH7L_0I;Otsj63T)a` z2KSDlwor~=d*m9>!e-KKks%@?R~;a=y1s_C6s5EjVwJ@@g>cFx8Cms zV<(~x<$lHCQpF43ZQVoBHw(hkJ$U`DEz`XxaH$wp-%l~z*T{fyYM8niS&W!gc7TCk z0&=5W%DZ7$R>A{(1u-7vP7q%&AIUYmHmTHv4JbdxUiH>z6?OU zui4JZ{E0?FZO4y1-<^hC2+o(R~-_3!VV*8rUtyEL1?0z~S@f=P=e* zYJ0K3s}`*CDj09D;&!>a{bRf8M=)rq$1HsgV-t>)QilU{q03M9px80IpG;+PHDHW@ zqYA%HpUp3Zk*nJwL5HKkO(w)3-t7^3AmHSC(~kt6?^4dXZN-7ZW2#4-IWa(IRJbS; z9RVXt7Dd*_Q$Wm}s7TL`+v+0QS3ex6Kr~&GF(3C8p{(d^-A`XiP{vBej7Km&t`~O+ zO|JQ4JTUr`7H&Vt9hdpT>r{&LbzEO+><@)~ZytLV|I9)hXJZ!yPp842!#6Ll4q=t& z@o%F_+8M}HzXjz5yI6!V$w(P>ysNB|FT$$cR0Y@2t39 z99ZggFN81V!*YM?(7Iw6(zo04)HlNW-&1NA#_gPuD(}_AP|Y;75SgR;Bdi>G+8AwC z_!c1j6~C*;th2x@lY3-mc`|nGv2XJwTB6>(tKqNiV6)YkvIf^f)u?NB?jRT5?-G_B zvQZAk=*lZdXRTWijXImfiKrIDu3;bkfD5nhJ>Q2S>1ZF=Y3DGFxFU8R5i3+F}Yj<*gjl-Hs!?Ei}Fy1fr zuVkZT+Tvv?lTct-fBJ*(TrSAyzZ7>#$b=C(FR9JgOmvafwK-C<9XXXTRc5c2paZQM z_vkx{(6*}8*nSagVjDNtUY3FHm*>ytiJeP9S$YvxB$F7>KdnQnwF9sJ;`e#JB;fYr z@co&ZqDHjvxW#zxWji7?+6=$rBcZW3DGTK33Uuwe zp^?NrB4Q#*f0WT|N5P>B0l$nRkXuE14!^4pkSG?2YAGd1zxyqpnu9%}%UnFn!dwEf znvsE@lyg9O*Rk)B`-$j4r&`UoZ314uA5TpP>7%w`&9A&X?@(J%mE7=TG78RNzRAd# zhA7(2HBVb(Y;uM|{)SU9S~8BI&mPKymyumza`^laCI2f-f~6e9jG1are$U3?3OkM$ zP^W`T#hu3UDFHw<9yWXGAB=J0K!FjyG@y!lyIUh4<6o9p%P-3?CV5d$mOAh(BA-~; zJs_Bg!VB$;Yi8o%BR><9=lu-$q{?l4agKy26sSaWtAmgW$J~(08VTIEgEGhQ`E&9C zEn(Q12uzKfhm}_XLGn5!R|Lj>qV}2meA!8U`YJrepvoB&@$$eoG1F^;aju$ccl3dA3B#AumhLHHqU8jTPV&Xm7!RH-rn z!d;xorqb~HjQvWBH|)?ifh*EdFDk&qh{`zs2yRRBU)5vB`;}#0H|?p>1Ta>wNvQUV zM=~GU&+j|cfE4Tde%=%*LpX;<-@_g#oHZ-F4?*653g=ink z7^48jGpuMMm4@YevHQ(F2~+!W$U1v4KAnXG&5l20i`y!I+H6hsW?ieJ>Wf5* zft(Ylgmb%^49$!<|~WMd+?z4^2?dTf}$nS-Gif z7SiUEuq?!Ca;-;)&q~?h{Q&S?n#rxyzmjLy?kyt(PJrmb`IM!-ox{&a`l?&0Q2GP>R zGd)sY`jL~=__d#)j7Uu zb-@3x;&+A=@$P1n=b7g9Vy*+7}!c?l3?23qDb(aD<>(P-e z%7Y!#Wr+Ch$CiNgYZ$*tY)kFQ2i|Km@&`CFfLyC{fI$em!WQWFe?OFhI&v)CG;Wlj z4TZnl3GbqS&!=sM#-avR-UKpV?yQ6Ojqs`+QMf+IcT9LoF95gMEhFC6>%*DC(BkIv z>9Fuod2Ie52|kXAF|sh?Hq1NL#ML7Yz;o)V&M3x72wTUc?7k+!^264TUh_#HvHZb3 zOg9Wjmp<5v%HjL2N-jr)^eaT5^k|!KOvYg$KYq^7hC!FUXHHBnMmjg?TPh~dbBD>lXa_=2;rwibLtFA5yj}Kt9yC0fMQ5EzJ%)npp+J6$tqi;AH5Cl$F4q9J{UygCsDfO{O=><(tmfr+J2HN?1|q%nPg>kA z0~w0cyowDXXiq5zJnyQ70EyY3H6{4`(te0bYWFjw?`Zn2kHsIt?W*2>+>3Fth;xR^ z$-ZbSEByGW-RUrR;dMfIS~_?OFNqPbns-4>czH-Q7wojfE~WY6I%>#C`r*PC*zIhk zfN?j*?cKB^EQ1q(_-^0tnDQjFPuFkgSxN^|{cATi(O!VGE0@dn9nOGfo=>FjtyMtX zsUSOpBUK=C=b+-(DS9=Fup@qm_#`Rh5nx%vT^q>mSB! z1x4tVp4H}>UM^^7B&U^*W}|qfuZ-U@4(c^}d`6I^4_U4;u3ewQ?#6OWqjlCv=;9Aw z!?Gzd+LI_QoS)E&=q``;R31%&V2i?PQi(rWV<3+H8Z1JZDf7YdLf92>MfyVZu?i&9 za)??X-v+)E{<0dA!>&;hMYX~*rZ_B#d&U?4e|sEemD(ansJAfvcHFurVw!&u7A;qZ z-rPBV>Ql%dicaZ^$$!#^q}@EUg@3gpqYrm%DZHA|V0+dQ56VDYd#e}%RmjMD<^qje z9)3RyiZ2y6r=v*@pCS&SAnfYq_*m(h2gdQW1^dI(flx9`SHCk782I0cHWSN`zD7vF zZGPothzCF0X2-fD*8GU@fIc?w8rNix9N(8 z_1R~rAff7)UvC3qH{%hE5ympiv$0=B-XtR#pBEJhIu_u+X|RPGyI|=-T2Xhw*oT?t z9dR7?+dG{3Rlg5o%Y}}5B~-Xh!fyM1xZeX#%|v@|1>pKsuhk9GWp8xLI8$o($r1=I z=Mzj5iUSwP(_2pjD?yg;TITw$N*E}?q921QFlYTmb;`U9DquV6=4vU3UpnDt(^d|4 z!QKZJuxy6JT*5;4r4$4%ksi!*W`d=W)cNARNU$s)1;%4Zs7_v1SMx_Zn&}ilGi=)z4pRa4JDse`$|%F~q|~%Dmia;e055Q}Q#H z8oMlBj=ZHNTm`GA9t%+GlihvAzA1=ih#<_0O>|*FLlI=%+P(& zX7);fxqC5b^!X`}bAxfQ{s;kD#3nu%;<}agl;y*qv}6eH)*Gk1T?NEuPq$m%#Zc?8 zhl=4Qz)^XR^J@_RhsFjK5dH zE_0sSboX%BTk+k6OX0<^BS-bZTzN6XJ_>nK&4FEW6L}|}(71tIWk$`0Wj-9c@osm2 zQ8{QLTF*$QIyl=ox~_et4t|n@uYb`f1=g~svQ>m~cuM=dg#R3_S2ufg^jDDac}3WN z`wM{Tvsf95ofW_o{o&4)i!o@VlI7%lD*=wQ)t{BlBf^-J8@rEdDR8`veOI-K<+Dnx z+hJ6%z^+dxh=y1Rtv|bWcPe6cfP2P^CtoK3>+fUh{rG(t629x+9#Ri8+PgD4Rx82K zOI?*}M;#DD4a59a04P3D4ki7Nz%DXJx;JQjfq0Rb%fGP>hsDtj(F_og(BP4(KVJzD zUA+=-8PtHRsr&=OeFu<3i0v*-xh%wfGS)QdVh75Jo|t2Q(SXXD>}dJ0oMLd-`)`#v z#L{gKea47QAqd2zJ4*)>VZl9wOPjY8yH8IF77mm{|HA}&?Khb~;s2dr&ZLSguWlxn z>$xE_-h|<-+*BY+YdDF$jzm{J3Y1&5_aloH!Kj4LL9`t7XRGu{EgBE^+YG;t>uB%m z?(1}gz+AWd=)dm=yO9{3(De{lzPO`2Nih$xv${4dhZE4UmbSf@us@{uUi74pE<#NC zZ;OkLV0=54OFrdE8W0aQ$y&JLeVo(ui#G9k)E4X-7~F-!gVv94{%*ndO_PgOz7ixMb`s@Sj0z!Y)Oz2GtBDOf{@rvibZiihz zxWhxUma8KLE0?7N+lDslqLc z=X-XZB|_f;->%@ADrlKfdGeO06n50ze`x-?5=3r`b&If7z#oC4OJA>%f$)s*(Wki< zObrtm8fPl83^>=stpy;~JT~P#u1ATBl=SQ}&jF|GB)62X4CKsuU72022;$Fnd@gvN z04zDdE9V$0L6W1=o5>l6xboQdFk-j(F}f+n<@>na?Gq#VsR6s?opfN4ZuLe?uAArR z-j$##3dzWc(OR%(jW#}aHyN(C)I4X5$8sJ4D>9tI!Y>Uu}7MU^m7>Z-k|c3S#-w z*@}fLq#T$$VbF1y{WS`5ey?o1SOJGkf`XQ@Y{-18x2^wh73jX$d1t^EW6Cma9_I-T z;P&R}l`ZiM7@64JCc~72h|1B)8#r{^x(>qtHr9a0{|`p-zq|n%U-z=E$D^io10FF( z@t^7c#V8v8UBwth)BkDF&T0S#0RVL)j>%vQaE$qu3aqHyqg=WX1ph diff --git a/examples/data/f_A.json.gz b/examples/data/f_A.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..be30ce31c06a5f8d82fca576dfb2f8821130806b GIT binary patch literal 15009 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 literal 0 HcmV?d00001 diff --git a/examples/data/f_P.json.gz b/examples/data/f_P.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..60f31ad043e92caaa415f2dbac97c65ded16a738 GIT binary patch literal 15072 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 CAvsw9 literal 0 HcmV?d00001 From 82aa305dc101269326b88df5fdd95f2eb53145a1 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 11:56:38 +0100 Subject: [PATCH 167/220] fix: removed endpoints in axhline in fits.residual_plot --- pyerrors/fits.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index d446e72e..0cb704ec 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -703,7 +703,7 @@ def residual_plot(x, y, func, fit_res): ax1.plot(x, residuals, 'ko', ls='none', markersize=5) ax1.tick_params(direction='out') ax1.tick_params(axis="x", bottom=True, top=True, labelbottom=True) - ax1.axhline(y=0.0, ls='--', color='k') + ax1.axhline(y=0.0, ls='--', color='k', marker=" ") ax1.fill_between(x_samples, -1.0, 1.0, alpha=0.1, facecolor='k') ax1.set_xlim([xstart, xstop]) ax1.set_ylabel('Residuals') From 7b3d7a76a57c3e5c7548c1684c4be36f612fa4ec Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 12:07:19 +0100 Subject: [PATCH 168/220] feat: examples 3 & 4 updated to new version --- examples/03_pcac_example.ipynb | 6 +- examples/04_fit_example.ipynb | 544 +++++++-------------------------- 2 files changed, 111 insertions(+), 439 deletions(-) diff --git a/examples/03_pcac_example.ipynb b/examples/03_pcac_example.ipynb index c5b5aecb..75f1af4b 100644 --- a/examples/03_pcac_example.ipynb +++ b/examples/03_pcac_example.ipynb @@ -210,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -222,7 +222,7 @@ "`ftol` termination condition is satisfied.\n", "chisquare/d.o.f.: 0.2704765091136813\n", "Result\t 5.03431904e-03 +/- 5.38835422e-04 +/- 8.24919899e-05 (10.703%)\n", - " t_int\t 5.15384615e-01 +/- 1.25000000e-01 S = 3.00\n", + " t_int\t 5.15384615e-01 +/- 1.25000000e-01 S = 2.00\n", "64 samples in 1 ensemble:\n", " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" ] @@ -388,7 +388,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If everything is satisfactory, dump the `Obs` in a pickle file for future use. The `Obs` `pcac_plateau` conatains all relevant information for any follow up analyses." + "If everything is satisfactory, save the `Obs` in a file for future use. The `Obs` `pcac_plateau` conatains all relevant information for any follow up analyses." ] }, { diff --git a/examples/04_fit_example.ipynb b/examples/04_fit_example.ipynb index c6b1281e..ac3ae148 100644 --- a/examples/04_fit_example.ipynb +++ b/examples/04_fit_example.ipynb @@ -32,14 +32,21 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data has been written using pyerrors 2.0.0.\n", + "Format version 0.1\n", + "Written by fjosw on 2022-01-06 11:27:34 +0100 on host XPS139305, Linux-5.11.0-44-generic-x86_64-with-glibc2.29\n", + "\n", + "Description: SF correlation function f_P on a test ensemble\n" + ] + } + ], "source": [ - "p_obs = {}\n", - "p_obs['f_P'] = pe.load_object('./data/B1k2_f_P.p')\n", - "\n", - "# f_A can be accesed via p_obs['f_A']\n", - "\n", - "[o.gamma_method() for o in p_obs['f_P']];" + "fP = pe.Corr(pe.input.json.load_json(\"./data/f_P\"), padding_front=1, padding_back=1)" ] }, { @@ -70,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -80,12 +87,19 @@ "Fit with 2 parameters\n", "Method: Levenberg-Marquardt\n", "`xtol` termination condition is satisfied.\n", - "chisquare/d.o.f.: 0.00287692704517733\n" + "chisquare/d.o.f.: 0.0023324250917749687\n", + "\n", + " Goodness of fit:\n", + "χ²/d.o.f. = 0.002332\n", + "Fit parameters:\n", + "0\t 0.2036(92)\n", + "1\t 16.3(1.3)\n", + "\n" ] }, { "data": { - "image/png": "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U1RUxKpVq3jjjTcOahsyZAj9+/fnne98Jz/84Q+bnAvJ+LbTTjutyb/jcccdR7du3Xj55ZepqTn4r29HHXUUgwYNYuvWraxZs+agtu7duzN27Fjg0N/fVVVVbN588B/kBgwYwODBg9mxY0eTN+Di4mJOPPFEAF544QX27NlzUPuIESPo27cvr732Gj/4wQ+afa51brjhBi677LL6x7n+HvHUU0812+sLyev71FNP8dRTTx3Re0S/fv0YOnToYb+/O+M9Ip3nu3LlyiN6jzjqqKPYtm0bL7300kFt3bp147jjjgPotPeIn/70p80+1zpz587lW9/61hG9R2zevJmqqqqD2nr16sWoUaOora3lmWeeaXLdjnqPuOOOOw758+jWW2/lC1/4whG9R2zYsOGgttLSUoYPH56RHDF//vwWn2sIgZ/97GdMnTr1oP3ZmCNa8x7xu9/9ju9///tNeva/9rWvccYZZxx0bnvkiMWLFzccUpK+GGOrN+Cqw7R/si3XbWUNk5Pym+xfBcxs4ZyvA/Fw28SJE2NVVVV8+OGHm22vqqqKVVVVcdy4cU3abrjhhlhVVRX/4z/+o0nb2WefHR966KE4c+bMZq+7fPnyWFVVFadMmdKk7dprr41VVVXxpptuatJ20kkn1dfUrVu3Ju33339/rKqqih/84AebtH3uc5+LVVVVccGCBU3ajj766PrrHn300U3aFyxYEKuqquLnPve5Jm3vfe97Y1FRUYv/xg8//HCsqqqKJ510UpO2m266KVZVVcVrr722SduUKVNiVVVVXL58ebPXff7552NVVVU8++yzm7T9x3/8R6yqqoo33HBDk7Zx48bVP9dD1XvhhRc2afvSl74Uq6qq4i233NKkbciQIfXX7d+/f5P2O++8M1ZVVcXLL7+8Sdull14aq6qq4t13392krU+fPvXXHTt2bJP2m2++OVZVVcWvfvWrzb42VVVV8bHHHmv2uVZWVsaqqqp45plnNmn79re/HauqquK3v/3tZs8tKiqK1113XbNtjz32WKyqqorvfe97m7R99atfjVVVVfHmm29u0jZ27Nj659qnT58m7XfffXesqqqKl156aZO2yy+/PFZVVcU777yzSVv//v3rrztixIgm7bfcckusqqqKX/rSl1r8Pm5pO5L3iKqqqvj88883e91MvEccajuS94gPfvCDsaqq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\n", + "image/png": "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wKJFi2oElyFDhtClSxdWrFjB2rVrq+zr3bs3+++/Pxs3bmTp0qr/OTt06MAhhxwCwL///W927NhRZf+gQYPo1q0b77zzDqtWraqyr0ePHvTr14/NmzezePHiGn/H4cOHA3DHHXcwderUKh8mP/7xj7n55pv5yEc+wrvvvlvlsd27d2fgwIFs376dV199tcbv79BDDyU3N5eSkhI2bdpUZd8BBxxAr169WLt2LStWrKiyr0uXLgwZMgSgxu8eYOjQoXTu3Jm33nqLdeuqLsZaVFREnz592LBhA8uWLauyr1OnThx00EEAvPLKKzXm6RYXF9O1a1emTZvGd77znVp/D+ecc84ef4evv/46W7durbJ/wIABFBQUsHLlSt57770q+/Lz8znwwAPZtm0br732Wo2/62GHHUZOTg5Llizhgw8+qLKvb9++9OzZkzVr1lBaWlpl3z777MPgwYMpLy/n5ZdfrnHegw46iE6dOvHmm2+yfn3VKW99+vTZY4iqCFl7en2XlpayZs2aKvt69erFAQccwKZNmygpKamyLzc3l0MPPRSA1157jW3btlXZP3DgQLp37857773HypUrq+xr7veIqVOn8o1vfKPG3PYpU6YwaNAgli1bxoYNG6o8tq29R+zpy0d5eTkXXngh77//fpt/jwgh1Bk2v/71r3PMMcew3377tfn3iD2FTWBX2Gzr7xH//ve/6xycKC8v58033wRoF+8RL7/8Mtdem8x8rvy5ec0113D55ZdTWFjYIu8ROTk55OXl1ThPrWKMDboB1+5l/3kNPXeazz8mKb/G9iXAxDoe8y0g7u123nnnxdLS0vj000/Xur+0tDSWlpbGESNG1Nh3xx13xNLS0vi9732vxr5TTjkllpaWxkcffbTO587JyYknnnhije3f/OY3Y2lpabz77rtr7Bs+fPiumjp16lRj/9y5c2NpaWm86KKLauy76qqrYmlpaZw5c2aNffvtt9+u8+6333419s+cOTOWlpbGq666qsa+iy66KJaWlsa5c+fW2NepU6dYWloan3rqqT3+Hmo779ixY2NpaWl88cUXa33cq6++GktLS+Mpp5xSY9/3vve9WFpaGu+4444a+0aMGLHr71rbeZ9++ulYWloazzvvvBr7vva1r8XS0tJ433331dg3cODAXeft2bNnjf0PP/zwXn8P99xzT43t3bp123XeYcOG1dj/85//PJaWlsbrr7++xr6zzz47lpaWxmeffbbW5ywpKYmlpaXx+OOPr7HvBz/4QSwtLY0/+MEPauw7/vjjY2lpaSwpKan1vM8++2wsLS2NZ599do19119/fXzqqadiCKHO38PTTz8du3XrVmPfo48+GktLS+Oll15aY98VV1wRS0tL48MPP1xjX8+ePXf9DgcOHFhj/3333RdLS0vj1772tRr7mvs94tVXX631vC+++GIsLS2NY8eOrbGvLb5H3HLLLbX+Hj7zmc/E0tLS+M1vfrPGvrb2HnH++efH3NzcWp8zhBCvuuqqWj9T2tp7xCGHHBJzcnJqfRwQzz333FhaWtrm3yP69+9f5+sBiJdffnm7eI/o2LHjHl8P//3f/93i7xGpW/6esmtj+nTfDXwjxrihjv3fjzFe36CTp/f8Y4DZMcZQbftaYHLFxZXV9tU20r3iwQcfbNGR7p07d3Lbbbdx66231hjJuvnmmzn22GPb/DfU4cOHc9NNN3HXXXfVOoKTm5vLpZdeygUXXFBle1sbxSouLuaOO+7Y4+/h85//PJ/85CerbG9ro1h9+vShqKiIe++9l//6r/+q9f+LCRMmtPlRrMrvEa+88kqN8x588MF07NixXYxiVby+582bx+9//3vee+89+vTpwxlnnMFxxx3XYqNYFTL1HvGjH/2IP//5z7W+P4QQOOecc7j55pvbxUj3L3/5y1q7+uTk5HDllVe2i5HuNWvW8KlPfarO18O8efMYOnRom3+P+PnPf86sWbPqfD187nOf49vf/naLjnSfcsop0FwtA1Nzqv8K3AQ8x+5pHaNIpqKMjzG+0KCTp//8S2oJ3REYm86c7kz36V66dCn333//rrlIF154YbuYk1bhyiuv5A9/+EOdLcE+/vGP1/nPy22Jv4eq2vv/F1JltpBM2EJyN1urZtfnZrO0DKwuxlgSQrgAeIBkfnUEAsn0ji80Z+Cu9PxlIYTiGGNJtX1ZexFlZYMGDWoXb5Z18UKphL+Hqtr7/xdSZV5YmyguLuaHP/xhnWGzvQRuSF4TxxxzTLsenGitn5tNsjhOCGEQSfAuqeviyuZQsTBOpT7d40hGudNqGZjpke72zpGLhL8HSXviyOZu/kuYILs+N7NlRcrzYowPNcvJqz7PdSS9wgGOjjFW77Kyp8caujPMD5OEvwdJe2LYlKrKls/NZgndIYSBwJqKk4UQPrKHwwuBG2KMR6dbdCYYurODHyYJfw+SJKUvGz43myt0ryG5cPHoSvcLqbkaZYWCGGNuPepucYZuSZIkNVRzXUg5nmQZ+AoLYoyn13VwqqWgJEmS1O6lHbpjjI9V27S3ixWn1b8cSZIkqe1pcMtAYFCqawkxxrmpqRo3ACNIFq35YVMUKEmSJLV2OY147AUkAbuic8hzqftfAJ4PIVzbyNokSZKkNqExI93PxRh/ChBCGE3Sp3tsjHEZsDS1YqQkSZLU7jVmpHt1pT+PJVkYZ1mlbc3TAFySJElqZRoTuntW+vM4oPrS64WNOLckSZLUZjQmdK8NIdwdQvgrSQCfDMlUkxDCX6i7f7ckSZLUrjR4TneM8cEQwkKSiyfHxRjXhxCOIhnhnt5E9UmSJEmtXmNGuiGZtz0WeCyE8JEY4/MkI9wxxvhgY4uTJEmS2oIGh+7UqPbC1N3ppOZwpxbReT6EcF6jq5MkSZLagMa0DJwYY9x1MWXlkB1jXBpCGNOoyiRJkqQ2ojHTSxbuZb8tAyVJkiQaF7oLqt0P1e6PasS5JUmSpDajMaH7+RDCsyGET4YQBgI9QggDQwjnhRDeAO5umhIlSZKk1q0xLQMfCyFMAe6h6qh3Gcl87xcaV5okSZLUNjTmQkpijLOAWSGEEcBIkqXgH2uSyiRJkqQ2olGhu0KMcSGpCytDCAXARGC2o92SJElS4xfHqSHGuC7G+APAloGSJEkSDQjdIYSPhBA+H0LI38Mx+cDgRlUmSZIktRH1Ct0hhJ8Ac0hWoFwaQjgwtT0/hHBTCOEvqc4la5u+VEmSJKl1SntOdwhhNDAWmAyUAKcD00MIk0jmcxdWOnxO6jhJkiSp3avPhZQTgbExxqWp+w+GEL4PTAMmxxh/2uTVSZIkSW1AfaaXrK0UuCtMA9YZuCVJkqS61Sd0xxobkhA+u+nKkSRJktqepmgZWCOMA4QQbmqCc0uSJEmtXn3mdBenupWEatsLQwgDqx9L1QsrJUmSpHarPqF7LEnXkuoCMKWW7dMbVJEkSZLUxtQndJeQhOs1aRw7GBjUoIokSZKkNqY+oXtOfbqUpNoJSpIkSe1efS6krO9iN15IKUmSJFGP0B1jXFefE9f3eEmSJKmtaoqWgZIkSZL2oFWH7hBCYQhhYgjBBXokSZKUtepzIWVWCSGMAEaR9APvmdlqJEmSpLq12tAdY1wILAwhjMt0LZIkSdKetOrpJZIkSVJr0GpHuhsihJAH5FXa1B0gNzeX3NzczBQlSZKkVqk++bFdhW7gBuDG6huLiorIz8/PQDmSJElqzdavX5/WcVkRulPzsiekcehNqbncDXUTcEul+92BFY04nyRJkrRXWRG6Y4yzgFkt8Dxbga0V90MIzf2UkiRJkhdSSpIkSc0tK0a6G6nRPbrTnYsjSZIkVZZujgwxxmYupXmEEIqBirngI4CpwLOpqSrpnqMvzumWJElS4/WLMZbWtbPVhu6mEJJJ3QcAGzJdi3Zd1NoP/3vI14Oq8vWgynw9qLJseT10B96OewjWbWF6SYOlfjF1fiNRy6l0UeuGGKPzfdo5Xw+qzNeDKvP1oMqy6PWw1+f2QkpJkiSpmRm6JUmSpGZm6Fa22Ap8m0p91NWu+XpQZb4eVJmvB1XWal4P7fpCSkmSJKklONItSZIkNTNDtyRJktTMDN2SJElSM2vXfbrVskIIhcAFwPgY49ha9l8HlKXuFsYYp7ZcdWppab4eAAYDxBgntVx1aml7ez1UO3b23o5R65bO6yGEMAVYkrq7pj4rUqt1SePzYiJQSJIhBgM3xRjLWq7C9Bi61SJCCCOAUST/U/SsZf91ADHG6an7Y0II0wxabVMar4cpMcbJle5PM2i1XXt7PVQ7dhwwpgXKUoak8f5QCDwGjI4xlqWOfw4I1Y9V65dmfpheEbJTr4+fAuNbrMg0Ob1ELSLGuDAVqEvqOOQGYHql4+cAE1uiNrW8Pb0eUm+YI1I/K0wDxoQQilumQrWkNN4fgF2vjT2GcrV+abwepgAzKkJWjHEh4BfyNiqN18PYyqPaqT8XNn9l9WfoVsalglRhbf8UFEJwRKt9GgVUDtgVb7aFLV+KssgFwAOZLkIZNxGYFUIorviMSA3UqH0qCyHMrhioSWWKPX6BzxRDt7JBXaOXZRiy2p0YY1mMsUdq9KpCxZevrHwjVfNLhSuDVTtX6V+7RpB8PpSkpp85QNN+XUGSI9am5vmPydapqYZuZbM1+E/JStwATMrGC2PUYgpjjH7pUkXoLktNOygBJgMzM1iTMij1uTAFmAVcB4yvNj0xaxi6lc0M3KroUDCj4iJbtT8hhIl2plA1Cyr+UDGH19Hu9in1GVESYxxP0rmkJ8mFtVnH0K1sUNfoVeEe9qkdSHWqWGL7yPYr1blgwV4PVHtR12dCGXVPVVQbVemasDkAMcaSGONIknne4zJbXU22DFTGxRhLQghlIYTi6v987MUx7VelC6Qq2kgWAj2dYtDu9CTpZlMxijkYdrUJK3EEvH1JfV6UkATsytd9FOKXs/aomN3re1Q2rYXrSIuhWy2trikjN5FcLFcRsMZRqYWg2qxaXw+p0c0RpDoUpDb7mmj7arweUl+8d335Tr02JvqvH+1CXZ8Xk4EJpEJ36vNiTrWLr9X21Pr+EEKYHEKo3gFtZDZeTBlijJmuQe1AKjiNI3mjHAFMBZ6tPEpVMXKVunt05cVR1Lbs6fWQGtFeSi2da2KMLn7RBqXz/pA6ruKYcaljZvuvYW1Pmp8XFSsQAvTy86Lt2tvrIfWZcQOwmt1dz6bHLLzw3tAtSZIkNTMvpJQkSZKamaFbkiRJamaGbkmSJKmZGbolSZKkZmboliRJkpqZoVuSJElqZoZuSZIkqZkZuiVJkqRmZuiWJEmSmpmhW5IkSWpmhm5JkiSpmRm6JUmSpGb2/wFQcVvg5ygGRAAAAABJRU5ErkJggg==\n", "text/plain": [ "

" ] @@ -94,25 +108,14 @@ "needs_background": "light" }, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mass, Matrix element:\n", - "[Obs[0.2102(63)], Obs[14.24(66)]]\n" - ] } ], "source": [ - "# Specify fit range for single exponential fit\n", - "start_se = 8\n", - "stop_se = 19\n", + "start_fit = 9\n", + "stop_fit = 18\n", "\n", - "a = pe.fits.standard_fit(np.arange(start_se, stop_se), p_obs['f_P'][start_se:stop_se], func_exp, resplot=True)\n", - "[o.gamma_method() for o in a]\n", - "print('Mass, Matrix element:')\n", - "print(a)" + "fit_result = fP.fit(func_exp, [start_fit, stop_fit], resplot=True)\n", + "print(\"\\n\", fit_result)" ] }, { @@ -124,22 +127,22 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Covariance: 0.003465486601483565\n", - "Normalized covariance: 0.8360758153764554\n" + "Covariance: 0.009831165592706342\n", + "Normalized covariance: 0.8384671239654656\n" ] } ], "source": [ - "cov_01 = pe.fits.covariance(a[0], a[1])\n", + "cov_01 = pe.fits.covariance(fit_result[0], fit_result[1])\n", "print('Covariance: ', cov_01)\n", - "print('Normalized covariance: ', cov_01 / a[0].dvalue / a[1].dvalue)" + "print('Normalized covariance: ', cov_01 / fit_result[0].dvalue / fit_result[1].dvalue)" ] }, { @@ -158,14 +161,12 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ - "m_eff_f_P = []\n", - "for i in range(len(p_obs['f_P']) - 1):\n", - " m_eff_f_P.append(np.log(p_obs['f_P'][i] / p_obs['f_P'][i+1]))\n", - " m_eff_f_P[i].gamma_method()" + "m_eff_fP = fP.m_eff()\n", + "m_eff_fP.tag = r\"Effective mass of f_P\"" ] }, { @@ -177,37 +178,46 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Effective mass:\n", - "Obs[0.2114(52)]\n", - "Fitted mass:\n", - "Obs[0.2102(63)]\n" + "Fit with 1 parameters\n", + "Method: Levenberg-Marquardt\n", + "`ftol` termination condition is satisfied.\n", + "chisquare/d.o.f.: 0.13241808096937788\n", + "\n", + "Effective mass:\t 0.2057(68)\n", + "Fitted mass:\t 0.2036(92)\n" ] } ], "source": [ - "m_eff_plateau = np.mean(m_eff_f_P[start_se: stop_se]) # Plateau from 8 to 16\n", + "m_eff_plateau = m_eff_fP.plateau([start_fit, stop_fit])\n", "m_eff_plateau.gamma_method()\n", - "print('Effective mass:')\n", - "m_eff_plateau.print(0)\n", - "print('Fitted mass:')\n", - "a[0].print(0)" + "print()\n", + "print('Effective mass:\\t', m_eff_plateau)\n", + "print('Fitted mass:\\t', fit_result[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now visualize the effective mass compared to the result of the fit" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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uU7/crvU5LGHo9B7/si76zKWK3nPoz5cveotbK/ocNXS0kLLFQLzmfCi7rslGSoWrdX4L6/pW2eu6nd3rlb3TavSH9ihZqP1Ld67ik6cu6pnTueOEYpflp45Lf3xPWu1Z4v3t/aitRqduCTlvb4p6W9jRg9sX+f5Sya7/MkPr0i6osmFNbqjc01F5axfL7lHq7Qkrkma160dLbq1fVXZ5RXSciVZbvLzofJy/T5P8/GrkkqPDZtXs9av91ZuEL/TIMoM4rm//tE1xS8Xn29qZkF6b75Fd232Vm/3e76Yct/zqB8XL170tN+KDldAkEItTQq1JL9kn3v9smYWkh+63zpzVf/w/jU9dld5X65SMqg893rxrpT/8sbljPBWys+nF9N1K2R63urn04uev2Qc2c/9G6ev6P+duFrRc28kQZyn9mZ/96uGRWt1JnFNknQmcU072poqCtZBPPdEidd8uftJ19/zANEZCNCJc1f1568u5ISXmQWrP391QSfOlTeWqZwg5FUQXzKS/8+9kQRxnn61o0mbSoSHjhajX+2o7GM9OwgtLnE87olzV/Unf39J3zid7M/7xukr+pO/v1TReQ/iuTdiWEXjqMqfjsaYAUnx1GLIWnvY4zGS1CVJ1tr+pZYJFBKfX1TcQ3gINRuFPDbnB9F6EUQQCuJLJojn3kiCOE9Nxuixu9bqz18t3D32+3eurej36XcLoxOssznB+o/vUVnlBvHcncBWLAQvJaxiZQs8XDkhyVo7klqOGGOGs8NS1jFD1tpB1/KwMWbMWttTaZn5/M3f/E3JMVednZ165JFHMtY9//zzmpqaKln+nj17dO+996aXL1++rK9//eue6vZ7v/d72rJlS3p5YmJC0Wi05HFr1qzRH/zBH2Ss+/73v6833nij5LHhcFg9PT0Z65599tn0ZeTFfOITn9Bdd92VXp6entaxY8dKHidJjz32mDZuvD730Wuvvaaf/OQnJY/btGmTHn300Yx13/72t3X27NmSx95999164IEH0ssvv3dVf/2XIyWPuz3UpC889rC2b9+eXvfee+/p7/7u73L2TTTfpJktPTnr3abnrf7TN76p9oVfFt1v27Zt+p3f+R3PAecH3/2W/nuqzAceeEB33313etv58+f13HPPpZetjNbe8q90edV6qcCXk/Ml8/rrr+sHP/hBycdfCP2KZto/XnSfQs/9zjvv1Cc/+cmMdX/1V3+lK1euj2i2MppsulHn59bq6+9d1tbFD2RkFYlE1NXVld7v3Llz+uY3v1myvpL02c9+VqvXrEm33rw8/roW3vyxTJGxaFL+z4h/PP4jqXlvycf85f94S7r5+vvGy2fEHeu2652OPbq8ekN6XUeL0ac3TevkN7+tkyUeM/szIhmE5pND7lznf2Z+UX/+s3nd8cEPtPnSe5K8fUZYGY3f8q+kIq+n//LGZd26ZlZ/O+r9M2LPlo3643uUEQIlae3VC7p1+oROfvO9nOde6jPixnXbNXPjJ5Ib3HW1VjLS79/ZnBHYhoeHPdX3t3/7tz19RuTT35/5NfaTn/xEr732WsnjnM8It6NHj2pmZqbksaU+I4rZt2+fOjquzzjv9TNiw4YNevzxxzPWjY2NKRaLlTzWy2dEIUv9jPCqGi1XByTtdBastVFjzJikvEHIGBOS1G2MCVlr46nVw5JOGmPC1tpYuWUWcvHiRS0uFm+Wz3c14fz8vM6fP1+y/IWF3L+yvBwnKadeV69e9XTs2rVrc9Z5re+lS5dy1l24cMHTsdlXUCwuLnp+rtnTgVy5csXTsc3NuZd7X7p0qaJz86ntq/Xf25ODW62MEi1b9N7lddq+9pLa58+lv2Cbm3Kfa6FzM9e0JWddPnNXjFaVqLNzbkr+tW2t1lw5r6aPYjqfqnP2B461Nqe+W97/kd7d/pnUl0r2Jekm3Srg9XU4v95bCMz33OfncwcZX7hwQZcvJ1vCEq07Nbn1N3RlzUZtlPQ/JL1/5by2Tv7Dkl6H41OLOvLWpfTv9vsLO7Xm5hu1dfIf1D53puBx+T4jNlyc1Jqm87qyekP+gJE6T5sXc7/4StW3+fzruuODN9T14L/VN8+16X/ZtUaf3L5Gb715QT8v8zMio4Uxu57GSNbqTKhbaz94Q0bW02fE+fU3ZwS/fKbnrd5OeP88dD4j9mxJXgzyjb//J33rlTd12/p53Xg5+f7MV1Kpz4jm869rx/x8+vXkWHPlvD624Zfas+VfZBzrtb5ePyO8WFhYqPjz++LFi56O9fIZUUil31X5eP38LvUZUcxSPiPKEWi4MsaEleyyi+fZFrHWFmqK2SMpLGk8texE2dASysyxfv36ki1XLS25oxNbWloyWloKyffG9nKcJDU1ZTZFr1692tOxa9asyVnntb7r1q3LWbdhQ/EPSXf93Jqamjw/1+yJXNesWePp2Hznbt26dRWdm1BLk7Z2tOojV6tAq5L9zhdTfxk7f71nP9dC5+aax3lsWtfYknV2zk1G90h2EEp9Ae2Mj6t14/Xzlv2aMMbkPN5G+4FaPvhBTotIaK30+K7mdBeO59fh2sqfe7733IYNG7R27Vp9tG673nVaGlyurN6gd7d/Rm/Nx/WrrvVeX4cfrduuvzh1rWC57tabbPnqu66lRTtnTurNGz9R9Dytu+WmnGO9vm+2b0iV057sWq3kM+L62LACYdgYXVnbqsXNYbUv/NLTZ8T8em/3zTt/zftnxOxlq48S189P8+JlXZ15X82rV2lxzfXPgZZVUvPq68/Fy2fERvuBbn7/m5psulH/NLdW/6w12RJ6x93/POdYr/X1+hnhRXNzc8Wf3+vXr8/7R342L58RhVT6XZXvu8Xr53exz4hSlvJdVY5AJxE1xkQkjVlrTdb6GUmfs9aOeiynV9IxSZuUDF5llWmMaZbk/jZtlXT22LFjuuGGymbgxfJTaJyI44/vaS57ioM/+ftLJcd0/KdPlj/FQfYYGaes379zaVfhLVqr7793Rd84fSXdIlLp9At+P/egfp+NeJ4k6Z3ENf2Hn8zrPzxQ+RQH/9/7V/UXr5X+8v2ju5v1L2/2PsXB0PHiUxxI0uBe71McPP/WZX1zonSXz+91rdEjt5f+gpVyx1m+f35RI/94WX3/fK1u3ng9MJQzzhLL34cffqh9+/ZJdTqJ6LSkcm4LfkBSv7U2XuR2NcXKPCDpYBmPhxUmiAHYQQ5AdrpH/AhCbk3GaGf7KklX0i0ilZbj93MPasqIIKei8PM85QsD7n8d5YSBIC5mCGKg+Ke2r9avdZb+3YfKqOfL713NG9hG/jHzc6CcwAY4ahWuPAcrY8yQpCPO4PUKyzwk6auu5VZJpUc9Y8UI6gt2z5bVeQfh+tF64VcQCorfzz2oKSOCKtfh13kKIgwEEYSCCNZBzB8VRGADHEGHq0LD/kNFtqWlugMnsoJV2WVaaxfkmt6XmzUjW5BfsPXeehEkP597UPMSNcp8R0GEgaBaV4P8o8IvTPiJIAX6CrfWxowxcddVfu5tRQeep8ZruadbCEnqWEqZ2ebn5z1PZY/lraXE5fbX91vQxYvebjabWLBKuHY115x/r+jNqestEO1rvX9xf7fAvcuyWy/KuXdZdj3Ppd4S70zPy31RTjn1zLa12ab+vaL5S5VNHrq9xSq09vp9+vLZ1Cxtb5nXxYve6xlUuW7z8zb177wurqmsjLWSOnOvV8m1KJXzsbarTfrcLmXcA1FKPufeLmlX22XPr/nscv+v+6z+YVL6v9+W/u1t0m9stWoylZUH1IN8VyrmU40/Hw5JikhyQlKv8//UclhSr3sSUGNMt6RuSaOp7ZLkPq5omV5dvnxZs7MFx6NhBek0UvuaDUpcMcp/5ZRV+xqrTnNBXl8y0cm1eumXuVeM/vXPM5cfvGlBPVu9fdnc02rUdUfpL+fWNVazs94CYxD1zHbhYpOkDbpw4YJmrfdZybP97s2r9ew7TnND9pQR0u9sndf5ufLDW1DlOvx6/kHpWisN3CUd/2i1nj+7To9su6S9m6+qycjz672QG5qSz/2Gpgs6P1d/zx0oh5fpHqSArxZMP0hy0k+nlWlv1gShfZIGrbVdqeWQpDNKdvNlcF8hWKxMD/Vpk5Q4e/Zs3jlqsDJF3/hQ//5vT0vKvIWx86L76r/epcid3q8u/WBuQR+cL/1GvHHjWt3YmhtuqqUa9Tw9Oaf9f/UzHfmDX9Oura0VleGIvvGh/uN339Yv567XeUtbswZ7uso6P9UqV/L3+QcpiHo2ynMHvJidndW2bdukerhaMOvWNKNZ20bkanVKzV+1aSlletXa2qrWVt7sSHpkb6vWrWvRky+c1mTietPvlvYWHXx4lx7avbWs8lpbWxUuvVvNBVHPqdl5Tc1dH8czecGm/90we731orO1WZ1t5Q18eWRvq/6ne2/VkePv6svPn9JXHtmt/Xt3aFXT0sZE+VlukM8/SE7dNmzYUPFnY6M+d8ALrw1StR9VCNQB5wth26b1+ovH79V3T5/T0y9P6POf6tJndm3RqiajU79I8IXg0XM/fVdPvfRWzvovHnk1Y/kLD96uL/XcUXb5q5qM7t4WkiTdvS205GDld7lBP3+/ZAeht6fOZ/zrKOd13yjPHQgS4QpQ4S+Ep1+e0NMvT6SX+ULw5rH7d6hnV+7s49k6a9gdGqRGef5BBKFGee5AkAhXgPhC8FtnW8uKbuFrlOcfxOu+UZ47ECTCFSC+EBpBEF1YKx2veyAYhCsADSGosTyENgB+q8pUDPXGmYohkUgwFQPQILJDUCHlhqA/HXszb2jLxng7ALOzs2pvb5dKTMVAuCJcAStaUKENwPLjNVzRLQhgRWPcEQC/1f7OrgAAAMsI4QoAAMBHhCsAAAAfEa4AAAB8xIB2NByu7gIA1DPCFRpOockkszEvEQCgFghXaDjZ90N7e+q8vnjkVf3Z/nt0W+fG9HruAwgAqAXCFRqOe16ia4tWr52NS5IuXr6qu7a2aVWTqWHtAAArHTO0M0N7w3rx1KSefOG0JhPz6XVb21t08OFdemj31hrWDACwHHmdoZ2rBdGQXjw1qSeeHc8IVpJ0LjGvJ54d14unJmtUMwDASke4QsO5tmj15Aunla/N1Vn35AundW1x5bXKAgBqj3CFhvPKmemcFis3K2kyMa9XzkxXr1IAAKQQrtBwpuYKB6tK9gMAwE+EKzSczlZvE4N63Q8AAD8RrtBw7tvZoa3tLSo04YJR8qrB+3Z2VLNaAABIIlyhAa1qMjr48C5JyglYzvLBh3cx3xUAoCYIV2hID+3eqq893q0t7Zldf1vaW/S1x7uZ5woAUDNMIsokog3t2qLVkePv6svPn9JXHtmt/Xt30GIFAAiE10lEq3L7G2PMgKR4ajFkrT3s4ZiQpEcl7bPW9mRti0jqlzQmKSapR9Jxa+2oj9VGnZqandfU3EJ6ef3a1el/X5+8/lrvbG1O3yYHAIBqCTxcpYKVrLUjqeWIMWbYWttf5JhuSXskhSTlG5UckhSR1KtkuBoiWK0cz/30XT310ls567945NWM5S88eLu+1HNHlWoFAEBS4N2CxpgZSTuttXHXOmutLdl3Y4zplXTAWntvnvVRd5ll1oluwQaW3XJVCC1XAAA/1UW3oDEmrGQ3YDzPtoi1Nhrk42N56mxrITQBAOpW0N2C4QLr40p27S3Fo8aYaSW7DbustYOFdjTGNEtqdq1qXeJjAwAA5FWVAe15OKGoUuOSZK2NSZIxps8Yc8xau6/A/gckHVzC4wEAAHhSq3C1pKmznVDlclTSsDEmbxekpEOSvupabpV0dil1gDeMjwIArDRBh6vsEOQIFdlWkjGm1311oLU2boyRkt2Q49n7W2sXJC24jq/0oVGmQlf2ZePKPgDAchFouLLWxowxcWNMOLu1qdLB7Kn5r44ZY7pc3YKh1OaKAxuC8dj9O9Sz6yZJyQk/v3v6nJ5+eUKf/1SXPrNrS3rCz87W5mLFAADQMKpx+5tDSs5JJSk9jcKIaznszIWVR073Yarb73BWWOuTNFrp1AwITmdbi3bf0q6zMxf1R8+e1NMvT0iSnn55Qn/07Emdnbmo3be00yUIAFg2qnL7m1R4csLQXveVfcaYPkmD1tou17qwkhOE7pfULemwXDOwp1qq+lwPsbnY1YJ56sM8V1X04qlJPfHsuLJfaU7nLPcCBAA0Aq/zXHFvQcJVoK4tWn1s6HuaTMzn3W6UvNnyjwY/zT0BAQB1zWu4qka3IFawV85MFwxWkmQlTSbm9cqZ6epVCgCAABGuEKipucLBqpL9AACod4QrBKqz1dtAda/7AQBQ7whXCNR9Ozu0tb1FhUZTGUlb21t0384lzSsLAEDdIFwhUKuajA4+vEuScgKWs3zw4V0MZgcALBuEKwTuod1b9bXHu7WlPbPrb0t7C9MwAACWHaZiYCqGqrm2aHXk+Lv68vOn9JVHdmv/3h20WAEAGobXqRhqdeNmrBDZN25ev3Z1+t/XJ6+/LrlxMwBguSBcIVCFbtz8xSOvZixz42YAwHJBuEKg3DduLoYbNwMAlgvCFQLV2dZCdx8AYEXhakEAAAAfEa4AAAB8RLgCAADwEeEKAADAR4QrAAAAHxGuAAAAfES4AgAA8BHhCgAAwEeEKwAAAB8RrgAAAHxEuAIAAPAR4QoAAMBHhCsAAAAfEa4AAAB8RLgCAADw0epqPIgxZkBSPLUYstYe9nBMSNKjkvZZa3v8KBMAACBogYerVAiStXYktRwxxgxba/uLHNMtaY+kkKQOP8pEcVOz85qaWyi5X2drszrbWqpQIwAAGpOx1gb7AMbMSNpprY271llrrfFwbK+kA9bae/0qM7Vvm6REIpFQW1ubtyeyzP3p2Jt66qW3Su73hQdv15d67qhCjQAAqC+zs7Nqb2+XpHZr7Wyh/QJtuTLGhJXssovn2Rax1karUaYxpllSs2tVa7mPu9w9dv8O9ey6ST9++0ON/DCmD89fTm+7YeNa9X08rF+/7QZ1tjYXKQUAAAQ9oD1cYH1cyS6/apV5QFLC9XO2wsdetjrbWnR25qIOfeeNjGAlSR+dv6xD33lDZ2cu0iUIAEAJtbpacFp5xlIFWOYhSe2un20+P3bDu7Zo9eQLp5Wvk9hZ9+QLp3VtMdhuZAAAGl2twpXfwapomdbaBWvtrPMjaS6Ax29or5yZ1mRivuB2K2kyMa9XzkxXr1IAADSgoMNVrMD6UJFttShzxZuaKxysKtkPAICVKtBwZa2NSYqnBqFnbyt7MHtQZULqbPU2lsrrfgAArFTV6BY8JCniLKSmVxhxLYedeavyKDaGqmCZKN99Ozu0tb1FheayMJK2trfovp1B9OgCALB8BB6uUjOnh4wxvakQtDdrss+IpIzJP12Bq19StzFmKHWs1zJRplVNRgcf3iVJOQHLWT748C6tavI0lRgAACtW4JOI1iMmES3sxVOTevKF0xmD27e2t+jgw7v00O6tNawZAAC15XUSUcIV4UpS5u1vri1afff0OT398oQ+/6kufWbXlnSLFbe/AQCsVISrIghXubj9DQAAxdXF7W/QOJzb35TC7W8AACiOcAVJydvf0N0HAMDS1WqGdgAAgGWJcAUAAOAjwhUAAICPCFcAAAA+IlwBAAD4iHAFAADgI8IVAACAjwhXAAAAPiJcAQAA+IhwBQAA4CPCFQAAgI8IVwAAAD4iXAEAAPiIcAUAAOAjwhUAAICPCFcAAAA+IlwBAAD4iHAFAADgI8IVAACAjwhXAAAAPiJcAQAA+IhwBQAA4KPV1XgQY8yApHhqMWStPbyUY4wxEUn9ksYkxST1SDpurR31sdoAAABlCzxcpUKSrLUjqeWIMWbYWtu/hGNCkiKSepUMV0MrKVhNzc5ram5BknRt0eqf3k9o5uIVbVq/Rv/s5natajKSpM7WZnW2tdSyqgAArDjGWhvsAxgzI2mntTbuWmettabSY4wxvZKi7u1l1qlNUiKRSKitra2SImrqT8fe1FMvvVVyvy88eLu+1HNHFWoEAMDyNzs7q/b2dklqt9bOFtov0DFXxpiwkl168TzbIn4d46EezcaYNudHUmsl5dSLx+7foS//1p1F9/nyb92px+7fUaUaAQAAR9AD2sMF1seV7NpbyjGPGmN6jTF9xpihEvU4ICnh+jlbYv+6tnljs77+43cKbjeSvv7jd7R5Y3PV6gQAAJJqdbXgtKSOJRwzrmS34GhqXNaEMeZYkWMPSWp3/Wwr87HryitnpjWZmC+43UqaTMzrlTPT1asUAACQVKWrBfMoN1hlHGOtjWVtOypp2BiTtzvRWrsgacFZNqbgcK+GMDVXOFhVsh8AAPBP0C1X2SHIESqyreQxqQHtaa5AVahLcVnpbPV2BaDX/QAAgH8CDVepFqZ4apB69rZoJccYY0KSjrm3p9ZJhYPZsnLfzg5tbW9RofY3I2lre4vu21lJAyEAAFiKaoy5OqTknFSS0q1OI67lsDOvlZdjUq1Uh7O6BvskjVY6NUOj+ej8gj7767eq0CQaVtJnf/1WfXR+ocAeAAAgKIHPcyWlJwV1wtBea+2ga1ufpEFrbVcZx4SUDFSOze7tHurDPFcAAKAsXue5qkq4qjeNHq6YoR0AgOrzGq5qdbUglqCzrSUjNP2L7aHaVQYAAGSo1TxXAAAAyxLhCgAAwEeEKwAAAB8RrgAAAHxEuAIAAPAR4QoAAMBHhCsAAAAfEa4AAAB8RLgCAADwEeEKAADAR4QrAAAAHxGuAAAAfES4AgAA8BHhCgAAwEeEKwAAAB8RrgAAAHxEuAIAAPAR4QoAAMBHhCsAAAAfEa4AAAB8RLgCAADwEeEKAADAR4QrAAAAHxGuAAAAfES4AgAA8NHqajyIMWZAUjy1GLLWHl7qMZWUCQAAELTAW65SIUjW2hFr7YikcWPM8FKOqaRMAACAajDW2mAfwJgZSTuttXHXOmutNZUeU0mZWeW3SUokEgm1tbWV+YwAAMBKNDs7q/b2dklqt9bOFtov0JYrY0xYyS67eJ5tkUqOqbDMZmNMm/MjqbWsJwIAAOBR0N2C4QLr45JCFR5TSZkHJCVcP2cL7AcAALAktbpacFpSh8/HFNt+SFK762dbmY8NAADgSVWuFsyj3GDl5ZiC2621C5IWnGVjPA3NAgAAKFvQLVexAutDRbaVOqaSMgEAAKoi0HBlrY1JiqcGoWdvi1ZyTCVlAgAAVEs1xlwdkpS+is8Y0ytpxLUcduat8nqMh+0AAAA1Efg8V1J60k+ny26vtXbQta1P0qC1tsvrMV62l6gP81wBAICyeJ3nqirhqt4QrgAAQLnqYhJRAACAlYZwBQAA4CPCFQAAgI8IVwAAAD4iXAEAAPiIcAUAAOAjwhUAAICPCFcAAAA+IlwBAAD4iHAFAADgI8IVAACAjwhXAAAAPiJcAQAA+IhwBQAA4CPCFQAAgI8IVwAAAD4iXAEAAPiIcAUAAOAjwhUAAICPVte6AivJtUWrV85Ma2puXp2tLbpvZ4dWNZlaVwsAAPiIcBWwqdl5Tc0t6Mdvf6iRH8b04fnL6W03bFyrvo+H9eu33aDO1mZ1trXUsKYAAMAPhKuAPffTd/XUS2/l3fbh+cv6ynfekCR94cHb9aWeO6pZNQAAEADGXAXs3+zdrhs2ri26zw0b1+rf7N1epRoBAIAgEa4C9s5HFzO6AvP58PxlvfPRxSrVCAAABIlwFbCpuXlf9wMAAPUt8DFXxpgBSfHUYshae3gpxxhjIpL6JY1JiknqkXTcWjvqY7V909nqbZC61/0AAEB9C7TlKhWSZK0dsdaOSBo3xgwv8ZiQpIik4dTPRL0GK0m6dfN6T2Oubt28vko1AgAAQQq6W/CApBFnwVobldTnwzE7rbXGWtuVCmB1678ef8/TmKv/evy9KtUIAAAEKbBuQWNMWMkuvXiebZFUaFryMfXusft3qGfXTZ7muQIAAI0vyDFX4QLr40p27S3lmEeNMdOSOiR1WWsHi1XEGNMsyZ1eWovt76fOthZ1trVo9y3t+sOPh5mhHQCAZa4Wk4g6oajSY8YlyVobkyRjTJ8x5pi1dl+R4w9IOlhuRf22qsnoga7Nta4GAAAIkOdwZYzplbTfw66HrLXjRbaXG6wyjnFClctRScPGmLzdiU6dJH3Vtdwq6WwF9QAAACjKc7hKXZFXzlV52SHIESqyreQxxphe99WB1tq4MUZKdinmDXXW2gVJC85yan8AAADfBXa1YKqFKZ4apJ69Le/A9FLHGGNCko65t6fWSYWDGQAAQNUEPRXDISXnpJKU7loccS2HnXmtvByT6vY7nNU12CdptEiXIAAAQNUYa22wD5AMT04Y2uu+ss8Y0ydp0FrbVcYxIWXOe7W51NWCeerUJimRSCTU1tZWzqEAAGCFmp2dVXt7uyS1W2tnC+0XeLiqR4QrAABQLq/hihs3AwAA+IhwBQAA4CPCFQAAgI8IVwAAAD4iXAEAAPiIcAUAAOAjwhUAAICPCFcAAAA+IlwBAAD4iHAFAADgI8IVAACAjwhXAAAAPiJcAQAA+IhwBQAA4CPCFQAAgI8IVwAAAD4iXAEAAPhoda0rUEuzs7O1rgIAAGgQXnODsdYGXJX6Y4y5RdLZWtcDAAA0pG3W2l8U2rhSw5WRdLOkuRK7tioZwrZ52Be1w3mqf5yjxsB5agycp9pqlfS+LRKgVmS3YOoXUjBxOpIZTJI0Z62lD7FOcZ7qH+eoMXCeGgPnqeZK/s4Z0A4AAOAjwhUAAICPCFfFLUh6MvUv6hfnqf5xjhoD56kxcJ7q3Ioc0A4AABAUWq4AAAB8RLgCAADwEeEKAADAR4QrAAAAH63ISUS9MMYMSIqnFkPW2sM1rA7yMMZEJPVLGpMUk9Qj6bi1drSmFVvBjDEhSY9K2met7cmznfdVHSh2nnhf1Y/U+0WSuiTJWtufZ3s8tcj7qY4QrvJwXtDW2pHUcsQYM5z9wkbNhSRFJPUq+SUwxBdA7RhjuiXtUfK8dOTZzvuqDpQ6T+J9VReMMUPW2kHX8rAxZswJw7yf6htTMeRhjJmRtNNaG3ets9ZaU/goVJsxpldS1H2eUHup83LAWntv1nreV3WkyHnifVVjqZbFY0q2LMZT67olnZTUZa2N8X6qb4y5ymKMCSvZvBrPsy1S/RoBjY/3FVC2PZLCruVY6t8Q76f6R7dgrnCB9XElm8tRXx41xkwr2b3R5W5GR13hfdVYeF/VUCo0bcpa7YSmmJLBK5+4eD/VBcKVd84HDerHuCRZa2OSZIzpM8Ycs9buq221UAbeV/WH91V9OiCp31obN6Zgzx/vpzpBt6B3vGDrjLU25nwBpByV1Jsar4DGwPuqzvC+qj/GmCFJR5zB60XwfqoThKtcsQLrQ0W2oQZSA2/TXOMPCnVBoXZ4XzUI3lf1JXU+JrKmWeD9VOcIV1lSf7HFUwMGs7dFa1Al5OFcTeM+T66/rPlwqTO8rxoD76v64gxOd023EDLGhHk/1T/CVX6HdH3woPOXQ6nmWFRR6q/pw1ndF32SRrmEvOYKdU3wvqovOeeJ91X9SE290C1p3BgTTgWpPiXHVUm8n+oa81wVkJqgzfmA2cvVMvUn9Rd1n2vVZs5T7aQ+/Hsl7VfyS+Gwsmb25n1Ve6XOE++r2kudgzPKc+Wfex4r3k/1i3AFAADgI7oFAQAAfES4AgAA8BHhCgAAwEeEKwAAAB8RrgAAAHxEuAIAAPAR4QoAAMBHhCsA8Ch1+5FQresBoL4RrgDAuwPiBsYASiBcAYB33dba8VpXAkB9I1wBgAfGmIiksVrXA0D9I1wBgDf7JI2W3AvAike4AgBvwtbaWK0rAaD+ra51BQDAT8aYbkl7JHVJOi4pKqkvtTlurR2poMxeSceKbNsraUJSLPUzba2Nl115AMsCLVcAlo3UNAkRa+2ItXZQ0jOSDlhrD6d2Gayw6P2SjuZ5vD5JPdbawVRoCykZsvZU+DgAlgFargAsJ32uIOWYSP07Lqm/wnJD2S1RxpiwpCFJO12r45JkrY1W+DgAlgHCFYDlJD3gPBV+Qkq1OGUHntT2XiW78fZKGs43pirVOjWc57GGJUWzQlePkiEOwApGuAKwbGSFo4ikWJGxT8estfdKkjEmKuklSffm2W+ftbYnz/qIklcQunUrOcYLwArGmCsAy1WPsqZOcG5dkxr0npYKYKFUa1b2/vHsgl37ZbdSMRcWAMIVgOUj1YXn6FXyasH0NlcrVqEB591Zy4W6BCVltpSlJhmVtTZqjOnODnAAVg7CFYBlIRWshlL/75Wrey7PzZZDkqaz1sUldWSt68k3OD0VqmJOgEqV36/k+C0pecUiY6+AFYoxVwCWi6ikkVTIOqFk2Bk0xkhSR9b8VnHlBqmQXIEr1fVXbNLQfZL6jTEnJclau88Ycyz1+AQrYAUz1tpa1wEAqirV4vSMM6A9tW5G0r1OV58xZkjSEVqgAJSLbkEAK04qMIWc5VS3XizrasNughWAStAtCGCl2pdqnTqu5DxX6WkVUi1bBCsAFaFbEACyGGOGJQ1xo2YAlaBbEABydRCsAFSKlisAAAAf0XIFAADgI8IVAACAjwhXAAAAPiJcAQAA+IhwBQAA4CPCFQAAgI8IVwAAAD4iXAEAAPjo/wfHxKkv015SvQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -219,87 +229,7 @@ } ], "source": [ - "pe.plot_corrs([m_eff_f_P], plateau=[a[0], m_eff_plateau], xrange=[3.5, 19.5], prange=[start_se, stop_se], label=['Effective mass'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fitting two exponentials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also fit the data with two exponentials where the second term describes the cutoff effects imposed by the boundary." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "def func_2exp(a, x):\n", - " y = a[1] * anp.exp(-a[0] * x) + a[3] * anp.exp(-a[2] * x)\n", - " return y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can trigger the computation of $\\chi^2/\\chi^2_\\text{exp}$ with the kwarg `expected_chisquare` which takes into account correlations in the data and non-linearities in the fit function and should give a more reliable measure for goodness of fit than $\\chi^2/\\text{d.o.f.}$." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fit with 4 parameters\n", - "Method: Levenberg-Marquardt\n", - "`xtol` termination condition is satisfied.\n", - "chisquare/d.o.f.: 0.05399877210985092\n", - "chisquare/expected_chisquare: 0.7915235152330492\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fit result:\n", - "[Obs[0.2146(65)], Obs[15.15(88)], Obs[0.623(60)], Obs[-9.64(74)]]\n" - ] - } - ], - "source": [ - "# Specify fit range for double exponential fit\n", - "start_de = 2\n", - "stop_de = 21\n", - "\n", - "a = pe.fits.standard_fit(np.arange(start_de, stop_de), p_obs['f_P'][start_de:stop_de], func_2exp, initial_guess=[0.21, 14.0, 0.6, -10], resplot=True, expected_chisquare=True)\n", - "[o.gamma_method() for o in a]\n", - "print('Fit result:')\n", - "print(a)" + "m_eff_fP.show(plateau=fit_result[0])" ] }, { @@ -318,18 +248,18 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(Obs[-0.08(35)], Obs[0.19(25)])\n", - "(Obs[1.85(35)], Obs[0.34(25)])\n", - "(Obs[4.01(35)], Obs[-1.39(25)])\n", - "(Obs[6.10(35)], Obs[-1.30(25)])\n", - "(Obs[8.08(35)], Obs[-0.37(25)])\n" + "(Obs[-0.37(35)], Obs[0.61(25)])\n", + "(Obs[1.40(35)], Obs[0.92(25)])\n", + "(Obs[3.83(35)], Obs[-1.38(25)])\n", + "(Obs[6.39(35)], Obs[-1.58(25)])\n", + "(Obs[8.69(35)], Obs[-0.62(25)])\n" ] } ], @@ -353,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -371,7 +301,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -381,18 +311,16 @@ "Fit with 3 parameters\n", "Method: ODR\n", "Sum of squares convergence\n", - "Residual variance: 0.5988333933914471\n", - "Parameter 1 : Obs[-0.01(29)]\n", - "Parameter 2 : Obs[-0.165(55)]\n", - "Parameter 3 : Obs[0.89(23)]\n" + "Residual variance: 2.605726458598027\n", + "Parameter 1 : 0.37(34)\n", + "Parameter 2 : -0.254(62)\n", + "Parameter 3 : 1.13(27)\n" ] } ], "source": [ "beta = pe.fits.odr_fit(ox, oy, func)\n", "\n", - "pe.Obs.e_tag_global = 1 # Makes sure that the different samples with name length 1 are treated as ensembles and not as replica\n", - "\n", "for i, item in enumerate(beta):\n", " item.gamma_method()\n", " print('Parameter', i + 1, ':', item)" @@ -407,12 +335,12 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 44, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -441,68 +369,50 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Parameter 0\n" - ] - }, - { - "data": { - "image/png": "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kRpDbsTk48B44zi+dFvFL5++ruJRi0KyFvgF8AuSmXUG7y8SWiokIkZiiZQHnAN8CLgM3Tr8hssiz8y9q8ePTynR220A/gQ8ADyrRaoiNlRIRHwglkhFgBnk7tK5HDjGNpGt8d7rax/v+eVi3kK9Dvgj8CDwHMmMPghFjKmQiPhMfuTkVHLF5BLgBNtEpRch27qy59VZz6OygJddQu4umQeBF1VCRPxFhUTE52KJ1DHkTht+LzATKLeTcA9pWc9rV/f0WsZ24xIbgceBR4HHSGY2FCaZiBSDColIgOSndqYA5wPnkduAbZhlpmKZ0/MzL432tp/WiZc0AM8BjwGPkswsKkowESkKFRKRgIslUuPIFZMz8l+nAT1MQxXAf1V+96lzonXnHuaX9wLzgZfbPVZoGkYkuFRIRMpMfs+TKUCc3PqTE/NfY+Dr7djf4ksV9z/z6Yq/nE3uLpilwKu8WUIWk8y0WuYTkcJSIREJifwhgJPIlZOJwJgDHoOMou0ktxvqRmANsAJYeYq3bNmDPW9bQTKTMcolIiWkQiIiAMQSqX7kislocgtnBwADD3gMAPqSO58nQm7EJdLu4QH7gT3A7kN83QlsJlc+NgKb0tVVe0vyP1BEfE2FRERERMzpPA0RERExp0IiIiIi5lRIRERExJwKiYiIiJhTIRERERFzKiQiIiJiToVEREREzKmQiIiIiDkVEhERETGnQiIiIiLmVEhERETEnAqJiIiImFMhEREREXMqJCIiImJOhURERETMqZCIiIiIORUSERERMadCIiIiIuZUSERERMScComIiIiYUyERERERcyokIiIiYk6FRERERMypkIiIiIg5FRIREREx9/8BZvNidD1i488AAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Parameter 0\n", "\n", - "Parameter 1\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Parameter 1\n", "\n", - "Parameter 2\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Parameter 2\n", "\n" ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -512,244 +422,6 @@ " print()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fitting with priors" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When extracting energy levels and matrix elements from correlation functions one is interested in using as much data is possible in order to decrease the final error estimate and also have better control over systematic effects from higher states. This can in principle be achieved by fitting a tower of exponentials to the data. However, in practice it can be very difficult to fit a function with 6 or more parameters to noisy data. One way around this is to cnostrain the fit parameters with Bayesian priors. The principle idea is that any parameter which is determined by the data is almost independent of the priors while the additional parameters which would let a standard fit collapse are essentially constrained by the priors." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We first generate fake data as a tower of three exponentials with noise which increases with temporal separation." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "m1 = 0.18\n", - "m2 = 0.5\n", - "m3 = 0.8\n", - "\n", - "A1 = 180\n", - "A2 = 300\n", - "A3 = 500\n", - "\n", - "px = []\n", - "py = []\n", - "for i in range(40):\n", - " px.append(i)\n", - " val = (A1 * np.exp(-m1 * i) + A2 * np.exp(-m2 * i) + A3 * np.exp(-m3 * i))\n", - " err = 0.03 * np.sqrt(i + 1)\n", - " tmp = pe.pseudo_Obs(val * (1 + err * np.random.normal()), val * err, 'e1')\n", - " py.append(tmp)\n", - " \n", - "[o.gamma_method() for o in py];\n", - "\n", - "pe.plot_corrs([py], logscale=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As fit function we choose the sum of three exponentials" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "def func_3exp(a, x):\n", - " y = a[1] * anp.exp(-a[0] * x) + a[3] * anp.exp(-a[2] * x) + a[5] * anp.exp(-a[4] * x)\n", - " return y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can specify the priors in a string format or alternatively input `Obs` from a previous analysis. It is important to choose the priors wide enough, otherwise they can influence the final result." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "priors = ['0.2(4)', '200(500)', \n", - " '0.6(1.2)', '300(550)',\n", - " '0.9(1.8)', '400(700)']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It is important to chose a sufficiently large value of `Obs.e_tag_global`, as every prior is given an ensemble id." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "pe.Obs.e_tag_global = 5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The fit can then be performed by calling `prior_fit` which in comparison to the standard fit requires the priors as additional input." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fit with 6 parameters\n", - "Method: migrad\n", - "chisquare/d.o.f.: 1.100354109100944\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAHECAYAAAAUDc2xAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAA9hAAAPYQGoP6dpAABXI0lEQVR4nO3deXxc9X3v//dXkiVvksbygjcZWV6wwSEg26QkNE6CTbmhSXrBS0ia4NggB0qbzVj43l+z9D5SV4akTdIAdmKgIaQxNrlN0tIkGJJwaQLFFgSy4MgeG1sCY2yt3mXp+/vjnJFH0sxoljNzZnk9H495zMz5nnPmo6PR0We+8znfr7HWCgAAAEBiivwOAAAAAMhFJNIAAABAEkikAQAAgCSQSAMAAABJIJEGAAAAkkAiDQAAACSBRBoAAABIAok0AAAAkIQSvwPwkjHGSJoqqdvvWAAAAJCzyiW9boeZuTCvEmk5SXSL30EAAAAg502X1BprhXxLpLsl6fDhw6qoqPA7FgAAAOSYrq4uVVdXS3FUOORbIi1JqqioIJEGAABAWnGxIQAAAJAEEmkAAAAgCSTSAAAAQBJIpAEAAIAkkEgDAAAASSCRBgAAAJJAIg0AAAAkgUQaAAAASAKJNAAAAJCEvEuk3zYp734kAAAAZKG8yzp/sXqM3yEAAACgAORdIl01yki9PX6HAQAAgDyXd4m0JJkzHX6HAAAAUHCCwaDWrVsnY4zGjRunhoaG/tuKFStkjFFDQ0P/+qHluarE7wDSwZxukzTL7zAAAAAKSm1trbZs2aLdu3dr0aJFamxsHNDe0dGh2267rf/54sWLNX78+CH72bp1q+rr69Meb6ryOJEGAACAH6qqqiIuDwQCWrx4cf/z5cuXR1zvySefzIlEOj9LO063+x0CAAAAXMFgUB0dHZKkpUuXRl2vo6NDDQ0NCgaDGYosNXmXSJ/vszKnj/sdBgAAAFy7du1SW5tTMVBXVydJampq0sKFC7Vw4cIB6wWDQQWDwf7a6lACno3yrrTj+CmrSko7AAAAfLVr167+3uWdO3dq//79A9rr6urU2NiodevW9S9bvny5AoGAgsHgkPrqbJR3ifSxU1YBSjsAAECuOndKOvZHv6NwTJgrlY5OatOlS5f2J8ObN2+OuE5tbW3SoWWDvEuk3zplNYceaQAAkKuO/VHausTvKBz1v5SmXpHybmLVReeyhBNpY8xSSeustTEH/TPGPGmtXTZoWfjllwFr7eZE2uNx7JRVEYk0AADIVRPmOglsNpgw15PdhOqikxEMBrO25zruRNoYUydplaSApJg/jTFmuaSlg5bVKyw5NsYsN8Y0Wmsb4mmP17FTluHvAABA7iod7UkvcL5oamrK2kQ67lE7rLVNblL7ZKz1jDEBRU60GyTtDNvfTkn1CbTHhUQaAADAf6FROmKJNCJHbW1t//B32dwbLaVn+LuVkraGLwgl19bawYMCBowxdcO1J/LiJNIAAAD+CE0RvmvXLu3atav/cSRNTU39o3qEj9xRW1ur+vp6NTQ0aNeuXSmVhaSbsdYmtoFTtrHRWrswQlvoJw1KarfWmrDle0LPw9Zvl3Sbu37Udrd3Op7YKj7ytpLOR28cLf2vN5K+yhQAAACFqaurS5WVlZJUaa3tirWu1z3Si6y1TRGWR54nUmpz24Zrj9uxU+4HA3qlAQAAkEaeDX9njFlurd06/JreMcaUSSoLW1Ten0ifPCZVTs9kOAAAACggnvRIuzXOHTFWidY9XOW2DdcezUZJnWG3lv5E+hTThAMAACB9vOqRXilpVliN9CxJMsZskFP/vMt9HrDWdoRtF3Dbg8O0R7NJ0lfDnpcfO2VbJEmnKO0AAABA+niSSA8u6TDG1EqqD59QxRgTlNPD3DFo26Z42qO87llJZ8NeQ6d6JFsyUoYeaQAAAKRRMqUd8Vz8F4iwrFHS8tATdwKWhgTa42ZHVVHaAQAAgLSKO5F2x3tulJPc1hljtgya0ju0Xr2cpFjGmB3ulOL9vdbGmHq35GNWeI/1cO2JcBLpY8lsCgAAAMQl4XGks5kxpkJSZ8+DN6hkTJW08jt+hwQAAIAc4uc40lnBjqziYkMAAACkVV4m0n2jx1MjDQAAgLTybEKWbGJHjXMmZAEAACgAR7vO6Gj32ajtk8rLNKliZAYjKgz5mUiPnuBcbNjXJxXlZac7AABAv0efP6SvPdUctf1T187RZ5bNzWBEhSF/E2nbJ51uk8ZM8DscAACAtProO2Zo2aUXSZL2HT2hT29/Sf+06grNnjRWktMjDe/laSI90Xlw4iiJNAAAyHuTKkYOKd2YPWmsFkyrzGgcwWBQjY2N2rp1qwKBgOrrL4yU3NHRoYULFw5YluvyMpHuGz3eeXDyqKRLfY0FAACgUNTW1mrLli0KBoOqra1VY2PjgPbNmzdrxYoV2rFjR0L73bp1a1Ym4HlZQHyhR/otfwMBAADIoAPHTurhXx2UJD38q4M6cOykvwENsmHDBnV0dGjz5sTm3HvyySfTFFFq8jKRVukYacRot0caAAAg/z22+7Cu/cov9IOmFknSD5padO1XfqEduw/7HNlAK1as0KZNm+Jat6OjQw0NDQoGg2mOKjl5WdohSRoz0amRBgAAyHMHjp3U3Y+/rL6wCatDjxsef1mLa6pUM2GMP8ENsnLlSq1bt05NTU2qq6tTMBhUU1OTJOmFF17QsmXLtHTpUknSrl27FAwGFQwG1dDQIEnauHGjAoFAzO0yJX8T6bGTGEsaAAAUhMd2H5YxRrJ2SJsxRtt3H1bD9fN8iGyoQCAgSdq9e7fq6uq0bt06LVu2TBs2bNDy5cs1a9Ys7dmzR4FAQMuXL+9PmgfXW8faLlPys7RDksZMorQDAAAUhJb207IRkmhJstaqpf10hiMaXkdHhyRpy5YtAy4krK2t1a5du4bdPtntvJTHPdITpddf8jsKAACAtJs+blTMHunp40b5EFVkoQS6rq5OkpMAB4NBPfbYY6qqqlJbW5va2tqG3U+y23kpfxPpMROlk4zaAQAA8t/KRdXa8sv9EdustVq1qDrDEUW3e/duSdKiRYskOUPivfDCC/1D4m3fvj3m9qGh9RLdLh3yvLTjrYifzAAAAPLJzAlj1HjT5SoyUpFxloUeN950edZcaChJjY2NamxsVCAQ6B+VI3xc6VCPdehCwsGampqS2i4d8jeRHjtR6j0nnenwOxIAAIC0W7GoWk9/7j26sW66JOnGuul6+nPv0Yos6o0OjbyxYcMGSeovxQglweHLQkPehUo4Qstqa2vj2i4T8ri0Y5Jzf+ItadQ4f2MBAADIgJoJY7T6nTXauadFq99Zk/Ge6NDoGrt27VJtbW1/4tzR0aG2tjYtXrx4wOQqodkPGxoatGzZMgUCAe3YsUPr1q3TihUr+tepr69XQ0ODZs2a1X+B4XDbZYKJdoVnLjLGVEjq7OzsVMW5N6V/XiSt/g+p5hq/QwMAAMiI37Z26s+/8az+/a+v0YJplX6Hk3O6urpUWVkpSZXW2q5Y6+Zxj7Q7TTgXHAIAgDx3tOuMjnaflSTtO3piwL0kTSov06SKkb7Els/yN5EeWSkVlzqlHQAAAHns0ecP6WtPNQ9Y9untL/U//tS1c/SZZXMzHFX+y99E2hh3CDwmZQEAAPnto++YoWWXXhS1fVJ5WQajKRz5m0hLTiJ9gkQaAADkt0kVIynd8EH+Dn8nSWMnUSMNAACAtMjvRHrMJHqkAQAAkBYJl3YYY5ZKWmetHTJInzFmg/twsaSgtbZhUHt92NOAtXZzIu0JGztROvhMSrsAAAAAIom7R9oYU2eMaZS0QlJthPZGa+1m97ZCUq0xZkdYe72c5HirtXarpKC7v7jakzJ2stMjnUdjZQMAACA7xJ1IW2ub3B7mJwe3GWMCkpa69yGbJC03xoSS7gZJO8P2t1NSeA/0cO2JK58snT/DNOEAAADwnJc10rUa2FMdmui81k2wa621gyc/D7g93THbk46ofLJz330k6V0AAAAAkXiSSFtrO6y146y1TWGLQ0l1UBFKQVwdGpqAR2pPTn8i/UbSuwAAAAAiSeeoHesk7XJ7mauirNPmtg3Xnpyx9EgDAAAgPdIyIYtbjrFU0sJ07D/sdcokhU/VUz5ghREjpVHj6JEGAACA59LVI90oaaG1tsN93hZlvSq3bbj2aDZK6gy7tQxZo3yK1P3m8BEDAAAACfA8kTbGbJEzznRH2OKg2xYYtHrAbRuuPZpNkirDbtOHrDH2InqkAQAA4DlPSzvcsaAbQ6NvuEPfBay1TcaYUK10R/g2oQsUh2uPxFp7VtLZsNcfulL5FOn4vqR+HgAAACCaZHqkI178Z4xZLqcHudYYs9R93qALPcqNkpaHrV/vtivO9uSUT+ZiQwAAAHgu7h5p9wLCVXKS3Vq3hGOPtXarW5KxI9J21tp17v1WY8yG0AyGksaHTyE+XHvSyqc4pR3WSpF6rAEAAIAkxJ1IuyUWTYrQS+zWQw+bpVprN6fSnpTyyVJfj3SqTRoz3vPdAwAAoDClcxzp7FA+xbk/QXkHAAAAvFMAifRFzj0jdwAAAMBD+Z9Ijw0l0vRIAwAAwDv5n0iXlEmjx9MjDQAAAE/lfyItuSN30CMNAAAA7xRIIs1Y0gAAAPBWYSTSY0mkAQAA4K3CSKTLJ1MjDQAAAE8VRiJdOc1JpHvP+x0JAAAA8kRhJNIV0yXbx6QsAAAA8ExhJNKV05z7zlZ/4wAAAEDeKIxEusJNpLta/I0DAAAAeaMwEumRlVLpWHqkAQAA4JnCSKSNcXqlu0ikAQAA4I3CSKQlp066k9IOAAAAeKNwEml6pAEAAOChwkmkK6dTIw0AAADPFE4iXTFNOnlUOn/W70gAAACQBwonkQ6NJd31ur9xAAAAIC8UTiJdMd25p04aAAAAHiicRJrZDQEAAOChEr8DSLejXWd0tNupi55XFtDxw/v01oTO/vZJ5WWaVDHSr/AAAACQo/I+kX70+UP62lPNkqQnSivV9Nwe/X/PPtvf/qlr5+gzy+b6FR4AAAByVN4n0h99xwwtu/QiSVLVj2Zqyutt+qdVV2j2pLGSnB5pAAAAIFF5XyM9qWKkFkyr1JiyEgXPBTTVHNez+45pTFmJFkyrpKwDAAAASUm4R9oYs1TSOmvtight9WFPA9bazV62J+ux3Yd19+Mva13xSN1efEw/aGrRD5pa1HjT5VqxqNqLlwAAAECBibtH2hhTZ4xplLRCUm2E9no5ye9Wa+1WSUF3fU/ak3Xg2End/fjL6rPSob5JqjCnNNaeUJ+VGh5/WQePnUz1JQAAAFCA4k6krbVN1toGSU9GWaVB0s6w9XdKqvewPSmP7T4sY4wkqcVOkCRVm2OSJGOMtu8+nOpLAAAAoAB5UiNtjAlIqrXWBgc1Bdye7JTaU4mtpf20rLWSpMN2kiRpujkqSbLWqqX9dCq7BwAAQIHyatSOIaUero4YbYm0NyUTlCRNHzfK6ZG2Vm0q1ylbpmrzliSnR3r6uFHJ7hoAAAAFzKtRO6qiLG9z21JtT9rKRdX9PdKS0WE7UdPdRNpaq1VcbAgAAIAk5PTwd8aYMmNMRegmqXzwOjMnjFHjTZeryEhFRjpsJ2qGeUtFRmq86XLVTBjjQ+QAAADIdV4l0m1Rlle5bam2R7NRUmfYrWXwCke7zmj+lAo98JcL9d55k9RiJ+qSkW164C8Xav6UCh3tOhNj9wAAAEBkXtVIByXnokNrbUfY8oDblmp7NJskfTXsebkGJdPhU4RLUk3xRI0790vVP7JbkmGKcAAAACTFk0TaWtthjAnK6UHuGNTWJEmptkd53bOSzoaeh4a5Cxc+RbgkVRzo1uhdj+o/b52v3lETmCIcAAAASUmmtCPaxX+NkpaHnrgTrDR42J6U0BThoduMWfMlSfNHtjNFOAAAAJKWzMyGDZLqjDFbwqf0dmcjlDGm3hizQdKs8Cm+U233TOBi577jNc93DQAAgMIRd2mHW2LRpBi9xMMlvqm2e2JUQCqrlNpJpAEAAJC8nB7+LmnjZtAjDQAAgJQUZiIduFjqOOR3FAAAAMhhhZlIj6uR2g/6HQUAAAByWGEm0lUznR7p3h6/IwEAAECOKtBEulbqO095BwAAAJJWoIn0LOe+7YC/cQAAACBnFWYiXTldKi6V2vb7HQkAAAByVGEm0kXFzgWHbUG/IwEAAECOKsxEWnLKO47TIw0AAIDkFHAiXUuPNAAAAJJWuIn0+FpndsPe835HAgAAgBxUuIl0aAi8TobAAwAAQOIKOJEODYFHeQcAAAASV7iJdGgIvOMk0gAAAEhc4SbSDIEHAACAFBRuIi055R1MygIAAIAkFHYiPX6WdHyf31EAAAAgBxV2Ij1hjtR+UOo543ckAAAAyDEFnkhfItk+yjsAAACQsMJOpCde4twf+6O/cQAAACDnFHYiPbpKGj1BeotEGgAAAIkp7ERakibMlY7t9TsKAAAA5BgS6Ylz6ZEGAABAwkikJ1wiHW+W+nr9jgQAAAA5hER64lzp/Bmp45DfkQAAACCHlHi9Q2NMvfswIGm8pE3W2o4I7ZIUsNZujrJ9xHbPTQiN3NEsVc1M60sBAAAgf3jaI22M2SDpMWvtVjcB3iSpMay9Xk5yvNVau1VS0BgTd3taVEyTRozmgkMAAAAkxOvSjmXhvc/u49qw9gZJO8Pad0qqT6Dde0VFzgyHb5FIAwAAIH5eJ9JVbq/0EMaYgKRaa21wUFPAGFM3XLvHcQ404RISaQAAACTE60S6QVKjMeZJY0zALctY57bVRtmmw20brj19Js2X3npVsjatLwMAAID84Wkiba3dJWmZpKWS2iW9ENbDXBVlsza3bbj2IYwxZcaYitBNUnlSgV+0QDrbJXUeTmpzAAAAFB6vLzaslVQnaZykrZJ2DBqFw2sbJXWG3VqS2stFlzr3b/7Oo7AAAACQ77wu7Wi01m621nZYa9fJ6Z3e4ibYbVG2qXLbhmuPZJOkyrDb9KSirpgmjawkkQYAAEDcPEuk3QsCB1wo6JZ6bJZT6hF01wsM2jTgtg3XPoS19qy1tit0k9SdZPDSpMtIpAEAABC3TMxsuF9S0B0KL6gI9c7W2qbh2tMco3TRZdLR36f9ZQAAAJAfPEuk3WS3LkKP8kK3Z1pyJmdZHmpw66cbwtYdrj19LrrMmd2w50xGXg4AAAC5zespwldI2miMkaTjcqYI70+ErbVbjTEbQjMYShpvrY27Pa0uukyyvc4Mh1PenpGXBAAAQO7yNJF2yzNiJr7u1OFJt6fNpPnO/Zu/J5EGAADAsDJRI50bysqlwMXSm7/1OxIAAADkABLpcBct4IJDAAAAxIVEOtxFl0lH6JEGAADA8Eikw01+m3TyqNR9xO9IAAAAkOVIpMNNvcK5f/0lP6MAAABADiCRDldZLY2qkt54ye9IAAAAkOVIpMMZ4/RKv/6i35EAAAAgy5FIDzblCko7AAAAMCwS6cGmXiGdOMIFhwAAAIiJRHqwKVc49/RKAwAAIAYS6cECM6RR47jgEAAAADGRSA9mjDT1SnqkAQAAEBOJdCRTrqBHGgAAADGRSEcy9Qqp+w2p6w2/IwEAAECWIpGOZPpi577lBX/jAAAAQNYikY6kYqpUMV1q+W+/IwEAAECWIpGOZvoi6TA90gAAAIiMRDqa6qucCw7Pn/M7EgAAAGQhEulopl8lnT8jvfmK35EAAAAgC5FIRzPlcqm4lPIOAAAAREQiHU1JmTOeNBccAgAAIAIS6Viqr6JHGgAAABGRSMcyfbHUeUjqPuJ3JAAAAMgyJNKxVL/DuT/0a3/jAAAAQNYhkY6lYopUVSsd/C+/IwEAAECWKUnHTo0xGyR1uE/brLU7w9rqw1YNWGs3D9o2ZnvG1VwjHXzW1xAAAACQfTzvkTbGPClpp7V2q6TdknaEtdXLSY63uu1BY0xjvO2+uPga6a0/SCeP+xoGAAAAsounibSbCDdZa4OSZK1tkrQwbJUGSf29025PdX0C7ZlX8y7n/jXKOwAAAHCB1z3SjZKeDF/gJtMyxgQk1YaS7DABY0zdcO0exxm/yunSuBrKOwAAADCAZzXSbiIckJP4hnqRZ1lrG9zHtVE27YjRFt7eFOE1yySVhS0qjzvgRFx8DT3SAAAAGMDLHulQMlwVVuP8pDEmVCNdFWW7NrdtuPZINkrqDLu1JBx1PGreJb35O+lUW1p2DwAAgNzjZSIdSnZ3hxZYa3dJWm6MidXjnIpNkirDbtPT8ioXv0uSlV77VVp2DwAAgNzjZSIdHHQf0iGpTk7PciRVbttw7UNYa89aa7tCN0ndCUUcr3EXO3XSwZ+nZfcAAADIPZ7VSFtrg8YYaWg9c8C9D0pOLbW1tmNQezCOdt8c7Tqj4sl/qrF7d6n5is4h7ZPKyzSpYqQPkQEAAMAvXk/I0qTI9cxN1toOY0zQbe8Ibwwb2SNmu18eff6Q/vCbCdpaelC3//PjOmwvGtD+qWvn6DPL5voUHQAAAPzg9fB3DZJWhJ64o3fsDBvSrlHS8kHtDWHbD9fui4++Y4Y+fdut6jPFum3qQUnStfMnacvHFurf//oaffQdM/wNEAAAABlnrLXe7tBJfmeFnocNfxdqD00fHpA0PtH2YV67QlJnZ2enKioqkvsBonhs92HN/NFNarMVWtfzGRUZZ3njTZdrxaJqT18LAAAA/ujq6lJlZaUkVbrX4EXleSLtp3Ql0geOndS1X/mF/qroB7qt5D9Ud3aLzrtVMUVGevpz71HNhDGevR4AAAD8kUgi7XVpR156bPdhGWP0TN/lqjCn9Xazv7/NGKPtuw/7GB0AAAD8QCIdh5b207LW6hVbq3Y7Vu8ufrm/zVqrlvbTPkYHAAAAP5BIx2H6uFEyxqhPRXq2b4HeW/RSf5sxRtPHjfIvOAAAAPiCRDoOKxdVK1RL/mTvQl1edECTdVyS0yO9iosNAQAACg6JdBzGlBbrb66dI2OkZ+zbdd4WaVlxk4yR/ubaORpdWux3iAAAAMgwEuk4PPr8If3TrmZZK3XYsXq+b76WFu2RtdI/7WrWo88f8jtEAAAAZJjXMxvmpY++Y4aWXXphNsPxv12ui57/ez2x5u3qKy3XpPIyH6MDAACAH0ik4zCpYqQmVYy8sGD0jdKvv6RLT70gzfyf/gUGAAAA31DakYxxNdKky6S9/+l3JAAAAPAJiXSy5r1f+uNPpd4evyMBAACAD0ikkzX/g9KZDin4C78jAQAAgA9IpJM1+W3S+NnSb3/gdyQAAADwAYl0soyRLrtRevU/pPNn/Y4GAAAAGUYinYoFN0pnO6V9T/kdCQAAADKMRDoVk+ZLE+dLv6O8AwAAoNCQSKdqwY3OMHg9p/2OBAAAABlEIp2qy26Uzp2Q/vgTvyMBAABABpFIp2rCbGnaIuml7/kdCQAAADKIRNoLV35U2rdL6j7idyQAAADIEBJpL1x2o1RcKv3m+35HAgAAgAwhkfbCqIA078+d8g5r/Y4GAAAAGUAi7ZUrPiId2yu1NvkdCQAAADKARNorte+RKqZJL37H70gAAACQASXp3Lkx5klr7bJBy+rDngastZsTac9aRcVS3cel//q6tOzvpJGVfkcEAACANEpbj7QxZrmkpYOW1ctJjrdaa7dKChpjGuNtz3oLV0u9Z6WX/tXvSAAAAJBmaUmkjTEBSbURmhok7Qw9sdbulFSfQHt2K58szf+A9MK3uegQAAAgz6WrR3qlpK3hC0LJtbU2OGjdgDGmbrj2NMXpvcW3SsebpeAv/I4EAAAAaeR5Iu0mvbsjNEXqoZakDrdtuPbccPG7pInznV5pAAAA5K109EgvstZGGgOuKsr6bW7bcO25wRjpqlulvU9I7a/5HQ0AAADSxNNE2hiz3L1IMCOMMWXGmIrQTVJ5pl47prff7Iza8dx9fkcCAACANPEskXZrnDtirNIWZXmV2zZceyQbJXWG3VqGizMjSsdIV9VLTd+RTkULHQAAALnMyx7plZKWGWM2GGM2SGqUJPf5cklB93lg0HYBt2249kg2SaoMu01P8WfwzlX1zsgd1EoDAADkJWPTNEybMaZW0n5rrQlbtl/SsvCROYwxNrTOcO1xvGaFpM7Ozk5VVFR49aMk7z/WS7/7gfTp30qlo/2OBgAAAMPo6upSZWWlJFVaa7tirZvOKcIDEZY1SloeeuJOwNKQQHtuufqvpNPt0kuP+h0JAAAAPJauCVnqdaG0Y4cxZqkkhS5ENMbUu+Ufs8KnAB+uPedUzZQW3CT9v69KPWf8jgYAAAAeSltphx+yrrRDko41S9+8SvqzTdKffNLvaAAAABBDtpR2QJImzJEu/7D07Felc6f8jgYAAAAeIZHOhCUbpJPHpN3b/I4EAAAAHiGRzoSqmdKVH5We/UfpTMxvCAAAAJAjSKQzZUmDdO6kk0wDAAAg55FIZ0rldOmdfy39+ptSxyG/owEAAECKSKQz6V2flkYFpF1f8jsSAAAApIhEOpPKxkrv+1vptzulwy/4HQ0AAABSwDjSGXC064yOdp91nvT1ata//bmsKVbwQz+Uioo1qbxMkypG+hskAAAAEhpHuiQzIRW2R58/pK891dz/vM6s0A/KvqjHHviivtP7Z/rUtXP0mWVzfYwQAAAAiSKRzoCPvmOGJOnrTzfLSGqyc/W93mt1V8ljqn7nKn3IbQcAAEDuoEY6A06e69U3nm6WtVKfW0nzDz2rdEYjNPW5L+nUuV5/AwQAAEDCSKQz4LHdh2WMGbCsS2P1f3o+rhuKn9eenz3qU2QAAABIFol0BrS0n1akizp/1He1nuq9Usv2/70zhTgAAAByBol0BkwfN2pIj7TD6H/11qvE9En//mkpj0ZQAQAAyHck0hlw7bxJ6ouSJB+1lXrjmk3SH34svbw9w5EBAAAgWSTSGfD/mo9F7Wy2VvpRz2Lp8lXSE3dJ7QczGhsAAACSw4QsGRCakOX1jtP62e/f1NGuM5pUMVLXXXqRpgZGOROyjDgjbXm3NLpKWvNTqaTM77ABAAAKTiITspBIZ5PXX5S2XSfV3SLdcK/f0QAAABScRBJpSjuyydQrpes3SS98S/rt435HAwAAgBhIpLPNorXSguXSD/9aOvKK39EAAAAgChLpbGOM9MGvS+NnSd/7sNT9pt8RAQAAIAJqpLNV1+vS1vdKldOl1f+uo6eNjnafVWvHaT0ZdsHisksv0rTQBYsVI/2OGgAAIKdxsWE+JNKS1NokPfR+6ZL/oX+sbNDXnt4fddVPXTtHn1k2N4PBAQAA5B8uNswX0+qkG7dIv/u/+kjbN2VM5A89xkjvnjMhw8EBAAAUNhLpbHfph6QP/JMuevU7+kxJ5JE8iozRrlePZjgwAACAwlbi9Q6NMRvch4slBa21DYPa68OeBqy1mxNpL0gLV+vffv17/c2xLersG61tve8f0GytVUv7aZ+CAwAAKEyeJtLGmMbwxNkYs8MYs8Nau8J9Xq+w5NgYszx8m+HaC9mL1R/XkSOv629HfFeShiTTVaNH+BEWAABAwfKstMMYE5C01L0P2SRpuTGm1n3eIGlnqNFau1NSeA/0cO0Fy0r6h/Mf1n3nP6i/HfFd3V78o/62vvy5XhQAACBneF3aUevemtznwdByY0ybpFprbXDQNgFjTJ27btR2a22TCtid752tqjGluuepVepRiRpGfF9lpkdf671Rn7p2rj5y1Qy/QwQAACgoniXS1toOSeMGLQ71RAfDHg/WEaMtvL2gE+lJFSP16aVz9RdXTNP23bP1431V+vSxb2vNFWNV8d7rpWLPy90BAAAQQ7qzr3WSdllrg8aYpVHWaZNUJSdhjtU+hDGmTFJZ2KLyJOPMGTUTxqjh+nmSviI1vV0VP/60dO5NafmDUukYv8MDAAAoGGkb/s4t11gqaUW6XkPSRkmdYbeWNL5W9qn7uPSRx6SDz0oP3yB1H/E7IgAAgIKRznGkGyUtdEs+JKdnOZIqt2249kg2SaoMu01PKtJcNmep9IknnCR6y7ulQ8/5HREAAEBBSEsibYzZImldWBItuRceDhrVQ5ICbttw7UNYa89aa7tCN0ndKYaem6a8Xar/pVRV6/RM//e3pDya+h0AACAbpWNClnpJjaHRN9yh7wLW2iZjTFAR6qFDI3IM144Yyi+SPv4j6Wf/n/TEeqllt3TDvVLZwLLxA8dO6rHdh9XSflrTx43SykXVmjmB2moAAIBEGethz6UxZrkGjrARkLRMUoO1tiPChCsJPY/j9SskdXZ2dqqiosKznyvn/Ga79B+flcZMkG78llR9lY52ndGjzx/S159ulpEzLnXo/lPXztFHrpqhSRUj/Y0bAADAZ11dXaqsrJSkSrfiISrPEmm3JKM9Upu11oStt0FOj3NA0vgIU4jHbB8mBhLpkLag9IN6qbVJWrJBX+y4Xg8/1xp19Vuuvlhf+tCCDAYIAACQfRJJpL0eR9rEsV7M3uV4e58xjKpa6RM/kZ65R/plo+pH/kB7ij6uV/pmDlm1aNjfGgAAAAZL56gd8FtxifTejdKtu2T7zuv/jvhbbSx5VKN0Zsiqbad6fAgQAAAgd5FIF4JpC/Xt+Q/qq70rdUvxz/TT0gZdV/SCnAppR9XoEf7FBwAAkINIpAtErynRfec/qD8716gDdoq2lv6j/nXEl3WpOag+RsoDAABImKejdviNiw2jO9p1Rt/770P62lPOqB1Lil7S/y7+rmrNG/r95A9q8ge/oAnTZvkdJgAAgK98GbUjG5BID+/gsZPa7o4jPaNyhNaM/LnGv/BV6dwJaeFq6ZrPShVT/A4TAADAFyTSJNKJOdstPb9F+tU3pPNnpEVrpXfeKVVM9TsyAACAjCKRJpFOzplO6bkHpF9/U+o5Kb1thXT1ndJkxpcGAACFgUSaRDo1Z7qkFx+Rnrtf6jws1b5H+pO/kmZfKxUVM804AADIWyTSJNLe6D0v/f7fnJKPN15Sb0W1ngvcoM82v01vaRzTjAMAgLxDIk0i7S1rpdYm7fnBVzX/+JMqVY+e6qvTjt4l+mXf29XjTpDJNOMAACDX+TJFOPKYMdL0hfrRxRu15o2/0AeK/ksfKX5a3y79ijrsGD3R+w79sO9dMrba70gBAAAyhkQacXuj84y6NFrf7V2m7/Yu0yXmkD5Y/Ct9qPhX+kjJ02p75QFp5Epp3g1S9TucKcoBAADyFKUdiNvy+3+l3a+1D1lu1Kc606zbAnt0ffFu6cQRaVSVNPd6J6me9T6pdLQPEQMAACSG0g6kxd3/Y55WbPm1Bn/2sipSky7RxFWrpRkB6fUXpVf/Xdr7hPSb70nFZdLFV0u175VmvU8HSmbqsT2tjPoBAAByGj3SSMiO3YfV8PjLMsbIWtt/33jT5VqxKEKN9PH90h9/Iu3/ufTaf0k9p3TMVuhXfQv0bN8C7bbzddBOUuNNb4+8fRQMwQcAANKBUTtIpNMqfJrx6eNGadWiatXEkcTu2f+G7tn2XV1T9Ir+tOgVvc0cUJGxestWanffJVrwJ3+m6iveJ02+PGZ99WO7D+vuRJJ5AACAOJFIk0hnpcE11hU6qbqiZi0q2qvFRXt1ZdF+lapHGjFGmnqFNPXKC7eqWskY7T7YFrG8RHIGF9m57motrKnK3A8FAADyCjXSyEpVY0pljPqT4C6N0S/6rtAv+q5QkZGunzdO9723WDr0a+n1JukPP5J+/c/OymWV0tQr1PLmRH3ATNarqtYBO6V/DGvJ2e+m/3xVO29/pw8/HQAAKDQk0siYKZUj+2dCjGRioEKasUCa8Y4LC08el954ybmA8fUX9adnf6m/KH1LknTOFitop+qPdrpe7atWs6pVWXy51NcnFRWl+8ehThsAgAJHIo2MsZL6omTR0ZZrzHhp9rXOTdK6+3+lP752WJeYFl1SdFiXmMOaW9SiJSW/UaU5Jb0u6e9HSuNmSuNnSeNnh93PlsZMlIxJOQmOVKe95Zf7qdMGAKCAUCONjDnadUbf++9D+tpTzTJhy62kT107Rx+5aoYmVYyMuY/oNdJWk027HrlhrOaUvCkd3ye17XfuOw6rvx+8tFxto6r1XNtYva6JOtw3Qa2apBY7Qes++B79zz+ZN+zPceDYSV37lV9ETP6LjPT0594T18WXAAAg+3CxIYl0Vkt21I+QhIfg6zkjtR+Uju9Ty76X9ex//7em6S1NN29pqjmuMnO+f9XzZQGVVF0sBWZIlTOkiilSeeg2WSqfoi/8Z1CPPPda1ET6Y39ysb70oQXD/hxelIZQXgIAgLdIpEmk816yyfiH/vlZ/aals/+5UZ8mqlPTjZNYLwqc0MfnG6njkNOT3X1EOtc9YB/dGqM3+gI6Yqt0VON0xI7Tm3acjtlKHbcVGjVusv7lzvdLIwNRa7W9GMLPi32QiAMAMBCJNIk0onjfvb9Q8NjJqO21E8bo6fXvGbjwbLeTUHe9LnUf0b/89Ffq63pDk0y7Jpt2XWTaNUntKjW9A7crKpFGj3fqssdMcO8nquXcGH3j+Q4dtxXqsGPUobHqtGPVqTHqMSPiGsLPi/ISr8bjJhkHAOQThr8DovjTORN08PjJqAnon86ZMLShrNy5TZgjSbqsclmEOm2rCp3UxKIu3fehal1Sfk46+ZZ08ph7/5bU9Yb0xssqP/6GNpV0q8gMDeKULdOp75RLEyc7PdqjAtKocWE35/kzTe16u+lWl0ap247WCY3SKZVJbvX5Q/91IGZ5yYFjJ3X34y87xyH0g7j3DY+/rMU1VXH18Htx0WU2JOLZEAMAIPdkXY+0MaY+7GnAWrs5gW3pkUZMXl0omHCddpj33fsLvXasS+N0QpXmhCp1UgFzQgGdUKU5qZrR53TLlZXS6fawW4dzf6ZDsn0R99trjU5olLo1WmeLx2jWtCnSyIoLHwTKKpzbyAp9/+V2PXPwtE7aMp20ZTqtkTqlMp20I3XWlOn6K2vVuHJhzJ/Di8lxsqFXPBtiAABkj5wt7XCT6P7k2RizXNJia21DnNuTSGNYqSTB4ZKt0/7CD3+b/MWKfX3S2U7duvXnajnypsbqlMrNaZXrtMaa0yrXKY01pzVzbK/+/JKxTlnKmU7n/my3dLbLuT9/ZvgfsLhMKh3tzDRZOsZ5XDpWGjFaKh2tJ/edUMvJIp1WmU7ZMp1Rqc5qhHNvSzV5fED/64NXSiNGSiWj3Hv3NmKUDnb26tqvP6deO7SOPJEPNakkwl59sMqWevVU90EMxJCPMQCJyuVEer+kZdbaYNiydmvtuDi3J5FGXFIdOSQVXiRvqfYG3719t37y0n6Nsmc12pzRKJ3VGJ3VKHNGY8xZvfvi0Vr19vFSz0np3Enp3Cnp3Amp51T/49+9dkRF509pjM5olDmnMp3TSJ0bWis+jLO2RGdDSbgt1RmV6oxGqHzMWNVMHu8k3sUjpJIyJ7nvf1yqN070afuLR3TOjtBZlahHJTqnEeqxJTpnSvTp6xZo1pQqqbjUubnbOY9L9ZWnDuj7TW+6MYzQeRWrV0WSTNwjsGRLvXqq+yAGYsjHGKTsSOaJIbdiyMlE2hgTkNRurTWDlltJC621TXHsg0QaOcGLXvFU9uFF8hetZ71IfRplzunjiy5Sw9KZTu93z2nn/vwZZzjC86f1vx97QefOndZINwEfqXMqMz39jytH9OoDl46Tzp+Tes9JvWel3h7p/Fn3+TkdaeuU7e1RqXo0QudVpvMqMz1xHb9Yemyxk1SbEo0dNdK5cLR4hHPf/3iEVFyi19rP6c2TveqxThLeoxKdV7F6VKw+FWtqVbkW1U4auF1Rcf/j1q4ePfJCq3pssfpUpF4VqddN6PtUpNvfO1czJ1Y42xQVSyb8vkQqKtIb3T36zGOv6Lw1/duGtremSNs+8SeaVlUumaJB2xZLpkgH28/qz//5V+qxRf3bWhUl9H5I9T3lxXuSGIhhsGxI5okh92LI1US6TtKeCIl0u6TbrLU749gHiTRyhhe94qnsI9VkPtV/dHft+I0eb2qJuv1NddN1z4q3x4wh8igsViXqVanOa874Uv3wk4vd5LvHTcbP9SfnX/y/TWo51qkROu8k46ZXJbpwm1E5Qmuuni719Up9Pc4++nqc5+7jHza9pvPnezTC3WaEm8qGHo8s7tOV08a625+X+s6HPe5Rx4nTUl+PStQrJ5Xucx5HuBg1085bJ6k3RcUqHVHiJOLGuPcDbx2nz+tkj1WfNepT6FYk6z4uH1WqKYExUbcPHj+tt06cU58t6t/ehu3josrRunRaIGYMu1/r0MG20+p192HD4pCRaieW65rZzuymkrmwL0kyRr/Ye0x73zyhPklWRrb/3lln3pRKLbt0srutu72Me42vs+yJV47olde71GcHbm8lGWP0tukBfeiK6YP2of6YHm9q1Z5DHf3xh/bhrqSFNVX68OKLo/4MktEjzx3Scwfa1OvGoPD9GKOrZ03QmnfNVOji5P7t3efbng3q2f3HZe2F177wbjT60zkTdNuf1g7ZLvz5w786qJ/9/s3+7fr3Y42Mka67bLITw+B9uPv59v8L6ie/e3PA+SG0D2Ok6xdMUf27Z4W9tgbuxxi1dpzR7d/drV478DWsu4+tH1+saYFRQ147tG5Lx2mt/Zfd6rPhP78TR5GRHv7EVZoWGB3jOEiH20/r49ueV++g42hlVCTpe7ddrenjRikiY3S47bRu/tbQbx9DMfxr/Z+oetzoIduFO9R2SjdvfW7IzyE559rt66529jFou/DtV255Luq5escn36nqqtFDG8OO66G2U1r+wK8uXNse1lZkpJ23v1Mz+vcxNI7X2k5p+f3/Ffa7HBjDD+54l2ZUxfjfZ4xeO35S//O+/xryc4SO5Q//6l39MXR1d6tyco2UY4n0UklPRkik90tqtNZujbBNmaSysEXlklpIpIH4ZHxynDDp7BUP7WO40gwvLphM9QNB9CEZrYpkNXv8SP3s09e4yfx552LTvl7J9vYv+9A3nlHX6bMqUp+K3UQ89LhYfRo3qljbPnblhW1C++g7L9le3b3jJZ06e85J4s3AbYvUp4pSo/XXzXW2G3Kzku3T1l/u05meHrcv2/an0KHHo0cY3bx4esRtZa1+/JsWnTt/Pmx7J5UMPR9ZLL1n7oQoMTj7aHrtuHr7eiO+fpGsSoqkuZPGSrIXXjv0WFavHT+pvr4+OenohRTauB9qSow0ubx0wDaD7ztOnXP+FsK3D0uni4w0qqQo6j56rZWxNuKoPgAyx3ypSyqA4e82SvqC30EAuapmwhg1XD/8tOjRrFhUrcU1VUkl4zMnjFHjTZdHTcTj2cfqd83UI8+9FrX9E++aGXP7RTVV2hwjhuGSaEm6472z9XhTS9T2v3rv7JjbRx+S0e09nDtFGhGlx8o1d/7lsZP5+dOlmdGT+d5La/Tvsba/dLp0dexvB5rfGuYDxdun6+b3R9/HMz3DbH/5dL1nmG8o/jXFDzX/7MG3JF9OcR93D9h+YDJebKxuvGKa/uGmt0VO5N0PBn/7b6/ox79plbUaktAXG+mGy6foC39+qfuKA4e/lKT/8++/0xOvvKFQR9uF/lbng8D/WDBF//uGeYO2G7ifdY/s1h+OdPdvN/Bemje5XPd/tG7Ia4f2c+eje/Tqm90DXlthjy+5qFxf//AVUX4G5/4j33pOnad7hrx26HnlqBF6ZM1VQ147tJ/VDz2vrtMDS8XCf5bKUSO07ZZFkY+Du6z+kd3qPhN9HxUjR1w4DgM469zxaJO6zpwf0BJ+LCpGluibH6kbsl24O7/3orrO9ETo53WUjyzRP998ZZRW6W/+tUldZyKXzBk3hq99eND2g3onPr39xf6fw0SIsXzkCP3TqiuGbBfymcde0okoMciN4StR/66cfa7f8Rt1DzqW4cerfGSJ7l3u7OPUqVPSl26O+nrhsimRbouyvCpG2yZJXw17Xi4p+n80AJ5LJRlPJRGXvEnG/Y4h1Q8DUurJfKrbE0O6YrhQ3iE5//I/ee1856LZGNYsvVKP/qZTkQbKLJJ0y7KrpPLo78u/vK5CD73yi6jbf/TP3iUFYr+vb/tQZcxve+790NXShOgfVFf/xcSY2//9X1wtTY79QXfafOm54T5gTo/+oWbi/FI9M9z2F8f+YFU5v0K7htvHrOj7GDN/vH4y3PazY8cwav5EPTHcPuZE30fZ/EnDH4e5sWMYMX+KfjHcPi6Jvo+S+dP01HDbz48dg5k/Q08Ot49LnX2c74rZCT1w27jXTL+g1H/RYbhAqG0wa+1Za21X6CapO9J6ALJXKBH/xs1XquH6eQnXia9YVK2nP/ce1b+7VjdcPlX1767V0597T0JX9fsZQygRLzJScZEZcB/vh4FU90EMxOB1DKFveyLtY3Mc3/akur3kfCiJJZ4PNalsTwz5FUM0WVMjLfXXQw8e/s4OrpuOsT0XGwLISX5ffEoMxJCPMaR6UbXfIywRgz8x5OSoHZIUYUKWAc/j2J5EGgAA9PM7mSeG3IshZxNpSTLGbJDUIaekY3y8sxq625JIAwAAIGmJJNLZdLGhJCne3mcAAADAT9l0sSEAAACQM0ikAQAAgCQUVCJ99uxZffGLX9TZs2f9DiXncSy9wXH0DsfSGxxH73AsvcFx9A7H0ntZd7FhKoa72DBUPM7FiKnjWHqD4+gdjqU3OI7e4Vh6g+PoHY5lfBK52LCgeqQBAAAAr5BIAwAAAEnIuuHvvNDS0hLxK4vubmcG8dbWVnUlMI86huJYeoPj6B2OpTc4jt7hWHqD4+gdjmV8Ejk2+VYjXSdpj99xAAAAIOcttNY2xVoh3xLpCkmdhw8fpogeAIAkffe739Wdd94pY4ystf333/zmN/XRj37U7/CAtOrq6lJ1dbWUi1OEp4IpwgEASE1zc7PmzZunvr6+IW1FRUXau3evZs+e7UNkQGYwagcAAEjKgw8+KGNMxDZjjLZt25bhiIDsRSINAAD6HTx4UNG+rbbW6uDBg5kNCMhiJNIAAKBfTU1NzB7pmpqazAYEZDESaQAA0G/NmjUxe6TXrl2b4YiA7EUiDQAA+s2ZM0fbtm1TUVGRiouLB9xv27aNCw2BMFk3aocxZoP7cLGkoLW2IYFtGbUDAAAP7Nu3T9u2bdPBgwdVU1OjtWvXkkSjICQyakdWJdLGmMbwxNkYs0OSrLUr4tyeRBoAAABJSySRzpopwo0xAUlLjTEBa22Hu3iTpD3GmFprbdC34AAAAHJYc3OzHnzwwf5vGNasWaM5c+b4HVbOy5pE2lXr3kLTMQbDlpNIAwAAJOihhx7SrbfeOmCmys2bN2vbtm1avXq13+HltKwq7RjMGFMnaY+kWfH0SFPaAQAAcAEzVSYuYzMbGmPeF7q5zyuMMfcbY35qjFmfyr5d6yTtipZEG2PK3NescJPocg9eEwAAIC8wU2V6pTr83XWS6nSh7GKPnDKMT0p6MZVk2u2NXiop1oWGGyV1ht1akn09AACAfMNMlemVao30fmvttyTJGHOtnCR6odsNfsAYU5vCvhvdfXXEWGeTpK+GPS8XyTQAAIAkZqpMt1R7pI+HPV4mZ9zn8FqSpAqwjTFbJK0bJomWtfastbYrdJPUnczrAQAA5CNmqkyvVBPpqrDHyyXtGtQeSHSHxph6SY2humhjTK1b5gEAAIAEMFNleqVa2tFujHlMTsJcJalBkowxN0m6W9KWRHZmjFnu7qvWLQsJyOnpjnt2QwAAAFywevVqXXPNNcxUmQYpD39njJkpqc5a+7j7/Eo5tdKS1G6tfTrO/QQktUdqs9ZGLu4Zug+GvwMAAEDSMjqzobX2gKQDYc9flPSiJLmjdsSVSLv10HElzAAAAIDf4k6kjTFXaGBN9HACcsaBvjexkAAAAIDsl0iP9GY54zp3JLBNZULRAADgs+bmZj344IP9taRr1qzRnDlz/A4LQBZKJJHukDNV94HhVgxxL0QEACAnPPTQQ7r11ltljJG1VsYYbd68Wdu2bdPq1av9Dg9Alon7YkNjzJVu/fNw61VKulbObIcmnm28UggXG9JTAgDp0dzcrHnz5qmvr29IW1FRkfbu3csoB0ABSMvFhvEmxNbaTmPMU3JG7rhW7oWHSB09JchGfLhDvnjwwQdjzgC3bds2bdq0KcNRAchmKY/aIUnGmBs19ELEgKRV4mJDTzQ3N+vWW2+N2FOydu1aXXPNNfSUIOP4cId8cvDgwZgzwB08eDCzAQHIeinNbGiMmWmMaZNzIeJmSZ+UMxHLZjkTqaxIOUJIiq+nBMik8A93vb29A+7Xrl2rffv2+R0ikJCampqY59mamprMBgQg66U6RfgGSQuttbMlNVhrF1lrZ1trq+Qk1LWxN0e8vOopaW5u1saNG3XzzTdr48aNam5u9jBKFBI+3CHfrFmzJuZ5du3atRmOCEC2SzWRbgobxWPAUHduTTWJtEe86Cl56KGHNG/ePN1zzz167LHHdM8992jevHl6+OGHvQ0WBYGvwZFv5syZo23btqmoqEjFxcUD7rdt20b5HIAhUk2kw/+LvmiMuXVQeyDF/cOVak8JX8PDa3wNjny0evVq7d27V3fddZdWrlypu+66S3v37qXmH0BEcQ9/F3FjY26TtFBOecdiY8xuSf8qZ6SOWkkrrLV/5kmk8cWT18PfPfzww1q7du2AC7ustXFd2LVx40bdc8896u3tHdJWXFysu+66i6vRC1AqI24wVBgAIB+lZfi7SKy133J7pPa4i5ZK2iXpHkntcoa/g0dWr16ta665Rtu2betPfNauXRtXssLX8Bgs1RE3Ql+DR/twRxINAMh3KfVIR92pMZXW2k7Pdzz86+Z1j3Qq6JH2Xi6Pn+xlb/K+ffuS+nAHAEA2SqRHOi2JtF9IpKPja3hvRerNjbfMJhvwwQoAgMgSSaRTvdgwKmNMpTGGsdWyBFejeycfLtyk1GcghoUEgMLg9fk+6RppY8xMOeNIR7NIQ2c7zIgTJ06oqChtnxFy1vLly3XllVfqO9/5jg4dOqQZM2bo4x//uGbNmqUTJ074HV7OeOCBB2KOVnH//ffrS1/6UoajSszUqVNj/gxTp04tmPfEI488ojvvvHNIrfg3v/lN/eVf/qXf4SFH7du3T4888kj/ufZjH/sYHRaAz+I93yfy/y/p0g5jzJVyLjLcJakjrCmgC+NH77HWrkrqBZKLqUJS56uvvqry8vJMvSwKzB133KEf//jHUctkPvCBD+i+++7zIbL4BYNBLVmyJOrP8Mwzz2jmzJk+RJZZHAekw/bt27V+/fohpV/33nuvVq3K2L/EvBAMBrV9+3YdPnxY1dXVWrVqlWprmaICiUvkfN/d3a158+ZJaS7t6JC01Vp7nbV2ZdjtOnemwxWStqSwfyArVVdXx+zNra6uznBEiautrdW9994bsdTn3nvvLZjkcfv27TF/l9///vczHBFyXTAY1Pr16yOWfq1fv14HDhwYfieQ5Px9LlmyRPfff79+/OMf6/7779eSJUu0fft2v0NDDkrX+T7pRNqd0bAhRjszGyIvrVq1KmZ98Yc//OEMR5ScVatW6ZlnntHtt9+uD3zgA7r99tv1zDPPFFSP2eHDh2P+Lg8fPhz3voLBoDZt2qQ77rhDmzZtUjAY9CpM5BA+nHmDDyTwmpfn+3CpjiM93BB3gVT2D2SjUG9utK9uc6k3d+bMmdq4caPfYfjGq28XIn2Vf9999/FVfgFK1z/rQhPPB5JCPnchcen6NjmViw0rFXvClVpJi5PdP5DNVq1apauuukrf//73+2v3PvzhD+dUEg3n9xitnj3ebxfCe84GW79+va666ireFwUkH0q/sgEfSOA1L873kaTSI10raaf7uCNC+5OS6lPYP5DVCr03Nx948e0CPWcIl65/1oWGDyTwWrq+TU4lke6QtNNauzKFfQCAr1L9doGeM4TLp9IvP/GBBOmQjm+Tk06krbUHjDFMfQYg56Xy7QI9ZxiM0q/U8YEE6eL1t8l5OUU440ijUDDGqv8YixpInwMHDvCBRJzrMy2RcaTTmkgbY7bn04QsvJGzB78LJn3IJvwuAKQL55fM8zyRdqcDvynBOMZL2mCtLU5wu6SlM5HmjZw9+F3QC5qN6DkD4DXO9f5IRyIdmg68SVLboOalkoKKPE34HmttxobAS1cizRs5e/C7cGzatEn333+/ent7h7QVFxfr9ttvZ6QIAMhxnOv9kY4pwjvkTAe+yJ0C/Dpr7XWSGiXNstbOdttCt9mSlinGzIe5hJmqsge/CwcjRQBA/uNcn/3iSqRjTAde6bZF2uYpSXUpxJY1eCNnD34XDkaKAID8x7k++8XbIx1tOvDhru7qSCiaLMUbOXvwu3CsWrUq5gcKxlgFgNzHuT77xZ1IRzHbGBOrGHlRivvPCryRswe/C0dojNWioiIVFxcPuGeMVQDID5zrs19Kw98ZY2ol/UzSJjkXI3bI6aWulVMKssJa+1KC+wyfVjxgrd2cwLaM2lEA+F1cwEgR8BLDSgLZiXN9ZmV0HGljTJ2kx+Qkz1aSkbRf0ifdOulE9lWvsOTZGLNc0mJrbVwXLYYS6X/5l3/Re9/7XhUXezvyHm/k7MHvAvAWH1ABQOrt7dXPf/5z3XLLLVImJ2Rxx5qulRSMdgFiHPvYL2mZtTYYtqzdWjsuzu0rJHVK0pQpU/R3f/d3ev/7359MKABQMBhWEgCkJ554Qp///Of1xhtvhBYNm0iXePXibvI8IIE2xtxqrf12PNsbYwKSasOTaFfAGFNnrW1KJJ4jR46ovr5eW7du1fvf/36+sgSAKOIZVjLesWo51wLIRU888YTq6+ujXocVTdyJtDGmRpKstQfd5xWKfTFhQE6ddFyJtKKPANLhtiWUSIe+mvzCF76gzs5ObdiwYcBXlvfddx9fWQKAvBtWMlJ5COdaANmut7dXn//85xNOoqXEeqSbJB2XNMd9vljSk+7jjgjrB+TUTMerKsrytmhtxpgySWVhiwZcYWit1euvv67169dH3PHnPvc5VVZW6vrrr5ck7du3T6dPnx6wzvTp0zVu3DgdP35cr7/++oC2MWPGqLa2Vr29vfr9738/ZP/z5s3TiBEjdPDgQXV3dw9omzx5siZOnKiOjo4h/6RGjhypOXOcw/zb3/52yC929uzZGjVqlFpaWtTe3j6gbcKECZoyZYpOnDihAwcGVtiUlJRo/vz5kqQ//OEPOn/+/ID2mTNnauzYsXrjjTd07NixAW3jxo3T9OnTdfr0ae3bt29AmzFGCxYskCQ1NzfrzJkzA9qrq6sVCAT01ltv6ciRIwPaysvLVVNTo56eHr366qsa7NJLL1VxcbGCwaBOnjw5oG3q1KkaP3682tvb1dLSMqBt1KhRmj17tiTplVdeGbLfOXPmaOTIkTp06JA6OweO7Dhp0iRddNFF6u7u1sGDBwe0lZaW6pJLLpEk/f73vx8y21Rtba3GjBmj119/XcePHx/QVlVVpWnTpg17DP/4xz/q7NmzA9pnzJihyspKHT16VG+++eaAtoqKCl188cU6d+6c9u7dO+Rnveyyy1RUVKT9+/fr1KlTA9qmTZumqqoqtbW1qbW1dUDb6NGjNWvWLPX19el3v/vdkP1ecsklKi0t1WuvvaauroHffF100UWaNGmSOjs7dejQoQFtZWVlmjt3rqTY7+/W1la1tQ2cSHX8+PGaOnWqTp48qWBw4JdXxcXFuvTSSyVJe/fu1blz5wa019TUqLy8XG+++aaOHj06oK2yslIzZszQmTNn1NzcPORnfdvb3iYpf88RZWVliqWsrEyvvPJKzHNEd3e31q9fH7E85HOf+5yuuuoqzZw5k3NEBs8RLS0t+tnPfqa2tjbNmzdPN95445C/C4lzRAjnCEch5hG7du0KL+dIjLU2rpukayVdG/Z8pqTHhtkmZvugdZc64QxZvl9SfZRtvignWU/p1traaltbW21dXd2Qtq9//eu2tbXVfvnLXx7StmTJEtva2mpfffXViPt9+eWXbWtrq122bNmQts9//vO2tbXVPvDAA0PaFixY0B9TaWnpkPann37atra22ptvvnlI25133mlbW1vtjh07hrRNnjy5f7+TJ08e0r5jxw7b2tpq77zzziFtN998s21tbbVPP/30kLYRI0b073fBggVD2h944AHb2tpqP//5zw9pW7ZsmW1tbbUvv/xyxGP46quv2tbWVrtkyZIhbV/+8pdta2ur/frXvz6kra6urj+mSPt99tlnbWtrq73xxhuHtH32s5+1ra2t9tFHHx3SVlNT07/fqqqqIe0//OEPbWtrq73tttuGtN1yyy22tbXV/uQnPxnSNnbs2P79zp07d0j7Qw89ZFtbW+3dd989pO2GG26wra2t9oUXXoj4swaDQdva2mqvvvrqIW333HOPbW1ttffcc8+Qtquvvtq2trbaYDAYcb8vvPCCbW1ttTfccMOQtrvvvtu2trbahx56aEjb3Llz+3/WsWPHDmn/yU9+YltbW+0tt9wypO22226zra2t9oc//OGQtqqqqv791tTUDGl/9NFHbWtrq/3sZz87pO3GG2+0ra2t9tlnn434sxbKOWK4W6xzxKWXXmqLi4ujbht6Xc4RmT9HSLLFxcXWGBOxjXME54jwmx95RGlpqa95RKT3knurGC5/TXX4u5mxLiw0xlxprX0xzn3VSdpjrTWDlrdLus1auzPCNpF6pFsGrxfjNfXud79b3/ve9yTxSTKeT5KPPPKINm7cOOTK/q985StatWoVvU30SEuitykkl84RP/vZz/SP//iPKioq6t+ftVaf+cxndN1110mKfY74yle+oqeeeipij7QxRh/84Ad13333cY7IwDliz549uu222yJ+TW2M0be//W1NmzatfxnnCAfnCEch9kj/9Kc/1Zo1a4Zsq3SP2mGMeV/osbX2abduulFOTfOT1tp7E9hXQFK7pHHW2o6w5VbSwnguNgwftcN9rjFjxujUqVMRT+7FxcW6/fbb476IptBxZT+Q31IZVnLTpk26//77hySOEufaTON3ASSmt7dX73jHO3TkyJHBHzqGTaRTndnwOkl1kkIf+/bISaI/KelFY0zk4uQI3OQ5qAj10ImO2CGp/wr0u+++O9ZrFsxMeF6I58p+ALlr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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[Obs[0.1795(32)], Obs[186(14)], Obs[0.578(70)], Obs[597(170)], Obs[1.42(83)], Obs[239(173)]]\n" - ] - } - ], - "source": [ - "beta_p = pe.fits.prior_fit(px, py, func_3exp, priors, resplot=True)\n", - "[o.gamma_method() for o in beta_p]\n", - "print(beta_p)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now observe how far the individual fit parameters are constrained by the data or the priors" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "[o.plot_piechart() for o in beta_p];" - ] - }, { "cell_type": "code", "execution_count": null, @@ -760,7 +432,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -774,7 +446,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.8.10" } }, "nbformat": 4, From 615411337cb263911f4157dafd2833791ff4b2f7 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 12:15:26 +0100 Subject: [PATCH 169/220] feat: example 5 updated to new version --- examples/05_matrix_operations.ipynb | 147 +++++++++------------------- 1 file changed, 45 insertions(+), 102 deletions(-) diff --git a/examples/05_matrix_operations.ipynb b/examples/05_matrix_operations.ipynb index d5e1da95..f2a75aa1 100644 --- a/examples/05_matrix_operations.ipynb +++ b/examples/05_matrix_operations.ipynb @@ -97,6 +97,31 @@ "print(matrix @ np.identity(2))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For large matrices overloading the standard operator `@` can become inefficient as pyerrors has to perform a large number of elementary opeations. For these situations pyerrors provides the function `linalg.matmul` which optimizes the required automatic differentiation. The function can take an arbitray number of operands." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[Obs[78.12099999999998] Obs[-22.909999999999997]]\n", + " [Obs[-22.909999999999997] Obs[7.1]]]\n" + ] + } + ], + "source": [ + "print(pe.linalg.matmul(matrix, matrix, matrix)) # Equivalent to matrix @ matrix @ matrix but faster for large matrices" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -167,7 +192,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[Obs[7.2(1.7)] Obs[-1.00(45)]]\n" + "[Obs[7.2(1.7)] Obs[-1.00(46)]]\n" ] } ], @@ -182,8 +207,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Matrix to scalar operations\n", - "If we want to apply a numpy matrix function with a scalar return value we can use `scalar_mat_op`. __Here we need to use the autograd wrapped version of numpy__ (imported as anp) to use automatic differentiation." + "`pyerrors` provides the user with wrappers to the `numpy.linalg` functions which work on `Obs` valued matrices. We can for example calculate the determinant of the matrix via" ] }, { @@ -195,50 +219,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "det \t Obs[3.10(28)]\n", - "trace \t Obs[5.10(20)]\n", - "norm \t Obs[4.45(19)]\n" + "3.10(28)\n" ] } ], "source": [ - "import autograd.numpy as anp # Thinly-wrapped numpy\n", - "funcs = [anp.linalg.det, anp.trace, anp.linalg.norm]\n", - "\n", - "for i, func in enumerate(funcs):\n", - " res = pe.linalg.scalar_mat_op(func, matrix)\n", - " res.gamma_method()\n", - " print(func.__name__, '\\t', res)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For matrix operations which are not supported by autograd we can use numerical differentiation" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cond \t Obs[6.23(58)]\n", - "expm_cond \t Obs[4.45(19)]\n" - ] - } - ], - "source": [ - "funcs = [np.linalg.cond, scipy.linalg.expm_cond]\n", - "\n", - "for i, func in enumerate(funcs):\n", - " res = pe.linalg.scalar_mat_op(func, matrix, num_grad=True)\n", - " res.gamma_method()\n", - " print(func.__name__, ' \\t', res)" + "det = pe.linalg.det(matrix)\n", + "det.gamma_method()\n", + "print(det)" ] }, { @@ -251,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -259,12 +247,12 @@ "output_type": "stream", "text": [ "[[Obs[2.025(49)] Obs[0.0]]\n", - " [Obs[-0.494(51)] Obs[0.870(29)]]]\n" + " [Obs[-0.494(50)] Obs[0.870(29)]]]\n" ] } ], "source": [ - "cholesky = pe.linalg.mat_mat_op(anp.linalg.cholesky, matrix)\n", + "cholesky = pe.linalg.cholesky(matrix)\n", "for (i, j), entry in np.ndenumerate(cholesky):\n", " entry.gamma_method()\n", "print(cholesky)" @@ -279,7 +267,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -305,7 +293,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -313,7 +301,7 @@ "output_type": "stream", "text": [ "[[Obs[0.494(12)] Obs[0.0]]\n", - " [Obs[0.280(40)] Obs[1.150(39)]]]\n", + " [Obs[0.280(39)] Obs[1.150(38)]]]\n", "Check:\n", "[[Obs[1.0] Obs[0.0]]\n", " [Obs[0.0] Obs[1.0]]]\n" @@ -321,7 +309,7 @@ } ], "source": [ - "inv = pe.linalg.mat_mat_op(anp.linalg.inv, cholesky)\n", + "inv = pe.linalg.inv(cholesky)\n", "for (i, j), entry in np.ndenumerate(inv):\n", " entry.gamma_method()\n", "print(inv)\n", @@ -330,51 +318,6 @@ "print(check_inv)" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Matrix to matrix operations which are not supported by autograd can also be computed with numeric differentiation" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "orth\n", - "[[Obs[-0.9592(76)] Obs[0.283(26)]]\n", - " [Obs[0.283(26)] Obs[0.9592(76)]]]\n", - "expm\n", - "[[Obs[75(15)] Obs[-21.4(4.1)]]\n", - " [Obs[-21.4(4.1)] Obs[8.3(1.4)]]]\n", - "logm\n", - "[[Obs[1.334(57)] Obs[-0.496(61)]]\n", - " [Obs[-0.496(61)] Obs[-0.203(50)]]]\n", - "sinhm\n", - "[[Obs[37.3(7.4)] Obs[-10.8(2.1)]]\n", - " [Obs[-10.8(2.1)] Obs[3.94(68)]]]\n", - "sqrtm\n", - "[[Obs[1.996(51)] Obs[-0.341(37)]]\n", - " [Obs[-0.341(37)] Obs[0.940(14)]]]\n" - ] - } - ], - "source": [ - "funcs = [scipy.linalg.orth, scipy.linalg.expm, scipy.linalg.logm, scipy.linalg.sinhm, scipy.linalg.sqrtm]\n", - "\n", - "for i,func in enumerate(funcs):\n", - " res = pe.linalg.mat_mat_op(func, matrix, num_grad=True)\n", - " for (i, j), entry in np.ndenumerate(res):\n", - " entry.gamma_method()\n", - " print(func.__name__)\n", - " print(res)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -385,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -393,10 +336,10 @@ "output_type": "stream", "text": [ "Eigenvalues:\n", - "[Obs[0.705(57)] Obs[4.39(19)]]\n", + "[Obs[0.705(56)] Obs[4.39(20)]]\n", "Eigenvectors:\n", - "[[Obs[-0.283(26)] Obs[-0.9592(76)]]\n", - " [Obs[-0.9592(76)] Obs[0.283(26)]]]\n" + "[[Obs[-0.283(25)] Obs[-0.9592(74)]]\n", + " [Obs[-0.9592(74)] Obs[0.283(25)]]]\n" ] } ], @@ -421,7 +364,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -451,7 +394,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -465,7 +408,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.8.10" } }, "nbformat": 4, From b00fab4838835e32c4ba6d210ee698707d07c091 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 12:16:36 +0100 Subject: [PATCH 170/220] docs: removed hint about not working examples from README --- README.md | 2 +- examples/05_matrix_operations.ipynb | 35 ++++++++++++++--------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 773970cb..cb19a814 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ `pyerrors` is a python package for error computation and propagation of Markov chain Monte Carlo data. - **Documentation:** https://fjosw.github.io/pyerrors/pyerrors.html -- **Examples**: https://github.com/fjosw/pyerrors/tree/develop/examples (Do not work properly at the moment) +- **Examples**: https://github.com/fjosw/pyerrors/tree/develop/examples - **Contributing:** https://github.com/fjosw/pyerrors/blob/develop/CONTRIBUTING.md - **Bug reports:** https://github.com/fjosw/pyerrors/issues diff --git a/examples/05_matrix_operations.ipynb b/examples/05_matrix_operations.ipynb index f2a75aa1..926d1734 100644 --- a/examples/05_matrix_operations.ipynb +++ b/examples/05_matrix_operations.ipynb @@ -51,7 +51,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The standard matrix product can be performed with @" + "The standard matrix product can be performed with `@`" ] }, { @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -131,7 +131,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -151,12 +151,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For a vector of `Obs`, we again use np.asarray to end up with the correct object" + "For a vector of `Obs`, we again use `np.asarray` to end up with the correct object" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -185,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -212,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -233,13 +233,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Matrix to matrix operations\n", - "For matrix operations with a matrix as return value we can use another wrapper `mat_mat_op`. Take as an example the cholesky decompostion. __Here we need to use the autograd wrapped version of numpy__ (imported as anp) to use automatic differentiation." + "The cholesky decomposition can be obtained as follows" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -267,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -293,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -301,7 +300,7 @@ "output_type": "stream", "text": [ "[[Obs[0.494(12)] Obs[0.0]]\n", - " [Obs[0.280(39)] Obs[1.150(38)]]]\n", + " [Obs[0.280(40)] Obs[1.150(39)]]]\n", "Check:\n", "[[Obs[1.0] Obs[0.0]]\n", " [Obs[0.0] Obs[1.0]]]\n" @@ -328,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -336,10 +335,10 @@ "output_type": "stream", "text": [ "Eigenvalues:\n", - "[Obs[0.705(56)] Obs[4.39(20)]]\n", + "[Obs[0.705(57)] Obs[4.39(19)]]\n", "Eigenvectors:\n", - "[[Obs[-0.283(25)] Obs[-0.9592(74)]]\n", - " [Obs[-0.9592(74)] Obs[0.283(25)]]]\n" + "[[Obs[-0.283(26)] Obs[-0.9592(75)]]\n", + " [Obs[-0.9592(75)] Obs[0.283(26)]]]\n" ] } ], @@ -364,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { From f149eea4127c1791ebd0c4a9370606ff5557cfed Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 17:38:12 +0100 Subject: [PATCH 171/220] feat: example 2 improved --- examples/02_correlators.ipynb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/examples/02_correlators.ipynb b/examples/02_correlators.ipynb index 112e50d9..423b92a8 100644 --- a/examples/02_correlators.ipynb +++ b/examples/02_correlators.ipynb @@ -28,7 +28,7 @@ "id": "e5764fd0", "metadata": {}, "source": [ - "We can load data from a preprocessed file which contain a list of `pyerror` `Obs`:" + "We can load data from a preprocessed file which contains a list of `pyerror` `Obs`:" ] }, { @@ -68,7 +68,7 @@ "metadata": {}, "outputs": [], "source": [ - "my_correlator = pe.correlators.Corr(correlator_data)" + "my_correlator = pe.Corr(correlator_data)" ] }, { @@ -161,7 +161,7 @@ "id": "634dd613", "metadata": {}, "source": [ - "Or symmetrised" + "or symmetrised" ] }, { @@ -180,7 +180,7 @@ "id": "3d733872", "metadata": {}, "source": [ - "And we can compare different `Corr` objects by passing `comp` to the `show` method" + "We can compare different `Corr` objects by passing `comp` to the `show` method" ] }, { @@ -376,6 +376,14 @@ "symmetrised_correlator.show([5, 20], comp=[first_derivative, second_derivative], y_range=[-500, 1300])" ] }, + { + "cell_type": "markdown", + "id": "0db4f67d", + "metadata": {}, + "source": [ + "There is a range of addtional methods of the `Corr` class which can be found in the documentation." + ] + }, { "cell_type": "code", "execution_count": null, From f9584e237288bbb7d93f710fa80b1485bd2933d4 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 17:44:41 +0100 Subject: [PATCH 172/220] fix: end of x_range in Corr.show shortened by 1 --- pyerrors/correlators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index e074f95c..6759a49c 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -522,7 +522,7 @@ class Corr: if self.N != 1: raise Exception("Correlator must be projected before plotting") if x_range is None: - x_range = [0, self.T] + x_range = [0, self.T - 1] fig = plt.figure() ax1 = fig.add_subplot(111) From 2e72b6da5ee89e78d5c8fd0aa305f1da8e3cd205 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 17:51:50 +0100 Subject: [PATCH 173/220] feat: example 2-4 improved, figures updated with changes in Corr.show --- examples/02_correlators.ipynb | 8 +-- examples/03_pcac_example.ipynb | 128 ++++++++------------------------- examples/04_fit_example.ipynb | 48 ++++++------- 3 files changed, 56 insertions(+), 128 deletions(-) diff --git a/examples/02_correlators.ipynb b/examples/02_correlators.ipynb index 423b92a8..02afa38f 100644 --- a/examples/02_correlators.ipynb +++ b/examples/02_correlators.ipynb @@ -114,7 +114,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -191,7 +191,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -378,7 +378,7 @@ }, { "cell_type": "markdown", - "id": "0db4f67d", + "id": "7fcbcac4", "metadata": {}, "source": [ "There is a range of addtional methods of the `Corr` class which can be found in the documentation." @@ -387,7 +387,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ff177781", + "id": "2fbe1263", "metadata": {}, "outputs": [], "source": [] diff --git a/examples/03_pcac_example.ipynb b/examples/03_pcac_example.ipynb index 75f1af4b..ae605aaf 100644 --- a/examples/03_pcac_example.ipynb +++ b/examples/03_pcac_example.ipynb @@ -81,7 +81,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGRCAYAAACdcEL9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuyElEQVR4nO3df3Cc9WHn8c9XpjXJWNJiUiEbsM8ygWIIcYWdEg7DAFoH2kDbq/yLZjLjAawhvaMtMDZuSggx1JGKuZa7ISdTjrkkBWP72l7IXA0S9MCEUiNEhlJzdfByBoyFCGYlmQSn1X7vj+8+1mq90v7Q8+w+z7Pv18zOo32e7z77Ha0f7cff5/vDWGsFAAAQdQ21rgAAAIAfCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWTin3BcaYDZISktKSFkvaaq1N+1orAACAMpUVaowxGyVt90KMMSYh6WFJq3yvGQAAQBnKvf2UzG2Vyf6c8LE+AAAAFSn39lPaGNMnaZW1Nm2MaZOUmqqwMWa2pNl5u+dKOlrm+wIAgPrWKOk9a62dqoCZ5tjJhd3tplcktUnqkXTQWrt9mvLflHR3yW8AAAAwtbOstYenOlhWqJFOdBROSuqU1K9sq80UZfNbaholvfvOO++oqamprPcFAAD1aXR0VGeffbYkNVtrR6cqV25H4W5JfdbaVdlbT7vkWm4WFypvrT0u6XjO6yVJTU1NhBoAAOCrkjsKZ0NMwlrbL0nW2pS19mK5fjadQVUQAACgFOWMfmqTm5smX68/VQEAAKhcyaEm20LTnu0snOtia+1uX2sFAABQpnKHdK+StNkY86Fcq01C0iaf6wQAAFC2skJNdpQTIQYAAIQOC1oCAIBYINQAAIBYINQAAIBYINQAAIBYKHf0EwAA8Nnw6CcaHjtetFxL42y1NJ1ahRpFE6EGAIAa+6t/fFt/8cxPipb7g6s/qz9KnluFGkUToQYAgBr7vV9foOSSM048f3P4mP7wiR/rz9cs1Tktc07sb2mcXejlyCLU+CEzLh16UTr2vjTnDGnhpVLDrFrXCgAQES1Npxa8rXROyxxdeGZzDWok9ff3a9euXZKkZDKpzs7Slnns7+/X4OCgNm7cGGT1CiLUzNT+H0hPf11Kvz2xL7FAWnmftOT62tULABBJ4xmr195NS5Jeezet8+c1aVaDqXo9ksmkPvroIw0MDJT1ut7e3pqFGkY/VWpsSPrRg9LOr0otS6Qb+6XNh922ZYnb/6MHXTkAAEqw5/Ujuqz7Wf3x37wuSfrjv3ldl3U/qz2vH6lqPQYHB9XW1qZEIqGOjg51dHSU/Nq5c+cqlUoplUoFWMPCCDWVevkR6ZlvSud+SVr7uHT2cmn2HLdd+7j02ZXSM/e4cgAAFLHn9SO65fuDOjLyyaT9QyOf6JbvD1Y92CQSibJfs3v3bnV3d6utrU29vb3+V6oIQk2lWi90fWlW3CE15P0aGxqky++QMv/mygEAMI3xjNU9T+6XLXDM23fPk/s1nilUwl+Dg4Pq7e1VKpVST0+Pdu/eXfJrU6mUEomEOjs7y3qdXwg1lRr/V7dtOb/wcW+/Vw4AgCnse+voSS00uaykIyOfaN9bRwOvS3t7u7q6ujR37lxt3Lix5A7C6XT6ROtOV1eXUqmUBgcHA6zpyQg1lZqTHXo3/Ebh497+OWcUPg4AQNbw2NSBppJytbBz506tXr1aktTW1qb29nY98cQTVa0Do58qNbdNapwn7b3f9aHJvQWVyUh7t0mN8105AACm0dJY2izBpZarhb6+PqXT6Un7tm/fru7u7qrVgVBTqcHvSmNH3OPxta4PTcv5roXm+fulnzw1Ue7KzbWtKwAg1L6waK7mNZ+qoZFPCvarMZJam0/VFxbNrXbVSpJOp7VmzZpJt6o2bNig0047TYODg2pvb69KPbj9VKll66UNz0nJLdLQa9IjSWnrWW479E9u/4bnXDkAAKYxq8Ho7uuWSHIBJpf3/O7rltRkvppS7Ny586S+N4lEQu3t7VUdBUVLTaUaW91j/lLpi7/PjMIAgBm55sJ5+s5X2nXPk/sndRpubT5Vd1+3RNdcOK+GtZveK6+8UnD/mjVrtHXr1qoFG1pq/NAwS1q0Qvpcp9sSaAAAFbjmwnl6YdNV+tPfcdOB/OnvXKgXNl1V1UAzODiorVu3KpVKadOmTSdGMBljTnr09/fr4osv1vbt29XT0zPpPP39/Sf62axataoqQ7yNtcGPeT/xZsY0SRoZGRlRU1NT1d73BNZoAgBEwOuHR/Tl//KCfvifLqvZ2k9hMjo6qubmZklqttaOTlWufm4/RXGNJkIYANSF4dFPNDx2/MTzN4ePTdp6WhpnF1z4Ek78W2rGhqTXdkp933BLGqzIGaW0937pwFNS8lvSRatdH5mwiGIIAwBU5D/3HdBfPPOTouX+4OrP6o+S51ahRuFSaktN/EPNs/dJL2yTzkkWnk/m8bXSwWeky26Trvp6deo0naiGMABAxfJbaqZSry013H7ylLJG00+eCs8aTS8/4kKYt1CmV2dvoczH17qFMo+PhSOEAQBmrKXp1LoMK36L/+inYx+4bbE1mrxytcZCmQAAVKSsUGOM2WWM6TTGtBtj2nIfQVVwxg4PuG2xNZq8crXGQpkAAFSk3Jaadkm7JL0i6WDOo3oLO5Trqrsm1mjKZCYfy12j6aq7alO/fCyUCQBARcrtU9NrrZ00u44xZoO1druPdfJX85nStT3Szq9KO26QVtyW0/H2AdfxdvV3XbkwYKFMAKg/Y0PuUYw3mz0KKjfUTJoO0BjTIWnK+zbGmNmSZufsaizz/fyx5HoXXJ7+ulubyZNY6PaHaYg0C2UCQP0ZeFR67tvFy11xJ3/7p1HxkO5sP5qO6VppjDHflHR3/n5mFJ6Gl9bfel566SEXbjyN86VLbpEWXU5aB4A4yW+p+ekB6a9vlv7Dw9JncualqdO//YHPU2OM6bXWdhUpU6il5t2ahZqoiUIIAwD4770fS9uvkDY85xZOrnOBzlNjjGkvpZy19rikE7MJGRPOJdNDy1soEwBQPzLj0nuvup/fe1Vq/VxN/kPb39+vXbt2SZKSyaQ6OztPKpNKpdTb26uenh61tbWpq8u1dRw8eFBHjx7VmjVrCr4uKBW11BhjeiUdzO80XMLrarugJQAAYRaiJXKMMfroo480MOC6znZ0dExZNplMqq2tTb29vZP2L168WF1dXdq4ceOM6lJqS02lk+91SEpX+FoAAJBv/w/cSN2WC6Qb+6XNh9225QK3f/8PqlaVwcFBtbW1KZFIqKOjY9pAM52uri5t2rTJ59pNrdJQ0yYp5WdFAACoW5lx10Jz7jXS2sfc0jiz52SXyHnM7X/6T1y5KkkkEr6dI51Oz/hcpag01KQkHfWzIgAA1K1DL7pbTituL7xEzorbpPQhVy5gg4OD6u3tVSqVUk9Pj3bv3l38RVN45ZVX1N7e7ktAKkVFHYWttYv9rggAAHXr2PtuW3SdwvcDr0p7e7u6urrU399fcV+YdDqt7du3a2BgQM8884zPNZxa/FfpBgAg7HKXyDl7+cnHI7BEzsDAgLZvn5i6rqOjY8YdhMtFqAEAoNYWXupGOe3d5vrQnLREzgNuFvyFl9aujkUsW7ZMGzZsqGkdKu1TAwAA/NIwyw3bPrDHrVP4zj7p+Jjb7rjB7V95LxOwFkFLDQAAYRCldQpDilADAEBYLLle+tXfdIsW//APpS//udT+VVpoSsTtJwAAwqRhljT/19zP83+t6oFmcHBQW7duVSqV0qZNmzQ4OCjJzTCc//CGfQ8MDKi/v189PT1Vm5OmkIoXtKzozVgmAQCA4ljQcpJAF7RExLH6NwCEy9iQe3h+emDy1tPY6h4oiFBTL7wL5q3npZceksaOTBxrnCdd8jVp0eVcMABQCwOPSs99++T9f33z5OdX3Cldubk6dYogQk29yL1gzr1GWv09N0Pl8BvS838m9d3ljnHBAED1LVsvnXdt8XL8p3Na9KmpFyOHpb+8Wpr3eWnt4ydP7LRjnXTkNemmfqn5zNrVEwCAPKX2qWH0U704mnK3nFbcMcViabdLY++5cgAARBChpl6EaLE0AACCQKipF7mLpRUSgcXSAACYDqGmXuQulpbJTD4WkcXSAACYDqGmXnz8gbT85uxiaevyFktb5/Yvv8mVAwAgghjSXS9yh3S/2edCjKfhFEnWDev+xccM6QYARBKhpl7kzoGQGZeGXpN+9qH06dOl1osmZhRmDgQAQEQRaupF/kzBZ11cu7oAABAA+tQAAIBYINQAAIBYINQAAIBYINQAAIBYINQAAIBYINQAAIBYqGhItzGmW9LB7NOj1trd/lUJAACgfGWFGmNMQtIzkq621qaNMe2SXpFkAqgbAABAycq9/dQt6QlrbVqSrLWDkpJ+VwoAAKBc5d5+2iBpsTGmTVKbtbbfWts/VWFjzGxJs3N2NVZQRwAAgKJKbqnJBhlJapeUkJQyxvQaYzqmedlmSSM5j3crrCcAAMC0yrn95IWatLV20FqbkrRJ0q5pXrNVUnPO46yKagkAAFBEJUO6B7wfsn1rElO11lhrj1trR72HpLHKqgkAADC9ckJNaor9aU204gAAANREyaEme7sppZMDTEI5rTcAAAC1UO7tp02S1nhPjDGdkvqzQ7sBAABqpqwh3dba3caYucaYjdldp1trmacGAADUXNnLJFhrtwdREQAAgJlgQUsAABALFS1oCZwwNuQekpQZl4Zek372ofTp06XWi6SGWe5YY6t7AAAQEEINZmbgUem5b7ufG2a5YOPJfX7FndKVm6tfPwBA3eD2E2Zm2XopuUWSkc5JSjf2S5sPu+05Sbc/ucWVAwAgQMZaW703M6ZJ0sjIyIiampqq9r4IUGZcenCp1HKBtPYxqSEnJ2cy0o4bpOH90q2vTtyKAgCgDKOjo2pubpak5uwKBQXRUoOZOfSilH5bWnH75EAjuecrbpPSh1w5AAACRKjBzBx7321bzi983NvvlQMAICCEGszMnDPcdviNwse9/V45AAACQqjBzCy8VEoskPZuc31ocmUy0t4HpMRCVw4AgAARajAzDbOklfdJB/a4TsHv7JOOj7ntjhvc/pX30kkYABA45qnBzIwNuZaa5Leklx6SHslZCqxxvtufWODKMfkeACBAhBrMTO7ke/nG3pP67nI/M/keACBghBrMzLL10nnXFi9HKw0AIGCEGswMazoBAEKCjsIAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWCDUAACAWylr7yRjTIalLUp+klKSkpJettbsDqBsAAEDJyl3QMiGpQ1KnXKjpJtAAAIAwqGSV7kXW2rTfFQEAAJgJ+tQAAIBYqKSlZrUx5qikuZIWW2s3TVXQGDNb0uycXY0VvB8AAEBR5YaaQUmy1qYkyRizwRizy1q7aorymyXdPYP6AQAAlMRYayt/sTEJSR9JOq1QP5spWmreHRkZUVNTU8XvCwAA6sfo6Kiam5slqdlaOzpVuXKHdHfmjnay1qaNMZLUpmwrTi5r7XFJx3NeX87boZ6NDblHMY2t7gEAqHslh5psq8wuY8zinNtPiezhlP9VQ10beFR67tvFy11xp3Tl5uDrAwAIvZJDTbZVpscLNFkbJO1miDd8t2y9dN610lvPSy89JI0dmTjWOE+65GvSostppQEAnFBuR+GtxpiNOc9Pn6aTMFC5xlbpnX1S3zekc6+RVn9PajlfGn5D2rvN7V/9XWn+0lrXFAAQEjPqKFz2mxnTJGmEjsIoKjMuPbhUarlAWvuY1JAzpVImI+24QRreL936qtQwq2bVBAAEr9SOwky+h3A69KKUfltacfvkQCO55ytuk9KHXDkAAESoQVgde99tW84vfNzb75UDANQ9Qg3Cac4Zbjv8RuHj3n6vHACg7hFqEE4LL5USC1yn4Exm8rFMRtr7gJRY6MoBACBCDcKqYZa08j7pwB7XKfidfdLxMbfdcYPbv/JeOgkDAE6oZEFLIHhjQ66lJvktN0/NI8mJY43z3f7EAleOuWoAACLUIKymm1F47D2p7y73MzMKAwCyCDUIJ29G4WJopQEAZBFqEE4sVAkAKBMdhQEAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCwQagAAQCzMKNQYY/r8qggAAMBMVBxqjDGdkjp8rAsAAEDFTqnkRcaYhKS5/lYFqIKxIfcoprHVPQAAkVFRqJG0WtJOSb0+1gUI3sCj0nPfLl7uijulKzcHXx8AgG/KDjXGmA5J/SWWnS1pds6uxnLfD/DVsvXSeddKbz0vvfSQNHZk4ljjPOmSr0mLLqeVBgAiqJI+NQlrbarEspsljeQ83q3g/QD/NLZK6belvm9I85ZKN/ZLmw+77bylbn/6bUINAESQsdaWXtiYDdba7dmfE5I+staaacoXaql5d2RkRE1NTZXVGJiJzLj04FKp5QJp7WNSQ06uz2SkHTdIw/ulW1+VGmbVrJoAgAmjo6Nqbm6WpGZr7ehU5UpuqTHGtEsaKKcS1trj1tpR7yFprJzXA7479KJriVlx++RAI7nnK26T0odcOQBApJTTp2aupPZsnxpJWixJxpiNklLW2t1+Vw7w3bH33bbl/MLHvf1eOQBAZJQcaqy1/crpIJxtudlgre0JomJAIOac4bbDb0hnLz/5+PAbk8sBACKjosn3shPvbc7+3J3TegOE28JLpcQCae8214cmVyYj7X1ASix05QAAkVJRqLHW7rbWrrLWGmvtpmwrDhB+H38gLb9ZOrBH2rFOemefdHzMbXesc/uX3+TKAQAipdLJ94Boyp18780+F2I8DadIslLfXdIvPmbyPQCIGEIN6os3+Z7khncPvSb97EPp06dLrRdNDONmnhoAiBxCDepL/ppOZ11cu7oAAHxV8SrdAAAAYUKoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsXBKrSsAxMLYkHtIUmZcGnpN+tmH0qdPl1ovkhpmuWONre4BAPAdoQbww8Cj0nPfdj83zHLBxpP7/Io7pSs3V79+AFAHuP0E+GHZeim5RZKRzklKN/ZLmw+77TlJtz+5xZUDAATCWGur92bGNEkaGRkZUVNTU9XeFwhcZlx6cKnUcoG09jGpIef/C5mMtOMGaXi/dOurE7eiAAAlGR0dVXNzsyQ1W2tHpypHSw3gh0MvSum3pRW3Tw40knu+4jYpfciVAwAEglAD+OHY+27bcn7h495+rxwAwHeEGsAPc85w2+E3Ch/39nvlAAC+I9QAflh4qZRYIO3d5vrQ5MpkpL0PSImFrhwAIBBlhRpjTMIYsyH76DbG7DLGJAKqGxAdDbOklfdJB/a4TsHv7JOOj7ntjhvc/pX30kkYAAJU1ugnY0yvpG5rbSrneZu1Nlni6xn9hHjyJt9763nppYeksSMTxxrnS5fcIi26nMn3AKACpY5+KnfyvTZJnZJ6ss8PSlpdUQ2BOMmdfC/f2HtS313uZybfA4DAlBVqCrTILJfU7191gIhatl4679ri5WilAYDAVLxMgjGmU1JC0qppysyWNDtnV2Ol7weEGreVAKDmyh795HUWlrsVtctam56m+GZJIzmPdyupJAAAQDFlhxprbdpau91a2yNJxpiPphkBtVVSc87jrEorCgAAMJ2SQ022haY7L8D0y92C6ij0GmvtcWvtqPeQNDaTygIAAEylnJaaNkkbJc3N2ZfIbtM+1QcAAKAiJYcaa+2gpB5vjpqsNZIGrbWMgAIAADVV7uinrcaYjTnPE5Ku9q86AAAAlSl3npq0JibeAwAACA0WtAQAALFAqAEAALFQ8YzCAKrAWyhTkjLj0tBr0s8+lD59utR60cSq38xoDACEGiDUchfKbJjlgo0n9zkLZQIAt5+AUFu2XkpukWSkc5LSjf3S5sNue07S7U9uceUAoM4Za2313syYJkkjIyMjampqqtr7ApGVGZceXCq1XCCtfUxqyPl/SCYj7bhBGt4v3frqxK0oAIiZ0dFRNTc3S1JzdoWCgmipAcLs0ItS+m1pxe2TA43knq+4TUofcuUAoM4RaoAwO/a+27acX/i4t98rBwB1jFADhNmcM9x2+I3Cx739XjkAqGOEGiDMFl4qJRZIe7e5PjS5Mhlp7wNSYqErBwB1jlADhFnDLGnlfdKBPa5T8Dv7pONjbrvjBrd/5b10EgYAMU8NEG5jQ66lJvkt6aWHpEeSE8ca57v9iQWuHJPvAahzhBogzHIn38s39p7Ud5f7mcn3AIBQA4TasvXSedcWL0crDQAQaoBQY00nACgZHYUBAEAsEGoAAEAsEGoAAEAsEGoAAEAsEGoAAEAsMPoJqEdjQ+4hSZlxaeg16WcfSp8+XWq9aGKGYkZfAYgQQg1Qj3In9WuY5YKNJ/c5k/oBiBBuPwH1aNl6KblFkpHOSUo39kubD7vtOUm3P7nFlQOAiDDW2uq9mTFNkkZGRkbU1NRUtfcFkCczLj24VGq5QFr7mNSQ8/+bTMYtljm8X7r1VRbLBFBzo6Ojam5ulqRma+3oVOVoqQHq0aEXpfTb0orbJwcayT1fcZuUPuTKAUBElN2nxhizMfvjYkmy1nb5WiMAwTv2vtu2nF/4uLffKwcAEVBWS40xptta25N9dGX39QVTNQCBmXOG2w6/Ufi4t98rBwARUHKoMcYkJLVnt55eSR3GmDaf6wUgSAsvlRILpL3bXB+aXJmMtPcBKbHQlQOAiCi3T80ySbkBJpXdJnypDYDq+PgDafnN0oE90o510jv7pONjbrtjndu//CZXDgAiouQ+NdbatKTT8nZ3ZLcpFWCMmS1pds6uxnIqByAgufPUvNnnQoyn4RRJVuq7S/rFx8xTAyAyZjr53mZJXdnAM9Xxu2f4HgD8tmy9dN617udiMwoDQERUPE+NMaZb0ofW2p5pyhRqqXmXeWoAAECpSp2npqKWGmNMp6SD1trt05Wz1h6XdDzndZW8HQAAQFFlT75njOmQJC/QGGMSjH4CAAC1Vu48Ne2S2iUNGmPasmFmg6SjQVQOAACgVCX3qcnOT/OWCgzfttaWdF+JtZ+AmBsbcg+peAdkOiEDKJHvfWqmGNINABNyh4o3zHLBxpP7/Io7GSoOwHcsaAnAP8vWS8ktkox0TlK6sV/afNhtz0m6/cktrhwA+KziId0VvRm3n4B4y4xLDy6VWi6Q1j42eQXwTEbacYM0vF+69dWJW1EAUESpt59oqQHgn0MvSum3pRW3Tw40knu+4jYpfciVAwCfEWoA+OfY+27bcn7h495+rxwA+IhQA8A/c85w2+E3Ch/39nvlAMBHhBoA/ll4qZRYIO3d5vrQ5MpkpL0PSImFrhwA+IxQA8A/H38gLb/Zrfq9Y530zj7p+Jjb7ljn9i+/yZUDAJ/NdJVuAJiQO0/Nm30uxHgaTpFkpb67pF98zDw1AHxHqAHgn2XrpfOudT8Xm1EYAHxGqAHgn/zlD8662P/3yIy7IeHH3ncdjhdeypw3ACQRagBEgbem1FvPSy89JI0dmTjWOE+65GvSostZUwqoc4QaAOGX21fn3Guk1d9zc94MvyE9/2eun47EmlJAnWP0E4Dwa/+qa5E59xpp7ePS2cul2XPcdt0Ot79xvisHoG4RagCE39GUu+W04o4pll+4XRp7z5UDULcINQDCj+UXAJSAUAMg/Fh+AUAJCDUAwo/lFwCUgFADIPxYfgFACRjSDSD8WH4BQAkINQDCrxrLLzBTMRB5hBoA4RfU8gvMVAzECqEGQP1ipmIgVugoDKB+MVMxECuEGgD1i5mKgVgh1ACoX8xUDMRKWaHGGJMwxmwwxvQFVSEAqBpmKgZipeRQY4xpl7RaUkLS3KAqBABVM7fN9anZe/8UMxVvc31q5rbVpn4AylJyqLHWDlprt0vi5jKAeBj8rutTc2CP9PjayTMVP77W7R97z5WrVGZcemuv9E+73TYz7l/9AUzCkG4A9cub1M+bp+aR5MSxxvlScsvEPDXlYP4boCYCDTXGmNmSZufsagzy/QCgLF6omL9U+uLv+zejMPPfADURdEvNZkl3B/weADBzDbOkRSv8OVf7V6XB/yHN+7yb/8YbLu7Nf7NjnXTkNea/AXwW9JDurZKacx5nBfx+AFB7zH8D1ESgLTXW2uOSjnvPjTFBvh0AhAPz3wA1weR7AOA35r8BaqKSUMMcNQAwnWrMf8NQceAkJd9+Msa0SeqUtEZSuzGmW9LL1trdQVUOACLJm/9m7Iib7+byO3JGP90v/eSpiXLljH5iqDgwLWOtrd6bGdMkaWRkZERNTU1Ve18AqKppw8d86ZJbKgsff7918lDxFXdMHiruhSWGiiNmRkdH1dzcLEnN1trRqcoRagAgSJlx/+a/GTks/eXVJw8Vl9xtLW+o+E39UvOZ/tQfCIFSQw0zCgNAkPyc/8YbKr76e1MPFX8k6coRalCHCDUAEBXVGCruZ8sSUGWEGgCIilm/5LbDb7jZifN5Q8W9cuXa/wPp6a9L6bcn9iUWSCvvk5ZcX9k5gSpinhoAiIqh112ryfN/Vnio+PP3Sw2nuHLlGBuSfvSgtPOrUssS6cZ+afNht21Z4vb/6EFXDggxQg0ARMXyG6Wrvyn95GnXKfidfdLxMbfdsc7tv/puV64cLz8iPfNN6dwvuQ7IZy+XZs9x27WPS59dKT1zjysHhBi3nwAgKhpbpX9/q3Tav3O3iR5JThxLLJRWf7ey20StF7q+NFOtVXX5HW64eOuFldedvjqoAkINAETNkuulX/1N/0LC+L+6bbEOyF65ctFXB1VCqAGAKPJzqHhQHZDHhqTXdkp933C3tn73v09MFrj3ftdXJ/kt6aLVzIAMX9CnBgDqXVAdkOmrgyoj1ABAvQuqA3IpfXUy/zbzvjos7Iksbj8BQL0LqgMyfXVQZYQaAIDjdwfkKPfVYbRWJBFqAAAT/OyAnNtXZ92OkxfgzO2rs+S3Sj/vy49IL2yb6Kvjndfrq/P4WtdX5/iYdNXXy683LUCRRZ8aAEAwothXZ/8PsjMrX5A3s/IFbv/+H5R/TlQNLTUAgGAE1Vfn2AduW3Rhzw/KO+/IYenvNmZbgB7LawF6zAWxv9sknXlx5augc1srUIQaAECw/O6rc3jAbYv11Tk8IOmm0s/77BZp7Ii0+nuFW4BW3O6C2bNbpN/5b+XXm9tageP2EwAgeF5fnc91uu1MWieuuktqnOc6BReaV2fvNqlxvitXjjOXuW2xFiCvXDmCvq3F0HZJtNQAAKKm+Uzp2h4XBnbcIK24LWf00wPSgafcra1ybxHN+RW3LdYC5JUrVdC3tWgBOoGWGgBA9Cy53gWX4X92t4S2nuW2w/sr76sT1MzK3m2tqTo2r7hdGnvPlSsXLUCT0FIDAIgmv/vqLL9Rmt3o5r/Zsc6FjRMtQNvcaC1v/ptyfOZcty12W8srVypagE5CqAEARJef8+oENVrrpwfctthtLa9cqYLs2Oy1AJ17Td7khtvc/kp/FwEj1AAAkMvvFqCr7pJS/8d1bM6dLFCaWcfmqLYABYg+NQAA5PNztJbXsfnAU65j86RJCG9w+6/tLj8g5LYAFTLTFqAg+gAFjFADAEDQgujYHNTQ9qBagKqg7NtPxpiNktLZpwlrbY+vNQIAII78vq0V1ND2oPoAVYGx1pZe2AUaeUHGGNMhaZW1tqvE1zdJGhkZGVFTU1MF1QUAAJMUHKW0UFp5b2UtQCOHpb+8Wpr3+cJ9gHask468Jt3UX7U+NaOjo2pubpakZmvt6FTlyg01H0laZK1N5+yz1lpT4usJNQAA+M3vNaVyRz+d1AK0p+qjn3wPNcaYNkkH8wOMMcZKSlpr+0s4B6EGAIAo8LsFaAZKDTXl9Klpm2J/WlKi0AFjzGxJs3N2NZbxfgCAmBjPWO1766iGxz5RS+Op+sKiuZrVUFIjP+et1XmXXK/xc39D//cfn9LPPzqsT512pn7117+kWaeEdzYYP2p2VNLcKY5tlnS3D+8BAJEUqS+xgM675/UjuufJ/Toy8smJffOaT9Xd1y3RNRfO47yhP68kub4z855/bsbnDVI5t586JPUVuP30kaRN1trtBV5TqKXmXW4/AagUX+bROu+e14/olu8PKv+bxvvNfucr7RWdm/NG87yVok8NgJqq95AQtS+bIM47nrG6rPvZSb/X/HO3Np+qFzZdVda/Dc4bzfPORKmhpuTJ96y1KUnpbLjJP1Y00AAIp/GM1T8c/FD/68eH9Q8HP9R4pvQRkVPZ8/oRXdb9rNY9/JL+YMePte7hl3RZ97Pa8/qRGZ3zlu8PnvSHdmjkE93y/cGKzx3EecczVvc8uf+kgCDpxL57ntxf9u/6SPrn+pO/fX3K81pJf/K3r+tI+uehOO/T/zw05Rejd+4jI5/o6X8eivV5dw28XdJ5dw28PWWZOJy3GsqdUXirpA7viTGmU9JJt50A+K+ew0fUQkJQX473P/0v+umxX0xb5qfHfqH7n/6Xss675Yf7Szrvlh/uL+u8Owfe8bVcVM/78N63fC0X1fNWQ1mhJjvpXsIY05kNNMtLnXgvDIL4UgDy1XP4iFpIiNqX+eJfmeNrOc/P/3Xc13KeT/1SafOklFouque9ecUiX8tF9bzVUPbaT9baHmvt7uxjUxCVCkIQXwqINsKH/+EjqJaEoEJC1L7MD35wzNdyntXLzva1nOeuLy/RZ+b88rRlPjPnl3XXl5fE+ryrli3QvOZTNVXvEyPXh2vVsgWxPm811MWClkHdi0d0ET6CCR9BtSQEFRKi9mV+x8rzSjrvHSvPK+u8Ky9oLelLbOUFrWWdd17iU7r3ty+UkU46t7fv3t++UPMSn4r1eWc1GN193ZIT58k/ryTdfd2SsjvdRu281RD7UBPUlwKiK0p9PqIWPoJqSQgqJPBl7gT5JXbNhfP0na+0q7X51En7W5tPndGwYM4bzfMGray1n2b8ZjUY0n37zh/rfw4eLlrud9vP1LbVS4OvEMrm59DgI+mf67r/+sK0QeEzc35ZT/7Hy8r6Yvi7fzqiW/5qsGi57/xeu679XOl/DB76+zfV81TxwLLxS+fpa1eeU/J5g7ougvr9ShNhVNKk8OjXUGa/z+udOypD0IM8rxSt+YU4b/DnLVcgC1rOVC1CTVBfCqgOv//IBvVlvv7Rffr7f/mgaLkrz/sVPbr+CyWfl/Bx8rn5Mo/meYGZCGLtp0gKqjk8F38EHL9/D1NNBubdJqrkyzFqfT7uWHmenjvwQdHwUW4fCu82xnTho5LbGNJEs3V+SGj1ISRcc+E8JZe0+n69BXVeyd3a+eLi02d8nqifF6iG2IeaoL4UPEH+Dy8oUZjptVhfKMn1hfr8WYmyvniD7POx7/8dLfrvrNw+H4SPk/FlDmAqsb/9JAV/Lz6otTGiED68c/r9e/ja91/R/369+Jwjv3Fhqx76ysUln5fbLiejpRFA2NGnJk8QLQlBfTkGUV/vnH6Hj6B+D0H1UZEIHwAQNYSaAvz8UghyVFWUwkdQv4egRhN5CB8AEB10FC7Az3vmQXU4DaovSTnznZQTPoL6PXjzhwyNfFLwd+GtElvu/CGeKPb5AABML/aT7wUlqA6nTLbmVGNGSy98/NbSM/XFxafTmgIAEUeoqVBQ05VHLXwE9XuQojujJQCgNurq9pOfghpqG2T4iNp8J1Kwt4kAAPFCS80MBNGSEFTLR1BrxkjBt6hwmwgAUIq6Gv0UlKBm0pUYcgwAAEO6I47wAQCAQ6iJAcIHAADMUxMLzHcCAEDp6CgMAABigVADAABigVADAABigVADAABioSYdhUdHp+y4DAAAMEmpuaHaQ7rPlPRu1d4QAADEyVnW2sNTHax2qDGS5ksaK6F4o1wAOqvE8ggHPrdo4nOLJj63aOJzq0yjpPfsNMGlqrefshWZMmHlcvlHkjQ23UQ7CBc+t2jic4smPrdo4nOrWNHfFR2FAQBALBBqAABALIQ51ByXdE92i+jgc4smPrdo4nOLJj63gFS1ozAAAEBQwtxSAwAAUDJCDQAAiAVCDQAAiIWaLJNQjDFmo6R09mnCWttTw+qgBMaYDkldkvokpSQlJb1srd1d04phEmNMQtJqSaustckCx7n2Qmi6z41rL9yy15QkLZYka21XgePp7FOuuRkKXajx/gFYa7dnn3cYY3rz/yEgdBKSOiR1yv1h7eaPargYY9olLZP7rOYWOM61F0LFPjdx7YWWMabbWrsp53mvMabPC6Zcc/4L3egnY8xHkhZZa9M5+6y11kz9KtSaMaZTUn/u54Zwyn5Wm621F+ft59oLsWk+N669EMq2ru2Sa11LZ/e1S3pF0mJrbYprzn+h6lNjjGmTa35LFzjWUf0aAfWBaw8IxDJJbTnPU9ltgmsuGGG7/dQ2xf60XBMrwm21MeaoXBP54txmV4Qe1160ce2FTDasnJa32wsrKbnAU0haXHMVC1uomYp3sSK8BiXJWpuSJGPMBmPMLmvtqtpWCzPEtRd+XHvRsVlSl7U2nbOoZT6uuRkI1e2nafABh5y1NuX9Uc3aKakze18Z0cW1F3Jce9FgjOmW9ITXKXgaXHMzELZQk5pif2KaYwiBbGfFE3LuE091WwPhwrUXUVx74Zf9jA7mDdfmmgtAqEJN9n8b6WwHqvxj/TWoEkrg9fLP/dxy/pfIxRkBXHvRxLUXfl6n35xh2wljTBvXXDBCFWqytmqiM5WXcIs116GGsv8z7MlrAt8gaTfDTENpquZtrr1wO+lz49oLt+wQ7nZJg8aYtmyA2SDXb0bimvNd6OapkU5MSORdpMvpyR9+2f8dbsjZdTqfW7hk/6B2Sloj94e2R3kzz3LthU+xz41rL5yyn8tbKjCSKXceGq45f4Uy1AAAAJQrjLefAAAAykaoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoAQAAsUCoARB62fVyErWuB4BwI9QAiILNYtVpAEUQagBEQbu1drDWlQAQboQaAKFmjOmQ1FfregAIP0INgLBbJWl30VIA6h6hBkDYtVlrU7WuBIDwO6XWFQAQD8aYdknLJC2W9LKkfkkbsofT1trtFZyzU9KuaY4tl3RQUir7OGqtTZddeQCxQEsNgBnLDrfusNZut9ZukvSwpM3W2p5skU0VnnqNpJ0F3m+DpKS1dlM2LCXkws2yCt8HQAzQUgPADxtyAoznYHY7KKmrwvMm8ltejDFtkrolLcrZnZYka21/he8DIAYINQD8cKIjbzZ0JJRtYckPGtnjnXK3i5ZL6i3UZybbGtNb4L16JfXnhZ2kXHgCUMcINQBmLC+UdEhKTdO3ZZe19mJJMsb0S3pG0sUFyq2y1iYL7O+QGxGVq12uDw+AOkafGgB+SypvCLa3xEG2M/EJ2eCTyLbe5JdP5584p1x+qwxz2QAg1ACYueytIk+n3OinE8dyWm2m6sjbnvd8qltPkia3DGUn55O1tt8Y054fnADUD0INgBnJBpru7M+dyrkNVGARyoSko3n70pLm5u1LFur0mw0zKS+4ZM/fJdc/R3IjsOhbA9Qp+tQAmKl+Sduz4WZALmRsMsZI0ty8+WnSOjnAJJQTdLK3mKabbG+VpC5jzCuSZK1dZYzZlX1/Ag1Qx4y1ttZ1AFAnsi0sD3sdhbP7PpJ0sXdLyRjTLekJWlwAlIvbTwCqJhtUEt7z7O2jVN7oKVbkBlARbj8BqLZV2daYl+XmqTkxPDvbkkOgAVARbj8BCA1jTK+kbhawBFAJbj8BCJO5BBoAlaKlBgAAxAItNQAAIBYINQAAIBYINQAAIBYINQAAIBYINQAAIBYINQAAIBYINQAAIBYINQAAIBb+P88bGkoFPRcuAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -179,7 +179,27 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl8AAAGLCAYAAAD5+Pe5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAABL70lEQVR4nO3df3RU1b03/vdOkOAtSYYAkd9cBkQN1OIU8EsLuqwTxcfKU9uJqdrrXV1dJPWPiq2uxGifxeN97I3JUm99+qzrnfDV/nj8AUm+0qv2Fk3EIt56RTJQC3gvkEHld7DhJMElFDP7+8f5kZnJ/DgzmXPOnMn7tdasyTl7n5MdJsN8svdn7y2klCAiIiIiexQ53QAiIiKi8YTBFxEREZGNGHwRERER2YjBFxEREZGNGHwRERER2YjBFxEREZGNGHwRERER2WiC0w3IR0IIAWAWgCGn20JERESuUgrghEyxkCqDr8RmATjmdCOIiIjIleYAOJ6skMFXYkMAcPToUZSVlTndFiIiInKBwcFBzJ07F0gzcsbgK4WysjIGX0RERJRTTLgnIiIishGDLyIiIiIbMfgiIiIishGDLyIiIiIbMfgiIiIishGDLyIiIiIbMfgiIiIishGDLyIiIiIbMfgiIiIishGDLyIiIiIbMfgiIiIishGDLyIiIiIbMfgiIiIishGDLyIiIiIbMfgiIiIishGDLyIiIiIbTbDjmwghGgAo2qFHStk61mtMlNcB8Gh1FgJollIqICIiInKQ5cGXFiRBStmmHfuFEEEpZX2215gsb9ODLSGEB8AmADWW/JBEREREJgkppbXfQIizABZE9zoJIaSUUmR7jYnyLillddw9R51L8f3LAAwMDAygrKzMzCVEREQ0zg0ODqK8vBwAyqWUg8nqWZrzJYTwQh0SVBKU+bO5xuQ9FSFEl9bjpd8znOWPQURERJQzVg87epOcV6DmY2VzjZl7rgfQA+CsEKIVQG+aYc4SACVRp0qT1SUiIiIaC6dmO/YDqMjxNUa51ivWAqATQAOAGr0XLIkmAANRj2MZto2IiIjIFKeCr0wDLzPXGOVCiBYAYSllDdSZjhVQe8KSaQZQHvWYk0X7iIiIiNKyetgxWZ6VJ0VZumtSlkflhHUDgJQyDOCrQogeIURAStkZf6GU8gKAC/qxEEnnAtA41Td4Hn1DF9LWqywtQWXZJBtaREREbmVp8CWlDAshFCGEVwuCosu6s70mVbmWdK8kuHVwTD8MjWu/3RnCv74TSlvvv6/2oe7Wr9nQIrLN0Cn1kU7pDPVBRJSGHYusNgPwA9DX5AroX2vHXgCBuEVSU16TqlwLwBqFEPEzIr+aKumeKJW7i99EXckTaet9VvwgAAZfjrEiUNr9S2DH4+nrXf8QcEOTuXsS0bhm+TpfgLHoqd5LtUJK2RhVVgegUUq50Ow1Ju7pgZpE/xeMzIJsS7Q8RZL2cp0vihX3oX700F7MfWsDjt7wNOZevmykHns/nPVWc+4DpfiA7tODwMvrgW9vAqYtHjnP155o3DO7zpctwZfbMPiidA7/6R0s2norDt/+Oyz6ymqnm0M6OwKlE3uBtuuBuh3ArGVjaS0RFRizwZctezsSEdkiWVA1bTEDJSLKGwy+iMh+TGKnXOLvE7kMgy8ish+T2CmX+PtELsPgi4jst/z7wBW3jBynys0iSoe/T+QyDL6IyH7MzaJc4u8TuYxT2wsRERERjUsMvoiIiIhsxOCLiIiIyEYMvoiIiIhsxIR7IiJKjOtnEVmCwRcRESXG9bOILMHgi4gohb7B8+gbumAcT/r0HBYBOHzmHM7LAeN8ZWkJKssmOdBCC3H9LCJLMPgiIkrhhfc+wdNvHjKOl4gj+F0JsGHzXuyPCr423Hg5fly9ONEtRnPLcB7XzyKyBIMvIipMkWHgxB716xN7gBlfBoqKM77N3dfOQ3XVZcbxmYMTgR3AgzddgemLVxrnK0tLzN+Uw3lE4xqDL6IMDX/xBY4f3AMlcjk+O7gHC5b8PyiekMVbyS29H25pJ0aGCMuO/B4z3nsME4eOqgWv3Y+/7ngSp679KQYX3JLREGFl2aSYuoc/vRQAMLfiUiyaXZ5dQzmcl1PjemiYXInBF1EG9rz+a8x672e4PnJaXahl/09x+sNf4MS1j+Cam/8+s5u5pffDLe2EOkT4n2+9gGcmPg1cfjNwxy+ByquAvg8x4e0nMKf7h7j3rxtw5Q13mx8itMJ4Hs6zIJi3ZGiYyEIMvohM2vP6r/GVdzeoH+rXPWh8qE9/+wlMf3cD9gCZBWBu6f1wSzsB3L1iNjwf/H8QM2+G+O5LQJG2lOHcFSi68yXIzXfiFydfhrKiwdmGjmcWBPOWDA0TWYjBF5EJw198gVnv/Qy4/GYU3Tn6Qz3y0p2Y+d4/YvjGu80PQbql98OCdlo1TFR5NgQMHVV7vIri1pAuKoJY8wAmPlut1vOsyartNEYWBPOWDA0TWYjBF5EJ//ne61gSOa32eCX4UC+67gHMOFSN/e+9jiVfv9WZRrpI9DBRESK4o+gtPD4R+H+3vIz2yFlEtM03Mh4mOndafa68KnG5fl6vR/Zzyx8dRBZi8EVkwudnj6tfpPlQN+pRSvowUXxi/OMTn8U/lL4Rkxifkcna0FPfh8DcFaPL+z6MrZepyDAuPfMBAKjPkVVZzaC0hIsmRhCNdwy+iEy4dMps9Ys0H+pGPUqpsmwSKo+9AXT/EFi8NiYxfuLOJzGv+4fAHb8BZq/L7MbzvwZ45gE7nwS++2JsL2UkAux8CvDMV+tl6sArwBuPYLbyCQBg9jtNwL5ngJt+BlRl2E4ruGhiBNF4x+CLyIQrr70Zp9+8DNPffiI25wsAIhFE3n4SfUUzcOW1NzvXSDeJDANvPKIGXtFB0twV6vHmu4A3fgpceWtmPUtFxWow1H6Peo81PzGCOux8Cji4TQ3qMu2tOvCKes/Fa4HvPBd1zyfV83f8xvkAzEUTIyyVz72TRBoGX0QmFE+YgBPXPoLp725A5KU7UXTdA8YHcOTtJ4FDr+PkqqcxI5v1vsajj/8IKJ+ogUyCHDqs+QnwbLVab0GGifFV69Rg6I1H1HvoPPOzC5KsChRzjblU+d87SaThJwWRSdfc/PfYA2DWez/DZYdGPtT7imbg5KqnM1/nazyzOjG+ah1w5a04vj2I2e804fjqZsz+Rn12wZGVgSLljht6J4k0RemrEJHumpv/HtMePoAdSx7D7sjl2LHkMUx/eD8Dr0xFJ8YnMtbEeAAoKsbn068GAPU5214pzqDMf/G9k3NXACWTR3onF69Veycjw063lAgAgy+ijBVPmIDZi6/B8qJDmL34muy2FhrvohPjI5HYsrEmxueaHYGiG8TvlZlPgYzeO7nmgeS9k8rHaj2iPMBPDSKHjOv96KxKjLeClTMo85wVe2Vagr2T5DK2BF9CiAYAinbokVK2jvUaM/cUQrQA6NUO+6WUnRk3nsgi434/ulwnxlvFgkDRLYG3a/bKtHp9N6Icszz40oIkSCnbtGO/ECIopazP9hoT5R4AbwK4UUqpCCF8AHoACIt+TKKMcT865DYx3ko5DhTdEni7Zq/Mcdw7Se5kR89XE4AF+oGUslsI0QUgafBl4pp05S0AtkgpFa08JISI+h+TyHkx+9FFhnH8Q/XDePHwIcye+Y28CUAs76XJVWK81XIYKLol8HbNXpluGsYmgsXBlxDCC3VIUElQ5pdSdmd6DYCwiXvWAVio3csrpexO9L2irisBEP2/XGm6n40oZ/J8bSK39NLEG45I7D39BfYPr8LF019gQUSiuGiMnd85ChRdsxG0BblUlgXzbhnGJoL1PV/eJOcVAJ4sr0lZrgVcAOCDGqiFhRBBAB0pArAmABuTlBFZxwVrE8X00kSGcXH3QeBPwGMrL+KS5SOrhzvdSxNt276TePTVAzg5cB7Aj4Dtn+HJnu3YeFsV1i6d6XTz3MOCXCrLNlUH3DOMTeOeU7Md+wFUZHmNkqZcD74UKWUIAIQQjQCOAJiS5NpmAE9FHZcCOJZh+4gy45KV041eGq2HDloP3TV/+p/Ax8/lTQ+dbtu+k7j3+RBk3PlTA+dx7/MhPPM9HwMwsyzIpbJsU3WdW4axaVxzap2vTAMvM9fEl+/Wv9CGKD3asOUoUsoLUspB/QFgKIv2EWXGTWsT6T10lUuAH3QDTcfV58ol6vkDrzjdQgDqUOOjrx4YFXgBMM49+uoBDEcS1TB3/72nv8C/Dq/C3tNfZH0f19BzqQ5uU/8YOLoLuDCkPm++Sz1/02MZBTiVZZOwdGAH5nX/EBNnLo35fZo4cynmdf8QSwd2ZD3Lc9y9RuRKVvd8hZOc96QoS3dNtuUKkg9ZEtnPLWsTuaSHDgB2HenXhhoTkwBODpzHriP9WLVwakb3zvehTNfkUln4+5TvrxGRztKeLyllGIASlYcVXZYw/yrdNSbLwxgdaHkQ1RtG5Di3rJxucQ9dLnsq+oaSB17Z1NPpQ5nxgZ0+lLlt38mM7meFF977BN/8xTvGY8PmvQDUiRHR519475PMb161DrhvL46vbgYA9fm+PdkNN1v0++SG14hIZ0fOVzMAPwB9Ta6A/rV27AUQiFskNeU1JsobAdQCCEWVd+s5YER5wS1rE1nYQ5frnorKUnM9OmbrAemHMgXUoczqqhljn005BpYvX5HHe2Va8hoNnVIf6ZTOUB9EGbA8+JJStgohGrQACABWxC2w6oe6Pler2WtMlHcKISr0xVgBTJVScp0vyi9uWZvIotXDrUiMXzntr5g5uQinzkUSfhALADMmF2PltL+avqeVQ5m55JrlKyz4fbLkNdr9S2DH4+nrXf8QcEOTuXsSaWyZ7RjXq9UZV9aG2F6rtNeYLB91T6K8k+t8Giv+Wregh86q3qTi0K+w8cKbuBf3Q0BCRmVWCEQACGy88ASKQzea/sC0aihz3LLg98mS12j594Erbhk5/vQg8PJ64NubgGlRS2Cw14uywI21iZyWy7WJrPhr3YIeOst6k5Z/H2uvuAXPHP4cj76t4OS5iFE0Y/Il2HhdOdYueiKjD0wrhjJjRIZx6ZkPAEB9jqxyvrfTShb8PlnyGiX7A2XaYmDWMvP3IUqAwRdRPshVPo1Vf63nuIfOst4k7QNz7SygerXElvc/wcNb9+Efb1+K2hXzssrJWrmgAjPLJ+HUwPnkQ5nlk7ByQRYr6Fi1u0G+B3Q5/n2y9DUisgCDLyITPj3xMZQzR43jsx/vN54PR9XzTJ+LabPmZ3z/nG2FY+Vf6znsobO8NwlAcZHA1XM8AICr53iyToYvLhLYeFsV7n0+BAHEfLjrd9x4W1Xm97dqd4M8367KkMPfJ8teIyKLMPiighO/3lEymax3dOj3v8Cqo5tGnV8RatDm1Krenbse037whOm2Ai5bmyhHPXRu66lYu3QmnvmeL+p1Us0on5Td62TVWlcu2K4qRg5Xo8/5a0RkIQZfVHB+uzOEf30n/aoi/321D3W3mkvqvfyWH+HwmW+lrzd9rqn76cbrVjjFn53Gxq//De79t/PJeyq+/jco/ux03iQ0r106E9VVM7C1ewcu2fk4Lq55CLf7r8+uN0Vf6+o7zyVf6+rZarXegjXm7umixXCtktPXiMhCDL6o4Nxd/CbqStL3Pn1W/CAAc8HXtFnzsxpOTMUt60dZYvcvsXbH43jmkhV49OI9OImRpPoZ+BQbL/m/WLv9fWA4v6bxFxcJLLtsAhYVv4vDl03I/nWxYu00KwK6KDkbGrdYzl4jIgsx+KKC86Wvrweuvs04PnpoL+a+tQFHb3gacy9fNlLP4R4Vt6wfZQltYsBaANURia0HBvDz7Udw/zcW4PaqWSgu0oLnPOn1yjkr1k5z0WK4ROMdgy8qPHFJ5xfOnFOfPYvyaoq4G9ePsmJiQDGAK8UAjm3/DFcuuQbF+bQgqFWs2N3ARYvh6tzSm0aUa5bu7UhEydkx4y+Xtu07idUt2/Hg9s+w4eKP8OD2z7C6ZTv3zMuGvtbVwW1qLtbRXcCFIfV5813q+Zseyyw3Kzqgi0RiyyxaDBdQh8az2Y+Tv080njH4InKIPuMv2d/5AsDMPJnxx02LLaCvddW3X83Fap6jPvcdyG5WogUBXSZD45nI+e/T0CngxF7jUaKoC8CUKIdjzpva/YHIBhx2JHKIW9YmGtcTA4BRWzbFfrBPHqmXzQbLudzdQL9fLhfDPWMuP6zvzGnAZF6iJb9PcTs76HOO5761AXgrqh73YaQ8weCLyEFuWJtoXE8MAKz/YM/hWlcAcrsY7vFuAAtN1qsydU9Lfp/idnY4fOYcNmzei6e/uwyLpscFyNmIDAMn9qhfn9gDzPhywS7XQfZg8EXkFK1HZW0FUP13FfjdrgOQe/4vxDV/h1tXVqG46DRw4nR2PSo55MaJATll9Qe7FXK1GK6/BjM/3ItT5yLJF8OdXIyV/hrT97Tk9ynuPXJeDmC/HMD5aV8GZo1xAoe2YwC0HQPw2v3AO0/l344B5CoMvoicEtWjUgxgnf7FB+8CH0TVy6BHJX51/0mfnsMiqAHDeTlgnM9kdX+3TQzIOSs/2JHfM/6Ky2di47eQemj8W19Bcbn5HlpX/T65bccAcg0GX1TQ8vmDzYoelRfe+wRPv3nIOF4ijuB3JcCGzXuxPyr42nDj5fhx9eJEtxjFbVsBuYkb1s/K9dC4W36f+pTP4Pn9w7hk8c0QCXYMkJvvxMXfPwJl1o2o9HzJ0baS+zD4ooK1bd9J/K9X/oy55/6ESnwVfX94H/+0+6/4H+u+nB8fbBb0qNx97TxUV42s43Tm4ERgB/DgTVdg+uKVxvnK0hLT93TLxAC3cdPWUvq2PVve/wQPb92Hf7x9KWpXzMvqNXfL79OO7ldQM3QUuOOXCXcMEGsewMRnq9V6gTudaSS5FoMvKkjb9p3Eb1/8F3SUvIhZE/uM8ycuVuIfXrwLuOuHefPBlkuVZZNihhMPf3opAGBuxaVYlO3ipUOnsLbiNJ75bxV49G0FJ8+NrCE1Y3IxNl5XjrUVp4Eh4XjeU/yw6+G+czHPukyGXa1g9QxSK3p8i4sErp7jAQBcPcczpvu5YaLJTfMksA9pdwy4aV6Ga5zFzZ5NyuFcT7IWgy8qOMMRiT/89jn888SngUU3A9c9aORqzHj7Cfzzoafx8G8norrqYcf/urZUZBiXnlGTxy498wEQWZVd4rWWm7YWQLUU2HXJleiDB5VQsPLif6J4uwS2Iy+m8ccPu+ru37I35jiTYVcrWDmDNO+HMl0y0aR8ujavNc2OAUY9s+JmzyaVB+8nsg6DLyo4u3rP4L7hXwGX34yiO1+KydUouvMlRF66E/cd/jV29a7HqssrHW2rZbQZWrO1GVqz32kC9j2T3QytqNy0YgDTz5zDY1puWnGezfaLH3ZNJpNhVytYNYPUFUOZFkw0sYQVW0ABo3I98elB4OX1wLc3AdOi/iDIg/cTWYfBFxWc4Y/+HbNkn9rjlSBXo+i6BzDrUDXCH/07cPntzjTSSrmeoWXxbL9cih92zVdWzPhzzWK4blm6Q98xoP0edYeANT+Jei89pe4YcMdvMu9NTtajN21xXu09S9Zi8EUFp1Io2hepczWMeoUkMqyuSbR4bexf69oMLWy+C3jjp8CVt3KRSAdZMePPNYvhuiiYz/WOAUQ67u1IBWehV1uRW8vJGEU7b9QrJB//UV0Mcs0DCXv9sOYngPKxWo8co8/4AzBqb89sZ/yN+8VwrVK1DrhvL46vbgYA9fm+PQy8aEzY80UFp/hvv47PvzQHJW8/EZvzBQCRCCJvP4kLX5qDS//268410irntL340vT6GfUc4pZZiVbK9Yw/Vy1emmOW/z7legsoGvcYfFHhKSrGpbc2Q7bfg8hLd6LougeMXI3I209CHHodl2aTq+EGk7Vk8zQztIx6DnHLrESr6etnbe3egUt2Po6Lax7C7f7rs8rJcsvipVbg7xO5DYMvKkxV6yAS5GoIz3z1fKEOGVg1QyvH3DIr0Q7FRQLLLpuARcXv4vBlE7JOhnfL4qVW4O8TuQ2DLypcVesgrrwVx7cHMfudJhxf3YzZ36jPmx4vS4ZKrJqhlWNumZUIuGuI1A2Ll1rBTb9PRIBNwZcQogGAoh16pJStY70mk3sKIbqklNXJyqmA5XGuhmVDJZyhlVNuG9LK5VAmEVnD8uBLC5IgpWzTjv1CiKCUsj7bazK5pxAiAMCf4x+LaMwsHSqpWgfkca+fm7hxSCtXQ5lEZA07er6aACzQD6SU3UKILgBJgy8T15i6pxDCA6DwskupIFg+VJLHvX5uwiEtsmKvTBrfLA2+hBBeqEOCSoIyv5SyO9NrAIQzuOcdANoBBLP9GYiIaPzK9V6Z8TmEkz49h0VQV/o/LweM8/mQQ0jWsbrny5vkvALAk+U1pu6pBWqjgrtEhBAlAKLHDErNXEdERIXLir0y43MIl4gj+F0JsGHzXuyPCr4yyiHUNitPy+HNymmEU7Md+5H5cKB+jWLynh4pZVgbekynCcDGDNtDRJQ/4j6AS5TDI88n4vZMNPkBbMVMT7fMHrVqr8z4HMIzBycCO4AHb7oC0xevNM5nlEMYtVl5Sk5vVk4Gp4KvbPKw0l1jlAsh6vRkfJOaATwVdVwK4FgG1xPlnVzlqbjlw3Lci/sAnqs/v7UBeCuqXgYfwFbM9HTL7FGr9sqMzyE8/OmlAIC5FZdi0ews97aM26wcnx4EXl4PfHuTumG3jr1eecPq4Cuc5LwnRVm6a1KWCyF8AHaba55KSnkBgPHpIgQTKcndcpmn4pYPy3Ev7gP48Jlz2LB5L57+7jIsmh7X82WSFTM93TJ7tO+MuS24+s6cBpzcqBxI3ps5bTEwa5ntzaH0LA2+tGE/RQjhlVKG48oS5mOZuSZVuZbr5dOeAWChdk0DgLCUsjNHPx7lqU9PfAzlzFHj+OzH+43nw1H1PNPnYtqs+Ta3znq5zlNxy4fluBf3AXxeDmC/HMD5aV8GZmXXo2LFTE+3zB6tPN4N7ePDRL0qy9tDhcWOYcdmqOts6WtyBfSvtWMvgEDcIqkpr0lVrgVoRmCn9YTVmVnYlQrDod//AquObhp1fkWoAQiNHL87dz2m/eAJG1tmPSvyVNzyYekqFuRnUW6t9Ndg5od7cepcJPlemZOLsdJfY3fTqABYHnxJKVuFEA1agAQAK+IWQ/VDXZ+r1ew1Ju4JwAjKarWvWwB0JetxI2fE5xMlk0k+0eW3/AiHz3wrfb3pc9PWcRur8lQoxyzIz6LcKi6fiY3fQuq9Mr/1FRSXj2HLpsgwLj3zAQCoz5FVXI9vnLAl4T6u16kzrqwNsb1aaa8xU67V6UxWRvkhWT5RvEzyiabNml+Qw4lm9A0lD7yyqUcWsSA/i3LP0r0yD7wCvPEIZiufAABmv9ME7HtG3ZuVW4AVPG6sTY6Kzyc63HcO92/Zi5/XLsOiypEPIeYTmVNZaq530Gw9sogF+VlkDX2vzC3vf4KHt+7DP96+FLUr5o1thfsDrwDt9wCL1wLfeQ6ovAro+xDY+aR6nnuwFjwGX+SoZPlEiyonY2m2067HsZULKjCzfBJODZxPnqdSPgkrF3DXLSKziosErp7jAQBcPccztsArMqxuer94LfDdF4GiIvX83BXq8ea7gDd+Clx5K4cgC1iR0w0gotwpLhLYeJs68yr+48HIU7mtivvSETnl4z8CyifAmgdGAi9dURGw5ieA8rFajwoWgy+iAqPnqcwoj+1RnFE+KavtUIgoh85p64dVXpW4XD9/ztw6Y+ROHHYkKkB6nsrW7h24ZOfjuLjmIdzuv549XkROm6zluPZ9qA41xuv7MLYeFSQGX0SFJGr9qGIA15Z8hLnF7+JoyUcoPuUZqcf1o4icMf9rgGeemlwfnfMFAJEIsPMpwDNfrUcFi8EXUSHh+lFE+a2oWF1Oov0eNbl+zU+iZjs+BRzcps52ZLJ9QWPwRXljOCLxwTEFAPDBMQVXzSzjMFmmuH7UuMUN0F2kap0aYL3xCPBs9ch5z3wuMzFOMPiivBC7ETTw8NZ9+MX2w2NfyHC84fpRrmBFoMQN0F2mah1w5a04vj2I2e804fjqZsz+Rn1WPV7xv0+TPj2HRVD/+DovB4zzDLzzB4MvctbQKWzbcwT3/lt/8o2g/1sF1l6zgL01VDCsCJS4AboLFRXj8+lXA4D6nOVQY/zv0xJxBL8rATZs3ov9UcEXA+/8weCLHDX8/i/x6BuzIVGB+JWp1I2gI3j03w6i+os/oPgbzFGiwmBFoMQN0MevmN+nyDAu7j4I/Al4bOVFXLJ8ZL9IBt75g8EXOWpXZQAncTBpuUQRTmIadlV+DatsbBeRlRgoEaDmue49/QX2D6/CxdNfYEFEZpXnavw+aftFQtsv8po//U/g4+e4X2QeYvBFjur74m9yWo+IKBesnsAQm+f6I2D7Z3iyZ3v2ea7cL9JVGHyRo7gRNBHlIysnMGzbdxL3Ph9Knuea6U4U3C/SdRh8kaO4ETQR5SOrJjAMRyQeffVAwv/v1DxX4NFXD6C6aob5IUh9v8jvPJd8v8hnq9V6C9Zk1F6yBoMvcpS+EfS9z4cggJj/kLgRNBE5xaq8vF1H+o0ldRKRAE4OnMeuI/1YtXCquZtyv0jX4cba5DhuBE1E40XfUPLAK5t6AGL3i0x4M+4XmW/Y80V5Ye3Smai+cjre2foMvvTnX+OzL/89Vt9+L4on8FeUiAqHJXmu3C/SddjzRfnhwCso/j/X4Pr9P8XyokO4fv9PUfx/rlFn8BARFQg9zzVZIoUAMDPTPFd9v8iD29Tk+qO7gAtD6vPmu9TzNz3GZPs8wuCLnKdPka5cAvygG2g6rj5XLlHPMwAjogKh57kC8ctKjzHPVd8vsm+/mlzfPEd97jvAZSbyEIMvclb8FOm5K4CSySNTpBevVadIR4adbikRUU5YludatQ64by+Or24GAPX5vj0MvPIQE2rIWZwinVNWLwxJRLmxdulMVFfNwNbuHbhk5+O4uOYh3O6/fuwzu3O0XyRZi8EXOYtTpHPKyoUhiSi3iosEll02AYuK38XhyyZwSZ1xhMEXOSt6ivTcFaPLOUU6I1YtDElERLnD4Isc1TfFB0/pXFyy8wmI7740aoq03PkkLpbOgzLFh0rnmuka3LCZiCj/MfgiR73w/nH851++g2eGnoZ86U4UXfeAsSFs5O0ngUOv40d/3YAr3z/OYTIicr+hU+pDU6IcHnk+MXmkXukM9ZGh4YjE3tNfYP/wKlw8/QUWRCSHM/OQkDLRDlM5/iZCNABQtEOPlLJ1rNeYLAeAhQAgpazPoL1lAAYGBgZQVlZm9jLKgp4gXnbk95jx3mOYOHTUKPtr6TycuvYRDC64hQniRFQY3moGdjyevt71DwE3NGV06237TuLRVw/EbF80s3wSNt5WxZ1CbDI4OIjy8nIAKJdSDiarZ3nwpQdBenAkhPADqEkVDKW7xkR5i5SyMep+QQBeKWW1yTYz+HJCZBgI/QZ47X7gmz8HfPdwpg4RFZa4nq/DZ85hw+a9ePq7y7BoevY9X9v2ncS9z4dGbdit93lxqzZ75FPwdRbAAimlEnVOSimT9oOmuyZVuRDCA6ADajCmaGU+AD0AFkopwybazODLKSf2Am3XA3U7gFnLnG4NEZGl9h0fwDd/8Q5e+9FqLJ1dntU9hiMSq1u2J92wW0BdQ+ydxm9wCNJiZoMvSxdZFUJ4oQ4JKgnK/NlcY/KeywF4o4r0gMuTQfOJiIjy3q4j/UkDLwCQAE4OnMeuI/32NYpSsjrh3pvkvILkgVC6a1KWa0HZlLgyPShL2OslhCgBED33vjTJ9yAiIsorfUPJA69s6pH1nNpeqB9ABruGmromVXkTgPpEvWVR5QNRj2MZto2IiMgRlaXmJiOZrUfWcyr4yjTwMnNNwnIhRAuALVLKthTXNgMoj3rMyaJ9REREtlu5oAIzyyeN2qhbJ6DOely5IJuPXrKC1cFXsuR2T4qydNeYvqcQIgCgN93SFlLKC1LKQf0BYChVfSIionxRXCSw8bYqABgVgOnHG2+rYrJ9HrE050tKGRZCKEIIb/wsQylld7bXmLmnnnyv93hpsyArzMx2JBvFTbvGpwdjn3VZLjhIRDQerF06E898zzdqna8ZXOcrL9mxwn0z1IR3PQgK6F9rx14AgbjeqZTXmLinD4APQKd2fwCIvwflg92/TLzg4MvrY4+zWHCQiGg8Wbt0JqqrZmBr9w5csvNxXFzzEG73X88erzxkefAlpWwVQjRoARIArIhbYNUPoB5Aq9lrUpVrPVxvQh2GbIlvSw5/NMqF5d8HrrglfT32ehERJRY1glAM4NqSjzC3+F0cLfkIxac8I/U4gpA3bNleyG24yCoREdkhF4usWrllEWXG7CKr3FibiIjIJvp+trrDfedinnUZ7WcbN4KQcssiygsMvoiIiGzywnuf4Ok3D406f/+WvTHHG268HD+uXmzupnHDieflAPbLAZyf9mVgVpa9aWQpBl9EREQ2ufvaeaiuuixtvcrSkrR1yL0YfBEREdmksmyS+eFEKlhOrXBPRERENC4x+CIiIiKyEYMvIiIiIhsx54uIiIhixC+JkUxGS2KQgcEXERERxUi2JEa8jJbEIAODLyIiIorxd0tKcFvlyBphR/s/xxNv/BcevOkKzK241Djvmc4lMbLB4IuIiIhiTPuvFzEtasuiRQBuKAGwI67i9Q8Bs7hlUaYYfBEREVGsuC2Ljh7ai7lvbcDRG57G3MuXjdTjlkVZYfBFRETkYpbsFxm3ZdGFM+q9LngWAbOWja3BxOCLiIjIzSzZL5IsxeCLiIjIxbhfpPsw+CIiInIx7hfpPlzhnoiIiMhGDL6IiIiIbMTgi4iIiMhGDL6IiIiIbMTgi4iIiMhGDL6IiIiIbMSlJsi0+FWUk8loFWUiIqJxhsEXmZZsFeV4XEWZiKhwDEck9p7+AvuHV+Hi6S+wICJRXCScbparCSml023IO0KIMgADAwMDKCsrc7o5eSPR/mH3b9mLn9cuw6LKycZ59nwRERWGbftO4n+98mfMPfcnVEJBHzw4Ovkr+B/rvoy1S2c63by8Mzg4iPLycgAol1IOJqvHni8yLdkqyosqJ2Pp7HIHWkRERFbZtu8kfvviv6Cj5EXMmthnnD9xsRL/8OJdwF0/ZACWJSbcExERUYzhiMQffvsc/nni05ixyAf8oBtoOg78oBszFvnwzxOfxh9++xyGIxw9y4YtPV9CiAYAinbokVK2jvWasZYTERFRYrt6z+C+4V8Bl9+MojtfAoq0vpq5K1B050uIvHQn7jv8a+zqXY9Vl1c62lY3srznSwuCIKVsk1K2AQgJIYJjuWas5URERJTc8Ef/jlmyD0XXPTgSeOmKilB03QOYJU9j+KN/d6aBLmfHsGMTgDb9QErZDaBujNeMtZyIiIiSqBSK9sVVSSpcFVuPMmJp8CWE8EId8lMSlPmzuWas5Um+Z4kQokx/AChN+YMREREVsIXeheoXfR8mrqCdN+pRRqzu+fImOa8A8GR5zVjLE2kCMBD1OJakHhERUcEr/tuv4/MvzUHk7SeASCS2MBJB5O0n8fmX5qD4b7/uTANdzqnZjv0AKnJ8zVjKmwGURz3mZNg2IiKiwlFUjEtvbYY49DoiL90JHN0FXBgCju5C5KU7IQ69jktvbQaKip1uqSs5tc5XpoGXmWuyLpdSXgBgrB4qBFfuJSKica5qHcQdvwHeeAR4tto4LTzz1fNV6xxsnLtZ3fMVTnLek6Is3TVjLaccGI5IfHBMAQB8cEzhWi9ERIWoah3EfXtxfHUzAOD46maI+/Yw8BojS4MvKWUYgKIlwceXdWdzzVjLs/k5KNa2fSexumU7Ht66DwDw8NZ9WN2yHdv2nXS4ZURElHNFxfh8+tUAoD5zqHHM7Mj5agZgzDIUQgQQtQyEEMKrr8tl9poclFOWtu07iXufD+HkwPmY86cGzuPe50MMwIiIiNKwPPjSVpb3CCECWhC0QkpZH1XFD6A+k2vGWk7ZGY5IPPrqASQaYNTPPfrqAQ5BEhERpWBLwn3c1j6dcWVtSNArleqaXJRT5nYd6R/V4xVNAjg5cB67jvRj1cKp9jWMiIjIRbixNpnWN5Q88MqmHhER0XjE4ItMqyydlNN6RERE4xGDLzJt5bS/YubkIiRbBU0AmDm5GCun/dXOZhEREbkKgy8yrTj0K2y88CQACYHY7SbUY4mNF55AcehXTjSPiIjIFZxa4Z7caPn3sfaKW/DM4c/x6NsKTp4bCcBmTL4EG68rx9pFTwClMxxsJBERUX5j8EXmlc4ASmdg7SygerXE1u4duGTn47i45iHc7r8exUXclomIiCgdBl+UleIigWWXTcCi4ndx+LIJDLyIiIhMYvBFREREMfoGz6Nv6IJxfKb/cywCcLT/c5w/PmCcrywtQWUZZ7hnisEXERERxXjhvU/w9JuHjOMl4ghuKAGeeOO/sP/1kRntG268HD+uXuxEE12NwRcRERHF+LslJbitstw4LlEmA28B/7J2Mi54Rs57ppc40TzXY/BFREREMab914uYtuPxUefnvrUh9sT1DwGzmmxqVeFg8EXZiQzj0jMfAID6HFkFFBU73CgiIsqJ5d8HrrglfT0uLZQVIaV0ug15RwhRBmBgYGAAZWVlTjcn/xx4BXjjEUD5ZOScZx5w08+AqnXOtYuIiMhBg4ODKC8vB4ByKeVgsnpc4Z4yc+AVoP0eoHIJ8INuoOm4+ly5RD1/4BWnW0hERJTX2POVAHu+EutTPoPn2WtxycwlEN99CSiKit0jEcjNd+LiyQNQfvAfqPR8ybmGEhEROYA9X5RzO7pfwcShoxBrHowNvACgqAhizQOYOPQJdnSz94uIiCgZBl9k2k3ztF7SyqsSV9DOG/WIiIhoFAZfZFr59LnqF30fJq6gnTfqERER0SgMvsi8+V9TZzXufBKIRGLLIhFg51OAZ75aj4iIiBJi8EXmFRWry0kc3AZsvgs4ugu4MKQ+b75LPX/TY1zvi4iIKAXOdkyAsx3TSLjO13w18OI6X0RENE6Zne3IFe4pc1XrgCtvBUK/AV67H/jmzwHfPezxIiIiMoHDjpSdomJg1jXq17OuYeBFRERkEoMvIiIiIhsx+CIiIiKyEYMvIiIiIhtZnnAvhGgAoGiHHill61ivMVkOAAsBQEpZn03biYiIiHLN0uBLD4KklG3asV8IEUwVDKW7xkR5i5SyMep+QSFEl5Sy2pqfchwZOqU+dJ8ejH3Wlc5QH0RERDSKpet8CSHOAlggpVSizkkppcj2mlTlQggPgA4ANXq5EMIHoAfAQill2GS7uc5XIm81AzseT1/v+oeAG5qsbw8REVEecXydLyGEF+qQoJKgzC+l7M70GgDhNOW7ASwH4AUQ0or0gMuTzc9BUZZ/H7jilvT12OtFRESUlJXDjt4k5xUkD4TSXZOyXAvKpsSV+bXnpL1eQogSACVRp0qT1R3XOJxIREQ0Zk7MduwHUJHja1KVNwGoT9RbFldnIOpxLMP2EREREZliuudLCBEAUGuiarOUMpSiPNPAy8w1CcuFEC0AtujJ+Sk0A3gq6rgUDMCIiIjIAqaDLyllJ4DODO6dbJjPk6Is3TWm76kFi70mAi9IKS8AuBB1bbpLiIiIiLJi2bCjNrNQ0ZLo48tGJdubucbsPbXk++jlKDyJriEiIiKym9U5X80YSXjXe6Paoo69UQuimrrGxD19AHwAQtr9vQDqoOaFERERETnK0nW+AGNRVH1IcEXcAqh1ABqllAvNXpOqXFvn6wgSzKZMtbZYgjZznS8iIiLKiNl1viwPvtyIwRcRERFlymzwxY21iYiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGzE4IuIiIjIRgy+iIiIiGw0wepvIIRoAKBohx4pZetYr8nknkKILilldYbNJiIiIrKEpT1fWpAEKWWblLINQEgIERzLNZncUwgRAODPzU9DRERENHZCSmndzYU4C2CBlFKJOiellCLba8zeUwjhAXAHgGCq75ekDWUABgYGBlBWVpbJpURERDRODQ4Oory8HADKpZSDyepZ1vMlhPBCHRJUEpQl7I1Kd02G97wDQLvJtpYIIcr0B4BSM9cRERERZcrKYUdvkvMKAE+W15i6pxaIdadsXawmAANRj2MZXEtERERkmhOzHfsBVOT4mvhyj5QynMH9mwGURz3mZNg+IiIiIlNMz3bUktdrTVRtllKGUpRnGniZucYoF0LUaYn4pkkpLwC4EHWPzFpHREREZJLp4EtK2QmgM4N7J+t58qQoS3dNynIhhA/AbnPNIyIiIrKfZet8SSnDQghFCOGNHwKUUibMxzJzTapyLdfLF5V8v1C7pgFAWAsgiYiIiBxjdc5XM6LW2dKGLtuijr36ul1mr0lVLqXsllK26g8AQe18KwMvIiIiygeWBl9aAOQRQgS0IGmFlLI+qoofQH0m15i4JwAjKGvSvm5JtrwFERERkZ0sXWTVrbjIKhEREWXK8UVWiYiIiGg0Bl9ERERENmLwRURERGQjBl9ERERENmLwRURERGQjBl9ERERENmLwRURERGQjBl9ERERENrJsb0ciIrJe3+B59A1dSFuvsrQElWWTbGgREaXD4IuIyMVeeO8TPP3mobT1Ntx4OX5cvdiGFhFROgy+iIhc7O5r56G66jLj+HDfOdy/ZS9+XrsMiyonG+crS0ucaB4RJcDgi4jIxSrLJiUcTlxUORlLZ5fb2pZQKITu7m40NzejoqIC9fX1CAQC8Hq9trbDbvX19Whvb0dHRwf8fn/SeuFwGMFgEK2trfB6vaivrwcA9Pb2or+/H7W1tQgEAgmvbWxsBABMnToVHo8HFRUVCAQCaGxsREtLS8Jruru7EQqF0NDQkPZnyOb+NAZSSj7iHgDKAMiBgQFJROQWXwxH5Av/8ZGc3/iafOE/PpJfDEccaYfP55N1dXWOfG+n+Hw+2dXVZaqu3+9P+O/j9XplS0tLzLmenp6E9+7t7ZWBQEB6vd6k3ydd+VjvT6MNDAxIABJAmUwRZ3C2IxFRAdi27yRWt2zHw1v3AQAe3roPq1u2Y9u+k7a3paKiwvbvWQjq6+uNHihdTU0NWlpaRvWoRfecJVNRUYFwOIxwOJy0zljuT9lj8FWA+gbPY9/xgbSPvsHzTjeViHJg276TuPf5EE4OxL6nTw2cx73PhxwJwChzHo8HAKAoCoCRocBkQ5l+vz/pkG5nZydaWlrg9XoRDAYT1hnL/WlsmPNVgDj7iWj8GI5IPPrqAcgEZRKAAPDoqwdQXTUDxUXC5tapuru7jQ/6TZs2IRwOo7+/Hz09PQgGg2hra0NFRQW2bNmCpqYm+Hy+mOsqKipQU1MDQA1M/vKXvxh5SHodvaemq6sLAIxyPb8KUHOuGhoa0NnZiebmZoTDYSNPKxwOo7q62ghWvF6vcW04HIbX643Jx2ptbTVyo3Klp6cHPp/PCMI6OztT5pABGNVTpguHw/B4PAgEAkYgFm8s9weyf10B9XVsa2uD1+tFV1cX6uvrY8r1MkVRjJ+lrq4u6XnXSTUmOV4fcHnO1+mBz+WfjynGY2vomJzf+JrcGjoWc/70wOdON5WIxuiPhz+V8xtfS/v44+FPbWtTopymrq4u6fV6Y3KLvF6vbGhoMI47Ojqkz+eLua6jo0MCkL29vca5hoaGmPvr13V1dcmenh7jnoFAIOb79fb2Sr/fH9OeaNH5VoFAQHZ0dMT8TD09Pcb3DwaDRtnZs2clgKxzvs6ePStbWlqkz+eTZ8+eNc4DGJUDZsbZs2eN9vX29koARtujZXv/aNm+rg0NDTGvqdfrNX72jo6OmH/f3t5eGQwGk57PJ8z5GscqyyZh6exy46FPN9dnP+kPLrhI5H59Q+bSB8zWs4qefxTd0xI/pOXz+UblJ3k8Hvh8vpi6TU1NaGtrM+p6PB6EQiH4/X74fD60tLQYMy/jv19/f79xvr+/H6FQKOZ7AWqvUWdnZ0xPV01NDYLBIBRFQWtra0xvi97GTOzevRttbW1oa2tDe3s7/H4/enp6jDaMRXt7O+644w4A6s/s8/mwZcuWMd83kWxf13A4jO7u7phroo87OjqM4Vev14vly5enPO82HHYkInKxylJzf0SZrWel+A9lj8eDhQsXZnwfj8djBFz6PePvvXv37oT5Svowl9/vR11dHYLBIILBILq7u42Apbu7Gx6PJyYY6O3tNQKGXARIy5cvTztc5vV60dvbm7KOPiQaraurywhQdG1tbaOGHrO9f6J2RjPzunZ0dACAMXzY39+P/v5+AEAgEEAwGMSUKVPg8/lQW1uLhoYG+Hy+hOfdiD1fREQutnJBBWaWT0KybC4BYGb5JKxcUNgzEOMDovjgIxF9fS5gJEdKv9br9cLv9xuPlpYWI5/MrtmcgUAgJgBMJL5cURQjKNEfb775JhRFienly/b+uRIKhVBTU4P29nZ4vd6EAWRPTw9qa2uNtdFSnXcbBl9ERC5WXCSw8bYqABgVgOnHG2+rcizZ3gqKokBRlJRDfXoSfbxwOIwVK1YAUHtsKioq0NnZGRNQJRom079vsjIrRE8qSERRlFGBYHt7+6iFWvVh0fhZj9ncPxcURcGNN96IpqYm1NXVwePxGMFyOBxGW1sbAPV1aGhoQE9PD7Zs2ZL0vBsx+CpwwxGJD44pAIAPjikYjiSaE0VEbrZ26Uw88z0fZpTHDi3OKJ+EZ77nw9qlM21tjz58lI6Z3ilA7SWJrtvc3Iy6urqUw2E+nw9+vz8msNB7fqKDk/r6eqxfvz4mZ8nv92P58uXo7OyMuafeS6PPuov+OeLbmCsdHR1obGxM2MPV1tY2KtDq6elJeJ/a2lqjl28s9zcj3b9DOBweFTzrvzP6v2P0vy8AY4ZjovNuxJyvArZt30k8+uoBY+2fh7fuwy+2H8bG26ps/8+YiKy1dulMVFfNwJb3P8HDW/fhH29fitoV82zt8dKT3PUPVz0xPRwOG0s7tLa2oqGhAa2trdi9ezeAkR6o5uZmKIqCxsZGNDU1GcOAPp/PyLUKhUKYOnVqTK9NS0uLce/o7Yz0wELvqert7R0VnNTV1aG3t3fUsGVXVxcaGxvR399v9P7oOVr6cFdnZ2dMG5ubm+HxeJIu36An8u/evdtor97zk4zP50NPTw8aGxvR1dVlbP8DICbfSV/2IRQKYeHChaPK9DywmpqamG2MzN4/kVAolNXrqvdcNTY2orq6GsDIa1VbWxuz1Ib+77Zp0yYjeIw/70ZCSvaExBNClAEYGBgYQFlZmdPNyYq+6GL8q6v/N+zEX8NEZL19xwfwzV+8g9d+tNr2vR2toAcVyXp0iPLJ4OAgysvLAaBcSjmYrB6HHQtQukUXAXXRRQ5BEhER2Y/DjgVo15H+UduMRJMATg6cx64j/Vi1cKp9DSOinOsbPI++oQvG8eG+czHPusrSEq7tR5QnLA++hBANABTt0COlTDsvNN01Zu4phGgBoC9g0i+l7IyvU6jcsugiEY1dsu3E7t+yN+bYjduJ6flcoVDIyCkiKgSWBl9akAQpZZt27BdCBKWUSbdKT3eNiXIPgDcB3CilVIQQPgA9GD0Lu2C5adFFIhqbu6+dh+qqy9LWqywtsaE1uaWvsUVUaCxNuBdCnAWwQEqpRJ2TUsqkgVC6a0yUBwH0RveGCSH8UkrTK8W5PeF+OCKxumU7Tg2cT5j3JaBOQX+n8RsFtfYPERGRkxxPuBdCeKEOCSoJyhL+KZPuGpP3rAPQKYTw6ucyCbwKwXhcdJGIiMgtrJztmGzlMwWAJ8trUpZrwRkA+LT6YSFEMFmwpxNClAghyvQHgNJU9d0g3xZdJCIiIpUTsx37AWS6X4F+jZKmXA++FCllCACEEI0AjgCYkuL+TQA2ZtimvJcPiy4SkcWGTqmPdEpnqA8icpzp4EsIEQBQa6Jqsx74JJHNRlHprokv361/oSXde9LkfTUDeCrquBTAscybmX+KiwSunuMBAFw9x8PAi6jQ7P4lsOPx9PWufwi4ocn69hBRWqaDL22phkyWa0i286gnRVm6a7ItV5B8yBJSygsAjIVyhGCAQkQusfz7wBW3jBx/ehB4eT3w7U3AtKilJdjrRZQ3LMv5klKGAShReVjRZQl7oNJdY7I8jNGBlgdRvWFERAWjdAYwa9nIQw+4pi2OPW9D8KXv8TdlyhQsXLgQra2tMZssNzY2YsqUKaipqTE2uabR6uvrMWXKlFGbXccLh8NobGyEEML4925tbUV9fT1qampGbQwerbGxEY2NjWhtbUVbW5tRt7GxMek13d3daG1Nu1RnVvced6SUlj0ANACoizoOAAhGHXsBNGR4TbryAICWuOOuDNtdBkAODAzIQvDnY4qc3/ia/PMxxemmEJHVju+RcmOZ+uwQn88n6+rqEpY1NDRkfL+GhgYZCATG2ixX8fl8squry1Rdv9+f8N/b6/XKlpaWmHM9PT0J793b2ysDgYD0er1Jv0+68rHcu1AMDAxIqBvJlMkUcYaleztKda0tjxAioOWMrZCxC6z6AdRnco2J8k4AvUKIBm1B1hVSymrrfsr80zd4HvuODxiP6O1Gos/3DXKFe6KCEhkGTuxRvz6xRz12QEVF8jTdhQsXZny/6upq1NaaSTmmaPX19aN6m2pqatDS0jJq8Vqv14v6+qTrnwNQX9dwOIxwOHGGz1juPd5YPttRxm790xlX1gagLZNrTJaPuud4UsjbjRBREgdeAd54BFA+UY9fux945yngpp8BVescbdpYcZX77Hg8HgCAoijweDxGIJbs39Pv98PrTZwe3dnZiZaWFnR3dyMYDKKlpSWmfCz3Ho+4sXYBKuTtRogogQOvAO33AIvXAt95Dqi8Cuj7ENj5pHr+jt/kZQDW3d1tfGhv2rTJ6FX5y1/+Yny4h0IhNDY2IhwOo7e3N+l1/f396OnpQTAYRFtbGyoqKrBlyxY0NTXB5/PFXFdRUYGamhoAamAS/f30OnpvTVdXFwAY5a2trUYQEQ6H0dDQgM7OTjQ3NyMcDqOjowN+vx/hcBjV1dXwer0IBoPwer3GteFwGF6vF4FAwPi3aG1thcfjSdlrmKmenh74fD4jCOvs7EwbyCbLywqHw/B4PAgEAkYgFm0s99Zl+7oC6uvY1tYGr9eLrq4u1NfXx5TrZYqiGD9LXV1d0vOWSzUmOV4fKLCcLyIqYMNfSPlPS6V8oVbK4eG4smH1/D99Wa1nk2Q5SFJKGQwGY467urqk1+uNyRPyer2yp6fHOO7p6RmVL5Tsuuicso6ODunz+WKu6+jokABkb2+vca6hoSGmvfp1XV1dsqenx7hnIBCI+X69vb3S7/fHtCdadL5VIBCQHR0dxrHf7zd+xoaGhph/l7Nnz0oAWed8nT17Vra0tEifzyfPnj1rnAcwKgfMjLNnzxrt6+3tlQBiXp+x3Dtetq9rQ0NDzGvq9XqNn72joyPm37e3t1cGg8Gk58ciL3K+iIjIYh//UR1qXPMAUBT3X3pREbDmJ4DysVovD+l5RNG9JnrvUDbXRfP5fKPu4/F44PP5Yuo2NTWhra3NqOvxeBAKheD3++Hz+dDS0oJQKITu7u5R36+/v98439/fHzOLU+9xCofD6OzsjOnpqqmpQTAYhKIoaG1tjelt0duYid27d6OtrQ1tbW1ob2+H3+9HT0+P0YaxaG9vxx133AFA/Zl9Ph+2bNky5vsmku3rGg6HY2aHer3emOOOjg5j5q3X68Xy5ctTnrcahx2JiNzs3Gn1ufKqxOX6eb2ew6KXntDFf7h6PB709/envVei67JJ6Pd4PEbApd8z/t67d+9OmLOkD3P5/X7U1dUhGAwiGAyiu7vbCFi6u7vh8XhigoHe3l4jYMhFgLR8+fK0w2Ver9cYuk1GHxKN1tXVNep1a2trixl6zPbeydoZzczr2tHRAQDG8GF/f7/xOxQIBBAMBjFlyhT4fD7U1taioaEBPp8v4Xk7sOeLiMjNJmv5nX0fJi7Xz09OnweaK2Z6rvJdfECUKGiMV19fj/b2dgAjOVL6tV6vF36/33i0tLQY+WS5zPNKJRAIpF07LL5cURQjKNEfb775JhRFienly+beuRQKhVBTU4P29nZ4vd6EAWRPTw9qa2sRDAaN9cqSnbcagy8iIjeb/zXAM09Nro9EYssiEWDnU4BnvlrPJtXV1a4KvhRFgaIoKYf69CT6eOFwGCtWrACgBp0VFRXo7OyMCagSDZPp3zdZmRWiJxUkoijKqECwvb09ZrgUGBkWDQaDY7p3riiKghtvvBFNTU2oq6uDx+MxguVwOIy2NnUBBJ/Ph4aGBvT09GDLli1Jz9uBwRcRkZsVFavLSRzcBmy+Czi6C7gwpD5vvks9f9Njaj2bBAIBeL1e48NNF5/blIyZXqaxXBcKhWLqNjc3o66uLuWQmM/ng9/vjwku9J6f6OCkvr4e69evj8lZ8vv9WL58+agV5/VeGn3WXfTPEd/GXOno6EBjY2PCHq62trZRgVZPT0/C+9TW1hq9fNne26x0/w7hcHhU8KwPOer/jvG/i/oMx0Tn7cCcLyIit6tapy4n8cYjwLNRa0p75ju2zERXVxdaW1vR2NiIqVOnAlCDlOjhvFAoZCzR0NraioaGBrS2tmL37t3o7+9HRUUFvF7vqDqprgNGeqCam5uhKAoaGxvR1NRkfG+fz2fkWoVCIUydOjWm56alpcW4tx5IAiPBhd5T1dvbOyo4qaurQ29v76hhy66uLjQ2Nho/l14XgDHc1dnZGdPG5uZmeDyepEs46In8u3fvNtqr9/wk4/P50NPTg8bGRnR1dWHq1KlG/eh8J33Zh1AohIULF44q0/PAampqUFtbi0AgYPreyWT7uuo9V42NjaiuVn//9deqtrY2ZqkN/d9t06ZNRvAYf94OQqpLK1AUIUQZgIGBgQGUlZU53RwiInMiw0DoN+oCq9/8OeC7x9YeLzfQg4pkPTpEYzE4OIjy8nIAKJdSDiarx2FHIqJCUVQMzLpG/XrWNQy8iPIUhx0L0dAp9ZFO6Qz1QUTuFf9+//Rg7LOO73eivMHgqxDt/iWw4/H09a5/CLihyfr2EJF1kr3fX14fe8z3u5HPFQqFjJwiIicw5ysB1+d8JfpL+OX1wLc3AdOiNtLmX8JE7seebqK8YTbniz1fhSjZf7LTFgOzltneHCKyEIMqItdhwj0RERGRjRh8EREREdmIwVehiwwDJ/aoX5/Yox4TERGRYxh8FbIDrwD/e5m64CKgPv/vZep5IiIicgSDr0J14BWg/R6gcgnwg26g6bj6XLlEPc8AjIiIyBFcaiIB1y81ERlWe7gqlwDffREoioqxIxF1s92+A8B9e7gCNhERUY5we6Hx7OM/AsonwJoHYgMvQD1e8xNA+VitR0RERLZi8FWIzp1WnyuvSlyun9frERERkW0YfBWiyZepz30fJi7Xz+v1iIiIyDYMvgrR/K8BnnnAzifVHK9okQiw8ynAM1+tR0RERLZi8FWIioqBm34GHNymJtcf3QVcGFKfN9+lnr/pMSbbExEROYCzHRNw/WxH3YFXgDceUZPvdZ75auBVtc65dhERERUgs7MdGXwloAdfR48edXfwBajLTux9CXj9IeDmx4Fld7LHi4iIyAKDg4OYO3cuwOArc0KI2QCOOd0OIiIicqU5UsrjyQoZfCUghBAAZgEYSlO1FGqQNsdEXXIOX6f8x9fIHfg6uQNfJ2eVAjghUwRYE2xsjGto/2BJI1adGqMBAIZSdS+Ss/g65T++Ru7A18kd+Do5Lu2/OWc7EhEREdmIwRcRERGRjRh8jc0FAI9qz5S/+DrlP75G7sDXyR34OuU5JtwTERER2Yg9X0REREQ2YvBFREREZCMGX0REREQ2YvBFREREZCMuspolIUQDAEU79EgpWx1sDiUghPADqAfQBSAMoBrA+1LKTkcbNo4JITwA7gBQI6WsTlDO91UeSPU68X2VX7T3DAAsBAApZX2CckU75HsqTzD4yoL+yy6lbNOO/UKIYPwvPTnOA8APIAD1Q6KFHxDOEUL4ACyH+rpUJCjn+yoPpHudwPdV3hBCtEgpG6OOg0KILj1g5nsqf3GpiSwIIc4CWCClVKLOSSmlSH4V2U0IEQDQHf06kfO016VJSvnVuPN8X+WRFK8T31d5QOud7IDaO6lo53wAegAslFKG+Z7KX8z5ypAQwgu161ZJUOa3v0VE7sf3FVFWlgPwRh2HtWcP31P5jcOOmfMmOa9A7Y6n/HKHEKIf6vDJwuguesorfF+5C99XDtOCqilxp/WgKgw1MEtEAd9TjmPwlTv6f0SUP0IAIKUMA4AQok4I0SGlrHG2WZQBvq/yD99X+asJQL2UUhEi6cgi31N5gMOOucNf5jwjpQzrHxCadgABLVeC3IHvqzzD91V+EkK0ANiiJ9enwPdUHmDwlblwkvOeFGXkAC0x2BCV+5BsiIucw/eVS/B9lX+016Q3bhkJvqfyGIOvDGl/8SlaMmN8WbcDTaIE9JlA0a9T1F/m/I8nz/B95Q58X+UfPXk+ajkJjxDCy/dUfmPwlZ1mjCQ26n91pOvqJRtpf423xg2P1AHo5BR5xyUb9uD7Kr+Mep34vsov2tISPgAhIYRXC7TqoOZ1AXxP5S2u85UlbfE6/T+gFZztk3+0v8jrok5N5evkHO2DIQCgFuoHRiviVkbn+8p56V4nvq/yg/Y6HEGCmYvR63jxPZWfGHwRERER2YjDjkREREQ2YvBFREREZCMGX0REREQ2YvBFREREZCMGX0REREQ2YvBFREREZCMGX0REREQ2YvBFRJQj2tYuHqfbQUT5jcEXEVHuNIEbTBNRGgy+iIhyxyelDDndCCLKbwy+iIhyQAjhB9DldDuIKP8x+CIiyo0aAJ1paxHRuMfgi4goN7xSyrDTjSCi/DfB6QYQEdlJCOEDsBzAQgDvA+gGUKcVK1LKtizuGQDQkaJsBYBeAGHt0S+lVDJuPBEVBPZ8EdG4oS0D4ZdStkkpGwFsAtAkpWzVqjRmeetaAO0Jvl8dgGopZaMW1HmgBmHLs/w+RFQA2PNFRONJXVSgpevVnkMA6rO8rye+J0sI4QXQAmBB1GkFAKSU3Vl+HyIqAAy+iGg8MRLiteDIA63HKj4g0soDUIcJVwAIJsrp0nq3ggm+VxBAd1xQVg01yCOicYzBFxGNG3HBkx9AOEXuVYeU8qsAIIToBvAmgK8mqFcjpaxOcN4PdQZkNB/UHDMiGseY80VE41U14paG0LcG0pLyDVqA5tF6w+LrK/E3jqoX38vFtcCIiMEXEY0f2hChLgB1tqNRFtULliwh3hd3nGzIEUBsT5u2CCuklN1CCF98gEdE4weDLyIaF7TAq0X7OoCo4b8Em2F7APTHnVMAVMSdq06UPK8FXWE9wNLuXw81fwxQZ1wy94tonGLOFxGNF90A2rQgbDfUYKhRCAEAFXHreykYHWh5EBWQaUOLqRZVrQFQL4ToAQApZY0QokP7/gy8iMYxIaV0ug1ERHlF67HapCfca+fOAviqPpQohGgBsIU9WESUKQ47EhHF0QIqj36sDRuG42ZL+hh4EVE2OOxIRJRYjda79T7Udb6MZSO0njEGXkSUFQ47EhFlSAgRBNDCjbSJKBscdiQiylwFAy8iyhZ7voiIiIhsxJ4vIiIiIhsx+CIiIiKyEYMvIiIiIhsx+CIiIiKyEYMvIiIiIhsx+CIiIiKyEYMvIiIiIhsx+CIiIiKy0f8PD7mzDw5U74UAAAAASUVORK5CYII=\n", + "text/plain": [ + "24" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "am_pcac_impr.T" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl8AAAGLCAYAAAD5+Pe5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAABL4ElEQVR4nO3df3RU1b03/vdOlOAtSQ4BIr+5DIgaqMUp4JcWdFknio+Vp7YTU7XXu7q6TOofFVtdidE+i8f72BuTpd769FnXO+Hbn09VSPItvWpv0UQs4q1XJAO1gPcCGVR+BxtOElxCMbO/f5wfOTOZ3zPnzJzM+7XWrMk5e5+THSbDfLL3Z+8tpJQgIiIiImeU5LsBRERERMWEwRcRERGRgxh8ERERETmIwRcRERGRgxh8ERERETmIwRcRERGRgxh8ERERETnoknw3oBAJIQSA2QBG8t0WIiIicpVyACdkgoVUGXzFNhvAsXw3goiIiFxpLoDj8QoZfMU2AgBHjx5FRUVFvttCRERELjA8PIx58+YBSUbOGHwlUFFRweCLiIiIcooJ90REREQOYvBFRERE5CAGX0REREQOYvBFRERE5CAGX0REREQOYvBFRERE5CAGX0REREQOYvBFRERE5CAGX0REREQOYvBFRERE5CAGX0REREQOYvBFRERE5CAGX0REREQOYvBFRERE5CAGX0REREQOYvBFRERE5KBLnPgmQogmAKp+qEgp27O9JoXyBgCKXmcRgFYppQoiIiKiPLI9+NKDJEgpO/RjnxAiIKVszPSaFMs7jGBLCKEA2ASgzpYfkoiIiChFQkpp7zcQ4iyAhdZeJyGElFKKTK9JobxHSlkbdc9x5xJ8/woAQ0NDQ6ioqEjlEiIiIipyw8PDqKysBIBKKeVwvHq25nwJITzQhgTVGGW+TK5J8Z6qEKJH7/Ey7hnK8McgIiIiyhm7hx09cc6r0PKxMrkmlXveB6APwFkhRDuA/iTDnGUAyiynyuPVJSIiIspGvmY7DgKoyvE1ZrneK9YGoBtAE4A6oxcsjhYAQ5bHsTTbRkRERJSSfAVf6QZeqVxjlgsh2gCEpJR10GY6VkHrCYunFUCl5TE3g/YRERERJWX3sGO8PCslQVmyaxKWW3LCegFAShkC8EUhRJ8Qwi+l7I6+UEp5AcAF41iIuHMBiCIMDJ/HwMiFpPWqy8tQXTHZgRYREVGhszX4klKGhBCqEMKjB0HWst5Mr0lUrifdqzFuHcjqhyGK4bc7g/jXt4JJ6/33NV403PYlB1pEeTVySnskUz5TexBRUXJikdVWAD4AxppcfuNr/dgDwB+1SGrCaxKV6wFYsxAiekbkFxMl3RNl4p7S19FQ9lTSep+UPgyAwVfBsCtI2v1zYMeTyevd8AhwY0vq9yWiCcX2db4Ac9FTo5dqpZSy2VLWAKBZSrko1WtSuKcCLYn+LxibBdkRa3mKOO3lOl+UmqgP8aOH9mLeGxtw9MZnMe+K5WP12NNRWN5otSdIig7qPj4I/OY+4OubgOlLxs7z94FoQkp1nS9Hgi+3YfBFmTr8p7eweOttOHzH77D4C2vy3RyKx6kg6cReoOMGoGEHMHt55vchIldINfhyZG9HIqKCEi+omr6EQRIR2Y7BFxEVLiawkxP4e0YOY/BFRIWLCezkBP6ekcMYfBFR4VrxbeDKW8eOE+VmEWWKv2fkMAZfRFS4mJtFTuDvGTksX9sLERERERUlBl9EREREDmLwRUREROQgBl9EREREDmLCPRER5RbXzSJKiMEXERHlFtfNIkqIwRcRUY4MDJ/HwMgF83jyx+ewGMDhM+dwXg6Z56vLy1BdMTkPLXQI180iSojBFxFRjjz/zkd49vVD5vFScQS/KwM2bN6L/Zbga8NNV+D7tUti3SI2tw3jcd0sooQYfBFRcQuPAif2aF+f2APM/DxQUprRre65bj5qay43j88cnATsAB6++UrMWLLKPF9dXpbejTmMRzShMPgiypHRzz7D8YN7oIavwCcH92Dh0v8HpZdk+BZzW0+Hy9prDA9WHPk9Zr7zBCaNHNUKXnkQf93xNE5d90MML7w17eHB6orJEfUPf3wZAGBe1WVYPKcy8wZzGM9WHC4mpzH4IsqBPa/+ErPf+RFuCJ/WFnDZ/0Ocfv8nOHHdY7j2lr9P/4Zu6+lwWXuff+cj/Ocbz+O5Sc8CV9wC3PlzoPpqYOB9XPLmU5jb+13c/9cNuOrGe9IbHrQLh/E0NgX5tg0XE8XB4IsoS3te/SW+8PYG7UP8+ofND/EZbz6FGW9vwB4g/QDMbT0dLmvvPSvnQHnv/4OYdQvEN18ESvQlD+etRMldL0Juvgs/OfkbqCub8ttQimRTkG/bcDFRHAy+iLIw+tlnmP3Oj4ArbkHJXeM/xMMv3oVZ7/wjRm+6J70hSLf1dNjUXruGg6rPBoGRo1qPV0nUWtMlJRBrH8Kkn9Zq9ZS1GbefcsymIN+24WKiOBh8EWXhP995FUvDp7Uerxgf4iXXP4SZh2qx/51XsfTLt+WnkS5mHQ4qQRh3lryBJycB/++W36AzfBZhfZOOtIeDzp3Wnquvjl1unDfqUWFw2x8lRHEw+CLKwqdnj2tfJPkQN+tRWozhoOjE+Ccn/RT/UP5aRGJ8WqboQ0wD7wPzVo4vH3g/sl4mwqO47Mx7AKA9h1dnPIvSNi6bKEE0UTD4IsrCZVPnaF8k+RA361Faqismo/rYa0Dvd4El6yIS4yftfBrze78L3PkrYM769G684EuAMh/Y+TTwzRciey3DYWDnM4CyQKuXiQMvAa89hjnqRwCAOW+1APueA27+EVCTZlvt5LKJEkQTBYMvoixcdd0tOP365Zjx5lOROV8AEA4j/ObTGCiZiauuuyV/jXSz8Cjw2mNa4GUNkuat1I433w289kPgqtvS61UqKdUCoc57tXus/YEZ1GHnM8DBbVpQl0lP1YGXtPsuWQd842eW+z6tnb/zV4UTgLlsooQj3NBjSa7H4IsoC6WXXIIT1z2GGW9vQPjFu1By/UPmh234zaeBQ6/i5OpnMTPT9b6K3Yd/BNSPtCAmRk4d1v4A+GmtVm9hmonxNeu1QOi1x7R7GJQFmQdIdgWLdmEOVSS39FiS6/ETgShL197y99gDYPY7P8Llh8Y+xAdKZuLk6mczW+eLNHYnxtesB666Dce3BzDnrRYcX9OKOV9pzDwwsjNYJHu5qceSXK8keRUiSubaW/4e0x89gB1Ln8Du8BXYsfQJzHh0PwOvbFkT42PJRWJ8SSk+nXENAGjP2fRIcRalO0X3WM5bCZRNGeuxXLJO67EMj+a7pTRBMPgiypHSSy7BnCXXYkXJIcxZcm3mWwvRGGtifDgcWZaLxPhccyJYdJvovTMLMYAxeizXPhS/x1L9UKtHlAP8dCAqQNxrTmdnYrwd7J5F6RJ27Z1pG/ZYksMcCb6EEE0AVP1QkVK2Z3tNKvcUQrQB6NcPB6WU3Wk3nigPuNechR2J8XaxKVh0WzDuur0znVj3jcjC9uBLD5IgpezQj31CiICUsjHTa1IoVwC8DuAmKaUqhPAC6AMgbPoxiXKKe81FyXVivJ1sCBbdFoy7bu9M9liSw5zo+WoBsNA4kFL2CiF6AMQNvlK4Jll5G4AtUkpVLw8KISz/CxIVtoi95sKjOP6+9sG7ZPQQ5sz6SsEFHY70zOQyMd5uOQ4W3RaMu27vTLcNb5Pr2Rp8CSE80IYE1RhlPillb7rXAAilcM8GAIv0e3mklL2xvpflujIA1v+1ypP9bESOcMm6Q27rmbEaDUvsPf0Z9o+uxsXTn2FhWKK0JAed5DkMFl238bNNOVS2BvluGt4m17O758sT57wKQMnwmoTlesAFAF5ogVpICBEA0JUgAGsBsDFOGVF+uGjdoYiemfAoLu4+CPwJeGLVRVy6YmyF8ELpmTFs23cSj798ACeHzgP4HrD9Ezzdtx0bb6/BumWz8t0897Iph8q2jdYNbhreJlfL12zHQQBVGV6jJik3gi9VShkEACFEM4AjAKbGubYVwDOW43IAx9JsH1HuuGyldLNnRu+pg95Td+2f/ifw4c8KrqcO0AKv+38dhIw6f2roPO7/dRDPfcvLACxTNuVQ2bbRupWbhrfJtfK1zle6gVcq10SX7za+0IcoFX3Ychwp5QUp5bDxADCSQfuIcseN6w4ZPXXVS4Hv9AItx7Xn6qXa+QMv5buFptGwxOMvHxgXeAEwzz3+8gGMhmPVSP177D39Gf51dDX2nv4sq3u5jpFDdXCb9ofC0V3AhRHtefPd2vmbn0g7sKmumIxlQzswv/e7mDRrWcTv2aRZyzC/97tYNrQjqxmfRf26kWPs7vkKxTmvJChLdk2m5SriD1kSFRa3rTvksp66XUcG9aHG2CSAk0PnsevIIFYvmpb2/d0ynOm6HCqbf8/c8rqR+9na8yWlDAFQLXlY1rKY+VfJrkmxPITxgZYCS28YUUFz20rpDvTU5bJHYmAkfuCVST0rYzgzOrgzhjO37TuZ9j3t8vw7H+GrP3nLfGzYvBeANlHCev75dz7K7BvUrAce2Ivja1oBQHt+YE/mQ9A2/p656XUj93Mi56sVgA+AsSaX3/haP/YA8EctkprwmhTKmwHUAwhaynuNHDCigue2dYds7qnLdY9EdXlqvTip1jMkG84U0IYza2tm5mZGZZYcWcLCBXtn2va6jZzSHsmUz9QeVDRsD76klO1CiCY9AAKAlVELrPqgrc/Vnuo1KZR3CyGqjMVYAUyTUnKdL3IPt607ZOMK4XYkxq+a/lfMmlKCU+fCMT9wBYCZU0qxavpf07qv3cOZuea6JSxs+j2z7XXb/XNgx5PJ693wCHBjS+r3JddzZLZjVK9Wd1RZByJ7rZJek2L5uHsSuYodOTN2/SVuU0+dXT0SpcFfYOOF13E/HoSAhLRkYAiEAQhsvPAUSoM3pfWhaOdwJsG23zPbXrcV3wauvHXs+OODwG/uA76+CZhuWQqDvV5FhxtrExWyXK87ZNdf4jb11NnWI7Hi21h35a147vCnePxNFSfPhc2imVMuxcbrK7Fu8VNpfyjaNZwZITyKy868BwDac3h14fSA2s2m3zPbXrd4f8RMXwLMXp7evWhCYfBFVOhymTNj51/iNvTU2dYjoX8orpsN1K6R2PLuR3h06z784x3LUL9yfsb5WKsWVmFW5WScGjoffzizcjJWLcxktR3Yu+OBW4I6G37PbH/diKIw+CLKwscnPoR65qh5fPbD/ebzYUs9ZcY8TJ+9IKPvkdPtb+z+SzzHPXVO9CSVlghcM1cBAFwzV8kqEb60RGDj7TW4/9dBCCDig9y468bbazL7HnbueOCSbaxMOf49s/V1I4qBwRcVhej1jOJJdz2jQ7//CVYf3TTu/Mpgkz7XVvP2vPsw/TtPpXxfgyvXHcphT50beyTWLZuF577ltbxumpmVkzN/3exc38pF21hFyPFK9La8bkRxMPiiovDbnUH861vJVxr572u8aLgt9WTdK279Hg6f+VryejPmpXxPA7e/AUo/OY2NX/4b3P9v5+P3SHz5b1D6yemCSlpet2wWamtmYmvvDly680lcXPsI7vDdkHnPibG+1Td+Fn99q5/WavUWrk39vi5bHNduOX/diOJg8EVF4Z7S19FQlrzn6ZPShwGkHnxNn70g4+HERNy2XpRtdv8c63Y8iecuXYnHL96LkxhLqp+Jj7Hx0v+LddvfBUYLb6p+aYnA8ssvweLSt3H48kuye53sWkfNrqDOIqfD5g7I6etGFAeDLyoKn/vyfcA1t5vHRw/txbw3NuDojc9i3hXLx+oVSO+J29aLso0+QWAdgNqwxNYDQ/jx9iN48CsLcUfNbJSW6AF1gbxutrFrHTWXLY5LNFEw+KLiEJVofuHMOe1ZWVyQU77dvF6UXRMESgFcJYZwbPsnuGrptSgtxEVA7WLXjgcuWxzXym09akRWtu7tSESZcWS9KBts23cSa9q24+Htn2DDxe/h4e2fYE3bdu6Lly1jfauD27Q8rKO7gAsj2vPmu7XzNz+Rfl6WNagLhyPLbFwcF9CGzTPdn5O/Z+R2DL6ICpAxyy/e3/ECwKwCm+XHjYltZqxvNbBfy8Nqnas9DxzIfEaiTUFdOsPm6bLl92zkFHBir/koU7WFYsrUwxHnU9odgigFHHYkKkBuW3eIEwR0Uds3RX6ITxmrl+lGyrne8cC4Z64Xxz2TWo7YwJnTQBo5i7b9nkXt/GDMTZ73xgbgDUs97sFIOcLgi6hAuWndIU4Q0DnxIZ7j9a0A5H5x3OO9ABalWK8m5fvaud2UdeeHw2fOYcPmvXj2m8uxeEZU0Jyp8ChwYo/29Yk9wMzPF8XyHRQbgy+iQqT3oKyrAmr/rgq/23UAcs//hbj273DbqhqUlpwGTpzOvAclx9w8QSCnnPgQt0suF8f11WHW+3tx6lw4/uK4U0qxyleX1n3t3m7KcF4OYb8cwvnpnwdm52Bih76DAPQdBPDKg8BbzxTuDgJkOwZfRIXI0oNSCmC98cV7bwPvWeql2YMSvdL/5I/PYTG0IOG8HDLPp7vSv1snCOSc3R/icMcsv9LKWdj4NSQeNv/aF1BamV7vrSt/z9y6gwDZisEXFR03fHjZ1YPy/Dsf4dnXD5nHS8UR/K4M2LB5L/Zbgq8NN12B79cuiXWLmNy4DZAbuWndLDuGzd32ezagfgLl94/i0iW3QMTYQUBuvgsXf/8Y1Nk3oVr5XH4bS45i8EVFZdu+k/hfL/0Z8879CdX4Igb+8C7+afdf8T/Wf76wPrxs6kG557r5qK0ZW7PpzMFJwA7g4ZuvxIwlq8zz1eVlad3XbRME3MiN200Z2/VsefcjPLp1H/7xjmWoXzk/498Dt/2e7eh9CXUjR4E7fx5zBwGx9iFM+mmtVs9/V34aSXnB4IuKxrZ9J/HbF/4FXWUvYPakAfP8iYvV+IcX7gbu/m7BfXjlWnXF5IjhxMMfXwYAmFd1GRZns2jpyCmsqzqN5/5bFR5/U8XJc2NrRs2cUoqN11diXdVpYEQURL5T9PDr4YFzEc+GdIdf7eLEbFK7eoRLSwSumasAAK6Zq2R9TzdNRLl5vgT2IekOAjfPT3O9s6hZtXEVSE4ojcfgi4rCaFjiD7/9Gf550rPA4luA6x82cy9mvvkU/vnQs3j0t5NQW/NowfzVbLvwKC47oyWQXXbmPSC8OvMkaz1HbR2AWimw69KrMAAF1VCx6uJ/onS7BLajYKbqRw+/Gh7csjfiON3hV7vYPZvUNcOZLpuIUjlDn++aZAcBs16qombVxlUg7zcaj8EXFYVd/WfwwOgvgCtuQcldL0bkXpTc9SLCL96FBw7/Erv678PqK6rz2lZH6LOv5uizr+a81QLsey7z2VeWHLVSADPOnMMTeo5aaQHO8osefo0n3eFXu9g5m9RVw5k2TUSxjV3bQkXlhOLjg8Bv7gO+vgmYbvljoUDebzQegy8qCqMf/DtmywGtxytG7kXJ9Q9h9qFahD74d+CKO/LTSKfYMfvKgVl+uRQ9/Fro7Jrl57rFcd22lIexg0DnvdqOAWt/YHm/PaPtIHDnr9LvcY7Xszd9SUHuVUvjMfiiolAtVP2LxLkXZr2JKjyqrTe0ZF3kX+L67Ctsvht47YfAVbdxAcgCYtcsP9ctjuuyIB+ALTsIkPtxb0cqCos8+mrbeo7FOPp5s95E9eEftYUe1z4UswcQa38AqB9q9ahgGLP8AIzb7zObWX5cHNchNeuBB/bi+JpWANCeH9jDwKuIseeLikLp334Zn35uLsrefCoy5wsAwmGE33waFz43F5f97Zfz10gnnNP33EvSA2jWyzO3zUq0kx2z/Fy5aKkNHPk9s2NbKHItBl9UHEpKcdltrZCd9yL84l0ouf4hM/ci/ObTEIdexWWZ5F64zRQ9yTzJ7CuzXp65bVai3Yx1s7b27sClO5/ExbWP4A7fDRnnY7lt0VK78PeMnMbgi4pHzXqIGLkXQlmgnS+GIQC7Zl/ZxG2zEp1QWiKw/PJLsLj0bRy+/JKsEuHdtmipXfh7Rk5j8EXFpWY9xFW34fj2AOa81YLja1ox5yuNBdfjZdswiF2zr2zitlmJbhwmddOipXZx2+8ZuZ8jwZcQogmAqh8qUsr2bK9J555CiB4pZW28cioyLsi9sHUYhLOvbOPW4atcD2cSUWK2B196kAQpZYd+7BNCBKSUjZlek849hRB+AL4c/1hEtrJ9GKRmPeCCHkC3cfPwVS6HM4koMSd6vloALDQOpJS9QogeAHGDrxSuSemeQggFwMTOFKUJyZFhEBf0ALoNh68oHrv2ziR3sjX4EkJ4oA0JqjHKfFLK3nSvARBK4553AugEEMj0ZyAiIspGrvfOjM4tnPzxOSyGtuL/eTlkni+k3EKKZHfPlyfOeRWAkuE1Kd1TD9TGBXexCCHKAFjHAcpTuY6IiCgRO/bOjM4tXCqO4HdlwIbNe7HfEnylnVuob1yeVIFsXO5m+ZrtOIj0hwONa9QU76lIKUP60GMyLQA2ptkeIiJ3i/qwLVMPjz2fiNorMY0PW7tmfbptNqlde2dG5xaeOTgJ2AE8fPOVmLFklXk+7dxCy8blCRXKxuUulq/gK5M8rGTXmOVCiAYjGT9FrQCesRyXAziWxvVErpPLHBS3fSiSLurDdp7x/MYG4A1LvTQ/bO2a9em22aR27Z0ZnVt4+OPLAADzqi7D4jlZ7HEZtXE5Pj4I/OY+4OubtE27Dez1yprdwVcoznklQVmyaxKWCyG8AHan1jyNlPICAPOTQwgmQdLEluscFLd9KJIu6sP28Jlz2LB5L5795nIsnhHV85UGu2Z9um026cCZ1LbpGjhzGijAjctN05cAs5c73pyJzNbgSx/2U4UQHillKKosZj5WKtckKtdzvbz6MwAs0q9pAhCSUnbn6McjF/n4xIdQzxw1j89+uN98Pmypp8yYh+mzFzjcOmfZkYPitg9F0kV92J6XQ9gvh3B++ueB2Zn3oNg169Nts0mrj/dC/whKoV6N7e2hwuHEsGMrtHW2jDW5/MbX+rEHgD9qkdSE1yQq1wM0M7DTe8IaUlnYlSauQ7//CVYf3TTu/MpgExAcO3573n2Y/p2nHGyZs+zKQXHbh6Lr2JSbRfZa5avDrPf34tS5cPy9M6eUYpWvzummUZ7ZHnxJKduFEE16gAQAK6MWQ/VBW5+rPdVrUrgnADMoq9e/bgPQE6/HjQpDdO5QPOnmDl1x6/dw+MzXktebMS9pHTezKweFbGZTbhbZq7RyFjZ+DYn3zvzaF1BamcUWTuFRXHbmPQDQnsOruWafCziScB/V69QdVdaByF6tpNekUq7X6Y5XRoUpXu5QtHRzh6bPXjDhhxNTMTASP/DKpB45xKbcLLKfrXtnHngJeO0xzFE/AgDMeasF2Pectn8rtwkraNxYmwpKdO7Q4YFzeHDLXvy4fjkWV499yDB3KDPV5an1FqZajxxiU24WOcPYO3PLux/h0a378I93LEP9yvnZrXB/4CWg815gyTrgGz8Dqq8GBt4Hdj6tnec+rQWNwRcVlHi5Q4urp2BZNlOoCQCwamEVZlVOxqmh8/FzUConY9VC7spFlEulJQLXzFUAANfMVbILvMKjwGuPaYHXN18ASkq08/NWaseb7wZe+yFw1W0cgixQJfluABE5p7REYOPt2qyq6P/6zRyU22u45xxRIfvwj4D6EbD2obHAy1BSAqz9AaB+qNWjgsTgi6jIGDkoMysjexhnVk7OaJkJInLYOX39sOqrY5cb58+lts4YOY/DjkRFyMhB2dq7A5fufBIX1z6CO3w3sMeLyA2m6HmxA+9rQ43RBt6PrEcFh8EXUTGxrBdVCuC6sg8wr/RtHC37AKWnlLF6XC+KqHAt+BKgzNeS6605XwAQDgM7nwGUBVo9KkgMvoiKCdeLInK/klJtOYnOe7Xk+rU/sMx2fAY4uE2b7chk+4LF4IsK1mhY4r1jKgDgvWMqrp5VwWGxbHG9KLLghuguVrNeC7Beewz4ae3YeWUBl5lwAQZfVJAiN34GHt26Dz/Zfjj7RQmLHdeLciW7giRuiO5yNeuBq27D8e0BzHmrBcfXtGLOVxoz7vGK/j2b/PE5LIb2R9p5OWSeZzCePQZfVFhGTmHbniO4/98G42/8/N+qsO7aheydoaJhV5DEDdEngJJSfDrjGgDQnrMYaoz+PVsqjuB3ZcCGzXux3xJ8MRjPHoMvKiij7/4cj782BxJViF6JStv4OYzH/+0gaj/7A0q/wpwkKg52BUncEJ2sIn7PwqO4uPsg8CfgiVUXcemKsT0jGYxnj8EXFZRd1X6cxMG45RIlOInp2FX9Jax2sF1E+cQgieIZDUvsPf0Z9o+uxsXTn2FhWGacG2v+nul7RkLfM/LaP/1P4MOfcc/IHGLwRQVl4LO/yWk9IqJ8sXtCQ2Ru7PeA7Z/g6b7t2eXGcs9IRzD4ooLCjZ+JaKKwc0LDtn0ncf+vg/FzYzPZrYJ7RjqGwRcVFG78TEQThV25eqNhicdfPhDz/0gtNxZ4/OUDqK2Zmd4QpLFn5Dd+Fn/PyJ/WavUWrk2rzRSJwRcVFGPj5/t/HYQAIv5z4cbPROQmduXq7ToyaC7DE4sEcHLoPHYdGcTqRdNSvzH3jHQMN9amgsONn4mI4hsYiR94ZVLPZN0zMuYNuWdkrrDniwrSumWzUHvVDLy19Tl87s+/xCef/3usueN+lF7CX1kiKm625cZyz0jHsOeLCtOBl1D6f67FDft/iBUlh3DD/h+i9P9cq83EISIqYkZubLzkCwFgVia5scaekQe3acn1R3cBF0a05813a+dvfoLJ9jnA4IsKjzHVuXop8J1eoOW49ly9VDvPAIyIipiRGwtEL0Wdg9xYY8/Igf1acn3rXO154ACXmcghBl9UWKKnOs9bCZRNGZvqvGSdNtU5PJrvlhIR5Y2tubE164EH9uL4mlYA0J4f2MPAK4eYQEOFhVOdbWX3oo9E5Jx1y2ahtmYmtvbuwKU7n8TFtY/gDt8NuZkNnsM9I2k8Bl9UWDjV2VZ2LvpIRM4rLRFYfvklWFz6Ng5ffgmX4XEJBl9UWKxTneetHF/Oqc5ZsWvRRyIiSh2DLyooA1O9UMrn4dKdT0F888VxU53lzqdxsXw+1KleVOevma7FDZqJiPKPwRcVlOffPY7//Ms38NzIs5Av3oWS6x8yN3YNv/k0cOhVfO+vG3DVu8c5LEZExWnklPbQlamHx55PTBmrVz5Te2RgNCyx9/Rn2D+6GhdPf4aFYckhzRwSUsbaHSrH30SIJgCqfqhIKduzvSbFcgBYBABSysY02lsBYGhoaAgVFRWpXkY5YCSEVxz5PWa+8wQmjRw1y/5aPh+nrnsMwwtvZUI4ERWvN1qBHU8mr3fDI8CNLWnfftu+k3j85QMRWxjNqpyMjbfXcIeRJIaHh1FZWQkAlVLK4Xj1bA++jCDICI6EED4AdYmCoWTXpFDeJqVsttwvAMAjpaxNsc0MvgpBeBQI/gp45UHgqz8GvPdyxg0RUVTP1+Ez57Bh8148+83lWDwju56vbftO4v5fB8dt2m30eXGLt8QKKfg6C2ChlFK1nJNSyrj9l8muSVQuhFAAdEELxlS9zAugD8AiKWUohTYz+CoUJ/YCHTcADTuA2cvz3RoiooKz7/gQvvqTt/DK99Zg2ZzKjO8zGpZY07Y97qbdAto6Ym81f4VDkHGkGnzZusiqEMIDbUhQjVHmy+SaFO+5AoDHUmQEXEoazSciIioau44Mxg28AEACODl0HruODDrXqAnK7oR7T5zzKuIHQsmuSViuB2VTo8qMoCxmr5cQogyAdW59eZzvQURENCENjMQPvDKpR/Hla3uhQQBp7viZ9JpE5S0AGmP1llnKhyyPY2m2jYiIyNWqy1ObxJRqPYovX8FXuoFXKtfELBdCtAHYIqXsSHBtK4BKy2NuBu0jIiJyrVULqzCrcvK4zboNAtqsx1ULM/kIJyu7g694ye1KgrJk16R8TyGEH0B/sqUtpJQXpJTDxgPASKL6REREE01picDG22sAYFwAZhxvvL2GyfY5YGvOl5QyJIRQhRCe6FmGUsreTK9J5Z5G8r3R46XPgqxKZbYj5VHUFGp8fDDy2ZDF4oFERBTbumWz8Ny3vOPW+ZrJdb5yyokV7luhJbwbQZDf+Fo/9gDwR/VOJbwmhXt6AXgBdOv3B4Doe1Ah2v3z2IsH/ua+yOMMFw8kIqLE1i2bhdqamdjauwOX7nwSF9c+gjt8N7DHK4dsD76klO1CiCY9QAKAlVELrPoANAJoT/WaROV6D9fr0IYh26LbksMfjeyw4tvAlbcmr8deLyKi3LKMPJQCuK7sA8wrfRtHyz5A6SllrB5HHrLmyPZCbsNFVomIyC1ytciq3dsWFYNUF1nlxtpEREQuYuyBazg8cC7i2ZD2HrhRIw8Jty2irDD4IiIicpHn3/kIz75+aNz5B7fsjTjecNMV+H7tktRvHDWceF4OYb8cwvnpnwdmZ9GjRuMw+CIiInKRe66bj9qay5PWqy4vS1qH8oPBFxERkYtUV0xObziRCk6+VrgnIiIiKkoMvoiIiIgcxOCLiIiIyEHM+SIiIiLbRC+NEU/aS2O4GIMvIiIisk28pTGipb00hosx+CIiIiLb/N3SMtxePbZO2NHBT/HUa/+Fh2++EvOqLjPPKzOKZ2kMBl9ERERkm+n/9QKmW7YtWgzgxjIAO6Iq3vAIMLs4ti1i8EVERET2idq26OihvZj3xgYcvfFZzLti+Vi9Itq2iMEXERER2bdnZNS2RRfOaPe7oCwGZi/PvMEuxuCLiIiI7NszksZh8EVERETcM9JBDL6IiIiIe0Y6iCvcExERETmIwRcRERGRgxh8ERERETmIwRcRERGRgxh8ERERETmIwRcRERGRg7jUBGUkeiXkeNJeCZmIiGiCY/BFGYm3EnI0roRMRESG0bDE3tOfYf/oalw8/RkWhiVKS0S+m+U4IaXMdxsKjhCiAsDQ0NAQKioq8t2cghRrD7AHt+zFj+uXY3H1FPM8e76IiAgAtu07if/10p8x79yfUA0VA1BwdMoX8D/Wfx7rls3Kd/NyYnh4GJWVlQBQKaUcjlePPV+UkXgrIS+unoJlcyrz0CIiIipU2/adxG9f+Bd0lb2A2ZMGzPMnLlbjH164G7j7uxMmAEsFE+6JiIjINqNhiT/89mf450nPYuZiL/CdXqDlOPCdXsxc7MU/T3oWf/jtzzAaLp6ROEd6voQQTQBU/VCRUrZne0225URERGS/Xf1n8MDoL4ArbkHJXS8CJXq/z7yVKLnrRYRfvAsPHP4ldvXfh9VXVOe1rU6xvedLD4IgpeyQUnYACAohAtlck205EREROWP0g3/HbDmAkusfHgu8DCUlKLn+IcyWpzH6wb/np4F54MSwYwuADuNAStkLoCHLa7ItJyIiIgdUC1X/4uo4Fa6OrFcEbA2+hBAeaEN+aowyXybXZFse53uWCSEqjAeA8oQ/GBEREaVkkWeR9sXA+7Er6OfNekXA7p4vT5zzKgAlw2uyLY+lBcCQ5XEsTj0iIiJKQ+nffhmffm4uwm8+BYTDkYXhMMJvPo1PPzcXpX/75fw0MA/yNdtxEEBVjq/JprwVQKXlMTfNthEREVEsJaW47LZWiEOvIvziXcDRXcCFEeDoLoRfvAvi0Ku47LZWoKQ03y11TL7W+Uo38ErlmozLpZQXAJgrhgpRfKvtEhER2aZmPcSdvwJeewz4aa15WigLtPM16/PYOOfZ3fMVinNeSVCW7JpsyynHRsMS7x1TAQDvHVOLaq0WIiJKUc16iAf24viaVgDA8TWtEA/sKbrAC7A5+JJShgCoehJ8dFlvJtdkW57Jz0Hxbdt3EmvatuPRrfsAAI9u3Yc1bduxbd/JPLeMiIgKTkkpPp1xDQBoz0U01GjlRM5XKwBzlqEQwg/LMhBCCI+xLleq1+SgnHJg276TuP/XQZwcOh9x/tTQedz/6yADMCIiohhsD770leUVIYRfD4JWSikbLVV8ABrTuSbbcsreaFji8ZcPINYAo3Hu8ZcPcAiSiIgoiiMJ91Fb+3RHlXUgRq9UomtyUU7Z2XVkcFyPl5UEcHLoPHYdGcTqRdOcaxgREVGB48balJGBkfiBVyb1iIiIigWDL8pIdfnknNYjIiIqFgy+KCOrpv8Vs6aUIN6KaALArCmlWDX9r042i4iIqOAx+KKMlAZ/gY0XngYgIRC5XYR2LLHxwlMoDf4iH80jIiIqWPla4Z7cbsW3se7KW/Hc4U/x+JsqTp4bC8BmTrkUG6+vxLrFTwHlM/PYSCIiosLD4IsyUz4TKJ+JdbOB2jUSW3t34NKdT+Li2kdwh+8GlJZwiyYiIqJYGHxR1kpLBJZffgkWl76Nw5dfwsCLiIgoAQZfREREZJuB4fMYGLlgHp8Z/BSLARwd/BTnjw+Z56vLy1BdURwz5Bl8ERERkW2ef+cjPPv6IfN4qTiCG8uAp177L+x/dWxG/IabrsD3a5fko4mOY/BFREREtvm7pWW4vbrSPC5TpwBvAP+ybgouKGPnlRll+WheXjD4IiIiIttM/68XMH3Hk+POz3tjQ+SJGx4BZrc41Kr8YvBF2QuP4rIz7wGA9hxeDZSU5rlRRERUEFZ8G7jy1uT1imhpIiGlzHcbCo4QogLA0NDQECoqKvLdnMJ24CXgtccA9aOxc8p84OYfATXr89cuIiIihw0PD6OyshIAKqWUw/HqcYV7ytyBl4DOe4HqpcB3eoGW49pz9VLt/IGX8t1CIiKigsOerxjY85XcgPoJlJ9eh0tnLYX45otAiSWOD4chN9+FiycPQP3Of6Ba+Vz+GkpEROQQ9nyRrXb0voRJI0ch1j4cGXgBQEkJxNqHMGnkI+zoZe8XERGRFYMvysjN8/Ue0+qrY1fQz5v1iIiICACDL8pQ5Yx52hcD78euoJ836xEREREABl+UqQVf0mY17nwaCIcjy8JhYOczgLJAq0dEREQmBl+UmZJSbTmJg9uAzXcDR3cBF0a05813a+dvfoLrfREREUXhbMcYONsxDTHX+VqgBV5c54uIiIpIqrMducI9ZadmPXDVbUDwV8ArDwJf/THgvZc9XkRERHFw2JGyV1IKzL5W+3r2tQy8iIiIEmDwRUREROQgBl9EREREDmLwRUREROQg2xPuhRBNAFT9UJFStmd7TYrlALAIAKSUjZm0nYiIiCjXbA2+jCBIStmhH/uEEIFEwVCya1Iob5NSNlvuFxBC9Egpa+35KYvUyCntYfj4YOSzoXym9iAiIiIANq/zJYQ4C2ChlFK1nJNSSpHpNYnKhRAKgC4AdUa5EMILoA/AIillKMV2c52vZN5oBXY8mbzeDY8AN7bY3x4iIqI8y/s6X0IID7QhQTVGmU9K2ZvuNQBCScp3A1gBwAMgqBcZAZeSyc9Bcaz4NnDlrcnrsdeLiIgogp3Djp4451XED4SSXZOwXA/KpkaV+fTnuL1eQogyAGWWU+Xx6pKOw4lEREQZycdsx0EAVTm+JlF5C4DGWL1lUXWGLI9jabaPiIiIKCUp93wJIfwA6lOo2iqlDCYoTzfwSuWamOVCiDYAW4zk/ARaATxjOS4HAzAiIiKyQcrBl5SyG0B3GveON8ynJChLdk3K99SDxf4UAi9IKS8AuGC5NtklRERERBmxbdhRn1mo6kn00WXjku1TuSbVe+rJ99blKJRY1xARERE5ze6cr1aMJbwbvVEdlmOPZUHUlK5J4Z5eAF4AQf3+HgAN0PLCiIiIiPLK1nW+AHNRVGNIcGXUAqgNAJqllItSvSZRub7O1xHEmE2ZaG2xGG3mOl9ERESUllTX+bI9+HIjBl9ERESUrlSDL26sTUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROQgBl9EREREDmLwRUREROSgS+z+BkKIJgCqfqhIKduzvSadewoheqSUtWk2m4iIiMgWtvZ86UESpJQdUsoOAEEhRCCba9K5pxDCD8CXm5+GiIiIKHtCSmnfzYU4C2ChlFK1nJNSSpHpNaneUwihALgTQCDR94vThgoAQ0NDQ6ioqEjnUiIiIipSw8PDqKysBIBKKeVwvHq29XwJITzQhgTVGGUxe6OSXZPmPe8E0JliW8uEEBXGA0B5KtcRERERpcvOYUdPnPMqACXDa1K6px6I9SZsXaQWAEOWx7E0riUiIiJKWT5mOw4CqMrxNdHlipQylMb9WwFUWh5z02wfERERUUpSnu2oJ6/Xp1C1VUoZTFCebuCVyjVmuRCiQU/ET5mU8gKAC5Z7pNc6IiIiohSlHHxJKbsBdKdx73g9T0qCsmTXJCwXQngB7E6teURERETOs22dLyllSAihCiE80UOAUsqY+VipXJOoXM/18lqS7xfp1zQBCOkBJBEREVHe2J3z1QrLOlv60GWH5dhjrNuV6jWJyqWUvVLKduMBIKCfb2fgRURERIXA1uBLD4AUIYRfD5JWSikbLVV8ABrTuSaFewIwg7IW/eu2eMtbEBERETnJ1kVW3YqL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\n", "text/plain": [ "
" ] @@ -210,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -243,12 +263,12 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -263,98 +283,6 @@ "am_pcac_impr.show(comp=am_pcac, plateau=pcac_plateau)" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Refined error analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are two way of adjusting the value of S. One can either change the class variable `Obs.S_global`. The set value is then used for all following applications of the `gamma_method`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result\t 5.03431904e-03 +/- 5.38835422e-04 +/- 8.24919899e-05 (10.703%)\n", - " t_int\t 5.15384615e-01 +/- 1.25000000e-01 S = 3.00\n", - "64 samples in 1 ensemble:\n", - " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" - ] - } - ], - "source": [ - "pe.Obs.S_global = 3.0\n", - "pcac_plateau.gamma_method()\n", - "pcac_plateau.details()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively one can call the gamma_method with the keyword argument S. This value overwrites the global value only for the current application of the `gamma_method`." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result\t 5.03431904e-03 +/- 5.38835422e-04 +/- 8.24919899e-05 (10.703%)\n", - " t_int\t 5.15384615e-01 +/- 1.25000000e-01 S = 2.50\n", - "64 samples in 1 ensemble:\n", - " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" - ] - } - ], - "source": [ - "pcac_plateau.gamma_method(S=2.5)\n", - "pcac_plateau.details()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`pyerrors` also supports the critical slowing down analysis of arXiv:1009.5228" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result\t 5.03431904e-03 +/- 7.82447810e-04 +/- 1.19787368e-04 (15.542%)\n", - " t_int\t 1.08675071e+00 +/- 1.63643098e+00 tau_exp = 10.00, N_sigma = 1\n", - "64 samples in 1 ensemble:\n", - " · Ensemble 'test_ensemble' : 64 configurations (from 1 to 64)\n" - ] - } - ], - "source": [ - "pcac_plateau.gamma_method(tau_exp=10)\n", - "pcac_plateau.details()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -364,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -388,12 +316,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If everything is satisfactory, save the `Obs` in a file for future use. The `Obs` `pcac_plateau` conatains all relevant information for any follow up analyses." + "If everything is satisfactory we can save the `Obs` in a file for future use. The `Obs` `pcac_plateau` conatains all relevant information for any follow up analyses." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ diff --git a/examples/04_fit_example.ipynb b/examples/04_fit_example.ipynb index ac3ae148..3fe8fabc 100644 --- a/examples/04_fit_example.ipynb +++ b/examples/04_fit_example.ipynb @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -127,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -161,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -178,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -212,12 +212,12 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { - "image/png": "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uU7/crvU5LGHo9B7/si76zKWK3nPoz5cveotbK/ocNXS0kLLFQLzmfCi7rslGSoWrdX4L6/pW2eu6nd3rlb3TavSH9ihZqP1Ld67ik6cu6pnTueOEYpflp45Lf3xPWu1Z4v3t/aitRqduCTlvb4p6W9jRg9sX+f5Sya7/MkPr0i6osmFNbqjc01F5axfL7lHq7Qkrkma160dLbq1fVXZ5RXSciVZbvLzofJy/T5P8/GrkkqPDZtXs9av91ZuEL/TIMoM4rm//tE1xS8Xn29qZkF6b75Fd232Vm/3e76Yct/zqB8XL170tN+KDldAkEItTQq1JL9kn3v9smYWkh+63zpzVf/w/jU9dld5X65SMqg893rxrpT/8sbljPBWys+nF9N1K2R63urn04uev2Qc2c/9G6ev6P+duFrRc28kQZyn9mZ/96uGRWt1JnFNknQmcU072poqCtZBPPdEidd8uftJ19/zANEZCNCJc1f1568u5ISXmQWrP391QSfOlTeWqZwg5FUQXzKS/8+9kQRxnn61o0mbSoSHjhajX+2o7GM9OwgtLnE87olzV/Unf39J3zid7M/7xukr+pO/v1TReQ/iuTdiWEXjqMqfjsaYAUnx1GLIWnvY4zGS1CVJ1tr+pZYJFBKfX1TcQ3gINRuFPDbnB9F6EUQQCuJLJojn3kiCOE9Nxuixu9bqz18t3D32+3eurej36XcLoxOssznB+o/vUVnlBvHcncBWLAQvJaxiZQs8XDkhyVo7klqOGGOGs8NS1jFD1tpB1/KwMWbMWttTaZn5/M3f/E3JMVednZ165JFHMtY9//zzmpqaKln+nj17dO+996aXL1++rK9//eue6vZ7v/d72rJlS3p5YmJC0Wi05HFr1qzRH/zBH2Ss+/73v6833nij5LHhcFg9PT0Z65599tn0ZeTFfOITn9Bdd92VXp6entaxY8dKHidJjz32mDZuvD730Wuvvaaf/OQnJY/btGmTHn300Yx13/72t3X27NmSx95999164IEH0ssvv3dVf/2XIyWPuz3UpC889rC2b9+eXvfee+/p7/7u73L2TTTfpJktPTnr3abnrf7TN76p9oVfFt1v27Zt+p3f+R3PAecH3/2W/nuqzAceeEB33313etv58+f13HPPpZetjNbe8q90edV6qcCXk/Ml8/rrr+sHP/hBycdfCP2KZto/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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -248,18 +248,18 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(Obs[-0.37(35)], Obs[0.61(25)])\n", - "(Obs[1.40(35)], Obs[0.92(25)])\n", - "(Obs[3.83(35)], Obs[-1.38(25)])\n", - "(Obs[6.39(35)], Obs[-1.58(25)])\n", - "(Obs[8.69(35)], Obs[-0.62(25)])\n" + "(Obs[0.57(35)], Obs[0.49(25)])\n", + "(Obs[2.53(35)], Obs[0.56(25)])\n", + "(Obs[4.17(35)], Obs[-1.52(25)])\n", + "(Obs[5.97(35)], Obs[-1.40(25)])\n", + "(Obs[7.82(35)], Obs[-0.58(25)])\n" ] } ], @@ -283,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -301,7 +301,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -311,10 +311,10 @@ "Fit with 3 parameters\n", "Method: ODR\n", "Sum of squares convergence\n", - "Residual variance: 2.605726458598027\n", - "Parameter 1 : 0.37(34)\n", - "Parameter 2 : -0.254(62)\n", - "Parameter 3 : 1.13(27)\n" + "Residual variance: 0.4144435658518591\n", + "Parameter 1 : 0.26(28)\n", + "Parameter 2 : -0.228(53)\n", + "Parameter 3 : 0.98(22)\n" ] } ], @@ -335,12 +335,12 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -369,7 +369,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -386,7 +386,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -396,7 +396,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -406,7 +406,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] From af95667ffbcba8b951ef72ee1d73bc985301bcd1 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 6 Jan 2022 18:02:04 +0100 Subject: [PATCH 174/220] feat: example 3 improved --- examples/03_pcac_example.ipynb | 51 +++++++++++++++------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/examples/03_pcac_example.ipynb b/examples/03_pcac_example.ipynb index ae605aaf..9b163317 100644 --- a/examples/03_pcac_example.ipynb +++ b/examples/03_pcac_example.ipynb @@ -25,14 +25,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Primary observables" + "In this example we look at the analysis of the current quark mass (PCAC mass) on a test gauge field ensemble with fixed Schrödinger functional boundary conditions in the temporal direction." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can load data from preprocessed files which contains lists of `pyerror` `Obs` and convert them to `Corr` objects. We use the parameters `padding_front` and `padding_back` to keep track of the fixed boundary conditions at both temporal ends of the lattice." + "## Loading data" + ] + }, + { + "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." ] }, { @@ -107,7 +114,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For the PCAC mass we now need to obtain the first derivative of f_A and the second derivative of f_P" + "The PCAC mass is defined as\n", + "\\begin{align*}\n", + "am(x_0)=\\frac{a\\tilde{\\partial}_0 f_\\mathrm{A}(x_0)+a^2c_\\mathrm{A}\\partial_0^{\\ast}\\partial_0^{}f_\\mathrm{P}(x_0)}{2f_\\mathrm{P}(x_0)}+\\mathrm{O}(a^2)\\,.\n", + "\\end{align*}\n", + "\n", + "We now need to obtain the first derivative of f_A and the second derivative of f_P" ] }, { @@ -176,26 +188,6 @@ "cell_type": "code", "execution_count": 9, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "24" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "am_pcac_impr.T" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, "outputs": [ { "data": { @@ -230,7 +222,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -263,7 +255,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -292,8 +284,10 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, + "execution_count": 12, + "metadata": { + "scrolled": false + }, "outputs": [ { "data": { @@ -321,10 +315,11 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ + "pcac_plateau.tag = \"O(a) improved PCAC mass extracted on the test ensemble\"\n", "pe.input.json.dump_to_json(pcac_plateau, \"pcac_plateau_test_ensemble\")" ] }, From cd0f38c77db57fd09ef3b6326ddc53923be938c6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 7 Jan 2022 11:59:06 +0100 Subject: [PATCH 175/220] ci: macOS and windows added to pytest workflow --- .github/workflows/pytest.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 0f3ae2f3..febcfcf3 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -11,11 +11,17 @@ on: jobs: pytest: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: - fail-fast: true + fail-fast: true matrix: + os: [ubuntu-latest] python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"] + include: + - os: macos-latest + python-version: 3.9 + - os: windows-latest + python-version: 3.9 steps: - name: Checkout source From 88572c06a87933f14e831be8d7fd7ef8942d9e38 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 7 Jan 2022 12:08:27 +0100 Subject: [PATCH 176/220] fix: DeprecationWarning in Corr.reweighted fixed --- pyerrors/correlators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 6759a49c..7f318976 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -74,7 +74,7 @@ class Corr: @property def reweighted(self): - bool_array = np.array([list(map(lambda x: x.reweighted, o)) for o in list(filter(None.__ne__, self.content))]) + bool_array = np.array([list(map(lambda x: x.reweighted, o)) for o in [x for x in self.content if x is not None]]) if np.all(bool_array == 1): return True elif np.all(bool_array == 0): From 53f727092d46113e2d4a335bfdc85b5393227be3 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Mon, 10 Jan 2022 11:45:42 +0100 Subject: [PATCH 177/220] small bug fix enabling older versions of python --- pyerrors/input/sfcf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 5095e3ce..af14041b 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -137,7 +137,8 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = ls = list(set(ls) - set([exc])) ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) for entry in ls: - myentry = entry.removesuffix("."+name) + myentry = entry[:-len(name)-1] + print(myentry) try: idx = myentry.index('r') except: From 5b831ec250e370a0dcc492a01f8303b74c6340ce Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 10 Jan 2022 15:00:47 +0100 Subject: [PATCH 178/220] feat: p-value calculation added to fit functions and fit result object --- pyerrors/fits.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 0cb704ec..5da1e12c 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -7,6 +7,7 @@ import scipy.stats import matplotlib.pyplot as plt from matplotlib import gridspec from scipy.odr import ODR, Model, RealData +from scipy.stats import chi2 import iminuit from autograd import jacobian from autograd import elementwise_grad as egrad @@ -45,6 +46,8 @@ class Fit_result(Sequence): my_str += 'residual variance = ' + f'{self.residual_variance:2.6f}' + '\n' if hasattr(self, 'chisquare_by_expected_chisquare'): my_str += '\u03C7\u00b2/\u03C7\u00b2exp = ' + f'{self.chisquare_by_expected_chisquare:2.6f}' + '\n' + if hasattr(self, 'p_value'): + my_str += 'p-value = ' + f'{self.p_value:2.4f}' + '\n' my_str += 'Fit parameters:\n' for i_par, par in enumerate(self.fit_parameters): my_str += str(i_par) + '\t' + ' ' * int(par >= 0) + str(par).rjust(int(par < 0.0)) + '\n' @@ -306,6 +309,7 @@ def total_least_squares(x, y, func, silent=False, **kwargs): output.odr_chisquare = odr_chisquare(np.concatenate((out.beta, out.xplus.ravel()))) output.dof = x.shape[-1] - n_parms + output.p_value = 1 - chi2.cdf(output.odr_chisquare, output.dof) return output @@ -619,6 +623,7 @@ def _standard_fit(x, y, func, silent=False, **kwargs): output.chisquare = chisqfunc(fit_result.x) output.dof = x.shape[-1] - n_parms + output.p_value = 1 - chi2.cdf(output.chisquare, output.dof) if kwargs.get('resplot') is True: residual_plot(x, y, func, result) From 5cb329116897298d0f1c0b7068a9817035c371e7 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 10 Jan 2022 15:17:55 +0100 Subject: [PATCH 179/220] feat: Automated Kolmogorov Smirnov test for fit p-values added --- pyerrors/fits.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/pyerrors/fits.py b/pyerrors/fits.py index 5da1e12c..cad4c0d8 100644 --- a/pyerrors/fits.py +++ b/pyerrors/fits.py @@ -1,3 +1,4 @@ +import gc from collections.abc import Sequence import warnings import numpy as np @@ -745,3 +746,43 @@ def error_band(x, func, beta): err = np.array(err) return err + + +def ks_test(objects=None): + """Performs a Kolmogorov–Smirnov test for the p-values of all fit object. + + Parameters + ---------- + objects : list + List of fit results to include in the analysis (optional). + """ + + if objects is None: + obs_list = [] + for obj in gc.get_objects(): + if isinstance(obj, Fit_result): + obs_list.append(obj) + else: + obs_list = objects + + p_values = [o.p_value for o in obs_list] + + bins = len(p_values) + x = np.arange(0, 1.001, 0.001) + plt.plot(x, x, 'k', zorder=1) + plt.xlim(0, 1) + plt.ylim(0, 1) + plt.xlabel('p-value') + plt.ylabel('Cumulative probability') + plt.title(str(bins) + ' p-values') + + n = np.arange(1, bins + 1) / np.float64(bins) + Xs = np.sort(p_values) + plt.step(Xs, n) + diffs = n - Xs + loc_max_diff = np.argmax(np.abs(diffs)) + loc = Xs[loc_max_diff] + plt.annotate('', xy=(loc, loc), xytext=(loc, loc + diffs[loc_max_diff]), arrowprops=dict(arrowstyle='<->', shrinkA=0, shrinkB=0)) + plt.draw() + + print(scipy.stats.kstest(p_values, 'uniform')) From 6174343de615f7d68cabcb13919b38e856c98427 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 10 Jan 2022 15:24:43 +0100 Subject: [PATCH 180/220] test: test for ks_test added --- tests/fits_test.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/fits_test.py b/tests/fits_test.py index 8a1759cb..48012edb 100644 --- a/tests/fits_test.py +++ b/tests/fits_test.py @@ -309,6 +309,25 @@ def test_error_band(): pe.fits.error_band(x, f, fitp.fit_parameters) +def test_ks_test(): + def f(a, x): + y = a[0] + a[1] * x + return y + + fit_res = [] + + for i in range(20): + data = [] + for j in range(10): + data.append(pe.pseudo_Obs(j + np.random.normal(0.0, 0.25), 0.25, 'test')) + my_corr = pe.Corr(data) + + fit_res.append(my_corr.fit(f, silent=True)) + + pe.fits.ks_test() + pe.fits.ks_test(fit_res) + + def fit_general(x, y, func, silent=False, **kwargs): """Performs a non-linear fit to y = func(x) and returns a list of Obs corresponding to the fit parameters. From 6d6d32e0c5126e1f0c109d1fc5aeeeb0c1ea051c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 10 Jan 2022 15:28:27 +0100 Subject: [PATCH 181/220] refactor!: minimal python version bumped to 3.7 --- .github/workflows/pytest.yml | 2 +- README.md | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index febcfcf3..4c074906 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -16,7 +16,7 @@ jobs: fail-fast: true matrix: os: [ubuntu-latest] - python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"] + python-version: ["3.7", "3.8", "3.9", "3.10"] include: - os: macos-latest python-version: 3.9 diff --git a/README.md b/README.md index cb19a814..54382571 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![flake8](https://github.com/fjosw/pyerrors/actions/workflows/flake8.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/flake8.yml) [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![docs](https://github.com/fjosw/pyerrors/actions/workflows/docs.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/docs.yml) [![](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![flake8](https://github.com/fjosw/pyerrors/actions/workflows/flake8.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/flake8.yml) [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![docs](https://github.com/fjosw/pyerrors/actions/workflows/docs.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/docs.yml) [![](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) # pyerrors `pyerrors` is a python package for error computation and propagation of Markov chain Monte Carlo data. diff --git a/setup.py b/setup.py index 5a971d92..9d331cd1 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,6 @@ setup(name='pyerrors', author='Fabian Joswig', author_email='fabian.joswig@ed.ac.uk', packages=find_packages(), - python_requires='>=3.6.0', + python_requires='>=3.7.0', install_requires=['numpy>=1.16', 'autograd @ git+https://github.com/HIPS/autograd.git', 'numdifftools', 'matplotlib>=3.3', 'scipy', 'iminuit>=2', 'h5py'] ) From 1765d4e6b6ad1521a5666b1072a21dd252967d41 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 11 Jan 2022 16:41:28 +0100 Subject: [PATCH 182/220] refactor: required python version changed back to 3.6 for transition period --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9d331cd1..5a971d92 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,6 @@ setup(name='pyerrors', author='Fabian Joswig', author_email='fabian.joswig@ed.ac.uk', packages=find_packages(), - python_requires='>=3.7.0', + python_requires='>=3.6.0', install_requires=['numpy>=1.16', 'autograd @ git+https://github.com/HIPS/autograd.git', 'numdifftools', 'matplotlib>=3.3', 'scipy', 'iminuit>=2', 'h5py'] ) From 302a7ae439b2ce93862201dfa4bc2437a2ec3af8 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Fri, 14 Jan 2022 16:00:40 +0100 Subject: [PATCH 183/220] flake8 compliance --- pyerrors/input/sfcf.py | 277 +++++++++++++++++++++++++---------------- 1 file changed, 168 insertions(+), 109 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index af14041b..c58c0dd2 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -8,39 +8,55 @@ import numpy as np # Thinly-wrapped numpy from ..obs import Obs from . import utils -def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = "1.0c", **kwargs): + +def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, + version="1.0c", **kwargs): """Read sfcf c format from given folder structure. Parameters ---------- quarks: str Label of the quarks used in the sfcf input file. e.g. "quark quark" - for version 0.0 this does NOT need to be given with the typical " - " that is present in the output file, + for version 0.0 this does NOT need to be given with the typical " - " + that is present in the output file, this is done automatically for this version noffset: int Offset of the source (only relevant when wavefunctions are used) wf: int ID of wave function wf2: int - ID of the second wavefunction (only relevant for boundary-to-boundary correlation functions) + ID of the second wavefunction + (only relevant for boundary-to-boundary correlation functions) im: bool - if True, read imaginary instead of real part of the correlation function. + if True, read imaginary instead of real part + of the correlation function. b2b: bool - if True, read a time-dependent boundary-to-boundary correlation function + if True, read a time-dependent boundary-to-boundary + correlation function single: bool - if True, read time independent boundary to boundary correlation function + if True, read time independent boundary to boundary + correlation function names: list - Alternative labeling for replicas/ensembles. Has to have the appropriate length + Alternative labeling for replicas/ensembles. + Has to have the appropriate length ens_name : str replaces the name of the ensemble version: str - version of SFCF, with which the measurement was done. if the compact output option (-c) was spectified, append a c to the version (e.g. "1.0c") + version of SFCF, with which the measurement was done. + if the compact output option (-c) was spectified, + append a "c" to the version (e.g. "1.0c") + if the append output option (-a) was specified, + append an "a" to the version replica: list list of replica to be read, default is all files: list - list of files to be read per replica, default is all. for non-conpact ouztput format, hand the folders to be read here. + list of files to be read per replica, default is all. + for non-conpact ouztput format, hand the folders to be read here. check_configs: - list of list of supposed configs, eg. [range(1,1000)] for one replicum with 1000 configs + list of list of supposed configs, eg. [range(1,1000)] + for one replicum with 1000 configs + TODO: + - whats going on with files here? """ if kwargs.get('im'): im = 1 @@ -63,15 +79,17 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = if "files" in kwargs: files = kwargs.get("files") - #due to higher usage in current projects, compact file format is default + # due to higher usage in current projects, + # compact file format is default compact = True appended = False - #get version string - known_versions = ["0.0","1.0","2.0","1.0c","2.0c","1.0a","2.0a"] + # get version string + known_versions = ["0.0", "1.0", "2.0", "1.0c", "2.0c", "1.0a", "2.0a"] - if not version in known_versions: + if version not in known_versions: raise Exception("This version is not known!") - #if the letter c is appended to the version, the compact fileformat is used (former read_sfcf_c) + # if the letter c is appended to the version, + # the compact fileformat is used (former read_sfcf_c) if(version[-1] == "c"): appended = False compact = True @@ -103,15 +121,19 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = if not fnmatch.fnmatch(exc, prefix + '*'): ls = list(set(ls) - set([exc])) if len(ls) > 1: - ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) # New version, to cope with ids, etc. + # New version, to cope with ids, etc. + ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) + if not appended: replica = len(ls) else: - replica = len([l.split(".")[-1] for l in ls])//len(set([l.split(".")[-1] for l in ls])) - print('Read', part, 'part of', name, 'from', prefix[:-1], ',', replica, 'replica') + replica = len([file.split(".")[-1] for file in ls])\ + // len(set([file.split(".")[-1] for file in ls])) + print('Read', part, 'part of', name, 'from', prefix[:-1], + ',', replica, 'replica') if 'names' in kwargs: new_names = kwargs.get('names') - if len(new_names)!=len(set(new_names)): + if len(new_names) != len(set(new_names)): raise Exception("names are not unique!") if len(new_names) != replica: raise Exception('Names does not have the required length', replica) @@ -123,32 +145,36 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = for entry in ls: try: idx = entry.index('r') - except: - raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") - + except Exception: + raise Exception("Automatic recognition of replicum failed, \ + please enter the key word 'names'.") + if 'ens_name' in kwargs: - new_names.append(kwargs.get('ens_name') + '|' + entry[idx:]) + new_names.append(kwargs.get('ens_name') + '|' + + entry[idx:]) else: new_names.append(entry[:idx] + '|' + entry[idx:]) else: - + for exc in ls: if not fnmatch.fnmatch(exc, prefix + '*.'+name): ls = list(set(ls) - set([exc])) ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) for entry in ls: myentry = entry[:-len(name)-1] - print(myentry) + # print(myentry) try: idx = myentry.index('r') - except: - raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") - + except Exception: + raise Exception("Automatic recognition of replicum failed, \ + please enter the key word 'names'.") + if 'ens_name' in kwargs: - new_names.append(kwargs.get('ens_name') + '|' + myentry[idx:]) + new_names.append(kwargs.get('ens_name') + '|' + + myentry[idx:]) else: new_names.append(myentry[:idx] + '|' + myentry[idx:]) - #print(new_names) + # print(new_names) idl = [] if not appended: for i, item in enumerate(ls): @@ -157,24 +183,26 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = sub_ls = kwargs.get("files") sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) else: - for (dirpath, dirnames, filenames) in os.walk(path + '/' + item): + for (dirpath, dirnames, filenames) in \ + os.walk(path + '/' + item): if compact: sub_ls.extend(filenames) else: sub_ls.extend(dirnames) break - - #print(sub_ls) - for exc in sub_ls: + + # print(sub_ls) + for exc in sub_ls: if compact: if not fnmatch.fnmatch(exc, prefix + '*'): sub_ls = list(set(sub_ls) - set([exc])) - sub_ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + sub_ls.sort(key=lambda x: + int(re.findall(r'\d+', x)[-1])) else: if not fnmatch.fnmatch(exc, 'cfg*'): sub_ls = list(set(sub_ls) - set([exc])) sub_ls.sort(key=lambda x: int(x[3:])) - #print(sub_ls) + # print(sub_ls) rep_idl = [] no_cfg = len(sub_ls) for cfg in sub_ls: @@ -183,54 +211,73 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = rep_idl.append(int(cfg.split("n")[-1])) else: rep_idl.append(int(cfg[3:])) - except: - raise Exception("Couldn't parse idl from directroy, problem with file "+cfg) + except Exception: + raise Exception("Couldn't parse idl from directroy, \ + problem with file "+cfg) rep_idl.sort() - #maybe there is a better way to print the idls + # maybe there is a better way to print the idls print(item, ':', no_cfg, ' configurations') idl.append(rep_idl) - #here we have found all the files we need to look into. + # here we have found all the files we need to look into. if i == 0: - #here, we want to find the place within the file, where the correlator we need is stored. + # here, we want to find the place within the file, + # where the correlator we need is stored. if compact: - #to do so, the pattern needed is put together from the input values - pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) + # to do so, the pattern needed is put together + # from the input values + pattern = 'name ' + name + '\nquarks '\ + + quarks + '\noffset '\ + + str(noffset) + '\nwf '\ + + str(wf) if b2b: pattern += '\nwf_2 ' + str(wf2) - #and the file is parsed through to find the pattern - with open(path + '/' + item + '/' + sub_ls[0], 'r') as file: + # and the file is parsed through to find the pattern + with open(path + '/' + item + '/' + sub_ls[0], 'r') \ + as file: content = file.read() match = re.search(pattern, content) if match: - #the start and end point of the correlator in quaetion is extracted for later use in the other files - start_read = content.count('\n', 0, match.start()) + 5 + b2b - end_match = re.search(r'\n\s*\n', content[match.start():]) - T = content[match.start():].count('\n', 0, end_match.start()) - 4 - b2b + # the start and end point of the correlator + # in quaetion is extracted for later use in + # the other files + start_read = content.count('\n', 0, match.start())\ + + 5 + b2b + end_match = re.search(r'\n\s*\n', + content[match.start():]) + T = content[match.start():]\ + .count('\n', 0, end_match.start()) - 4 - b2b assert T > 0 - print(T, 'entries, starting to read in line', start_read) + print(T, 'entries, starting to read in line', + start_read) else: - raise Exception('Correlator with pattern\n' + pattern + '\nnot found.') + raise Exception('Correlator with pattern\n' + + pattern + '\nnot found.') else: - #this part does the same as above, but for non-compactified versions of the files - with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: + # this part does the same as above, + # but for non-compactified versions of the files + with open(path + '/' + item + '/' + sub_ls[0] + '/' + + name) as fp: for k, line in enumerate(fp): if version == "0.0": - #check if this is really the right file by matchin pattern similar to above - pattern = "# "+name+" : offset "+str(noffset)+", wf "+str(wf) - #if b2b, a second wf is needed + # check if this is really the right file + # by matching pattern similar to above + pattern = "# "+name+" : offset "+str(noffset)\ + + ", wf "+str(wf) + # if b2b, a second wf is needed if b2b: - pattern+=", wf_2 "+str(wf2) + pattern += ", wf_2 "+str(wf2) qs = quarks.split(" ") - pattern+=" : "+qs[0]+" - "+qs[1] - #print(pattern) - if read == 1 and not line.strip() and k > start + 1: + pattern += " : " + qs[0]+" - " + qs[1] + # print(pattern) + if read == 1 and not line.strip() \ + and k > start + 1: break if read == 1 and k >= start: T += 1 if version == "0.0": if pattern in line: - #print(line) + # print(line) read = 1 start = k+1 else: @@ -239,121 +286,133 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version = start = k + 7 + b2b T -= b2b print(str(T)+" entries found.") - #we found where the correlator that is to be read is in the files - #after preparing the datastructure the correlators get parsed into... + # we found where the correlator + # that is to be read is in the files + # after preparing the datastructure + # the correlators get parsed into... deltas = [] for j in range(T): deltas.append([]) - - + for t in range(T): deltas[t].append(np.zeros(no_cfg)) - #... the actual parsing can start. we iterate through all measurement files in the path given... + # ...the actual parsing can start. + # we iterate through all measurement files in the path given... if compact: for cfg in range(no_cfg): with open(path + '/' + item + '/' + sub_ls[cfg]) as fp: lines = fp.readlines() - #check, if the correlator is in fact printed completely - if(start_read + T>len(lines)): - raise Exception("EOF before end of correlator data! Maybe "+path + '/' + item + '/' + sub_ls[cfg]+" is corrupted?") - #and start to read the correlator. - #the range here is chosen like this, since this allows for implementing a security check for every read correlator later... - for k in range(start_read - 6,start_read + T): + # check, if the correlator is in fact + # printed completely + if(start_read + T > len(lines)): + raise Exception("EOF before end of correlator data! \ + Maybe "+path + '/' + item + '/' + sub_ls[cfg]+" \ + is corrupted?") + # and start to read the correlator. + # the range here is chosen like this, + # since this allows for implementing + # a security check for every read correlator later... + for k in range(start_read - 6, start_read + T): if k == start_read - 5 - b2b: if lines[k].strip() != 'name ' + name: - raise Exception('Wrong format', sub_ls[cfg]) + raise Exception('Wrong format', + sub_ls[cfg]) if(k >= start_read and k < start_read + T): floats = list(map(float, lines[k].split())) - deltas[k - start_read][i][cfg] = floats[-2:][im] + deltas[k - start_read][i][cfg] = \ + floats[-2:][im] else: for cnfg, subitem in enumerate(sub_ls): - with open(path + '/' + item + '/' + subitem + '/' + name) as fp: - #since the non-compatified files are typically not so long, we can iterate over the whole file. - #here one can also implement the chekc from above. + with open(path + '/' + item + '/' + subitem + + '/' + name) as fp: + # since the non-compatified files + # are typically not so long, + # we can iterate over the whole file. + # here one can also implement the chekc from above. for k, line in enumerate(fp): if(k >= start and k < start + T): floats = list(map(float, line.split())) if version == "0.0": deltas[k-start][i][cnfg] = floats[im] else: - deltas[k - start][i][cnfg] = floats[1 + im - single] - + deltas[k - start][i][cnfg] = \ + floats[1 + im - single] + else: for exc in ls: if not fnmatch.fnmatch(exc, prefix + '*.'+name): ls = list(set(ls) - set([exc])) ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) - #print(ls) - pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) + # print(ls) + pattern = 'name ' + name + '\nquarks '\ + + quarks + '\noffset ' + str(noffset)\ + + '\nwf ' + str(wf) if b2b: pattern += '\nwf_2 ' + str(wf2) - for rep,file in enumerate(ls): + for rep, file in enumerate(ls): rep_idl = [] with open(path + '/' + file, 'r') as fp: content = fp.readlines() data_starts = [] - for l,line in enumerate(content): + for linenumber, line in enumerate(content): if "[run]" in line: - data_starts.append(l) - if len(set([data_starts[i]-data_starts[i-1] for i in range(1,len(data_starts))])) > 1: - raise Exception ("Irregularities in file structure found, not all runs have the same output length") - #print(data_starts) - #first chunk of data + data_starts.append(linenumber) + if len(set([data_starts[i]-data_starts[i-1] for i in + range(1, len(data_starts))])) > 1: + raise Exception("Irregularities in file structure found,\ + not all runs have the same output length") + # first chunk of data chunk = content[:data_starts[1]] - for l,line in enumerate(chunk): + for linenumber, line in enumerate(chunk): if line.startswith("gauge_name"): - gauge_line = l - #meta_data["gauge_name"] = (line.strip()).split("/")[-1] + gauge_line = linenumber elif line.startswith("[correlator]"): - corr_line = l + corr_line = linenumber found_pat = "" for li in chunk[corr_line+1:corr_line+6+b2b]: found_pat += li - if re.search(pattern,found_pat): + if re.search(pattern, found_pat): start_read = corr_line+7+b2b - T=len(chunk)-1-start_read + T = len(chunk)-1-start_read if rep == 0: deltas = [] for t in range(T): deltas.append([]) for t in range(T): deltas[t].append(np.zeros(len(data_starts))) - #all other chunks should follow the same structure + # all other chunks should follow the same structure for cnfg in range(len(data_starts)): start = data_starts[cnfg] stop = start+data_starts[1] chunk = content[start:stop] - #meta_data = {} - + # meta_data = {} try: rep_idl.append(int(chunk[gauge_line].split("n")[-1])) - except: - raise Exception("Couldn't parse idl from directroy, problem with chunk around line "+gauge_line) - + except Exception: + raise Exception("Couldn't parse idl from directroy, \ + problem with chunk around line "+gauge_line) + found_pat = "" for li in chunk[corr_line+1:corr_line+6+b2b]: found_pat += li - if re.search(pattern,found_pat): - #print("found pattern") - for t,line in enumerate(chunk[start_read:start_read+T]): + if re.search(pattern, found_pat): + for t, line in \ + enumerate(chunk[start_read:start_read+T]): floats = list(map(float, line.split())) deltas[t][rep][cnfg] = floats[-2:][im] idl.append(rep_idl) - #print(new_names) - #print(deltas) - #print(idl) if "check_configs" in kwargs: print("Checking for missing configs...") che = kwargs.get("check_configs") if not (len(che) == len(idl)): - raise Exception("check_configs has to be the same length as replica!") + raise Exception("check_configs has to be the same length\ + as replica!") for r in range(len(idl)): print("checking "+new_names[r]) utils.check_idl(idl[r], che[r]) print("Done") result = [] for t in range(T): - result.append(Obs(deltas[t], new_names, idl = idl)) + result.append(Obs(deltas[t], new_names, idl=idl)) return result - From 5f156e4821d95b1c0923555468086eafea59b230 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Fri, 14 Jan 2022 16:47:34 +0100 Subject: [PATCH 184/220] flake8 compliance openQCD.py --- pyerrors/input/openQCD.py | 232 ++++++++++++++++++++++---------------- pyerrors/input/sfcf.py | 19 ++-- 2 files changed, 144 insertions(+), 107 deletions(-) diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index 5c44fd2f..60ed64c7 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -8,7 +8,6 @@ import struct import numpy as np # Thinly-wrapped numpy from ..obs import Obs from ..fits import fit_lin -from . import utils def read_rwms(path, prefix, version='2.0', names=None, **kwargs): @@ -67,7 +66,8 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): else: r_stop = [None] * replica - print('Read reweighting factors from', prefix[:-1], ',', replica, 'replica', end='') + print('Read reweighting factors from', prefix[:-1], ',', + replica, 'replica', end='') # Adjust replica names to new bookmarking system if names is None: @@ -75,7 +75,8 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): for entry in ls: truncated_entry = entry.split('.')[0] idx = truncated_entry.index('r') - rep_names.append(truncated_entry[:idx] + '|' + truncated_entry[idx:]) + rep_names.append(truncated_entry[:idx] + '|' + + truncated_entry[idx:]) print_err = 0 if 'print_err' in kwargs: @@ -97,8 +98,13 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): for k in range(nrw): deltas.append([]) else: - if ((nrw != struct.unpack('i', t)[0] and (not version == '2.0')) or (nrw != struct.unpack('i', t)[0] / 2 and version == '2.0')): # little weird if-clause due to the /2 operation needed. - raise Exception('Error: different number of reweighting factors for replicum', rep) + # little weird if-clause due to the /2 operation needed. + if ((nrw != struct.unpack('i', t)[0] and + (not version == '2.0')) or + (nrw != struct.unpack('i', t)[0] / 2 and + version == '2.0')): + raise Exception('Error: different number of reweighting\ + factors for replicum', rep) for k in range(nrw): tmp_array.append([]) @@ -109,7 +115,8 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): for i in range(nrw): t = fp.read(4) nfct.append(struct.unpack('i', t)[0]) - # print('nfct: ', nfct) # Hasenbusch factor, 1 for rat reweighting + # print('nfct: ', nfct) # Hasenbusch factor, + # 1 for rat reweighting else: for i in range(nrw): nfct.append(1) @@ -138,8 +145,11 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): for j in range(tmpd['n'][0]): tmp_nfct *= np.mean(np.exp(-np.asarray(tmp_rw[j]))) if print_err: - print(config_no, i, j, np.mean(np.exp(-np.asarray(tmp_rw[j]))), np.std(np.exp(-np.asarray(tmp_rw[j])))) - print('Sources:', np.exp(-np.asarray(tmp_rw[j]))) + print(config_no, i, j, + np.mean(np.exp(-np.asarray(tmp_rw[j]))), + np.std(np.exp(-np.asarray(tmp_rw[j])))) + print('Sources:', + np.exp(-np.asarray(tmp_rw[j]))) print('Partial factor:', tmp_nfct) elif version == '1.6' or version == '1.4': tmp_nfct = 1.0 @@ -149,7 +159,9 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): tmp_rw = struct.unpack('d' * nsrc[i], t) tmp_nfct *= np.mean(np.exp(-np.asarray(tmp_rw))) if print_err: - print(config_no, i, j, np.mean(np.exp(-np.asarray(tmp_rw))), np.std(np.exp(-np.asarray(tmp_rw)))) + print(config_no, i, j, + np.mean(np.exp(-np.asarray(tmp_rw))), + np.std(np.exp(-np.asarray(tmp_rw)))) print('Sources:', np.exp(-np.asarray(tmp_rw))) print('Partial factor:', tmp_nfct) tmp_array[i].append(tmp_nfct) @@ -168,11 +180,14 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): return result -def extract_t0(path, prefix, dtr_read, xmin, spatial_extent, fit_range=5, **kwargs): +def extract_t0(path, prefix, dtr_read, xmin, + spatial_extent, fit_range=5, **kwargs): """Extract t0 from given .ms.dat files. Returns t0 as Obs. - It is assumed that all boundary effects have sufficiently decayed at x0=xmin. - The data around the zero crossing of t^2 - 0.3 is fitted with a linear function + It is assumed that all boundary effects have + sufficiently decayed at x0=xmin. + The data around the zero crossing of t^2 - 0.3 + is fitted with a linear function from which the exact root is extracted. Only works with openQCD v 1.2. @@ -183,14 +198,17 @@ def extract_t0(path, prefix, dtr_read, xmin, spatial_extent, fit_range=5, **kwar prefix : str Ensemble prefix dtr_read : int - Determines how many trajectories should be skipped when reading the ms.dat files. + Determines how many trajectories should be skipped + when reading the ms.dat files. Corresponds to dtr_cnfg / dtr_ms in the openQCD input file. xmin : int - First timeslice where the boundary effects have sufficiently decayed. + First timeslice where the boundary + effects have sufficiently decayed. spatial_extent : int spatial extent of the lattice, required for normalization. fit_range : int - Number of data points left and right of the zero crossing to be included in the linear fit. (Default: 5) + Number of data points left and right of the zero + crossing to be included in the linear fit. (Default: 5) r_start : list list which contains the first config to be read for each replicum. r_stop: list @@ -276,7 +294,9 @@ def extract_t0(path, prefix, dtr_read, xmin, spatial_extent, fit_range=5, **kwar Ysum.append([]) for i, item in enumerate(Ysl): - Ysum[-1].append([np.mean(item[current + xmin:current + tmax - xmin]) for current in range(0, len(item), tmax)]) + Ysum[-1].append([np.mean(item[current + xmin: + current + tmax - xmin]) + for current in range(0, len(item), tmax)]) t2E_dict = {} for n in range(nn + 1): @@ -287,12 +307,16 @@ def extract_t0(path, prefix, dtr_read, xmin, spatial_extent, fit_range=5, **kwar samples[-1].append(cnfg[n]) samples[-1] = samples[-1][r_start[nrep]:r_stop[nrep]] new_obs = Obs(samples, [(w.split('.'))[0] for w in ls]) - t2E_dict[n * dn * eps] = (n * dn * eps) ** 2 * new_obs / (spatial_extent ** 3) - 0.3 + t2E_dict[n * dn * eps] = (n * dn * eps) ** 2 * new_obs \ + / (spatial_extent ** 3) - 0.3 - zero_crossing = np.argmax(np.array([o.value for o in t2E_dict.values()]) > 0.0) + zero_crossing = np.argmax(np.array( + [o.value for o in t2E_dict.values()]) > 0.0) - x = list(t2E_dict.keys())[zero_crossing - fit_range: zero_crossing + fit_range] - y = list(t2E_dict.values())[zero_crossing - fit_range: zero_crossing + fit_range] + x = list(t2E_dict.keys())[zero_crossing - fit_range: + zero_crossing + fit_range] + y = list(t2E_dict.values())[zero_crossing - fit_range: + zero_crossing + fit_range] [o.gamma_method() for o in y] fit_result = fit_lin(x, y) @@ -348,7 +372,7 @@ def _read_array_openQCD2(fp): return {'d': d, 'n': n, 'size': size, 'arr': arr} -def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): +def read_qtop(path, prefix, c, dtr_cnfg=1, version="1.2", **kwargs): """Read qtop format from given folder structure. Parameters @@ -360,144 +384,150 @@ def read_qtop(path, prefix,c, dtr_cnfg = 1, version = "1.2",**kwargs): c: double Smearing radius in units of the lattice extent, c = sqrt(8 t0) / L dtr_cnfg: int - (optional) parameter that specifies the number of trajectories between two configs. - if it is not set, the distance between two measurements in the file is assumed to be + (optional) parameter that specifies the number of trajectories + between two configs. + if it is not set, the distance between two measurements + in the file is assumed to be the distance between two configurations. steps: int (optional) (maybe only necessary for openQCD2.0) nt step size, guessed if not given version: str - version string of the openQCD (sfqcd) version used to create the ensemble + version string of the openQCD (sfqcd) version used to create + the ensemble L: int - spatial length of the lattice in L/a. HAS to be set if version != sfqcd, since openQCD does not provide this in the header + spatial length of the lattice in L/a. + HAS to be set if version != sfqcd, since openQCD does not provide + this in the header r_start: list - offset of the first ensemble, making it easier to match later on with other Obs + offset of the first ensemble, making it easier to match + later on with other Obs r_stop: list last configurations that need to be read (per replicum) - r_meas_start: list - offset of the first measured ensemble, if there is any files: list - specify the exact files that need to be read from path, pratical if e.g. only one replicum is needed + specify the exact files that need to be read + from path, pratical if e.g. only one replicum is needed names: list - Alternative labeling for replicas/ensembles. Has to have the appropriate length + Alternative labeling for replicas/ensembles. + Has to have the appropriate length """ - #one could read L from the header in case of sfQCD - #c = 0.35 - known_versions = ["1.0","1.2","1.4","1.6","2.0", "sfqcd"] - - if not version in known_versions: + # one could read L from the header in case of sfQCD + # c = 0.35 + known_versions = ["1.0", "1.2", "1.4", "1.6", "2.0", "sfqcd"] + + if version not in known_versions: raise Exception("Unknown openQCD version.") - target = 0 if "steps" in kwargs: steps = kwargs.get("steps") - - if 'target' in kwargs: - target = kwargs.get('target') if version == "sfqcd": if "L" in kwargs: - supposed_L = kwargs.get("L") + supposed_L = kwargs.get("L") else: - if not "L" in kwargs: - raise Exception("This version of openQCD needs you to provide the spatial length of the lattice as parameter 'L'.") + if "L" not in kwargs: + raise Exception("This version of openQCD needs you \ + to provide the spatial length of the \ + lattice as parameter 'L'.") else: L = kwargs.get("L") r_start = 1 - r_meas_start = 1 - if "r_meas_start" in kwargs: - r_meas_start = kwargs.get("r_meas_start") if "r_start" in kwargs: r_start = kwargs.get("r_start") if "r_stop" in kwargs: r_stop = kwargs.get("r_stop") - #if one wants to read specific files with this method... + # if one wants to read specific files with this method... if "files" in kwargs: files = kwargs.get("files") else: - #find files in path + # find files in path found = [] files = [] for (dirpath, dirnames, filenames) in os.walk(path+"/"): - #print(filenames) + # print(filenames) found.extend(filenames) break for f in found: if fnmatch.fnmatch(f, prefix+"*"+".ms.dat"): files.append(f) print(files) - #now that we found our files, we dechiffer them... + # now that we found our files, we dechiffer them... rep_names = [] - + deltas = [] idl = [] - for rep,file in enumerate(files): - + for rep, file in enumerate(files): with open(path+"/"+file, "rb") as fp: - #this, for now, is for version 1.2,1.4,1.6 and 2.0, but needs to be tested for the last 3, isncethe doc says its the same - #header + # header t = fp.read(12) header = struct.unpack(' 1: + range(1, len(data_starts))])) > 1: raise Exception("Irregularities in file structure found,\ - not all runs have the same output length") + not all runs have the same output length") # first chunk of data chunk = content[:data_starts[1]] for linenumber, line in enumerate(chunk): @@ -397,7 +398,7 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, found_pat += li if re.search(pattern, found_pat): for t, line in \ - enumerate(chunk[start_read:start_read+T]): + enumerate(chunk[start_read:start_read+T]): floats = list(map(float, line.split())) deltas[t][rep][cnfg] = floats[-2:][im] idl.append(rep_idl) From 62cb0ab1bbf9b587dc9335735a835c508562313f Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Fri, 14 Jan 2022 21:06:41 +0100 Subject: [PATCH 185/220] flake8 compliance without E501 --- pyerrors/input/openQCD.py | 56 +++++++------------ pyerrors/input/sfcf.py | 114 ++++++++++++++------------------------ 2 files changed, 62 insertions(+), 108 deletions(-) diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index 60ed64c7..8caede78 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -75,8 +75,7 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): for entry in ls: truncated_entry = entry.split('.')[0] idx = truncated_entry.index('r') - rep_names.append(truncated_entry[:idx] + '|' - + truncated_entry[idx:]) + rep_names.append(truncated_entry[:idx] + '|' + truncated_entry[idx:]) print_err = 0 if 'print_err' in kwargs: @@ -99,12 +98,8 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): deltas.append([]) else: # little weird if-clause due to the /2 operation needed. - if ((nrw != struct.unpack('i', t)[0] and - (not version == '2.0')) or - (nrw != struct.unpack('i', t)[0] / 2 and - version == '2.0')): - raise Exception('Error: different number of reweighting\ - factors for replicum', rep) + if ((nrw != struct.unpack('i', t)[0] and (not version == '2.0')) or (nrw != struct.unpack('i', t)[0] / 2 and version == '2.0')): + raise Exception('Error: different number of reweighting factors for replicum', rep) for k in range(nrw): tmp_array.append([]) @@ -307,8 +302,7 @@ def extract_t0(path, prefix, dtr_read, xmin, samples[-1].append(cnfg[n]) samples[-1] = samples[-1][r_start[nrep]:r_stop[nrep]] new_obs = Obs(samples, [(w.split('.'))[0] for w in ls]) - t2E_dict[n * dn * eps] = (n * dn * eps) ** 2 * new_obs \ - / (spatial_extent ** 3) - 0.3 + t2E_dict[n * dn * eps] = (n * dn * eps) ** 2 * new_obs / (spatial_extent ** 3) - 0.3 zero_crossing = np.argmax(np.array( [o.value for o in t2E_dict.values()]) > 0.0) @@ -424,9 +418,7 @@ def read_qtop(path, prefix, c, dtr_cnfg=1, version="1.2", **kwargs): supposed_L = kwargs.get("L") else: if "L" not in kwargs: - raise Exception("This version of openQCD needs you \ - to provide the spatial length of the \ - lattice as parameter 'L'.") + raise Exception("This version of openQCD needs you to provide the spatial length of the lattice as parameter 'L'.") else: L = kwargs.get("L") r_start = 1 @@ -441,12 +433,12 @@ def read_qtop(path, prefix, c, dtr_cnfg=1, version="1.2", **kwargs): # find files in path found = [] files = [] - for (dirpath, dirnames, filenames) in os.walk(path+"/"): + for (dirpath, dirnames, filenames) in os.walk(path + "/"): # print(filenames) found.extend(filenames) break for f in found: - if fnmatch.fnmatch(f, prefix+"*"+".ms.dat"): + if fnmatch.fnmatch(f, prefix + "*" + ".ms.dat"): files.append(f) print(files) # now that we found our files, we dechiffer them... @@ -455,7 +447,7 @@ def read_qtop(path, prefix, c, dtr_cnfg=1, version="1.2", **kwargs): deltas = [] idl = [] for rep, file in enumerate(files): - with open(path+"/"+file, "rb") as fp: + with open(path + "/" + file, "rb") as fp: # header t = fp.read(12) header = struct.unpack(' 0 - print(T, 'entries, starting to read in line', - start_read) + print(T, 'entries, starting to read in line', start_read) else: - raise Exception('Correlator with pattern\n' - + pattern + '\nnot found.') + raise Exception('Correlator with pattern\n' + pattern + '\nnot found.') else: # this part does the same as above, # but for non-compactified versions of the files - with open(path + '/' + item + '/' + sub_ls[0] + '/' - + name) as fp: + with open(path + '/' + item + '/' + sub_ls[0] + '/' + name) as fp: for k, line in enumerate(fp): if version == "0.0": # check if this is really the right file # by matching pattern similar to above - pattern = "# "+name+" : offset "+str(noffset)\ - + ", wf "+str(wf) + pattern = "# " + name + " : offset " + str(noffset) + ", wf " + str(wf) # if b2b, a second wf is needed if b2b: - pattern += ", wf_2 "+str(wf2) + pattern += ", wf_2 " + str(wf2) qs = quarks.split(" ") - pattern += " : " + qs[0]+" - " + qs[1] + pattern += " : " + qs[0] + " - " + qs[1] # print(pattern) - if read == 1 and not line.strip() \ - and k > start + 1: + if read == 1 and not line.strip() and k > start + 1: break if read == 1 and k >= start: T += 1 @@ -277,13 +258,13 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if pattern in line: # print(line) read = 1 - start = k+1 + start = k + 1 else: if '[correlator]' in line: read = 1 start = k + 7 + b2b T -= b2b - print(str(T)+" entries found.") + print(str(T) + " entries found.") # we found where the correlator # that is to be read is in the files # after preparing the datastructure @@ -303,9 +284,7 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, # check, if the correlator is in fact # printed completely if(start_read + T > len(lines)): - raise Exception("EOF before end of correlator data! \ - Maybe "+path + '/' + item + '/' + sub_ls[cfg]+" \ - is corrupted?") + raise Exception("EOF before end of correlator data! Maybe " + path + '/' + item + '/' + sub_ls[cfg] + " is corrupted?") # and start to read the correlator. # the range here is chosen like this, # since this allows for implementing @@ -317,12 +296,10 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, sub_ls[cfg]) if(k >= start_read and k < start_read + T): floats = list(map(float, lines[k].split())) - deltas[k - start_read][i][cfg] = \ - floats[-2:][im] + deltas[k - start_read][i][cfg] = floats[-2:][im] else: for cnfg, subitem in enumerate(sub_ls): - with open(path + '/' + item + '/' + subitem - + '/' + name) as fp: + with open(path + '/' + item + '/' + subitem + '/' + name) as fp: # since the non-compatified files # are typically not so long, # we can iterate over the whole file. @@ -331,23 +308,20 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if(k >= start and k < start + T): floats = list(map(float, line.split())) if version == "0.0": - deltas[k-start][i][cnfg] = floats[im] + deltas[k - start][i][cnfg] = floats[im] else: - deltas[k - start][i][cnfg] = \ - floats[1 + im - single] + deltas[k - start][i][cnfg] = floats[1 + im - single] else: if "files" in kwargs: ls = kwargs.get("files") else: for exc in ls: - if not fnmatch.fnmatch(exc, prefix + '*.'+name): + if not fnmatch.fnmatch(exc, prefix + '*.' + name): ls = list(set(ls) - set([exc])) ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) # print(ls) - pattern = 'name ' + name + '\nquarks '\ - + quarks + '\noffset ' + str(noffset)\ - + '\nwf ' + str(wf) + pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) if b2b: pattern += '\nwf_2 ' + str(wf2) for rep, file in enumerate(ls): @@ -358,10 +332,9 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, for linenumber, line in enumerate(content): if "[run]" in line: data_starts.append(linenumber) - if len(set([data_starts[i]-data_starts[i-1] for i in - range(1, len(data_starts))])) > 1: - raise Exception("Irregularities in file structure found,\ - not all runs have the same output length") + if len(set([data_starts[i] - data_starts[i - 1] for i in + range(1, len(data_starts))])) > 1: + raise Exception("Irregularities in file structure found, not all runs have the same output length") # first chunk of data chunk = content[:data_starts[1]] for linenumber, line in enumerate(chunk): @@ -370,11 +343,11 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, elif line.startswith("[correlator]"): corr_line = linenumber found_pat = "" - for li in chunk[corr_line+1:corr_line+6+b2b]: + for li in chunk[corr_line + 1:corr_line + 6 + b2b]: found_pat += li if re.search(pattern, found_pat): - start_read = corr_line+7+b2b - T = len(chunk)-1-start_read + start_read = corr_line + 7 + b2b + T = len(chunk) - 1 - start_read if rep == 0: deltas = [] for t in range(T): @@ -384,21 +357,19 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, # all other chunks should follow the same structure for cnfg in range(len(data_starts)): start = data_starts[cnfg] - stop = start+data_starts[1] + stop = start + data_starts[1] chunk = content[start:stop] # meta_data = {} try: rep_idl.append(int(chunk[gauge_line].split("n")[-1])) except Exception: - raise Exception("Couldn't parse idl from directroy, \ - problem with chunk around line "+gauge_line) + raise Exception("Couldn't parse idl from directroy, problem with chunk around line " + gauge_line) found_pat = "" - for li in chunk[corr_line+1:corr_line+6+b2b]: + for li in chunk[corr_line + 1:corr_line + 6 + b2b]: found_pat += li if re.search(pattern, found_pat): - for t, line in \ - enumerate(chunk[start_read:start_read+T]): + for t, line in enumerate(chunk[start_read:start_read + T]): floats = list(map(float, line.split())) deltas[t][rep][cnfg] = floats[-2:][im] idl.append(rep_idl) @@ -407,10 +378,9 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, print("Checking for missing configs...") che = kwargs.get("check_configs") if not (len(che) == len(idl)): - raise Exception("check_configs has to be the same length\ - as replica!") + raise Exception("check_configs has to be the same length as replica!") for r in range(len(idl)): - print("checking "+new_names[r]) + print("checking " + new_names[r]) utils.check_idl(idl[r], che[r]) print("Done") result = [] From dc6b844fa4a89b1e59fe73d3bbe01e5c4330c055 Mon Sep 17 00:00:00 2001 From: jkuhl-uni Date: Fri, 14 Jan 2022 21:12:08 +0100 Subject: [PATCH 186/220] flake8 compliance without E501of utils.py --- pyerrors/input/utils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pyerrors/input/utils.py b/pyerrors/input/utils.py index a8dd026e..66b60f68 100644 --- a/pyerrors/input/utils.py +++ b/pyerrors/input/utils.py @@ -1,14 +1,15 @@ """Utilities for the input""" -def check_idl(idl,che): + +def check_idl(idl, che): missing = [] for c in che: - if not c in idl: + if c not in idl: missing.append(c) - #print missing such that it can directly be parsed to slurm terminal + # print missing such that it can directly be parsed to slurm terminal if not (len(missing) == 0): - print(len(missing),"configs missing") + print(len(missing), "configs missing") miss_str = str(missing[0]) for i in missing[1:]: - miss_str += ","+str(i) + miss_str += "," + str(i) print(miss_str) From b0bc9c8e47f80ec94ace13bc7622703283ad5b97 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sun, 16 Jan 2022 16:46:59 +0100 Subject: [PATCH 187/220] refactor: input test notebook removed --- tests/input_test.ipynb | 136 ----------------------------------------- 1 file changed, 136 deletions(-) delete mode 100644 tests/input_test.ipynb diff --git a/tests/input_test.ipynb b/tests/input_test.ipynb deleted file mode 100644 index f241304a..00000000 --- a/tests/input_test.ipynb +++ /dev/null @@ -1,136 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This file is used for testing some of the input methods." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import os,sys,inspect\n", - "current_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\n", - "parent_dir = os.path.dirname(current_dir)\n", - "sys.path.insert(0, parent_dir) \n", - "\n", - "import pyerrors as pe\n", - "import pyerrors.input.openQCD as qcdin\n", - "import pyerrors.input.sfcf as sfin\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, we will have a look at the input method for the topological charge $Q_{top}$, which is measured by the program ms from the openQCD package. For now, this part still in the making and depends on an actual file. Later, this should be changed to a more efficient way of making a proper input file.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['T29L20k0.13719r2.ms.dat', 'T29L20k0.13719r3.ms.dat', 'T29L20k0.13719r1.ms.dat', 'T29L20k0.13719r4.ms.dat']\n", - "dn: 10\n", - "nn: 60\n", - "tmax: 30\n", - "eps: 0.02\n", - "max_t: 12.0\n", - "t_aim: 6.125\n", - "index_aim: 31\n", - "T29L20k0.13719r2\n", - "dn: 10\n", - "nn: 60\n", - "tmax: 30\n", - "eps: 0.02\n", - "max_t: 12.0\n", - "t_aim: 6.125\n", - "index_aim: 31\n", - "T29L20k0.13719r3\n", - "dn: 10\n", - "nn: 60\n", - "tmax: 30\n", - "eps: 0.02\n", - "max_t: 12.0\n", - "t_aim: 6.125\n", - "index_aim: 31\n", - "T29L20k0.13719r1\n", - "dn: 10\n", - "nn: 60\n", - "tmax: 30\n", - "eps: 0.02\n", - "max_t: 12.0\n", - "t_aim: 6.125\n", - "index_aim: 31\n", - "T29L20k0.13719r4\n" - ] - } - ], - "source": [ - "r_qtop = qcdin.read_qtop(\"../../test_data\", prefix = \"T29L20k0.13719\",full = True, r_stop = [500,440,447,410])#, files = [\"T29L20k0.13719r1.ms.dat\"], )" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'T29L20k0.13719|r1': 500, 'T29L20k0.13719|r2': 440, 'T29L20k0.13719|r3': 447, 'T29L20k0.13719|r4': 410}\n", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -2 -2 -2 -2 -3 -3 -3 -3 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " - ] - } - ], - "source": [ - "print(r_qtop.shape)\n", - "#print(r_qtop.deltas['T29L20k0.13719|r1'])\n", - "for i in r_qtop.deltas['T29L20k0.13719|r2']:\n", - " print(round(r_qtop.value + i), end =\" \")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" - }, - "kernelspec": { - "display_name": "Python 3.9.7 64-bit", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} From f8cbaef626d9af7fe05458417259a78377e8a8c0 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sun, 16 Jan 2022 16:50:51 +0100 Subject: [PATCH 188/220] refactor: unnecessary comments in input/sfcf removed, typos corrected --- pyerrors/input/sfcf.py | 48 +++++------------------------------------- 1 file changed, 5 insertions(+), 43 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 2371d101..7e840dcd 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -43,15 +43,16 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, replaces the name of the ensemble version: str version of SFCF, with which the measurement was done. - if the compact output option (-c) was spectified, + if the compact output option (-c) was specified, append a "c" to the version (e.g. "1.0c") if the append output option (-a) was specified, - append an "a" to the version + append an "a" to the version. Currently supported versions + are "0.0", "1.0", "2.0", "1.0c", "2.0c", "1.0a" and "2.0a". replica: list list of replica to be read, default is all files: list list of files to be read per replica, default is all. - for non-conpact ouztput format, hand the folders to be read here. + for non-compact output format, hand the folders to be read here. check_configs: list of list of supposed configs, eg. [range(1,1000)] for one replicum with 1000 configs @@ -77,17 +78,12 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if "replica" in kwargs: reps = kwargs.get("replica") - # due to higher usage in current projects, - # compact file format is default compact = True appended = False - # get version string known_versions = ["0.0", "1.0", "2.0", "1.0c", "2.0c", "1.0a", "2.0a"] if version not in known_versions: raise Exception("This version is not known!") - # if the letter c is appended to the version, - # the compact fileformat is used (former read_sfcf_c) if(version[-1] == "c"): appended = False compact = True @@ -119,7 +115,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if not fnmatch.fnmatch(exc, prefix + '*'): ls = list(set(ls) - set([exc])) if len(ls) > 1: - # New version, to cope with ids, etc. ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) if not appended: @@ -135,8 +130,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if len(new_names) != replica: raise Exception('Names does not have the required length', replica) else: - # Adjust replica names to new bookmarking system - new_names = [] if not appended: for entry in ls: @@ -157,7 +150,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) for entry in ls: myentry = entry[:-len(name) - 1] - # print(myentry) try: idx = myentry.index('r') except Exception: @@ -167,7 +159,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, new_names.append(kwargs.get('ens_name') + '|' + myentry[idx:]) else: new_names.append(myentry[:idx] + '|' + myentry[idx:]) - # print(new_names) idl = [] if not appended: for i, item in enumerate(ls): @@ -183,7 +174,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, sub_ls.extend(dirnames) break - # print(sub_ls) for exc in sub_ls: if compact: if not fnmatch.fnmatch(exc, prefix + '*'): @@ -194,7 +184,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if not fnmatch.fnmatch(exc, 'cfg*'): sub_ls = list(set(sub_ls) - set([exc])) sub_ls.sort(key=lambda x: int(x[3:])) - # print(sub_ls) rep_idl = [] no_cfg = len(sub_ls) for cfg in sub_ls: @@ -206,26 +195,19 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, except Exception: raise Exception("Couldn't parse idl from directroy, problem with file " + cfg) rep_idl.sort() - # maybe there is a better way to print the idls print(item, ':', no_cfg, ' configurations') idl.append(rep_idl) - # here we have found all the files we need to look into. if i == 0: - # here, we want to find the place within the file, - # where the correlator we need is stored. if compact: - # to do so, the pattern needed is put together - # from the input values pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) if b2b: pattern += '\nwf_2 ' + str(wf2) - # and the file is parsed through to find the pattern with open(path + '/' + item + '/' + sub_ls[0], 'r') as file: content = file.read() match = re.search(pattern, content) if match: # the start and end point of the correlator - # in quaetion is extracted for later use in + # in question is extracted for later use in # the other files start_read = content.count('\n', 0, match.start()) + 5 + b2b end_match = re.search(r'\n\s*\n', content[match.start():]) @@ -248,7 +230,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, pattern += ", wf_2 " + str(wf2) qs = quarks.split(" ") pattern += " : " + qs[0] + " - " + qs[1] - # print(pattern) if read == 1 and not line.strip() and k > start + 1: break if read == 1 and k >= start: @@ -265,30 +246,19 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, start = k + 7 + b2b T -= b2b print(str(T) + " entries found.") - # we found where the correlator - # that is to be read is in the files - # after preparing the datastructure - # the correlators get parsed into... deltas = [] for j in range(T): deltas.append([]) for t in range(T): deltas[t].append(np.zeros(no_cfg)) - # ...the actual parsing can start. # we iterate through all measurement files in the path given... if compact: for cfg in range(no_cfg): with open(path + '/' + item + '/' + sub_ls[cfg]) as fp: lines = fp.readlines() - # check, if the correlator is in fact - # printed completely if(start_read + T > len(lines)): raise Exception("EOF before end of correlator data! Maybe " + path + '/' + item + '/' + sub_ls[cfg] + " is corrupted?") - # and start to read the correlator. - # the range here is chosen like this, - # since this allows for implementing - # a security check for every read correlator later... for k in range(start_read - 6, start_read + T): if k == start_read - 5 - b2b: if lines[k].strip() != 'name ' + name: @@ -300,10 +270,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, else: for cnfg, subitem in enumerate(sub_ls): with open(path + '/' + item + '/' + subitem + '/' + name) as fp: - # since the non-compatified files - # are typically not so long, - # we can iterate over the whole file. - # here one can also implement the chekc from above. for k, line in enumerate(fp): if(k >= start and k < start + T): floats = list(map(float, line.split())) @@ -320,7 +286,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if not fnmatch.fnmatch(exc, prefix + '*.' + name): ls = list(set(ls) - set([exc])) ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) - # print(ls) pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) if b2b: pattern += '\nwf_2 ' + str(wf2) @@ -335,7 +300,6 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if len(set([data_starts[i] - data_starts[i - 1] for i in range(1, len(data_starts))])) > 1: raise Exception("Irregularities in file structure found, not all runs have the same output length") - # first chunk of data chunk = content[:data_starts[1]] for linenumber, line in enumerate(chunk): if line.startswith("gauge_name"): @@ -354,12 +318,10 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, deltas.append([]) for t in range(T): deltas[t].append(np.zeros(len(data_starts))) - # all other chunks should follow the same structure for cnfg in range(len(data_starts)): start = data_starts[cnfg] stop = start + data_starts[1] chunk = content[start:stop] - # meta_data = {} try: rep_idl.append(int(chunk[gauge_line].split("n")[-1])) except Exception: From 5993f1a4baf8fee3b37590d2aa32cc6d5d879637 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Sun, 16 Jan 2022 16:53:57 +0100 Subject: [PATCH 189/220] refactor: comments removed in input/openQCD, typo corrected --- pyerrors/input/openQCD.py | 33 +-------------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/pyerrors/input/openQCD.py b/pyerrors/input/openQCD.py index 8caede78..132be92e 100644 --- a/pyerrors/input/openQCD.py +++ b/pyerrors/input/openQCD.py @@ -1,6 +1,3 @@ -#!/usr/bin/env python -# coding: utf-8 - import os import fnmatch import re @@ -42,7 +39,6 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): if 'files' in kwargs: ls = kwargs.get('files') else: - # Exclude files with different names for exc in ls: if not fnmatch.fnmatch(exc, prefix + '*' + postfix + '.dat'): ls = list(set(ls) - set([exc])) @@ -69,7 +65,6 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): print('Read reweighting factors from', prefix[:-1], ',', replica, 'replica', end='') - # Adjust replica names to new bookmarking system if names is None: rep_names = [] for entry in ls: @@ -88,7 +83,6 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): tmp_array = [] with open(path + '/' + ls[rep], 'rb') as fp: - # header t = fp.read(4) # number of reweighting factors if rep == 0: nrw = struct.unpack('i', t)[0] @@ -97,7 +91,6 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): for k in range(nrw): deltas.append([]) else: - # little weird if-clause due to the /2 operation needed. if ((nrw != struct.unpack('i', t)[0] and (not version == '2.0')) or (nrw != struct.unpack('i', t)[0] / 2 and version == '2.0')): raise Exception('Error: different number of reweighting factors for replicum', rep) @@ -110,8 +103,6 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): for i in range(nrw): t = fp.read(4) nfct.append(struct.unpack('i', t)[0]) - # print('nfct: ', nfct) # Hasenbusch factor, - # 1 for rat reweighting else: for i in range(nrw): nfct.append(1) @@ -124,7 +115,6 @@ def read_rwms(path, prefix, version='2.0', names=None, **kwargs): if not struct.unpack('i', fp.read(4))[0] == 0: print('something is wrong!') - # body while 0 < 1: t = fp.read(4) if len(t) < 4: @@ -220,7 +210,6 @@ def extract_t0(path, prefix, dtr_read, xmin, if not ls: raise Exception('Error, directory not found') - # Exclude files with different names for exc in ls: if not fnmatch.fnmatch(exc, prefix + '*.ms.dat'): ls = list(set(ls) - set([exc])) @@ -232,7 +221,6 @@ def extract_t0(path, prefix, dtr_read, xmin, r_start = kwargs.get('r_start') if len(r_start) != replica: raise Exception('r_start does not match number of replicas') - # Adjust Configuration numbering to python index r_start = [o - 1 if o else None for o in r_start] else: r_start = [None] * replica @@ -251,7 +239,6 @@ def extract_t0(path, prefix, dtr_read, xmin, for rep in range(replica): with open(path + '/' + ls[rep], 'rb') as fp: - # Read header t = fp.read(12) header = struct.unpack('iii', t) if rep == 0: @@ -270,7 +257,6 @@ def extract_t0(path, prefix, dtr_read, xmin, Ysl = [] - # Read body while 0 < 1: t = fp.read(4) if(len(t) < 4): @@ -334,12 +320,6 @@ def _parse_array_openQCD2(d, n, size, wa, quadrupel=False): return arr -# mimic the read_array routine of openQCD-2.0. -# fp is the opened file handle -# returns the dict array -# at this point we only parse a 2d array -# d = 2 -# n = [nfct[irw], 2*nsrc[irw]] def _read_array_openQCD2(fp): t = fp.read(4) d = struct.unpack('i', t)[0] @@ -400,13 +380,11 @@ def read_qtop(path, prefix, c, dtr_cnfg=1, version="1.2", **kwargs): last configurations that need to be read (per replicum) files: list specify the exact files that need to be read - from path, pratical if e.g. only one replicum is needed + from path, practical if e.g. only one replicum is needed names: list Alternative labeling for replicas/ensembles. Has to have the appropriate length """ - # one could read L from the header in case of sfQCD - # c = 0.35 known_versions = ["1.0", "1.2", "1.4", "1.6", "2.0", "sfqcd"] if version not in known_versions: @@ -426,11 +404,9 @@ def read_qtop(path, prefix, c, dtr_cnfg=1, version="1.2", **kwargs): r_start = kwargs.get("r_start") if "r_stop" in kwargs: r_stop = kwargs.get("r_stop") - # if one wants to read specific files with this method... if "files" in kwargs: files = kwargs.get("files") else: - # find files in path found = [] files = [] for (dirpath, dirnames, filenames) in os.walk(path + "/"): @@ -441,14 +417,12 @@ def read_qtop(path, prefix, c, dtr_cnfg=1, version="1.2", **kwargs): if fnmatch.fnmatch(f, prefix + "*" + ".ms.dat"): files.append(f) print(files) - # now that we found our files, we dechiffer them... rep_names = [] deltas = [] idl = [] for rep, file in enumerate(files): with open(path + "/" + file, "rb") as fp: - # header t = fp.read(12) header = struct.unpack(' Date: Sun, 16 Jan 2022 16:56:53 +0100 Subject: [PATCH 190/220] docs: docstring added to check_idl in input/utils --- pyerrors/input/utils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pyerrors/input/utils.py b/pyerrors/input/utils.py index 66b60f68..4e50c15c 100644 --- a/pyerrors/input/utils.py +++ b/pyerrors/input/utils.py @@ -2,11 +2,20 @@ def check_idl(idl, che): + """Checks if list of configurations is contained in an idl + + Parameters + ---------- + idl : range or list + idl of the current replicum + che : list + list of configurations to be checked against + """ missing = [] for c in che: if c not in idl: missing.append(c) - # print missing such that it can directly be parsed to slurm terminal + # print missing configurations such that it can directly be parsed to slurm terminal if not (len(missing) == 0): print(len(missing), "configs missing") miss_str = str(missing[0]) From 4f3b2d22d5d74c50d4faeac6f830cf6b0b4e8679 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 17 Jan 2022 14:45:54 +0000 Subject: [PATCH 191/220] feat: skew and kurtosis added to Obs.plot_history --- pyerrors/obs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index e19cc617..546a0a2e 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -4,6 +4,7 @@ import numpy as np import autograd.numpy as anp # Thinly-wrapped numpy from autograd import jacobian import matplotlib.pyplot as plt +from scipy.stats import kurtosis, skew import numdifftools as nd from itertools import groupby from .covobs import Covobs @@ -564,7 +565,7 @@ class Obs: y = np.concatenate(tmp, axis=0) plt.errorbar(x, y, fmt='.', markersize=3) plt.xlim(-0.5, e_N - 0.5) - plt.title(e_name) + plt.title(e_name + f', skew: {skew(y):2.3f}, kurtosis: {kurtosis(y):2.3f}') plt.draw() def plot_piechart(self): From 0918330f13c91b2bc4c250b2909159124ce3682e Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 17 Jan 2022 14:55:14 +0000 Subject: [PATCH 192/220] feat: p-values added to skew and kurtosis in Obs.plot_history --- pyerrors/obs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 546a0a2e..0c2d3844 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -4,7 +4,7 @@ import numpy as np import autograd.numpy as anp # Thinly-wrapped numpy from autograd import jacobian import matplotlib.pyplot as plt -from scipy.stats import kurtosis, skew +from scipy.stats import skew, skewtest, kurtosis, kurtosistest import numdifftools as nd from itertools import groupby from .covobs import Covobs @@ -565,7 +565,7 @@ class Obs: y = np.concatenate(tmp, axis=0) plt.errorbar(x, y, fmt='.', markersize=3) plt.xlim(-0.5, e_N - 0.5) - plt.title(e_name + f', skew: {skew(y):2.3f}, kurtosis: {kurtosis(y):2.3f}') + plt.title(e_name + f', skew: {skew(y):.3f} (p={skewtest(y).pvalue:.2f}), kurtosis: {kurtosis(y):.3f} (p={kurtosistest(y).pvalue:.2f})') plt.draw() def plot_piechart(self): From 268f71fa190e2cb87f507c9d5e13000148f7dffd Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Mon, 17 Jan 2022 14:56:33 +0000 Subject: [PATCH 193/220] feat: precision of printed p-values in Obs.plot_history increased --- pyerrors/obs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 0c2d3844..9d49c59e 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -565,7 +565,7 @@ class Obs: y = np.concatenate(tmp, axis=0) plt.errorbar(x, y, fmt='.', markersize=3) plt.xlim(-0.5, e_N - 0.5) - plt.title(e_name + f', skew: {skew(y):.3f} (p={skewtest(y).pvalue:.2f}), kurtosis: {kurtosis(y):.3f} (p={kurtosistest(y).pvalue:.2f})') + plt.title(e_name + f', skew: {skew(y):.3f} (p={skewtest(y).pvalue:.3f}), kurtosis: {kurtosis(y):.3f} (p={kurtosistest(y).pvalue:.3f})') plt.draw() def plot_piechart(self): From f282ecdaf649e3518afa1d591e9977c8492256e2 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 12:13:20 +0000 Subject: [PATCH 194/220] feat: json import export for correlator class implemented, tests added --- pyerrors/input/json.py | 37 +++++++++++++++++++++++++++++++++++++ tests/io_test.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 131dccf3..1ba6682d 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -8,6 +8,7 @@ import platform import warnings from ..obs import Obs from ..covobs import Covobs +from ..correlators import Corr from .. import version as pyerrorsversion @@ -173,6 +174,18 @@ def create_json_string(ol, description='', indent=1): d['cdata'] = cdata return d + def write_Corr_to_dict(my_corr): + front_padding = next(i for i, j in enumerate(my_corr.content) if np.all(j)) + back_padding_start = front_padding + next((i for i, j in enumerate(my_corr.content[front_padding:]) if not np.all(j)), my_corr.T) + dat = write_Array_to_dict(np.array(my_corr.content[front_padding:back_padding_start])) + dat['type'] = 'Corr' + corr_meta_data = str(front_padding) + '|' + str(my_corr.T - back_padding_start) + '|' + str(my_corr.tag) + if 'tag' in dat.keys(): + dat['tag'].append(corr_meta_data) + else: + dat['tag'] = [corr_meta_data] + return dat + if not isinstance(ol, list): ol = [ol] @@ -193,6 +206,10 @@ def create_json_string(ol, description='', indent=1): d['obsdata'].append(write_List_to_dict(io)) elif isinstance(io, np.ndarray): d['obsdata'].append(write_Array_to_dict(io)) + elif isinstance(io, Corr): + d['obsdata'].append(write_Corr_to_dict(io)) + else: + raise Exception("Unkown datatype.") jsonstring = json.dumps(d, indent=indent, cls=my_encoder, ensure_ascii=False) @@ -374,6 +391,22 @@ def import_json_string(json_string, verbose=True, full_output=False): ret[-1].tag = taglist[i] return np.reshape(ret, layout) + def get_Corr_from_dict(o): + taglist = o.get('tag') + corr_meta_data = taglist[-1].split('|') + padding_front = int(corr_meta_data[0]) + padding_back = int(corr_meta_data[1]) + corr_tag = corr_meta_data[2] + tmp_o = o + tmp_o['tag'] = taglist[:-1] + 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) + if corr_tag != 'None': + my_corr.tag = corr_tag + return my_corr + json_dict = json.loads(json_string) prog = json_dict.get('program', '') @@ -400,6 +433,10 @@ def import_json_string(json_string, verbose=True, full_output=False): ol.append(get_List_from_dict(io)) elif io['type'] == 'Array': ol.append(get_Array_from_dict(io)) + elif io['type'] == 'Corr': + ol.append(get_Corr_from_dict(io)) + else: + raise Exception("Unkown datatype.") if full_output: retd = {} diff --git a/tests/io_test.py b/tests/io_test.py index 92781785..d660f34a 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -89,3 +89,36 @@ def test_json_string_reconstruction(): assert reconstructed_string == json_string assert my_obs == reconstructed_obs2 + + +def test_json_corr_io(): + my_list = [pe.Obs([np.random.normal(1.0, 0.1, 100)], ['ens1']) for o in range(8)] + rw_list = pe.reweight(pe.Obs([np.random.normal(1.0, 0.1, 100)], ['ens1']), my_list) + + for obs_list in [my_list, rw_list]: + for tag in [None, "test"]: + obs_list[3].tag = tag + 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.tag = corr_tag + pe.input.json.dump_to_json(my_corr, 'corr') + recover = pe.input.json.load_json('corr') + assert np.all([o.is_zero() for o in [x for x in (my_corr - recover) if x is not None]]) + assert my_corr.tag == recover.tag + assert my_corr.reweighted == recover.reweighted + + +def test_json_corr_2d_io(): + obs_list = [np.array([[pe.pseudo_Obs(1.0 + i, 0.1 * i, 'test'), pe.pseudo_Obs(0.0, 0.1 * i, 'test')], [pe.pseudo_Obs(0.0, 0.1 * i, 'test'), pe.pseudo_Obs(1.0 + i, 0.1 * i, 'test')]]) for i in range(8)] + + 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.tag = tag + pe.input.json.dump_to_json(my_corr, 'corr') + recover = pe.input.json.load_json('corr') + assert np.all([np.all([o.is_zero() for o in q]) for q in [x.ravel() for x in (my_corr - recover) if x is not None]]) + assert my_corr.tag == recover.tag From e880a8221d2a23230d80275f3f3006a5b0dac234 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 12:13:44 +0000 Subject: [PATCH 195/220] fix: bug in covariance test corrected --- tests/obs_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/obs_test.py b/tests/obs_test.py index a5e72ec9..210ac67c 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -615,7 +615,7 @@ def test_covariance_symmetry(): cov_ab = pe.covariance(test_obs1, a) cov_ba = pe.covariance(a, test_obs1) assert np.abs(cov_ab - cov_ba) <= 10 * np.finfo(np.float64).eps - assert np.abs(cov_ab) < test_obs1.dvalue * test_obs2.dvalue * (1 + 10 * np.finfo(np.float64).eps) + assert np.abs(cov_ab) < test_obs1.dvalue * a.dvalue * (1 + 10 * np.finfo(np.float64).eps) def test_empty_obs(): From 56fe126593b16b87a6eb22808d8ed8b74aeb0c18 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 14:31:09 +0000 Subject: [PATCH 196/220] docs: docstrings of input/json module updated --- pyerrors/input/json.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 1ba6682d..cb02b117 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -20,7 +20,7 @@ def create_json_string(ol, description='', indent=1): ---------- ol : list List of objects that will be exported. At the moments, these objects can be - either of: Obs, list, numpy.ndarray. + either of: Obs, list, numpy.ndarray, Corr. All Obs inside a structure have to be defined on the same set of configurations. description : str Optional string that describes the contents of the json file. @@ -239,7 +239,7 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): ---------- ol : list List of objects that will be exported. At the moments, these objects can be - either of: Obs, list, numpy.ndarray. + either of: Obs, list, numpy.ndarray, Corr. All Obs inside a structure have to be defined on the same set of configurations. fname : str Filename of the output file. @@ -272,7 +272,7 @@ def dump_to_json(ol, fname, description='', indent=1, gz=True): def import_json_string(json_string, verbose=True, full_output=False): """Reconstruct a list of Obs or structures containing Obs from a json string. - The following structures are supported: Obs, list, numpy.ndarray + The following structures are supported: Obs, list, numpy.ndarray, Corr If the list contains only one element, it is unpacked from the list. Parameters @@ -459,7 +459,7 @@ def import_json_string(json_string, verbose=True, full_output=False): def load_json(fname, verbose=True, gz=True, full_output=False): """Import a list of Obs or structures containing Obs from a .json.gz file. - The following structures are supported: Obs, list, numpy.ndarray + The following structures are supported: Obs, list, numpy.ndarray, Corr If the list contains only one element, it is unpacked from the list. Parameters From d778a3b2389b79c04c45fd292ccd9952d9d1babf Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 14:50:18 +0000 Subject: [PATCH 197/220] 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": "iVBORw0KGgoAAAANSUhEUgAAAl8AAAGICAYAAAB/bIUXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAiHElEQVR4nO3dv48bR4Iv8G89L2xYgGbmrEDAYR1oFChdyOvogE1OThxtINt/wcnBBZtZULR4kWAFD3CwgfT+glsruGgT6yUGNvKesKkCSYH3HaBANmeEJ511EOoFbGppihw2h2Tz1+cDEBK7Weya4gz5ZVV1dam1BgCAbvyPVVcAAGCXCF8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAbppRypZTyH6WUH0spV6Y89nIp5Zvmsde6qiMwmfAFLEUp5XAbjrGOaq33aq0fJDlo8dj7tdaPll8roC3hC1i4UsrlJJc3/RgboDfDY39YViWA2QhfwDKcOBS2QccAWDjhC1iopkfqy00/BsCy/GLVFQC2RynlapLB/KLPSymD/1+vtfaGHnc5yWdJHia5mORhrfXO0P4rSQ7THyp7L83cplrrrbbHmFC/iccdCnS/TvIvTZHBsT9M8i8jP8PEOi7geB8l+aS5P+jh+yjJ7VrrvZEf62BkIv0HbdpiWv2AJaq1urm5uS30lqQmuTph35X0P+SHt/1HkmvN/w+TfD2mzJdtj3Ga4w5t+zHJ7SSHQ9u+Tj/4pG0dF3C8r4d/vvTnt9UkByNlvxl5vsvN9oOR7Q+Hj922fm5ubou/GXYEunY7bw4Z3kxyvfn/YXN7rfZ7ex4u+bgDPyR5r9b6aGjbd/n5HLM2dZz3eFeTvO7lqrXeb/7765HyX4/U435TbtqwbNv6AQsmfAGdaYa5DpP8ZWTX/Wb7IMQcNutS3W6GGVPnGA5rc9wR343c7w3fmVbHBR2vV1sMHWb8WYzfJfl0UoFT1A9YIHO+gC4NPtivlFJGe3A+H/r/hSQ30u/9uVZK6SX556Hen2Udd6DX4jlPquMijjfP0hC9nLwG2Kz1AxZI+AKWrpRyrekVGgyt3ZsUpEoph80Q3PUk10spB+kPj/3v9CeTTzvGOFOPO4sWdVzo8U7hYk4OkKuuH+w0w47AMvTGbWw+6Ht5c97S4OzBJLk8GMZryvRqrZ/nzeGwsceY47izOLGOSzjezPVL8sdJO9egfrDThC9gGf6S/vIMg0sADS+P8En+3luU5jEH+fvyEUl/OC8j+0eXWDjpGOO0Oe7AwZT7beq46ONN8rPnG1oCY9rE+VnqByxQqbWuug7AlmnC0O0k3yQ/X/uq2X85/blFD9P0YA1NVr+av6931WuKHCS5U3++ztYbxyiljH1Dq7WWFscd7LuW/rDc3Vrr9VLKl+nP6zpMcjf9MwIPW9Zx3uPdaX7G95rHXk1/Uvy/NT/vl02ZwTpfB0nO1VpfB69Jx5lWP2B5hC8AgA4ZdgQA6JDwBQDQIeELAKBDwhcAQIeELwCADlnhfoxSSknyj0merbouAMBGOZvkP+sJy0kIX+P9Y5K/rboSAMBG+mWS/ztpp/A13rMk+f7777O3t7fqugAAG+D4+Djvv/9+MmXkrJPwVUr5IkOrQI+udn2aMs1lMD5N8kmtddzlNT5Pf+XrR+lfLuO7WuvdWeq9t7cnfAEAC7X0CfdNiEqt9U5z2Yr7pZTb85RpLonxafqX0nhvzFMcJLmS/mU5bid5OGvwAgBYhqVfXqiU8mOSCyPXO6uDa63NU6a5BtyNWusHY7bfGy4/Y533khwdHR3p+QIAWjk+Ps7+/n6S7Ndajyc9bqk9X82Fbw/GhaBmaHAhZeZVSnmnlLI3uKV/pgIAwMIte87X4YTtvfSHBhdVZpxPSyk/pD8sebHWev2Ex95I8vsZnhsA4FRWtcjqIBQtq8z99Icd7zZzxh6WUr4+4fE3k+wP3X45Y90AAFpZ1VITswavmcrUWh+NbPpjktullLHDmbXWn5L8NLjfX2MVAGDxlt3zNRqCBg5O2HeaMj/TTLh/bShwTRrSBADoxFLDV9MD1Wsm0Y/uu7eoMsOa9b++Hi7fbEtahjcAgGXpYs7XzfTX3EryulfqztD9w8G6Xm3LDHljKLLp5bo1MvR4Lcnd0y49AQCwKEtf5yt5vWjqIAx9OHzmYSnlWpLrtdaLM5Q5THI1yWdJLie5laEV7JuermtDT3duytmOo/W1zhcAMJO263x1Er42jfAFsH5evHyVB0+e5dL5s3n37bdWXR14Q9vw5cLaAKy9Fy9f5eOvvs3jp89z4dyZ/Ol3vxHA2FirWucLAFp78ORZHj99niR5/PR5Hjx5tuIawekJXwCsvUvnz+bCuTNJkgvnzuTSeVeBY3OZ8zWGOV8A68ecL9adOV8AbJV3334rv3r/YNXVgLkZdgQA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPDFWnnx8lX++n0vL16+WnVVmJPXEmA8lxdibbx4+Soff/VtHj99ngvnzuRPv/uN67dtKK8lwGR6vlgbD548y+Onz5Mkj58+z4Mnz1ZcI07LawkwmfDF2rh0/mwunDuTJLlw7kwunT+74hpxWl5LgMlKrXXVdVg7pZS9JEdHR0fZ29tbdXV2youXr/LgybNcOn/WMNWG81oCu+b4+Dj7+/tJsl9rPZ70OHO+WCvvvv1WfvX+waqrwQJ4LQHGM+wIANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AVu7Fy1f56/e9vHj5atVVgaVzYW0AVurFy1f5+Ktv8/jp81w4dyZ/+t1v8u7bb626WrA0er4AWKkHT57l8dPnSZLHT5/nwZNnK64RLJfwBcBKXTp/NhfOnUmSXDh3JpfOn11xjWC5Sq111XVYO6WUvSRHR0dH2dvbW3V1AE704uWrPHjyLJfOn93Y4bpt+Bna2JWfc1cdHx9nf38/SfZrrceTHmfOF8AG25b5Uu++/VZ+9f7BqquxVNvyWjE/w44AG8x8qc3htWJA+ALYYOZLbQ6vFQPmfI1hzhewScwj2hxeq+1mzhfAjtiF+VLbwmtF0lH4KqV8kaTX3D2otd6at0wp5SDJp0k+qbV+tIhjAgAs29LnfDUhKLXWO7XWO0nul1Juz1OmlHI5/eB1kOS9RRyT3eASJgCs2tLnfJVSfkxyodbaG9pWa61l3jKllKtJbtRaP5j3mCPlzfnaQk7zBmCZ2s75WmrPVynlMP0hv96YfVcWVWYBx3ynlLI3uCVxCsoWcpo3AOtg2cOOhxO299IfMlxUmXnL30hyNHT7W4vjsGGc5g3My9QFFmFVZzv+kDFztZZQpm35m0n+19D9sxHAts67b7+VP/3uN07zBk6lzdQFS0nQxqrC12lC1DzB68Tytdafkvw0uF9Kq6lhbCCneQOnNW7qwvD7iXmltLXsYcdHE7YfnLDvNGUWWR4A3jBt6oJ5pbS11J6vWuujUkqvlHJYa300su/eosossjwAjDNt6sIgnA16vswrZZIuru14M8nrswyb5SHuDN0/HKzL1bbMkJPmcLUpDwCtDaYujBtOHISzf//XfzLkyIk6ubZjE64GvVAf1lqvD+27luR6rfXiDGUOk1xN8lmSy0luJfmu1nq3TfkW9bXOFwAwk7brfLmw9hjCFwAwq7VYZBUAgJ8TvgAAOiR8AQB0SPgCAOiQ8AUA0CHha0u42CsAbIZVXduRBXI9MQDYHHq+toDriQFA90476qTnawu4nhgAdGvcqFNbwtcWmHax17ZevHw193MAwC4YN+p0uN9uQFH42hKDi72elnljANDeuFGn//6v/9eqrPBFkvEJfp4wt830EG4PryVwWuNGnf77v9qVFb5IYt5YW3oIt4fXEjbbOnx5Ou2ok/BFksXNG9t2egi3h9cSNtemf3my1ASvDRL8Jv0Cd23QQ5hkpT2EFtWd37q8lsDsNn2JJT1fMIN16CHc9G9862IdXsu21mF4BdbJpk+VEb5gRvOeWTovw2WL0+a1XHXwEbbhTZv05Wkcw46wYQyXdWcQfH77hz/n46++Xckw76YPr8CybPJUGT1fsGE2/RvfJllEL+O8PWebPrwCvEn4gg206qHPXTFv8FnEkKGwDdtH+AKYYN7gs6j5ecI2bBdzvqBjlonYLPPMKzE/Dxin1FpXXYe1U0rZS3J0dHSUvb29VVeHLeLMtd2z6rMlge4cHx9nf38/SfZrrceTHqfnCzrkzLXds8lnZAHLIXxBhwxDAZh+YdhxDMOOLJNhKGCXbfP0C8OOsKYMQwG7rM30i23vGbPUBAA7Qa/zepi2ft4294wNCF8AbL1d+EDfFNPWz9uF69cadgRgK5w0VOVM4/Vy0vSLXTgxSc8XABtvWs+Wa2Rujl24pJbwBcDGmzZUtQsf6Ntk2y+pZdgRgI3XZqjKmcasC+t8jWGdL4DN42xGVq3tOl+GHQHYCts+VMX2MOwIANAh4QsAoEPCF7Cxtv0SJMB2MucL2EhWLAc2lZ4vYKxpvUqr7nWyYjmwqTrp+SqlfJGk19w9qLXemrfMSftLKVeSfJ7kmySPknyU5Lta693T/xSwO6b1Kq1Dr5MVy2E5LNmxfEsPX01ISq31TnP/Sinldq3189OWafGcB0muJLmafvj6cp7g5RexHe20PaatFr4OF761YjksXtsvVt7v59NFz9eNJBcGd2qt90op36TfM3XaMm2e80KttTdv5dfhG/4m0E7bZVqv0rr0OlnXCRarzRcr7/fzW+qcr1LKYfpDgr0x+66cpsxpnnMeXc0rWff5NdOsSzuxGINepX//138a+8Y6bT9wOqt+j2tzmSbzLee37J6vwwnbe+kPDZ6mTNvn/LSU8kOS95JcrLVen1TJUso7Sd4Z2vT6t62Lb/ibML9mmnVoJxZrWq+SXqftYQhpPazDe1yb4fx16fneZKtaamIQik5TptfiOe8nSa31UZKUUq6VUr6utX4yoeyNJL8ft6OLeSWbML9mmnVoJ2B26/CBT9+6vMe1+eJlvuV8VrXUxKzBq02Z1/trrY8GwavxxyRXSykHE8reTLI/dPvl8M7BL+KyfsGmdfO26QZeB6tuJ2B2hpDWxya9xy37/X7blVrr8p68Pz/rYa21jGyvST6qtd6btUz6Zy+e+JyllKujZzc2+z+otd5vUe+9JEdHR0fZ29tr9bPOa1q3v2GBPu0Ai6Xna714j+vOMtr6+Pg4+/v7SbJfaz2e9Lilhq8kKaX8mH7oeTS0rY6Gp1nKnLS/6d36Mf15XoNhx8G2f2hzBuQqwhfAqvjAZ9cs60tH2/DVxbDjzfTX3EqSlFKuJrkzdP9wsG5X2zIn7W/C1a2RYcdrSe4uYukJgG1jCIlds+rh9qX3fCWvF0UdhKEPh888LKVcS3K91nqxbZkWz3mQfuAaOHfS2Y5j6qvnCwC21Kp7vjoJX5tG+AJYLEObrJtVzvla1VITO8WbDrDLTOpnHa1yrcJVLTWxVU5akXjwpvPbP/w5H3/1rZXZgZ2z6vk1sG6ErzlNC1fedP5u1ZfNAFZjk9av2gTeSzefYcc5TVuR2GUY+gw7wO6yIvrieC/dDsLXnKaFK286fety2QxgNTbhWqCbMD/Xe+l2EL7m1CZcbcKbzrLpAQTW2ab0KC3ivXQTQua2s9TEGJaaWA5/8MC6+uv3vfz2D39+ff/f//Wf1vZL8zzvpZsSMjfVOq1wD0msog2sr006KWCe91Inga0Hw44A7LxdmZ9rCsh6MOw4hmFHALaVKSDLY9gRAHhDF1NArEV2MsOOAMDCmNQ/nZ4vYGv59r042pK2TOqfTs8XrZknwCbx7XtxtCWzMKl/OuGLVrz5smmsBL44bdrSlzMGduXM0XkYdtwR8w4Z6EZmFeb5vd2kdZvW3bS2HHw5++0f/pyPv/rW0CTWdZxCz9cOWESvlW5kujbv761v34szrS31MsJshK8dsIg3Rh9k22UThogW9XsrBCzGSW3pyxnMRvjaAYt6Y/RBth02Zf6eD/TFWXbY9uUMZmOF+zG2cYX7TejpYHFOer135QLCXVn3Om5K2IZt0HaFez1fO0Kv1e6Y9mG7ST1K6/57uwnBxnwsWD/CF2yZaR+2hogWZxOCzSaFbdgVwhdsmTYftuveo7QpNiHYCNuwfsz5GmMb53yxW9Z9HtI20dbAgDlfsMP0bHVHWwOzssI9AGwRF0Fff3q+AGBLbMIZuOj5AoCt4Tq8m0H4ggXT5Q+sigvKbwZnO47hbEdOS5c/sGrOwF2dtmc76vmCBdLlD6za4AxcwWt9CV+wQLr8AZjGsOMYhh2Zhy5/gN1kkVVYEYtuAnASw44AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXsBKugQnsqk7W+SqlfJGk19w9qLXemrfMvPuB1XENTGCXLb3nqwlBqbXeqbXeSXK/lHJ7njLz7gdWyzUwgV229MsLlVJ+THKh1tob2lZrreW0Zebd36LOLi+0w1weaPn0fAHbaC0uL1RKOUx/yK83Zt+VWuu9WcskeTTP/gnHfCfJO0ObXA15RwkF3Xj37bfyp9/9RsgFdtKyhx0PJ2zvJTk4ZZl5949zI8nR0O1vEx7HljMc1p3BNTAFL2DXrOpsxx+SvLfgMvPsv5lkf+j2yxnrxpa4dP5sLpw7kyS5cO5MLp3XCQrAYnVytuMYswavNmVOvb/W+lOSnwb3S2k1NYwtZDgMgGVbds/XownbD07YN63MvPvZYotYO8pwGADL1NXZjh/UWh8NbWtztuPEMvPub1FnZztuIJPlAViltmc7djHn62aSK4M7pZSrSe4M3T8crMvVtswC9rOFTJYHYBMsPXw1K8sflFKuNiHow1rr50MPuZLk81nKzLuf7WSyPACbYOnDjpvIsOPmskAqAItwms+TtVhkFbo2mCwPAKe17DnEq1rnCwBgLS17DrHwBQAwZNlziM35GsOcLwDYbcuc86XnCwDYOvMuur3MBbdNuAcAtsq6L7qt5wsA2Crrvui28AUAbJV1X3TbhPsxTLgHgM22ikW3LbIKAOysdV5027AjAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfsIZevHyVv37fy4uXr1ZdFQAWzLUdYc28ePkqH3/1bR4/fZ4L587kT7/7TWcXhQVg+fR8wZp58ORZHj99niR5/PR5Hjx5tuIaAbBIwhesmUvnz+bCuTNJkgvnzuTS+bMrrhEAi1Rqrauuw9oppewlOTo6Osre3t6qq8MOevHyVR48eZZL588acgTYEMfHx9nf30+S/Vrr8aTHmfMFa+jdt9/Kr94/WHU1AFgCw44AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQId+sewDlFK+SNJr7h7UWm/NW+ak/aWUK0k+T/JNkkdJPkryXa317ul/CgCAxVhqz1cTklJrvVNrvZPkfinl9jxlWjznQZIrSW43t4eCFwCwLkqtdXlPXsqPSS7UWntD22qttZy2TIv9V5PcG95/inrvJTk6OjrK3t7eaZ8GANghx8fH2d/fT5L9WuvxpMctreerlHKY/pBgb8y+K6cpc5rnbFnXd0ope4NbkrOnfS4AgJMsc87X4YTtvfSHBk9Tpu1zflpK+SHJe0ku1lqvT6xl340kv5/yGACAua3ibMdBKFpkmeH999MfdrzbzAl7WEr5esrz30yyP3T75Yz1AwBopXXPVzOX6rMWD71Za71/wv5Zg1ebMq/311ofjez7Y5LbpZSxw5VNmZ+S/DS4X8rEKWkAAHNpHb6aMwZnOWtwNAQNHJywb1qZqc9ZSrk6fHZjrbXXhKnD9HvFAABWZmnDjk0PVK+ZJD+6795pykzbX0o5SPL18P5mWzI5uAEAdGbZc75upr/mVpLXQ5d3hu4fDtbtalvmpP3NsOKtkaHHa0nuzrP0BADAoix1na/k9aKogzD04fCZh6WUa0mu11ovti3T4jkP0g9cA+danO04WmfrfAEAM2m7ztfSw9cmEr4AgFmtfJFVAADeJHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOvSLZR+glPJFkl5z96DWemveMqWUgySfJvmk1vrRIo4JANCFpfZ8NSEotdY7tdY7Se6XUm7PU6aUcjn94HWQ5L1FHBMAoCul1rq8Jy/lxyQXaq29oW211lrmLVNKuZrkRq31g3mPOaYOe0mOjo6Osre317YYALDDjo+Ps7+/nyT7tdbjSY9bWs9XKeUw/SG/3ph9VxZVZhHlSynvlFL2BrckZ6cdCwDgNJY57Hg4YXsv/SHDRZVZRPkbSY6Gbn9rcSwAgJmt4mzHHzJmrtYSysxS/maS/aHbL+c4FgDARK3PdmzmWH3W4qE3a633T9h/mhA1T/CaWr7W+lOSnwb3S2k9PQwAYCatw1et9W6SuzM896MJ2w9O2HeaMossDwCwVEsbdqy1PkrSaybBj+67t6gyiywPALBsy57zdTPJ67MMm6HLO0P3DwfrcrUtM2TSUGLb8gAAnVvqOl/J60VPB0N+H9Zarw/tu5bkeq314gxlDpMM5p9dTnIryXfNsOjU8i3rbJ0vAGAmbdf5Wnr42kTCFwAwq5UvsgoAwJuELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCFwBAh4QvAIAOCV8AAB0SvgAAOiR8AQB0SPgCAOiQ8AUA0CHhCwCgQ8IXAECHhC8AgA4JXwAAHRK+AAA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDokPAFANAh4QsAoEPCF8AKvXj5Kn/9vpcXL1+tuipAR36x6goA7KoXL1/l46++zeOnz3Ph3Jn86Xe/ybtvv7XqagFLpucLYEUePHmWx0+fJ0keP32eB0+erbhGQBeEL4AVuXT+bC6cO5MkuXDuTC6dP7viGgFdKLXWVddh7ZRS9pIcHR0dZW9vb9XVAbbYi5ev8uDJs1w6f9aQI2y44+Pj7O/vJ8l+rfV40uPM+QJYoXfffiu/ev9g1dUAOmTYEQCgQ8IXAECHhC8AgA4tfc5XKeWLJL3m7kGt9da8ZUopB0k+TfJJrfWjkX1Xknye5Jskj5J8lOS7Wuvd0/8UAACLsdSeryZEpdZ6p9Z6J8n9UsrtecqUUi6nH7wOkrw35ikOklxJcru5PRS8AIB1sdSlJkopPya5UGvtDW2rtdYyb5lSytUkN2qtH4zZfm+4/CnqbakJAGAmbZeaWFrPVynlMP0hw96YfVcWVWYRSinvlFL2BrckVjoEAJZimXO+Dids76U/NLioMuN8Wkr5If1hyYu11utTHn8jye9neH4AgFNZxdmOg1C0rDL30x92vNvMGXtYSvl6SpmbSfaHbr+csX4AAK207vlq5lJ91uKhN2ut90/YP2vwmqlMrfXRyKY/JrldShk7nNmU+SnJT4P7pUyckgYAMJfW4as5Y3CWswZHQ9DAwQn7TlPmZ0opV4fPbqy19powdZh+r1hrx8cT58oBAPxM29ywtDlftdZHpZReKeVwtDeq1npvUWWGNet/fV1KuTgo32xLWoa3xtkkef/992coAgCQpJ8jVnZh7Zvpr7l1J3k9dHlnsLM5u/HqyCKqJ5YZ8sZQZNPLdWskuF1LcnfGpSf+M/15X8+a+2eT/G1kG7PTjoujLRdDOy6OtlwM7bg4q2rLs+nniImWus5X8nrR1EEY+nD4zMNSyrUk12utF2coc5hkMP/scpJbGVrBvunpujb0dOdanO047WfYS3KUKet2cDLtuDjacjG04+Joy8XQjouzzm259PC1Ddb5Bdwk2nFxtOViaMfF0ZaLoR0XZ53b0oW1AQA6JHy181OS/5mh5Sg4Fe24ONpyMbTj4mjLxdCOi7O2bWnYEQCgQ3q+AAA6JHwBAHRI+AIA6JDwBQDQoWWvcL/xmgVfe83dg5HV+BmjWej20ySf1Fo/GrNfm86gaa8kuZgktdbPx+zvNXe15xhDv5NJvx0Pk/zL8JUvtOPplFK+Gf0715bTlVKuJPk8yTfpLyr+UYYWDG8eox1nUEr5MsnD5u4P69yWwtcJBh96tdbBpY6ulFJuj3748XellMtJfp3+xdDfuASUNp1NKeXLkSs83B7+sNOerX2Z5Muha77eTvJ1+h942vGUmsu/XRnZpi3bOUi/7a6mH76+HBMWtGMLzZer/5Pkn5vLDF5O8h9JSrN/7drSUhMnKKX8mOTCyLfjWmstq6vVZmjelG/UWj8Y2a5NWxpcKD79HsRes23wpnKxuRC99myhlPJNkm8G33abN+MbtdZ/aO5rxxkN9SbeHm4nbdlO8x55b9J1h7Vje82XqYfDvVmllCu11nvN/9euLc35mqC5huTBuD+MpruYGWnTU/l1+kNkA4Nrnh5oz/ZqrR+NDDN8mGTwxqwdT+fTJH8c3qAtF0M7zuxakrullMNB+wwFr7VsS8OOkx1O2N5Lv7uY2WnTGTRvFv8wsnnwZvEo/WA2Ti/ac6Kmx+EgySfNJr+XM2o+tO6N2aUtZ/NpKeWH9KdoXByaYqAdW2rCVZJcTv998dFgWkETwNayLYWv2Q3+UFgcbdrejSSfN/MaJj1Ge44xNEx2kP4bc29KEe042UEz7H3Q8vHa8k33k2RoHuK1UsrXtdZPTiijHd80CFe9Wuv9JCmlXE/yOG9+eR220rYUvmbnF3/xtGkLzZk8/zaYNHoC7TlGE7YGE26vDeaBnFBEO45RSrnW4ndwlLYcMQhdQ/6Y5PaUQKsdJ/vL4D/Nl9ODKcOKK21Lc74mG/3DGDg4YR8n06an1AyVPRyZt6Q9W2jehL8c+VC7l7+fbaYdW2pO+PjLCQ/Rli01f9OvDfXEHkY7zmJSe/Syxm0pfE3QfCvpDY0nD+8bN9eBKbTp6QxNIB302hyUUg61Z2uHSb7Iz7/pHjT/9rTjTN5LcqWU8kVzxuiXSf/s0VLKVW3ZzuBM5uF2Gvpy8Eg7tte01aO8ObfrIMlf1rUtha+T3czQGjbNN5VZu9t31aQuXW06g6an4XKS+82ZPIfpn9nzQ/MQ7TlFMw/k1sgwz2dJ7g+9+WrHFmqt92qttwa3JLeb7beG1qjSllM0vVyjv5PXktwd6gHTju1dT/9vOsnPlvG432xau7a0ztcUzbe7wR/Ih8MLXvKmJhxcTf8P4XKSWxm/arM2naL5Jvw4Y87IGVlXSXtO0bTltaFNF5NcH7PCvXZsqfkA+yz9v/db6a+jNji9X1tOMeZ38txoO2nH9kop1/L398q1b0vhCwCgQ4YdAQA6JHwBAHRI+AIA6JDwBQDQIeELAKBDwhcAQIeELwCADglfAAAdEr4AADokfAEAdEj4AgDo0P8HKEq58vhxTAsAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmwAAAGKCAYAAACxYB0nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAArkUlEQVR4nO3dv2/cVr738c/3ySJGDFiatQoDF5tCo8LtQtlUC6RZuUmVQrb/gpWKLdJZcHXxVIZdLJAihXT/gsQutkpj3SZAqmyEtC4sF957ARe2RzIe+8YXxvcpeCjTFGeGHJLDw5n3CzCSIeeQR2fmcL48v2juLgAAAMTr/3SdAQAAAExGwAYAABA5AjYAAIDIEbABAABEjoANAAAgcgRsAAAAkSNgAwAAiBwBGwAAQOQI2AAAACJHwAagV8xsx8yGXeejD8zslpkNus4HFht1srw6ddJ4NBWaYmZbku5KGkq67u6HE967Gd77J0l77n4wn1yey0fpPPdV+Bt33f1622nNbF/SXXc/zm0fKCnnUdj03N3vzZCfbUnDWdI2IfN3/CJpIGnN3feaTFv1HNM+IzO7P8tnnzv+wtaRcC36T0l/cfejOZ+7sL6Mee9Q0q6k55LWwuY77j4qeO9A0u3wXklSvs5UOd6UfFEnq79vtjrp7kv1T8kXq/fniPmfJJe0VfK9LyXt9CnPffgXLhb74d9jSQ/bTitpM5TjMLd9GD7nYWbbLUn3Z/ibSv8dLZXrY0mDzOvtsn9H2bRl3lflMwqfy34Df3sndaTt62kon8eSNuf8dxXWlzHvHSgJ7D4ol6LPPRz3Ye479DD72VU5Xol8UServ2+mOrlUXaLhTmqz7+fogVGF975oKxMVjbrOQJPcfeTuu+6+K6lSq0GNtLtjtu9LOvRMK4Ind+Pbob6UdTf864SZ3ZJ05JkWCHd/IGlr2t9RNm3Z91X5jDxpNRo20GU1mvqOhs3jeuruR+6+4XNuXdP4+lJkR9J32Q2hPh2FFtCs+0p6LUbSWavPn2ocbxLq5Ax5mbVOLlXAJqnKFzHmcwBRMbMdJYFZkS1JPxdsP5Z0s8Jp/uTddsfd1Pi/Y1q9L5u2zjkmuSupVDdRZBbyejqlvhTZUImyCMdVNvgMwf3vc3Wn1PFKoE7OnpfKdXJpArbMmKlenwOITbiDf6HkwpTfN+kOcqSSrSdhnMw/Z8hekzZV3Mp0LOlaQ2nrnGOs8KN6Y9b0XVjU6+mk+jLBL5Luhlac7HE2cwHTrqQyAVTZ441FnaxXd2epk7+r8ua+Cl+stMB2zSz9/71s82W4QNxU0g+9IemxZwbDh6bioZLKdllJ/73c/V7Zc4zJ39jz5gbn/zUkSc/9uaS/5v6GsXls4HzXJF0Pr9M7hmtK+uLzlXyQ3u0Fn5Upi2n5m0WZMilI84uSCnikZCDugynltqPkYrmp5IK5G/7thPPthe/JlpIuC4Xj3gsXyifqcPJFTTuZv+MD7n5sZpPSlu0SuKlcF4509tnu6f33NT3emt6X+6jkOcbKBJ5FXfgvNCHwLJu2zjlKemFmm011/eXriJIfpnMTicLA+i1JcveNsC07keEvIc1n4T27Fa7Z6cD5x2HThucGeU+5bg+VtHTl8zzxmlGzzo6tL+O4+4GZ7SoJsm4q+c5f1/lu1aGk70L5pfleU24yQYXjTUKdrF93q9XJqoPe+vxPyQDP7TH7tpT8AGe3/aIwIF7Jly4/8HdL5wdujj3HLOfNbHup5MKSHbh9X5mBi2Xy2MD57mf/Pr0fODvIpX2YO95m2D7IbX+cPXfZ/FUo37Kf20t9OCj3btV8hXO5MoOXlQyu/yWXbkfnBwA/rvK9qVgG9/OfR1NpQ7lsZv6OokkHv6hggG1478uS+fglf9yCY+UHWm8XfedqfI8K63aoJ2P/jrJpZz1H2c83vG/mCT7T6kjuffnryd18/cl8bvvhu7NdUMcmXbM3C+rWUJmB3xXrf+lr/ax1tkx9KfEZelG5ZI73UB9eg85du8ocr0ReqJPN1N3SdXJpukRL2Nf55vc7et/HPFSuNcCTVqXHqmfaeVMvJF32D6d//6wP+8bL5LHu+baVaXL393cG+UGt97MvwvsOC86dVzZ/ZVX+3EJr2Xf+4Z3z1HyFssqPyzqWtJm7mx54pkXSkzEmG54MUO2bMneHf5V0I1sGoQXgSOUnnaStHeOMlPzIjtINoTzTVp/0vPtm9rDKvxJ5u1zyb6iTts45Ui+UtAzXNqaOZM+TN66+jaSzOvDAQwtcSfeVGwcW6uCR3n/mZet/Ns9T09SoszO3cIbuy7R77VjS/dB6mTr7jviHY9gOJV3Odn+WPN401Mn676tUJ5eiS3Sa0NU11Pn++KOwXe5+aGZDM3sp6Xsld7QPxlywGjtvTn5A4yj7YloeGzrfyMs1ZxdV5J+VrA1U2Ow+Q/6mqvi5DczsrpK7xmxXeJV87Sv5+7KB/qGSVrW0C3Y0y98SGzO75SXWXnL3IzP7TNJtM0t/9NKyLPvjNSjxvSv6zqVlvxvyUqXLp+jY4y6+k364yqatc44yRgpdezUU1pGafqmaIFMni8ZbPVQSEOzOct1u41of8lyqvoxLG/KWXlc2QnC1Y2aPw3HT70dRnfqnksAs7dItc7xpqJP16+5IFeokAVsi/dHdMrN8S1H2y7SuJODYVvLFHqneYotlz5salTjmpDw2cb46PxojTf5yVs1fWWU/t10ld+23zGwr0wpWJV8PlIwLSe+kR+GYu5LSMWy1Z1Vlxg99kJcGf0SnnX+oCoOmQ8tHfmzRoMoxZvRc9YMUufsojMUrOtZAE/6OsmnrnKOCUc304+pIHbNcUyaNGZKSwDINKGa5bjd6ra9aXwrs5lsfPRnrN1LSon8v8/0ZJ3vtmnq8GnmdZuHqZM26O5qw7wNLHbCZ2U74gUsL83BchTSzYeZHZ8/er2j8HwqDZaeco8jU81ZRIo+Nnm8GG5r85Ww8fxU/t7vh7npDSUtZekErnS9PBtkfSboZLtLfh1374XXpWVhTzvNZftByyZbPpgwlXcsMBpfe313eNbMXmjC4OOQ9HfBdxijzA1zFmjLfudCKUKW1duTvVyQ/0vsV4bMuq2DwdU7ZtHXOMc1A9YdwjKsjZc49zqjsyQuu2ZcL0g+ksx/RytftWa/1U8xcX8J149z24I6SoDJ1pOKyvqzQql3xeJNQJ+vX3YEq1MllC9hGRRtDl81IyR3IBz/ImbvIzdBq8iCkGSmZvfSyzDlqnLeKiXls4XxVbep9AHNOS/kr+7ll87FnZttmdtfd92bI13cKj4VJL2Zmls4crfuDmc3nqKljzXDuQ+VaCkM31baSH57jzPa7SgLV7I/VjqQHXuKRPMELJRf1SQFzUXfEtjLfuRrdL1LyuRYtFbCp9zOq66atc45pLivpLqwtX0cK3jLIvZ517NxozPnTOrklKX9D/LmSlm5phvo/Y5qJqtSXgrTH+ZuzjMu5436n4rUNh2Ff1eNNQp2sX3cr1cllm3TwTyWVOb3LyH4xr+v93ZTCewb68AO4nT1Y2J//ck86R5Ey500Nprwuk8emzzfOB8ez99Pkp00emJo/MxuY2S/24bIhk5T53Aa513tKun3Sbscq5XYQjjfKbNtXMmP03Pch8/eUvbOtaqAxYytKnHts2gLp+wYFxzi7KNn75VGqBCBlxjF+8Gy+zPejqQVjD5RbnTyc4yDb8jqmTEulrfC+rIHKfUYfdMvNUI8Gudf5OpI6VCZAy7SmFuVxUHDcrGnX7N1cndzU+R/IMvU/zUupNA3V2cL6MubYd614QsAHi6+GsWcDyzytIHy+x7lxaaWONwV1sn7drdRVvlQPf7f3a+48lAofhrup960go/CedMB+dl2bUUgyUPJhjDLHOHcOMyssZHe3EudN9+0o+WAfhLvbu0ruVIZK7ibv6P1FcVoe657vIPyNl8N70xl/34W/925Ik1bOgXIPwR13nmn5C/sHStZAOvQpD9Cd9rmFC1vR37Af8jaS9H0Y3zExX7nz3tf5NfIe5lqZ8n9Po+uwhc9sEP4OKfncRsqsyTTu3GXS5vJ/W2HJAiXleJj5PAf68MHvKjrOlL9lR9Jn4+7GQ+tH+v1K7/w3at69F50nvekY+3DnCWU6NW3F95X+jML7H2fHLZWtR1XqSOa4/6FkktFI79cy21cS9OyF19dD+iMlgdm5LsGK12wpt+ZYifqfvw7th/9OvI7WqbMl60vR92dLSZmNMocb91nvZ9835vtT+nhj/g7q5Izvy7z/gzo59W9dpoANi8Umjw/EAgkX3F/GXdzCj8NfvZ9Lo7Qu/DhfG/MjQz1CZdTJeibVyXGWrUsUi2XQdQYwH+Gu/9CqPZga7+1p/ASPwRzzgQVBnaxtUp0sRMCGXgpdGV3MdEV39jR+eZfBHPPRK6GuHBcNbKceoSbq5Awm1clJCNjQV/OY1YqIhDv677KD5M1sK4wXlJKFeW8VJl5utyeMG6IeYWbUyZlNqpNjMYYNQK+EH4fDqnenyyj8WB6UHUgOzII6WV6dOknABgAAEDm6RAEAACK3bE86KMXMTNK/SXrVdV4AAECvXJL0395wFyYBW7F/k/SvrjMBAAB66Q+S/qvJA84lYAuD7Ebh5SC/WvUsacKifTckXc+vHp9ZmfuhklWrr0n6ucICfq8k6enTp1pZWSmZBAAALLPT01N9+umnUgs9dK0HbOmU3syjj7bMbH/SlNZpacIaJn/S+GfoDZQ89mNbScB2d5bVlldWVgjYAABA51qfJRoeT7Gee6aip8/RrJMmPCfutrt/VrD9cNap7Ga2Iunk5OSEgA0AAJRyenqq1dVVSVp199Mmj93qLNHwINTBmIfTFj7OYpY0AAAAi6ztLtHhmO0jjX9sxSxpitwwsxdKukw3Jj1g1cwuSLqQ2XSpwnkAAABa1dUs0TSQaivNkSSlqy6b2Y6Z3Xf362Pef1vSv1fMDwAAwFx0tXBu1WCtUhp3zz9U9XtJ22FmaZE7klYz//4wQ/4AAABa0XbANu65YoMJ+2ZJ84Ew6eBMZjxcYXeru//m7qfpP7FgLgAAiEirAVto5RqFiQT5fYdNpckKrWj3s+kzLWs8mBYAAPTOPLpE7yhZE03SWevXQeb1MF13rWyajHPdpKE17V6uS3RH0oNZl/kAAADoUuvrsElnC+GmAdTn2RmbZrYjac/dNyqkGSpZFPempE1J95R5kkFoUdvJHG5t0izRgvyyDhsAAKikzXXY5hKw9Q0BGwAAqKq3C+cCANCUN2/f6denI715+67rrABz19U6bAAAlPbm7Tt9+c2PevL8tdbXLuqHr7/QJx9/1HW2gLmhhQ0AEL1Hz17pyfPXkqQnz1/r0TNWX8JyIWADAETv6pVLWl+7KElaX7uoq1d4giCWC5MOCjDpAADi8+btOz169kpXr1yiOxRRanPSAWPYAAC98MnHH+mPnw66zgbQCbpEAQAAIkfABgAAEDkCNgAAgMgRsAEAAESOgA0AACByBGwAAACRI2ADAACIHAEbAABA5AjYAAAAIkfAhqi8eftOvz4d6c3bd11nBTXxWQJAc3g0FaLx5u07ffnNj3ry/LXW1y7qh6+/4HmBPcVnCQDNooUN0Xj07JWePH8tSXry/LUePXvVcY4wKz5LAGgWARuicfXKJa2vXZQkra9d1NUrlzrOEWbFZwkAzTJ37zoP0TGzFUknJycnWllZ6To7S+XN23d69OyVrl65RBdaz/FZAlg2p6enWl1dlaRVdz9t8tiMYUNUPvn4I/3x00HX2UAD+CwBoDl0iQIAAESOgA0AACByBGwAAACRI2ADAACIHAEbAABA5AjYAAAAIkfABgAAEDkCNgAAgMgRsAEAAESOgA0AACByBGwAAACRI2ADAHTuzdt3+vXpSG/evus6K0CUePg7AKBTb96+05ff/Kgnz19rfe2ifvj6C33y8UddZwuICi1sAIBOPXr2Sk+ev5YkPXn+Wo+eveo4R0B8CNgAAJ26euWS1tcuSpLW1y7q6pVLHecIiI+5e9d5iI6ZrUg6OTk50crKStfZAYCJ3rx9p0fPXunqlUu97UpchL+hjGX5O5fV6empVldXJWnV3U+bPDZj2ACgxxZl/NcnH3+kP3466DobrVqUzwrdoEsUAHqM8V/9wWeFOgjYAKDHGP/VH3xWqIMxbAUYwwagTxgX1R98Vout92PYzOyWpFF4OXD3e3XTmNlA0g1J1939WhPnBIA+WobxX4uCzwqzar1LNAROcvcDdz+QdGRm+3XSmNmmkmBtIOlyE+cEAACIVetdomb2UtK6u48y29zdrW4aM9uWdNvdP6t7zlx6ukQXFN0RAIC2tNkl2moLm5kNlXRHjgr2bTWVpsn0WFzplPqvvv1JX37zI88sBAD0RttdosMx20dKujObSlMrvZldMLOV9J8kpu4sIKbUAwD6qqtlPV6oYOxZC2nKpr8t6STz7181zoNIMaUeQF1v3r7Tr09HtNBj7rp60sEsgVedYG1a+juS/p55fUkEbQvnk48/0g9ff8EYNgAzKfOkAsbJoi1tB2zHY7YPJuybJU2t9O7+m6Tf0tdmpeYmoIeYUg9gVkXDKrLXEx49hTa12iXq7seSRmEiQH7fYVNpmkwPAECRacMqGCeLNs1jDNsdSWezM8NSHAeZ18N03bSyaTLGdXOWTQ8AQCnpsIp//O3Pha1njJNFm+byaKoQkKXdkZ+7+15m346kPXffqJBmKGlb0k1Jm5LuSfrZ3R+USV8iv6zDBgCojDFsy63Nddh4lmgBAjYAAFBVbxfOBQAAQH0EbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQK2BcEDiQEAWFxdPfwdDeL5dQAALDZa2BYAz68DAGD+5tm7RQvbAkifX5e2sPH8OgAA2lXUu9UmArYFkD6QuO7z63gGHgAA5RT1bg1X2+u4JGBbEJ98/JH++Olg5vSMgwMAoLyi3q3//Z//19r5CNggqfhOoU4AuMhoiVwcfJYAZlXUu/W//9Pe+QjYIIlxcGXRErk4+CyBfovhhqtu71YVBGyQ1Nw4uEVHS+Ti4LME+msZb7hY1gNn0juFRf/S15G2RErqtCWShZLri+WzBFDdMi5nRQsbUEEMLZHLeGfZhhg+y7Ji6PoBYrKMw3gI2ICK5jlmoQhdec0p81l2HSwRoAPn9emGqyl0iQI9Q1fe/KTB0lff/qQvv/mxky7oZez6AcpYtmE8tLABPbOMd5ZdaaI1s24L3TJ2/QA4j4AN6KGuu2WXRd1gqYnuTAJ0ABIBGwCMVTdYamq8IQE6AMawAXPGkhz9UmecDOMNATTF3L3rPETHzFYknZycnGhlZaXr7GCBMONv+XQ9yxTA/Jyenmp1dVWSVt39tMlj08IGzBEz/pbPss1kA9AOAjZgjugiAwCGhsyCLtECdImiTXSRAVhmizw0hC5RYIHQRQZgmZUZGkIL3Hks6wEAWAq0bsdh2vqGi9wCVwcBGwBg4REExGPa+oY8L7kYXaIAgIUwqRuNGdpxmTQ0hMlZxWhhAwD03rQWNJ7J2h88jq0YARsAoPemdaMRBPQLj2M7jy5RAEDvlelGY4Y2+ox12AqwDhsA9A+zQNG1Ntdho0sUALAQ6EbDIqNLFAAAIHIEbAAAAJEjYAPQWzy+BsCyYAwbgF5i5XoAy4QWNgCFprVedd26xcr1AJbJXFrYzOyWpFF4OXD3e3XTTNpvZluSdiU9lHQs6Zqkn939wex/BbA8prVexdC6xcr1QDtYHiVOrQdsIbCSux+E11tmtu/uu7OmKXHMgaQtSdtKAra7dYI1vrzlUE6LY9qq8TE8nJmV64Hmlb0Z43o/f/NoYbstaT194e6HZvZQSQvYrGnKHHPd3Ud1Mx9DS0IfUE6LZVrrVSytW6y7BTSrzM0Y1/tutDqGzcyGSrorRwX7tmZJM8sx65jXOJnYxwtNE0s5oRlp69U//vbnwovxtP0AZtP1Na7MI74YP9qNtlvYhmO2j5R0W86Spuwxb5jZC0mXJW24+964TJrZBUkXMpvOvqHzaEnow3ihaWIoJzRrWusVrVuLg+6tOMRwjSsz1CCWFvZl09WyHmkgNUuaUYljHkmSux9LkpntmNl9d78+Ju1tSf9etGMe42T6MF5omhjKCUB1MQQJSMRyjStzs8b40fnralmPqsFamTRn+939OA3Wgu8lbZvZYEzaO5JWM//+kN2Zfnnb+lJOa4Iu00Qdg67LCUB1dG/Fo0/XuLav9zjP3L29gyfjzR67u+W2u6Rr7n5YNY2SWZ8Tj2lm2/lZoWH/Z+5+VCLfK5JOTk5OtLKyUupvrWtalwRdFgnKAWgWLWxx4Ro3P22U9enpqVZXVyVp1d1PGzlo0GrAJklm9lJJoHSc2eb5gKtKmkn7QyvaSyXj1tIu0XTb78vMHO0iYAOArhAkYNm0daPSZsA2jy7RO0rWRJMkmdm2pIPM62G6rlrZNJP2h4DsXq5LdEfSgyaW+QCARUP3FpZNH4cCtN7CJp0tdJsGUJ9nZ2ya2Y6kPXffKJumxDEHSoK01NqkWaIF+aWFDQCABdXHFra5BGx9Q8AGAM2i2xWx6dsYtq6W9VgqXKgALDMmNiBGfVtLsqtlPRbKpJWp0wvVV9/+pC+/+ZEV+gEsnT6OFwJiQ8BW07SAjAvVe10/cgVAN/q0vlgfcC1dTnSJ1jRtZWoe4ZGgSwRYXqyM3xyupcuLgK2maQEZF6pELI9cAdCNPowX6sN4Y66ly4uAraYyAVkfLlRto6URQMz60nLVxLW0D4EpzmNZjwIs69EOLhIAYvXr05G++vans9f/+Nufo73RrnMt7Utg2ld9f9IBIInV1AHEq08TI+pcS5kI1190iQIAlt6yjDdmeEp/0SVagC5RAMCiYnhKe+gSBQAAjZjH8BTWimseXaIAAKAxTGxoBy1sABYWd/nNoSxRFhMb2kELG0pj3AP6hLv85lCWqIKJDe0gYEMpXLDRN6wI35wyZckNHVLLMuN23ugSXRJ1uzNo4kYX6nxv+7SuVuymlWV6Q/fVtz/py29+pNsUrLvZAlrYlkATrWM0cWPe6n5vuctvzrSypDUTaB8B2xJo4mLKj99i6UP3VVPfWwKHZkwqS27ogPYRsC2Bpi6m/Pgthr6MRyQIaE7bATo3dED7eNJBgUV80kEfWlTQnEmf97I85HpeYs9jXwJ0YBG0+aQDWtiWBK1jy2PaD3SfWq5i/972IRhifBmwGAjYgAUz7Qea7qvm9CEY6lOADmA8AjZgwZT5gY695aov+hAMEaADi4ExbAUWcQwblkvs46oWCWUNIMUYNgCV0II2P5Q1gHngSQcAACyQuk+2QZxoYQMAYEH0YeYyZkMLGwAAC4LnPi8uAjagYXRHAOhKOnNZUrQzlzEbZokWYJYoZkV3BICuMXO5O23OEqWFDWgQ3REAupbOXCZYWywEbECD6I4AALSBLtECdImiDrojAGA5sXAu0CMspAoAaBpdogAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyM1lWQ8zuyVpFF4O3P1e3TR19wPoFuvVAUB5rQdsIXCSux+E11tmtu/uu7OmqbsfQLd45ioAVNP6kw7M7KWkdXcfZba5u9usaeruL5FnnnQAtOjXpyN99e1PZ6//8bc/s9gwgN7r7cPfzWyopDtyVLBva5Y0dfdX/RuwfN68fadfn4705u27rrOysHjmKgBU03aX6HDM9pGkwYxp6u4/x8wuSLqQ2cSvx5Kiq24+Pvn4I/3w9ReMYQOAkrqaJfpC0uWG09TZf1vSSebfvyrmDQvi0bNXevL8tSTpyfPXevTsVcc5WlzpM1cJ1gBguq4CtqrBWpk0dfbfkbSa+feHCvnCAqGrDgAQo7a7RI/HbB9M2DctTd3957j7b5J+S1+blZqbgAVEVx0AIEbzmiX6mbsfZ7aVmSU6Nk3d/SXyzCzRnmJtLwBAV3o7SzS4I+lsdqaZbUs6yLwepuumlU3TwH4soHTCwFff/qQvv/mRWZ4AgIXResAWnjAwMLPtEDh9nlvAdkvSbpU0dfdjMTFhAACwqFrvEu0jukT7iSU5AABdarNLlICtAAFbfzGGDQDQhFl+T9oM2Oby8HdgXtK1vQAAmFWMPTZdrcMGAAAQpRjHRBOwAQAAZMS4iDpj2Aowhg0AgOUW2xg2WtgAAMDCefP2nX59Opp5Tc7YnnfMpAMAALBQYpw0UBctbAAAYKHEOGmgLgI2AACwUGKcNFAXkw4KMOkAAIB+62IhdRbOBQAAqGDRFlKnSxQAACByBGwAAACRI2ADAACIHAEbAABA5AjYAAAAIkfABgAAEDkCNgAAgMgRsAEAAESOgA0AACByBGwAAACRI2ADIvTm7Tv9+nSkN2/fdZ0VAEAEeJYoEJk3b9/py29+1JPnr7W+dlE/fP3F3B5cDACIEy1sQGQePXulJ89fS5KePH+tR89edZwjAEDXCNiAyFy9cknraxclSetrF3X1yqWOcwQA6Jq5e9d5iI6ZrUg6OTk50crKStfZwRJ68/adHj17patXLtEdCgA9cXp6qtXVVUladffTJo/NGDYgQp98/JH++Omg62wAACJBlygAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHK/a/sEZnZL0ii8HLj7vbppJu03sy1Ju5IeSjqWdE3Sz+7+YPa/AgAAoDuttrCFwErufuDuB5KOzGy/TpoSxxxI2pK0H/49JlgDAAB9Zu7e3sHNXkpad/dRZpu7u82apsT+bUmH2f0z5HtF0snJyYlWVlZmPQwAAFgip6enWl1dlaRVdz9t8tittbCZ2VBJd+WoYN/WLGlmOSYAAEDftTmGbThm+0hJt+Usacoe84aZvZB0WdKGu++NzaUkM7sg6UJm06VJ7wcAAJinLmaJpoFUk2my+4+UdIk+CGPcHpvZ/SnHvy3pJPPvXxXzBwAA0JrSLWxhbNjNEm+94+5HE/ZXDdbKpDnb7+7HuX3fS9o3s8Ku1OCOpL9nXl8SQRsAAIhE6YAtzLSsMtsyHzilBhP2TUsz9Zhmtp2dFeruIzOTku7UwkDS3X+T9Fv6OrwfAAAgCq11iYaWrlGYKJDfdzhLmmn7zWwg6X52f9gmjQ/2AAAAotb2GLY7StZEk3TWrXqQeT1M11Urm2bS/tDleS/XLboj6UGdZT4AAAC61Oo6bNLZQrdpAPV5dsamme1I2nP3jbJpShxzoCRIS61NmyVakGfWYQMAAJW0uQ5b6wFbHxGwAQCAqnq5cC4AAACaQcAGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAi97u2T2BmtySNwsuBu9+rm8bMBpJuSLru7teaOCcAAECsWm1hC4GT3P3A3Q8kHZnZfp00ZrapJFgbSLrcxDkBAABiZu7e3sHNXkpad/dRZpu7u9VNY2bbkm67+2d1z1mQhxVJJycnJ1pZWSmbDAAALLHT01Otrq5K0qq7nzZ57NZa2MxsqKQ7clSwb6upNE2mBwAAiFGbY9iGY7aPlHRnNpWmdnozuyDpQmbTpRLnAgAAmIsuZom+UMHYsxbSVEl/W9JJ5t+/apwLAACgUaVb2MKYsZsl3nrH3Y8m7J8l8KoTrJVJf0fS3zOvL4mgDQAARKJ0wObuDyQ9qHDs4zHbBxP2zZKmdnp3/03Sb+lrs9LzEwAAAFrXWpeoux9LGoWJAPl9h02laTI9AABAjNoew3ZH0tnszNCtepB5PUzXTSubJmNcN2fZ9AAAAL3Q6jps0tlCtml35OfuvpfZtyNpz903KqQZSkrH021Kuifp59BlOzV9yTyzDhsAAKikzXXYWg/Y+oiADQAAVNXLhXMBAADQDAI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AACAyBGwAQAARI6ADQAAIHIEbAAAAJEjYAMAAIgcARsAAEDkCNgAAAAiR8AGAAAQOQI2AOjQm7fv9OvTkd68fdd1VgBE7HddZwAAltWbt+/05Tc/6snz11pfu6gfvv5Cn3z8UdfZAhAhWtgAoCOPnr3Sk+evJUlPnr/Wo2evOs4RgFgRsAFAR65euaT1tYuSpPW1i7p65VLHOQIQK3P3rvMQHTNbkXRycnKilZWVrrMDYIG9eftOj5690tUrl+gOBXru9PRUq6urkrTq7qdNHpsxbADQoU8+/kh//HTQdTYARI4uUQAAgMgRsAEAAESu9S5RM7slaRReDtz9Xt00ZjaQdEPSdXe/ltu3JWlX0kNJx5KuSfrZ3R/M/lcAAAB0p9UWthB4yd0P3P1A0pGZ7ddJY2abSoK1gaTLBYcYSNqStB/+PSZYAwAAfdbqLFEzeylp3d1HmW3u7lY3jZltS7rt7p8VbD/Mpp8h38wSBQAAlbQ5S7S1FjYzGyrpzhwV7NtqKg0AAMCia3MM23DM9pGSbsum0hS5YWYvlHSZbrj73qQ3m9kFSRcym1i9EgAARKOLddjSQKqtNEeS5O7HkmRmO2Z2392vT0hzW9K/V8wTAADAXJQO2MLYsJsl3nrH3Y8m7K8arFVKkwZqGd9L2jezwq7W4I6kv2deX5L0r0o5BAAAaEnpgC3MtKwy2zIfOKUGE/bNkuYDZradnRXq7iMzk5Lu1sJA0t1/k/Rb5hhlTgUAADAXrXWJuvuxmY3MbJhv9XL3w6bSZIX12e6b2UamS3QQdpcK+LJOTxud4AEAABZYm3FD22PY7ihZE+1AOutWPUh3hlmh27mFcSemyTjXTRpa0+7lgr0dSQ8qLvNxSZI+/fTTCkkAAAAkJXFEo9Fbq+uwSWcL4aYB1OfZGZtmtiNpz903KqQZSkrH021KuqfMkwxCi9pO5nBr02aJFuTZJP2bpFdhUzqm7Q+ZbaiOcmwOZdkMyrE5lGUzKMfmdFWWlyT9tzccYLUesC2CdCFdtbAQ3jKhHJtDWTaDcmwOZdkMyrE5i1aWPPwdAAAgcgRsAAAAkSNgK+c3Sf9XmaU/MBPKsTmUZTMox+ZQls2gHJuzUGXJGDYAAIDI0cIGAAAQOQI2AACAyBGwAQAARK7tJx30XljEdxReDnJPZUCBsHjxDUnX3f1awX7KtIJQXpK0IUnuvluwfxReUp4FMt9JKSnHoaS/Zp+AQjnOxswe5us5ZTmdmW1J2pX0UMlC8deUWQQ+vIdyrMDM7kp6HF6+WLSyJGCbIP2hdPf0MVlbZraf/8HEe2a2KelPkgYqeHwYZVqNmd3NPeljP/sDSXmWdlfS3cwzhvcl3VfyI0k5zig8OnArt42yLGegpOy2lQRsdwsCDMqxhHBD9p+S/hIeUbkp6RdJFvYvRFkyS3QCM3spaT13F+7ubt3lqh/Chfy2u3+W206ZlhQuQveVtFSOwrb0QrTh7seUZzlm9lDSw/SuOlzAb7v778NryrGiTKvlfracKMtywjXycNxzrinH8sIN2ONsq5mZbbn7Yfj/hShLxrCNEZ5ZOiiqTKEpGxVRpjP5k5Luu1T6jN0B5Vmeu1/LdYF8Lim9mFOOs7kh6fvsBsqyGZRjZTuSHpjZMC2fTLC2MGVJl+h4wzHbR0qaslEdZVpBuMD8Prc5vcAcKwnmioxEeY4VWjYGkq6HTXwvKwo/dIcFuyjLam6Y2Qslw0c2MsMfKMeSQkAmSZtKrovH6ZCHELQtTFkSsFWXVi40hzIt77ak3TBOY9x7KM8CmS68gZKL+WhKEspxvEHokh+UfD9led6RJGXGVe6Y2X13vz4hDeV4XhqQjdz9SJLMbE/SE52/4c3qXVkSsFXXqw+4JyjTEsIMqO/SgbMTUJ4FQoCWDjreSce1TEhCORYws50S38E8yjInDdQyvpe0PyUIphzH+2f6P+GGdjCly7N3ZckYtvHylSk1mLAPk1GmMwrdeI9z47AozxLChftu7ofwUO9n6VGOJYVJL/+c8BbKsqRQp89kWnyHohyrGFceIy1YWRKwjRHufkaZ/vHsvqKxG5iCMp1NZhBt2jo0MLMh5VnaUNItfXhHPQj/HVGOlVyWtGVmt8JM27tSMuvWzLYpy3LSGeDZcsrcUBxTjuWFsjrW+bFqA0n/XKSyJGCb7I4yawyFO6KqXQHLalxzM2VaQWjR2JR0FGZADZXMiHoR3kJ5ThHGtdzLdUHdlHSUuWBTjiW4+6G730v/SdoP2+9l1hCjLKcIrWn57+SOpAeZljbKsbw9JXVa0gdLphyFTQtRlqzDNkW4i0wr1efZRUxxXggotpVUnk1J91S8ejdlOkW4436igplMuXWvKM8pQlnuZDZtSNoreNIB5VhS+NG7qaS+31Oyzl26lAJlOUXBd3ItX06UY3lmtqP318qFLEsCNgAAgMjRJQoAABA5AjYAAIDIEbABAABEjoANAAAgcgRsAAAAkSNgAwAAiBwBGwAAQOQI2AAAACJHwAYAABA5AjYAAIDIEbABAABEjoANAAAgcv8fhrYXFAzN4joAAAAASUVORK5CYII=\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') From 93bc4c38195afe057e7ed6f0f7dc9f8710538cab Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 14:53:19 +0000 Subject: [PATCH 198/220] docs: padding parameter in example 4 fixed --- examples/04_fit_example.ipynb | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/examples/04_fit_example.ipynb b/examples/04_fit_example.ipynb index 3fe8fabc..06bfc29d 100644 --- a/examples/04_fit_example.ipynb +++ b/examples/04_fit_example.ipynb @@ -46,7 +46,7 @@ } ], "source": [ - "fP = pe.Corr(pe.input.json.load_json(\"./data/f_P\"), padding_front=1, padding_back=1)" + "fP = pe.Corr(pe.input.json.load_json(\"./data/f_P\"), padding=[1, 1])" ] }, { @@ -91,6 +91,7 @@ "\n", " Goodness of fit:\n", "χ²/d.o.f. = 0.002332\n", + "p-value = 1.0000\n", "Fit parameters:\n", "0\t 0.2036(92)\n", "1\t 16.3(1.3)\n", @@ -255,11 +256,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "(Obs[0.57(35)], Obs[0.49(25)])\n", - "(Obs[2.53(35)], Obs[0.56(25)])\n", - "(Obs[4.17(35)], Obs[-1.52(25)])\n", - "(Obs[5.97(35)], Obs[-1.40(25)])\n", - "(Obs[7.82(35)], Obs[-0.58(25)])\n" + "(Obs[0.53(35)], Obs[0.38(25)])\n", + "(Obs[1.73(35)], Obs[0.59(25)])\n", + "(Obs[3.92(35)], Obs[-1.23(25)])\n", + "(Obs[5.73(35)], Obs[-1.18(25)])\n", + "(Obs[7.74(35)], Obs[-0.40(25)])\n" ] } ], @@ -311,10 +312,10 @@ "Fit with 3 parameters\n", "Method: ODR\n", "Sum of squares convergence\n", - "Residual variance: 0.4144435658518591\n", - "Parameter 1 : 0.26(28)\n", - "Parameter 2 : -0.228(53)\n", - "Parameter 3 : 0.98(22)\n" + "Residual variance: 0.08780824312692749\n", + "Parameter 1 : 0.06(25)\n", + "Parameter 2 : -0.160(47)\n", + "Parameter 3 : 0.80(18)\n" ] } ], @@ -340,7 +341,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk8AAAFzCAYAAAAnl+0lAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA56klEQVR4nO3deXyU1aHG8d9JgIQlCyABBUHZVARFEFDUuhDc6oKKIKVurYK2FZDbYmlvW72tUmmLiloFbdW2oAgudUMFXHEBBVFwY1M20SiQhDWQ5Nw/zgQCZplJZua8M/N8P598kkneSR4bmjw571mMtRYRERERCU+a7wAiIiIiiUTlSURERCQCKk8iIiIiEVB5EhEREYmAypOIiIhIBFSeRERERCKg8iQiIiISAZUnERERkQg08B0g2owxBjgE2Oo7i4iIiCSULOArW8sO4klXnnDFab3vECIiIpKQ2gEbarog5uXJGJMLDAEutdYODPM544DC0MNca+3ECL7kVoB169aRnZ0dwdNEREQkVRUXF3PooYdCGHeuYlqejDG9gOOBXKBFmM8ZB2CtnRp6nG+MmWKtHRnJ187OzlZ5EhERkagz8TgY2BgzGBhvre0dxrVbgMOttYWV3mettSbMr5UNFBUVFak8iYiISFiKi4vJyckByLHWFtd0baBW2xljOuJu0xVW8bH8ap6TYYzJrnjBTfYSERERiYlAlSegYzXvL8Td+qvKeKCo0osmi4uIiEjMBK08VWcz1c+ZmgDkVHppF69QIiIiknoSZauCaiebW2tLgJKKx26bJxEREZHYCNrI0+pq3p9bw8dERERE4iZQ5clauxooDE0cP/Bjcz1EEhEREdlPvMpTlbfdjDEdK/Z1qmQCkF/pmsHA1BhmExEREQlbTMtTpXI0EuhljLk9VIYq5Ic+tldoN/FcY8zg0LV9It0gU0RERCRW4rJJZjxpk0wRERGJVMJukikiIiISdImyVYGkgj27oGGme/uNv8CWL6F0N2AhrQGcNAbyjoSiDWDSIPtgj2FFRCRVqTyJP6W7Yc1bsPwlWDkXdhXBL5eDMbDqVSjdBQ0yXVEq2w3lpe55b90FC6dAszbQeQB0PQs6nQEZOplHRERiT3OexI+tX8PfT4CdWyC7HXQZCIf2g2OGQFp6zc8t/go2LIJ1C2HFHPj2UzjtN3DaTVC2B9Ibxue/QUREkkYkc55UniR+vnwLPnsOzrrNjS69fTd0PA1ad3eP62rzF5CZA01awLw/wtp34fTxcNjJUYsuIiLJTRPGJVi++gAe+iE8fC6sfh12bHbv738DtOlRv+IE0OJwV5wAOpwIJcXw8A/hkQug4NP6fW4REZEDqDxJbL04HqaeDjs2wWXT4br50LRl7L5e53wY+QYMnQbFG+D+k2HTqth9PRERSTmaMC7RZy2Ul0F6AzioC5z7F+h9tXscD8bAUee5eVSfz4aWnVymTStdHhERkXrQyJNE17Zv4fHL4aXx7vHxP4G+18avOFXWIAOOHuTe/vwFuLcfvHa7K3YiIiJ1pPIk0fPlfLj/JFjzDnQ4yXea/XU5E37wK3j9zzB9KOws9J1IREQSlMqT1J+1bu+lRy6Ag7rC9W/vG/EJivSGbgXej5+A9e/BA2dA0XrfqUREJAGpPEn9GeO2CzhpFFz+NGS19p2oep3OgBGvum0MmgU4p4iIBJb2eZK621YAGz+CLvlu9Km+Ww74sGExbPsGjjjHa4yC4l0UbC2p9bq8rAzysjPjkEhEJLVEss+TVttJ3RR8BtMvBQz84j03OTsRLXoYPvgPXDwVegz2FmPagrXcNW9FrdeNHtCFGwd2jUMiERGpjsqTRG79IvjPxZB9CPzo8cQtTgDn3eGOdHlyhDsW5uiLvMQY3q89A7vtu424smAbY2Ys4c6hPemc12zv+/OyEvh/axGRJKHyJJFZuwD+cwm07uaKU+Nc34nqJy0dLrwHyvfAE9dAWkO3R1Sc5WVnVnk7rnNeM7q3zYl7HhERqZ7Kk0Qmpy0cdb7b+DKjWe3XJ4K0dBh0PzRsAtkH+04jIiIBp/Ik4VnzDrQ6AnLawUX3+U4TfekN4ILJ7u3S3VC0zu1MLiIicgBtVSC1W/M2/PsieH2i7yTxMe8W+OfZsGWN7yQiIhJAGnlKMREvid+wCKYNgXbHQ/4f4pAwAE6+ET573s3t+unL0KSF70QiIhIgKk8pJqIl8cfsgX9fDHlHwrBHoWHjOCQMgKYHuZ3IH8yHx69wG3/6OJtPREQCSb8RUkxES+JXzYLmh8HwWZCR5SGtRy07wZB/wb8uhE+e9roHlIiIBIvKU4oJa0l82R53FtxxP4ZjLkvdUZfDT4Hr3oS8br6TiIhIgGjCuOyvdLfbAHP+He5xqhanCq2PdsfOLJ3ljqIREZGUp/Ik+1gLz/wC1r4L7fr6ThMcZaXw9mQ3/2lXjccdiYhIClB5kn3e+Ct8NAMG3QeHneQ7TXCkN4BLH4bt38HzY13JFBGRlKXyJM769+DVP8Fp4zU5uiotOsL5d8LSmbBkuu80IiLikcqTOK27w1m3wQ/G+U4SXD0Gu0n0i/+l0ScRkRSW4rOBhZLQHJ6GjeHEn/vNkgjO+QuYNDeJXEREUpJGnlJZWSnMuXnf21K7Rk2gYSZ8vRQWPew7jYiIeKDylMpe/RN8tdi9nepbEkTqsxfgubHw1Qe+k4iISJypPKWq5S+5vZz6jvCdJDGdMhbadIenroM9u3ynERGROFJ5SkVle+CFX0LXs90O4hK59IYw6H7YvBpevdV3GhERiSOVp1SU3tAddjvoPkjTP4E6a90NTv+N27pAm2eKiKQM/eZMNR/NhJJt7uDbJi18p0l8J/4CfvYuZGZH9dM+unDtfq9FRCQ4VJ5SyafPwpPXwMdP+U6SPNIbQrNWsH0TrJxLQfEu7piznILius+DmjxvBdMWuNI0bcFaJs9bUefPFY08IiKyP5WnVLFlDTz9czjqfLfRo0TX23fBjMsp+GoNd81bQcHWkjp9msnzVjBpzvL93jdpzvI6F6iCrSX1yiMiIt+n8pQKykrhyRGQmQMX3KMNHmPhlF9CZq5bwVhHVRWnCvUpUCIiEl0qT6ngi9fd2XUXT4XGub7TJKfMbDh3Iqx9p05Pr6k4VVCBEhEJBu2MmAo6D4BRi6H5Yb6TJLejzocOL8IKWPl1UdhPe3Th2r1znGozac5yvinexbC+7cO6fmXBtrBziIhIeFSeklnJVlj2JBx3uYpTvPS/AVasYszMpTH7EtMWhF+2REQk+lSektnsX7uVdZ0HQE67Ki+pvCT+1ot6xDNdcso+GFjFnUN60DnXQEbtWxhEMvIEMLxf+4hGnsbMWBL25xYRkdrFpTwZY8YBhaGHudbaibVcnw+MBOYAq4GBwHvW2lmxzJlICop3MW3BWob3a09edub3L/j4KVjyH7jw3mqL04FL4ltnZzJqQJfY5EkxnRdPoHuzYrhsWq3X3npRD1pnZ9Y65wlg7MCudf4eiYhIdMR8wnioOGGtnWqtnQosNsZMqeVpuUA+MCX0skrFaX81LkEv2gDPjoFuF0LP4VU+X0viY6xLPnz2HKx6JazLRw3owtiBXWu8RsVJRCQY4rHabjwwteKBtXYuEM5ptIdba421tlOodEm43nsQGjaG8+6sclsCLYmPg04DoH1/d+u0bE9YT6mpQKk4iYgER0zLkzGmI+42XWEVH8uP0tfIMMZkV7wAWdH4vAntjN/BT16s8vgVLYmPrbysDEYP6OJuXZ5zO3y3HBY9HPbzqypQ9SlOe/NkZdTp+SIi8n2xnvPUsZr3F+JuzdVkiDFmM9AC6GStvama68YDf6hTuiSw31L04o2w9WtoexzQHHbsv1xeS+JjLy87kxsryk/2MXDSKGjcPKLPMWpAF76pNIesPiNO++UREZGo8LXarqIUVWcxgLV2NYAxZoQxZqa19tIqrp0ATKr0OAtYH62gQVf1Sqr5UfncWhIfBQP/r05PG9a3PdMWrA27vIqISPz4Kk81Fae9pamSx4Epxpjv3QK01pYAe2cpmxQ7euTOoT3pnNcMlj0Fb90B502CtsdXea2WxHuy/TuY+wc47TeQ09Z3GhERqadYl6cDS1CF3Bo+hjFmcOXVddbawlAp6khoVEqcznnN6J75Hbw/Hvr9CPoOqPZaLYn3JL0hfD7bvX3hvX6ziIhIvcV0wnhoBKkwNHH8wI/Nreo5xphcYGbl54TeBzUUrpT2yp+gWR7k31LrpVoS70FmDpx6E3wwDb752HcaERGpp3hsVTABt2cT4EaVqLR1gTGmY8VeUOBGmYCJB9y6GwHMqmrVngDn3wnDHoOMZmFdriXxHvS+GlocDnNSdm2DiEjSiHl5Cu0mnmuMGRwqTn2stSMrXVKxm3hlE4wx4ypegJbVTBZPWXlZGYw+qRV5dpMb2cg7KqLna0l8nDVoBGf8r9s0c9Mq32lERKQejLXWd4aoCu31VFRUVER2du3niiWs8nJ45HzYVQTXvVnlZpjh+O1TS/cuidfZdjFWXg6FX0KL6nbw2GfZhiLOu3s+z91wMt3b5sQ+m4hIiisuLiYnJwcgx1pbXNO18bhtJ7Hwwb9hzXw48491Lk7A3tV0WhIfB2lprjiV7oailNlNQ0Qk6ag8JaKtX8PLv3Pn1nU63XcaidST18LjV0KSjfqKiKQKladE9NJv3ByaM//kO4nURe+rYMP7sPxF30lERKQOVJ4S0Wnj4ZIHqzy7ThJAx9Ogw8nwyq1uHpSIiCQUladEUrIN9uyEg7q4X8CSmIxxK+++WQqfPO07jYiIREjlKZG8/L/wz7M1WpEMOpwIfa6BRuHtzSUiIsHh62w7idSXb8Gih+Dcv7pVW5L4fvg33wlERKQO9Fs4EezZBc+OgkP7wfE/9Z1GomnTKnjptxpNFBFJICpPieCNiVC4Fs6frFGnZLP9O3jnHvjsWd9JREQkTPpNnAja9YUzb4W8I30nkWhr3w8OPxVe/4v2fRIRSRAqT0FWXu5+oR5xNvQb4TuNxMqp49zKu89n+04iIiJhUHkKsgX3waPDoLzMdxKJpcNOhg4nwVt3+k4iIiJh0Gq7oNryJbzyJzjuckhL951GYqzg1Nsp2JMBG4oAWFmwbb/XFfKyMsjLzox7PhER2UflKYisheduhMYtYMDvfKeROJi2KoO75q0AVuz3/jEzluz3ePSALtw4sGv8gomIyPeoPAXRRzNg1Svwo8chI8t3GomD4f3aM/BQC09fD2f8HtoeV+V1eVkZcU4mIiIHUnkKop2F0HM4dD3LdxKJk7zsTPKyukJOCSy/G/o+4TuSiIhUQ+UpiE64TsvWU5ExcNJoePJa+HoptOnhO5GIiFRBq+2CZPnLMPcWKCt1v0gl9Rx9MeS0h7fu8p1ERESqofIUFCVb3STxjUu0ui6VpTeA/r+A71ZA2R7faUREpAq6bRcU8/4IOzfDeXfEdNSpoHgXBVtL9j7WkvgAOv6n0HeERh9FRAJK5SkI1i2EhVPhrFuh+WEx/VLTFqwNLYnfn5bEB0h66P+WGxZB7mHQtKXXOCIisj+VpyD4fDYcchz0uy7mX2p4v/YM7Na61uu0JN6zXcXw8PnuFt7pv/GdRkREKjE2yVZ1GWOygaKioiKys7N9xwlfyTbIaOY7hQTJ7F/DR4/BjR9Do6a+04iIJLXi4mJycnIAcqy1xTVdqwnjPn37OSyd5bYlUHGSA534MzcCtfhfvpOIiEglKk++lJfDMzfAaxOgbLfvNBJEue2hx2B45163fYWIiASC5jz58t6DsG4BXPUCNND8IqlG/xsgqw2U7oJ0jU6KiASBypMPhetg3i1w/E/gsJN8p5Ega9NDO42LiASMbtv58M497sDf/Jt9J5FEUFoCb/zVbV0gIiLeqTz5MPCPcMUzkJnjO4kkgrSGsGQ6vDXZdxIREUHlKb62b4KNH0GDRtBKG1BKmNLS4ITr4dNnYMsa32lERFKeylM8vfhr+M/FsGeX7ySSaHr+CDKy3U70IiLilcpTvKyYA0sfh4H/Bw11ZpxEqFFTOP5qWPSIO0RaRES80Wq7eCjZCs+OgU5nwLHDfKeRRNXvOvdvqJG2LBAR8UnlKR5evx12bobz7gRjfKeRRJXVxr2A25Ve/5ZERLzQbbt46D8KLn0EmnfwnUQS3e7t8M9z4JP/+k4iIpKyVJ5iqbQEdmyGZnnQ9UzfaSQZNGoKJg3e/bvvJCIiKUvlKZZenwj3nQS7d/hOIsnkhOvd0T4bFvtOIiKSklSeYuWrD2D+HdD7KmjUxHcaSSZHnAM57WHhA76TiIikJJWnWCgtgad/Bq2PhlPG+k4jySYtHfr8FFbOdf/WREQkrrTaLhZenwjfrYARr0F6Q99pJBn1uQb6XgsNMnwnERFJOSpPsXDkuZDbHtp0951EklVGaK+nHZvdzuPp+r+yiEi86LZdNJXuhrJSaNsbel/pO40ku+KvYFI3+Px530lERFJKXP5cNcaMAwpDD3OttRNj8RzvXr8dvnwTrp7t5qWIxFL2IXBIT1gwFbpd6DuNiEjKiPnIU6gEYa2daq2dCiw2xkyJ9nO827DYra7rPFDFSeKn7whYMx++XuY7iYhIyjDW2th+AWO2AIdbawsrvc9aa6s9W6Iuz6l0XTZQVFRURHZ2dr2yh23PLph6GjRoBNfM0yRxiZ+yPXBnD+hyJlww2XcaEZGEVVxcTE5ODkCOtba4pmtjOvJkjOmIu+VWWMXH8qP1HO9e+SNsXgWD7lNxkvhKb+i2LdhV5M67ExGRmIv1nKeO1by/EMiNxnOMMRlA5fXaWWEli6Y2PeCs29y+TiLxdsovdUiwiEgc+VpttxloEaXnjAeKKr2sr1+0CJSVutfHXub23BHxwRgoL4PlL7nXIiISU77KU6TFqabnTAByKr20q2uoiD01EmbfFLcvJ1KtjR/C9CGw4mXfSUREkl6sy9Pqat6fW8PHInqOtbbEWltc8QJsjTRknSydBctmQbs+cflyIjVq28vtL7Zwqu8kIiJJL6blyVq7GigMTQI/8GNzo/WcuCtaD8+Nhe6Docdg32lEnD7XwKpXYNMq30lERJJaPG7bTQD2rpIzxgwGplZ63LFiX6dwn+NVeTk8dZ07HuOHf/WdRmSfoy+CzFxY9JDvJCIiSS3m5Sm0M3iuMWZwqAT1sdaOrHRJPjAywuf4U14KBx/rtiVo3Nx3GpF9GjaGU8dBqyN9JxERSWox3yQz3rxskikiIiIJLTCbZIqIB5tWwVt3+U4hIpK0VJ5Eks03H8Oc38PXS30nERFJSipPIsnmiHMh62B47x++k4iIJCWVJ5Fkk94Ael0JHz0Ou2q8bS8iInWg8iSSjHpdAaW74KMZvpOIiCSdWB8MLCI+5LSF8+6ADif5TiIiknRUnkSSVe8rfScQEUlKum0nksw+fAzm3uI7hYhIUlF5Eklm27+Fd+6B7d/5TiIikjRUnkSSWc/hgIEP/u07iYhI0lB5EklmTVq4A4Pff8gdai0iIvWm8iSS7Pr8FArXwOpXfScREUkKWm0nkuza9YErn9W2BSIiUaLyJJLsjIHDf+DettY9FhGROtNtO5FUYC08NhzmT/KdREQk4ak8iaQCYyAzF95/WBPHRUTqSeVJJFX0vgqK1sLqV3wnERFJaCpPIqmi3fGQdzQseth3EhGRhKbyJJIqjIHjr4bVb0DJNt9pREQSlrHW+s4QVcaYbKCoqKiI7Oxs33FEgmX3digvhcwc30lERAKluLiYnJwcgBxrbXFN12qrApFU0qipe12yDRo2gTQNPouIREo/OUVSzZY18LcjtOO4iEgdqTyJpJrc9u5FE8dFROpE5Ukk1Rjjti34/AXY+o3vNCIiCUflSSQVHTME0hrAkmm+k4iIJByVJ5FU1Lg5dL8ENq30nUREJOFotZ1Iqjp/MqTrR4CISKQ08iSSqtIbuHPuvvnYdxIRkYSiPztFUtkH/4bnx8LYT6FZnu80IlJPBcW7KNhaUut1eVkZ5GVnxiFRclJ5EkllR50Ps8e5ieMn3+g7jYjU07QFa7lr3oparxs9oAs3Duwah0TJSeVJJJU1aQHdBsGiR6D/aO04LpLghvdrz8Burfc+XlmwjTEzlnDn0J50zmu29/15WRk+4iUNlSeRVNf7KvjoMfjyDeh4mu80IlIPedmZVd6O65zXjO5tdaZltOjPTJFU1/4E6HKmO+9ORERqpZEnkVRnDAyf6TuFiEjC0MiTiDibVsGX832nEBEJPJUnEXFevx2euQGs9Z1ERCTQVJ5ExOl9FWxeDV++6TuJiEigqTyJiNP+RDioKyx62HcSEZFAU3kSEccYN/r06bOw/TvfaUREAkur7URkn2OHwXfLoWy37yQiIoGl8iQi+zRpAeff5TuFiEig6badiOyvrBTe+wdsWOQ7iYhIIMV85MkYMw4oDD3MtdZOrOX6fGAkMAdYDQwE3rPWzoplThEJSUuHd/8OhxwHlzzoO42ISODEdOQpVJyw1k611k4FFhtjptTytFwgH5gSelml4iQSR8ZAryvhk//Cjs2+04iIBE6sb9uNB6ZWPLDWzgVGhPG8w621xlrbKVS6RCSeev7IbZa5ZLrvJCIigROz8mSM6Yi7TVdYxcfyY/V1RSQKmh4ER53v9nzSjuMiIvuJ5ZynjtW8vxB3a64mQ4wxm4EWQCdr7U3VXWiMyQAyKr0rK4KMIlKdk0bBljWuPBnjO42ISGD42KqgohRVZzGAtXY1gDFmhDFmprX20mquHw/8IboRRYRDjnMvIiKyn7DLkzFmMDA0jEsnWGsX1/DxmorT3tJUyePAFGNMlbcAgQnApEqPs4D1YeQUkdpsXg1zb4Hz7nB7QImIP2V7YFsBlJUABloc7jtRygq7PIVWvEWy6u3AElQht4aPYYwZXHl1nbW20LhbBh0JjUodkKsEKKn0/AgiikiNGmXBZ89D+xPghOt9pxFJHTs2w84t0LITrF0Aj18B274BQnMQm7aCX610b99/Mpg0aHMMHNITOg1QsYqxmN22s9auNsYUGmM6HjiaFFp19z3GmFxgpjGmU6XbdrmhD1dbuEQkRpq1gqPOcxPH+12nuU8isbRjM3z0uDtfcu07cPRFMPgf0LIz9L4SsttC9iHQIAMaZO57Xq8rYeMS2PghfPgYlO+BEa/BIcfx6IIvAXh04VpuvaiHj/+qpBTrOU8TcHs2TYW9t/72bj0QWpE3uGLjzNAo08QDytYIYFY1t+xEJNZ6XwX/uhDWLXAjUCISfctfghmXgy2HTqdTcMYdTCvqzvDiXeRlt4TTf1P9c/teu+/tkq2w+nVocwyT561g2kI3i2XagrW0zspgVH7XOsUrKN7FtAVrGd6vPXnZmbU/IcnFdJ+nUCnKNcYMDhWnPtbakZUuqdhNvLIJxphxFS9Ayxomi4tIrB32A2h+OCx6xHcSkeSybiEsedS93fZ4V5DGfgrDZ1LQcRB3zf+agq0lNX+OA2VkwVHnMfnV1Uyas3y/D02au4LJs+bUKWrB1hLumrci8jxJKuar7Q44jmXWAR+bSqWRqND7CoEaj3ARkThKS4NL/gHNO/hOIpIcCtfCy7+DT56Gdn3h2MugaUs4eUxUPv3keSu+V5wqTHp/N2QtY9RZ3aPytVKVj60KRCTRtOvtO4FI4isvgzcnwZt/hcxcuGgK9BgS1bmENRWnCpNeXQO2nFEtF0Lvn7g/kCQiKk8iEp4lj8IH/4GrntPEcZG6MGnw1WK3+OIHv4KMZrU+ZWXBtrA//aML1zJtwdqwrp302jq+SV/GsMXXuNuFTVtFLUcqUHkSkfA0y4M18908jfb9fKcRSQzl5fDO3ZDXDboMhKHTIhrpGTNjScyiTSsbyLQvgC8+Bz6P2ddJRipPIhKejqdDbnu3bYHKk0jtdhbC09fD5y9A/s2uPEV4i+zOoT3pnFf7CBVENvIEMLxfe4YdkwPz/ghffQDDHnV/JFVhZcG2mBa5RKPyJCLhSUtz+8m88Rc4+zZo3Nx3IpHg+nqp23pg52YYNgOOOLtOn6ZzXjO6t80J69pbL+pB6+zMWuc8AYwd2JVRA7q4B4ff77Yi6dDFnWVZXgbpqgc10SwxEQnfcT92R0SsnOc7iUhwlZfDkyPdnKYRr9e5ONXFqAFdGDuw5r2c9itOAGnp0KG/e/vV2+DRy2D39himTHwqTyISvqw2MOoD6DHYdxKRYNq9w43SDnsUfvKyl2NSaipQ3ytOB+rQ3+1u/sj5bsdzqZLKk4hEpnkHN7S/e4fvJCLBUV4OL/0WHjobSkvc/08aNanzp8vLymD0gC7kZWXU6flVFahaixNAp9Phqudhy5fuZIFQgapvnmSj8iQikXv0Mpj9K98pRIKhvAyeGw3v3AvH/sidPVdPedmZ3Diwa72OQhk1oAvD+7UH3OTwWotThUN6whXPQNF6ePNvUcuTTFSeRCRybY+HZU/CriLfSUT8KiuFp3/m9kAbdB+ccJ3vRPsZ1rf9fq/D1qY7/HQODPh9DFIlPpUnEYncccPdrYmlM30nEfHryzdh2RNwyYPQc5jvNNF1UGc3irZ+ETxxDZTu9p0oMFSeRCRy2YdA17Ph/Yfd/CeRVFPx777T6XDDIuh+id88sbR7G3z8NDzzCze3S1SeRKSOel8F27+FbQW+k4jEV3m5u1U3/w73ONkPze54Klw8BT6aAfNu9p0mEFSeRKRuOufDjcsgq7XvJCLxYy28+Gv48FHIOdR3mvjpfgmcNQHeugs+mOY7jXfaQlRE6iYtDUiDog2QmRPWIaciCe+1CbBwCvxwUurtd3bC9W60Oe9I30m808iTiNTdjs0wuScsfdx3EpHYWzoLXr/dnVPX56e+08SfMZD/B2jb200e377JdyJvVJ5EpO6atIBOA9xhwSLJrutZcMHdcPKNvpP49/T1MP1St+o2Bak8iUj99L4KNn7oTmUXSUYbP4LvVkBGFvS6wneaYDjx5+7w4zmpuQ+UypOI1E/nfMhuq9EnSU5F62HapTD7Jt9JgqVtLzjzVlhwP3z6rO80cafyJCL1k94A+lwDRj9OJMns3g7Th0J6I7joft9pgqfvtXDU+fDfn8O2b32niSutthOR+jtlrO8EItFlrdvLafMXcM1caJbnO1HwGAMX3APLX4KmB/lOE1f6U1FEomPPTvjsed8pRKJj0ypY9YobcWrdzXea4GqcC8cOdUXqu5W+08SNypOIRMeqV+GxH8FXS3wnEam/gzrD6A+h2wW+kySGz16Ae/vC+vd9J4kLlScRiY4uZ0LWIfD+P30nEam7TavgmRvcfKcmLXynSRxdzoRDesKTI2D3Dt9pYk7lSUSiI72B27Zg6UzYWeg7jUjkSrbBY8NhzdtQtsd3msSS3gAumgLFX6XE9gUqTyISPb2ugLLd8OFjvpOIRMZaeP5/oHAtXDbdzeWRyBzUBQb+H7z3AHzxpu80MaXVdiISPdkHwym/hOaH+U4iEpkl0+Cjx+DiB6DVEb7TJK4+17hzL9v29p0kplSeRCS6Th/vO4FI5ArXQa8r4ZghvpMktrQ0V6DA3b5P0hE8lScRib6vPoC1C+CE63wnEamZtW6Z/enj3dsJrqB4FwVb9503t7Jg236vK+RlZZCXnRm7IOsWwr8vgqtfgIOPjd3X8UTlSUSib9178NJvoNuF7laeSBBZ61bWHXys2y3bGN+J6m3agrXcNW/F994/ZsaS/R6PHtCFGwd2jV2QQ46D3A7wzCi4Zp6bUJ5Ekuu/RkSC4dihMPdmWPwInPZr32lEqrZkGnzwbzjsFN9JomZ4v/YM7Na61uvysjJiGyS9IVxwNzw4ABbcB/1viO3XizOVJxGJvswcN3dk0cNwyv+4H6QiQbJpFbzwKzjux67sJ4m87MzY3o6LRLve0O86ePU2OPoiyGnnO1HUaKsCEYmNPj+FrRvh8xd8JxHZX9keeOIayGoDZ9/uO01yOz10+z4J5pNVppEnEYmNNj3gvDugXV/fSUT2t3sbNG0F5/4FMpr5TpPcMrPd+YBJxtgka4PGmGygqKioiOzsbN9xREQkSCpW10l8fTkf3poMl00L7G384uJicnJyAHKstcU1XavbdiISW+/cC69P9J1CBHYVwz/PcttoSHxlZMPKObDwAd9JokLlSURia/u38Pbd7qBVEZ9m3wTffAJZta9Gkyg7+Bg4/ifw2gTY+o3vNPWm8iQisdX7aijZ6g4MFvHl46fgw+lw7kQdH+TL6b+FtAbwyv/5TlJvKk8iElvNO0DXs+C9B5NuxY0kiK1fw7NjoNsgOHaY7zSpq0kLOG08rHkHdu/wnaZeVJ5EJPb6XANfL4WNS3wnkVS0/TvI6+ZWf2qyuF/HXw0/excaNfGdpF602k5EYq+8HDYsgnbH65eXiMB3K6CkGNr29p1kL622E5FgSUuDQ/u44lRW6juNpIrir2DaEChc5zuJHOj5sfD0zxP250HMy5MxJtcYM8IYMyeC54wLPWeEMWZcLPOJSJxYC/8a5FbbiMSatfDsaHeruFFT32nkQPk3w7efuvMFE1BMy5MxphcwBMgFWoT5nHEA1tqp1tqpwGJjzJSYhRSR+DAGWh0Bix6CPbt8p5Fkt2Q6rHgZzr/LTVSWYGnbG3pcCq/eCiXbfKeJWEzLk7V2cagArY7gaeOBqZU+x1xgRLSziYgHfUfAjs2w7AnfSSSZFW2AF8e7lXVHnOM7jVRnwO9h5xZ49z7fSSIWqDlPxpiOQK61trCKj+XHP5GIRFXLTtDlTFhwn7YtkNj55mNolgdn6xZxoOW2h0H3wbFDfSeJWKDKE9CxmvcX4m79fY8xJsMYk13xAmTFKJuIREO/kW5koGi97ySSrLqe6ZbDN27uO4nUpsdgV6IS7I+poJWn6mym+jlT44GiSi/6iSwSZJ3OgLGfQO6hvpNIsina4I5gKdkK6Q18p5FwrV8E9xyfUMe2hP2vyxgzGAhnbG2CtXZx3SNVqabZfhOASZUeZ6ECJRJcxkDDxrCtAEw6NG3pO5EkA2vh+f+Brz5wu1hL4mjZ0Z2B+ebf3PE5CSDs8mStnQXMimEWqH5ieW51H7PWlgAlFY+NNuATCb6yPXBff+g5HAbe4juNJINPnobls2Hof6Bxru80EonGzaH/KHjtz9D/F+42XsAF6radtXY1UBiaOH7gx+Z6iCQisZDeEHoMgcWPJPwZVxIAOzbDC7+Co853L5J4+l3nSu9rt/tOEpZ4lacqb7sZYzpWsQnmBCC/0jWDqbR1gYgkib7Xws5CWDrTdxJJdCtehrLdcM5ffCeRuspoBqf8Er7+EEpLar/es5iebRcaQaqYK9ULmAi8F7oFiDFmBHCTtbbTAc8bx77bdH2stTdF8DV1tp1Ionh0GGz5Eq5/W2feSf1s36T5c4mubI+bB5nm56ZYJGfb6WBgEfHny/lug7xBf4fMHN9pJNHs2QkfPwXHXObtF67EwMYPITMXmneI65fVwcAikhgOOxkum6biJHXz2p/h2TFQtNZ3EomWslKYfpn73gaYypOI+FVeBsuehG8/951EEsnGD+Htu+G0m6D5Yb7TSLSkN4CTRsNHM2BzJCe7xZfKk4j4Zcvh5d/B/Dt9J5FEUVYKz9wAeUe5Je6SXHpfCU1aun2fAkrlSUT8Sm8IJ1znVt0Vb/SdRhLB0pnw9VK4YLL79yPJpWFjN/r04WNuQUkAqTyJiH+9roAGmbBwiu8kkgiOGQpXz4a2vX0nkVg5/ifQ/wZo2NR3kiqpPImIf5k5bqj+/X9CyTbfaSSorIWNH7mVde1P8J1GYqlRE8i/GZq18p2kSipPIhIMJ1zvflim6UBXqcaS6TDlB1pckEre/ye8cqvvFN+j8iQiwZDTzg3VN8z0nUSCaFsBvPQbd8uu1RG+00i8bP8O3p7svv8BovIkIsFRtgf++3P49DnfSSRoXvw1pKXDWbf5TiLx1PdaNxr97n2+k+xH4+MiEhzpDWHLGph/Bxz5Qx3ZkoAKindRsLX2s8nysjLIyw5zlHH5y7DsCbj4QR3BkmoaN4feV8F7D8LJYwKzoa7Kk4gES/8bYPoQWPOW24FcEsq0BWu5a96KWq8bPaALNw7sGt4nPbQvnDMRegyuZzpJSCf+AhZOdUfx9L7KdxpAZ9uJSNBYC/efDM1aw+VP+k4jETpw5GllwTbGzFjCnUN70jmv2d73hz3yVLIVMrJiEVUSScFnbq5bDEejIznbTiNPIhIsxsDJN8KT17pbeHE+HFTqJy87s8pS1DmvGd3bRnjLZe0CmH6p29Op9dFRSigJKe9I93rHZmjSwm8WNGFcRIKo2yC4YZGKUyorLXFHsLTsDK2O9J1GguD1ifCPM93otGcaeRKR4ElvAC06utV3u7e5SaOSWubfAZtXwcg33Co7kWOGwLHDArGQRCNPIhJcD58HL/2v7xQSbwWfwRt/dbdvdbtOKjQ/DHIP9Z0CUHkSkSA76jz46DEoXOc7icRTWgPofgmc8kvfSUSqpPIkIsHV+2po1Azeucd3EokXa+GgznDxFO02L4Gl8iQiwZXRDPpdB4seccc0SHIrXAcPnK6z6yTwVJ5EJNj6jXT7uxTp1l1SsxaeHwtbv4asNr7TiNRIq+1EJNiatICRr/tOIbG27AlY8TJcNj0wR3CIVEflSUQSQ8Gn8O1ncPRF4V0eizPWJDZ2bIbZN7n9vY78oe80IrVSeRKRxLBkmpv7dPipYe0wHJMz1iQ2Nn8BTVu58+tEEoDKk4gkhv6jYeGD8O7f4Yza934a3q89A7u13vu4pjPWxLN2veH6tyFN03AlMag8iUhiaNYK+l4D794PJ/ys1tGnqJ6xJrGxezu89Bs49deQfbDvNCJhU80XkcTRfzSUl7rRJ0l8r9wKHz4GpTt9JxGJiEaeRCRxNGsFF0+FQ47znUTqa/0iWHAf5N/szjEUSSAqTyKSWLpd4F5bG4gDQqUOyvbAMzdAmx5wws99pxGJmG7biUjiWfsu3NNHu44nqvXvw5Yv4IK7IV1/w0viUXkSkcRzUFfY9g28+TffSaQuOpwIY5bBwcf6TiJSJypPIpJ4mrSAk0bBew9C4VrfaSRcZXvcasnSEmja0ncakTpTeRKRxNTvesjMhVcn+E4iNXh04dp9r9+6C14a73aLF0lgKk8ikpgymsGp46DgYzeSIVFTULyLO+Ysp6B4V70+z+R5K5i2wJWnaQvWMnnOJ3DSaDikp7dMItGg8iQiiav31XDta9BAu4RHU8HWEu6atyKsswGrM3neCibNWb7f+ybtuYTJ5UO9ZRKJFpUnEUlc6Q3ckR4bFsPXy3ynkZCqilOFSa+sZnIYZw6KBJnKk4gkNmvhmVEwe5x7W7yqqThVmDRnuQqUJDRtsCEiic0YGPB7mH4pfD4bjjzXd6KksbJgW0TXP7pw7d45TrWZNGc53xTvYljf9jHJIhJLKk8ikvi6DISOp8PL/wud86FBI9+JksKYGUti+vmnLQi/bIkEicqTiCQ+Y+Cs2+D+k+D9f8IJ1/lOlBTuHNqTznnNwr4+kpEngOH92kc08hTrMicSLpUnEUkOrbvBxQ+4ESiJis55zejeNifs62+9qAetszNrnfMEMHZgV0YN6FKfeCLeaMK4iCSPHoPdztV7tBeQL6MGdGHsEZtrvEbFSRKdypOIJJcNi+GOo+Hb2kc/JDZGXT6UsX0yq/yYipMkg5iXJ2NMrjFmhDFmTpjX5xtjZoaek2+Mud0YMzjWOUUkSeR1g0ZN3TEg2rqgTvKyMhg9oAt5WRFuPrqzEDZ+BA0aMeqSAYwd2HW/D9enONU5k0gMxLQ8GWN6AUOAXKBFmE/LBfKBKaGXVdbaWbHIJyJJqGEmnP1nWDkXPn1277v3O2NNapSXncmNA7uSl1316FG1Xvgl/Odi2LMTcLfwhvdzE8KH92tfrxGnOmcSiYGYlidr7WJr7VRgdYRPPdxaa6y1nULPF5EUVaczzY48F7qeDS+Oh5Jt3z9jrR4bNOqMtWosnQVLZ8JZE6Bh473vrlhNF+6qOpFEoDlPIhJodT7T7JzbocXhTJ776ffPWKvHDtc6Y60KW9bAc2Ph6IvhmEt9pxGJuaBuVTDEGLMZd6uvk7X2puouNMZkAJVvgmfFOpyIJIDmhzH50DuqP2Mt9H5NXo6CF38NjXPgvDt8JxGJiyCWp8UA1trVAKGJ4zOttdX9OTMe+EO8wolIYgj3jDVQgaq38+6A7d9B41zfSUTiIuzyFFrxNjSMSydYaxfXNVBFaarkcWCKMSbXWltY1dcDJlV6nAWsr+vXF5FgiuRsM52xFifr34fmh0FWG/cikiLCLk+hFW8xX/VmjBlceXWdtbbQGAPQkdCo1AG5SoCSSs+PdUQR8SCWR3PojLU6KN4I04dClzPhovt8pxGJq0DdtjPG5AIzjTGdKt22yw19ONIVeyKSRCI5Z01nrMVYeRk8eS2kNYAz/+g7jUjcxas8VbnHkzGmIzDYWjsR9o4yTTzg1t0IYFY1t+xEJEVEcs6azliLsTf+AmvegiuegaYH+U4jEncxLU8V5Qg3V6qXMeZ24L1Kt+XygZHAxEpPm2CMGVfpccsaJouLiFSpohDVVKBUnOqgaD28+Tc4bTwcforvNCJexLQ8hUaQJrJ/Oar88anA1APeV1jd9SIikaipQKk41VFOO7j2VXcMjkiK0iaZIhJo9T3TbNSALt8/Y63BTEa1WeYlT8LavR3euRfKSqFNd0jTrw9JXfrXLyKBFo0zzb53xtox5fDsGCja4CVPwrEWnh0Nr9wKhWt8pxHxTuVJRFLCfmesnXcnNGwCT18P5eV+gyWCd+9z59ZdeA+07OQ7jYh3Kk8iknqatHB7E619FzZ+4DtNsC1/GV7+LfQfBd0v9p1GJBACtc+TiEjcdDwNxnyknbFrs3w2dD0b8m/2nUQkMFSeRCR1ZbWBsj0w/07o81M3IiWOtWAM/HASlJZAWrrvRCKBodt2IpLatn8H7/4dnhyh+U8V9uyEf10Iy19yBaphCk2OFwmDypOIpLbsg+GSB2DlXLf5Y6orK4UnroF1C7V7uEg1VJ5ERDrnw6k3wau3wucv+k7jj7Xw3Bj4fDYMeQTa9vadSCSQNOdJRARcefp6qRuBOuJs32n8mD8JPvg3DLofup5Vp09RULyLgq0lex+vLNi23+sKeVkZqbVXliQVlScREXA7Zl/6EKQ3co8rJkynku6XQNNW0HNYnT/FtAVruWveiu+9f8yMJfs9Hj2gCzcesPO7SKJQeRIRqdAgdOTK57PdJPIfPQ4NG/vNFA8fP+22bmh+mHuph+H92jOwW+tar0u5420kqag8iYgcqFlrWP8+zLwKhv4H0hv6ThQ77/8TnrsRzpoAJ/6s3p8uLztTt+Mk6WnCuIjIgdr2gqH/hpXzkvsIl/cfcsWp33VwwvW+04gkDJUnEZGqdM53WxgsewJeu813muh75163sq7vCDj7z6k3v0ukHnTbTkSkOkdfBOVl0K6P7yTRl9YQTr4RBvxBxUkkQhp5EhGpSY/B0LwD7NwCb/zFlalEVVbqDvoF6DfCnVen4iQSMZUnEZFwrH0XXr3NHeNStsd3msjt3ALTBsNjw2DTKt9pRBKaypOISDiOOAcGPwSf/BemD4Gdhb4The/b5fDAGbBxCVz+FLTs5DuRSEJTeRIRCdfRg+DHs2DDInjoHCjd7TtR7b76AB4c4Db/vPYVOPwHvhOJJDxNGBcRiUTH0+Caee7g3AaNgrsTeUWuVkdCryvc8TOZ2b5TiSQFlScRSUoxPWPtoC7uBeC1P8OeHTDg98HZTHPjR24bgkH3Qasj4KxbfScSSSoqTyKSlOJ2xlpGFrz5V/jidbjgbjj42Lp/rvravQNe/zO8fY8bcRKRmDDWWt8ZosoYkw0UFRUVkZ2tIWqRVHXgyFN16jTydKANi+C/N8C3n0H/X0D+LfG/lbfuPXjiJ7D1GzjtJug/KjgjYSIJoLi4mJycHIAca21xTddq5ElEklJcz1hr2xtGvg5vT4aCz1xxKi+H8lI3LypWrIWidZDbHrIPdqNel9+i1XQiMaaRJxGRaKqYqL3sCXj599D3Guh1JTRpEb2vsWcnfPw0vHMPbP8WxiyFBhnR+/wiKUgjTyIivlTcrmvdw63Me3UCvHY7HHku9LkWOpxY98+9Zxe88D/wyTNQUgxdzoSzJ7htCEQkblSeRERioVVXGHSvOwLlg3/BsqfcnKgOJ8Kat2H5S9C6uzv6JedQN/E8o5k7QqV4A+zYBJtWQsEnULwRLp7iRpe2b4ITrodjhur2nIgnum0nIhIv5eWQlgZLHoV5t8DWjfs+1m0QDHkEtnwJd1VasZfdDtp0d7ubN2oS78QiKSOS23YqTyIivuwqhsK1bqSpSUtodzyUlsCat6Bxc2jRETJzfKcUSQkqTypPIiIiEoFIypPOthMRERGJgMqTiIiISARUnkREREQioPIkIiIiEgGVJxEREZEIqDyJiIiIREDlSURERCQCKk8iIiIiEVB5EhEREYmAypOIiIhIBFSeRERERCKg8iQiIiISgQa+A8RKcXGNZ/qJiIiI7BVJbzDW2hhGiT9jTFtgve8cIiIikpDaWWs31HRBMpYnAxwCbPWdpQ6ycMWvHYmZP9np+xNc+t4Em74/wabvzz5ZwFe2lnKUdLftQv/BNTbGoHK9D4Ct1lrddwwYfX+CS9+bYNP3J9j0/dlPWP/9mjAuIiIiEgGVJxEREZEIqDwFSwlwS+i1BI++P8Gl702w6fsTbPr+RCjpJoyLiIiIxJJGnkREREQioPIkIiIiEgGVJxEREZEIJN0+T4nKGDMOKAw9zLXWTvQYRw4Q+v4AdAKw1o70GEeqYYyZY60d6DuH7M8YczuwKvRws7V2ls88so8xZgSQi/v90wmYYK0t9BgpIWjCeABU/GKuKEzGmHzgUv2CDgZjzO3W2psqPZ4CdNQv6WAxxgwGZlprTa0XS1wYY3KBecAAa22hMaYXsEjfo2AI/e6ZWlGWQt+vB6y1l/rMlQh02y4YxgNTKx5Ya+cCI/zFkQqhHya9Qq8rTAHyjTEdvYSS7wl9f1r4ziHfczswo+KXs7V2MaA/OoJjYOVRptDbub7CJBKVJ89Cv4BzqxomDY1AiX/HA5WL0urQ69z4R5FqDAEe9x1CvmcEMMsY07Hi51noj0MJhkJjzJyKPw5Dv49W1/wUAZWnIKhu9KIQ/XL2zlpbaK1tHvqLuUJFqdUPmQAI/VLWL+SAqTQy2wv3s2y1MWaK/igMlGtxv4O2hOal5Wu6SHhUnoJrM7oNEVTjgZGaVBkYudZaFdngqShPhdbaxaHv0U3ATI+ZpJLQz7DbgVnAOODSA6YoSDVUnoJLxSmAQn+dzbDWTq31Yok5Y8wIrdwKvPcr3qiYU6PRp2AI/TxbHZog3gn3e2eR31SJQeXJv+r+Ys6t4WPiQWg11yptIxEMoZVb79d6ofhS3c+vQqqfriBxUmm+7VwAa+1qa21v3DyowX7TBZ/2efLMWrvaGFNojOl44K0HTawMjkqTXaeGHucCLXS7yKsWuJWQFaMYnWDv8uvVGpHyK/SzbTWuKFWeM5iLSm8QdGTf3oKVTYlzjoSkfZ4CoGKDzEq/mAfjlpBq4l4AhEY48nHzAioMptL+KOKf9hAKntDPsj4V+6SFHo/UHmnBYIyZg9tTsLDS+6bod0/tVJ4CouKv5dDDvT9sxK/QCNMXVLHyUb+kgyP0S3kortROBOZo5DYYKu1gDdBSP9uCI/TzbTywiX0rvPVHYRhUnkREREQioAnjIiIiIhFQeRIRERGJgMqTiIiISARUnkREREQioPIkIiIiEgGVJxEREZEIqDyJiIiIREDlSURERCQCKk8iIiIiEVB5EhEREYmAypOIiIhIBFSeRERERCLw/+8Kfy19sWFnAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -386,7 +387,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiQAAAFdCAYAAAAzNnbkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAy+UlEQVR4nO3deXxU1d0G8OfMZGFPQJBFhCuIso3IJossilito7Uqam1d2mrV1mptrTpafZvaVge17rS4N9q6tNrFOq9ttbWgQEAEFQk7TCAsIQnJkI1Zz/vHTHgjJZBlZn53eb6fz3zIDMy9j37I8OTcc89RWmsQERERSXJJByAiIiJiISEiIiJxLCREREQkjoWEiIiIxLGQEBERkTgWEiIiIhLHQkJERETiWEiIiIhIHAsJERERiWMhISIiInE50gGIiDJJKXU9gEIAtQCGA3hAa10rGImIDoOFhIhsSyl1B4BnmguIUqoQwLMALhWMRUSHwUs2RGRnZ7ccDUl9XSgVhohax0JCRHZWq5R6NzUyAqXUMABbZSMR0eEorbV0BiKijEgVkY8BDAPwIIAtWutnREMR0WGxkBCRraUmtZ4NYB6A9wBcykmtRObDSzZEZFtKqfkAtmqtL0XyDps+SI6YEJHJsJAQkS2l5osUaq3fAwCt9Vat9UQk55XMk01HRIdiISEiuxqG5Nojh3o6yzmIqA1YSIjIllIjIxOa77BpYaLW+g2BSER0BJzUSkS2lSojdwGoRnK0pBAtFkojIvNgISEiIiJxvGRDRERE4lhIiIiISBw31yMiEpJaJ2VL6uk+TrYlJ2MhISLKstRk238BOEtrXauUmoDkgm1KNBiRIBYSIvoCwxdQAHoieUfKoY8CAF0AuJG85Ov2NuSGRkdzCgDEWzwaAIRaeey/aeEcp8+mnw/g9ea7fbTWq5RSZ8tGIpLFu2yIHCRVNgYBMFKPoYd83Q9ALyQLR5tcXpe3eEjcPasdMTSSt+CWAygDsL3Fo/n5rpsWzkm045iWopTSSC5lDwDDmleTJXIyFhIiGzJ8AReAkwCcmnqcAmAEgOMB5KfzXB0oJG0RA7AZwJrU47PUI2j10ZXUkvZbAFwKYCuS5exOAH9kMSEnYyEhsjjDF+gCYBz+v3ycimQB6ZaN82eokLSmDsDnSJaTTwCUAPjMSqMpSqm5AN4FcHZzAUnNKdmmte4tmY1IEgsJkcUYvkA+gGkAzkw9pgDIk8qT5UJyOHUAlgNYAmAxgKU3LZxzQDDPEbUoJL1brhibuoxzNkdJyKk4qZXI5AxfIA/J0tFcQKYiObGUknoCmJt6AEB4wY3/XgHgfQD/BLDMZCMoW1t5vRbJDQGJHIkjJEQmZPgCfQFcCOAiJEtIVi6/dIQJRkiOphJAAMDfAPzjpoVzGoTzQCm1BcClWutVLV7TSG78t6r1dxLZFwsJkUkYvsBgABenHjPQjjtdJFmgkLQURnLk5C0Af7tp4ZxyiRBKqXkAJmut72zx/AatNW/9JcdiISESZPgCIwBcgmQJmQQLLoxlsUJyqBUAXgbw6k0L51Rn88RKqeuRXNsFAI5pLidETsVCQpRlhi/QA8DXAFyL5HwQS7N4IWkWRfKyzksAAjctnBMRzkPkOCwkRFli+AJTAVwH4HIAPYTjpI1NCklL1QBeA/DSTQvnrJAOQ+QULCREGWT4AscAuBrJ0ZAxwnEywoaFpKW1AJ4A8PJNC+c0SYchsjMWEqIMMHyBcQBuR3I1TrE1QrLB5oWkWTWAZwE8ddPCOTulwxDZEQsJURoZvsAcAHcAOEc6S7Y4pJA0iwF4A8BjNy2cs1w6DJGdsJAQdVJq35iLkSwik4XjZJ3DCklLywE8DOBNq++vQ2QGLCREHZTaQ+abAG4DcKJsGjkOLiTN1gL4OYA/mmxFWCJL4dLxRO1k+AK5AK4HcA+AAcJxSN4YJO/K+elHE868t0fjnj+NWr+OP+kRtZNLOgCRVRi+gMvwBa4GsAHAU2AZoRbywzX1PRr3vAHg03UjR31FOg+R1bCQELWB4QucB+BTAMUAThCOQyY0pvTF5rVlPAD+Wjpy1KLTnhl7mmQmIivhJRuiIzB8gVMBPIT/30mW6L/kH6heURja8oXysWkQVFO+Wu4p9rwO4M4116wpE4pHZAksJESHYfgC/QA8iOSiZhxJpNZprceWvljwhZeA+ocvcY9MPb0cwIWeYs/jAO5fc82a/VnPSGQB/KAlasHwBZThC1wHYD2Sd9Dwe4SOqOuBquUF+7ed3PK1ZSPVx7U9VL8WL3UBcCeAjZ5iz2VZDUhkEfywJUoxfIFRABYhuSJnH+E4ZAVaJ8aufb5vy5cSCnt/43VNauUd/QG87in2/NVT7Dku8wGJrIOXbMjxUuuJ3IPkUu+2Xuad0qtb097lPet3TGv52ltT1IZwnpp5lLd+BcAZnmKPD8DCNdes4W3C5HgcISFHM3yBuQDWAPgJWEaoPbROjF37XP+WL0Xd2PrabNf0Nh6hF4BfA1jsKfacfLQ/TGR3HCEhRzJ8gZ4AngRwjXQWsqbujXtKejTs+kL5eOFsV1XCpYa181AzAHzqKfb8AsD8NdesiaYtJJGFcISEHMfwBaYB+AQsI9RRWsfHrn1uUMuX6rvgs3+Nd3V03ZF8JJef/9hT7Glt/okIpdS70hnIGVhIyDEMX8Bt+AL/A2AxgPb+FEt0UI+Gncu6N+4xWr726Fdd6fg89QBY6in2/DANx+o0pdQ8cA0eyhIWEnIEwxcwkLyD5mfgpUrqDK1jY9c+N7TlS3sKUbLmBNfYNJ0hF8AjqTtxeqfpmO2mlCoE7zajLGIhIdszfIGvI3mJ5nThKGQDPeu2L+vWVHl883MNRB+c587EvkZfAbDaU+yZmoFjt8VlAP4gdG5yIP6kSLZl+ALdASwEcKV0FrIJrSNjS1/4wl5G6wdjWXk/NStDZxyK5F04dwP4VbZuD1ZKzQXwXjbORdSMIyRkS6lLNEvBMkJp1Gv/tuVdD1QNbn6ugbpHLnaPzvBpc5HcT+ktT7HnmAyfq1mh1nprls5FBICFhGzI8AXOBLASwCnSWchGtA6PKX3xxJYvfTharQp1V31be0uanY/kJZyMXnpUSl2vtX4jk+cgOhwWErIVwxe4BcA/AWTrJ0lyiMLQ5uVdw/sGNj+PK+x5+jzX5CzHOB7A+55izzczcXCl1AQkyzxR1nEOCdmC4QvkAfgNgG9LZyEb0rppdOlvv7Ca6l+mqc2RXDVDIE0ugBc9xZ7ha65Zc2+aj90HwITUHBIAGA4ASqk7AGzlyAllktKaWyiQtRm+wEAAfwIgdTeCo11el7d4SNydqUmdptC7Zv2i8Z8+Obv5eSQHm6++zX1CwqXckrkA/B7AtWuuWRPOxMFTIyYfa61VJo5P1BIv2ZClGb7AKQA+AssIZYrWjaNLf/uFiavPnuOqMUEZAYBvAHjXU+xJ+3ohqUXR7kp9Pb/FqAlRRrCQkGUZvsAMJBc74zbulDF99pV+lB+t69f8fH9XfLLolKzPHTmSmQCWeYo9w9N5UK31G1rrS7XWSmt9p9aatwFTRrGQkCUZvoAXycmrhcJRyM60rh+9/qWDK7BqQD9ykduMu0KfBKAk03fgEGUSCwlZjuELXAXgLwC6Ckchm+tbvebjvGj9wTu2dvdBSelQlel1RzqqL4B/eYo9l0kHIeoIFhKyFMMXuBVAMXiHGGWa1vtHrX953MGnQGT+PLfZLw/mA3jVU+z5lnQQovZiISHLMHyBXwJ4FABn/FPG9av8ZHVurLGw+fnaIapk9zFqiGCktnIBeN5T7LlBOghRe7CQkCUYvsCvAdwtnYMcQuvQyA2/P/XgUyD06EVp2803GxSAhZ5iz83SQYjaioWETM/wBR4D8F3pHOQc/feuXJ0bbypofr7Ioz6p66bSfmttFjzhKfb8SDoEUVuwkJCpGb7AAwB+IJ2DHETrfSdvfHVi89O4wq5nz3VNkYzUSb/yFHtukQ5BdDQsJGRahi9wLwCfdA5ylgF7lq/JiYd7Nj9/Y4ZrWzRHdZHMlAaPe4o935MOQXQkLCRkSoYvcBuA+6RzkMPoRNXJm16f1Pw0nIONfzpdTZOMlEZPeYo910uHIGoNCwmZjuELfBfAw9I5yHkG7V661p2IdG9+vvA8V51Wyi6fk80TXblOCZmSXb7RyCYMX+CbABZI5yAH0om9Iza/cVrz09puWLVkjGvikd5iQQrAS55ij8QuxURHxEJCppFaDv45cJ0REjB45+L17kS0K5BcIv5XF7vtuhJwPoC/eoo9J0kHIWqJhYRMIbVr72sAzLCDKjmNTuwevvXPB0dHdh6DZRuOV6MkI2VYHwDveIo9x0oHIWrGQkLiDF9gAIC3AfSQzkLOdHz5+5vciVgXANBAeP48txVWZO2sYQD+5in2dJMOQgSwkJAwwxfoCuAtAMdLZyGH0vFdw7f+dWrz0zWGKqnoowZLRsqi0wC84in28N8CEse/hCTG8AUUgJcBTJbOQs41dPt7W1w6ngcAGqh97KuucUd7j81cCOAx6RBELCQk6X4Al0iHIOdSifiOE4JvHxwd+fc49Wl9V1UoGEnKzZ5izw+lQ5CzsZCQiNTtvVyFlUQN3f73MpdO5AJA3IXy57/kmnq099jYw55izxzpEORcLCSUdYYvMBHA09I5yNlUIlZmlP39YAF5faarLJaj8iUzCXMhOZ9kgHQQciYWEsoqwxcoAPAHAHnSWcjZTgj+b7lLJ3IA4EAuNvxlmpounckE+iNZSnj7PWUdCwll23NI3m5IJEYlotuGbv/nwdGRX3tdDVCKC/IlnQmgSDoEOQ8LCWWN4Qt8D8A86RxEw7f+bbeCdgNATXd8XDLKNUE6k8nc7Sn2fEk6BDkLCwllheELjAfwiHQOIlc8svn48n9PBQANJB66xM0F+f6bC8DvPMWe46SDkHOwkFDGGb5ATyTnjTh5wiCZxPCtf6lS0C4A2N4PyzYfp06WzmRS/QC86in25EgHIWdgIaFseBbAidIhiFzxyMbBOxdNAQANHHhwnvsE6UwmNxPAL6RDkDOwkFBGGb7AtQAul85BBAAjNr9Zo1K7SX8yTC2vLFSDpDNZwB1cn4SygYWEMsbwBYaA80bIJNzx8Lrjdn84BQASwL7HL3SdKhzJKhSAZ7kJH2UaCwll0nMAekmHIAKAkzb9oa7563cnqDWNXVSBZB6LGQZeuqEMYyGhjDB8gesBnC2dgwgA3LGmtQP3lJwGADEXdhTPdU2TzmRBP/AUe6ZIhyD7YiGhtDN8gcEAHpbOQdTs5I2vHWj++pUzXDtibsWVgtvPBeAFT7GH/+8oI1hIKBN+DaCndAgiAMiJNq4ZsHflRABoykPp26cpjo503GgA90iHIHtiIaG0MnyBywFcIJ2DqNnIja/Emr9+8gJXhEvEd5rPU+zxSIcg+2EhobQxfIE+AJ6QzkHULCfa8OmxlavHA0B1T3y08iTeWZMGuUheuuEGfJRWLCSUTj8HcKx0CKJmo9e/DADQQPzBee7ewnHsZBKAH0mHIHthIaG0MHyBMQBukM5B1Cw3Ure6b/WacQCwrT+WbRuguFpwev3UU+zhwnKUNiwklC6PAOAQLpnG6HXFbgDQQONDl7iHS+exoe4AHpAOQfbBQkKdZvgCXgDcqpxMIy8c+viYmnWnAMDKEWpFdYEaKJ3Jpq7yFHsmSYcge2AhoU4xfIEccM0RMpkx617sAgAJoPqp810TpPPYmALwmHQIsgcWEuqs7wEYKR2CqFn+gZqPetduGgMAf5+k1jZ1Udy+IIPytB74rwcHXCidg6yPhYQ6LHWb70+lcxC1NKb0hR4AEHOh7OU5XCI+U5TWVdeE9i9eHtwx5KzGpodQVJAjnYmsjYWEOuOnAPpIhyBq1uVA9YrC/VtHAcDLc1y74m6VK53JdrRumt3YuGhJWXnej/fVzsoBcgCMAPAd6WhkbSwk1CGGLzAEwI3SOYgO0lqPWftCAQA05mHtO5M5OpJWWusRkciSf5Tvqn2qomp2T60PvRT2Pygq6C6SjWyBQ2zUUXcC4CZbZBpdD1QtL6gLTgWAJ77iih3tz1Pb9Y7HVz9RUdn11HDk9CP8sQEAbgXwy+ykIrvhCAm1m+ELDAJwrXQOooO0Toxd+3xfAKjshRWrRrjGSUeyg7yE3vLLyuqPFm/fOf7UcKQtk9fvQFEBV8SlDmEhoY64A0C+dAiiZt0aK0p61u84MbVE/DHSeaxOaV15XW3ogxVlO4yv1DdMbsdbewH4bqZykb2xkFC7GL5AfwDXS+cgOkjr+NjS5wcCwJaBWFrWX3FV1o7SunFuQ+OiZWXlXX9QE5rp7tjqyzejqIA/sFC7sZBQe/0YQFfpEETNujfuLunRsOsEDTQ8fLH7JOk8lqR1YmQ48uG7O3btf3Rv1ezuWvfoxNEGALgyXdHIOVhIqM0MX6AvOBxLZqJ1fOza5wYDwIqT1cp9vVR/6UhWc0ws/vEruyo2/3HXnhkD4vEBaTrsbSgqUGk6FjkE77Kh9vghkhtqEZlCj/ryZd0bK2YkFCoXnO+aKJ3HSvITiU0/q9q339vQmIn/b6MAeAG8nYFjk01xhITaxPAFugO4SToH0UFaR8eWPj8UAN6erNYdyFOduczgGC6tK66vCX24vKx8WIbKSLPbM3hssiEWEmqrbwAokA5B1KxnXVlJt6bK46NubHvlTNd06Tymp3XDOfUN/1lWVt7j5trQjA5OWG2PWSgqOC3D5yAbYSGhtvqedACig7SOjC19YRgA/Haua2/CpXj5uTVax8eEwx+8t2NX/cOV1Wd00zqbl11/nMVzkcWxkNBRGb7A6QC40BSZRq/920q6Hqg+riEfa96d4Joinces+sViK1/bVbH1tV0VM/vH4xITfi9GUcEwgfOSBfGnCmoLjo6QeWgdHlv6wggAePSr/JnqcLokEht+XrWv/tyGxknCUdxIToa/WTgHWQC/m+mIDF/gWADzpHMQNSsMbS7pEq4ZWFGA5Z8Nc3mk85iJS+vdN9XUfri8rHzEuZmdsNoe30RRQTfpEGR+LCR0NNeBm+iRWWjdNKb0xVEaiM2/1H2sdBzT0Lr+vPqGRSVl5QU31u6f4TLXZ3sPABdJhyDzM9NfWjIZwxdwAbhBOgdRs941G1bkR0LHbjwOS8v7qROk84jTOu45EP7g3zt2Ns2vrJ7dVWuzjkRcJR2AzI+FhI7kPABDpEMQAQC0bhi97rejNVD/8MXuUdJxpPWPxT764649wVd2V8zsF0/0k85zFHNRVJCuVWDJplhI6Ei+IR2AqFmffaUr86N1/ZaOUh+Heiiz/wOcMV0TiXWPVVSufm/HrskjI1GrbCToBvB16RBkbrzLhg4rtTLrV6RzEAEAtK4bvb7Yk1CoWHieS/rOERFurXd9vya07drQ/ukKsOI+MVcBeEQ6BJkXR0ioNRcAMOv1aHKYvlWfrcqLNvT561S1MZynnLWfktb7v1JXv2h52Y4+14X2n27RMgIAp6KogHdFUatYSKg1X5MOQAQA0Do0asPvxkXc2PL6LActEa91bPyBA4v/s31n5JdV+2bna3SRjpQGnNxKrWIhof9i+AIFAM6VzkEEAMdWrv4kN9ZY+MKXXNUJl8r0/iumMCgaW/Hmzj07Xtq9d9YxiURf6Txp9HUUFfDfHTosziGhw7kIQL50CCJoXXvyhldOreuCT/99qsv2G7V1TyRK5++tis5uOmDX/9bjAMwB8J50EDIfFhI6nCukAxABQP+9H32SG28644HLXLb+rHJrXf6Dmtrt3wzVTbPwHJG2ugosJHQYHDqjLzB8gX5I/gRDJEvrfSdvfG3S7t4o+dxwjZGOkxFahy6uq//PiuCOft8K1Vn17pn2ugBFBY649Ebtw0JCh7oAHDkjExi4p2SNOx7Of3Cee6B0lrTTOjqp6cDixdt3xn9Wte+MPGddIu0NYLJ0CDIf/sNDh+JkVpKnE5UnbfrDpPXHY9nOvmqWdJx0GhyNliyoqBw4LBqz1X9XO50DoEQ6BJkLR0jooNTeNXOlcxAN2r2k1JWIxB+5yD1aOku6dE8k1v5mz97P3infPXVYNDZUOo+wc6QDkPmwkFBLk5EcTiWSoxN7R2x+87QPxqjVoe7K8re85mi9/c7qmmUlZeVjZjQdOEU6j0mchqKCQukQZC4sJNQSf2ohcYN3Ll4HHa195svWvs1XaV172f66RcuDOwZcub9umnQek3GDo7F0CBYSaomFhGTpxO4Tt/x56p+nqy2RXNVVOk6HaB2Z0nRg0Qfbd+Le6prZeUCedCST4ucNfQEntRIAwPAFCgFMkc5Bznb8jn9virpjA9+Y4bbkiMKQaHTZgj2Vxxmx2GzpLBbAQkJfwBESanYWksOoRCJUIr5z+La3pj57rqvWakvE94wnPnt2d8XngfLd04xYbIh0Hos4HkUFo6RDkHlwhISafUk6ADnbkB3vba3vEt+72JNjmTUqcrQuu7O6ZvfX6uqnSmexqHMArJMOQebAERJq5uQ1EUiYSsR3GMG3p/zqYrclFghTWu+7IlS3eEVwxyCWkU7hZRs6iIWEmnf3PVk6BzmXUfZO2Z7eiZXrhihzrzuidXh6Y9OiD7aXu+/eVzMrF8iVjmRxp6OowAnL5VMb8JINAcn1R/ihQCJUIlY2tOzvE269wV0tnaVVWusTorFlT1VUDhnCCavp1BPACAAbpYOQPBYSAgBLr/dA1nZCMFBeOhTBPX2UKf+hL4jHP310b1Xu5APh6dJZbGoCWEgILCSUxEJCIlQiunXI9ndHXfcDl+lG6HK13nZ39b7KeXUN/P7IrAkAXpMOQfJYSAhgISEhw7e+tWfRKdhR3808oyNK66qr9teV/nBf7fQc4ATpPA4wQToAmQMLicMZvsBgAPbb3p1MzxWPbB608/0hd13hMsd+NVofmNV0YLl/b9X4nlrzrrPsGS8dgMyBd9kQR0dIxIlb/lz1xkxVFs1RXUSDaK1PjESWvFO+q3pBReXsnlr3Es3jPH1QVGBIhyB5HCEhFhLKOlc8vOGYysWFf77afZJkjt7x+OrHKiq7TAhHTpfMQZgAICgdgmSxkNBY6QDkPCM2vxl6+jyXWyslMkqbl9Bb7q3eV/3Vek5YNYkJAP4kHYJksZCQ6E+o5DzueHhd9/1L3EtH50zM9rmV1pXfCtWtv6WmdrobGJ7t81OrOLGVWEiczPAFcsC7CCjLRmx8ff/DF7sLsnpSrZvObGxacX9l9YQeWs/M6rmpLVhIiJNaHe4EsJRSFrljTWvj8eWxjYPVyKycUOvESeHIkn/u2FX7xN6q2T207pmV81J79UdRgTnutiIx/MfI2UZIByBnGbHptfoH5rmHZuNcfeLxVU9WVHY/hRNWrWIIgCrpECSHhcTZOH+EsiYn2vhZZbePD1T0dg/O5HnyE4nNRVX7as9vaJyUyfNQ2g0BsEo6BMlhIXE2FhLKmuGbX6279wrXuEwd36X13mtD+zfcVBOa7gbcmToPZczx0gFIFguJs/GSDWVFbrT+k9KBq2P1Xd2FaT+41g1nNzat/EVl9aRunLBqZUOkA5AsFhJnYyGhrBi69ZX9vitdU9N6UK0ToyORpU9UVI3oH4+bZi8c6jCOkDgcC4lDGb6AC0BGr+UTAUBuZP/qD05ekxPLceWn65h9Y/GPn6yo7DU2EpmRrmOSOI6QOBwLiXP1A6+zUxYM2vFK9ZPfUGel41hdEomN91Xtq/tyQ2PWF1WjjOMIicNxHRLnGiAdgOwvLxxa+ZdJa/tAKdWZ47i03vPdmtCHy8vKT2QZsa2BKCrgD8kOxkLiXAOlA5D99ar6fdXyka6Or8Kpdf2X6xsWlZSV9/pebWiGi59ZduYGMEg6BMlhG3WuY6UDkL3lhWtWvDp9/TCgA4MjWsfHhiNLn9hbObJfPMEJq84xBMB26RAkg4XEubhMM2VWw++qtgxS7d5N99hY7KOnKir7jIpEeQuv83CivYOxkDjXMdIByL7ywtUlr8zYNL49oyNdE4n191dWN81tbJqcwWhkbtnddJFMhYXEuVhIKDO01jXqdzVVBapN6464tN79/ZrQ1utC+6erDl3fIRvpKh2A5LCQOBcLCWVETrR62ZtTtkw/arfQuu6C+sZV/1O977QuWnMDPAJYSByNhcS5ekgHIBvSOrGtR3FjYxfV+tC71rFx4cjSx/ZWjurLCav0RSwkDsZC4lx50gHIflS8csk/Ti2b1droyMBYbMVTeyr7nRSNzspyNLKGbtIBSA4LiXOxkFB6aR1f3f+3iLnVf/3d6pZIlM6vrI6c0djU7rtuyFE4QuJgLCTOxUJCaRVDxYclI8q/MDri1rr8lpra7d8K1U3jhFVqAxYSB2Mhca5c6QBkI1rHFp3wYs+DS8RrHfpqfcMn91Tvm5KvubYEtRkv2TgYC4lzcYSE0qY+d9eSTQP3zIbW0YkHwsse2Vs1pk+CE1ap3ThC4mAsJM7FERJKC60S8X+c/MLg46Kx5Qsq9vYfHo1xwip1FAuJg7GQOBdHSCgt9hUurvtZY2nTzOoDU6SzkOWxkDgYd850Lo6QUFp8FDtl1rhGFyesUjrwh2QHYyEhok4JoUfhlPCC4Xt14UrpLGR5DdIBSA4LiXM1SQcg+2hCfrfTw0+csjUxYJl0FrK0RukAJIeFxLn4jU9pFUVO3lmRh6esTgxfLJ2FLIsjJA7GQuJc/MantNNwuS6K/HzWe/EJi6SzkCXxc8nBWEiciyMklDHXRX88+5XYHJYSai9+LjkYC4lz8RufMuru2HWzH41e8qHWiEtnIcvgCImDsZA4F7/xKeMej18y4yexb3+kNcLSWcgS+LnkYCwkzsUREsqKV+Jzp94YvbVUa9RLZyHTYyFxMBYS52Ihoaz5R+K08V+L3LM9odU+6SxkavxccjAWEucKSQcgZ1muR4/2Ru6viWnXbuksZFocIXEwFhLn4j8KlHXr9NDhZ0YeSUR0zjbpLGRKLCQOxkLiXLukA5Az7dDHHjc9/ESPRp2/XjoLmc5e6QAkh4XEuXZKByDnqkJhv9PCCwbV6B6fSmchUynvzJuVUnekHk8rpZ5OVyjKDhYS5+IICYmqR7de08JPnrRL91khnYVMQaMTn0tKqfla6wdTjxtSr72btnSUcSwkzrUHQEI6BDnbAeR3nRl+fMKGxOAl0llI3F4UhaIdeaNSqhDAhNSvzZ4GMFcpNSwN2SgLWEgcKuj3xgBUSucgisOdc05k/vSSxCguNe9snb2MPAlAy/KxNfVrYSePS1nCQuJsnEdCJqHU1yL3zn47PuU/0klIzI6OvlFrXau17q21XtXi5bmpX7ce7j1kPiwkzsZ5JGQq34/+4IwXYucu0hpaOgtlXbpvBb8LwA1a69o0H5cyhIXE2bZLByA61H2xq2f7Y1cs1Rox6SyUVVvSdSCl1HwAr2utn0nXMSnzWEicbZ10AKLDeTp+wem3x25YpTWapLNQ1qTl0opSah6ALVrrB9NxPMoeFhJnK5UOQNSaN+KzT/t29PaNWnObA4fo9AiJUmouADSPjCilCnmXjXWwkDgbCwmZ2vuJ8eMuiRTtTmjFO8LsLQEg2JkDKKUmAJgAYJVSaliqiFwPgBs6WoTSmnPHnMzwBaoB9JHOQXQkI1R58J08X06OSgyWzkIZsQ1FoQ6PZKTWH9mGw9ziq7VWHY9F2cQREuIoCZneJj3YmBV+zB3WuWmb+Eimsurof6R1LW77VYc+0hWQMo+FhFhIyBJ2oe/AqeEne9frLvw7az8rpQOQPBYS4oc7WUYNevWZEl4wpEr36tRP1GQ6LCTEQkJYKx2AqD0a0LXH9PCTY7Yn+pVIZ6G0+Vg6AMljIaHPpAMQtVcEuflnRB6d/HnC+EA6C3XaVhSFaqRDkDwWEocL+r17kcYVEomyJQGX+/zI/TMXxz3clM/aeLmGALCQUNJS6QBEHXV19K7Zb8ZnspRYFwsJAWAhoaQl0gGIOuO26Hdn/yZ2wWKtkZDOQu3GQkIAWEgoiYWELG9+7IpZ98WuWq41ItJZqM00OrkGCdkHCwkByTttaqVDEHXWi/EvT7s5evMardEgnYXaZDOKQtyriACwkBCAoN+rASyTzkGUDm8npk28KnrX1oRmybaAj6QDkHmwkFAzTmwl2/gw4fF8NfLzyrhWFdJZ6IjelQ5A5sFCQs04j4Rs5TM9fMTcyEPhqHaXSWehw9IA/i4dgsyDhYSalQA4IB2CKJ226UFDZoQf79qk8zZJZ6H/8gmKQnukQ5B5sJAQACDo9zYBeF86B1G6VaDPsVPCTx0b0t3WSGehL3hHOgCZCwsJtfS2dACiTNiPHgVTwwuG79WFXPPCPFhI6AtYSKilgHQAokxpQn636eEnxm1NDOQEbnm14J19dAgWEjoo6PeWAfhcOgdRpsSQk3tW5KGpqxInLpbO4nDvoigUlw5B5sJCQofiZRuyNQ2X6+LIfbPejU/k/jdyeLmG/gsLCR2Kl23IEb4TvW3272JnLdIaWjqLw/B2XzosFhI61DIA1dIhiLLhnti1sx+LXbJEa/DyQfZ8iqLQbukQZD4sJPQFQb83Dg6nkoM8Hr9kxt2xa1dqjbB0Fof4X+kAZE4sJHQ4b0gHIMqmV+NnTbkxemup1qiTzuIAr0oHIHNiIaHD+V/wsg05zD8Sp42/PHLvjoRW/LufOatQFOKdfHRYLCT0X4J+bxTAa9I5iLJthR412hu5vzamXZzjkBnF0gHIvFhIqDUvSwcgkrBODx1+ZuSRRETnbJPOYjNRAK9IhyDzYiGhwwr6vcsBbJTOQSRhhz72uGnhJ3s26vz10llsJICiUJV0CDIvFhI6kt9JByCSUo2CvqeFFwyq0T0+lc5iE7xcQ0fEQkJH8jLARaPIuerRrdfU8FMn79THrJDOYnFV4KKLdBQsJNSqoN8bBPChdA4iSWHkdZkVfmzChsTgJdJZLOxVFIWi0iHI3FhI6Gg4zEqOF4c755zI/OkliVHc/6Zj+DlCR8VCQkfzKoAa6RBE8pT6WuTe2X+LT/2PdBKL+RxFoY+lQ5D5sZDQEQX93kYAL0jnIDKLm6O3nPF87MvclK/tXpQOQNbAQkJtsQBAQjoEkVn8PHbVbH/siqVaIyadxeRCAJ6TDkHWoLRmybcrpdQdAGpTTwu11g929FiGL/AWgAvSkYvILi5xLf7o4dyFY5VCV+ksJjUfRSGfdAiyBo6Q2FSqjEBr/YzW+hkAq5RST3fikI+mJxmRfbyZmDX529HbN2qNkHQWEwoDeEw6BFkHR0hsSilVA+AErXVti9e01lp19JiGL7AKwPg0xCOylfFq04Y384r6uJTuJ53FRJ5DUeg70iHIOjhCYkNKqWFIXqKpPczvze3EoX/VifcS2dZqPeLkcyLzG2LaVS6dxSQSAB6SDkHWwkJiT8Naeb0WQGEnjvs6AH7gEh3GJj3YmBV+zH1A526RzmICf0FRiHthUbuwkDjLPgB9OvrmoN8bA9DhibFEdrcLfQdOCz/Zu053XSudRdh86QBkPSwkztLhMtLCMwB2pOE4RLZUg159poafGlqle62SziJkEYpC3PuH2o2FxJ62tvJ64RF+r02Cfm8YwC86cwwiu2tA1x7Tw0+O2Z44tkQ6iwCOjlCHsJDYkNZ6K4Da1OTWQ3/vvTSc4kUA29JwHCLbiiA3/4zII5M/TxgfSGfJos9QFHpHOgRZEwuJfT0A4OAdNUqpeUhebum0oN8bBXBfOo5FZGcJuNznR+6fuTjuccqmfPdKByDrYiGxqdSqrIVKqXmpMjJZa31DGk/xMoANaTwekW1dHb1r9h9js+xeSt5HUegt6RBkXVwYjTrM8AWuAPCKdA4iq7g957UPvud+63SlbPfDYALAJBSFVksHIeuy2zcFZdfrAD6XDkFkFQ/FvjbzvthVy7VGRDpLmr3EMkKdxUJCHRb0exMA7pDOQWQlL8a/PO3m6M1rtEaDdJY0aQDwE+kQZH0sJNQpQb/3HQB/k85BZCVvJ6ZNvDJ697aEPrgbt5U9hKLQLukQZH0sJJQOtwI4IB2CyEqWJMaOvTDyi8q4VhXSWTphJ7hnDaUJCwl1WtDv3Qp+KBG12xo9bMRZkYcjUe0uk87SQT9BUahROgTZAwsJpcsDAKz6oUokJqgHHj8j/HjXJp1ntc3oVgF4SToE2QcLCaVF0O9tAvAj6RxEVlSBPsdOCT/VP6S7rZHO0g63oSjEdSMobVhIKG2Cfu+fALwrnYPIivajR8HU8ILhFbpwpXSWNngZRaH/SIcge2EhoXS7BUBUOgSRFTUhv9vp4SfGbUkMXCqd5Qh2Ifl9TpRWLCSUVkG/dz24GzBRh8WQkzs38tDUVYkTF0tnacX1KArVSocg+2EhoUy4H4AVhp2JTEnD5bo4ct+sf8Qnmm3/m2IUhQLSIcieWEgo7YJ+bwzA1eDaJESdckP0ttkvx+Yu0hpmmDy6E8APpEOQfbGQUEYE/d51AO6RzkFkdffGvj370di8JVojLhzlOygKhYQzkI2xkFAmPQrgA+kQRFb3RPziGXfHrl2pNcJCEV5AUegdoXOTQ7CQUMakNt/7JoB64ShElvdq/KwpN0R/WKo16rJ86h3gGkOUBSwklFGpZeVvl85BZAf/TEwef3nk3h0JraqzeNrreKmGskFpbYa5UmR3hi8QAHCedA4iOxiptm99O+/urjkqMTDDp3oaRaEbM3wOIgAcIaHsuQrc64YoLdbrIcPOjDySiOicbRk8zUfgXTWURRwhoawxfIFJAD4EkC+dhcgOjkGoanH+rZXdVXhUmg9dCWAiikI70nxcolZxhISyJuj3rgSXnCZKm2oU9J0SXnBcje7xSRoPGwdwOcsIZRsLCWVV0O99BsBvpXMQ2UU9uvWaGn5q5E59zIo0HdKHotD7aToWUZuxkJCE7wH4RDoEkV2EkddlVvixCRsSg5d08lB/QFHo4bSEImonFhLKuqDf2wTgEgC1wlGIbCMOd845kfnTl8VHdXT/m88BfDudmYjag4WERKTWJ7kKQEI6C5F9KHVF9N7Zb8Wn/aedbwwBuAhFoYYMhCJqExYSEhP0e98GV4AkSrtbojef8VzsvMVt3JRPA7gSRaHNmc5FdCQsJCQq6Pc+juSeN0SURr+IXTnrgdjXl2qN2FH+aBGKQm9nJRTREbCQkBncBuCP0iGI7OaZ+Pmn/zh642qt0dTKH3keRaH7shqKqBUsJCQu6PdqJOeTfCidhchu3kzMmvzt6O0btcah+9H8DcANEpmIDocrtZJpGL5AHwBLAIyUzkJkN+PVpg1v5BX1cSvdD8BSAHNRFGpt5IQo61hIyFQMX8AAUAKgv3AUItsZrnaWvZV377bu6sAlKArtk85D1BILCZmO4QtMBPBvAL2ksxDZTBDAzKDfWy4dhOhQnENCphP0ez8G8CUA+6WzENnIbgBzWUbIrFhIyJSCfu9yAOcAqJPOQmQD1QDODvq9W6SDELWGhYRMK+j3loClhKizqgF8Kej3rpUOQnQkLCRkakG/dxmAc8FSQtQRewDMDvq9q6SDEB0NCwmZXtDvXQrgywDqpbMQWch2JCewcmSELIGFhCwh6PcuQXKkhKWE6Og2I1lGuD8NWQYLCVlGqpScCWCvdBYiE1uLZBnZLh2EqD1YSMhSgn7vSgDTAWySzkJkQh8jOWdkj3QQovZiISHLSd26OB3AcuksRCbyAYCzgn5vtXQQoo5gISFLCvq9VQDmILlBGJHTFSO56NmhG+gRWQaXjidLM3wBN4AF4K6l5EwawN1Bv9cvHYSos1hIyBYMX+AeAD+XzkGURQ0Argr6vX+WDkKUDiwkZBuGL3AZgBcAdJfOQpRhOwFcEPR7V0sHIUoXFhKyFcMXOAXAnwEMk85ClCErAVwY9Ht3SQchSidOaiVbCfq9nwGYDOCf0lmIMuAVALNYRsiOOEJCtmT4Ai4ARQDuAaBk0xB1WhOAW4J+73PSQYgyhYWEbM3wBc4F8DsAx0hnIeqgUgCXcU8asjtesiFbC/q9fwcwHsBS6SxEHfA8gMksI+QEHCEhR0itV3IngJ8CyBOOQ3Q0dQBuCPq9r0oHIcoWFhJyFMMXGAfgZQAe6SxErVgF4HLu1EtOw0s25ChBv/dTAJMAPAggIRyHqKUIgP8BMJVlhJyIIyTkWIYvcDqSe4AMl85CjrcMwHVBv7dUOgiRFI6QkGMF/d4lAMYBWIjkniBE2dYA4FYAM1hGyOk4QkIEwPAFpiO5Sd+pwlHIOd4FcH3Q7w1KByEyAxYSopTUnTg3AvgFgELZNGRjNQBuC/q9L0oHITITFhKiQxi+QD8A8wF8E1zlldInBuA3AH4W9HurpcMQmQ0LCVErDF9gKpKXcSZIZyHLexvAj4N+7wbpIERmxUJCdASpPXGuR3JfnP6yaciCPkPy8sx70kGIzI6FhKgNDF+gG4CbAdwBoI9wHDK/CgD3Ang+6PdyvRuiNmAhIWoHwxfoBeBHAH4IoJdwHDKfGgCPA3gk6PfWSYchshIWEqIOMHyBPkiOltwMoJtwHJJXCeBXAH7NIkLUMSwkRJ1g+AIDANwF4DqwmDjRLgAPAXgm6Pc2SochsjIWEqI0SI2Y3ADg+wAGCcehzCtD8tbwF4J+b1g6DJEdsJAQpZHhC+QCuAzJOSYTheNQ+pUA+DWAV4N+b0w6DJGdsJAQZYjhC8xEsphcCO4bZWUNAH4P4DdBv/cT4SxEtsVCQpRhhi8wDMnLOVeCl3OspBTJlVVfCvq9+6XDENkdCwlRlqT2ypkL4GoAFwHoKpuIDuMAgL8gORqyWDgLkaOwkBAJMHyBngAuBXANgJngnjmS4gDeR/KyzJ84GkIkg4WESJjhC5yA5OWciwCMF47jFAkAHwJ4A8Afg37vHuE8RI7HQkJkIoYvMBjA+QAuADAHQBfZRLYSBvABgD8hORJSIZyHiFpgISEyqdT+OXORLCfnAxggm8iSPgfwLoB/AljMxcuIzIuFhMgCDF9AIXk5ZxaAGQBOBwvK4VQAeA/JAvJe0O/dJZyHiNqIhYTIogxfYDiS5aT5MVI2UdZFAHwKYCWAjwCsAFAa9Hv5oUZkQSwkRDZh+AJ9AUwBMC71OAXACABuyVxpEgewDsni0fz4LOj3RkRTEVHasJAQ2ZjhC3QFcDKSoyejUo8RAAYD6CsY7XASALYD2ARg8yG/bmX5ILI3FhIihzJ8gXwkV449rsVjcOrXgQB6AOieejR/ndPO02gANQCqAFQe4ddtYOkgcjQWEiJqM8MXyMP/l5RuSI5qRAHEUr+2/DrGDeiIqK1YSIiIiEgcdyAlIiIicSwkREREJI6FhIiIiMSxkBAREZE4FhIiIiISx0JCRERE4lhIiIiISBwLCREREYljISEiIiJxLCREREQkjoWEiIiIxLGQEBERkTgWEiIiIhLHQkJERETiWEiIiIhIHAsJERERiWMhISIiInEsJERERCSOhYSIiIjEsZAQERGROBYSIiIiEsdCQkREROJYSIiIiEgcCwkRERGJYyEhIiIicf8Hv/Sia8EpwOcAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -396,7 +397,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -406,7 +407,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] From c17ebc4cb3ebba3cb60f575ba3cb97abfe8c04c3 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 15:04:11 +0000 Subject: [PATCH 199/220] docs: docstring added to Corr.__init__, comments cleaned up --- pyerrors/correlators.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index b24af5e4..3382c26e 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -19,46 +19,50 @@ class Corr: to iterate over all timeslices for every operation. This is especially true, when dealing with smearing matrices. The correlator can have two types of content: An Obs at every timeslice OR a GEVP - smearing matrix at every timeslice. Other dependency (eg. spacial) are not supported. + smearing matrix at every timeslice. Other dependency (eg. spatial) are not supported. """ 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 + """ Initialize a Corr object. + + Parameters + ---------- + data_input : list + list of Obs or list of arrays of Obs. + padding : list, optional + List with two entries where the first labels the padding + at the front of the correlator and the second the padding + at the back. + prange : list, optional + List containing the first and last timeslice of the plateau + region indentified for this correlator. + """ if not isinstance(data_input, list): raise TypeError('Corr__init__ expects a list of timeslices.') - # data_input can have multiple shapes. The simplest one is a list of Obs. - # We check, if this is the case if all([isinstance(item, Obs) for item in data_input]): self.content = [np.asarray([item]) for item in data_input] - # Wrapping the Obs in an array ensures that the data structure is consistent with smearing matrices. - self.N = 1 # number of smearings + self.N = 1 - # data_input in the form [np.array(Obs,NxN)] elif all([isinstance(item, np.ndarray) or item is None for item in data_input]) and any([isinstance(item, np.ndarray) for item in data_input]): self.content = data_input noNull = [a for a in self.content if not (a is None)] # To check if the matrices are correct for all undefined elements self.N = noNull[0].shape[0] - # The checks are now identical to the case above if self.N > 1 and noNull[0].shape[0] != noNull[0].shape[1]: raise Exception("Smearing matrices are not NxN") if (not all([item.shape == noNull[0].shape for item in noNull])): raise Exception("Items in data_input are not of identical shape." + str(noNull)) - else: # In case its a list of something else. + else: raise Exception("data_input contains item of wrong type") self.tag = None - # 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[0] + self.content + [None] * padding[1] - self.T = len(self.content) # for convenience: will be used a lot + self.T = len(self.content) - # The attribute "range" [start,end] marks a range of two timeslices. - # This is useful for keeping track of plateaus and fitranges. - # The range can be inherited from other Corrs, if the operation should not alter a chosen range eg. multiplication with a constant. self.prange = prange self.gamma_method() From 2f11d0d30ba0abe7251b0e522d41fe8175dd6941 Mon Sep 17 00:00:00 2001 From: JanNeuendorf Date: Tue, 18 Jan 2022 16:16:54 +0100 Subject: [PATCH 200/220] The changes i tried to push before --- pyerrors/correlators.py | 99 +++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 58 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index b78b13d6..e6ea9caf 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -30,7 +30,7 @@ class Corr: raise TypeError('Corr__init__ expects a list of timeslices.') # data_input can have multiple shapes. The simplest one is a list of Obs. # We check, if this is the case - if all([ (isinstance(item, Obs) or isinstance(item, CObs)) for item in data_input]): + if all([(isinstance(item, Obs) or isinstance(item, CObs)) for item in data_input]): self.content = [np.asarray([item]) for item in data_input] # Wrapping the Obs in an array ensures that the data structure is consistent with smearing matrices. self.N = 1 # number of smearings @@ -97,7 +97,7 @@ class Corr: # The method can use one or two vectors. # If two are specified it returns v1@G@v2 (the order might be very important.) # By default it will return the lowest source, which usually means unsmeared-unsmeared (0,0), but it does not have to - def projected(self, vector_l=None, vector_r=None,normalize=False): + def projected(self, vector_l=None, vector_r=None, normalize=False): if self.N == 1: raise Exception("Trying to project a Corr, that already has N=1.") # This Exception is in no way necessary. One could just return self @@ -109,18 +109,16 @@ class Corr: vector_l, vector_r = np.asarray([1.] + (self.N - 1) * [0.]), np.asarray([1.] + (self.N - 1) * [0.]) elif(vector_r is None): vector_r = vector_l - - if isinstance(vector_l,list) and not isinstance(vector_r,list): - if len(vector_l)!=self.T: + if isinstance(vector_l, list) and not isinstance(vector_r, list): + if len(vector_l) != self.T: raise Exception("Length of vector list must be equal to T") - vector_r=[vector_r]*self.T - if isinstance(vector_r,list) and not isinstance(vector_l,list): - if len(vector_r)!=self.T: + vector_r = [vector_r] * self.T + if isinstance(vector_r, list) and not isinstance(vector_l, list): + if len(vector_r) != self.T: raise Exception("Length of vector list must be equal to T") - vector_l=[vector_l]*self.T + vector_l = [vector_l] * self.T - - if not isinstance(vector_l,list): + if not isinstance(vector_l, list): if not vector_l.shape == vector_r.shape == (self.N,): raise Exception("Vectors are of wrong shape!") if normalize: @@ -215,9 +213,7 @@ class Corr: # There are two ways, the GEVP metod can be called. # 1. return_list=False will return a single eigenvector, normalized according to V*C(t_0)*V=1 # 2. return_list=True will return a new eigenvector for every timeslice. The time t_s is used to order the vectors according to. arXiv:2004.10472 [hep-lat] - - - def GEVP(self, t0, ts, state=0, sorting="Eigenvalue",return_list=False): + def GEVP(self, t0, ts, state=0, sorting="Eigenvalue", return_list=False): if not return_list: if (self.content[t0] is None) or (self.content[ts] is None): raise Exception("Corr not defined at t0/ts") @@ -227,11 +223,11 @@ class Corr: G0[i, j] = self.content[t0][i, j].value Gt[i, j] = self.content[ts][i, j].value - sp_vecs=GEVP_solver(Gt,G0) - sp_vec=sp_vecs[state] + sp_vecs = GEVP_solver(Gt, G0) + sp_vec = sp_vecs[state] return sp_vec if return_list: - all_vecs=[] + all_vecs = [] for t in range(self.T): try: G0, Gt = np.empty([self.N, self.N], dtype="double"), np.empty([self.N, self.N], dtype="double") @@ -240,24 +236,19 @@ class Corr: G0[i, j] = self.content[t0][i, j].value Gt[i, j] = self.content[t][i, j].value - sp_vecs = GEVP_solver(Gt,G0) - if sorting=="Eigenvalue": + sp_vecs = GEVP_solver(Gt, G0) + if sorting == "Eigenvalue": sp_vec = sp_vecs[state] all_vecs.append(sp_vec) else: all_vecs.append(sp_vecs) - - - - except: #This could contain a check for real eigenvectors + except "Failure to solve for one timeslice": # This could contain a check for real eigenvectors all_vecs.append(None) - if sorting=="Eigenvector": - all_vecs=sort_vectors(all_vecs,ts) - all_vecs=[a[state] for a in all_vecs] + if sorting == "Eigenvector": + all_vecs = sort_vectors(all_vecs, ts) + all_vecs = [a[state] for a in all_vecs] return all_vecs - - def Eigenvalue(self, t0, state=1): G = self.smearing_symmetric() @@ -278,27 +269,23 @@ class Corr: newcontent.append(eigenvalue) return Corr(newcontent) - - - def Hankel(self,N,periodic=False): - #Constructs an NxN Hankel matrix - #C(t) c(t+1) ... c(t+n-1) - #C(t+1) c(t+2) ... c(t+n) - #................. - #C(t+(n-1)) c(t+n) ... c(t+2(n-1)) + def Hankel(self, N, periodic=False): + # Constructs an NxN Hankel matrix + # C(t) c(t+1) ... c(t+n-1) + # C(t+1) c(t+2) ... c(t+n) + # ................. + # C(t+(n-1)) c(t+n) ... c(t+2(n-1)) - if self.N!=1: - raise Exception("Multi-operator Prony not implemented!") + if self.N != 1: + raise Exception("Multi-operator Prony not implemented!") - - array=np.empty([N,N],dtype="object") - new_content=[] + array = np.empty([N, N], dtype="object") + new_content = [] for t in range(self.T): new_content.append(array.copy()) - def wrap(i): - if i>=self.T: + if i >= self.T: return i-self.T return i @@ -306,18 +293,14 @@ class Corr: for i in range(N): for j in range(N): if periodic: - new_content[t][i,j]=self.content[wrap(t+i+j)][0] - elif (t+i+j)>=self.T: + new_content[t][i, j] = self.content[wrap(t+i+j)][0] + elif (t+i+j) >= self.T: new_content[t]=None else: - new_content[t][i,j]=self.content[t+i+j][0] + new_content[t][i, j] = self.content[t+i+j][0] - - return Corr(new_content) - - def roll(self, dt): """Periodically shift the correlator by dt timeslices @@ -701,8 +684,8 @@ class Corr: content_string += "Description: " + self.tag + "\n" if self.N!=1: return content_string - #This avoids a crash for N>1. I do not know, what else to do here. I like the list representation for N==1. We could print only one "smearing" or one matrix. Printing everything will just - #be a wall of numbers. + # This avoids a crash for N>1. I do not know, what else to do here. I like the list representation for N==1. We could print only one "smearing" or one matrix. Printing everything will just + # be a wall of numbers. if range[1]: @@ -929,7 +912,7 @@ class Corr: if isinstance(obs_OR_cobs, CObs): return obs_OR_cobs.imag else: - return obs_OR_cobs*0 #So it stays the right type + return obs_OR_cobs*0 # So it stays the right type return self._apply_func_to_corr(return_imag) @@ -948,7 +931,7 @@ class Corr: -def sort_vectors(vec_set, ts): #Helper function used to find a set of Eigenvectors consistent over all timeslices +def sort_vectors(vec_set, ts): # Helper function used to find a set of Eigenvectors consistent over all timeslices reference_sorting=np.array(vec_set[ts]) N=reference_sorting.shape[0] sorted_vec_set=[] @@ -963,7 +946,7 @@ def sort_vectors(vec_set, ts): #Helper function used to find a set of Eigenvecto for k in range(N): new_sorting=reference_sorting.copy() new_sorting[perm[k],:]=vec_set[t][k] - current_score*=abs(np.linalg.det(new_sorting)) + current_score *= abs(np.linalg.det(new_sorting)) if current_score>best_score: best_score=current_score best_perm=perm @@ -980,7 +963,7 @@ def sort_vectors(vec_set, ts): #Helper function used to find a set of Eigenvecto -def permutation(lst): #Shamelessly copied +def permutation(lst): # Shamelessly copied if len(lst) == 1: return [lst] l = [] @@ -993,8 +976,8 @@ def permutation(lst): #Shamelessly copied return l -def GEVP_solver(Gt,G0): #Just so normalization an sorting does not need to be repeated. Here we could later put in some checks +def GEVP_solver(Gt,G0): # Just so normalization an sorting does not need to be repeated. Here we could later put in some checks sp_val, sp_vecs = scipy.linalg.eig(Gt, G0) sp_vecs=[sp_vecs[:, np.argsort(sp_val)[-i]]for i in range(1,sp_vecs.shape[0]+1) ] sp_vecs=[v/np.sqrt((v.T@G0@v)) for v in sp_vecs] - return sp_vecs \ No newline at end of file + return sp_vecs From 909ef85ff8d5d19c0b2bfc919122bac49b742c8f Mon Sep 17 00:00:00 2001 From: JanNeuendorf Date: Tue, 18 Jan 2022 16:46:14 +0100 Subject: [PATCH 201/220] linting tested again --- pyerrors/correlators.py | 152 +++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 87 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index e6ea9caf..14621fc1 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -116,24 +116,24 @@ class Corr: if isinstance(vector_r, list) and not isinstance(vector_l, list): if len(vector_r) != self.T: raise Exception("Length of vector list must be equal to T") - vector_l = [vector_l] * self.T - + vector_l = [vector_l] * self.T + if not isinstance(vector_l, list): if not vector_l.shape == vector_r.shape == (self.N,): raise Exception("Vectors are of wrong shape!") if normalize: vector_l, vector_r = vector_l / np.sqrt((vector_l @ vector_l)), vector_r / np.sqrt(vector_r @ vector_r) - #if (not (0.95 < vector_r @ vector_r < 1.05)) or (not (0.95 < vector_l @ vector_l < 1.05)): - #print("Vectors are normalized before projection!") + # if (not (0.95 < vector_r @ vector_r < 1.05)) or (not (0.95 < vector_l @ vector_l < 1.05)): + # print("Vectors are normalized before projection!") newcontent = [None if (item is None) else np.asarray([vector_l.T @ item @ vector_r]) for item in self.content] - + else: - #There are no checks here yet. There are so many possible scenarios, where this can go wrong. + # There are no checks here yet. There are so many possible scenarios, where this can go wrong. if normalize: for t in range(self.T): vector_l[t], vector_r[t] = vector_l[t] / np.sqrt((vector_l[t] @ vector_l[t])), vector_r[t] / np.sqrt(vector_r[t] @ vector_r[t]) - + newcontent = [None if (self.content[t] is None or vector_l[t] is None or vector_r[t] is None) else np.asarray([vector_l[t].T @ self.content[t] @ vector_r[t]]) for t in range(self.T)] return Corr(newcontent) @@ -210,7 +210,7 @@ class Corr: if self.N == 1: raise Exception("Trying to symmetrize a smearing matrix, that already has N=1.") - # There are two ways, the GEVP metod can be called. + # There are two ways, the GEVP metod can be called. # 1. return_list=False will return a single eigenvector, normalized according to V*C(t_0)*V=1 # 2. return_list=True will return a new eigenvector for every timeslice. The time t_s is used to order the vectors according to. arXiv:2004.10472 [hep-lat] def GEVP(self, t0, ts, state=0, sorting="Eigenvalue", return_list=False): @@ -226,7 +226,7 @@ class Corr: sp_vecs = GEVP_solver(Gt, G0) sp_vec = sp_vecs[state] return sp_vec - if return_list: + if return_list: all_vecs = [] for t in range(self.T): try: @@ -242,12 +242,12 @@ class Corr: all_vecs.append(sp_vec) else: all_vecs.append(sp_vecs) - except "Failure to solve for one timeslice": # This could contain a check for real eigenvectors + except "Failure to solve for one timeslice": # This could contain a check for real eigenvectors all_vecs.append(None) if sorting == "Eigenvector": all_vecs = sort_vectors(all_vecs, ts) all_vecs = [a[state] for a in all_vecs] - + return all_vecs def Eigenvalue(self, t0, state=1): @@ -269,36 +269,36 @@ class Corr: newcontent.append(eigenvalue) return Corr(newcontent) - def Hankel(self, N, periodic=False): + def Hankel(self, N, periodic=False): # Constructs an NxN Hankel matrix # C(t) c(t+1) ... c(t+n-1) # C(t+1) c(t+2) ... c(t+n) # ................. # C(t+(n-1)) c(t+n) ... c(t+2(n-1)) - + if self.N != 1: raise Exception("Multi-operator Prony not implemented!") array = np.empty([N, N], dtype="object") - new_content = [] + new_content = [] for t in range(self.T): - new_content.append(array.copy()) - - def wrap(i): - if i >= self.T: - return i-self.T - return i + new_content.append(array.copy()) - for t in range(self.T): + def wrap(i): + if i >= self.T: + return i - self.T + return i + + for t in range(self.T): for i in range(N): for j in range(N): if periodic: - new_content[t][i, j] = self.content[wrap(t+i+j)][0] - elif (t+i+j) >= self.T: - new_content[t]=None - else: - new_content[t][i, j] = self.content[t+i+j][0] - + new_content[t][i, j] = self.content[wrap(t + i + j)][0] + elif (t + i + j) >= self.T: + new_content[t] = None + else: + new_content[t][i, j] = self.content[t + i + j][0] + return Corr(new_content) def roll(self, dt): @@ -313,7 +313,7 @@ class Corr: def reverse(self): """Reverse the time ordering of the Corr""" - return Corr(self.content[::-1]) + return Corr(self.content[:: -1]) def correlate(self, partner): """Correlate the correlator with another correlator or Obs @@ -335,7 +335,7 @@ class Corr: new_content.append(None) else: new_content.append(np.array([correlate(o, partner.content[x0][0]) for o in t_slice])) - elif isinstance(partner, Obs): # Should this include CObs? + elif isinstance(partner, Obs): # Should this include CObs? new_content.append(np.array([correlate(o, partner) for o in t_slice])) else: raise Exception("Can only correlate with an Obs or a Corr.") @@ -676,18 +676,15 @@ class Corr: def __repr__(self, range=[0, None]): content_string = "" - content_string+="Corr T="+str(self.T)+" N="+str(self.N) +"\n"#+" filled with"+ str(type(self.content[0][0])) there should be a good solution here - - + content_string += "Corr T=" + str(self.T) + " N=" + str(self.N) + "\n" # +" filled with"+ str(type(self.content[0][0])) there should be a good solution here if self.tag is not None: content_string += "Description: " + self.tag + "\n" - if self.N!=1: + if self.N != 1: return content_string - # This avoids a crash for N>1. I do not know, what else to do here. I like the list representation for N==1. We could print only one "smearing" or one matrix. Printing everything will just + # This avoids a crash for N>1. I do not know, what else to do here. I like the list representation for N==1. We could print only one "smearing" or one matrix. Printing everything will just # be a wall of numbers. - if range[1]: range[1] += 1 content_string += 'x0/a\tCorr(x0/a)\n------------------\n' @@ -782,7 +779,7 @@ class Corr: if y.value == 0: raise Exception('Division by zero will return undefined correlator') if isinstance(y, CObs): - if y.is_zero(): + if y.is_zero(): raise Exception('Division by zero will return undefined correlator') newcontent = [] @@ -837,11 +834,11 @@ class Corr: return Corr(newcontent, prange=self.prange) def _apply_func_to_corr(self, func): - newcontent = [None if (item is None ) else func(item) for item in self.content] + newcontent = [None if (item is None) else func(item) for item in self.content] for t in range(self.T): if newcontent[t] is None: continue - if np.isnan(np.sum(newcontent[t]).value): + if np.isnan(np.sum(newcontent[t]).value): newcontent[t] = None if all([item is None for item in newcontent]): raise Exception('Operation returns undefined correlator') @@ -897,87 +894,68 @@ class Corr: return (self / y) ** (-1) @property - def real(self): + def real(self): def return_real(obs_OR_cobs): if isinstance(obs_OR_cobs, CObs): - return obs_OR_cobs.real + return obs_OR_cobs.real else: - return obs_OR_cobs - + return obs_OR_cobs + return self._apply_func_to_corr(return_real) @property - def imag(self): + def imag(self): def return_imag(obs_OR_cobs): if isinstance(obs_OR_cobs, CObs): return obs_OR_cobs.imag else: - return obs_OR_cobs*0 # So it stays the right type - + return obs_OR_cobs * 0 # So it stays the right type + return self._apply_func_to_corr(return_imag) - - - - - - - - - - - - - - -def sort_vectors(vec_set, ts): # Helper function used to find a set of Eigenvectors consistent over all timeslices - reference_sorting=np.array(vec_set[ts]) - N=reference_sorting.shape[0] - sorted_vec_set=[] +def sort_vectors(vec_set, ts): # Helper function used to find a set of Eigenvectors consistent over all timeslices + reference_sorting = np.array(vec_set[ts]) + N = reference_sorting.shape[0] + sorted_vec_set = [] for t in range(len(vec_set)): if vec_set[t] is None: sorted_vec_set.append(None) - elif not t==ts: - perms=permutation([i for i in range(N)]) - best_score=0 + elif not t == ts: + perms = permutation([i for i in range(N)]) + best_score = 0 for perm in perms: - current_score=1 + current_score = 1 for k in range(N): - new_sorting=reference_sorting.copy() - new_sorting[perm[k],:]=vec_set[t][k] + new_sorting = reference_sorting.copy() + new_sorting[perm[k], :] = vec_set[t][k] current_score *= abs(np.linalg.det(new_sorting)) - if current_score>best_score: - best_score=current_score - best_perm=perm - #print("best perm", best_perm) + if current_score > best_score: + best_score = current_score + best_perm = perm + # print("best perm", best_perm) sorted_vec_set.append([vec_set[t][k] for k in best_perm]) else: - sorted_vec_set.append(vec_set[t]) - + sorted_vec_set.append(vec_set[t]) return sorted_vec_set - - - - -def permutation(lst): # Shamelessly copied +def permutation(lst): # Shamelessly copied if len(lst) == 1: return [lst] - l = [] + ll = [] for i in range(len(lst)): m = lst[i] - remLst = lst[:i] + lst[i+1:] + remLst = lst[:i] + lst[i + 1:] # Generating all permutations where m is first for p in permutation(remLst): - l.append([m] + p) - return l + ll.append([m] + p) + return ll -def GEVP_solver(Gt,G0): # Just so normalization an sorting does not need to be repeated. Here we could later put in some checks +def GEVP_solver(Gt, G0): # Just so normalization an sorting does not need to be repeated. Here we could later put in some checks sp_val, sp_vecs = scipy.linalg.eig(Gt, G0) - sp_vecs=[sp_vecs[:, np.argsort(sp_val)[-i]]for i in range(1,sp_vecs.shape[0]+1) ] - sp_vecs=[v/np.sqrt((v.T@G0@v)) for v in sp_vecs] + sp_vecs = [sp_vecs[:, np.argsort(sp_val)[-i]] for i in range(1, sp_vecs.shape[0] + 1)] + sp_vecs = [v / np.sqrt((v.T @ G0 @ v)) for v in sp_vecs] return sp_vecs From 2342c51869ab6a3028deca447dcc1ee1a0a28fb1 Mon Sep 17 00:00:00 2001 From: JanNeuendorf Date: Tue, 18 Jan 2022 16:53:00 +0100 Subject: [PATCH 202/220] linter things --- pyerrors/correlators.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 900e004e..8adef85e 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -46,7 +46,6 @@ class Corr: # We check, if this is the case if all([(isinstance(item, Obs) or isinstance(item, CObs)) for item in data_input]): - self.content = [np.asarray([item]) for item in data_input] self.N = 1 From 677f1655a9647de3d72f9adee8415fefd5d68ecf Mon Sep 17 00:00:00 2001 From: JanNeuendorf Date: Tue, 18 Jan 2022 17:06:39 +0100 Subject: [PATCH 203/220] tests again --- pyerrors/correlators.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 8adef85e..c1c66389 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -667,15 +667,16 @@ class Corr: return - def dump(self, filename): + def dump(self, filename, **kwargs): """Dumps the Corr into a pickle file - Parameters ---------- filename : str Name of the file + path : str + specifies a custom path for the file (default '.') """ - dump_object(self, filename) + dump_object(self, filename, **kwargs) return def print(self, range=[0, None]): From a63e9958c4f477b64f1dc13bad41352469fc6b68 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 16:50:07 +0000 Subject: [PATCH 204/220] refactor: Exception corrected in Corr.GEVP, private methods renamed, docstrings extended --- pyerrors/correlators.py | 57 ++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index c1c66389..dedd4dd8 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -101,15 +101,15 @@ class Corr: for j in range(self.N): item[i, j].gamma_method(**kwargs) - # We need to project the Correlator with a Vector to get a single value at each timeslice. - # The method can use one or two vectors. - # If two are specified it returns v1@G@v2 (the order might be very important.) - # By default it will return the lowest source, which usually means unsmeared-unsmeared (0,0), but it does not have to def projected(self, vector_l=None, vector_r=None, normalize=False): + """We need to project the Correlator with a Vector to get a single value at each timeslice. + + The method can use one or two vectors. + If two are specified it returns v1@G@v2 (the order might be very important.) + By default it will return the lowest source, which usually means unsmeared-unsmeared (0,0), but it does not have to + """ if self.N == 1: raise Exception("Trying to project a Corr, that already has N=1.") - # This Exception is in no way necessary. One could just return self - # But there is no scenario, where a user would want that to happen and the error message might be more informative. self.gamma_method() @@ -155,8 +155,6 @@ class Corr: newcontent = [None if(item is None) else item[i, j] for item in self.content] return Corr(newcontent) - # Obs and Matplotlib do not play nicely - # We often want to retrieve x,y,y_err as lists to pass them to something like pyplot.errorbar def plottable(self): """Outputs the correlator in a plotable format. @@ -171,9 +169,6 @@ class Corr: return x_list, y_list, y_err_list - # symmetric returns a Corr, that has been symmetrized. - # A symmetry checker is still to be implemented - # The method will not delete any redundant timeslices (Bad for memory, Great for convenience) def symmetric(self): """ Symmetrize the correlator around x0=0.""" if self.T % 2 != 0: @@ -210,8 +205,8 @@ class Corr: raise Exception("Corr could not be symmetrized: No redundant values") return Corr(newcontent, prange=self.prange) - # This method will symmetrice the matrices and therefore make them positive definit. def smearing_symmetric(self): + """Symmetrizes the matrices and therefore make them positive definite.""" if self.N > 1: transposed = [None if (G is None) else G.T for G in self.content] return 0.5 * (Corr(transposed) + self) @@ -231,7 +226,7 @@ class Corr: G0[i, j] = self.content[t0][i, j].value Gt[i, j] = self.content[ts][i, j].value - sp_vecs = GEVP_solver(Gt, G0) + sp_vecs = _GEVP_solver(Gt, G0) sp_vec = sp_vecs[state] return sp_vec if return_list: @@ -244,16 +239,16 @@ class Corr: G0[i, j] = self.content[t0][i, j].value Gt[i, j] = self.content[t][i, j].value - sp_vecs = GEVP_solver(Gt, G0) + sp_vecs = _GEVP_solver(Gt, G0) if sorting == "Eigenvalue": sp_vec = sp_vecs[state] all_vecs.append(sp_vec) else: all_vecs.append(sp_vecs) - except "Failure to solve for one timeslice": # This could contain a check for real eigenvectors + except Exception: all_vecs.append(None) if sorting == "Eigenvector": - all_vecs = sort_vectors(all_vecs, ts) + all_vecs = _sort_vectors(all_vecs, ts) all_vecs = [a[state] for a in all_vecs] return all_vecs @@ -278,11 +273,20 @@ class Corr: return Corr(newcontent) def Hankel(self, N, periodic=False): - # Constructs an NxN Hankel matrix - # C(t) c(t+1) ... c(t+n-1) - # C(t+1) c(t+2) ... c(t+n) - # ................. - # C(t+(n-1)) c(t+n) ... c(t+2(n-1)) + """Constructs an NxN Hankel matrix + + C(t) c(t+1) ... c(t+n-1) + C(t+1) c(t+2) ... c(t+n) + ................. + C(t+(n-1)) c(t+n) ... c(t+2(n-1)) + + Parameters: + ----------- + N : int + Dimension of the Hankel matrix + periodic : bool, optional + determines whether the matrix is extended periodically + """ if self.N != 1: raise Exception("Multi-operator Prony not implemented!") @@ -519,11 +523,6 @@ class Corr: if self.N != 1: raise Exception("Correlator must be projected before fitting") - # The default behavior is: - # 1 use explicit fitrange - # if none is provided, use the range of the corr - # if this is also not set, use the whole length of the corr (This could come with a warning!) - if fitrange is None: if self.prange: fitrange = self.prange @@ -923,7 +922,8 @@ class Corr: return self._apply_func_to_corr(return_imag) -def sort_vectors(vec_set, ts): # Helper function used to find a set of Eigenvectors consistent over all timeslices +def _sort_vectors(vec_set, ts): + """Helper function used to find a set of Eigenvectors consistent over all timeslices""" reference_sorting = np.array(vec_set[ts]) N = reference_sorting.shape[0] sorted_vec_set = [] @@ -942,7 +942,6 @@ def sort_vectors(vec_set, ts): # Helper function used to find a set of Eigenvec if current_score > best_score: best_score = current_score best_perm = perm - # print("best perm", best_perm) sorted_vec_set.append([vec_set[t][k] for k in best_perm]) else: sorted_vec_set.append(vec_set[t]) @@ -963,7 +962,7 @@ def permutation(lst): # Shamelessly copied return ll -def GEVP_solver(Gt, G0): # Just so normalization an sorting does not need to be repeated. Here we could later put in some checks +def _GEVP_solver(Gt, G0): # Just so normalization an sorting does not need to be repeated. Here we could later put in some checks sp_val, sp_vecs = scipy.linalg.eig(Gt, G0) sp_vecs = [sp_vecs[:, np.argsort(sp_val)[-i]] for i in range(1, sp_vecs.shape[0] + 1)] sp_vecs = [v / np.sqrt((v.T @ G0 @ v)) for v in sp_vecs] From 59eb1ee546ce7f9e3eb986e2b0d9e86fe3dd9905 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Tue, 18 Jan 2022 18:08:55 +0000 Subject: [PATCH 205/220] fix: skew and kurtosis now correctly calculated for non regular data in Obs.plot_history --- pyerrors/obs.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 9d49c59e..564d20b2 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -554,18 +554,24 @@ class Obs: plt.figure() r_length = [] tmp = [] + tmp_expanded = [] for r, r_name in enumerate(self.e_content[e_name]): + tmp.append(self.deltas[r_name] + self.r_values[r_name]) if expand: - tmp.append(_expand_deltas(self.deltas[r_name], list(self.idl[r_name]), self.shape[r_name]) + self.r_values[r_name]) + tmp_expanded.append(_expand_deltas(self.deltas[r_name], list(self.idl[r_name]), self.shape[r_name]) + self.r_values[r_name]) + r_length.append(len(tmp_expanded[-1])) else: - tmp.append(self.deltas[r_name] + self.r_values[r_name]) - r_length.append(len(tmp[-1])) + r_length.append(len(tmp[-1])) e_N = np.sum(r_length) x = np.arange(e_N) - y = np.concatenate(tmp, axis=0) + y_test = np.concatenate(tmp, axis=0) + if expand: + y = np.concatenate(tmp_expanded, axis=0) + else: + y = y_test plt.errorbar(x, y, fmt='.', markersize=3) plt.xlim(-0.5, e_N - 0.5) - plt.title(e_name + f', skew: {skew(y):.3f} (p={skewtest(y).pvalue:.3f}), kurtosis: {kurtosis(y):.3f} (p={kurtosistest(y).pvalue:.3f})') + plt.title(e_name + f', skew: {skew(y_test):.3f} (p={skewtest(y_test).pvalue:.3f}), kurtosis: {kurtosis(y_test):.3f} (p={kurtosistest(y_test).pvalue:.3f})') plt.draw() def plot_piechart(self): From 9b52a9a615430cb17448034edaec03b42eba96cb Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 19 Jan 2022 10:43:18 +0000 Subject: [PATCH 206/220] feat!: dump methods now export to the json.gz format by default. Pickle format can be chosen via parameter. --- examples/03_pcac_example.ipynb | 2 +- pyerrors/correlators.py | 26 +++++++++++++++++++------- pyerrors/obs.py | 24 +++++++++++++++++------- tests/correlators_test.py | 13 +++++++++++-- tests/io_test.py | 2 +- tests/obs_test.py | 11 ++++++++--- 6 files changed, 57 insertions(+), 21 deletions(-) diff --git a/examples/03_pcac_example.ipynb b/examples/03_pcac_example.ipynb index 57cc1643..8bbb3e82 100644 --- a/examples/03_pcac_example.ipynb +++ b/examples/03_pcac_example.ipynb @@ -320,7 +320,7 @@ "outputs": [], "source": [ "pcac_plateau.tag = \"O(a) improved PCAC mass extracted on the test ensemble\"\n", - "pe.input.json.dump_to_json(pcac_plateau, \"pcac_plateau_test_ensemble\")" + "pcac_plateau.dump(\"pcac_plateau_test_ensemble\", datatype=\"json.gz\")" ] }, { diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index dedd4dd8..9262d08d 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -280,8 +280,8 @@ class Corr: ................. C(t+(n-1)) c(t+n) ... c(t+2(n-1)) - Parameters: - ----------- + Parameters + ---------- N : int Dimension of the Hankel matrix periodic : bool, optional @@ -666,17 +666,29 @@ class Corr: return - def dump(self, filename, **kwargs): - """Dumps the Corr into a pickle file + def dump(self, filename, datatype="json.gz", **kwargs): + """Dumps the Corr into a file of chosen type Parameters ---------- filename : str - Name of the file + Name of the file to be saved. + datatype : str + Format of the exported file. Supported formats include + "json.gz" and "pickle" path : str specifies a custom path for the file (default '.') """ - dump_object(self, filename, **kwargs) - return + if datatype == "json.gz": + from .input.json import dump_to_json + if 'path' in kwargs: + file_name = kwargs.get('path') + '/' + filename + else: + file_name = filename + dump_to_json(self, file_name) + elif datatype == "pickle": + dump_object(self, filename, **kwargs) + else: + raise Exception("Unknown datatype " + str(datatype)) def print(self, range=[0, None]): print(self.__repr__(range)) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 564d20b2..450eab66 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -590,22 +590,32 @@ class Obs: return dict(zip(self.e_names, sizes)) - def dump(self, name, **kwargs): - """Dump the Obs to a pickle file 'name'. + def dump(self, filename, datatype="json.gz", **kwargs): + """Dump the Obs to a file 'name' of chosen format. Parameters ---------- - name : str + filename : str name of the file to be saved. + datatype : str + Format of the exported file. Supported formats include + "json.gz" and "pickle" path : str specifies a custom path for the file (default '.') """ if 'path' in kwargs: - file_name = kwargs.get('path') + '/' + name + '.p' + file_name = kwargs.get('path') + '/' + filename else: - file_name = name + '.p' - with open(file_name, 'wb') as fb: - pickle.dump(self, fb) + file_name = filename + + if datatype == "json.gz": + from .input.json import dump_to_json + dump_to_json([self], file_name) + elif datatype == "pickle": + with open(file_name + '.p', 'wb') as fb: + pickle.dump(self, fb) + else: + raise Exception("Unknown datatype " + str(datatype)) def export_jackknife(self): """Export jackknife samples from the Obs diff --git a/tests/correlators_test.py b/tests/correlators_test.py index ff3445e6..155fc61b 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -131,11 +131,20 @@ def test_utility(): corr.print([2, 4]) corr.show() - corr.dump('test_dump', path='.') - corr.dump('test_dump') + corr.dump('test_dump', datatype="pickle", path='.') + corr.dump('test_dump', datatype="pickle") new_corr = pe.load_object('test_dump.p') os.remove('test_dump.p') for o_a, o_b in zip(corr.content, new_corr.content): assert np.isclose(o_a[0].value, o_b[0].value) assert np.isclose(o_a[0].dvalue, o_b[0].dvalue) assert np.allclose(o_a[0].deltas['t'], o_b[0].deltas['t']) + + corr.dump('test_dump', datatype="json.gz", path='.') + corr.dump('test_dump', datatype="json.gz") + new_corr = pe.input.json.load_json('test_dump') + os.remove('test_dump.json.gz') + for o_a, o_b in zip(corr.content, new_corr.content): + assert np.isclose(o_a[0].value, o_b[0].value) + assert np.isclose(o_a[0].dvalue, o_b[0].dvalue) + assert np.allclose(o_a[0].deltas['t'], o_b[0].deltas['t']) diff --git a/tests/io_test.py b/tests/io_test.py index 31211db4..b9726130 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -111,7 +111,7 @@ def test_json_corr_io(): def test_json_corr_2d_io(): - obs_list = [np.array([[pe.pseudo_Obs(1.0 + i, 0.1 * i, 'test'), pe.pseudo_Obs(0.0, 0.1 * i, 'test')], [pe.pseudo_Obs(0.0, 0.1 * i, 'test'), pe.pseudo_Obs(1.0 + i, 0.1 * i, 'test')]]) for i in range(8)] + obs_list = [np.array([[pe.pseudo_Obs(1.0 + i, 0.1 * i, 'test'), pe.pseudo_Obs(0.0, 0.1 * i, 'test')], [pe.pseudo_Obs(0.0, 0.1 * i, 'test'), pe.pseudo_Obs(1.0 + i, 0.1 * i, 'test')]]) for i in range(4)] for tag in [None, "test"]: obs_list[3][0, 1].tag = tag diff --git a/tests/obs_test.py b/tests/obs_test.py index 210ac67c..cf09e0aa 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -57,11 +57,16 @@ def test_dump(): value = np.random.normal(5, 10) dvalue = np.abs(np.random.normal(0, 1)) test_obs = pe.pseudo_Obs(value, dvalue, 't') - test_obs.dump('test_dump', path=".") - test_obs.dump('test_dump') + test_obs.dump('test_dump', datatype="pickle", path=".") + test_obs.dump('test_dump', datatype="pickle") new_obs = pe.load_object('test_dump.p') os.remove('test_dump.p') - assert test_obs.deltas['t'].all() == new_obs.deltas['t'].all() + assert test_obs == new_obs + test_obs.dump('test_dump', dataype="json.gz", path=".") + test_obs.dump('test_dump', dataype="json.gz") + new_obs = pe.input.json.load_json("test_dump") + os.remove('test_dump.json.gz') + assert test_obs == new_obs def test_comparison(): From c8ec5909f14e760bf6bab17140eb52729eafb721 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 19 Jan 2022 10:46:33 +0000 Subject: [PATCH 207/220] fix: io tests for corr now properly clean up --- tests/io_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/io_test.py b/tests/io_test.py index b9726130..6b5c0917 100644 --- a/tests/io_test.py +++ b/tests/io_test.py @@ -105,6 +105,7 @@ def test_json_corr_io(): my_corr.tag = corr_tag pe.input.json.dump_to_json(my_corr, 'corr') recover = pe.input.json.load_json('corr') + os.remove('corr.json.gz') assert np.all([o.is_zero() for o in [x for x in (my_corr - recover) if x is not None]]) assert my_corr.tag == recover.tag assert my_corr.reweighted == recover.reweighted @@ -120,5 +121,6 @@ def test_json_corr_2d_io(): my_corr.tag = tag pe.input.json.dump_to_json(my_corr, 'corr') recover = pe.input.json.load_json('corr') + os.remove('corr.json.gz') assert np.all([np.all([o.is_zero() for o in q]) for q in [x.ravel() for x in (my_corr - recover) if x is not None]]) assert my_corr.tag == recover.tag From 78ff4bb1173ab32dda873d7b9d2f328f05ba1869 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 19 Jan 2022 10:55:51 +0000 Subject: [PATCH 208/220] refactor: moved _assert_equal_properties from input.json to misc --- pyerrors/input/json.py | 15 +-------------- pyerrors/misc.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/pyerrors/input/json.py b/pyerrors/input/json.py index 816be57e..1214019f 100644 --- a/pyerrors/input/json.py +++ b/pyerrors/input/json.py @@ -9,6 +9,7 @@ import warnings from ..obs import Obs from ..covobs import Covobs from ..correlators import Corr +from ..misc import _assert_equal_properties from .. import version as pyerrorsversion @@ -104,20 +105,6 @@ def create_json_string(ol, description='', indent=1): dl.append(ed) return dl - def _assert_equal_properties(ol, otype=Obs): - for o in ol: - if not isinstance(o, otype): - raise Exception("Wrong data type in list.") - for o in ol[1:]: - if not ol[0].is_merged == o.is_merged: - raise Exception("All Obs in list have to be defined on the same set of configs.") - if not ol[0].reweighted == o.reweighted: - raise Exception("All Obs in list have to have the same property 'reweighted'.") - if not ol[0].e_content == o.e_content: - raise Exception("All Obs in list have to be defined on the same set of configs.") - if not ol[0].idl == o.idl: - raise Exception("All Obs in list have to be defined on the same set of configurations.") - def write_Obs_to_dict(o): d = {} d['type'] = 'Obs' diff --git a/pyerrors/misc.py b/pyerrors/misc.py index e3bfbc33..edbdc369 100644 --- a/pyerrors/misc.py +++ b/pyerrors/misc.py @@ -70,3 +70,19 @@ def gen_correlated_data(means, cov, name, tau=0.5, samples=1000): data.append(np.sqrt(1 - a ** 2) * rand[i] + a * data[-1]) corr_data = np.array(data) - np.mean(data, axis=0) + means return [Obs([dat], [name]) for dat in corr_data.T] + + +def _assert_equal_properties(ol, otype=Obs): + for o in ol: + if not isinstance(o, otype): + raise Exception("Wrong data type in list.") + for o in ol[1:]: + if not ol[0].is_merged == o.is_merged: + raise Exception("All Obs in list have to be defined on the same set of configs.") + if not ol[0].reweighted == o.reweighted: + raise Exception("All Obs in list have to have the same property 'reweighted'.") + if not ol[0].e_content == o.e_content: + raise Exception("All Obs in list have to be defined on the same set of configs.") + if not ol[0].idl == o.idl: + raise Exception("All Obs in list have to be defined on the same set of configurations.") + From c3ba07280b51bc3a31476349fc1a4d0a489a2346 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 19 Jan 2022 11:03:45 +0000 Subject: [PATCH 209/220] feat: When initializing 1d correlators it is now checked whether all obs are defined on the same ensembles. --- pyerrors/correlators.py | 6 ++---- pyerrors/misc.py | 1 - tests/correlators_test.py | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/pyerrors/correlators.py b/pyerrors/correlators.py index 9262d08d..2209c431 100644 --- a/pyerrors/correlators.py +++ b/pyerrors/correlators.py @@ -4,7 +4,7 @@ import autograd.numpy as anp import matplotlib.pyplot as plt import scipy.linalg from .obs import Obs, reweight, correlate, CObs -from .misc import dump_object +from .misc import dump_object, _assert_equal_properties from .fits import least_squares from .linalg import eigh, inv, cholesky from .roots import find_root @@ -42,10 +42,8 @@ class Corr: if not isinstance(data_input, list): raise TypeError('Corr__init__ expects a list of timeslices.') - # data_input can have multiple shapes. The simplest one is a list of Obs. - # We check, if this is the case if all([(isinstance(item, Obs) or isinstance(item, CObs)) for item in data_input]): - + _assert_equal_properties(data_input) self.content = [np.asarray([item]) for item in data_input] self.N = 1 diff --git a/pyerrors/misc.py b/pyerrors/misc.py index edbdc369..740aff9a 100644 --- a/pyerrors/misc.py +++ b/pyerrors/misc.py @@ -85,4 +85,3 @@ def _assert_equal_properties(ol, otype=Obs): raise Exception("All Obs in list have to be defined on the same set of configs.") if not ol[0].idl == o.idl: raise Exception("All Obs in list have to be defined on the same set of configurations.") - diff --git a/tests/correlators_test.py b/tests/correlators_test.py index 155fc61b..55d0a977 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -120,6 +120,24 @@ def test_padded_correlator(): [o for o in my_corr] +def test_corr_exceptions(): + obs_a = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test']) + obs_b= pe.Obs([np.random.normal(0.1, 0.1, 99)], ['test']) + with pytest.raises(Exception): + pe.Corr([obs_a, obs_b]) + + obs_a = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test']) + obs_b= pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test'], idl=[range(1, 200, 2)]) + with pytest.raises(Exception): + pe.Corr([obs_a, obs_b]) + + obs_a = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test']) + obs_b= pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test2']) + with pytest.raises(Exception): + pe.Corr([obs_a, obs_b]) + + + def test_utility(): corr_content = [] for t in range(8): From 59137785ed299a2220c75e0ea4353fc050537767 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Wed, 19 Jan 2022 13:18:44 +0000 Subject: [PATCH 210/220] feat: _asser_equal_properties improved by removing one for loop --- pyerrors/misc.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyerrors/misc.py b/pyerrors/misc.py index 740aff9a..7e52d795 100644 --- a/pyerrors/misc.py +++ b/pyerrors/misc.py @@ -73,10 +73,11 @@ def gen_correlated_data(means, cov, name, tau=0.5, samples=1000): def _assert_equal_properties(ol, otype=Obs): - for o in ol: + if not isinstance(ol[0], otype): + raise Exception("Wrong data type in list.") + for o in ol[1:]: if not isinstance(o, otype): raise Exception("Wrong data type in list.") - for o in ol[1:]: if not ol[0].is_merged == o.is_merged: raise Exception("All Obs in list have to be defined on the same set of configs.") if not ol[0].reweighted == o.reweighted: From 50d6b0d9f516fafc3fff655c1dd4cb82e2c0da24 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 20 Jan 2022 13:49:34 +0000 Subject: [PATCH 211/220] tests: Warnings in tests fixed, conftest.py and pytest.ini removed --- conftest.py | 0 pytest.ini | 4 ---- tests/correlators_test.py | 8 +++----- 3 files changed, 3 insertions(+), 9 deletions(-) delete mode 100644 conftest.py delete mode 100644 pytest.ini diff --git a/conftest.py b/conftest.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index 96153227..00000000 --- a/pytest.ini +++ /dev/null @@ -1,4 +0,0 @@ -[pytest] -filterwarnings = - ignore::RuntimeWarning:autograd.*: - ignore::RuntimeWarning:numdifftools.*: diff --git a/tests/correlators_test.py b/tests/correlators_test.py index 55d0a977..c8f57d75 100644 --- a/tests/correlators_test.py +++ b/tests/correlators_test.py @@ -38,9 +38,6 @@ def test_function_overloading(): np.arccosh(corr_a + 1.1) np.arctanh(corr_a) - with pytest.raises(Exception): - np.arccosh(corr_a) - def test_modify_correlator(): corr_content = [] @@ -64,12 +61,13 @@ def test_modify_correlator(): def test_m_eff(): - my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(9, 0.05, 't'), pe.pseudo_Obs(8, 0.1, 't'), pe.pseudo_Obs(7, 0.05, 't')]) + my_corr = pe.correlators.Corr([pe.pseudo_Obs(10, 0.1, 't'), pe.pseudo_Obs(9, 0.05, 't'), pe.pseudo_Obs(9, 0.1, 't'), pe.pseudo_Obs(10, 0.05, 't')]) my_corr.m_eff('log') my_corr.m_eff('cosh') - my_corr.m_eff('sinh') my_corr.m_eff('arccosh') + with pytest.warns(RuntimeWarning): + 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')]) From 0ed161f467f530931ca0f4be4439d1880f67a9a9 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 20 Jan 2022 13:56:56 +0000 Subject: [PATCH 212/220] tests: conftest.py added --- conftest.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 conftest.py diff --git a/conftest.py b/conftest.py new file mode 100644 index 00000000..e69de29b From 1edd4ef91ab37333bbdec6346d170a1ed85ad8ba Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Thu, 20 Jan 2022 14:24:44 +0000 Subject: [PATCH 213/220] build: version number on develop branch changed to 2.0.0+dev --- pyerrors/version.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyerrors/version.py b/pyerrors/version.py index 8c0d5d5b..1452f094 100644 --- a/pyerrors/version.py +++ b/pyerrors/version.py @@ -1 +1 @@ -__version__ = "2.0.0" +__version__ = "2.0.0+dev" diff --git a/setup.py b/setup.py index 5a971d92..cef96ece 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup, find_packages setup(name='pyerrors', - version='2.0.0', + version='2.0.0+dev', description='Error analysis for lattice QCD', author='Fabian Joswig', author_email='fabian.joswig@ed.ac.uk', From 1668b1e7b3653a15621ff3b125cf124f176888f6 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Jan 2022 13:09:53 +0000 Subject: [PATCH 214/220] docs: input.sfcf.read_sfcf docstring extended --- pyerrors/input/sfcf.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 7e840dcd..a060c6b7 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -11,53 +11,57 @@ from . import utils def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, version="1.0c", **kwargs): - """Read sfcf c format from given folder structure. + """Read sfcf format from given folder structure. Parameters ---------- - quarks: str + path : str + Path to the measurement files. + prefix : str + Ensemble prefix for which the data is to be extracted. + name : str + Name of the correlation function to be extracted from the file + quarks: str, optional Label of the quarks used in the sfcf input file. e.g. "quark quark" for version 0.0 this does NOT need to be given with the typical " - " that is present in the output file, this is done automatically for this version - noffset: int + noffset: int, optional Offset of the source (only relevant when wavefunctions are used) - wf: int + wf: int, optional ID of wave function - wf2: int + wf2: int, optional ID of the second wavefunction (only relevant for boundary-to-boundary correlation functions) - im: bool + im: bool, optional if True, read imaginary instead of real part of the correlation function. - b2b: bool + b2b: bool, optional if True, read a time-dependent boundary-to-boundary correlation function - single: bool + single: bool, optional if True, read time independent boundary to boundary correlation function - names: list + names: list, optional Alternative labeling for replicas/ensembles. Has to have the appropriate length - ens_name : str + ens_name : str, optional replaces the name of the ensemble - version: str + version: str, optional version of SFCF, with which the measurement was done. if the compact output option (-c) was specified, append a "c" to the version (e.g. "1.0c") if the append output option (-a) was specified, append an "a" to the version. Currently supported versions are "0.0", "1.0", "2.0", "1.0c", "2.0c", "1.0a" and "2.0a". - replica: list + replica: list, optional list of replica to be read, default is all - files: list + files: list, optional list of files to be read per replica, default is all. for non-compact output format, hand the folders to be read here. - check_configs: + check_configs: list, optional list of list of supposed configs, eg. [range(1,1000)] for one replicum with 1000 configs - TODO: - - whats going on with files here? """ if kwargs.get('im'): im = 1 From b1221cb76d63172190fb1c02651e841c316a0b36 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Jan 2022 13:28:12 +0000 Subject: [PATCH 215/220] fix: sfcf_read now correctly throws an exception when append mode files were not found. --- pyerrors/input/sfcf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index a060c6b7..305d53cd 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -290,6 +290,8 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, if not fnmatch.fnmatch(exc, prefix + '*.' + name): ls = list(set(ls) - set([exc])) ls.sort(key=lambda x: int(re.findall(r'\d+', x)[-1])) + if len(ls) == 0: + raise Exception('File(s) for correlator ' + name + ' not found.') pattern = 'name ' + name + '\nquarks ' + quarks + '\noffset ' + str(noffset) + '\nwf ' + str(wf) if b2b: pattern += '\nwf_2 ' + str(wf2) From 75111b07ffd0134b46f9d331d4c6c29d4e58b75e Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Jan 2022 13:33:58 +0000 Subject: [PATCH 216/220] feat: sfcf_read output to stdout improved --- pyerrors/input/sfcf.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index 305d53cd..a3bf2dec 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -125,8 +125,7 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, replica = len(ls) else: replica = len([file.split(".")[-1] for file in ls]) // len(set([file.split(".")[-1] for file in ls])) - print('Read', part, 'part of', name, 'from', prefix[:-1], - ',', replica, 'replica') + print("Read", part, "part of '" + str(name) + "' with prefix '" + str(prefix) + "' (" + str(replica) + " replica)") if 'names' in kwargs: new_names = kwargs.get('names') if len(new_names) != len(set(new_names)): From b0e98de0835aa07328d32fc597fb76979ae1f1e4 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Jan 2022 13:39:56 +0000 Subject: [PATCH 217/220] fix: handling for exceptional cases in sfcf_read improved --- pyerrors/input/sfcf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyerrors/input/sfcf.py b/pyerrors/input/sfcf.py index a3bf2dec..8d73423d 100644 --- a/pyerrors/input/sfcf.py +++ b/pyerrors/input/sfcf.py @@ -112,12 +112,12 @@ def read_sfcf(path, prefix, name, quarks='.*', noffset=0, wf=0, wf2=0, else: ls.extend(filenames) break - if not ls: - raise Exception('Error, directory not found') # Exclude folders with different names for exc in ls: if not fnmatch.fnmatch(exc, prefix + '*'): ls = list(set(ls) - set([exc])) + if not ls: + raise Exception('No matching directories found.') if len(ls) > 1: ls.sort(key=lambda x: int(re.findall(r'\d+', x[len(prefix):])[0])) From de6ea7902bbdbbe9ff5c91554bc60ea77a5d84f8 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Jan 2022 14:04:35 +0000 Subject: [PATCH 218/220] fix: plot_tauint and plot_rho now generate separate figures for different ensembles again, saving the figures now also works for multiple ensembles. --- pyerrors/obs.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 450eab66..4d505492 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -470,8 +470,8 @@ class Obs: if not hasattr(self, 'e_dvalue'): raise Exception('Run the gamma method first.') - fig = plt.figure() for e, e_name in enumerate(self.mc_names): + fig = plt.figure() plt.xlabel(r'$W$') plt.ylabel(r'$\tau_\mathrm{int}$') length = int(len(self.e_n_tauint[e_name])) @@ -496,13 +496,20 @@ class Obs: plt.ylim(bottom=0.0) plt.draw() if save: - fig.savefig(save) + fig.savefig(save + "_" + str(e)) - def plot_rho(self): - """Plot normalized autocorrelation function time for each ensemble.""" + def plot_rho(self, save=None): + """Plot normalized autocorrelation function time for each ensemble. + + Parameters + ---------- + save : str + saves the figure to a file named 'save' if. + """ if not hasattr(self, 'e_dvalue'): raise Exception('Run the gamma method first.') for e, e_name in enumerate(self.mc_names): + fig = plt.figure() plt.xlabel('W') plt.ylabel('rho') length = int(len(self.e_drho[e_name])) @@ -519,6 +526,8 @@ class Obs: plt.plot([-0.5, xmax], [0, 0], 'k--', lw=1) plt.xlim(-0.5, xmax) plt.draw() + if save: + fig.savefig(save + "_" + str(e)) def plot_rep_dist(self): """Plot replica distribution for each ensemble with more than one replicum.""" From 9aab65425667e4f15916c7a2fff104f6a035ae61 Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Jan 2022 14:07:34 +0000 Subject: [PATCH 219/220] fix: output of skew and kurtosis in title of plot_history moved to new line for readability. --- pyerrors/obs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 4d505492..f395d7db 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -580,7 +580,7 @@ class Obs: y = y_test plt.errorbar(x, y, fmt='.', markersize=3) plt.xlim(-0.5, e_N - 0.5) - plt.title(e_name + f', skew: {skew(y_test):.3f} (p={skewtest(y_test).pvalue:.3f}), kurtosis: {kurtosis(y_test):.3f} (p={kurtosistest(y_test).pvalue:.3f})') + plt.title(e_name + f'\nskew: {skew(y_test):.3f} (p={skewtest(y_test).pvalue:.3f}), kurtosis: {kurtosis(y_test):.3f} (p={kurtosistest(y_test).pvalue:.3f})') plt.draw() def plot_piechart(self): From 05d36dc70b3ecf8f1240fa492cf819ad85fd1a3c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Jan 2022 14:53:55 +0000 Subject: [PATCH 220/220] docs: documentation for matrix operations extended, docstrings in input.misc fixed --- pyerrors/__init__.py | 21 ++++++++++++++++----- pyerrors/input/misc.py | 17 +++++++---------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index a8ee7aaa..7687ad53 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -161,7 +161,7 @@ Passing arguments to the `gamma_method` still dominates over the dictionaries. ## Irregular Monte Carlo chains -Irregular Monte Carlo chains can be initialized with the parameter `idl`. +`Obs` objects defined on irregular Monte Carlo chains can be initialized with the parameter `idl`. ```python # Observable defined on configurations 20 to 519 @@ -187,6 +187,8 @@ obs3.details() ``` +`Obs` objects defined on regular and irregular histories of the same ensemble can be computed with each other and the correct error propagation and estimation is automatically taken care of. + **Warning:** Irregular Monte Carlo chains can result in odd patterns in the autocorrelation functions. Make sure to check the autocorrelation time with e.g. `pyerrors.obs.Obs.plot_rho` or `pyerrors.obs.Obs.plot_tauint`. @@ -241,7 +243,7 @@ my_new_corr = 0.3 * my_corr[2] * my_corr * my_corr + 12 / my_corr - `Corr.correlate` constructs a disconnected correlation function from the correlator and another `Corr` or `Obs` object. - `Corr.reweight` reweights the correlator. -`pyerrors` can also handle matrices of correlation functions and extract energy states from these matrices via a generalized eigenvalue problem (see `pyerrors.correlators.Corr.GEVP). +`pyerrors` can also handle matrices of correlation functions and extract energy states from these matrices via a generalized eigenvalue problem (see `pyerrors.correlators.Corr.GEVP`). For the full API see `pyerrors.correlators.Corr`. @@ -273,17 +275,26 @@ print(my_derived_cobs) `pyerrors.roots` # Matrix operations -`pyerrors.linalg` +`pyerrors` provides wrappers for `Obs`-valued matrix operations based on `numpy.linalg`. The supported functions include: +- `inv` for the matrix inverse. +- `cholseky` for the Cholesky decomposition. +- `det` for the matrix determinant. +- `eigh` for eigenvalues and eigenvectors of hermitean matrices. +- `eig` for eigenvalues of general matrices. +- `pinv` for the Moore-Penrose pseudoinverse. +- `svd` for the singular-value-decomposition. + +For the full API see `pyerrors.linalg`. # Export data -The preferred exported file format within `pyerrors` is +The preferred exported file format within `pyerrors` is json.gz ## Jackknife samples For comparison with other analysis workflows `pyerrors` can generate jackknife samples from an `Obs` object or import jackknife samples into an `Obs` object. See `pyerrors.obs.Obs.export_jackknife` and `pyerrors.obs.import_jackknife` for details. # Input -`pyerrors.input` +`pyerrors` includes an `input` submodule in which input routines and parsers for the output of various numerical programs are contained. For details see `pyerrors.input`. ''' from .obs import * from .correlators import * diff --git a/pyerrors/input/misc.py b/pyerrors/input/misc.py index b1328241..6d7b6d50 100644 --- a/pyerrors/input/misc.py +++ b/pyerrors/input/misc.py @@ -1,6 +1,3 @@ -#!/usr/bin/env python -# coding: utf-8 - import os import fnmatch import re @@ -12,11 +9,12 @@ from ..obs import Obs def read_pbp(path, prefix, **kwargs): """Read pbp format from given folder structure. Returns a list of length nrw - Keyword arguments - ----------------- - r_start -- list which contains the first config to be read for each replicum - r_stop -- list which contains the last config to be read for each replicum - + Parameters + ---------- + r_start : list + list which contains the first config to be read for each replicum + r_stop : list + list which contains the last config to be read for each replicum """ extract_nfct = 1 @@ -66,7 +64,6 @@ def read_pbp(path, prefix, **kwargs): tmp_array = [] with open(path + '/' + ls[rep], 'rb') as fp: - # header t = fp.read(4) # number of reweighting factors if rep == 0: nrw = struct.unpack('i', t)[0] @@ -74,7 +71,7 @@ def read_pbp(path, prefix, **kwargs): deltas.append([]) else: if nrw != struct.unpack('i', t)[0]: - raise Exception('Error: different number of reweighting factors for replicum', rep) + raise Exception('Error: different number of factors for replicum', rep) for k in range(nrw): tmp_array.append([])