From 406e03c7d13c447babb6517d9f0288b7b67cfbd2 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Fri, 23 Sep 2022 10:51:16 +0100 Subject: [PATCH 01/25] update --- src/alchemlyb/convergence/__init__.py | 2 +- src/alchemlyb/convergence/convergence.py | 137 ++++++++++++++++++++++- src/alchemlyb/tests/test_convergence.py | 47 +++++++- 3 files changed, 183 insertions(+), 3 deletions(-) diff --git a/src/alchemlyb/convergence/__init__.py b/src/alchemlyb/convergence/__init__.py index e8dd32b3..a64048cd 100644 --- a/src/alchemlyb/convergence/__init__.py +++ b/src/alchemlyb/convergence/__init__.py @@ -1 +1 @@ -from .convergence import forward_backward_convergence +from .convergence import forward_backward_convergence, R_c, A_c diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index bc6bbdf3..4e93f3d2 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -7,6 +7,7 @@ from ..estimators import BAR, TI, FEP_ESTIMATORS, TI_ESTIMATORS from ..estimators import AutoMBAR as MBAR from .. import concat +from ..postprocessors.units import to_kcalmol def forward_backward_convergence(df_list, estimator='MBAR', num=10, **kwargs): @@ -63,7 +64,7 @@ def forward_backward_convergence(df_list, estimator='MBAR', num=10, **kwargs): .. versionadded:: 0.6.0 .. versionchanged:: 1.0.0 The ``estimator`` accepts uppercase input. - The default for using ``estimator='MBAR'`` was changed from + The default for using ``estimator='MBAR'`` was changed from :class:`~alchemlyb.estimators.MBAR` to :class:`~alchemlyb.estimators.AutoMBAR`. ''' @@ -137,3 +138,137 @@ def forward_backward_convergence(df_list, estimator='MBAR', num=10, **kwargs): 'data_fraction': [i / num for i in range(1, num + 1)]}) convergence.attrs = df_list[0].attrs return convergence + +def _cummean(vals, out_length): + '''The cumulative mean of an array. + + This function computes the cumulative mean and shapes the result to the + desired length. + + Parameters + ---------- + vals : numpy.array + The one-dimensional input array. + out_length : int + The length of the output array. + + Returns + ------- + numpy.array + The one-dimensional input array with length of total. + + Note + ---- + If the length of the input series is smaller than the ``out_length``, the + length of the output array is the same as the input series. + + + .. versionadded:: 1.0.0 + + ''' + in_length = len(vals) + if in_length < out_length: + out_length = in_length + block = in_length // out_length + reshape = vals[: block*out_length].reshape(block, out_length) + mean = np.mean(reshape, axis=0) + result = np.cumsum(mean) / np.arange(1, out_length+1) + return result + +def R_c(series, precision=0.01, diff=2): + '''Generate the convergence criteria R_c for a single simulation. + + The input will be pandas.Series generated by + :func:`~alchemlyb.preprocessing.subsampling.decorrelate_u_nk` or + :func:`~alchemlyb.preprocessing.subsampling.decorrelate_dhdl`. + + The output will the float R_c. R_c = 0 indicates that the system is well + equilibrated right from the beginning while R_c = 1 signifies that the + whole trajectory is not equilibrated. + + Parameters + ---------- + series : pandas.Series + The input energy array. + precision : float + The precision of the output R_c. + diff : float + Tolerance of the convergence check in kcal/mol. + + Returns + ------- + float + Convergence time fraction. + + Note + ---- + This function tries to compute R_c from equation 16 from + https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8397498/#FD16. The code is + modified based on Shujie Fan's (@VOD555) work. + + + .. versionadded:: 1.0.0 + ''' + series = to_kcalmol(series) + array = series.to_numpy() + out_length = int(1 / precision) + g_forward = _cummean(array, out_length) + g_backward = _cummean(array[::-1], out_length)[::-1] + length = len(g_forward) + # Final value + g = g_forward[-1] + conv = ((g_forward>g-diff) & (g_forwardg-diff)&(g_backward Date: Fri, 23 Sep 2022 17:00:08 +0100 Subject: [PATCH 02/25] update --- docs/convergence.rst | 32 ++++++++++++++++++++++ src/alchemlyb/preprocessing/subsampling.py | 4 ++- src/alchemlyb/tests/test_convergence.py | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index 55a4e270..b35d4f1f 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -33,6 +33,29 @@ Will give a plot looks like this A convergence plot of showing that the forward and backward has converged fully. +Fraction Convergence +---------------- + +Another way of assessing whether the simulation has converged is to check the +energy files. In [Fan2021]_, R_c and A_c are two criteria of checking +the convergence. R_c takes a decorrelated :class:`pandas.Series` as input and +gives the metric R_c, which is 0 for fully-equilibrated simulation and 1 for +fully-unequilibrated simulation. :: + + >>> from alchemtest.gmx import load_ABFE + >>> from alchemlyb.parsing.gmx import extract_dHdl + >>> from alchemlyb.preprocessing import decorrelate_dhdl, dhdl2series + >>> from alchemlyb.convergence import R_c + + >>> file = load_ABFE().data['ligand'][0] + >>> dhdl = extract_dHdl(file, T=300) + >>> decorrelated = decorrelate_dhdl(dhdl, remove_burnin=True) + >>> value = R_c(dhdl2series(decorrelated)) + >>> print(value) + 0.99 + >>> df = forward_backward_convergence(data_list, 'mbar') + >>> ax = plot_convergence(df) + >>> ax.figure.savefig('dF_t.pdf') Convergence functions --------------------- @@ -45,4 +68,13 @@ The currently available connvergence functions: :toctree: convergence convergence + R_c + A_c + +References +---------- +.. [Fan2021] Fan, S., Nedev, H., Vijayan, R., Iorga, B.I., and Beckstein, O. + (2021). Precise force-field-based calculations of octanol-water partition + coefficients for the SAMPL7 molecules. Journal of Computer-Aided Molecular + Design 35, 853–87 diff --git a/src/alchemlyb/preprocessing/subsampling.py b/src/alchemlyb/preprocessing/subsampling.py index 87071b86..904c3f09 100644 --- a/src/alchemlyb/preprocessing/subsampling.py +++ b/src/alchemlyb/preprocessing/subsampling.py @@ -5,6 +5,7 @@ from pymbar.timeseries import (statisticalInefficiency, detectEquilibration, subsampleCorrelatedData, ) +from .. import pass_attrs def decorrelate_u_nk(df, method='dhdl', drop_duplicates=True, sort=True, remove_burnin=False, **kwargs): @@ -106,6 +107,7 @@ def decorrelate_dhdl(df, drop_duplicates=True, sort=True, else: return statistical_inefficiency(df, series, **kwargs) +@pass_attrs def u_nk2series(df, method='dhdl'): """Convert an u_nk DataFrame into a series based on the selected method for subsampling. @@ -174,7 +176,7 @@ def u_nk2series(df, method='dhdl'): 'Decorrelation method {} not found.'.format(method)) return series - +@pass_attrs def dhdl2series(df, method=''): """Convert a dhdl DataFrame to a series for subsampling. diff --git a/src/alchemlyb/tests/test_convergence.py b/src/alchemlyb/tests/test_convergence.py index cc3a007d..c99bf63f 100644 --- a/src/alchemlyb/tests/test_convergence.py +++ b/src/alchemlyb/tests/test_convergence.py @@ -104,4 +104,4 @@ def test_A_c_real(): data.attrs['temperature'] = 310 data.attrs['energy_unit'] = 'kcal/mol' value = A_c([data, ] * 2) - np.testing.assert_allclose(value, 0.7) \ No newline at end of file + np.testing.assert_allclose(value, 0.7) From 0f6d3e5945b92ceff560f26dd891759148a35205 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 26 Sep 2022 13:59:37 +0100 Subject: [PATCH 03/25] update --- docs/convergence.rst | 32 ++++++++++++++++------ src/alchemlyb/convergence/convergence.py | 2 +- src/alchemlyb/preprocessing/subsampling.py | 6 ++-- src/alchemlyb/tests/test_convergence.py | 6 ---- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index b35d4f1f..bb50a22c 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -34,13 +34,15 @@ Will give a plot looks like this fully. Fraction Convergence ----------------- +-------------------- Another way of assessing whether the simulation has converged is to check the -energy files. In [Fan2021]_, R_c and A_c are two criteria of checking -the convergence. R_c takes a decorrelated :class:`pandas.Series` as input and -gives the metric R_c, which is 0 for fully-equilibrated simulation and 1 for -fully-unequilibrated simulation. :: +energy files. In [Fan2021]_, :func:`~alchemlyb.convergence.R_c` and +:func:`~alchemlyb.convergence.A_c` are two criteria of checking the +convergence. :func:`~alchemlyb.convergence.R_c` takes a decorrelated +:class:`pandas.Series` as input and gives the metric +:func:`~alchemlyb.convergence.R_c`, which is 0 for fully-equilibrated +simulation and 1 for fully-unequilibrated simulation. :: >>> from alchemtest.gmx import load_ABFE >>> from alchemlyb.parsing.gmx import extract_dHdl @@ -52,10 +54,22 @@ fully-unequilibrated simulation. :: >>> decorrelated = decorrelate_dhdl(dhdl, remove_burnin=True) >>> value = R_c(dhdl2series(decorrelated)) >>> print(value) - 0.99 - >>> df = forward_backward_convergence(data_list, 'mbar') - >>> ax = plot_convergence(df) - >>> ax.figure.savefig('dF_t.pdf') + 0.02 + +The :func:`~alchemlyb.convergence.A_c` on the other hand, takes in a list of +decorrelated :class:`pandas.Series` and gives a metric of how converged the set +is, where 0 fully-unequilibrated and 1.0 is fully-equilibrated. :: + + >>> from alchemlyb.convergence import A_c + >>> dhdl_list = [] + >>> for file in load_ABFE().data['ligand']: + >>> dhdl = extract_dHdl(file, T=300) + >>> decorrelated = decorrelate_dhdl(dhdl, remove_burnin=True) + >>> decorrelated = dhdl2series(decorrelated) + >>> dhdl_list.append(decorrelated) + >>> value = A_c(dhdl_list) + 0.7085 + Convergence functions --------------------- diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 4e93f3d2..89e2a394 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -213,7 +213,7 @@ def R_c(series, precision=0.01, diff=2): array = series.to_numpy() out_length = int(1 / precision) g_forward = _cummean(array, out_length) - g_backward = _cummean(array[::-1], out_length)[::-1] + g_backward = _cummean(array[::-1], out_length) length = len(g_forward) # Final value g = g_forward[-1] diff --git a/src/alchemlyb/preprocessing/subsampling.py b/src/alchemlyb/preprocessing/subsampling.py index 904c3f09..981a7d90 100644 --- a/src/alchemlyb/preprocessing/subsampling.py +++ b/src/alchemlyb/preprocessing/subsampling.py @@ -495,9 +495,9 @@ def equilibrium_detection(df, series=None, lower=None, upper=None, step=None, .. versionchanged:: 1.0.0 - Add the drop_duplicates and sort keyword to unify the behaviour between - :func:`~alchemlyb.preprocessing.subsampling.statistical_inefficiency` or - :func:`~alchemlyb.preprocessing.subsampling.equilibrium_detection`. + Add the drop_duplicates and sort keyword to unify the behaviour between + :func:`~alchemlyb.preprocessing.subsampling.statistical_inefficiency` or + :func:`~alchemlyb.preprocessing.subsampling.equilibrium_detection`. """ df, series = _prepare_input(df, series, drop_duplicates, sort) diff --git a/src/alchemlyb/tests/test_convergence.py b/src/alchemlyb/tests/test_convergence.py index c99bf63f..dbe3023d 100644 --- a/src/alchemlyb/tests/test_convergence.py +++ b/src/alchemlyb/tests/test_convergence.py @@ -78,12 +78,6 @@ def test_cummean_long_none_integter(): '''Test the case where the input is not a integer multiple of the expected output''' value = _cummean(np.empty(25), 10) assert len(value) == 10 -def test_R_c_non_converged(): - data = pd.Series(data=range(100)) - data.attrs['temperature'] = 310 - data.attrs['energy_unit'] = 'kcal/mol' - value = R_c(data) - np.testing.assert_allclose(value, 1.0) def test_R_c_converged(): data = pd.Series(data=[0,]*100) From 5890ad028b8c9f9e42828608e839f18386e535ce Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 26 Sep 2022 14:46:57 +0100 Subject: [PATCH 04/25] update --- src/alchemlyb/__init__.py | 2 ++ src/alchemlyb/convergence/convergence.py | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/alchemlyb/__init__.py b/src/alchemlyb/__init__.py index 278eb466..329dd2d4 100644 --- a/src/alchemlyb/__init__.py +++ b/src/alchemlyb/__init__.py @@ -1,4 +1,5 @@ import pandas as pd +from functools import wraps from ._version import get_versions __version__ = get_versions()['version'] @@ -11,6 +12,7 @@ def pass_attrs(func): .. versionadded:: 0.5.0 ''' + @wraps(func) def wrapper(input_dataframe, *args,**kwargs): dataframe = func(input_dataframe, *args,**kwargs) dataframe.attrs = input_dataframe.attrs diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 89e2a394..f18aaa82 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -221,8 +221,6 @@ def R_c(series, precision=0.01, diff=2): for i in range(out_length): if all(conv[i:]): return i / length - else: - return 1.0 def A_c(series_list, precision=0.01, diff=2): '''Generate the ensemble convergence criteria A_c for a set of simulations. From a7f8be9b4c319aa66c876a772f850a3267872fb4 Mon Sep 17 00:00:00 2001 From: "William (Zhiyi) Wu" Date: Fri, 30 Sep 2022 08:08:16 +0100 Subject: [PATCH 05/25] update --- docs/convergence.rst | 5 ++- src/alchemlyb/convergence/convergence.py | 36 +++++++++++++++++++--- src/alchemlyb/tests/test_convergence.py | 9 ++++-- src/alchemlyb/visualisation/convergence.py | 23 +++++++++++--- 4 files changed, 60 insertions(+), 13 deletions(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index bb50a22c..fd8ecb92 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -48,13 +48,16 @@ simulation and 1 for fully-unequilibrated simulation. :: >>> from alchemlyb.parsing.gmx import extract_dHdl >>> from alchemlyb.preprocessing import decorrelate_dhdl, dhdl2series >>> from alchemlyb.convergence import R_c + >>> from alchemlyb.visualisation import plot_convergence >>> file = load_ABFE().data['ligand'][0] >>> dhdl = extract_dHdl(file, T=300) >>> decorrelated = decorrelate_dhdl(dhdl, remove_burnin=True) - >>> value = R_c(dhdl2series(decorrelated)) + >>> value, running_average = R_c(dhdl2series(decorrelated), tol=2) >>> print(value) 0.02 + >>> plot_convergence(running_average, final_error=2, units='kcal/mol') + The :func:`~alchemlyb.convergence.A_c` on the other hand, takes in a list of decorrelated :class:`pandas.Series` and gives a metric of how converged the set diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index f18aaa82..66cf627b 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -175,7 +175,7 @@ def _cummean(vals, out_length): result = np.cumsum(mean) / np.arange(1, out_length+1) return result -def R_c(series, precision=0.01, diff=2): +def R_c(series, precision=0.01, tol=2): '''Generate the convergence criteria R_c for a single simulation. The input will be pandas.Series generated by @@ -192,13 +192,27 @@ def R_c(series, precision=0.01, diff=2): The input energy array. precision : float The precision of the output R_c. - diff : float + tol : float Tolerance of the convergence check in kcal/mol. Returns ------- float Convergence time fraction. + DataFrame + The DataFrame with moving average. :: + + Forward Backward data_fraction + 0 3.016442 3.065176 0.1 + 1 3.078106 3.078567 0.2 + 2 3.072561 3.047357 0.3 + 3 3.048325 3.057527 0.4 + 4 3.049769 3.037454 0.5 + 5 3.034078 3.040484 0.6 + 6 3.043274 3.032495 0.7 + 7 3.035460 3.036670 0.8 + 8 3.042032 3.046597 0.9 + 9 3.044149 3.044385 1.0 Note ---- @@ -215,12 +229,26 @@ def R_c(series, precision=0.01, diff=2): g_forward = _cummean(array, out_length) g_backward = _cummean(array[::-1], out_length) length = len(g_forward) + + convergence = pd.DataFrame( + {'Forward': g_forward, + 'Backward': g_backward, + 'data_fraction': [i / length for i in range(1, length + 1)]}) + convergence.attrs = series.attrs + # Final value g = g_forward[-1] - conv = ((g_forward>g-diff) & (g_forwardg-diff)&(g_backwardg-tol) & (g_forwardg-tol)&(g_backward`. units : str The label for the unit of the estimate. Default: "kT" + final_error : float + The error of the final value. ax : matplotlib.axes.Axes Matplotlib axes object where the plot will be drawn on. If ``ax=None``, a new axes will be generated. @@ -61,9 +65,15 @@ def plot_convergence(*data, units='kT', ax=None): if len(data) == 1 and isinstance(data[0], pd.DataFrame): dataframe = get_unit_converter(units)(data[0]) forward = dataframe['Forward'].to_numpy() - forward_error = dataframe['Forward_Error'].to_numpy() + if 'Forward_Error' in dataframe: + forward_error = dataframe['Forward_Error'].to_numpy() + else: + forward_error = np.zeros(len(forward)) backward = dataframe['Backward'].to_numpy() - backward_error = dataframe['Backward_Error'].to_numpy() + if 'Backward_Error' in dataframe: + backward_error = dataframe['Backward_Error'].to_numpy() + else: + backward_error = np.zeros(len(backward)) else: try: forward, forward_error, backward, backward_error = data @@ -86,8 +96,11 @@ def plot_convergence(*data, units='kT', ax=None): f_ts = np.linspace(0, 1, len(forward) + 1)[1:] r_ts = np.linspace(0, 1, len(backward) + 1)[1:] - line0 = ax.fill_between([0, 1], backward[-1] - backward_error[-1], - backward[-1] + backward_error[-1], color='#D2B9D3', + if final_error is None: + backward_error[-1] + + line0 = ax.fill_between([0, 1], backward[-1] - final_error, + backward[-1] + final_error, color='#D2B9D3', zorder=1) line1 = ax.errorbar(f_ts, forward, yerr=forward_error, color='#736AFF', lw=3, zorder=2, marker='o', From c78d6c1cfad3eceb7a00f2c8b9c1e9eff03b4669 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Wed, 5 Oct 2022 10:18:41 +0100 Subject: [PATCH 06/25] update --- src/alchemlyb/convergence/convergence.py | 2 +- src/alchemlyb/tests/test_convergence.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 66cf627b..4c1c7da9 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -286,7 +286,7 @@ def A_c(series_list, precision=0.01, diff=2): .. versionadded:: 1.0.0 ''' n_R_c = len(series_list) - R_c_list = [R_c(series, precision, diff) for series in series_list] + R_c_list = [R_c(series, precision, diff)[0] for series in series_list] # Integrate the R_c_list <= R_c over the range of 0 to 1 array_01 = np.hstack((R_c_list, [0, 1])) sorted_array = np.sort(np.unique(array_01)) diff --git a/src/alchemlyb/tests/test_convergence.py b/src/alchemlyb/tests/test_convergence.py index be73b77d..43f0698b 100644 --- a/src/alchemlyb/tests/test_convergence.py +++ b/src/alchemlyb/tests/test_convergence.py @@ -2,13 +2,11 @@ import pandas as pd import pytest -from alchemtest.gmx import load_benzene, load_ABFE +from alchemtest.gmx import load_benzene from alchemlyb.parsing import gmx from alchemlyb.convergence import forward_backward_convergence, R_c, A_c from alchemlyb.convergence.convergence import _cummean -from alchemlyb.preprocessing import decorrelate_dhdl, dhdl2series -from alchemlyb.parsing.gmx import extract_dHdl @pytest.fixture() def gmx_benzene(): From b71c8fa0e78ab6325539c6a06dccb6f522abcf62 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Wed, 5 Oct 2022 10:38:46 +0100 Subject: [PATCH 07/25] update --- CHANGES | 1 + src/alchemlyb/convergence/convergence.py | 3 +- src/alchemlyb/tests/test_units.py | 35 +++++++++++++++++++++++- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index a882a67e..623c6b1d 100644 --- a/CHANGES +++ b/CHANGES @@ -48,6 +48,7 @@ Fixes - All parsers now have a 'extract(file, T)' method that returns a dict with both "dHdl" and "u_nk" data (or None). THe AMBER parser when using this function will read the file just once, extracting all data at once. (issue #222, PR #240) + - Fix dhdl2series and u_nk2series would not reattach the unit. (PR #239) 07/22/2022 xiki-tempula, IAlibay, dotsdl, orbeckst, ptmerz diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 4c1c7da9..06b4cfa7 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -247,7 +247,8 @@ def R_c(series, precision=0.01, tol=2): # calculation up. For example if the dataset has 21 points and the # precision is 0.05. The last point of g_forward is computed using # data[0:20] while the last point of g_backward is computed using - # data[1:21]. + # data[1:21]. Thus, the last point of g_forward and g_backward are not + # the same as this branch will be triggered. return 0.0, convergence def A_c(series_list, precision=0.01, diff=2): diff --git a/src/alchemlyb/tests/test_units.py b/src/alchemlyb/tests/test_units.py index db9c613e..32295f02 100644 --- a/src/alchemlyb/tests/test_units.py +++ b/src/alchemlyb/tests/test_units.py @@ -4,8 +4,12 @@ import alchemlyb from alchemlyb import pass_attrs from alchemtest.gmx import load_benzene -from alchemlyb.parsing.gmx import extract_dHdl +from alchemlyb.parsing.gmx import extract_dHdl, extract_u_nk from alchemlyb.postprocessors.units import to_kT +from alchemlyb.preprocessing import (dhdl2series, u_nk2series, + decorrelate_u_nk, decorrelate_dhdl, + slicing, statistical_inefficiency, + equilibrium_detection) def test_noT(): '''Test no temperature error''' @@ -120,3 +124,32 @@ def test_pd_slice(): df = pd.DataFrame(data=d) df.attrs = {1: 1} assert df[::2].attrs == {1: 1} + +class TestRetainUnit(): + '''This test tests if the functions that should retain the unit would actually + retain the units.''' + @staticmethod + @pytest.fixture(scope='class') + def dhdl(): + dataset = load_benzene() + dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310) + return dhdl + + @staticmethod + @pytest.fixture(scope='class') + def u_nk(): + dataset = load_benzene() + u_nk = extract_u_nk(dataset['data']['Coulomb'][0], 310) + return u_nk + + @pytest.mark.parametrize('func,fixture_in', + [(dhdl2series, 'dhdl'), + (u_nk2series, 'u_nk'), + (decorrelate_u_nk, 'u_nk'), + (decorrelate_dhdl, 'dhdl'), + (slicing, 'dhdl'), + (statistical_inefficiency, 'dhdl'), + (equilibrium_detection, 'dhdl')]) + def test_function(self, func, fixture_in, request): + result = func(request.getfixturevalue(fixture_in)) + assert result.attrs['energy_unit'] is not None From 35ec75df767fd69b1cd2e83f850bfa4e38d2ae77 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Wed, 5 Oct 2022 11:01:18 +0100 Subject: [PATCH 08/25] update --- docs/convergence.rst | 5 +++++ docs/images/R_c.png | Bin 0 -> 52951 bytes src/alchemlyb/visualisation/convergence.py | 14 ++++++++++---- 3 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 docs/images/R_c.png diff --git a/docs/convergence.rst b/docs/convergence.rst index fd8ecb92..eda835c3 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -59,6 +59,11 @@ simulation and 1 for fully-unequilibrated simulation. :: >>> plot_convergence(running_average, final_error=2, units='kcal/mol') +Will give a plot like this. + +.. figure:: images/R_c.png + + The :func:`~alchemlyb.convergence.A_c` on the other hand, takes in a list of decorrelated :class:`pandas.Series` and gives a metric of how converged the set is, where 0 fully-unequilibrated and 1.0 is fully-equilibrated. :: diff --git a/docs/images/R_c.png b/docs/images/R_c.png new file mode 100644 index 0000000000000000000000000000000000000000..65525bbe93a094f9b0d28df6ca116e5f8e7a2410 GIT binary patch literal 52951 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 se?6b_pT{x&|6< Date: Wed, 5 Oct 2022 11:06:23 +0100 Subject: [PATCH 09/25] update --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 623c6b1d..859156fd 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,7 @@ Enhancements - Add remove_burnin keyword to decorrelate_u_nk and decorrelate_dhdl (PR #218). - Add a base class for workflows (PR #188). - Add the ABFE workflow (PR #114). + - Add R_c and A_c for convergence analysis. (PR #239) Fixes From 4af484ca1b54a4f73b9df8f6e89d8d456a99d6ae Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Wed, 5 Oct 2022 11:25:18 +0100 Subject: [PATCH 10/25] fix test --- src/alchemlyb/visualisation/convergence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/alchemlyb/visualisation/convergence.py b/src/alchemlyb/visualisation/convergence.py index b16b11b3..23a1c7d1 100644 --- a/src/alchemlyb/visualisation/convergence.py +++ b/src/alchemlyb/visualisation/convergence.py @@ -113,7 +113,7 @@ def plot_convergence(*data, units='kT', final_error=None, ax=None): lw=3, zorder=3, marker='o', mfc='w', mew=2.5, mec='#C11B17', ms=12, ) - xticks_spacing = len(r_ts) // 10 + xticks_spacing = len(r_ts) // 10 or 1 xticks = r_ts[::xticks_spacing] plt.xticks(xticks, fontsize=10) plt.yticks(fontsize=10) From 397765cfd24e3d93635809c9295f347915819bf2 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Wed, 5 Oct 2022 11:36:59 +0100 Subject: [PATCH 11/25] bump test --- src/alchemlyb/tests/test_visualisation.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/alchemlyb/tests/test_visualisation.py b/src/alchemlyb/tests/test_visualisation.py index d0e34fb2..082f6c8a 100644 --- a/src/alchemlyb/tests/test_visualisation.py +++ b/src/alchemlyb/tests/test_visualisation.py @@ -135,6 +135,16 @@ def test_plot_convergence_dataframe(): assert isinstance(ax, matplotlib.axes.Axes) plt.close(ax.figure) +def test_plot_convergence_dataframe_noerr(): + # Test the input from R_c + data = pd.DataFrame(data={'Forward': range(100), + 'Backward': range(100), + 'data_fraction': np.linspace(0,1,100)}) + data.attrs = {'temperature': 300, 'energy_unit': 'kT'} + ax = plot_convergence(data, final_error=2) + assert isinstance(ax, matplotlib.axes.Axes) + plt.close(ax.figure) + def test_plot_convergence(): bz = load_benzene().data data_list = [extract_u_nk(xvg, T=300) for xvg in bz['Coulomb']] From 71c81e3d3d0cbdf8642ef0d56974f509c9608923 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Wed, 5 Oct 2022 13:24:53 +0100 Subject: [PATCH 12/25] update --- src/alchemlyb/convergence/convergence.py | 2 +- src/alchemlyb/tests/test_convergence.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 06b4cfa7..256dbc42 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -249,7 +249,7 @@ def R_c(series, precision=0.01, tol=2): # data[0:20] while the last point of g_backward is computed using # data[1:21]. Thus, the last point of g_forward and g_backward are not # the same as this branch will be triggered. - return 0.0, convergence + return 1.0, convergence def A_c(series_list, precision=0.01, diff=2): '''Generate the ensemble convergence criteria A_c for a set of simulations. diff --git a/src/alchemlyb/tests/test_convergence.py b/src/alchemlyb/tests/test_convergence.py index 43f0698b..940ba10a 100644 --- a/src/alchemlyb/tests/test_convergence.py +++ b/src/alchemlyb/tests/test_convergence.py @@ -87,6 +87,13 @@ def test_R_c_converged(): value, running_average = R_c(data) np.testing.assert_allclose(value, 0.0) +def test_R_c_notconverged(): + data = pd.Series(data=range(21)) + data.attrs['temperature'] = 310 + data.attrs['energy_unit'] = 'kcal/mol' + value, running_average = R_c(data, tol=0.1, precision=0.05) + np.testing.assert_allclose(value, 1.0) + def test_R_c_real(): data = pd.Series(data=np.hstack((range(10), [4.5,]*10))) data.attrs['temperature'] = 310 From c4760a1dc0ba6017345c2001db74f0dc4d03cc20 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 10 Oct 2022 11:45:48 +0100 Subject: [PATCH 13/25] update --- CHANGES | 1 + .../alchemlyb.preprocessing.subsampling.rst | 2 +- src/alchemlyb/preprocessing/subsampling.py | 33 +++++++------------ src/alchemlyb/tests/__init__.py | 2 ++ src/alchemlyb/tests/test_preprocessing.py | 10 +++--- src/alchemlyb/tests/test_workflow_ABFE.py | 6 ++-- src/alchemlyb/workflows/abfe.py | 12 +++---- 7 files changed, 26 insertions(+), 40 deletions(-) diff --git a/CHANGES b/CHANGES index a882a67e..f1967bc2 100644 --- a/CHANGES +++ b/CHANGES @@ -48,6 +48,7 @@ Fixes - All parsers now have a 'extract(file, T)' method that returns a dict with both "dHdl" and "u_nk" data (or None). THe AMBER parser when using this function will read the file just once, extracting all data at once. (issue #222, PR #240) + - Remove the 'dhdl' method in uncorrelate the u_nk. 07/22/2022 xiki-tempula, IAlibay, dotsdl, orbeckst, ptmerz diff --git a/docs/preprocessing/alchemlyb.preprocessing.subsampling.rst b/docs/preprocessing/alchemlyb.preprocessing.subsampling.rst index aa26ee66..08683027 100644 --- a/docs/preprocessing/alchemlyb.preprocessing.subsampling.rst +++ b/docs/preprocessing/alchemlyb.preprocessing.subsampling.rst @@ -43,7 +43,7 @@ the autocorrection analysis. The series could be generated with >>> dhdl2series, statistical_inefficiency, equilibrium_detection) >>> bz = load_benzene().data >>> u_nk = extract_u_nk(bz['Coulomb'], T=300) - >>> u_nk_series = u_nk2series(u_nk, method='dhdl') + >>> u_nk_series = u_nk2series(u_nk, method='dE') >>> decorrelate_u_nk = statistical_inefficiency(u_nk, series=u_nk_series) >>> decorrelate_u_nk = equilibrium_detection(u_nk, series=u_nk_series) >>> dhdl = extract_dHdl(bz['Coulomb'], T=300) diff --git a/src/alchemlyb/preprocessing/subsampling.py b/src/alchemlyb/preprocessing/subsampling.py index 87071b86..e9ec15eb 100644 --- a/src/alchemlyb/preprocessing/subsampling.py +++ b/src/alchemlyb/preprocessing/subsampling.py @@ -6,12 +6,11 @@ detectEquilibration, subsampleCorrelatedData, ) -def decorrelate_u_nk(df, method='dhdl', drop_duplicates=True, +def decorrelate_u_nk(df, method='dE', drop_duplicates=True, sort=True, remove_burnin=False, **kwargs): - """Subsample a u_nk DataFrame based on the selected method. - The method can be either 'dhdl_all' (obtained as a sum over all energy - components) or 'dhdl' (obtained as the energy components that are - changing; default) or 'dE'. In the latter case the energy differences + """Subsample an u_nk DataFrame based on the selected method. + The method can be either 'all' (obtained as a sum over all energy + components) or 'dE'. In the latter case the energy differences dE_{i,i+1} (dE_{i,i-1} for the last lambda) are used. This is a wrapper function around the function :func:`~alchemlyb.preprocessing.subsampling.statistical_inefficiency` or @@ -21,7 +20,7 @@ def decorrelate_u_nk(df, method='dhdl', drop_duplicates=True, ---------- df : DataFrame DataFrame to be subsampled according to the selected method. - method : {'dhdl', 'dhdl_all', 'dE'} + method : {'all', 'dE'} Method for decorrelating the data. drop_duplicates : bool Drop the duplicated lines based on time. @@ -47,6 +46,7 @@ def decorrelate_u_nk(df, method='dhdl', drop_duplicates=True, .. versionadded:: 0.6.0 .. versionchanged:: 1.0.0 Add the remove_burnin keyword to allow unequilibrated frames to be removed. + Rename value 'dhdl_all' to 'all' and deprecate the 'dhdl'. """ kwargs['drop_duplicates'] = drop_duplicates kwargs['sort'] = sort @@ -106,20 +106,19 @@ def decorrelate_dhdl(df, drop_duplicates=True, sort=True, else: return statistical_inefficiency(df, series, **kwargs) -def u_nk2series(df, method='dhdl'): +def u_nk2series(df, method='dE'): """Convert an u_nk DataFrame into a series based on the selected method for subsampling. - The method can be either 'dhdl_all' (obtained as a sum over all energy - components) or 'dhdl' (obtained as the energy components that are - changing; default) or 'dE'. In the latter case the energy differences + The method can be either 'all' (obtained as a sum over all energy + components) or 'dE'. In the latter case the energy differences dE_{i,i+1} (dE_{i,i-1} for the last lambda) are used. Parameters ---------- df : DataFrame DataFrame to be converted according to the selected method. - method : {'dhdl', 'dhdl_all', 'dE'} + method : {'all', 'dE'} Method for converting the data. Returns @@ -142,17 +141,7 @@ def u_nk2series(df, method='dhdl'): except KeyError: raise ValueError('The input should be u_nk') - if method == 'dhdl': - # Find the current column index - # Select the first row and remove the first column (Time) - key = df.index.values[0][1:] - if len(key) > 1: - # Multiple keys - series = df[key] - else: - # Single key - series = df[key[0]] - elif method == 'dhdl_all': + if method == 'all': series = df.sum(axis=1) elif method == 'dE': # Using the same logic as alchemical-analysis diff --git a/src/alchemlyb/tests/__init__.py b/src/alchemlyb/tests/__init__.py index e69de29b..9f829f3c 100644 --- a/src/alchemlyb/tests/__init__.py +++ b/src/alchemlyb/tests/__init__.py @@ -0,0 +1,2 @@ +import matplotlib +matplotlib.use('agg') \ No newline at end of file diff --git a/src/alchemlyb/tests/test_preprocessing.py b/src/alchemlyb/tests/test_preprocessing.py index 595eda90..fcd59a8e 100644 --- a/src/alchemlyb/tests/test_preprocessing.py +++ b/src/alchemlyb/tests/test_preprocessing.py @@ -420,8 +420,7 @@ def test_equilibrium_detection(self, dhdl): assert new_dhdl.attrs['temperature'] == 310 assert new_dhdl.attrs['energy_unit'] == 'kT' -@pytest.mark.parametrize(('method', 'size'), [('dhdl', 2001), - ('dhdl_all', 2001), +@pytest.mark.parametrize(('method', 'size'), [('all', 2001), ('dE', 2001)]) def test_decorrelate_u_nk_single_l(gmx_benzene_u_nk_fixture, method, size): assert len(decorrelate_u_nk(gmx_benzene_u_nk_fixture, method=method, @@ -429,17 +428,16 @@ def test_decorrelate_u_nk_single_l(gmx_benzene_u_nk_fixture, method, size): sort=True)) == size def test_decorrelate_u_nk_burnin(gmx_benzene_u_nk_fixture): - assert len(decorrelate_u_nk(gmx_benzene_u_nk_fixture, method='dhdl', + assert len(decorrelate_u_nk(gmx_benzene_u_nk_fixture, method='dE', drop_duplicates=True, - sort=True, remove_burnin=True)) == 2743 + sort=True, remove_burnin=True)) == 2849 def test_decorrelate_dhdl_burnin(gmx_benzene_dHdl_fixture): assert len(decorrelate_dhdl(gmx_benzene_dHdl_fixture, drop_duplicates=True, sort=True, remove_burnin=True)) == 2848 -@pytest.mark.parametrize(('method', 'size'), [('dhdl', 501), - ('dhdl_all', 1001), +@pytest.mark.parametrize(('method', 'size'), [('all', 1001), ('dE', 334)]) def test_decorrelate_u_nk_multiple_l(gmx_ABFE_u_nk, method, size): assert len(decorrelate_u_nk(gmx_ABFE_u_nk, method=method,)) == size diff --git a/src/alchemlyb/tests/test_workflow_ABFE.py b/src/alchemlyb/tests/test_workflow_ABFE.py index cbe6694b..f282041b 100644 --- a/src/alchemlyb/tests/test_workflow_ABFE.py +++ b/src/alchemlyb/tests/test_workflow_ABFE.py @@ -17,7 +17,7 @@ def workflow(tmp_path_factory): dir = os.path.dirname(load_ABFE()['data']['complex'][0]) workflow = ABFE(units='kcal/mol', software='GROMACS', dir=dir, prefix='dhdl', suffix='xvg', T=310, outdirectory=str(outdir)) - workflow.run(skiptime=10, uncorr='dhdl', threshold=50, + workflow.run(skiptime=10, uncorr='dE', threshold=50, estimators=('MBAR', 'BAR', 'TI'), overlap='O_MBAR.pdf', breakdown=True, forwrev=10) return workflow @@ -94,7 +94,7 @@ def workflow(tmp_path_factory): suffix='xvg', T=310, outdirectory=str(outdir)) workflow.update_units('kcal/mol') workflow.read() - workflow.preprocess(skiptime=10, uncorr='dhdl', threshold=50) + workflow.preprocess(skiptime=10, uncorr='dE', threshold=50) workflow.estimate(estimators=('MBAR', 'BAR', 'TI')) workflow.plot_overlap_matrix(overlap='O_MBAR.pdf') workflow.plot_ti_dhdl(dhdl_TI='dhdl_TI.pdf') @@ -161,7 +161,7 @@ def workflow(tmp_path_factory): workflow = ABFE(units='kcal/mol', software='GROMACS', dir=dir, prefix='dhdl', suffix='bz2', T=310, outdirectory=outdir) - workflow.run(skiptime=0, uncorr='dhdl', threshold=50, + workflow.run(skiptime=0, uncorr='dE', threshold=50, estimators=('MBAR', 'BAR', 'TI'), overlap='O_MBAR.pdf', breakdown=True, forwrev=10) return workflow diff --git a/src/alchemlyb/workflows/abfe.py b/src/alchemlyb/workflows/abfe.py index c975f665..e5118316 100644 --- a/src/alchemlyb/workflows/abfe.py +++ b/src/alchemlyb/workflows/abfe.py @@ -167,7 +167,7 @@ def read(self, read_u_nk=True, read_dHdl=True): self.dHdl_list = [] - def run(self, skiptime=0, uncorr='dhdl', threshold=50, + def run(self, skiptime=0, uncorr='dE', threshold=50, estimators=('MBAR', 'BAR', 'TI'), overlap='O_MBAR.pdf', breakdown=True, forwrev=None, *args, **kwargs): ''' The method for running the automatic analysis. @@ -178,9 +178,7 @@ def run(self, skiptime=0, uncorr='dhdl', threshold=50, Discard data prior to this specified time as 'equilibration' data. Units are specified by the corresponding MD Engine. Default: 0. uncorr : str - The observable to be used for the autocorrelation analysis; 'dhdl' - (obtained as a sum over those energy components that are changing). - Specify as `None` will not uncorrelate the data. Default: 'dhdl'. + The observable to be used for the autocorrelation analysis; 'dE'. threshold : int Proceed with correlated samples if the number of uncorrelated samples is found to be less than this number. If 0 is given, the time series @@ -273,7 +271,7 @@ def update_units(self, units=None): self.logger.info(f'Set unit to {units}.') self.units = units or None - def preprocess(self, skiptime=0, uncorr='dhdl', threshold=50): + def preprocess(self, skiptime=0, uncorr='dE', threshold=50): '''Preprocess the data by removing the equilibration time and decorrelate the date. @@ -283,9 +281,7 @@ def preprocess(self, skiptime=0, uncorr='dhdl', threshold=50): Discard data prior to this specified time as 'equilibration' data. Units are specified by the corresponding MD Engine. Default: 0. uncorr : str - The observable to be used for the autocorrelation analysis; 'dhdl' - (obtained as a sum over those energy components that are changing). - Default: 'dhdl' + The observable to be used for the autocorrelation analysis; 'dE'. threshold : int Proceed with correlated samples if the number of uncorrelated samples is found to be less than this number. If 0 is given, the From e81fe0ff089eb2f775957a005305f3978f9a4198 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 10 Oct 2022 11:52:50 +0100 Subject: [PATCH 14/25] update --- CHANGES | 2 +- src/alchemlyb/tests/__init__.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index f1967bc2..66f75313 100644 --- a/CHANGES +++ b/CHANGES @@ -48,7 +48,7 @@ Fixes - All parsers now have a 'extract(file, T)' method that returns a dict with both "dHdl" and "u_nk" data (or None). THe AMBER parser when using this function will read the file just once, extracting all data at once. (issue #222, PR #240) - - Remove the 'dhdl' method in uncorrelate the u_nk. + - Remove the 'dhdl' method in uncorrelate the u_nk (PR #250). 07/22/2022 xiki-tempula, IAlibay, dotsdl, orbeckst, ptmerz diff --git a/src/alchemlyb/tests/__init__.py b/src/alchemlyb/tests/__init__.py index 9f829f3c..e69de29b 100644 --- a/src/alchemlyb/tests/__init__.py +++ b/src/alchemlyb/tests/__init__.py @@ -1,2 +0,0 @@ -import matplotlib -matplotlib.use('agg') \ No newline at end of file From 0c968dc24a5f90d4bf21367f82cc76cd55011d72 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Thu, 20 Oct 2022 18:06:23 +0100 Subject: [PATCH 15/25] update --- src/alchemlyb/convergence/convergence.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 256dbc42..9f7339ac 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -286,8 +286,10 @@ def A_c(series_list, precision=0.01, diff=2): .. versionadded:: 1.0.0 ''' + logger = logging.getLogger('alchemlyb.convergence.A_c') n_R_c = len(series_list) R_c_list = [R_c(series, precision, diff)[0] for series in series_list] + logger.info(f'R_c list: {R_c_list}') # Integrate the R_c_list <= R_c over the range of 0 to 1 array_01 = np.hstack((R_c_list, [0, 1])) sorted_array = np.sort(np.unique(array_01)) From bc080cc3d338a33b0c355682b863f7a02d614bf8 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Sat, 29 Oct 2022 19:58:50 +0100 Subject: [PATCH 16/25] update --- docs/convergence.rst | 23 ++++++------ docs/images/R_c.png | Bin 52951 -> 57754 bytes src/alchemlyb/convergence/__init__.py | 2 +- src/alchemlyb/convergence/convergence.py | 43 +++++++++++++---------- src/alchemlyb/tests/test_convergence.py | 12 +++---- 5 files changed, 43 insertions(+), 37 deletions(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index eda835c3..1e4a1d3d 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -33,30 +33,31 @@ Will give a plot looks like this A convergence plot of showing that the forward and backward has converged fully. -Fraction Convergence --------------------- +Fractional equilibration time +----------------------------- Another way of assessing whether the simulation has converged is to check the -energy files. In [Fan2021]_, :func:`~alchemlyb.convergence.R_c` and -:func:`~alchemlyb.convergence.A_c` are two criteria of checking the -convergence. :func:`~alchemlyb.convergence.R_c` takes a decorrelated +energy files. In [Fan2021]_, :math:`R_c` and +:math:`A_c` are two criteria of checking the +convergence. :func:`~alchemlyb.convergence.fwdrev_cumavg_Rc` takes a decorrelated :class:`pandas.Series` as input and gives the metric -:func:`~alchemlyb.convergence.R_c`, which is 0 for fully-equilibrated +:math:`R_c`, which is 0 for fully-equilibrated simulation and 1 for fully-unequilibrated simulation. :: >>> from alchemtest.gmx import load_ABFE >>> from alchemlyb.parsing.gmx import extract_dHdl >>> from alchemlyb.preprocessing import decorrelate_dhdl, dhdl2series - >>> from alchemlyb.convergence import R_c + >>> from alchemlyb.convergence import fwdrev_cumavg_Rc >>> from alchemlyb.visualisation import plot_convergence >>> file = load_ABFE().data['ligand'][0] >>> dhdl = extract_dHdl(file, T=300) >>> decorrelated = decorrelate_dhdl(dhdl, remove_burnin=True) - >>> value, running_average = R_c(dhdl2series(decorrelated), tol=2) + >>> value, running_average = fwdrev_cumavg_Rc(dhdl2series(decorrelated), tol=2) >>> print(value) - 0.02 - >>> plot_convergence(running_average, final_error=2, units='kcal/mol') + 0.04 + >>> ax = plot_convergence(running_average, final_error=2, units='kcal/mol') + >>> ax.set_ylabel('energy/kT') Will give a plot like this. @@ -90,7 +91,7 @@ The currently available connvergence functions: :toctree: convergence convergence - R_c + fwdrev_cumavg_Rc A_c References diff --git a/docs/images/R_c.png b/docs/images/R_c.png index 65525bbe93a094f9b0d28df6ca116e5f8e7a2410..f9c4ccbd339d20dfd98e638ec170eebab089b757 100644 GIT binary patch literal 57754 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≪9%61U0MAe^hRpm;|J#j79x_tmcC8&BtbZV<$fg)7S(ui?DL%n@riDf(@xaJKH~?&lZ(pYo%rQr6t7=5BF`@a+q>(=@@Rm zR4Ue(>r41V`~->2Zd?0!Q?0N4Q3P=}dVRoFH8}_=N6rBDBIT z9@)se={<9aftyJ5$M|KjooZu3icaYT>aLf z*594~+kNdX;@!9a2>rjmxJjB?AWl~;l(cm?a-?_#W@-6&Z^@)zGi5qTACL}fJQH1& zazhcT##g1E7E2o@0xO!q>JRsBmzno@;E*j~JLCKTIpBc&rq=)}9^9zb_-m=b9p^b8 zdbGQ9Z##3Q+=zX-^!DxHTDOi#<8pvGPR{o=JVBR)H6G*%EZy8GMYhpP<^47%d^;z& zyCzX``}feobr6h}vd(zW<~8rs_iL&jPhbN9%w)(?*4*tR_-tp}$SZbsN2hTY&i~xK z4kcfEGOyM)5Msb48_z|h?t0@5V{(jg!z-5n}1 zAR*l?B_S=H5<^M%&_Da}qBGS<;czsu(@HK`(7#*%p%sAq;8747SB>{ws;&p>!B9+h4x1U_FzADo7{ z)lLcOIrn=*KUI zWi1SOh5_^jyJKZAgxn@P-s|{JXp|x}u2y`;x{y)3C^GuC$k%T#O2%vM)E=+f|2^i4 zyVMCE=J+*Ng!F*MtE`Nv95mOc^ydtF*COw6eol~*DQ0((s>u~BxF=+|prF;&DJ(@vc)Kmg0ucx!5#zs$#o0*{mNRz0qMJh*ry z(cf$gkN04}(bI0?H{c>D@E=!pnmbH)F-zinm=e4u7b9-E#9f(74PwbAdJNd7>3-1s zS9mS#I489lSwh|4(m7ffv5i<+*1JmQ`@Q7o`Se7r)%9}OBy=!L{spgxJK7j z%u-Fl-|I{^#`ls_%N|*y5^ZRp@9ifH;D(RM?Vqn*q9Mdb57`pmMgemqP}S16`;P20 zW)bydf!+_O2v7lP31e>9icDk|x=H4JZLWiL>_G$EzxSOk#7N_|d}6O~b9u^2rV9jr zH+vB6yf)0E9fG$DJFI>~mp`znCuM!XHxM3z7g<8H7mxU}7lVR4dwkUIt|bF-(-rhj zGemM3ojZ+WKGn_SeGLZ0I{utKM-DW4;C~ZL6a#WQ2zirDB}W9jeo!ubORuz%%l?^N zd`;QQkOR76ZOY%7DTbxZU?*mjnffZRpnS$`66T_29!&rn!v*zp$QbEtYYkjDCe@Yi zO(oD%c7Ref9dcWUYP{AE8-g%QnH8c$AR0Uu`rIwHD;+x0M!1@~6!A0TDe4cI&F=q~EB zr`DKZ5xT!EC%yj7o^q2mH?AjI{{M1M%#LO}GtU9il4h~K$H?3bl|##=f$x2nq{SM8`p#`-j)oUMzQ8JQ@86%V#@Pjm1i|)#B0EL4hDU3 z1FsfSfeF6+*)L)!geg#c`_rV@s`&FEU{VAZilM%-`ZP1$+2TjTDH*Vv5duTSA*cfj z6xxb+z1_K54xcdZY*}g*qhh;XTx0L+3J?!{N9X?xRw}ob2zBM^yTvJXd{%V)4f{Mv zId^h@6)c3Jrv-9d{W><_0XK4`5rCTlZI${pyxpw=ws!a6u^d~sZ5GPS$(ifkIUzz= z1k2KNZfUmW0q)CYM>IaK_6k%w_ZeYHV(Jb&R`o0fgy!pR=j+FTiZpm}>dA6OK*;Mn z3G+zv>fBfm<-E!ZS(vnjz5t)GH zYL&MBjD2!NvRje?-qJedxOgSe`D&!SH@V-_2e+U$TPt$~@7ufWHBwE9m%9gy$1)RA&O;VV9 zpj}jwz0c@|m$b{a;z}&_CdF^V3K~$|THV=>%G$ zik@crA5lB3MIu!R0^4rp+tXZz`L4bC+!tMrA)XJ(lEbu5UYoeTTGyY<>*r1nw9cJ| zRcf`bWGmjhB^v?~RY7_&foa_D`B=%EkcO6=3R$=@_^ev0e(9AP2fd@?OsMb$Mn6g~ z^savwcFqEVLP;wvj+e7F5Y+uEY`3#0lKQev-Yia5u~u6euoWTgPj$mJ#(e73zNh@7 zL$iK?f3G*pf8YIH4FM1-|25GJv6M<7yzW~|%~L)AWlbYl-|%i`k;fcC`h#A{0*|Ye z4Lr$CO+zFfldJ<-k+jd~N)-WbChBPGW0hF~?qBnb$lJZhHFT~|NYf}F-~;ocik+n$ zY;*g~P6n&M_zW8IH`*r{l{Ab4GEteC<;-5sq96TmI6AdkR ziOgQ^>VOi*OT81)YnQ&P#+c=$uHrMex^c~jG;twi*E0PC|GtwtFt@2643K}7K|5XC ztzke^*^+Qv(Ozd&yy6yx&B3K46OOO)l~bL>o-XJR5r(0o{W)7tc<3t!GLkz+M-0mclLTYiL;^KYSkY{ zW+m>_F<;eLxs~wtu{?AB9fJ@E+{~<4Qr%V$w6Tog<|eJikI!S0as7_{fxj(+jPz*y zXw3^(6{!oxsyvH9B-lHN5i?P93&zo7)e0dKTNF%mZhgf2!qrGJ^)iSrk~r{~=41-% z#z~%<*!q1Vtoi-kW9I)ACc<*$uXw(HW2@xy(&-R~S{VWAxwNl~qye6VZbIYQvp_BTP6Hw8sj;yVllVQm-q zI7nI<(A7_fD5hD}ZQGxc{I5a&cdy&^bt5nKI#e|SJ~$bU)n1@&9JY@yxzDw(7;9n% zouEH~*xPq6yUC1ucCoHrwI1X0>-|8Yr>G$VlDK}y4;-<6b^6X$VXSG8-?1THB|e`z zL_dyB>+>k%xd=@4IG2;hc7tlRncn7<3Q@@)7G8C>pRN2=G&JfRD()JfU4e$RB1o%C z=-pyg>=y>L53{Cq6H4+fJ744s+9N*fi|ib9T!uc*BSu3->(^Y1NJ`8@NThsDEN0oX zoKMCBZUW+zG?lq9LdJxgF!6Ijga6F2+D&DjYq_FdTTnQu7wi@;f9U!7fR_(<45ACa zb}TCWjhAxWz=nr3TbDWM&F9#u`_Xpe(`I*GE|fz%M^Ygh;{e#8K;E;hjQQfeUgsCwUcpeWl| z854168MKrq?`A>{Rt@XfJX5LHDSHCd=~>^S=uaGzgoCd4hz{X_DSs-ZRO;^~>R&hP z&my2Bff7efK7*Qe~9zL%!PzN<}q z%f~Hl`%Zx4`rW~wAJq$oo;!KrFYIPG4`5I_jbiAFz5RXXWv}g3fK}Lk*a$najw^i5 zY1dF*Ut;*9nSb>DM42bw^_0P&Qh?B#VXpxyxKEzxCeTeXH;JV9rUnrC0GDwR*Ui`y zR-I;7%lv&zTsvv>l!!`c)-MGV7dOdPN$4e=^^E#7%fi&zH`#H`HtU zmH8#+N>gF)0pN3cb+8lDdvqDaL1>l8n43(JsvLJ##+syeLmSOglq>7!#vDIoYI~A* zNgJ=Em^>QzG9w6!2bAK+236Y?-T!G}KB}6_Uxmab?=L0$4&%#}_n#OI8&0MENi=Th zelH9FkFm3WH-+oggz)}XZ!2j2NZW)F+gqI0%aQ>2`Fg+$#LhlKk!Rue19SmNOa900 z@Ua4UJm8}M()x~W_FQo3`Na<&c6LlKYy;pw-~z*$MV8nRwpVBf+IpQI8U^=zms4sr z+(`^MNED4Rgia4%=0U3y@QKR>{~~)1T5au)6bvn@bi9&@zIi9y@1qyw>_vsDiPiUMcHpUwE@<5^l;+ zB=H2smY4+70gm) zXsZM6k}IKlT?Zr)EZ^(pv8bY2%3YJfMECYBBBG@AHD7`oKC}iD|0D8k+^C*5B9Q>P zi;q!2mlA+!EepXL_52{a34=dM(hiIX!n!6#Rnl3q*CO9<&I^6m(-tE|u!v~uA5*b3 zd&0zdlu~PcNgZVLA;W{E+x}B`Swdx@8+8!+dpE1@2*UD(>|ml~4T({b9L5LJo7*MK z%-bt8>=a~V0>6YGu#Fp&XlOx}=muhhXHF9QSo0v?bHymnVaHc-DL#o2PM>u2Ev8R$ zF^WDlrk`Z?B^RW9*9r0GSH`Z(5xsfSV(NReqVIC#Vq|nxemc_8le?kAyTLunULuxt zq5mfQl8SyK8`>XjRrh$cA%EWJcn$5ST?^g*ti-PQi~})`Q=ezao&4K^X)=j(iajAM z6|Q;7BmLjYvVY15$RBA;+~UaliBn>U)A%Q0#*A+4b$G!>$xWZ|uii^+a|_Mx2mNvh zq?zk}1<*VYlmDf8u;d&q^EAt)w3atS6=`GT>HdU}#Ip&=p5Q*eFFJgbM* zBNT7ywT7Unr_v%m8m{QB?GNMem1zLArV04dIib-e1TjoMr=}U79P3Ml9!O5nK8-K! zy75*bD9rfy&+3VbQTp8?9Yfh9nNKB-v25SKuwMHvmPc1_)RL2@ibb%6gUpIJ*gG(y z%d)#iJkrTS>lj5+l_9ehcP<+?PKXid678*mcg;W!2YR=3tgfRIhC}u0TFg{iJJkQ- z_ND?+_;JBGQ>gI%yikn_si4_yy{CU(?!IBu9MU1@0?0}uv3ya#Rs-t?{rL8NhXZ+G zuANzj>uUjhU39bf{wB}2zm|A>7GW=5)I+>9mr?c+@E=ZsbE|OC7FQJ+9)qzgBEEDF z9;e!UkLpz!?moc_qfD94q&`UZ`*HVU>+#Eeu`iz8@wlgSnpQ+lSjQ!s;0OqnS(nxH zO>E{T0$oSN&aKO{^RE;{m|qurT=G8}z-cH++c!G0fFVxr7m5(Bck-fcj7T zbbQf(3Sy>X|NPs$^GBRSZx!CX|PfanJ z9$XXTUX&_mf+3WTu`;#`Qu|N$6=MoZzW%sFscl$GuQrpzrDSoaV!xjXuC*p8FF_a@ zml3BnHgZpJyaf5#Qhy_~(jzh7vB9#y<)MgD22}=Qusht!77agrfiT^0BShiE&b*>U zmr?OQwbppA92Pz0?sk`t{YA%J9iz4W`>br> zWxMbVF;nDv|++TDPnth+di_Sz4MvK)PdrBi@u?w&fG$uhBHaYYF#( zICrv4_#s-RPxkgOe+?&^aASM)`ann6a$a?Lr4N2fWe;!L@UuTEywV+xvM(E^;(G80 zc#dumuNVeDh)LGtgE^2NMI;re7^r9%!6c4ZvvlgM9M-CLF2I^`Y0S@v2ualAe24`%$o?fy296z_Q$GD z#GljM5PG8r=oxaTgR|-oV6MXTUE$!cgYL)RC-{=v8F6o{B$Q z@n5`yML|1fMX%A>6|NF1lT$pY!@^;RE5eE-YJb{WuOm4Ssb;;85`Vwc1PfQzGpsu5 z$m|Q7{xnK#i(yXq9()VQhpzMO z10$SDXXg@veRAa%QaC*YB= z=sC=nCa_NZODKRpAt87aCPwrZkzMm)xZ3~0`{HQn?#ortzi~JBk~bysFR$p3WWbc= zM!JI?FMcKRg#HL_T>Cow-q_iABHoZSvdf&NcM*Me7X*&unN!Ox1 z7)>)i!@05+i)w4fIP#7IVA)`Z{R?g{{L;siX%pREy+bMAWHAl>`N=*}`%^uvycF;2K&_*KB7iqt+y;Yo^7ufN-tRD*tD@D}|`Zaqh zO0Mo0C{bE{NUVZ`}%L`cc#3VG54o$v#<6kK|%zAG${!al%C9V=Bnv3i1owrG;YE~He ze_p?q=|s0sR5n~#S?Y5<63a_7IeXWtb($269Kb{d;+B zc%4s}F%$MFQov0qy@n&0|LG76blVCpMz-nN-?maZ(kCe;>vur*cRM15V*G}-sl=8v zFA)rWu%mJ4VR=o+Ox{_}d~tcr|fF;6ES4Boi~(Deh*j@yG*@jRISQSA;o%>CsM6f%8k zMG<&~xOUtQ(Cp_|zTxG&%)fA7_*f!R?lh72udikL5owBjA9xAo3B2bS`>ht_iceH( z5~(ZtdI~d?-+Db$*XhYGf`$)w8ft&yB{6n?Bl1z0Tz&A{FERAz(@O7O`KaDbQL>hp zJY0>mj&^sUIZDr(bX7^A5SJ?~kAjaiDv}A<0xBAl!7u%Nu3xW$;kIA_m5JGSla*5? z@kH7T&DVZ=4^N$W19V@PiZ7eV`K-REk@Y2Y<2lvMz7d*Z9B$9gbAQQGA@jF(F?H*7 zpSOWXLtaY=0`;5Dc~-~fys)@51dpEj+`X6i3LCcmWErp7J`dOt3ib;JN5EFkNE9F! zTaEnzbe91XBc$zzQh=eT;qeU9|JF;?-?SbyXM|@Cd+fPB<}jm|kU-@tj_dz&F3)IZ z$lN0P<{D-Y_%|fXX;6a<^F7DOFDTH^W$xYohewZZT3k~@*w@#`DxUT7YYtC&zyq2faOTdrgGAqUqgB?57Ev;FDgIo^IP*ou-K0? z%HJBZ@yp3818(V|#)Chq#kktaB3vkac4dh(;Xe$wsYZA(1zz8O$p>&iAGFYX=x(S5 za!AeZR#~50V=e`i5zjj_FFP>~N!;~%q`OwD=7g43xY|^_xK`F66qVd%ted zcqYezeE0L6qhsU>l!HRA!5{_;!ymtQ1?C@d7pGH!ER7rs1@9?7Uupa2xK>b${-CdTk$Y{mP@!X&~m^)!*HYT1wpg1GhI9R>P zb5v5hcV1??UR#%sZ``J7t37dS+A1p@+jqO(sI6~$P~&0n>;2et`#E5}!lOgpLZdp` zr^7Vh!EI`4%6z`gR^jbi*C+UHaZXF4L4!SoTnuHHGB?4e%Bt2QkuQ`2n2v3y{S?s0 zxnH6P<9+=y#c=UvzUSUP&Iy<3`lRCE^ma5L}mZ6%8r zdL2bcnrJPm-=b{lzoU4Ie{nvI;#$1-BZq8yK-}5~Jv|71-&LST3jV&F(|aLVP~rf0 z*ul=Wqgi6FpD{wCBLVH&3O00D2s-Q;MUd77e zZ-g!leDXL-B~k3>EW2;Nc&I1s-5rm#BNcspWbPmfP~49LyoFBnb(&|M zETq$@lv&2s=hQ{%P$)^W>(`R_ZuP`Ft@&3Xe3OpsKp*=5O*S)}c2;BoS>hf1m|G4Q zc^0%Rp3~5ae>-MpBOuf|oeCzYze`3+v>9x|0X~YF>huo;g$rd%c-I~BRn!?FJ8DN= zzjEa7kmpSgIA5A3saw&C&x54dAX>nTQ@(2Yx^ZpWGj#a`cWmM>#yqA3htG!{Va@ z#2+P4FVsY`$^>O4bT08YzZ^6b{g*2s54j4l{2}Th_A_yCO^7e&pR&WI`p44+w z0-mNPM;oDdvZ+yY{wmQJPi*jjH86tzQ!xN@dL2-Y|ENnItfFyNSsSm}N?4JMiHfWX zS#1=rPc=8(kz0DuZ{4*d`DxDYXvl|GxS$|PSz6SH(1Anz4|;K9`w8sg;oFM)O`V%d zmB#?JeZn5(N3N8>Eo1y%JRhq~HJ^WCv)7Qj2oBY4we9o9j^P+Lyrg;rrvt}1C1IA_ zaG9z!vnb5+fsX65^Q`mEEfkcx{9N=KUG}c%aEV%!eWSnL^ZN?0LI$-yXLkMxxeo?r zPKkVK0&8IsFi$&W;NK%$T=*R3)evLP+2t5F)ANT3Q$eA>ifZ)D&?(nZ_t|Gh+|Jf~ z9Xq)M!}fGtK2QJ-sLrqmf)j?51ZQunZR;K7VU0qIo( zPOEQ-=1-F?kEzi$mubMcQLn80+Py6!uS>u1^#e)b!*SAl5&%e$Fcn5XM36c5KSS8C z$vZgx9A|3#wfo~KI1`#E$D~9zp`_=BM2Ww(-J^e~EId{z$Xg)Ccr&vgc4z~-rvTm7 zz*}lK#J_2XN)++1)Wfnos`GWQ2o%bubFH&wMj=(N^U_3CG$qINIP}q`>{O9P8%+ zMX9KQ%aG@fEw};~)G=S~15!OlUc0;GX+LU#Gm|$R9{wDU;y@p+&D%wpX>m< zhL~aE=+LaOR#E%NdgJBS&GSPFKs^xiAYHT^p-!g@9v^;qcn>PE)l@>MO;MhoQjS%z zUFhNISaHeGRvzI^KtYvIKmeD+tT8T=>U z_bfS*`N(RY>xvrU6tsC^ojGoLyiGxjnZ=Fpb#I!3RuCpc^!JA}8hEI0traIP{O}&( z<}_)*FbimnL{vaqDKCp((ltUv3FinfW!5WD3+A&{zr4iyRc;^BDn$bh1olM~@ zd2`YqgsBJOx-|^3t#>UvYEizq&r3J9y+mrob(ObmX1PW$?1}F|^u3I{jf5J?7r>sg zd|bBW3{>azJwNQ67!BkyHJNJ%rATc_1AAw*^*}M7k%@~jd$3uS>5--T+;99ZZ^wn) z9&F0veBU+=EoleaCWb;5TcZ4M6Z6x3!TBMo|+*fPw>Z+SqV=CCRMcfb=NJy=^zw8$9 zzH1rt|9Je!P;S^>8xt3Ww0fc16{UqIb)i@aL~snAr3ehakFzClP%aK-d7Bf2c|1pv z0C5hg1Cy}%DcGSPKT0$`_>rUCy~%q%=3aMH+Be*RXrGX2o6O_0|KnXYRRWJ-{W{i_ z2U%pYGGrdI$DyWnH0+AI3{6&p&dmRrSO}i2^EO z<-ja4n*a5vN?Vr`eK_-rNNU0LD)z-0MDV|#Id6hW{j@|Zw~($Tq(H&;y}$6s3c}$* zSm^I45V^)zH=__f9hrR%wEwprTFdsR&1GfyL>t&Gm+xexoO2xDUk&PRQO$gQgE)7BVng@6UvV2r5%{3h|qp!j%z}PysqQ6~5iAeXUy8FYp{p&B8 zZPO3$txiQa0dSba8KA)7)y}~j|K6Y*IC{Ne!b*?Wp=QpCObmIFtg$l|LlqQ@KyNV^ zIM+I_6Ab_Zjw70IdNUdVkhoud3OLLo_eGwtP^efcQGgVDolq=DPtrE;Re<>+44H&8 zt7xgtYPK*`y4r&Wus!#*jEm9eDs#@nV=tO1RYN|>OC2YFy@x&uuW*b9p7kNtTe^JJ zbU`aROqTFDsIQk;K-F4YUR-l!;*Lfk5S186!XbOtTX~n~G9>xb8+^R_?d*c{^s(|( zxG9hG66A(DdT&gs?CF1Tgsjb%jRcNc1?KXT-=m-AA$7k56_Lv8wq%$ zM^L#d>*=h8!ftQCj?*S-u~OG(&96UPm%|0?A&XtuKd|`mCtAvIf9`9Qt;@Z$UbHzF z_WUJ2-J&;#**oJ!@+;ylLDdv*MX7EAD&wQ#c5avce1XI7Dyah=TTb3_5d!Dk*hE1j zYgDek;J_4#?+|l5Yy6!R)>LT{U%M}Ozn<5~>w9r{y>7x|ahaZl=vI|~ zH9S4V>Wih!T4Wws;ie|;lJk`1omB#ENGD!^d2gF!GMhHz7V7MO_V;^l_UW;+h4m3?*_DLWf71RfCq%a z&9K?H-_>SWKx4P6I0wxSwYIRI98W7AVN%xo4B(^o2!Bt+UqsfJ!Xkv0c0S$f=&4bD3+H;oC5R$a9G) z)E#8&xk}IWZ!g@94?BDG+@%-@jf19nFQaJBS7k8k2Vlv!?y_t;~ztE3M5CK=cLbLj~$1j|%i!Iz4>#;RBH%m$JWaah36L>j!RcQ#Ty%k!Fq6 zaCKqZsir+pNq`e*kFGz;?0dqddj$_>Krcs%lJaff$(uh99;pyozFZS^9{=W2KMWM_ zzF%}e@`7-CF=FbDt`qRq|D+YAkfcSsdm^~84d|=*4w~9TJ@-8ZsIB4OV>bZIUDmFO$!-!))bZ=;w}J zwWThu`-hIe`_}<-Dy}W|RJ%})`dsNlm_;s2%vxWN1)XnUli#z_q`#`E$;;0-i+Vt8 zbcjg7+51U8$EoUV6kO5TAY!x%2sdrQ{G#V+7W`uSraWKf<}#=o(jZNmdJ+gMG~C)l z8iFe?+9xt86qf@U2P6!TvIaLgDo8TR4j0CXqQPZ4)w`w5E|mj-mwmH# zDh;K(Rp`_v2lB)5n&_um0774>V7KL7EZ}+n`^x_d*c#y2&^v$=Uq~(IIsDNY17&z% z!5x1o%6S!?(7FL$(T2%H&_-6mmLH1#?KvB7j3k`}UzP0j2SJ9jEhxj)lZ34xFf?HL zeZne4UDXmZhrQ^@G4|}HgjS4rhpG9+VHK$~kjQ{k%CP;hvBBSClU-|zYa~VR@$iWS zG87J}bg9ShYKyUl9f!#9eV-941STb58cUL0&n9;22qG{J{M1Wq)04wQeV98pN6^ck z<_07COz5A@WYqX6H&y|m9#D?2;dSHL9VGWW>U$;*j?l$*LCrK){hIsN3Cylizh()z z;?qdBVtYjT&iGlP5Uf^-Fp_Q7vdbPL(K7fvI<3CGMQNtBfwECp{-;fTqzb*kQ@? zhYS3*SJceB$w$AEjc_QEYtc+g4=K-U&m7{Z!}+2btx>Y~xl0;_e^aN}Rf*oa9W=#z zNpxDdZqoy>X}=K$RZssEDJUz_YL*(u1Uu)&y>SP0e+v4fNu9FQc{YN8=jLoM)#T*)JRL1=9WMZOR(II@9AB`o&A0<`K&J{k&W6%x+A%&J; z{FhS9J<&-MO>H2Y(>wP3Cxp2N@S9bo*Kb~^h$3trlT;+*Ry=#@Fr?i(npS!%I)8um{LiG`|LR1sm|u9Bv{J2e)q&H0h=U%+|mtf%p5?X zwr(+l_5AKlmSzDZ1}qODDd!i=(Jj=`M=v3pg7`HH(2A9K`gWP}p2N=-)I1qRpJ*Q2 zUm&W9p^4qSbOQ1OIv!jiH2k0x86PG+dC-m!vkD&7$sZyGvy+ws&HCCJhGht%z8&C|8;*W>|FW?;ef5T=|bo25cqh-)+%yA1Nx5xr<3>-I6`Fg?7oKT1KZ23Qv)Y2x6?C+m=gDCmUzgW zC8k=A&m(86RjVF2r%iCr{#Wm5BF8=|pdfo;FG0ie;ue zu0$=XR=L*s$LDBxBuGitW}mG(C)5v{m3)|qeBV?uhrt5S63m{f0kn@@gd|XeIhcO$ zIhkn@%j3i>zT#v`QdDC|-hZeInXdT2hLV~AB*h!TIL1Fx3NgBYNx;?#fTa=TN8Vkt z0dYh$i`1Qy7}M_g9+X(^HzTOe=hqHn@Cui}?(?hcx@CjCdq_Ig`06ff&d=rm6u;_h zS*w=vtPUnSP!&_UdPx#g)4B=C!BOVv?g)E1W3``}BXTlqU^#43Ck z1)DN06i9D(3+So5i90e`T7dbkzxBOaB3*neCOf^&fLR{J>?uc1y{h}3yYR_((x^^X zpe?*Dnfs~`hAe_7!*0?4c23sLuhBH3X^j-Veih)uU8;?!WDX}Fjv{fV z*rs8c>Dh$;r_R)7mVLxGQFS(j5R?M!-No1dLda$nOMhyJeBD;RB1$&4+XALu{WXm5 zb*RUPdol=s{mK2k53SMtD`1}y?9Ro*>+xVIU)R_I-{>NW13P3g2qQ6!=;<$H?hBf~ zJ}O{jyFoTBcFDJ^L-{dI+AC{7Kw=@IWXaXt6Dp`O8Y%}Y_A#H{(r!|nRaG>)xfPAg zZ~%4ObbAbWn;WZ_%}(rR?W7uqbUm;GVFQiJxql()vToIYqVcVJdvJO-_hhbEqt>hT z;Jv!--CsYtI0KOhi%Qq{ENO1uGqbDo?~%3mg2%@@KziSWLj$4esw;-+#r(d7pj;j= z1I33(vMx$yekK6CB>S`qN4ONc!Jc&$nCYqcRC?z&#av}Ky~JknC+hdF-VU$qWDsx6 z@Lk7s`MLAo=`T+=tKTcbVJ5PQ=ZB8T!I<^B&0x4)eVq>F;@(5nvyAN0Uh~k7<7c_6 z#F-!Di3Lw-tLHTk6t*r2`KffZ8%a0QGiXYXldamJJN6L~iL zy>IGq>m(ZfPo{MM86FS#;w~SQ&wZ*4URvh=gp}{_K!vdS{{epzgoul8-N~o+v&iF( znee`=;>})c)fjx}N&*5i^VFF2SVl^(!{)(N^KZ!O^PP$S(iQOA1~43JVB?O0%fG6` zpGV-GT*AW`BETA9e9x}HO*@_%e3H$`}=e9lo@DpQ#BJmoTY*4!Bg;n!U+( z%teYg#H5DJvUHX462ZR}8|Tp)CAudmILC7Oh;sr9n*|wdk48$CI&fOKp>N%cfE$i! z5GtbqH5vnKSH|;~GJ~%N)yk7m!`b}iIB0VCg+y+8@T!wiIyKDjj6UM1`d*dpowAwj zUsC7HlUc9DxbU7xs=c=6?_Nb9Z7-4#FcL9Y$hp8?4Q(3xL_pn)*R`Te+rJf8r$GBR zyO!~dYzp&#T$>+JZ*BnmTzB%-Kl`a={R&tFnB#$7f<6$;a%kA5cHgHBDayI2d=X)* z{2zE&>DD#5V~7^V5+eGFLA~Or&7-qxjIDG|cKr@vDXn&|T#f;U{zzB4AxmK-n-eVu zuBXp=oic&2b;qc+^#7nsHG#p#TuNO@7k{R{m)ha*Y2S7T->+dwz!CSzBI}~M+x6I{ zfFdNpslS^>9gc!={L{ypdOw*Y1)SG^>Vm4`o%d245d|;-&nj~u5JWJ$jIn>^_Ai}7 z99nB0JQ>j(5atKBnj1=y=xE(j*9SiVI$)o zXmJ;VDk;5i>s?V~=VJxOx?IaR@VI>44B5or#!M)BTyCk9ETvc6Qs>|urSI|G8kCcq zX*Yg;Otgqp3F8(c{2c1QdgRWAt9uDT&^|_E{@sk;^5T+h032kRJHSHvE?V{RqJR^D zZC@C4sqwH>N=|~Y&5&n_0YTU9y+N*@Akm_GX z>x<0jDyC~Bs@)*3Fldz>U_O|+CAcE<`-w8K(iSv7a5>-0X)|2iTo}u@K-QqHphU)L`r2Le>rCJdkyw^=9qMFh(cN=nPXb_P z#=3t@N}EVU675#pMd8Axler93BKtNWs3)-BTSysmQ%&<`MPf3C>68aPr0UMdo+ZRu zdil6>j(qQMX0NZyo}+)K%qu#%F6s|-Z%xcP4Jv*YQp6wyD3%ZlNT{wBX_)S6BS!SC zh7CH|S%1taMjB(OikLC0TI}i=2{06ENP8>3o=qDT>eaT}aVAyDqP6<5UL$K|=(Pl_PT1}(vs`x} zlXL+Ye+cl4c--{O^x8JCxlC@hbW*+DpDjfhcX7zc4n+-yBoSMvwNt`C zTq?9netUxtWyw5L^(^cIr8vg5P0$^v9MHSQ4;cnY2qpFA*NZ>o4J1SLjPtL6hnH>9 zMYXx-Y--wV5&hY1>%EzdSVd7)9fwJmiA6JsR<6J0q1MIYbm~#y-rG3Gp(HKoui&r8 zBtoap-SixSIURjBggb*K5yMnIAz}Zt26oX@g!324d-s`cRGG?Z(@0Xj@pF{kv)FVE zmx|f|zE3|U@>mvYr7h$M@H?HT)2l1cZS4-mH)f7pPB3_3C z2}puWKWOb_=*IvnCA6o#b?uSFPmh-%y7kK1)&JYA?7Q5^m320qe!(t4%2n^j8qxLD z_Wq_MV304`=D&%2T^vFy&z6fDEcRd={$MUly?y*YZfDxAgVd2)tsc#Elj#sbZ3{0f zG~`2Gp`x+LX5%1N9!JVL&m4}7V?v}wxX|JCU$7fF+&?d=^_3s}nuEXg7 zFD-yOav!`~13T{pVt8 zaE*SqP{LGsa78&`0TXMI(RTuBYSk>{J)T{o#@I3WvS7Cjn-%en;7);vHvY=)me` z0IObkQi=4{zZjPm6Ppghm)`4c(L3A;$v6P>8ZMI!*$xRuYJ_pQS{vRJSeuP@9AHS- z?Y&7-1-q$I0oWCs_90@;2_&}P?RP({Oq|7tlmcLyV4ALb!1K`ytG&+DdtQ2ORcl?u z_y<;>L@tG(E_OOQkfZ{6p7BHJ*etu%=G{8lL&eNQwr@DBaM)%SZ5J5iufSToteA zDi4tCjr}j*MTKNLIemE9#ZTg!IJswV9-yqNXolPg!YVm&ceQ`T#U_NC4vjMlDu8K%c~Kj=3z z>9{8wc}t5pzl@(Z6P{-AXgmYjl6hpQW>eXZO#f~q#Qhk-GFL?>1CF9n+*L9Us|7>NiKa31eCe@q#rUATmGQZ;<0;&yv<@I^7 z-OT$;XAMtf^F5+4^}xfp$zSp!@?y=&TD7@oO&x039>OJbb5l;>+nQ_d$QQLJ^t-e`&^b}qU4L>KU^iVeuVubj}2Duufm z)h81aK`tNX&y}o0Tq}lNL%ZSe+BLtHXq1QY@MJ#Dzlq3p!)S>+DDIfl)dt2+$AX@y z<=@_RAM4qFYp4!SQ{}4dVaaHk zk$W@C(7|Xv*AX}oAM7TTsu?5h3IT1znv>8;xa1=pQ2lW%w5=$5za;Q1EV5JLbRjs( zsUN!w;&{5Ron=mrfRMIn)xgQKxmB$MbO`5D5RnrK30_F-A7& zt8*n;(}2`b_jHye!Y*T5yih1)a(UNcjVwhHc*$b)ov!U?3SwzAK8UZZgMX*mx>VIE zt8HA!!|DA;31w-nF+{?p??xx}W`AjM2f3X`>5Bd>>-&VnFX>vV2!TIYEewTosl~7< zkq$(&D43T>)p7OR5948i$CaJ)=SK^mwnp`{`4miO&-B{6u=$J`b_rck0!i;Stk@(k zRas^g(5uQzF}1g5M1DVdJvMtpQB<+@lNw0$L{RZ?{7+1u9oj@95!l4gtVouqE3KbV z+3fruzTN_=tF7xB{S(q4l1ev7i*!p#N=QkENJ)32q*5Xx0@5Je(%q>vNOwzj-?hQ# zz2AMubH6dpIOCi@d#{*l&7OPy9Q$MCujxbN^j8l}({ktWHXk>_(y7<+;5vKIzb<62 z3b*s<3%}bl9*My$tsrgu%S7HJa^p?9o!~K>Xjjs;Bz=AB_Xs27 z94~{dc~r1I!A+aZSjuP;vo81Z0}|Qnt}5gii;hQYoep z1-!P&ng>;Q?!qto@hwCp;3`fK;Jd4AKIF>Wxyb1w795xL-o#Ess6RIqEXnj${a1Hp zYP`kGgA*poXUb5y3oE{izQy)w`vU~@e_GV@o4fT519%L#wt;t!WjL-D3jnFYJIb+i ze;eh;@Uy(NPpjoF=!>Hywa={~%r=as{B)~VQuVzbNnYRf} zaMTtRGEk1k#F2h-Jmn^~q2W+10JXv_j#7r)%ev~3MOR5x(J~CoFr*|gFQ3+=z2K!q zW&W15>o4p+;xsQpPR5#f|2!hgmKpiRf1GuWBte=Bj9NP+d$vWC^}_!AIUe{N1F9a}8>tlY`;oDID=XA^voSfj zvS`h{4aVT7yCmbSaWyKWR)m58T_u+_Im-`AL|a`B3?ej)8?gt8Fi`4qSM z(C4R$cSjX(ZnPAcC~~A{tEd3SYx@fej92Mlg!uEC^S1)7Sw*w&1(S3;y`{>+4J=4o zo0|nsWDp2!9%ncElokpKN!H6sOFoT%rzYZ79yK(K33Bc_xR@)sUv%k`Z< zcat;N_XUn`?{_;aVVx4Rie3*go4P#>(1CEfR6%B4rnlxm^3N8Q4!dRO#dS^&{}-~{ z#x-R>V0kPB^21sQI6QJkiTy z_{gN}G4dGxlQnAb>GtN$+|AXZLY__?uI1QHQ#EGdhn@w({oeJoz00ABH0}4RG&>Wy zne#3&3KA8FNAI)&%imjjmabpsa@mZQ05#|_c+!ouu?(7a+_N9tuFH3M_w%rozu)L> zSv6|p#3%6#)yHM?LHb@Bs6T2y6lOY;9A$p-3;GbXycI;)z=HUOYW<^c_IpljNe^heSlo!J!!9H`g-XxZM!X zPZST`^iHg67p7)-H!Tc)MXn}RerE;$St$mxnsGC%gBz7g3Rc>Ct^64_b8UYtoN#^J zExxMcd>PyouOnk8T5bwznlmS6_7W;v>_;Q3&5YjpeAzq0Bqj?N;)3>_$Ic*ac+NYz zn-~|sL_m~NY|uo8RbG~Sc-Sw3if~R}wg-US{@hlyYw?4)V|rX= z`S%0jn(q3KP91Qlj$1*!NjHDs1AIq`H5`+_cs7P;@3!s2KqvS2pdaGLp@ur`F$*h? zS}L5NaI||f>P)*mT78?ROzrBq@%^$N24%+wEiMFH8L(NpSflF`C+uJoO)aMf{$7l~ zSodC(si0}XE40CWbyNy{qo9NuSi7N{y-=UvYT|nDyctJ z$}jQr6u;*Qx3uWz>i9H?YgXPbl!!M+y|8!{cHoTKPaob7! z8ouz}EcKlrtcJ$eu&s(oe5&*)b&VmZmzI?U41~A;JZL7qDEhL z2fzWzJENfDM|b=<6V7z?fJ zmUmfsgU3l{#mI&QzFDr$&WGg&d{|An2brQmPScV@IMTFLXtp|lNQ6{6m5XJdXO9DUAkm}SNbd|b9B2NYG2eq{Y0q9K$2h%JaqgaR&_>&ql zA%CX_r=mI#9=CtR5itLd&SDj?mFpvYNi$f_d<(PjscY*K7M=f~Fw^^PEiP&xb0#M4%#BceC`KBT!hUbQ5 zU10EtdZC!E{N^7BRbYLLA5|zpZyS5V>Ip>q`~r1zabJ-5JK?ENvo4x$2N-~VhrsBC z4X(BM_usu=%Hy4{GGwRlJ`YV!OakrxR(nx=OG|2L??*70-F1n>xfc{bi=Gj6_MgND z-LSZ8)aY}w3|UDD*YYTWAC?)~*-m9DgE;y2e(T%-BgHfZkWi^(u>^ESB{DXezPI{r z@DT=kduy{E%lEm;I3lgX)8IJcf5DyO+INY)Ov-Z66Qx53raO6Dk=PP_>(zUO5%4dCeE+Y~w)CdySF$5~X8G-bR71)+Z|Ed?*oBZmLPF>wBzIQR%! znKnI7Y9%_{(Y;qUV>$C{UF}O!1FlMj#9%S+V0nWt{dBhnIbbIXv4YxTM~z%NUp=mE zjqp!@7-K*qf3Zw0xK~w-$TqcgB$E|{$z4WAkGXx;m)Rndd=PKk7StW(44Uk<2k8%Y zr)>F^t1M^%A7SqvFsbK%NpMVY8q_*di)rqfa4v4%yqif`>7 z9Y;Fc&YE^kqwY0o&;i@%3JKt0d<0bjg4aoHu2;WoK!OB#r*u&dxZ`!p75d2RT#o}3 zpV)~Zt<3P2hJ}BDHFCP+><+-YP`ZPvNMw9pk_%CegEljq=03;9PRnDi; z3fba}d?NEn{bUomPaSRcMND9(@E66t*IO>yyA#be1G%Px!tOWZ42+tgk+BG#XuyFmuPCIR+}$DtymIN54aHNzho0CEl(V2VOBThHbbLju(qUoh4>5Y5pwNPDx_~d|^LXK6 zG9FYHp{(J$LuW+=Dob;J;D9#e)00roM?|83Sis(0$DBi*s1RE27ZEh&8hbh`pRzZu z0P~^j2Vfu?TH55IEDY{=Qo5+~2vu$Eh*_+!2DVyB*kse=J)jxhEvl?l!rP6i$$wqq z3H8u*#}GBgSYt%C9jjM8U7sq};6*yDAPb53XFYu|dCiEQ=MabtCeTP&*rd1Ikmlri zwb!maYi@ng?9<>oz1;|`GjYe)rt~q>;pdWUDcfCVMb>)RB%Ux|(Ae+?KJQU)oo`P7 z>&+$kp^Vpv%UjMS&lzS3ky@Ct!;Z=BGyg{PQN9*G0I?DBq8OgzreGHMc4PC|rZLH> zsYnh5CwNZ;5?(Bk^1kPpJ;O@!EGIxkeR8^3D>t!gCcpztIz|?gp<1b2&g$IM@lS1fc!+MgKLxwp@M4rw>O z)@=|sG7=*uGg*Bj@(lovAA+yDKv6}jX#(5i3sZIq(0^F^o720R{DRUHIM{38C$BB? z&VPqcHlE%#D?0r9D2Se{>XD+L{nHKNI3fWKiRZ|plp()EO@48VTS3`O5D9#8 z7*^OQv~0l?j#^lI}Ygf{cQw`3eM79SADE$Il9%p!6jf< zdCI%78K11KUwGH~Iq-CipXatwvLD>ukSXHPCHV4D$T(hcsKd!GyiN>4*Wix^7oL+- z%XYJNwb;6a4A%Y9C&RHCn`HP^yNS8u&GIaU9?|-K&mM%g!M~yllbS#N2 zabVom>()O)@*_*~I%JoMAQ~PGa!~(o!u{~ki>!#9loBp5@dGE-1gfU`)Kr42izB1m zfk4m$6HY4X!Wk0CN0*?t-F}r~A3in&w(Kcj=B7AZY@OIMcGCyz!DrP_Z~|gH829Or!a3=-<%LC%+ru7dx<;SSo~q zrs@K$ym(Dn7JVJRW$G=|Z{5kbPXep%-!IpnSCU}C{#CR~Y=7S@2G@d@mCukBJ9l6_}N|_R2&>Sb{?d@H`lYeHw|?H5fSTCH?Zqi7HY~5 zG*nEKUt85Jw+aw5wA8FvV$9Y?W^&8$bXhZ4uAKA>ShH9eSSA={bF;Y8WkZw@KLoR& zQ+<6)S1Q;bGAM8V=69?7R~ZiBow1(H=!5U8pjf-K)$`!(Z_Itx`3Fz$Exh4AeD2K? zqZ=`)#@Q;H&8%f{GOCb^x~i^f!5~ z>o;;6VWiXKo8F-vKYk&9^ZjBZ&4)Vu8&k3+8N+=Ojft=^-xBZVfOv}aXm^T7e1R6& zqy{?7Kwdy!wJ#M}qKgb-0IHZJ9MsPDiaZpL`7p)F)&lR5zX+_UA-FGeUZMs+nC8J$ zIc6t*S&ut{Xa37*a5J*PQy6WLJ6d-j`8hxzV3?}FwDuzRf8LA7FnnC+B>!rVQZr{) z`r*qLaS>sU2q`d-f{Djyj{YFrqHV_M7$poPac>2UDukWwDEQaZjJ^@dQ29Wo03Z4F zt4Zna>E`q?YLkhf{jMMt)UpURic$<~!zsEYmN;ZX_CF`Q1VR*X9@Vd=cDX~dGxLt` z8QzC5t0OJ#KOinGv@xOFzaJQ*F)c9a z^hZ?g0H;1_IK-^fkv-;cKpaLF)s>Q zG#V^fDSM8`7JI_0l*mdW&wns&$&G31>M4e)V)Pj=)d@jzR6VQg4F!W=3ysM+E^>y` z#)TcO7<4X#%Q&<9R9b;lLRUnrdevHQ>Wt}C>>jhAgWD(os>j@ka-Y=?tTb1=AX%Pu42bpmH0{QB zz^vKf<_hEN9{)H$kM)w#`9YFc3QP)XXLAX~63gqDOXn(^#%}k+$9m&^<=zT?pVLE@ zN8xI&288l_JXWI>I`1{s31I=U_o5~5ORuXH!$j978w*^)9AFZ=4{AkZ<8@TAyX&tt?j#LQP?H}ID)2$#JD{;U+ityO&Y^lrPTiA#yb9?GvKqG@5 zPP)^7^sIQ%R>)do;N7$PSM#oB7s3qMW3Qjwh>ufX!}4&k(f@I}6JV26mFyz>GiJe) z*}mPyb}!9J*R->Uji-7#Z?DhhgWL_SFBCQOlev6Zh4Pm~Gv3?Wz+vg`@XXbxjuc<( zm34oy^7s=!V1)8@P$X;3kR{OI)dEiKt>EdQ#lePUY4njMv3w6Sr5AaxUw-*6DwB0i z{e|#``|vY~9wk9r9}R0^l*Vr{rq{2wmaP(Pt=Rxs%3^phcnT0;ty`Y)PAn%d<#WO# zUxr$*l-(@k$Rs8YQrue(99!l$zxL@F!h-vn#P z|LjKok-uC6uk^crfrZjALaGu&G6t64UT7F5W!biK2LMZvkSGh0lNY1EF!vLe#geCc zz4K?g|7gtlZOmIDv)l@?Z=via`jKDo?>BLzfA{aKGCX*)FZ?~MmTmT3%5eBPG{6$k zH{U4}A`CK&fb!QBr-%6Ze2!l2AD3y7EigF~+EBm>+78<<#v495|?d; zS8(XQ+7)IDR)00E%aDWP3C@^=B><~$cFWQZ3)f3VO|sy%gEs!DZt@U*S+EWw?xz|h z+rPM<7h69lPCr5InyEtgfSdIBi+NhmM3z+@a>AXO5&Sv!Ac3NxW3pQdf&5 z4neIrw_HpMJ)@S2qR*1cQlXa8n_D1fRRMOm;vsFDx&V)zI>N-nM6*9dl!2JUfkT;! zavLa=>@M3nh{(t-)6=8??4H-Ixm{w@Vre8B7v7kRhdh4&z)p}Gsl!N$+H#X1xFP5T zYTAQW+7)w}y=Ej4VecL{yl!Kv$f5+QXTlSshYUM1#`yZx`uw|c{X(%C8}$~OIf?@s zS8z`n-uXc?!>q=L_6r#;?i9Mq4MxlOOMFXSh>B_gbQI1XLqb~8Wul6FZoJ=4mSZA; zB7I~m3B7C+t68rT-OC-Ho0j+Y(05mpe5lyju^}LOfRx@{>2PFreIB1hKCQ3fEM!fH zLm%2P^CPUN(2D7=)db21+;+J@T{zz#;`d!!VEVr68I@@3F?Ca~uQOnKYbGMWYL;59riD#`Wo~IZmFL~klMQbbPoAxmFFld1o zE_Xsy*iBC%tUTZ%FZ}WBc=LWzJ#9-d+Wo)pAFsZ7qyfPJD=Ty$rhm7dVLqq&ySa%D zlU7iWeDj7535&$6AZ^5Apu$G~?_@=xmQgKkhLm4*@z5NfDcqF%400CNKK=+%(l3jLY z%qGiOU=&YF*VwM%;NU)2gMab*T-W~flBdJ zqsQ|%i#x+qP*`czL^MfC4W`{@^$}_`TKyF=FJAnt@5M*;j`JFx_Ag!||C!bhUIi

P7Cd?8Qu!X@9t#dS3amH|6Ex8HDp<(ln1YjYScmN4 zLzLt!dKw0XP95*%Zv0%mNTcidYqS1zIE(-!nl^e3t2t*Cv!9=hl{L-AoC3c@^>0o2 z0?P^Jr&s^`7csU}nz&3b`$L0DHI5x|<&Lz_2}p{l4%uM^C-`H36LjMk&DRb}5O7H~ zANuk6Kp~!6(!hWM+>1A?Ow7y@Iyxlo$A2GtC}yajMr+-Ro+#FPm!s+);|RkJsOZUK z!$3ONUI}QhsfhK2!R`c_k{~3|0D%ev z2^bj~$J;9eEq#L;p36$SkC?v3kYsW7J8o?CAKh-O)E4Dyg7DShOPHvt>X&rS@e-4V zBHn_qxi&(5iD%E?65UoF=`?tgPFFjD%D8JZMMXvW=i1(AJRxM*b-&+CUq&a10tqA& ztEkHP-ngTs;s(Z`%7~Koz$c9CL;Qs|fLEKXLmwA#X#~o)N?R6)OUiM-)_m=s;s?sm zF=nk8!W+?3wvui#;Gy*<2oO4~{?0%5&G{$^|6c42vGtR^%HToD;qIqt1Emy|l=a?m zUXDXJhgS=&nf>m2geG*9U~me%g_oZ>tPYhtv_S+>fh zF^u}|Nkn{v!r2)w8L^-7leEY(Cv^W}vqwgToK!&Ek%T-7TP%LUz8sV1x=g@@xUt)5 ze=8({EwGM#KlvYFGjH-y{P-TvaA{m|_9t=rSA4@Y9a^D|)N#4~FO#uFXMD_J6~>US z6Ln56oll$;g2;A*V;2nMZg)v%bRR|L6;{*WtHSpgA|!0Dwz|Ox(L|V9KJ|#tjE(c} zq(>(WIS?gEE`vHjC-)&dd!%H3aHvw^=Da-r7syW=xw zWb#Z^OT|WnxbRdUyYSG1%~jVtfuls-3`5EH5QS~(cHzq$01-~m>*fuRPwG3S{ad(aptqh3-6`h zN%taSsD1RetzSU9Gk_N(VAg1Yho#h5)rnW%QyW4-@q4E7V||!7=M&x3G!!EV?)~Qb z>5Du(eBGt2X2u8YF*x0K>AhD;isB;_$t6_O(2@xo`6y^8ClOTIB@T_+d*ue<%K`U&evn#EO;@d zr_9ix_7CJmJ3lU~)Hb)j@z3Zwx(%Q_cm)n~lzH`C(XGc7%!rDMU6NY#@V!$eA4T)) z_v^CN>7hat(B^1@P*GkL>!8X_89vgpyUH0+sbi$O`->m=ODW0wj2hiHPPw$MW!p-w z7wYy(&|6DrV7vIwJw)X-(sBFM;3y??&7qY(cm;^1jz_f4sOb{tZ#|BXim`;~2(9yT z2cm!8t7G3OO1NTRVvl?}5P`@hO$JtGB!sw$B}DPn!}s5M--1y_^N!()g^(p4hOwKN zNOxDl6F}pSH-lj`k9_ea^zQY1iAH@G_L+m0hmr=Gf*4v8xJp(hzTcRgMKy+x{7Vuw zqFW`Q6_=5NiB{eeqp3e~5Y1chu|0)u{e$Rdy3=q8OQ4Bq#ywwh7WnlIYm8GTlKNZHzh8D2km%Prf?p)HG9B~L2I#mmB;H#+ETlrgf zi5OrP-(5fYTI_$jmY(sqqd)i!N6GXx*C5vMUZ*yvqVSm#W6JT~y)UCS8O@an;HUe| z23a{uw=DP-xaXtHG4pki_pTymX-$A#0r`99>3R}<#vj(A+#gtdWerkP{h6M4-MQ1L zUzXf04q@J=PP_w40_})be5Y91Z?X<|MJEe2Ql@!w=Yc1O$EY^I#fX22gaz4fXiB4#A@b&oL-Y+O5C7$mFLHrXKXBDuI|D@ePrb{4bomNP4_zCL& zSS$7L$`D;5nV`G$8W;P{v~VPEfIE><@8B@e&o?uJCQ|JIvcr;S6H(&-^iC?yG^c(S z+TJ|@Nf#!2A&S6w9*R(@plxalq=(kgy%#|GF{E)rvrJ=xU2*Zm%B<1hmbkoiS>pz} z7+Id~pm=bsAvF?uM41J;y9{3#Me~ap74`R`#ZS64i))ue^WXh=xq~Kkw`<_{d^Rb2 zMCrR(<3j1Nid9q42W)wu6JjH#t0l$P*LB*u#oz#&6Sp{CUAM5=HWKUk^2BNMg)r71nUrbh)RELwtp(-_u!wfTywS-oxdh6kwG3N zs&ono42b5`BL1m>d?DRgLK6NmCA12sEt)AK;Kz>bVB5Xed%C6t!m4tkr@bT1v3` zqM~$_enX%_L(k|qBR~xnxbr@%p8|o}V~@|Q?5gelb_7ACu-h1#D0LzNdO=z=xnd2j zSYGrlf+OJ!j-&)gEfVZpvQL*f=3aLa@HH|RMJ}aG=U#3)5JZRSLR8=VZ&kuEbcUS! z7rwAj+jOc(f>ECDYi{%=dZBO5v3@O#|GBs*UKT}9XP z3q?805BvSat*TP40xUW?wIPiqnNncJhMo3I<+sclL?Fm?cpW81y#@CmfIoL$1D0&N zN^%=pD7giT|*d(6K7)(iIfI%!VJw*-a*Cizd( zJ~F|>esL5mtU$4p#t4yX20ov&eUngf5wfPHrrll8uOjdTr6A8VPtNe4See@RW}i z?#|L4L_lN*s~k*0K_eoM&5VShA?4-O)j+;BkK_7a+X~nJ>AQ{9;+N*prEH?Zd8Pcs zx?^>FSdf7lhmDQR>BR*#AKxS7`(&*x_eI{87N}(V%jUnA&9^u5KQ5IQrKmt72r{@8 zO$dJwj54RDbiVUBw0nM!i~C6ZJiKvij4+Itr#+6#a&BiQqCJdw5nyY$9*>(odHaVQ zgM_z;D6N13L_A1W?=Ef|6lZDjLw-O?Y9*Zb#25)?FjZ-H3a}YIMMgp%_T2t*4+I@9=?ZC zlb{P3#voYvkMANJ0PE!PQP?~EyQ5eJ@b-i+bGp6HSa_&@rsg9A(5 zxL}OHE0nqo*cAYo94+&z!x=vH_@C6^1NKmK_Fu%-$q$iGz~ff6o2XPzCcgensR{Au z5(6EDDjoja`6$x@d1AuofI{$3ZakA0&5}2{{~sZAH(W0nw#}WKUU~?(rP%HnWdEo;Mt%Z~_U}PPTwH9%sP0j0<^cE{_oMH`7|^MVxI>SW zyNjwGZ9Gd^nhb*E8A*%HCsjIaR1}Ryh#;x^KnIwVa3RWVfyr(k0A@n>Yq09Oi^&MI zhbmo0SQyGkqRxAeD+WW{K4D2Mb{Bk?SO)Y1Z{Sq({JYB}&}u&B-rmwXDu4+>9PXr) zAheH4v|A=sqk{&IcMz?uO&~#q)?5V-{SsXh^p@`*72Vk3QaJ4HnEK!I;{TCw%Z<>? zy;b)Z@@MIq&GG`xp!H>y8v{XZO)4DvvhPLvwTA#4UDU{#Kc%0Y#RT3Izh@;;>YeE( zOX-h2LfSh0Tgj}kYdVw0BtMlZ#rdUx5J8k)#8U@7v6b$^t$I546+2F!D+LCwIL6RW zXaXHL57EwEkPX?J#a)WJ4@?qr{qcFtSf&Q4g$DY@^f3WSS%|nfzkoy@kL6>d^q4IC zzr{Y;z~80a+{&M}+!@}%;zbs|aqNhjqw_6LlmM7fl^uqUEde>Lw zwJ0_;<{D=*hDAdwvtT>+#fDKp`G>uP&-Y=w|4BXcXzr<*1l^ittp2Dd&yu__HGC$_ zgpdDM2EoZ>5oxWoP|ZE`_CAB4Gj<8LO<@0eZ%0${B5AcSgY)+@)081f%Y&6}w6I%h zVBliE|6ied;jRtM&lk{vK8OZt%AmLB=}q48exO)}{hIr2_`Txq74&kjEI2Erk$lVR zaoYnV|ADpsqhv?>}dwwPa& zUrN8lua0#r){OXKqpCC00QC?gKV%K{TkCnr2<(Bg-h0=_EbHv_d|S73rmCgDvead} z@u*UFWie2kJg|MNaM1YH`x*l`3I=N`R+J9EbK=uo=?@3rljttG+kHE9 zr@8ikFR8e)@B%V_qNfIY9I1l)JLGJJ2ivM%6D?q(>Ivj#D{nQEVRO8+;555B!$AxS zD-$;7XtG_be!KsGllyBIC{Y0h4u~9Zi7KqaJ>F7pHcV&J56l&@^6y{I`_1%IixU6< zyf^A__;c$!j)$R2V=Cd|elj}$YuPzb`>6Vm^WnjMa*j6P#2hx~L&0ykcb0HV&J8i^ zh#ANkAhw0(Z?i+E*C}a>b*lj$@L}FDKb1Yvoj8+N;=Ie@26vj@>Hi0jL%_C#7=tQv zo}-q_cS@Z(P)wXl;?|NpRxwvqV!#_AmCA2HOh;nh2vaxdy7;XsP6OS<*M)HM@6Zg8J1*~+#K4#oTZH|1f7PkxB6SF z8&MUh$&VdGcERKvH6i&U#t+!YRn`hZ2F;r(tW0n9Gd+{!)YmH&)Z_ zUZ^sGH>-{(dygpaBL0Sd!9u6b%XhOPax3>rr|#cejz`DJzuNh3BNAZoAZl|*hPyPi zgv5)MJK-Dr9q1V703mvQs%cD>4C()A{&G0`B{B%rw$Idg^yHBf5(fQF5J-EGzz=e& z9SdzCw5y8WdEa%Ad0;5SalQi6Yto5h(rPux_8;CsKnyDj33uxY$&3>8L>tx|@0Tay}GCck}j)IQv zr=BZW`sP=W@S+&%<=qzK0v$F%~71AFH@qxhjq^6{V z^Ey9lnrrg2n{U21ex9A3?K<}kxj$2p92li@88LdzfQZG;TUrhYmzSRYK|zZEdP>T` zAh|ToC@Rfrc-?XL0Pz(xR44b`9Lb*Y|!kaNzmpv2Ae7yGKWD!4IebiB*V6t@J%T1&xf2pBOeHe&@A=w;as_C4JW)=#xAL zb-*d^0NAy*yjP`Aq73@`!OAZvOSKDrj@=wiKaNDlSsDaogp2@>jp1=fXei!O)8Ak6 zZx%w>K7!e0#(l02$Oq~?T*l804GoR1FVCWJEZz7f+6T{%x0n*Wj>kDRRb7ag2J4OT zwJQj~@KHjmXj>jjkqreEZTwMA4Mf_p0$q6D zO7E*`-IGGAt;t%q(%s`@0`P0;=Jm+5FeT$P9|+gi0g13MRpn5!nhU)Ju%u>i=jZ1? zmjItd(?2kr;^%7%lp)A zrY|N2f4nsrRPS}6E*XrkKEutbU5@ei@nhGc5sh5_R*d$vo0pfz7*bZ-J=8vt&M|S) zgiKDs#&#b#3wa;0nbN7Y&@nLs0Gr0J>av4eO;>+#T)Lo@{EHXuy|GV=?U!YqZKxjxM2bt5m@<#!rKFB$gFy`!Qjr2-<)=c$? zi$X;UfM?Pu@UN)gfzA2cT#yIeCl3!mCv2XcuIpZ8iP*nRJOh4|QiHb_1~GTuN2*+s z@Ski?o;-M&`J#=fu=f2kKO{7|Vo$8)qMDm-TOig!DiIMX1?W$H_q6#(4RA9E zS5{U6fig6nEVuf+Z#7vCzQ0Q>89Q7XXvw(-X}*uFy49j-1FEm`memruN9mTWW;aH1 zpLk!o=4qAXNQJ**Rex2OgbmN1P*Bp6ix*x#(9?t75l-3?N&UR{20E1BU=+xw2WdkG z^)=`0yfJp5YMwoN7EP)b5S{4-6s4HEJHNey!!HvV85v+epkQL=54!fGQ5713Br4Dc zeyF%~swTnsDv8I-tE=MKU%Vw5w;wT(;VZpVT{;>v;{$Oo_ZDf z=&2M?lEJw2FTVASrE~L7)T`yHqn2s05U}bnaBy(+-dImn&f{!p7a6?!Q)!nbEh~!y zHfsbf#Y9EBKmpy4SJvy`vVB@gv35IMS~e_ zO_Z??)PMg@@_>kl5wHvEi|@RY3kwSp;PhJo@4up+q?b6GO*8HY#|I>jsxwuvNK4z& zE`J*fZlcjZsw5RHtz>IQM+i9BU|=OwOI*B25@xBtKDUhg@`VPAgqH#UQP6sNc}ZGW zuh*f6|Qk3Y1!+0*8q2S8#w_1ut|m{)}$|>mxwPa?G|s%9pUR!@2Gq*>T2F4Ecmd9#>iv+NUB!C?EkBEp^o35$&^V2+P$-At| zOAN(se@O;#DQtdwn^jC)ybYX|5wZUf2{WZtGS9zl~c^`;)8@K{(P>vjcJ5bHd^!g7q`Up zi69Xdv0q>cb$`{x(`ftI$3uk4hHEIE7gq(cRY|2fm97~oNkKXLll8b}5BWhnv0>w9 zM_ztmHm$~uJZ_{HlnQvDCcnDfH@A?HYchJ)P_?+1L{ILhB5{0X(nHScy+DFA>%%rt zX0A0o&pSQFRIwNkn#y-)yKR|Icl-UOx9Wktmh0+sO?3EoW?~r!J4`EJ z<=1=5rHeAqL&gqkr%&HcnfiP}UKF0_JlU<(z}4NImyiEqdMnACss!Zts0g1}byKsR z1UPQF{3c#lcx(DQ9S(+cxT*Ooa+u`VGw(lyC(2Gi%GAGN@%{KpjdBD+(Hxd<7Y>D4 za-KD9iNSnpYRcoNfu~{53Zeqjk{?$?NG`o7S#>Jk-%GM?j7)pnS)b^4G}|Xxm}q5t z@P^F$+C-$>S|IpkCL7h$r^G}&Tw0vyO~w(2O}L9l&#a73{hJJ0H+Gy2rz7^H1>ML% zbs{3-X|itokB5AxtdM6TXbrqe_0tOc4cRFLzVZc204js+&?{C zuHS-dZK#G+&)b|i&i@|oW$hdNz9xEfpVqJXHxgP}1V5do`hTcBY!83r+d;OD86akO zM1*JgkiYrzpyS5lN3UKUsM2k#zxn|4^}4{N9V4jdQF-%*d&Yf7`|qD<-*}#besGwJ z#>j@vrx#Yjzvum5GhZ*5{uQys87r}AnyevnceD&Je@P};Qyw0+)d$EHL6Fx`z7=G< zH>j5NMfUW}Ed?AS29YbOp z3kJP8a;Yg=%KgRbKu1bOrX|Q;Nv!Ag7)ejhiT1?v#BXQs`jYGOiH`ZKcLO?9ublP3 zYp?6F%em}iE`{dpgePq8BAl9q1--(4f1t6CSjgjN`>;#|1xIRRy7&4?i;LyL?sOdQ zK~>_k_F@P53LHb6|26m_ekamO0BgP{Bi`6Pqp)A>3CS2QH9{hD`KC~mv z7Y~=#6ui4jA$TlJE_hUkoD7T%3;G9YKxRw0q#O}@w`lJa1jb|{$8nJRP#9multMYG|CJdZZ;jpga`Ml` zq#aDOhkz1j9$u$&cpSyV4#oK6#ULB~cZCs|e~$_q%5ccpE+2sV`hbkg|LNm(uqW?J zyIoFa8xL~t`h5rUB`|iQaoP$c%N5bo)NpX9nSXr6ezA=Y)$x{M>$cEyaHKLTH0gk5 zC}{g!B8s{@VeGR#4bQGP$aB?R8|ySA`bA~3H4hDu=2H>J_jM^4G`K!SM<6?8v!3o1 z@A;ad#E8e6;D}nf!rYXv?enUtgmBHeLcq?$DF*nD0 zqiOuq=3}$T7s2?uM|%>YE$1jGyG?C!8hb6(b$_%x?Xxu{KzYT&TP8VmoyA!xlq{ z>Y}lpWyJ%k{j!yBZ}Zr1Wzh&MwXOfTKC64)j?1fQfn)t0l$%fU3p0sPtxe)GpB)~X z4zLS?cT0& zVQ`N|L44oVA2&_^vfu~MbA!v;c?CycBrw_Jm1f(5kAStep!Ub4$vL{T)`sh=`bsU>*+n5G8^G(FickcxXrD!)3Cu{ij!ejNcaB z+-5YyGMUb=94?$wTrYQKS%4|S7*|0?PvBKPa7i*#8Oeks#QPH3(t%!#w{w_On(N&B zI7GwKlcxu?Nqs+mGVk@zHuM4RtrFj&N&UD8@{5E|oZ6{4F-Q%M6s-&2!(H(&oUK#$ zif04w*X^NL{HS4Np^s^kK*{WX{8;Ji;4P*q`Ff;OXMOA4CEHs{m2GJDzI(xuO0zgw;J9&Y&q36I<+$*K9Y) z$bN`eReWFJ($$|vZ-hLb=&WF;o%#H-e)03UO??fK7)r0tjd`wK__u+pyLa{xW-P6RxFMG;35C4FN){16U7Uv8^%vYy;h$F zQ?el=WI&ic*;&@Ctir##9JiAHSa?;SRfbDT7~dyKV(^hLnK{!V#G z*cSqAyV&QKIZ*8Nl=;%^Ixy`^28Td$E7-Tw=jZ=8C1^8WrX`cU=Giz>JEZyWwuf z<0Zm1Y@$J!AM&)NQ@wG}%GzKREf$%q*wjoz|4*4@wS;dz$EA!+WU2Po%_cR*yAjZ-b;JiU+$vnTkTF7V3f)O)Lo?dNY?j1_RIcp|oi@Hn7d!#} zM-oWsN}uGT12ovl?AW~|?_*p@pE)=SdP^6P`=(w|0#o(1!}cfY_Rd;ot4Yqsd?MZM z-V%GY(Suw0vR$TwMcW;&-vyoEz_%^U2AuG)!NC$3j2@>i#WE(i#M&@ssurF^@CzdB z+it5t?g81hRw(IH7&(h(#I#3vx3J5TvFJ9=JZ1rBGr+iPY%Ov? zy=5sb0J)__H{=pN;jd}M(owXxGmn)p4EB(VL+iMX5PQxqd@G*Pdlr>M$eCceraUL_ z4fX&j@N?`Rgfq8Hrb=f0a)=o$Fk1RH26W!^8`7SJk94$zERQFvjM1w$q8XQW8gh7S z$c!8WeO~uS@wzggJ~qvtoLk*A=X&%Ac1i4t@c%S+rcp_*TO6ms%yJ&W>v*zK%gRhD z4ULYa=5Wx?$s8)wG&RRe4Fw#^F}1LP40E=!BqJ5a94jqz9x)}+%pnm$Nl`&K53PIe zr@PiYd}OVcXR+Vs+5Gl@|Mv@IaWN3CW^=mDqI8-u5Mp^PO%voHt;ts$g*0vV!B!{) z#@4ewXH&WK{pEHDB8DGlN-Y!J4#_59ti`l69%X)+BRn*zz z5F;L!bD4$BNZKc^Ae;X-EisWPkq&Bu58&d^`Js*aCdcH#y}fC-j_LO4Kct+xHE_{R zS<<5Qh;cO-0oM;==r0qBS8Oa6(xr_Bf@mFu>Ot3R6Hm-$h|?cM;F{!WA2Yd|aKs_C#||JdL*T3#TFqs@u`!Y+eA=Fx07PPQ@^apM4@??VGwL zb(9N}bC3p5>iLLByt5LiGdBLZxd`|;T9}2;yjxL@*kDKPK70wVF>lsl3?FzB z_8L{^e6BJZS9(^xq@VQ7X2;^ zPM&$~_w{MiOZ+8OMFhg{d_!t|*X#|fZt-FUa5`Q>YBNXI=N46Zv#TEQw$Y_OG1|l+{Or`mt1VA zB5OLBd}mc19Pn0Gr%q@&U`<`ZwwX{&CR`tZ{y|wSvo8-Ri&>0*PO@%mp!XHd&43o! zG%!${_G;$c^t|%*{`&QXu|BC%s*>FndhMjl7ee7@%&U#!i6=rCDiSj21HHXucg`T9 zxKqe1%d=v6}D~3lH)~q5Tl3)BA9yaHZj>+ ztfex(cIP5ac#4*#{{lj=jt3cH(~Hp(uKS&oDFrp-jLTsM^@T?VgF^Qk?~4jZ#;RM7 zD53kkHnLEiR0`@6I;6DB^NSaWBPMqI6(8GNI#aK%R)das$Ths=prLk=a(^T_s3JH? z>8zBf+1IXh;iy?8tL98sRl=$!*-&R^Wf1i8vYt&aKfGuzjLEv1AU@AZ9yxAmfe>iR z-_5+2iFlH6Gd|^*_2=XUJ`(}{ySQXEJ6l5;3YUc(^6QjW(^L9uw%XQ~SPy})*{4iB z9UF^mLCt3Vak(S6?}tHfuVqz+!(wxYBkgQ0B3cUK_W7whVVOGKawjE0FAG^8_sVb3 zHB|50WO@rYEpAhDdse&#q)F8$raN6*_;~8KX;GWD+;>$khx3wj;#Ca-n^bEw@X5ta*-d;c^w%9qj3uI}S8{zq&mwjJZQ3*SyIyRj Pbg_h zS@80ci$s{Hy5p2~H-{cKtza6(dFNd4oRB_!&cO)y#oJ*jM+Cfg2m=tA+V#;&ryAUL zP)ej-KdN3`UAfQ%7dE9rp=~JMIL~h4^MI--g~uken@v~1KVglpCvv)}m9k?jPyXx>1kQ2Iv0;pWiVMX8aZG}iz zp#O>B3_P?$M{lY6UV*(X`^PQsg_%zgD@?A!Oh5DLX^Nyd5_z*)$LE8Gu(7Iy>oDwb zl+CfoK?Rg>D<@`#{kCbj#F>!>a^2srt>AioZu^QoDMW^Igo1cu^1=7u3rrBGj|!Z_ zWdRGWhHZ{P(=nf4^RldK;$#rc_-O&}U++}J8w;aMFE-rsiweYW{bS|u>jh>8j;Ghx zmJS8XdW7@pf)@DgT?()Xv_v*S3l3w<|2S2~ zcAHt+l4)gSDVnY{q3G<07L*NyaVdVu?B~B5fjx@6lw%PdE=z;?QUdxmle@6_?H|>Q zat)s&RTA(}K~iBME|p4mk%$(8)#~H;IQ3b8OwgRpYoC#HrBz!;F)(&at`Fbf(NY(0 zipA$)b6)xk@0P7Ukqz{UwbUIuRN57mZhwjZwt{;f;ug5?M@R<&V#`^zrh|>%GoJ1B z7#6GxL=6ftrl0I8qZ;)%k?hE9tkL9t>;I8bb$xP+%9fR}Jn^?4{Yko3>!7k-SSls1 z%sdD)x}l|%-dp-x+{rGDfO+KtFm6pR&Wt6W=O-UwEdRE5RX)xt_ezSrh%1E=zDaYw zRt`IBugc!=kA&vz=gVD)GEM5UN*|kgZh;RhK6IlUA{kAwdxpOw3~ee4UoR#kjc}lM zHQ?K0o07ohB3x%lOt37w06aF|cYTAV2WOs$lnZo`5>>s0-WN=as#HOX&68T^Wg97Z z;7Q_GWu(qE1LnTo-ZB6i@j%@1Xh-nId)({vt^}neKVF#g03f9C=m7mze+aQ#HC1`h z4c#taDbL*&w&h_XFqpCFFkzw)>$m5|oJs1#vL9Q)5A26%nWpW1mScYrzi-lA%dhoa z-Cw)VxsM+;wi{%gn>{{4lT4s80S2@Qd>SJG0$x_;$kVUQ H+;0617e~r8 literal 52951 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 se?6b_pT{x&|6<g-tol) & (g_forwardg-tol)&(g_backward Date: Mon, 31 Oct 2022 09:51:53 +0000 Subject: [PATCH 17/25] Update CHANGES Co-authored-by: Oliver Beckstein --- CHANGES | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 8887b458..b86ad860 100644 --- a/CHANGES +++ b/CHANGES @@ -39,7 +39,8 @@ Enhancements - Add remove_burnin keyword to decorrelate_u_nk and decorrelate_dhdl (PR #218). - Add a base class for workflows (PR #188). - Add the ABFE workflow (PR #114). - - Add R_c and A_c for convergence analysis. (PR #239) + - Add R_c and A_c for "fractional equilibration time" convergence analysis + (issue #104, PR #239) - Add the keyword arg final_error to plot_convergence (#249) From 5b0e3346d9e6dfb60269be91caa61d9c78a0eb3e Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 31 Oct 2022 09:52:24 +0000 Subject: [PATCH 18/25] Update docs/convergence.rst Co-authored-by: Oliver Beckstein --- docs/convergence.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index 1e4a1d3d..a77d6abc 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -53,8 +53,8 @@ simulation and 1 for fully-unequilibrated simulation. :: >>> file = load_ABFE().data['ligand'][0] >>> dhdl = extract_dHdl(file, T=300) >>> decorrelated = decorrelate_dhdl(dhdl, remove_burnin=True) - >>> value, running_average = fwdrev_cumavg_Rc(dhdl2series(decorrelated), tol=2) - >>> print(value) + >>> R_c, running_average = fwdrev_cumavg_Rc(dhdl2series(decorrelated), tol=2) + >>> print(R_c) 0.04 >>> ax = plot_convergence(running_average, final_error=2, units='kcal/mol') >>> ax.set_ylabel('energy/kT') From d94da63a448623def20f3e34bf29dd0bda43d4b0 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 31 Oct 2022 09:52:46 +0000 Subject: [PATCH 19/25] Update docs/convergence.rst Co-authored-by: Oliver Beckstein --- docs/convergence.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index a77d6abc..22adacf5 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -56,7 +56,7 @@ simulation and 1 for fully-unequilibrated simulation. :: >>> R_c, running_average = fwdrev_cumavg_Rc(dhdl2series(decorrelated), tol=2) >>> print(R_c) 0.04 - >>> ax = plot_convergence(running_average, final_error=2, units='kcal/mol') + >>> ax = plot_convergence(running_average, final_error=2, units='kT') >>> ax.set_ylabel('energy/kT') From 724ba677e4d84327da832b50ff4a095059d46945 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 31 Oct 2022 09:53:59 +0000 Subject: [PATCH 20/25] Auto stash before merge of "feat_Rc" and "origin/feat_Rc" --- docs/convergence.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index 22adacf5..c667f7e1 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -56,7 +56,7 @@ simulation and 1 for fully-unequilibrated simulation. :: >>> R_c, running_average = fwdrev_cumavg_Rc(dhdl2series(decorrelated), tol=2) >>> print(R_c) 0.04 - >>> ax = plot_convergence(running_average, final_error=2, units='kT') + >>> ax = plot_convergence(running_average, final_error=2) >>> ax.set_ylabel('energy/kT') From e034c2a25f920895bff563cbbc75260d4f359f99 Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 31 Oct 2022 10:35:11 +0000 Subject: [PATCH 21/25] Update src/alchemlyb/convergence/convergence.py Co-authored-by: Oliver Beckstein --- src/alchemlyb/convergence/convergence.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 0b29e4d9..c968864e 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -221,7 +221,9 @@ def fwdrev_cumavg_Rc(series, precision=0.01, tol=2): This function computes :math:`R_c` from equation 16 from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8397498/#FD16. The code is modified based on Shujie Fan's (@VOD555) work. - + + Please cite [Fan2021]_ when using this function. + .. versionadded:: 1.0.0 ''' From ed8a597da9eecc26460ec8979c96e1020283ae1f Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 31 Oct 2022 10:35:27 +0000 Subject: [PATCH 22/25] Update src/alchemlyb/convergence/convergence.py Co-authored-by: Oliver Beckstein --- src/alchemlyb/convergence/convergence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index c968864e..14b66b49 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -286,7 +286,7 @@ def A_c(series_list, precision=0.01, diff=2): Note ---- - This function tries to compute :math:`A_c` from equation 18 from + This function computes :math:`A_c` from equation 18 from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8397498/#FD18. See also :func:`~alchemlyb.convergence.fwdrev_cumavg_Rc`. From 01826bfc5bee08d7fda9ef5c3107ffbf5251efbb Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 31 Oct 2022 10:35:33 +0000 Subject: [PATCH 23/25] Update src/alchemlyb/convergence/convergence.py Co-authored-by: Oliver Beckstein --- src/alchemlyb/convergence/convergence.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/alchemlyb/convergence/convergence.py b/src/alchemlyb/convergence/convergence.py index 14b66b49..bfe7402a 100644 --- a/src/alchemlyb/convergence/convergence.py +++ b/src/alchemlyb/convergence/convergence.py @@ -290,6 +290,8 @@ def A_c(series_list, precision=0.01, diff=2): https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8397498/#FD18. See also :func:`~alchemlyb.convergence.fwdrev_cumavg_Rc`. + Please cite [Fan2021]_ when using this function. + .. versionadded:: 1.0.0 ''' From 2d52fd6cb49a8cb79208e3410fec80770575ca6d Mon Sep 17 00:00:00 2001 From: Zhiyi Wu Date: Mon, 31 Oct 2022 10:35:46 +0000 Subject: [PATCH 24/25] update --- docs/convergence.rst | 2 +- docs/images/R_c.png | Bin 57754 -> 59464 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index c667f7e1..33ac9719 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -57,7 +57,7 @@ simulation and 1 for fully-unequilibrated simulation. :: >>> print(R_c) 0.04 >>> ax = plot_convergence(running_average, final_error=2) - >>> ax.set_ylabel('energy/kT') + >>> ax.set_ylabel("$\partial H/\partial\lambda$ (in kT)") Will give a plot like this. diff --git a/docs/images/R_c.png b/docs/images/R_c.png index f9c4ccbd339d20dfd98e638ec170eebab089b757..8b249225005ee0b33eda3fead0a539a9d3992c4e 100644 GIT binary patch literal 59464 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 literal 57754 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≪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 Pbg_h zS@80ci$s{Hy5p2~H-{cKtza6(dFNd4oRB_!&cO)y#oJ*jM+Cfg2m=tA+V#;&ryAUL zP)ej-KdN3`UAfQ%7dE9rp=~JMIL~h4^MI--g~uken@v~1KVglpCvv)}m9k?jPyXx>1kQ2Iv0;pWiVMX8aZG}iz zp#O>B3_P?$M{lY6UV*(X`^PQsg_%zgD@?A!Oh5DLX^Nyd5_z*)$LE8Gu(7Iy>oDwb zl+CfoK?Rg>D<@`#{kCbj#F>!>a^2srt>AioZu^QoDMW^Igo1cu^1=7u3rrBGj|!Z_ zWdRGWhHZ{P(=nf4^RldK;$#rc_-O&}U++}J8w;aMFE-rsiweYW{bS|u>jh>8j;Ghx zmJS8XdW7@pf)@DgT?()Xv_v*S3l3w<|2S2~ zcAHt+l4)gSDVnY{q3G<07L*NyaVdVu?B~B5fjx@6lw%PdE=z;?QUdxmle@6_?H|>Q zat)s&RTA(}K~iBME|p4mk%$(8)#~H;IQ3b8OwgRpYoC#HrBz!;F)(&at`Fbf(NY(0 zipA$)b6)xk@0P7Ukqz{UwbUIuRN57mZhwjZwt{;f;ug5?M@R<&V#`^zrh|>%GoJ1B z7#6GxL=6ftrl0I8qZ;)%k?hE9tkL9t>;I8bb$xP+%9fR}Jn^?4{Yko3>!7k-SSls1 z%sdD)x}l|%-dp-x+{rGDfO+KtFm6pR&Wt6W=O-UwEdRE5RX)xt_ezSrh%1E=zDaYw zRt`IBugc!=kA&vz=gVD)GEM5UN*|kgZh;RhK6IlUA{kAwdxpOw3~ee4UoR#kjc}lM zHQ?K0o07ohB3x%lOt37w06aF|cYTAV2WOs$lnZo`5>>s0-WN=as#HOX&68T^Wg97Z z;7Q_GWu(qE1LnTo-ZB6i@j%@1Xh-nId)({vt^}neKVF#g03f9C=m7mze+aQ#HC1`h z4c#taDbL*&w&h_XFqpCFFkzw)>$m5|oJs1#vL9Q)5A26%nWpW1mScYrzi-lA%dhoa z-Cw)VxsM+;wi{%gn>{{4lT4s80S2@Qd>SJG0$x_;$kVUQ H+;0617e~r8 From 2628740e16f1e80c8a13fce78bef601ba5bb7004 Mon Sep 17 00:00:00 2001 From: Oliver Beckstein Date: Mon, 31 Oct 2022 09:16:53 -0700 Subject: [PATCH 25/25] Update docs/convergence.rst --- docs/convergence.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/convergence.rst b/docs/convergence.rst index 33ac9719..34dda71f 100644 --- a/docs/convergence.rst +++ b/docs/convergence.rst @@ -90,7 +90,7 @@ The currently available connvergence functions: .. autosummary:: :toctree: convergence - convergence + forward_backward_convergence fwdrev_cumavg_Rc A_c