From 023aa70826c12520ec8a1fade553c43ad4162475 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Thu, 1 Jul 2021 17:20:46 +0800 Subject: [PATCH 01/14] Support 2x2 plots - add var2 variable and support 2x2 plot --- .gitignore | 2 + dabest/_api.py | 6 +-- dabest/_classes.py | 108 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 98 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index ae8d3eb1..49c7aae1 100644 --- a/.gitignore +++ b/.gitignore @@ -125,3 +125,5 @@ tex.cache/ testtt.py real.py 0to2_beforeduringafter.csv +test.ipynb +TrhCsCh.csv diff --git a/dabest/_api.py b/dabest/_api.py index fa2433f0..5795b2fa 100644 --- a/dabest/_api.py +++ b/dabest/_api.py @@ -4,8 +4,8 @@ # Email : joseshowh@gmail.com -def load(data, idx, x=None, y=None, paired=None, id_col=None, - ci=95, resamples=5000, random_seed=12345, proportional=False): +def load(data, idx=None, x=None, y=None, paired=None, id_col=None, + ci=95, resamples=5000, random_seed=12345, proportional=False, var2 = False, status = None): ''' Loads data in preparation for estimation statistics. @@ -65,4 +65,4 @@ def load(data, idx, x=None, y=None, paired=None, id_col=None, ''' from ._classes import Dabest - return Dabest(data, idx, x, y, paired, id_col, ci, resamples, random_seed, proportional) + return Dabest(data, idx, x, y, paired, id_col, ci, resamples, random_seed, proportional, var2, status) diff --git a/dabest/_classes.py b/dabest/_classes.py index 8395f5fa..20fa7168 100644 --- a/dabest/_classes.py +++ b/dabest/_classes.py @@ -10,7 +10,7 @@ class Dabest(object): """ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, - random_seed, proportional): + random_seed, proportional, var2, status): """ Parses and stores pandas DataFrames in preparation for estimation @@ -23,9 +23,10 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, import pandas as pd import seaborn as sns + self.__var2 = var2 + self.__status = status self.__ci = ci self.__data = data - self.__idx = idx self.__id_col = id_col self.__is_paired = paired self.__resamples = resamples @@ -39,6 +40,59 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, + # check if this is a 2x2 ANOVA case and x & y are valid columns: + if var2: + if len(x) != 2: + err0 = '`var2` is True but the number of variables indicated by `x` is {}.'.format(len(x)) + raise ValueError(err0) + if any(i not in data_in.columns for i in x): + err = 'Not all of {0} is a column in `data`. Please check.'.format(x) + raise IndexError(err) + if y not in data_in.columns: + err = '{0} is not a column in `data`. Please check.'.format(y) + raise IndexError(err) + if status not in data_in.columns: + err = '{0} is not a column in `data`. Please check.'.format(status) + raise IndexError(err) + + + + # check if idx is specified + if not var2 and not idx: + err = '`idx` is not a column in `data`. Please check.' + raise IndexError(err) + + + # create new x & idx and record the second variable if this is a valid 2x2 ANOVA case + if var2: + # add a new column which is a combination of experiment status and the first variable + new_col_name = status+x[0] + while new_col_name in data_in.columns: + new_col_name += "_" + data_in[new_col_name] = data_in[x[0]].apply(lambda x: str(x)) + " " + data_in[status].apply(lambda x: str(x)) + + #create idx + experiment = data_in[status].unique() + x1_level = data_in[x[0]].unique() + idx = [] + for i in experiment: + temp = [] + for j in x1_level: + temp.append(j + " " + i) + idx.append(temp) + self.__idx = idx + self.__first = x1_level + self.__experiment = experiment + # record the second variable and create idx + self.__second = x[1] + x = new_col_name + + else: + self.__second = None + self.__idx = idx + self.__first = None + self.__experiment = experiment + # Determine the kind of estimation plot we need to produce. if all([isinstance(i, str) for i in idx]): # flatten out idx. @@ -200,7 +254,7 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, EffectSizeDataFrame_kwargs = dict(ci=ci, is_paired=paired, random_seed=random_seed, resamples=resamples, - proportional=proportional) + proportional=proportional, var2=var2, second=self.__second) self.__mean_diff = EffectSizeDataFrame(self, "mean_diff", **EffectSizeDataFrame_kwargs) @@ -495,7 +549,6 @@ def cliffs_delta(self): return self.__cliffs_delta - @property def data(self): """ @@ -503,6 +556,7 @@ def data(self): """ return self.__data + @property def idx(self): """ @@ -510,13 +564,16 @@ def idx(self): """ return self.__idx - # Removed due to the deprecation fo `is_paired` - #@property - #def is_paired(self): - # """ - # Returns True if the dataset was declared as paired to `dabest.load()`. - # """ - # return self.__is_paired + + @property + def second(self): + return self.__second + + + @property + def var2(self): + return self.__var2 + @property def is_paired(self): @@ -525,6 +582,7 @@ def is_paired(self): """ return self.__is_paired + @property def id_col(self): """ @@ -532,6 +590,7 @@ def id_col(self): """ return self.__id_col + @property def ci(self): """ @@ -539,6 +598,7 @@ def ci(self): """ return self.__ci + @property def resamples(self): """ @@ -546,6 +606,7 @@ def resamples(self): """ return self.__resamples + @property def random_seed(self): """ @@ -562,6 +623,7 @@ def x(self): """ return self.__x + @property def y(self): """ @@ -569,6 +631,7 @@ def y(self): """ return self.__y + @property def _xvar(self): """ @@ -576,6 +639,7 @@ def _xvar(self): """ return self.__xvar + @property def _yvar(self): """ @@ -583,6 +647,7 @@ def _yvar(self): """ return self.__yvar + @property def _plot_data(self): """ @@ -599,6 +664,7 @@ def proportional(self): """ return self.__proportional + @property def _all_plot_groups(self): """ @@ -1388,7 +1454,7 @@ def __init__(self, dabest, effect_size, is_paired, ci=95, proportional=False, resamples=5000, permutation_count=5000, - random_seed=12345): + random_seed=12345, second=None, var2=False): """ Parses the data from a Dabest object, enabling plotting and printing capability for the effect size of interest. @@ -1402,6 +1468,8 @@ def __init__(self, dabest, effect_size, self.__permutation_count = permutation_count self.__random_seed = random_seed self.__proportional = proportional + self.__second = second + self.__var2 = var2 def __pre_calc(self): @@ -1440,9 +1508,7 @@ def __pre_calc(self): r_dict["test"] = tname r_dict["control_N"] = int(len(control)) r_dict["test_N"] = int(len(test)) - out.append(r_dict) - if j == len(idx)-1 and ix == len(current_tuple)-2: resamp_count = True def_pval = True @@ -1780,10 +1846,12 @@ def plot(self, color_col=None, from .plotter import EffectSizeDataFramePlotter, ProportionalDataFramePlotter - if hasattr(self, "results") is False: self.__pre_calc() + if self.__var2: + color_col = self.__second + if self.__proportional: raw_marker_size = 0.01 @@ -1866,6 +1934,16 @@ def ci(self): """ return self.__ci + @property + def second(self): + return self.__second + + + @property + def var2(self): + return self.__var2 + + @property def resamples(self): """ From 2d1713eb3f988aa2c963671f85aecc8f9c36841c Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Tue, 6 Jul 2021 22:51:59 +0800 Subject: [PATCH 02/14] Add extra delta-delta violin to 2x2 plot - Add extra delta-delta violin to 2x2 plot --- .gitignore | 1 + dabest/_api.py | 23 +++++++- dabest/_classes.py | 136 +++++++++++++++++++++++++++++++++------------ dabest/plotter.py | 111 ++++++++++++++++++++++++++++-------- 4 files changed, 209 insertions(+), 62 deletions(-) diff --git a/.gitignore b/.gitignore index 49c7aae1..c019bf98 100644 --- a/.gitignore +++ b/.gitignore @@ -127,3 +127,4 @@ real.py 0to2_beforeduringafter.csv test.ipynb TrhCsCh.csv +*.py diff --git a/dabest/_api.py b/dabest/_api.py index 5795b2fa..1fc6be31 100644 --- a/dabest/_api.py +++ b/dabest/_api.py @@ -5,7 +5,8 @@ def load(data, idx=None, x=None, y=None, paired=None, id_col=None, - ci=95, resamples=5000, random_seed=12345, proportional=False, var2 = False, status = None): + ci=95, resamples=5000, random_seed=12345, proportional=False, + delta2 = False, experiment = None): ''' Loads data in preparation for estimation statistics. @@ -18,7 +19,10 @@ def load(data, idx=None, x=None, y=None, paired=None, id_col=None, List of column names (if 'x' is not supplied) or of category names (if 'x' is supplied). This can be expressed as a tuple of tuples, with each individual tuple producing its own contrast plot - x : string, default None + x : string or list, default None + Column name(s) of the independent variable. This can be expressed as + a list of 2 elements if and only if 'delta2' is True; otherwise it + can only be a string. y : string, default None Column names for data to be plotted on the x-axis and y-axis. paired : string, default None @@ -37,6 +41,19 @@ def load(data, idx=None, x=None, y=None, paired=None, id_col=None, reported are replicable. proportional : boolean, default False. TO INCLUDE MORE DESCRIPTION ABOUT DATA FORMAT + delta2 : boolean, default False + Indicator of delta-delta experiment + experiment : String, default None + The name of the column of the dataframe which contains the label of + experiments + experiment_lab : list, default None + A list of String to specify the order of subplots for delta-delta plots. + This can be expressed as a list of 2 elements if and only if 'delta2' + is True; otherwise it can only be a string. + x1_level : list, default None + A list of String to specify the order of subplots for delta-delta plots. + This can be expressed as a list of 2 elements if and only if 'delta2' + is True; otherwise it can only be a string. Returns ------- @@ -65,4 +82,4 @@ def load(data, idx=None, x=None, y=None, paired=None, id_col=None, ''' from ._classes import Dabest - return Dabest(data, idx, x, y, paired, id_col, ci, resamples, random_seed, proportional, var2, status) + return Dabest(data, idx, x, y, paired, id_col, ci, resamples, random_seed, proportional, delta2, experiment) diff --git a/dabest/_classes.py b/dabest/_classes.py index 20fa7168..13adc3b6 100644 --- a/dabest/_classes.py +++ b/dabest/_classes.py @@ -10,7 +10,7 @@ class Dabest(object): """ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, - random_seed, proportional, var2, status): + random_seed, proportional, delta2, experiment): """ Parses and stores pandas DataFrames in preparation for estimation @@ -23,8 +23,8 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, import pandas as pd import seaborn as sns - self.__var2 = var2 - self.__status = status + self.__delta2 = delta2 + self.__experiment = experiment self.__ci = ci self.__data = data self.__id_col = id_col @@ -41,9 +41,9 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, # check if this is a 2x2 ANOVA case and x & y are valid columns: - if var2: + if delta2: if len(x) != 2: - err0 = '`var2` is True but the number of variables indicated by `x` is {}.'.format(len(x)) + err0 = '`delta2` is True but the number of variables indicated by `x` is {}.'.format(len(x)) raise ValueError(err0) if any(i not in data_in.columns for i in x): err = 'Not all of {0} is a column in `data`. Please check.'.format(x) @@ -51,28 +51,28 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, if y not in data_in.columns: err = '{0} is not a column in `data`. Please check.'.format(y) raise IndexError(err) - if status not in data_in.columns: - err = '{0} is not a column in `data`. Please check.'.format(status) + if experiment not in data_in.columns: + err = '{0} is not a column in `data`. Please check.'.format(experiment) raise IndexError(err) # check if idx is specified - if not var2 and not idx: + if not delta2 and not idx: err = '`idx` is not a column in `data`. Please check.' raise IndexError(err) # create new x & idx and record the second variable if this is a valid 2x2 ANOVA case - if var2: - # add a new column which is a combination of experiment status and the first variable - new_col_name = status+x[0] + if delta2: + # add a new column which is a combination of experiment and the first variable + new_col_name = experiment+x[0] while new_col_name in data_in.columns: new_col_name += "_" - data_in[new_col_name] = data_in[x[0]].apply(lambda x: str(x)) + " " + data_in[status].apply(lambda x: str(x)) + data_in[new_col_name] = data_in[x[0]].apply(lambda x: str(x)) + " " + data_in[experiment].apply(lambda x: str(x)) #create idx - experiment = data_in[status].unique() + experiment = data_in[experiment].unique() x1_level = data_in[x[0]].unique() idx = [] for i in experiment: @@ -91,7 +91,7 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, self.__second = None self.__idx = idx self.__first = None - self.__experiment = experiment + self.__experiment = None # Determine the kind of estimation plot we need to produce. if all([isinstance(i, str) for i in idx]): @@ -254,7 +254,11 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, EffectSizeDataFrame_kwargs = dict(ci=ci, is_paired=paired, random_seed=random_seed, resamples=resamples, - proportional=proportional, var2=var2, second=self.__second) + proportional=proportional, + delta2=delta2, + experiment = self.__experiment, + first = self.__first, + second=self.__second) self.__mean_diff = EffectSizeDataFrame(self, "mean_diff", **EffectSizeDataFrame_kwargs) @@ -323,6 +327,9 @@ def __repr__(self): for ix, test_name in enumerate(current_tuple[1:]): comparisons.append("{} minus {}".format(test_name, control_name)) + if self.__delta2: + comparison.append("{} minus {}".format(self.__experiment[1], self.__experiment[0])) + for j, g in enumerate(comparisons): out.append("{}. {}".format(j+1, g)) @@ -565,16 +572,26 @@ def idx(self): return self.__idx + @property + def first(self): + return self.__first + + @property def second(self): return self.__second @property - def var2(self): - return self.__var2 + def experiment(self): + return self.__experiment + @property + def delta2(self): + return self.__delta2 + + @property def is_paired(self): """ @@ -687,7 +704,8 @@ def __init__(self, control, test, effect_size, is_paired=None, ci=95, resamples=5000, permutation_count=5000, - random_seed=12345): + random_seed=12345, + first=None, delta2=False): """ Compute the effect size between two groups. @@ -851,20 +869,24 @@ def __init__(self, control, test, effect_size, self.__random_seed = random_seed self.__ci = ci self.__alpha = ci2g._compute_alpha_from_ci(ci) - + self.__delta2 = delta2 + self.__first = first self.__difference = es.two_group_difference( control, test, is_paired, effect_size) - + self.__jackknives = ci2g.compute_meandiff_jackknife( control, test, is_paired, effect_size) self.__acceleration_value = ci2g._calc_accel(self.__jackknives) - bootstraps = ci2g.compute_bootstrapped_diff( + if not delta2: + bootstraps = ci2g.compute_bootstrapped_diff( control, test, is_paired, effect_size, resamples, random_seed) - self.__bootstraps = npsort(bootstraps) + self.__bootstraps = npsort(bootstraps) + else: + self.__bootstraps = npsort(self.__test-self.__control) # Added in v0.2.6. # Raises a UserWarning if there are any infiinities in the bootstraps. @@ -924,14 +946,19 @@ def __init__(self, control, test, effect_size, self.__bca_high = self.__difference warnings.warn(err_temp.substitute(lim_type="upper"), stacklevel=0) + if not self.__delta2: + # Compute percentile intervals. + pct_idx_low = int((self.__alpha/2) * resamples) + pct_idx_high = int((1-(self.__alpha/2)) * resamples) - # Compute percentile intervals. - pct_idx_low = int((self.__alpha/2) * resamples) - pct_idx_high = int((1-(self.__alpha/2)) * resamples) - - self.__pct_interval_idx = (pct_idx_low, pct_idx_high) - self.__pct_low = self.__bootstraps[pct_idx_low] - self.__pct_high = self.__bootstraps[pct_idx_high] + self.__pct_interval_idx = (pct_idx_low, pct_idx_high) + self.__pct_low = self.__bootstraps[pct_idx_low] + self.__pct_high = self.__bootstraps[pct_idx_high] + + else: + self.__pct_interval_idx = None + self.__pct_low = None + self.__pct_high = None # Perform statistical tests. @@ -1067,7 +1094,10 @@ def __repr__(self, show_resample_count=True, define_pval=True, sigfig=3): "es" : self.__EFFECT_SIZE_DICT[self.__effect_size], "paired_status": PAIRED_STATUS[str(self.__is_paired)]} - out1 = "The {paired_status} {es} {rm_status}".format(**first_line) + if self.__delta2: + out1 = "The delta-delta {es}" + else: + out1 = "The {paired_status} {es} {rm_status}".format(**first_line) base_string_fmt = "{:." + str(sigfig) + "}" if "." in str(self.__ci): @@ -1454,7 +1484,9 @@ def __init__(self, dabest, effect_size, is_paired, ci=95, proportional=False, resamples=5000, permutation_count=5000, - random_seed=12345, second=None, var2=False): + random_seed=12345, + first=None, second=None, + delta2=False, experiment=None): """ Parses the data from a Dabest object, enabling plotting and printing capability for the effect size of interest. @@ -1468,8 +1500,10 @@ def __init__(self, dabest, effect_size, self.__permutation_count = permutation_count self.__random_seed = random_seed self.__proportional = proportional + self.__first = first + self.__experiment = experiment self.__second = second - self.__var2 = var2 + self.__delta2 = delta2 def __pre_calc(self): @@ -1524,6 +1558,28 @@ def __pre_calc(self): reprs.append(text_repr) + if self.__delta2: + delta = TwoGroupsEffectSize(out[0]["bootstraps"], + out[1]["bootstraps"], + self.__effect_size, + True, + self.__ci, + self.__resamples, + self.__permutation_count, + self.__random_seed, + self.__first, + self.__delta2 + ) + r_dict = delta.to_dict() + r_dict["control"] = self.__experiment[1] + r_dict["test"] = self.__experiment[0] + r_dict["control_N"] = self.__resamples + r_dict["test_N"] = self.__resamples + out.append(r_dict) + to_replace = "between {} and {} is".format(self.__experiment[0], self.__experiment[1]) + text_repr = text_repr.replace("is", to_replace, 1) + reprs.append(text_repr) + varname = get_varname(self.__dabest_obj) lastline = "To get the results of all valid statistical tests, " +\ "use `{}.{}.statistical_tests`".format(varname, self.__effect_size) @@ -1849,7 +1905,7 @@ def plot(self, color_col=None, if hasattr(self, "results") is False: self.__pre_calc() - if self.__var2: + if self.__delta2: color_col = self.__second if self.__proportional: @@ -1934,14 +1990,24 @@ def ci(self): """ return self.__ci + @property + def first(self): + return self.__first + + @property def second(self): return self.__second @property - def var2(self): - return self.__var2 + def experiment(self): + return self.__experiment + + + @property + def delta2(self): + return self.__delta2 @property diff --git a/dabest/plotter.py b/dabest/plotter.py index 746161bc..9fa0ad88 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -64,7 +64,9 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): xvar = EffectSizeDataFrame.xvar yvar = EffectSizeDataFrame.yvar is_paired = EffectSizeDataFrame.is_paired - + delta2 = EffectSizeDataFrame.delta2 + first = EffectSizeDataFrame.first + experiment = EffectSizeDataFrame.experiment all_plot_groups = dabest_obj._all_plot_groups idx = dabest_obj.idx @@ -75,7 +77,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): # Disable Gardner-Altman plotting if any of the idxs comprise of more than - # two groups. + # two groups or if it is a delta-delta plot. float_contrast = plot_kwargs["float_contrast"] effect_size_type = EffectSizeDataFrame.effect_size if len(idx) > 1 or len(idx[0]) > 2: @@ -84,11 +86,15 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): if effect_size_type in ['cliffs_delta']: float_contrast = False + if delta2: + float_contrast = False + if not is_paired: show_pairs = False else: show_pairs = plot_kwargs["show_pairs"] + # Set default kwargs first, then merge with user-dictated ones. default_swarmplot_kwargs = {'size': plot_kwargs["raw_marker_size"]} if plot_kwargs["swarmplot_kwargs"] is None: @@ -98,7 +104,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): plot_kwargs["swarmplot_kwargs"]) - # Violinplot kwargs. default_violinplot_kwargs = {'widths':0.5, 'vert':True, 'showextrema':False, 'showmedians':False} @@ -118,8 +123,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): plot_kwargs["slopegraph_kwargs"]) - - # Zero reference-line kwargs. default_reflines_kwargs = {'linestyle':'solid', 'linewidth':0.75, 'zorder': 2, @@ -221,6 +224,9 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): fig_size = plot_kwargs["fig_size"] if fig_size is None: all_groups_count = np.sum([len(i) for i in dabest_obj.idx]) + # Increase the width for delta-delta graph + if delta2: + all_groups_count += 2 if is_paired and show_pairs is True: frac = 0.75 else: @@ -236,7 +242,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): fig_size = (width_inches, height_inches) - # Initialise the figure. # sns.set(context="talk", style='ticks') init_fig_kwargs = dict(figsize=fig_size, dpi=plot_kwargs["dpi"], @@ -308,7 +313,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_ax_ylim_tickintervals = list() rawdata_axes = axx[0] contrast_axes = axx[1] - rawdata_axes.set_frame_on(False) contrast_axes.set_frame_on(False) @@ -459,6 +463,10 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): ticks_to_plot = [t for t in range(0, len(all_plot_groups)) if t not in ticks_to_skip] + # plot one more halfviolin graph if the plot is for delta-delta + if delta2: + ticks_to_plot.append(ticks_to_plot[-1]+2) + ticks_to_skip.append(ticks_to_skip[-1]+2) # Plot the bootstraps, then the effect sizes and CIs. es_marker_size = plot_kwargs["es_marker_size"] @@ -507,17 +515,28 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): current_control)) - # Make sure the contrast_axes x-lims match the rawdata_axes xlims. - contrast_axes.set_xticks(rawdata_axes.get_xticks()) + # Make sure the contrast_axes x-lims match the rawdata_axes xlims, + # and add an extra violinplot tick for delta-delta plot. + raw_x_stick = rawdata_axes.get_xticks() + if delta2: + raw_x_stick = np.append(raw_x_stick, max(raw_x_stick)+1) + raw_x_stick = np.append(raw_x_stick, max(raw_x_stick)+1) + contrast_axes.set_xticks(raw_x_stick) + if show_pairs is True: max_x = contrast_axes.get_xlim()[1] rawdata_axes.set_xlim(-0.375, max_x) if float_contrast is True: contrast_axes.set_xlim(0.5, 1.5) + elif delta2: + temp = rawdata_axes.get_xlim() + contrast_axes.set_xlim(temp[0], temp[1]+2) + rawdata_axes.set_xlim(temp[0], temp[1]+2) else: contrast_axes.set_xlim(rawdata_axes.get_xlim()) + # Properly label the contrast ticks. for t in ticks_to_skip: contrast_xtick_labels.insert(t, "") @@ -705,7 +724,11 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_axes.axhline(y=0, **reflines_kwargs) if is_paired == "baseline" and show_pairs == True: - rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(ticks_to_skip) + if delta2: + temp_ticks_to_skip = ticks_to_skip[:-1] + else: + temp_ticks_to_skip = ticks_to_skip + rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(temp_ticks_to_skip) for ax in [rawdata_axes]: sns.despine(ax=ax, bottom=True) @@ -713,15 +736,18 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): xlim = ax.get_xlim() redraw_axes_kwargs['y'] = ylim[0] - for k, start_tick in enumerate(ticks_to_skip): + for k, start_tick in enumerate(temp_ticks_to_skip): end_tick = rightend_ticks_raw[k] ax.hlines(xmin=start_tick, xmax=end_tick, **redraw_axes_kwargs) ax.set_ylim(ylim) del redraw_axes_kwargs['y'] - - rightend_ticks_contrast = np.array([(len(i)-1)*2-1 for i in idx]) + np.array(ticks_to_skip_contrast) + + temp_length = [(len(i)-1)*2-1 for i in idx] + if delta2: + temp_length.append(1) + rightend_ticks_contrast = np.array(temp_length) + np.array(ticks_to_skip_contrast) for ax in [contrast_axes]: sns.despine(ax=ax, bottom=True) @@ -738,21 +764,58 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): del redraw_axes_kwargs['y'] else: # Compute the end of each x-axes line. - rightend_ticks = np.array([len(i)-1 for i in idx]) + np.array(ticks_to_skip) - for ax in [rawdata_axes, contrast_axes]: - sns.despine(ax=ax, bottom=True) + # Compute the end of each x-axes line. + if delta2: + temp = np.array([len(i)-1 for i in idx]) + temp = np.append(temp, 1) + rightend_ticks = np.array(temp) + np.array(ticks_to_skip) + else: + rightend_ticks = np.array([len(i)-1 for i in idx]) + np.array(ticks_to_skip) + if not delta2: + for ax in [rawdata_axes, contrast_axes]: + sns.despine(ax=ax, bottom=True) - ylim = ax.get_ylim() - xlim = ax.get_xlim() - redraw_axes_kwargs['y'] = ylim[0] + ylim = ax.get_ylim() + xlim = ax.get_xlim() + redraw_axes_kwargs['y'] = ylim[0] + + for k, start_tick in enumerate(ticks_to_skip): + end_tick = rightend_ticks[k] + ax.hlines(xmin=start_tick, xmax=end_tick, + **redraw_axes_kwargs) - for k, start_tick in enumerate(ticks_to_skip): - end_tick = rightend_ticks[k] - ax.hlines(xmin=start_tick, xmax=end_tick, + ax.set_ylim(ylim) + del redraw_axes_kwargs['y'] + else: + for ax in [rawdata_axes]: + sns.despine(ax=ax, bottom=True) + + ylim = ax.get_ylim() + xlim = ax.get_xlim() + redraw_axes_kwargs['y'] = ylim[0] + + for k, start_tick in enumerate(ticks_to_skip[:-1]): + end_tick = rightend_ticks[k] + ax.hlines(xmin=start_tick, xmax=end_tick, **redraw_axes_kwargs) - ax.set_ylim(ylim) - del redraw_axes_kwargs['y'] + ax.set_ylim(ylim) + del redraw_axes_kwargs['y'] + + for ax in [contrast_axes]: + sns.despine(ax=ax, bottom=True) + + ylim = ax.get_ylim() + xlim = ax.get_xlim() + redraw_axes_kwargs['y'] = ylim[0] + + for k, start_tick in enumerate(ticks_to_skip): + end_tick = rightend_ticks[k] + ax.hlines(xmin=start_tick, xmax=end_tick, + **redraw_axes_kwargs) + + ax.set_ylim(ylim) + del redraw_axes_kwargs['y'] From 187c3c5fe7e5ac09a667c07733223fc375b13263 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Thu, 8 Jul 2021 10:48:02 +0800 Subject: [PATCH 03/14] Adjust delta-delta plot for paired data - support plots for paired data - add a slight change to the test cases - restrict the delta-delta plots for only mean_diff --- dabest/_api.py | 5 +- dabest/_classes.py | 149 ++++++++++++------ dabest/plotter.py | 15 +- ...4_repeated_measures_effsizes_pvals copy.py | 4 +- 4 files changed, 112 insertions(+), 61 deletions(-) diff --git a/dabest/_api.py b/dabest/_api.py index 1fc6be31..efb2ee98 100644 --- a/dabest/_api.py +++ b/dabest/_api.py @@ -6,7 +6,8 @@ def load(data, idx=None, x=None, y=None, paired=None, id_col=None, ci=95, resamples=5000, random_seed=12345, proportional=False, - delta2 = False, experiment = None): + delta2 = False, experiment = None, experiment_label = None, + x1_level = None): ''' Loads data in preparation for estimation statistics. @@ -82,4 +83,4 @@ def load(data, idx=None, x=None, y=None, paired=None, id_col=None, ''' from ._classes import Dabest - return Dabest(data, idx, x, y, paired, id_col, ci, resamples, random_seed, proportional, delta2, experiment) + return Dabest(data, idx, x, y, paired, id_col, ci, resamples, random_seed, proportional, delta2, experiment, experiment_label, x1_level) diff --git a/dabest/_classes.py b/dabest/_classes.py index 13adc3b6..4a0a2835 100644 --- a/dabest/_classes.py +++ b/dabest/_classes.py @@ -9,8 +9,9 @@ class Dabest(object): Class for estimation statistics and plots. """ - def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, - random_seed, proportional, delta2, experiment): + def __init__(self, data, idx, x, y, paired, id_col, ci, + resamples, random_seed, proportional, delta2, + experiment, experiment_label, x1_level): """ Parses and stores pandas DataFrames in preparation for estimation @@ -40,21 +41,65 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, - # check if this is a 2x2 ANOVA case and x & y are valid columns: + # check if this is a 2x2 ANOVA case and x & y are valid columns + # create experiment_label and x1_level if delta2: + # idx should not be specified + if idx: + err0 = '`idx` should not be specified when `delta2` is True.'.format(len(x)) + raise ValueError(err0) + + # check if x is valid if len(x) != 2: err0 = '`delta2` is True but the number of variables indicated by `x` is {}.'.format(len(x)) raise ValueError(err0) - if any(i not in data_in.columns for i in x): - err = 'Not all of {0} is a column in `data`. Please check.'.format(x) - raise IndexError(err) - if y not in data_in.columns: + else: + for i in x: + if i not in data_in.columns: + err = '{0} is a column in `data`. Please check.'.format(i) + raise IndexError(err) + + # check if y is valid + if not y: + err0 = '`delta2` is True but `y` is not indicated.' + raise ValueError(err0) + elif y not in data_in.columns: err = '{0} is not a column in `data`. Please check.'.format(y) raise IndexError(err) + + # check if experiment is valid if experiment not in data_in.columns: err = '{0} is not a column in `data`. Please check.'.format(experiment) raise IndexError(err) + # check if experiment_label is valid and create experiment when needed + if experiment_label: + if len(experiment_label) != 2: + err0 = '`experiment_label` does not have a length of 2.' + raise ValueError(err0) + else: + for i in experiment_label: + if i not in data_in[experiment].unique(): + err = '{0} is an element in the column `{1}` of `data`. Please check.'.format(i, experiment) + raise IndexError(err) + else: + experiment_label = data_in[experiment].unique() + + # check if x1_level is valid + if x1_level: + if len(x1_level) != 2: + err0 = '`x1_level` does not have a length of 2.' + raise ValueError(err0) + else: + for i in x1_level: + if i not in data_in[x[0]].unique(): + err = '{0} is an element in the column `{1}` of `data`. Please check.'.format(i, experiment) + raise IndexError(err) + + else: + x1_level = data_in[x[0]].unique() + self.__experiment_label = experiment_label + self.__x1_level = x1_level # check if idx is specified @@ -72,26 +117,21 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, data_in[new_col_name] = data_in[x[0]].apply(lambda x: str(x)) + " " + data_in[experiment].apply(lambda x: str(x)) #create idx - experiment = data_in[experiment].unique() - x1_level = data_in[x[0]].unique() idx = [] - for i in experiment: + for i in experiment_label: temp = [] for j in x1_level: temp.append(j + " " + i) idx.append(temp) - self.__idx = idx - self.__first = x1_level - self.__experiment = experiment + self.__idx = idx + self.__x1 = x[0] + self.__x2 = x[1] # record the second variable and create idx - self.__second = x[1] - x = new_col_name - + x = new_col_name else: - self.__second = None - self.__idx = idx - self.__first = None - self.__experiment = None + self.__idx = idx + self.__x1 = None + self.__x2 = None # Determine the kind of estimation plot we need to produce. if all([isinstance(i, str) for i in idx]): @@ -256,9 +296,9 @@ def __init__(self, data, idx, x, y, paired, id_col, ci, resamples, resamples=resamples, proportional=proportional, delta2=delta2, - experiment = self.__experiment, - first = self.__first, - second=self.__second) + experiment_label=self.__experiment_label, + x1_level=self.__x1_level, + x2=self.__x2) self.__mean_diff = EffectSizeDataFrame(self, "mean_diff", **EffectSizeDataFrame_kwargs) @@ -328,7 +368,7 @@ def __repr__(self): comparisons.append("{} minus {}".format(test_name, control_name)) if self.__delta2: - comparison.append("{} minus {}".format(self.__experiment[1], self.__experiment[0])) + comparison.append("{} minus {}".format(self.__experiment_label[1], self.__experiment_label[0])) for j, g in enumerate(comparisons): out.append("{}. {}".format(j+1, g)) @@ -573,13 +613,18 @@ def idx(self): @property - def first(self): - return self.__first + def x1(self): + return self.__x1 @property - def second(self): - return self.__second + def x1_level(self): + return self.__x1_level + + + @property + def x2(self): + return self.__x2 @property @@ -587,6 +632,11 @@ def experiment(self): return self.__experiment + @property + def experiment_label(self): + return self.__experiment_label + + @property def delta2(self): return self.__delta2 @@ -705,7 +755,7 @@ def __init__(self, control, test, effect_size, resamples=5000, permutation_count=5000, random_seed=12345, - first=None, delta2=False): + delta2=False): """ Compute the effect size between two groups. @@ -870,7 +920,6 @@ def __init__(self, control, test, effect_size, self.__ci = ci self.__alpha = ci2g._compute_alpha_from_ci(ci) self.__delta2 = delta2 - self.__first = first self.__difference = es.two_group_difference( control, test, is_paired, effect_size) @@ -1485,8 +1534,8 @@ def __init__(self, dabest, effect_size, resamples=5000, permutation_count=5000, random_seed=12345, - first=None, second=None, - delta2=False, experiment=None): + x1_level=None, x2=None, + delta2=False, experiment_label=None): """ Parses the data from a Dabest object, enabling plotting and printing capability for the effect size of interest. @@ -1500,10 +1549,10 @@ def __init__(self, dabest, effect_size, self.__permutation_count = permutation_count self.__random_seed = random_seed self.__proportional = proportional - self.__first = first - self.__experiment = experiment - self.__second = second - self.__delta2 = delta2 + self.__x1_level = x1_level + self.__experiment_label = experiment_label + self.__x2 = x2 + self.__delta2 = delta2 def __pre_calc(self): @@ -1558,7 +1607,7 @@ def __pre_calc(self): reprs.append(text_repr) - if self.__delta2: + if self.__delta2 and self.__effect_size == "mean_diff": delta = TwoGroupsEffectSize(out[0]["bootstraps"], out[1]["bootstraps"], self.__effect_size, @@ -1567,19 +1616,20 @@ def __pre_calc(self): self.__resamples, self.__permutation_count, self.__random_seed, - self.__first, self.__delta2 ) r_dict = delta.to_dict() - r_dict["control"] = self.__experiment[1] - r_dict["test"] = self.__experiment[0] + r_dict["control"] = self.__experiment_label[0] + r_dict["test"] = self.__experiment_label[1] r_dict["control_N"] = self.__resamples r_dict["test_N"] = self.__resamples out.append(r_dict) - to_replace = "between {} and {} is".format(self.__experiment[0], self.__experiment[1]) + to_replace = "between {} and {} is".format(self.__experiment_label[0], self.__experiment_label[1]) text_repr = text_repr.replace("is", to_replace, 1) reprs.append(text_repr) - + else: + err0 = 'The calculation of delta-delta is not supported for {}.'.format(self.__effect_size) + raise ValueError(err0) varname = get_varname(self.__dabest_obj) lastline = "To get the results of all valid statistical tests, " +\ "use `{}.{}.statistical_tests`".format(varname, self.__effect_size) @@ -1626,7 +1676,6 @@ def __pre_calc(self): self.__results = out_.reindex(columns=columns_in_order) self.__results.dropna(axis="columns", how="all", inplace=True) - @@ -1906,7 +1955,7 @@ def plot(self, color_col=None, self.__pre_calc() if self.__delta2: - color_col = self.__second + color_col = self.__x2 if self.__proportional: raw_marker_size = 0.01 @@ -1991,18 +2040,18 @@ def ci(self): return self.__ci @property - def first(self): - return self.__first + def x1_level(self): + return self.__x1_level @property - def second(self): - return self.__second + def x2(self): + return self.__x2 @property - def experiment(self): - return self.__experiment + def experiment_label(self): + return self.__experiment_label @property diff --git a/dabest/plotter.py b/dabest/plotter.py index 9fa0ad88..45d071be 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -65,8 +65,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): yvar = EffectSizeDataFrame.yvar is_paired = EffectSizeDataFrame.is_paired delta2 = EffectSizeDataFrame.delta2 - first = EffectSizeDataFrame.first - experiment = EffectSizeDataFrame.experiment all_plot_groups = dabest_obj._all_plot_groups idx = dabest_obj.idx @@ -363,20 +361,20 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): current_pair = pivoted_plot_data else: current_pair = pivoted_plot_data[yvar] - grp_count = len(current_tuple) # Iterate through the data for the current tuple. for ID, observation in current_pair.iterrows(): x_points = [t for t in range(x_start,x_start+grp_count)] y_points = observation.tolist() - + if color_col is None: slopegraph_kwargs['color'] = ytick_color else: color_key = pivoted_plot_data[color_col, current_tuple[0]].loc[ID] - slopegraph_kwargs['color'] = plot_palette_raw[color_key] - slopegraph_kwargs['label'] = color_key + if not pd.isna(color_key): + slopegraph_kwargs['color'] = plot_palette_raw[color_key] + slopegraph_kwargs['label'] = color_key rawdata_axes.plot(x_points, y_points, **slopegraph_kwargs) x_start = x_start + grp_count @@ -454,7 +452,8 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): ticks_to_plot = np.arange(1, len(temp_all_plot_groups), 2).tolist() ticks_to_skip_contrast = np.cumsum([(len(t)-1)*2 for t in idx])[:-1].tolist() ticks_to_skip_contrast.insert(0, 0) - + if delta2: + ticks_to_skip_contrast.append(max(ticks_to_skip_contrast)+2) else: ticks_to_skip = np.cumsum([len(t) for t in idx])[:-1].tolist() ticks_to_skip.insert(0, 0) @@ -529,7 +528,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): if float_contrast is True: contrast_axes.set_xlim(0.5, 1.5) - elif delta2: + elif not is_paired and delta2: temp = rawdata_axes.get_xlim() contrast_axes.set_xlim(temp[0], temp[1]+2) rawdata_axes.set_xlim(temp[0], temp[1]+2) diff --git a/dabest/tests/test_04_repeated_measures_effsizes_pvals copy.py b/dabest/tests/test_04_repeated_measures_effsizes_pvals copy.py index 5d2cc4e7..e3c052ce 100644 --- a/dabest/tests/test_04_repeated_measures_effsizes_pvals copy.py +++ b/dabest/tests/test_04_repeated_measures_effsizes_pvals copy.py @@ -37,7 +37,9 @@ # kwargs for Dabest class init. dabest_default_kwargs = dict(x=None, y=None, ci=95, - resamples=5000, random_seed=12345, proportional=False) + resamples=5000, random_seed=12345, proportional=False, + delta2 = False, experiment=None, + experiment_label=None, x1_level=None) # example of sequential repeated measures sequential = Dabest(df, id_col = "ID", From 36f15942d35e60ef1ee7844462ff89856c99dd7d Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Thu, 8 Jul 2021 12:57:15 +0800 Subject: [PATCH 04/14] Remove the sort of delta bootstraps --- dabest/_classes.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dabest/_classes.py b/dabest/_classes.py index 4a0a2835..65dbefea 100644 --- a/dabest/_classes.py +++ b/dabest/_classes.py @@ -933,10 +933,11 @@ def __init__(self, control, test, effect_size, bootstraps = ci2g.compute_bootstrapped_diff( control, test, is_paired, effect_size, resamples, random_seed) - self.__bootstraps = npsort(bootstraps) + self.__bootstraps = bootstraps else: - self.__bootstraps = npsort(self.__test-self.__control) + self.__bootstraps = self.__test-self.__control + sorted_bootstraps = npsort(self.__bootstraps) # Added in v0.2.6. # Raises a UserWarning if there are any infiinities in the bootstraps. num_infinities = len(self.__bootstraps[isinf(self.__bootstraps)]) @@ -962,8 +963,8 @@ def __init__(self, control, test, effect_size, self.__bca_interval_idx = (bca_idx_low, bca_idx_high) if ~isnan(bca_idx_low) and ~isnan(bca_idx_high): - self.__bca_low = self.__bootstraps[bca_idx_low] - self.__bca_high = self.__bootstraps[bca_idx_high] + self.__bca_low = sorted_bootstraps[bca_idx_low] + self.__bca_high = sorted_bootstraps[bca_idx_high] err1 = "The $lim_type limit of the interval" err2 = "was in the $loc 10 values." @@ -1001,8 +1002,8 @@ def __init__(self, control, test, effect_size, pct_idx_high = int((1-(self.__alpha/2)) * resamples) self.__pct_interval_idx = (pct_idx_low, pct_idx_high) - self.__pct_low = self.__bootstraps[pct_idx_low] - self.__pct_high = self.__bootstraps[pct_idx_high] + self.__pct_low = sorted_bootstraps[pct_idx_low] + self.__pct_high = sorted_bootstraps[pct_idx_high] else: self.__pct_interval_idx = None From 42a83e96a1ae54761d11e8f184ca75f6597df7e0 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Sun, 11 Jul 2021 20:59:01 +0800 Subject: [PATCH 05/14] Separate y axis for delta-delta plot --- dabest/_classes.py | 15 ++-- dabest/plotter.py | 208 +++++++++++++++++++++++++++++---------------- 2 files changed, 143 insertions(+), 80 deletions(-) diff --git a/dabest/_classes.py b/dabest/_classes.py index 65dbefea..5b0ca8d0 100644 --- a/dabest/_classes.py +++ b/dabest/_classes.py @@ -1753,8 +1753,8 @@ def plot(self, color_col=None, raw_marker_size=6, es_marker_size=9, - swarm_label=None, barchart_label=None, contrast_label=None, - swarm_ylim=None, barchart_ylim=None, contrast_ylim=None, + swarm_label=None, barchart_label=None, contrast_label=None, delta_label=None, + swarm_ylim=None, barchart_ylim=None, contrast_ylim=None, delta_ylim=None, custom_palette=None, swarm_desat=0.5, barchart_desat=0.5, halfviolin_desat=1, halfviolin_alpha=0.8, @@ -1790,15 +1790,16 @@ def plot(self, color_col=None, es_marker_size : float, default 9 The size (in points) of the effect size points on the difference axes. - swarm_label, contrast_label : strings, default None + swarm_label, contrast_label, delta_label : strings, default None Set labels for the y-axis of the swarmplot and the contrast plot, respectively. If `swarm_label` is not specified, it defaults to "value", unless a column name was passed to `y`. If `contrast_label` is not specified, it defaults to the effect size - being plotted. - swarm_ylim, contrast_ylim : tuples, default None - The desired y-limits of the raw data (swarmplot) axes and the - difference axes respectively, as a tuple. These will be autoscaled + being plotted. If `delta_label` is not specifed, it defaults to + "delta - delta" + swarm_ylim, contrast_ylim, delta_ylim : tuples, default None + The desired y-limits of the raw data (swarmplot) axes, the + difference axes and the delta-delta axes respectively, as a tuple. These will be autoscaled to sensible values if they are not specified. custom_palette : dict, list, or matplotlib color palette, default None This keyword accepts a dictionary with {'group':'color'} pairings, diff --git a/dabest/plotter.py b/dabest/plotter.py index 45d071be..74b25374 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -14,8 +14,8 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): **plot_kwargs: color_col=None raw_marker_size=6, es_marker_size=9, - swarm_label=None, contrast_label=None, - swarm_ylim=None, contrast_ylim=None, + swarm_label=None, contrast_label=None, delta_label=None, + swarm_ylim=None, contrast_ylim=None, delta_ylim=None, custom_palette=None, swarm_desat=0.5, halfviolin_desat=1, halfviolin_alpha=0.8, float_contrast=True, @@ -298,7 +298,14 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): gridspec_kw={"width_ratios": width_ratios_ga, "wspace": 0}, **init_fig_kwargs) - + rawdata_axes = axx[0] + contrast_axes = axx[1] + elif delta2: + fig = plt.subplots(gridspec_kw={"hspace": 0.3}, + **init_fig_kwargs) + rawdata_axes = plt.subplot2grid((2,3), (0,0), colspan=3) + contrast_axes = plt.subplot2grid((2,3), (1,0), colspan=2) + delta_axes = plt.subplot2grid((2,3), (1,2)) else: fig, axx = plt.subplots(nrows=2, gridspec_kw={"hspace": 0.3}, @@ -309,11 +316,12 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_ax_ylim_low = list() contrast_ax_ylim_high = list() contrast_ax_ylim_tickintervals = list() - rawdata_axes = axx[0] - contrast_axes = axx[1] + rawdata_axes = axx[0] + contrast_axes = axx[1] rawdata_axes.set_frame_on(False) contrast_axes.set_frame_on(False) - + if delta2: + delta_axes.set_frame_on(False) redraw_axes_kwargs = {'colors' : ytick_color, 'facecolors' : ytick_color, 'lw' : 1, @@ -464,8 +472,8 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): # plot one more halfviolin graph if the plot is for delta-delta if delta2: - ticks_to_plot.append(ticks_to_plot[-1]+2) - ticks_to_skip.append(ticks_to_skip[-1]+2) + ticks_to_plot_delta = [0] + ticks_to_skip_delta = [1] # Plot the bootstraps, then the effect sizes and CIs. es_marker_size = plot_kwargs["es_marker_size"] @@ -474,7 +482,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): results = EffectSizeDataFrame.results contrast_xtick_labels = [] - + for j, tick in enumerate(ticks_to_plot): current_group = results.test[j] current_control = results.control[j] @@ -513,14 +521,52 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_xtick_labels.append("{}\nminus\n{}".format(current_group, current_control)) + # plot delta-delta violin + if delta2: + current_group = results.test[2] + current_control = results.control[2] + current_bootstrap = results.bootstraps[2] + current_effsize = results.difference[2] + current_ci_low = results.bca_low[2] + current_ci_high = results.bca_high[2] + + # Create the violinplot. + # New in v0.2.6: drop negative infinities before plotting. + v = delta_axes.violinplot(current_bootstrap[~np.isinf(current_bootstrap)], + positions=[0.5], + **violinplot_kwargs) + # Turn the violinplot into half, and color it the same as the swarmplot. + # Do this only if the color column is not specified. + # Ideally, the alpha (transparency) fo the violin plot should be + # less than one so the effect size and CIs are visible. + if bootstraps_color_by_group is True: + fc = plot_palette_contrast[current_group] + else: + fc = "grey" + + halfviolin(v, fill_color=fc, alpha=halfviolin_alpha) + + # Plot the effect size. + delta_axes.plot([0.5], current_effsize, marker='o', + color=ytick_color, + markersize=es_marker_size) + # Plot the confidence interval. + delta_axes.plot([0.5, 0.5], + [current_ci_low, current_ci_high], + linestyle="-", + color=ytick_color, + linewidth=group_summary_kwargs['lw']) + + delta_xtick_labels = "{}\nminus\n{}".format(current_group, + current_control) + # Make sure the contrast_axes x-lims match the rawdata_axes xlims, # and add an extra violinplot tick for delta-delta plot. - raw_x_stick = rawdata_axes.get_xticks() + contrast_axes.set_xticks(rawdata_axes.get_xticks()) + if delta2: - raw_x_stick = np.append(raw_x_stick, max(raw_x_stick)+1) - raw_x_stick = np.append(raw_x_stick, max(raw_x_stick)+1) - contrast_axes.set_xticks(raw_x_stick) + delta_axes.set_xticks([0,0.5]) if show_pairs is True: max_x = contrast_axes.get_xlim()[1] @@ -528,10 +574,12 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): if float_contrast is True: contrast_axes.set_xlim(0.5, 1.5) - elif not is_paired and delta2: + elif delta2: + contrast_axes.set_xlim(rawdata_axes.get_xlim()) temp = rawdata_axes.get_xlim() - contrast_axes.set_xlim(temp[0], temp[1]+2) rawdata_axes.set_xlim(temp[0], temp[1]+2) + delta_axes.set_xlim(-0.5, 1) + delta_axes.set_xticklabels(["", delta_xtick_labels]) else: contrast_axes.set_xlim(rawdata_axes.get_xlim()) @@ -711,7 +759,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_axes.set_ylim(low, high) else: contrast_axes.set_ylim(custom_contrast_ylim) - + # If 0 lies within the ylim of the contrast axes, # draw a zero reference line. contrast_axes_ylim = contrast_axes.get_ylim() @@ -722,11 +770,35 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): if contrast_ylim_low < 0 < contrast_ylim_high: contrast_axes.axhline(y=0, **reflines_kwargs) - if is_paired == "baseline" and show_pairs == True: - if delta2: - temp_ticks_to_skip = ticks_to_skip[:-1] + + if delta2 and plot_kwargs['delta_ylim'] is not None: + custom_delta_ylim = plot_kwargs['delta_ylim'] + + if len(custom_delta_ylim) != 2: + err1 = "Please check `delta_ylim` consists of " + err2 = "exactly two numbers." + raise ValueError(err1 + err2) + + if effect_size_type == "cliffs_delta": + # Ensure the ylims for a cliffs_delta plot never exceed [-1, 1]. + l = plot_kwargs['delta_ylim'][0] + h = plot_kwargs['delta_ylim'][1] + low = -1 if l < -1 else l + high = 1 if h > 1 else h + delta_axes.set_ylim(low, high) else: - temp_ticks_to_skip = ticks_to_skip + delta_axes.set_ylim(custom_delta_ylim) + + if delta2: + delta_axes_ylim = delta_axes.get_ylim() + if delta_axes_ylim[0] < delta_axes_ylim[1]: + delta_ylim_low, delta_ylim_high = delta_axes_ylim + else: + delta_ylim_high, delta_ylim_low = delta_axes_ylim + if delta_ylim_low < 0 < delta_ylim_high: + delta_axes.axhline(y=0, xmin = 0.25, xmax = 1.5, **reflines_kwargs) + + if is_paired == "baseline" and show_pairs == True: rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(temp_ticks_to_skip) for ax in [rawdata_axes]: sns.despine(ax=ax, bottom=True) @@ -744,8 +816,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): del redraw_axes_kwargs['y'] temp_length = [(len(i)-1)*2-1 for i in idx] - if delta2: - temp_length.append(1) rightend_ticks_contrast = np.array(temp_length) + np.array(ticks_to_skip_contrast) for ax in [contrast_axes]: sns.despine(ax=ax, bottom=True) @@ -763,61 +833,38 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): del redraw_axes_kwargs['y'] else: # Compute the end of each x-axes line. - # Compute the end of each x-axes line. - if delta2: - temp = np.array([len(i)-1 for i in idx]) - temp = np.append(temp, 1) - rightend_ticks = np.array(temp) + np.array(ticks_to_skip) - else: - rightend_ticks = np.array([len(i)-1 for i in idx]) + np.array(ticks_to_skip) - if not delta2: - for ax in [rawdata_axes, contrast_axes]: - sns.despine(ax=ax, bottom=True) - - ylim = ax.get_ylim() - xlim = ax.get_xlim() - redraw_axes_kwargs['y'] = ylim[0] - - for k, start_tick in enumerate(ticks_to_skip): - end_tick = rightend_ticks[k] - ax.hlines(xmin=start_tick, xmax=end_tick, - **redraw_axes_kwargs) - - ax.set_ylim(ylim) - del redraw_axes_kwargs['y'] - else: - for ax in [rawdata_axes]: - sns.despine(ax=ax, bottom=True) - - ylim = ax.get_ylim() - xlim = ax.get_xlim() - redraw_axes_kwargs['y'] = ylim[0] + rightend_ticks = np.array([len(i)-1 for i in idx]) + np.array(ticks_to_skip) + for ax in [rawdata_axes, contrast_axes]: + sns.despine(ax=ax, bottom=True) + + ylim = ax.get_ylim() + xlim = ax.get_xlim() + redraw_axes_kwargs['y'] = ylim[0] - for k, start_tick in enumerate(ticks_to_skip[:-1]): - end_tick = rightend_ticks[k] - ax.hlines(xmin=start_tick, xmax=end_tick, + for k, start_tick in enumerate(ticks_to_skip): + end_tick = rightend_ticks[k] + ax.hlines(xmin=start_tick, xmax=end_tick, **redraw_axes_kwargs) - ax.set_ylim(ylim) - del redraw_axes_kwargs['y'] - - for ax in [contrast_axes]: - sns.despine(ax=ax, bottom=True) - - ylim = ax.get_ylim() - xlim = ax.get_xlim() - redraw_axes_kwargs['y'] = ylim[0] - - for k, start_tick in enumerate(ticks_to_skip): - end_tick = rightend_ticks[k] - ax.hlines(xmin=start_tick, xmax=end_tick, - **redraw_axes_kwargs) + ax.set_ylim(ylim) + del redraw_axes_kwargs['y'] + + if delta2: + rightend_ticks = np.array([len(i)-1 for i in idx]) + np.array(ticks_to_skip) - ax.set_ylim(ylim) - del redraw_axes_kwargs['y'] - + sns.despine(ax=delta_axes, bottom=True) + ylim_contrast = contrast_axes.get_ylim() + ylim_delta = delta_axes.get_ylim() + ylim=(min(ylim_contrast[0], ylim_delta[0]), max(ylim_contrast[1], ylim_delta[1])) + xlim = delta_axes.get_xlim() + redraw_axes_kwargs['y'] = ylim[0] + delta_axes.hlines(xmin=0, xmax=0.5, **redraw_axes_kwargs) + + delta_axes.set_ylim(ylim) + contrast_axes.set_ylim(ylim) + del redraw_axes_kwargs['y'] # Set raw axes y-label. swarm_label = plot_kwargs['swarm_label'] @@ -833,7 +880,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): 'hedges_g' : "Hedges' g", 'cliffs_delta' : "Cliff's delta"} default_contrast_label = contrast_label_dict[EffectSizeDataFrame.effect_size] - + if plot_kwargs['contrast_label'] is None: if is_paired: contrast_label = "paired\n{}".format(default_contrast_label) @@ -847,6 +894,14 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): if float_contrast is True: contrast_axes.yaxis.set_label_position("right") + if delta2: + if plot_kwargs['delta_label'] is None: + delta_label = "delta - delta" + else: + delta_label = plot_kwargs['delta_label'] + delta_axes.yaxis.tick_right() + delta_axes.set_ylabel(delta_label) + delta_axes.yaxis.set_label_position("right") # Set the rawdata axes labels appropriately rawdata_axes.set_ylabel(swarm_label) @@ -873,12 +928,19 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): og_ylim_contrast[0], og_ylim_contrast[1], **redraw_axes_kwargs) - + if delta2: + og_xlim_delta = delta_axes.get_xlim() + og_ylim_delta = delta_axes.get_ylim() + delta_axes.vlines(og_xlim_delta[1], + og_ylim_delta[0], og_ylim_delta[1], + **redraw_axes_kwargs) # Make sure no stray ticks appear! rawdata_axes.xaxis.set_ticks_position('bottom') rawdata_axes.yaxis.set_ticks_position('left') contrast_axes.xaxis.set_ticks_position('bottom') + if delta2: + delta_axes.xaxis.set_ticks_position('bottom') if float_contrast is False: contrast_axes.yaxis.set_ticks_position('left') From 099138180a81bef1b4274ea5acf9e39ef2a62c65 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Sun, 11 Jul 2021 22:32:44 +0800 Subject: [PATCH 06/14] Fix a bug regarding the zero reference line --- dabest/plotter.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/dabest/plotter.py b/dabest/plotter.py index 74b25374..72ad3341 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -769,6 +769,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_ylim_high, contrast_ylim_low = contrast_axes_ylim if contrast_ylim_low < 0 < contrast_ylim_high: contrast_axes.axhline(y=0, **reflines_kwargs) + delta_axes.axhline(y=0, xmin = 0.25, xmax = 1.5, **reflines_kwargs) if delta2 and plot_kwargs['delta_ylim'] is not None: @@ -789,14 +790,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): else: delta_axes.set_ylim(custom_delta_ylim) - if delta2: - delta_axes_ylim = delta_axes.get_ylim() - if delta_axes_ylim[0] < delta_axes_ylim[1]: - delta_ylim_low, delta_ylim_high = delta_axes_ylim - else: - delta_ylim_high, delta_ylim_low = delta_axes_ylim - if delta_ylim_low < 0 < delta_ylim_high: - delta_axes.axhline(y=0, xmin = 0.25, xmax = 1.5, **reflines_kwargs) if is_paired == "baseline" and show_pairs == True: rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(temp_ticks_to_skip) From f771c6f2d21f15ccbfe24de32984883f54345337 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Sun, 11 Jul 2021 22:47:52 +0800 Subject: [PATCH 07/14] Fix the x axis bug --- dabest/plotter.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dabest/plotter.py b/dabest/plotter.py index 72ad3341..427ac396 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -789,7 +789,11 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): delta_axes.set_ylim(low, high) else: delta_axes.set_ylim(custom_delta_ylim) - + if delta2: + ylim_contrast = contrast_axes.get_ylim() + ylim_delta = delta_axes.get_ylim() + ylim=(min(ylim_contrast[0], ylim_delta[0]), max(ylim_contrast[1], ylim_delta[1])) + contrast_axes.set_ylim(ylim) if is_paired == "baseline" and show_pairs == True: rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(temp_ticks_to_skip) @@ -846,9 +850,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): rightend_ticks = np.array([len(i)-1 for i in idx]) + np.array(ticks_to_skip) sns.despine(ax=delta_axes, bottom=True) - ylim_contrast = contrast_axes.get_ylim() - ylim_delta = delta_axes.get_ylim() - ylim=(min(ylim_contrast[0], ylim_delta[0]), max(ylim_contrast[1], ylim_delta[1])) xlim = delta_axes.get_xlim() redraw_axes_kwargs['y'] = ylim[0] @@ -856,7 +857,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): delta_axes.hlines(xmin=0, xmax=0.5, **redraw_axes_kwargs) delta_axes.set_ylim(ylim) - contrast_axes.set_ylim(ylim) del redraw_axes_kwargs['y'] # Set raw axes y-label. From b2846dd879a58414b931680c8af04d8238bba626 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Mon, 12 Jul 2021 11:45:10 +0800 Subject: [PATCH 08/14] adjustment of the ylim --- dabest/plotter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dabest/plotter.py b/dabest/plotter.py index 427ac396..1b4f9673 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -794,6 +794,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): ylim_delta = delta_axes.get_ylim() ylim=(min(ylim_contrast[0], ylim_delta[0]), max(ylim_contrast[1], ylim_delta[1])) contrast_axes.set_ylim(ylim) + delta_axes.set_ylim(ylim) if is_paired == "baseline" and show_pairs == True: rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(temp_ticks_to_skip) @@ -852,6 +853,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): sns.despine(ax=delta_axes, bottom=True) xlim = delta_axes.get_xlim() + ylim = delta_axes.get_ylim() redraw_axes_kwargs['y'] = ylim[0] delta_axes.hlines(xmin=0, xmax=0.5, **redraw_axes_kwargs) From 357ea2686f00a8ebb49d36cb6f47c940be583272 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Mon, 12 Jul 2021 12:14:29 +0800 Subject: [PATCH 09/14] Update plotter.py --- dabest/plotter.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dabest/plotter.py b/dabest/plotter.py index 1b4f9673..d3588859 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -797,7 +797,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): delta_axes.set_ylim(ylim) if is_paired == "baseline" and show_pairs == True: - rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(temp_ticks_to_skip) + rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(ticks_to_skip) for ax in [rawdata_axes]: sns.despine(ax=ax, bottom=True) @@ -805,7 +805,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): xlim = ax.get_xlim() redraw_axes_kwargs['y'] = ylim[0] - for k, start_tick in enumerate(temp_ticks_to_skip): + for k, start_tick in enumerate(ticks_to_skip): end_tick = rightend_ticks_raw[k] ax.hlines(xmin=start_tick, xmax=end_tick, **redraw_axes_kwargs) @@ -814,6 +814,8 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): del redraw_axes_kwargs['y'] temp_length = [(len(i)-1)*2-1 for i in idx] + if delta2: + temp_length.append(1) rightend_ticks_contrast = np.array(temp_length) + np.array(ticks_to_skip_contrast) for ax in [contrast_axes]: sns.despine(ax=ax, bottom=True) @@ -848,8 +850,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): del redraw_axes_kwargs['y'] if delta2: - rightend_ticks = np.array([len(i)-1 for i in idx]) + np.array(ticks_to_skip) - sns.despine(ax=delta_axes, bottom=True) xlim = delta_axes.get_xlim() From 7617dfe39a5700631ac1073c5bbfb25de1ce1677 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Tue, 13 Jul 2021 10:22:46 +0800 Subject: [PATCH 10/14] Update the unit tests and fix some bugs --- dabest/_classes.py | 26 +++++++++++++++------ dabest/plotter.py | 32 ++++++++++++++++---------- dabest/tests/test_01_effsizes_pvals.py | 19 ++++++++------- dabest/tests/test_03_plotting.py | 6 ++--- 4 files changed, 53 insertions(+), 30 deletions(-) diff --git a/dabest/_classes.py b/dabest/_classes.py index 5b0ca8d0..3bae6f6f 100644 --- a/dabest/_classes.py +++ b/dabest/_classes.py @@ -368,7 +368,7 @@ def __repr__(self): comparisons.append("{} minus {}".format(test_name, control_name)) if self.__delta2: - comparison.append("{} minus {}".format(self.__experiment_label[1], self.__experiment_label[0])) + comparisons.append("{} minus {} (only for mean difference)".format(self.__experiment_label[1], self.__experiment_label[0])) for j, g in enumerate(comparisons): out.append("{}. {}".format(j+1, g)) @@ -782,6 +782,9 @@ def __init__(self, control, test, effect_size, `random_seed` is used to seed the random number generator during bootstrap resampling. This ensures that the confidence intervals reported are replicable. + delta2 : boolean, default False + Indicate if the control and test data are boostrap deltas that can be + used to calculate delta-delta. Returns @@ -1145,7 +1148,7 @@ def __repr__(self, show_resample_count=True, define_pval=True, sigfig=3): "paired_status": PAIRED_STATUS[str(self.__is_paired)]} if self.__delta2: - out1 = "The delta-delta {es}" + out1 = "The delta-delta " else: out1 = "The {paired_status} {es} {rm_status}".format(**first_line) @@ -1594,8 +1597,12 @@ def __pre_calc(self): r_dict["test_N"] = int(len(test)) out.append(r_dict) if j == len(idx)-1 and ix == len(current_tuple)-2: - resamp_count = True - def_pval = True + if not self.__delta2: + resamp_count = True + def_pval = True + else: + resamp_count = False + def_pval = False else: resamp_count = False def_pval = False @@ -1612,25 +1619,30 @@ def __pre_calc(self): delta = TwoGroupsEffectSize(out[0]["bootstraps"], out[1]["bootstraps"], self.__effect_size, - True, + "baseline", self.__ci, self.__resamples, self.__permutation_count, self.__random_seed, self.__delta2 ) + r_dict = delta.to_dict() r_dict["control"] = self.__experiment_label[0] r_dict["test"] = self.__experiment_label[1] r_dict["control_N"] = self.__resamples r_dict["test_N"] = self.__resamples out.append(r_dict) + resamp_count = True + def_pval = True + text_repr = delta.__repr__(show_resample_count=resamp_count, + define_pval=def_pval) to_replace = "between {} and {} is".format(self.__experiment_label[0], self.__experiment_label[1]) text_repr = text_repr.replace("is", to_replace, 1) reprs.append(text_repr) else: - err0 = 'The calculation of delta-delta is not supported for {}.'.format(self.__effect_size) - raise ValueError(err0) + self.__delta2 = False + varname = get_varname(self.__dabest_obj) lastline = "To get the results of all valid statistical tests, " +\ "use `{}.{}.statistical_tests`".format(varname, self.__effect_size) diff --git a/dabest/plotter.py b/dabest/plotter.py index d3588859..fd795efb 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -59,16 +59,19 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): ytick_color = plt.rcParams["ytick.color"] axes_facecolor = plt.rcParams['axes.facecolor'] - dabest_obj = EffectSizeDataFrame.dabest_obj - plot_data = EffectSizeDataFrame._plot_data - xvar = EffectSizeDataFrame.xvar - yvar = EffectSizeDataFrame.yvar - is_paired = EffectSizeDataFrame.is_paired - delta2 = EffectSizeDataFrame.delta2 + dabest_obj = EffectSizeDataFrame.dabest_obj + plot_data = EffectSizeDataFrame._plot_data + xvar = EffectSizeDataFrame.xvar + yvar = EffectSizeDataFrame.yvar + is_paired = EffectSizeDataFrame.is_paired + delta2 = EffectSizeDataFrame.delta2 + effect_size = EffectSizeDataFrame.effect_size all_plot_groups = dabest_obj._all_plot_groups idx = dabest_obj.idx + if effect_size != "mean_diff": + delta2 = False @@ -93,6 +96,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): show_pairs = plot_kwargs["show_pairs"] + # Set default kwargs first, then merge with user-dictated ones. default_swarmplot_kwargs = {'size': plot_kwargs["raw_marker_size"]} if plot_kwargs["swarmplot_kwargs"] is None: @@ -102,6 +106,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): plot_kwargs["swarmplot_kwargs"]) + # Violinplot kwargs. default_violinplot_kwargs = {'widths':0.5, 'vert':True, 'showextrema':False, 'showmedians':False} @@ -112,6 +117,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): plot_kwargs["violinplot_kwargs"]) + # slopegraph kwargs. default_slopegraph_kwargs = {'lw':1, 'alpha':0.5} if plot_kwargs["slopegraph_kwargs"] is None: @@ -121,6 +127,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): plot_kwargs["slopegraph_kwargs"]) + # Zero reference-line kwargs. default_reflines_kwargs = {'linestyle':'solid', 'linewidth':0.75, 'zorder': 2, @@ -218,6 +225,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): plot_palette_contrast = dict(zip(names, contrast_colors)) + # Infer the figsize. fig_size = plot_kwargs["fig_size"] if fig_size is None: @@ -322,6 +330,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_axes.set_frame_on(False) if delta2: delta_axes.set_frame_on(False) + redraw_axes_kwargs = {'colors' : ytick_color, 'facecolors' : ytick_color, 'lw' : 1, @@ -460,8 +469,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): ticks_to_plot = np.arange(1, len(temp_all_plot_groups), 2).tolist() ticks_to_skip_contrast = np.cumsum([(len(t)-1)*2 for t in idx])[:-1].tolist() ticks_to_skip_contrast.insert(0, 0) - if delta2: - ticks_to_skip_contrast.append(max(ticks_to_skip_contrast)+2) else: ticks_to_skip = np.cumsum([len(t) for t in idx])[:-1].tolist() ticks_to_skip.insert(0, 0) @@ -575,6 +582,8 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): if float_contrast is True: contrast_axes.set_xlim(0.5, 1.5) elif delta2: + # Increase the xlim of raw data by 2; set xlim and label xlim + # of the delta-delta plot. contrast_axes.set_xlim(rawdata_axes.get_xlim()) temp = rawdata_axes.get_xlim() rawdata_axes.set_xlim(temp[0], temp[1]+2) @@ -769,7 +778,8 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): contrast_ylim_high, contrast_ylim_low = contrast_axes_ylim if contrast_ylim_low < 0 < contrast_ylim_high: contrast_axes.axhline(y=0, **reflines_kwargs) - delta_axes.axhline(y=0, xmin = 0.25, xmax = 1.5, **reflines_kwargs) + if delta2: + delta_axes.axhline(y=0, xmin = 0.25, xmax = 1.5, **reflines_kwargs) if delta2 and plot_kwargs['delta_ylim'] is not None: @@ -789,7 +799,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): delta_axes.set_ylim(low, high) else: delta_axes.set_ylim(custom_delta_ylim) - if delta2: + if delta2 and plot_kwargs['delta_ylim'] is None and plot_kwargs['contrast_ylim'] is None: ylim_contrast = contrast_axes.get_ylim() ylim_delta = delta_axes.get_ylim() ylim=(min(ylim_contrast[0], ylim_delta[0]), max(ylim_contrast[1], ylim_delta[1])) @@ -814,8 +824,6 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): del redraw_axes_kwargs['y'] temp_length = [(len(i)-1)*2-1 for i in idx] - if delta2: - temp_length.append(1) rightend_ticks_contrast = np.array(temp_length) + np.array(ticks_to_skip_contrast) for ax in [contrast_axes]: sns.despine(ax=ax, bottom=True) diff --git a/dabest/tests/test_01_effsizes_pvals.py b/dabest/tests/test_01_effsizes_pvals.py index 3b2fba7d..6d2561a3 100644 --- a/dabest/tests/test_01_effsizes_pvals.py +++ b/dabest/tests/test_01_effsizes_pvals.py @@ -55,7 +55,10 @@ # kwargs for Dabest class init. dabest_default_kwargs = dict(x=None, y=None, ci=95, - resamples=5000, random_seed=12345) + resamples=5000, random_seed=12345, + proportional=False, delta2=False, experiment=None, + experiment_label=None, x1_level=None + ) @@ -79,7 +82,7 @@ def test_mean_diff_paired(): from numpy import mean as npmean mean_diff = effsize.func_difference(paired_wellbeing.pre, paired_wellbeing.post, - npmean, is_paired=True) + npmean, is_paired="baseline") assert mean_diff == pytest.approx(4.10) @@ -88,7 +91,7 @@ def test_median_diff_paired(): from numpy import median as npmedian median_diff = effsize.func_difference(paired_wellbeing.pre, paired_wellbeing.post, - npmedian, is_paired=True) + npmedian, is_paired="baseline") assert median_diff == pytest.approx(4.5) @@ -112,7 +115,7 @@ def test_hedges_g_unpaired(): def test_cohens_d_paired(): import numpy as np cohens_d = effsize.cohens_d(paired_wellbeing.pre, paired_wellbeing.post, - is_paired=True) + is_paired="baseline") assert np.round(cohens_d, 2) == pytest.approx(0.34) @@ -120,7 +123,7 @@ def test_cohens_d_paired(): def test_hedges_g_paired(): import numpy as np hedges_g = effsize.hedges_g(paired_wellbeing.pre, paired_wellbeing.post, - is_paired=True) + is_paired="baseline") assert np.round(hedges_g, 2) == pytest.approx(0.33) @@ -155,7 +158,7 @@ def test_paired_stats(): before = paired_wellbeing.pre after = paired_wellbeing.post - paired_es = TwoGroupsEffectSize(before, after, "mean_diff", is_paired=True) + paired_es = TwoGroupsEffectSize(before, after, "mean_diff", is_paired="baseline") p1 = sp.stats.ttest_rel(before, after, nan_policy='omit').pvalue assert paired_es.pvalue_paired_students_t == pytest.approx(p1) @@ -197,7 +200,7 @@ def test_paired_permutation_test(): perm_test = PermutationTest(paired_wellbeing.pre, paired_wellbeing.post, effect_size="mean_diff", - is_paired=True) + is_paired="baseline") assert perm_test.pvalue == pytest.approx(0.0124) @@ -223,7 +226,7 @@ def test_lqrt_unpaired(): def test_lqrt_paired(): paired_dabest = Dabest(paired_wellbeing, idx=("pre", "post"), - paired=True, id_col="ID", + paired="baseline", id_col="ID", **dabest_default_kwargs) lqrt_result = paired_dabest.mean_diff.lqrt diff --git a/dabest/tests/test_03_plotting.py b/dabest/tests/test_03_plotting.py index 78511321..818d8f86 100644 --- a/dabest/tests/test_03_plotting.py +++ b/dabest/tests/test_03_plotting.py @@ -25,7 +25,7 @@ two_groups_unpaired = load(df, idx=("Control 1", "Test 1")) two_groups_paired = load(df, idx=("Control 1", "Test 1"), - paired=True, id_col="ID") + paired="baseline", id_col="ID") multi_2group = load(df, idx=(("Control 1", "Test 1",), ("Control 2", "Test 2")) @@ -34,7 +34,7 @@ multi_2group_paired = load(df, idx=(("Control 1", "Test 1"), ("Control 2", "Test 2")), - paired=True, id_col="ID") + paired="baseline", id_col="ID") shared_control = load(df, idx=("Control 1", "Test 1", "Test 2", "Test 3", @@ -137,7 +137,7 @@ def test_11_inset_plots(): iris_dabest3 = load(data=iris_melt[iris_melt.species=="setosa"], x="metric", y="value", idx=("sepal_length", "sepal_width"), - paired=True, id_col="index") + paired="baseline", id_col="index") From 07ff91bd36b6d89172ff9dcb8ece84481669f283 Mon Sep 17 00:00:00 2001 From: LI-Yixuan <425594121@qq.com> Date: Fri, 16 Jul 2021 16:10:17 +0800 Subject: [PATCH 11/14] tests added & bugs fixed --- dabest/_classes.py | 30 ++++++++--- dabest/plotter.py | 33 ++++-------- ...cummings_unpaired_delta_delta_meandiff.png | Bin 0 -> 53599 bytes ...mmings_sequential_delta_delta_meandiff.png | Bin 0 -> 38694 bytes ...cummings_baseline_delta_delta_meandiff.png | Bin 0 -> 38694 bytes .../test_50_delta_plot_ylabel.png | Bin 0 -> 40620 bytes .../test_51_delta_plot_change_palette_a.png | Bin 0 -> 38815 bytes .../test_52_delta_dot_sizes.png | Bin 0 -> 27251 bytes .../test_53_delta_change_ylims.png | Bin 0 -> 38748 bytes .../test_54_delta_invert_ylim.png | Bin 0 -> 40283 bytes .../test_55_delta_median_diff.png | Bin 0 -> 30323 bytes .../test_56_delta_cohens_d.png | Bin 0 -> 42594 bytes dabest/tests/utils.py | 47 ++++++++++++++++++ 13 files changed, 79 insertions(+), 31 deletions(-) create mode 100644 dabest/tests/baseline_images/test_47_cummings_unpaired_delta_delta_meandiff.png create mode 100644 dabest/tests/baseline_images/test_48_cummings_sequential_delta_delta_meandiff.png create mode 100644 dabest/tests/baseline_images/test_49_cummings_baseline_delta_delta_meandiff.png create mode 100644 dabest/tests/baseline_images/test_50_delta_plot_ylabel.png create mode 100644 dabest/tests/baseline_images/test_51_delta_plot_change_palette_a.png create mode 100644 dabest/tests/baseline_images/test_52_delta_dot_sizes.png create mode 100644 dabest/tests/baseline_images/test_53_delta_change_ylims.png create mode 100644 dabest/tests/baseline_images/test_54_delta_invert_ylim.png create mode 100644 dabest/tests/baseline_images/test_55_delta_median_diff.png create mode 100644 dabest/tests/baseline_images/test_56_delta_cohens_d.png diff --git a/dabest/_classes.py b/dabest/_classes.py index 3bae6f6f..1ebb59cc 100644 --- a/dabest/_classes.py +++ b/dabest/_classes.py @@ -922,7 +922,7 @@ def __init__(self, control, test, effect_size, self.__random_seed = random_seed self.__ci = ci self.__alpha = ci2g._compute_alpha_from_ci(ci) - self.__delta2 = delta2 + self.__delta2 = delta2 self.__difference = es.two_group_difference( control, test, is_paired, effect_size) @@ -1187,7 +1187,9 @@ def __repr__(self, show_resample_count=True, define_pval=True, sigfig=3): # pval_rounded) - pvalue = "The p-value of the two-sided permutation t-test is {}. ".format(pval_rounded) + p1 = "The p-value of the two-sided permutation t-test is {}, ".format(pval_rounded) + p2 = "calculated for legacy purposes only. " + pvalue = p1 + p2 bs1 = "{} bootstrap samples were taken; ".format(self.__resamples) bs2 = "the confidence interval is bias-corrected and accelerated." @@ -1224,6 +1226,9 @@ def to_dict(self): return out + @property + def delta2(self): + return self.__delta2 @property @@ -1590,7 +1595,6 @@ def __pre_calc(self): self.__permutation_count, self.__random_seed) r_dict = result.to_dict() - r_dict["control"] = cname r_dict["test"] = tname r_dict["control_N"] = int(len(control)) @@ -1606,7 +1610,7 @@ def __pre_calc(self): else: resamp_count = False def_pval = False - + text_repr = result.__repr__(show_resample_count=resamp_count, define_pval=def_pval) @@ -1710,6 +1714,7 @@ def __calc_lqrt(self): dat = db_obj._plot_data xvar = db_obj._xvar yvar = db_obj._yvar + delta2 = self.__delta2 out = [] @@ -1757,7 +1762,18 @@ def __calc_lqrt(self): "pvalue_lqrt_unequal_var" : lqrt_unequal_var_result.pvalue, "statistic_lqrt_unequal_var" : lqrt_unequal_var_result.statistic, }) - + if delta2: + lqrt_result = lqrt.lqrtest_rel(self.results["bootstraps"][0], + self.results["bootstraps"][1], + random_state=rnd_seed) + + out.append({"control": self.__experiment_label[0], + "test": self.__experiment_label[1], + "control_N": self.__resamples, + "test_N": self.__resamples, + "pvalue_paired_lqrt": lqrt_result.pvalue, + "statistic_paired_lqrt": lqrt_result.statistic + }) self.__lqrt_results = pd.DataFrame(out) @@ -1766,7 +1782,7 @@ def plot(self, color_col=None, raw_marker_size=6, es_marker_size=9, swarm_label=None, barchart_label=None, contrast_label=None, delta_label=None, - swarm_ylim=None, barchart_ylim=None, contrast_ylim=None, delta_ylim=None, + swarm_ylim=None, barchart_ylim=None, contrast_ylim=None, custom_palette=None, swarm_desat=0.5, barchart_desat=0.5, halfviolin_desat=1, halfviolin_alpha=0.8, @@ -1809,7 +1825,7 @@ def plot(self, color_col=None, `contrast_label` is not specified, it defaults to the effect size being plotted. If `delta_label` is not specifed, it defaults to "delta - delta" - swarm_ylim, contrast_ylim, delta_ylim : tuples, default None + swarm_ylim, contrast_ylim : tuples, default None The desired y-limits of the raw data (swarmplot) axes, the difference axes and the delta-delta axes respectively, as a tuple. These will be autoscaled to sensible values if they are not specified. diff --git a/dabest/plotter.py b/dabest/plotter.py index fd795efb..3ab0a726 100644 --- a/dabest/plotter.py +++ b/dabest/plotter.py @@ -15,7 +15,7 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): color_col=None raw_marker_size=6, es_marker_size=9, swarm_label=None, contrast_label=None, delta_label=None, - swarm_ylim=None, contrast_ylim=None, delta_ylim=None, + swarm_ylim=None, contrast_ylim=None, custom_palette=None, swarm_desat=0.5, halfviolin_desat=1, halfviolin_alpha=0.8, float_contrast=True, @@ -781,30 +781,15 @@ def EffectSizeDataFramePlotter(EffectSizeDataFrame, **plot_kwargs): if delta2: delta_axes.axhline(y=0, xmin = 0.25, xmax = 1.5, **reflines_kwargs) - - if delta2 and plot_kwargs['delta_ylim'] is not None: - custom_delta_ylim = plot_kwargs['delta_ylim'] - - if len(custom_delta_ylim) != 2: - err1 = "Please check `delta_ylim` consists of " - err2 = "exactly two numbers." - raise ValueError(err1 + err2) - - if effect_size_type == "cliffs_delta": - # Ensure the ylims for a cliffs_delta plot never exceed [-1, 1]. - l = plot_kwargs['delta_ylim'][0] - h = plot_kwargs['delta_ylim'][1] - low = -1 if l < -1 else l - high = 1 if h > 1 else h - delta_axes.set_ylim(low, high) + if delta2: + if plot_kwargs['contrast_ylim'] is None: + ylim_contrast = contrast_axes.get_ylim() + ylim_delta = delta_axes.get_ylim() + ylim=(min(ylim_contrast[0], ylim_delta[0]), max(ylim_contrast[1], ylim_delta[1])) + contrast_axes.set_ylim(ylim) + delta_axes.set_ylim(ylim) else: - delta_axes.set_ylim(custom_delta_ylim) - if delta2 and plot_kwargs['delta_ylim'] is None and plot_kwargs['contrast_ylim'] is None: - ylim_contrast = contrast_axes.get_ylim() - ylim_delta = delta_axes.get_ylim() - ylim=(min(ylim_contrast[0], ylim_delta[0]), max(ylim_contrast[1], ylim_delta[1])) - contrast_axes.set_ylim(ylim) - delta_axes.set_ylim(ylim) + delta_axes.set_ylim(contrast_axes.get_ylim()) if is_paired == "baseline" and show_pairs == True: rightend_ticks_raw = np.array([len(i)-1 for i in temp_idx]) + np.array(ticks_to_skip) diff --git a/dabest/tests/baseline_images/test_47_cummings_unpaired_delta_delta_meandiff.png b/dabest/tests/baseline_images/test_47_cummings_unpaired_delta_delta_meandiff.png new file mode 100644 index 0000000000000000000000000000000000000000..10eea42b2844f2d817332ece301e7c45d766eb95 GIT binary patch literal 53599 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

}f$WOJlOu4DOD&Ze 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 literal 0 HcmV?d00001 diff --git a/dabest/tests/baseline_images/test_48_cummings_sequential_delta_delta_meandiff.png b/dabest/tests/baseline_images/test_48_cummings_sequential_delta_delta_meandiff.png new file mode 100644 index 0000000000000000000000000000000000000000..039e03102360652157d2861159900b50b55ca71f GIT binary patch literal 38694 zcmbSzi93{U*tW6nLdagSBsT`jj?ABWyv;X zVk+AV$s@yjx8M7I-yiTf4hMBi&vP%=eO~8vp4VOS4YO-(%mU0*R8(w6hWa4%_8x>y6CeMGSpTCgskA4i*j%LJ99r1@y;~M2ym~bH>DBbwCXc~M zp8E2blY2LK#p5asw^T3wRDDAAYvteoAD&>M*3f1-x?V6F1{clP`8--+saIeUthXaq zTBk`k!3n;M29rL}9RHTNY{2v~34DoP|Ns8!o>nk>OGSHn_~lFCRPd;^tt~ zhOx|D&O-H4ejz!@xmCg$Nrol=eXdd68RO{5ASQOx@c2_SDQ!J_bRtR0<1ruboSf1X zU^od5C+H_*74u7ih1h&-oOS%JeUDBuJXC5(8(F6edp8xxsWnWGyqz8%Rc`PnDS14b zHBkwl9xf^{z5e^?x}t$N+X0m*Q`g0g*z+giqG2jgQspKW)Hg!)E719~Q%M-OmOEKcAjvEum&-?!soC z~$8XTSP|6p}dUlTclTcizHx_%ERU}Q>Vx*r=wS^`s z9uo`pZsIO4uK(go;qK=}fq^4$8KCzC#Y;;X!*-T2(qf*4Oh}QXl>K`jUwo|#wf(#h zy?BmW&RA0@^Cj2VqE7`K+bF#c&8AXAAnBWyHO{zagKC}yZ7o@^gqoMc$h-d)A;tu5 zZrrE7!PlBpaULuhYz%9!B)1Xzdq$5`8d4o*R!9*YOA!^ddBA$V^JL~DMQ%t4gBO{u7=k;EY z2dVmtSc>dZ57Zy9yeuf@R!IG-`q`hMaP|{P*?8>PtnHPPWrmYUYnpngc1i~gf@t>A z-1w83314!UUKVV`A`I?gc=U(8WlmH3^s1{;)QM+R4(^S_p7hjHiB9{evh!}XSE7iW zN+d(s!pgNwUq9jcq(r`Z6FX5G%Ze? bHe`#FM+-nKkmic%)u;gxIEGY(>(Aw=X?AgGN6Q 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 bHe`#FM+-nKkmic%)u;gxIEGY(>(Aw=X?AgGN6Q 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 literal 0 HcmV?d00001 diff --git a/dabest/tests/baseline_images/test_51_delta_plot_change_palette_a.png b/dabest/tests/baseline_images/test_51_delta_plot_change_palette_a.png new file mode 100644 index 0000000000000000000000000000000000000000..5b6e1fad561b6333f13e8efa68a0e8a0132c85dc GIT binary patch literal 38815 zcmbTec{tSX8$W8S$reKPQpisBbv~7SNeEd-WXaChjX}y9vXiY42~n~$GYH9+Eo2*H z-)6Fn49?^GJJ&gXoqtZ(mngwcn9TxDz+Z}f8jt- zm4dRFWX07hjNngPUu+54#dj$S8q}q+;LkVR|KEQ*W#mjfl2)GYFBRZU0GImy@Zocd zFq6o`HN%TLJTd(LedW?vZSKD4Ch954hTsvO*w{ZN&xQDm=jq8GfS(%aQ1S7N=z)uC z=l_Uq^1;|*RM)T9@vR4`tA_}+Uu7(Zosdw@7OPPd|bmA6wtoBV8`rovL zulS!C1x_x+s~qy#QPd>E#ltTR+{9!!Igt!D@j|kvZs1?8gGHv?$f7r{cIuoN#oV2e zJaSReuF_R1Rgz{765=kg)m6HZLMcU0aO#jEGDxlkxk=~V8}pqKY$Cpff0|UUbKfXn zN-62@Xz18}Y(LAkaT45{xR+f<9e}|$TAW`is@|uteg)YQe0gjNr>UQln7Swtt4tp1e^kuf&%9Xj~-R|$7Gt1a03h< z_FV}X<1@(woWu3Bq$dvtn}VGJm~kx9Ej4JL?D10YK&f&x1U?kY-sh+H%Wa0gyq1ob z9=+=t+_4ZVlkRdDpep9#P47+RU7eGkT>b0wWf-5QAXW`mcPG*Sza$3AFR(-~DirNSXY!91Sf&1+`LC%$5PY%Ak*6>e@({_LlwnZD> zMk`^YR>@Y)m(J*>pFeY2)#&3pb$Pu+FIRg~#yhK~OpArhNCC5Q3~Zof7=WQ=+|;L*ag}Fef=tTzFxO zTm_sHOJW=oBfBtNmff4F5KMKX1Z0=qmoP<${IsgHTHrl+%0=MERh!bAlq`V#Pr&Sb zV5zOvbq zB=v@tpU;?$L%3b0c8DaDY?USWM=6Fg?657ekgM(q^yr#{6LW~X9ij;zFZ0IlbqFLo z!BPtHJ-SIOQVhSWsjj}E*?BA5sh%Gfj(IlN#Lu7iy8%~wP>Y@j#yoHJ2oUm#zf>Dh zPWZH-DbF0l8KeXLO^G zNV2mVxUXvA_!9ZJOIAoFNMdAsMV#dN4cZNZHij>2@fmw@l+&+>VLZbQZ7!=&BPJ9Z zzF-tpG5D}UZi<=BJdwuKXt<|P&DW#PIpZeF;VG6GKPqhDV088>j0Qj97d zq2N2iL^|}=XzSW;_7sKFVMXhxIAy(DEpPVJpwnS6LTYW7;neW@$V2cDBX6s+L9p|n zMgKrY?z(D#SdC4ue8SYvXFyTE5r)kR5N{yH*|2R9dB%+oH8ZGPbl$^9IX zIHUQ67nyg|b^(6}z5Q~swdc~cio^C&UfEOIP672fiPE)n{ag2>Lx1$M=1e6x9Xd$o zUh6sKEKfj)4L05Xr=nJjk!pa1(iv&wzB^ zTp^n$+VI)U%`NkCrgM2nEvv5r$?Q_wNg4^BK2{-2LI$IU{Lo~<7lp4|FVIW;`~T2uP?73SwLYOTCyaCLPOZ^kQ+)L5Z2$n4 zhg`TjAd9CK=Hhc2ME@+UUzeTKb>O?B-fWpmdo9cRT7sogDCH@)i<1eCITbw)FzjKv zHR~P5pz4u7OaR`s>H6Hd+#&T81qL#2H>Rm4Nq#DLrTo70f1@AL_pe>)l3M^Y13lV5 zN7=2(pqvLkpIbc^A~Xr)XT*HeQR6c{DWI@@l09@g8Cjo$nE|274~j|2&Vk4K83ri% zDgd`L=HVYv;a$mH{oj1x{Mnt>@Sm)G?vg1be+F*PGffIixqNihv!lTd0@zAvmZK`P z-bqJ;_{f8M($^@2qjRblh;#%Jg(kGp{Cnf)imzm;Jfwt*_8sON^^Gw;;^d*FB970nTZS-RCRL-U39avjo?MrUWIo5Jt5rDJb|2O zmFHPE3_KDux4@vby?CcVV$MkGcqy@{${_}zB9(|YVnAZLv~$V@$jyve7XGa(or z7Yl91xD@z~?COkpK73kfRa1HOSK#3GZr%wB?wJDj%!CjAn_4jo3FptId#k(^L`RT5 zyYGH}m!7TM(U7cq!AdG7;S^_MZpmt_9!&>6R0KYBZ4Hv-O8+~0Pv4ro`>&-`nPaE* ztf4L70mGHHtiE`=o`l#j8vg9WWdUM#ydgNCv{X8c5_dyLwX}+*lrwg7_!)RGcC&Ol zxz}KeSa4bh#pfouQT6^z^g1O^gR8Qq!SkEx^q727>$^8-sKCXT@>rMlz(aC!qME7!WG?i$V1PdUyVpc3z;sQ6LQWm*md?hhO} zPT*iFzDc%5kwu(_-GE7n^l>)5@kbvKKH2-!P7W;;LG;jdXWx&aJ(0n&y-(xrhc=3^I+X)qmo4$1Q%%l$xh`{i|_8)xv_?l z=aH}t1N9Q8+wJb&V5Rn8r9zmvi~n#-_ooxtXzdfvy^M49!wXIt??n|3|{#%9s(Ur$a?Do3hG)&%~^ zYM9P{DXa$; zTSB&OIQQlC(fg>e)H~Hu^a>1E0r6*gDvEN;SDF33ZIK1`7DA(6S@)wx z&s2Yh)8kYTy|sdoH$@D@@7nz7v;}7=gQG>g4Kae<29P2j35B#^``*TmwYGlFRtBti ztYm53fz6JIpVch6dEAgvE$RGuBT4rAx;~APOJSTbhh$FJn5&7s)8}r)YXedEMl0GWm|IQCU@D={ z$d37ci-ttqMbRM4Csg1vL<2~75_H+~<6*9cVs>!sJYFns!jz-ZDaG6(wf6f7fY(FP z2PDWT?ts?E9l@LnY5mTT^KK)_W6dB8nW4;o%K*>TeD34^>RjWz%<~;cfBElcc6Ld=Q zbS@NfB;p|YTZ;bp(xNo>jQF$oj4!XwxD7T{E3MZ14<-f-R_*3Z&nq5{}0cPtk zNr7rWZYNLqnDq|liYVs_J-J%UZqde8nzr0hU;NCY?H~>H#S-$`c7TBr3s!;jUi80p z#qLYe1aS}mOv&-@Osd--UXkR5@<>ykESQhnZWMhg*PlqCmdMK%CWutUGyE+mq?LgL zrkiBjsNd4jmE;^9z_{pcslBrNubOnO$M9cyP-c#H-Tt#K(SWA0$LcoIC)li))^7IJ zV;@6UYv^z-ey^Jq-#`j?wTW-fiku5U3A_yIPpiI;b{CsD8V3Q0Y?4F63@t>Dxb_et(g$2W-} zmn#{vUiL>f>0nmzeP2)68wI#aGLPVAw00)ge}1oxbtD{AF2 z@Jlq&-F9VT7d8@E*~VyndGhJw?x>5!_Z&>#+`n89Gu*J}E?lV0<9_|=ub`9YezJqe~=M+pN)HV%}~z&3vvdh2Kt`+ z5u*`Vc>Y*h?mxsRoP)gAC)ad7KGRYV0{);3k{*#zT@Ws&NU1j;{am?$^h;_%$!s!9qt=A zDaC+B9Uo$DeAeJ+sy>Ni_+TvJ^eDtd8Ox5yA~^kL4g?EvU(sbF%)LjM+Un5|{_J}I zE3VD|xKj)YSZlwV3K@}Gp%HwqI7m=md<~8*Gy^c9#lAr9*xjUEeX4Tj1Vt&J9<-Y~ zHa?5!h4S(F-={9!Z)QOM4Aa?6Kk`w=DWKF=UZ=lc6dDc#{l<1Yx4BC`ZF+6vky{k*&q2U_mnrzKRpz zq*JCO1Fw1uV{wkJJ#Q}=Q$aRK8q%3#VzsMWv&osEsC8&WSkd+_2C$UP>#N(B^arL3 z%AH>8Y|<;QEI|>ufE|BnxdNVFk-#vpvhvm=E4za^uCFb9Dn5q}zDZWtnRT^Us(CO9 zz$r3rB8PN~VWt3GQWE>!`==yzDSXFrb;f_NsjPT=n$Uh0#d0ki^dcd1W)RF$hNrecN7rA-G{eXR+a<3jj1;`l{Hyw zLg9X`r~VC4d~EHcG``w9b>;yEqL1~%dc0*0qK3U$%K`0HZ91oO=S)3ejxmFuDdkD| zJ0>7`4D_p!WRkLx2`aDh?5^S_B5ETHNy++XDwtj*$d+*LzpgCGi} z{r*29Wd%+v69i7R>A=Z45`J~6Qn_}$5?DlV%r6EB;wt=J|097t3S-uFkL(xG+vhtw z&x!qBGwQ;7Xb6$U%`QSI#N}(BFOdN*rnoBZGdR1Ox9KyOPex=ROx)e^;iA;8M&0;_7wI6-{trKA2vD_*P+A)R=PEU``zD;al_#xl_e!*IxcF z^Cm#h<(xL;$mULcbrD?&hs2PelM2w7eq=@o4}`P}iZCH4&}&ATXb&?d6wZ*w0N zi&?@t?7otum)A)`PHLP{c&T)xnw&Ss>5W>vIWwrIYzCd)xk!%6;3^qM6!!goI2 zNN5b0i7HgI>Q!3C#7K{Y$9O6JD&Z|>IU?C4V<&!Vg#jTf?9?xuH^K`q`fQwscD?l{0B9}}iC$pF#rGI$cFmk$awp?5T0bZ`1B~Dda07F>e$)Mz{H2d+T}Vr@Y5nv2 z@@jY97@_37y~h4pY^j!#DP#MXsy?W=GN%0g1@`ulz?+i2Ti%aAIetJp5qi1GT;O7!{yC^bpPXpuai3B!KQ~rq!4^^yXG9ok;Bi~Zin>)&D_TL zxzPJY#`&~mNP=ZJ zOTQK2F7fORgza*RQB55Yj0o>!88Q^2eR&a05*K+J4Rqr8Ux4~W71H|H0Rkfwy{Sl4 zk8c<*DU1eXYzV@(fOg>`{i>Pf{!!R6!9Aic1{3#wX9@JZ>C`FvCHixZC*Fp3IgOG{(*k|(#@(|uKFTVKJ-R5Fhqf_lu> z2yp=%IUxD}T-w!CN&A#+jl`BpEsYLd2Kts4y4Cq~aOI^e1Q&%hU_}fJS9+Kb4W}p& zG`3$u1#p*P(WWA;5#!{!&7 z;*7*S&TC+%Aum-E@EAVMl_b&!6a^H>OnPH4R-X-MLfxBsGU;vM5w7WG2oVr97avyJ1daJ%pB zFE!f%Fd%ItozFNf2c=G1Z$jGx;CI*hb$>B$p&D^y>G3U>YOB5Wl@g| z+4-OEbQr2BGpz|dvG^W_)0j2|B!(lCNngkc6laJe=VY0pi%7F$dFRr@+=!Vf@87SDY5D#OJ%Su7|wKyH;%0uR(Zs-H;9b z;8El073`VIVrs1ReULpF%`_l;@Jh?appj$4EvXy<;_md#-=>^BmyCBPx`{4c^#*r| z8GsZ~L{ZZv1t7>hh;=nM6kj4dBW9&4N5V|+geo`hJSM)V4@*$lzCzp`M`wk?fGhVO z$n{&6WkgEit=PwXKd@Qbp(F~QKz^#Mxaoa4qZB27AmmR`_2`r2%IJ^NsJ>O|J}p~E*B zM0x^22YLbscxZQ6n2x5*gTKNEw}qZ~MPTQYF6muKq(TC3tnr`yqcabkNCxz(=91A3QoxiOblQT8Z#4FPeHIK6C@a+C_BtS5=r)$v5DBt;!soOT zvQ>o&#!PE$$_zvi~S70lj9ojo=F z`|1(x?wJZnYrKTjqr{_$gW&_&b?2bqD`?|E{L5cF$=zxN(S|Ed5Oh+vCTlwAI7aV& z?SdFTqNHL=GRrw%er>8QcXguS@vG94Os!7mqDnV>uje(!aUH}+->xa z>%6E}{@-%UD`D$!3Z#kvrtIQYv8hdN0N{0wHLTeq1dce&X4ceyeNOQ2R`c-*R?;7hn4#7y3X8>wpG$rP4M!EUPjL>`Cv{l?}0V_ zw!=*V^hzR;u%#Zsa7Ca5^o#7zy*TGP#9q&8CY!wK(w)U`X`y4y$Jc2jCYU`>s?@)w zE1jF_CwcJceeJ3#aYN_?gzdKF_KC*(m(6%RRnN!oLuZn`43z2t#x*4sja8mRaz~m( zxPgUL`~1qhXw4!La7#kTB&e$fq`#RPl|d`a;2Xz}xn^hcw$gu4Lp{3Xje%r7oDC96 zk`~$1zxCq9eGd8^3Lc6FYpxy~@g;3kk4d;gjJ?~E= zWEMCqJ~#^jM2;7mm6jL3D_-4L_f^rQ7TiA&D}sR#cFvLjA8*pF7IOo*c7R(F%f;y> zo!zjkAo3E927Adwhp)xVMm9w36+@x9bnwFX#f?o#M8awn;d6Gekw|Imcgy~!-!?%V z{iqjSy^ZWH{)259-rD@qwQabr_M?Eoas320kWmGgI7}f3`S^8KQ7do;Qr>djdV!NZ zS}ePxC(@_sM%A-R-n6K?f121xzt_IQBWYC_Isp6TerKOCo|xpKlE>=m9~M~k zrB66*(ced)PkPMq?}A*H0&8N zA>`=#<1`F4!E=ueud}K`3~id&1{~}3%#y?JxGtYGXK&?nWIy$~u0Qu9lOtb#aQN~>e5d!BbYvD_mx+!y05%zceWJ6buVf$!BDa5Sdm0L=;tcueKH~Y*3m!UKS1yt8Y2MD20Yf8oxM)F5{7#6ViCgBg0;0FaycKF4O@-HAhuDj-l9unST zObKz;R9#oQ^$}S|CQ)1s@;HGjBzln-{MrYQB)NDG2MX7X~b46IVl2?qmNg8SK9Vtk!A>GSBx&t_151v2qQztrn8YJ=R+Rr(&{xBL_ zZS|6NK&@>j$h?+%9L%ad!7ivZ?7x%mpiTaGKn5-!gX^Q`0p5rQ@I$sE3R4i*)ZU?L zKsOEC!Vj~?mq#Yt5l>D{ge##_FRH^7A5*;S#C3`}K|mG$2ozCHDD|2tcFaBdMBlGJ z>H~|3IytbaQZfe%SO}jJmhd8{kE&=m8>z1)!1|hgdv*jyoynt=5o)+maGud%A9}CM z!0fLkPPAS=R}-s9a(g5i_S5kOaKc>uW-5V=H6xfrL3nZv-P7>B0YVe$gHc=l#?N;r z4=jrT1kgTf?RYg;iP>`sleyh};AY6z5)}>jTNu8++GLm(K8@ z%X*|J9B~^z%>Yvg8zza_p>0Q3(s092LbW zhC|Fq1U1Bxx+ckB>gS)%=wq2WizA#tfHriX zcm;!vS$Z7QqP_5nzy_)KQ2*rX<)I$D-tobw4!FjdunNe4PD01rg$_LZ$QP<(3#=Vk z6bA+p#a#$|5#0N@g4pJ%lTmVg4BL!^Y$*%I5HD8AxnK@a0-EQ?zZ!Hv94UR;X>D3@ z2Mlt6LAtABBU9461ZJdATdC{J%{Ogfs>m5j3kS86%8pv)sOkxY++wM#+^m|IxUxUel2vY*b$IiUg~hyP5R5g|Zd@PdmD^2DBp&gwSec?PbG9 z346(yJ49XRn^#8Xp6!O+ijJ>)Wu+t8ibCF;D$>qxBduOa`IBuzq9vZmutD9IYC+PM z&m>$lrXUw&yl>#31b%s~rBKp%3q~FFr`q7g?L=;9CO!?|FF$_-{~Q@H=H#ug&C4>- zQ@@aqs=eXeDsVd1@WJYzFkGAELTLovNan)-VYF?ePqE9g^r zBjy)HIKBd{+hoiUda+pG30ML65v+Z(bB{O_EQit`g+-iGAvg&}DSDpqv9#3i2ePFV zz5RzB4L`TH^ID+mK|hAaf6GA5-yI6$HbKr#&dY!xJ0pCNgaQI?ySbWeMED#)1?h{- zjijOyN#{wt!A)IB_G)9+(<;0ox!=lpmRZgkwRRXa7rvgNHdO87KDQKOr4(xWVShD) z0GKd@aP&}oLun{{N17mUmHVaHPF(Y+p>N5`D21e_ppPuYn!jpR6CQl7P&HUBNH@Cvqh&_Lc#)QwCiOIrCf4mMFiaXsml* z>l~0Xv1YLUPr!RqwBD%LD@S1)zS(Hnmu!ujDb(86*;z>{Xgt^~o^Z3IU>2yh{<~GL zw*r;wuJYS2ymT05{WG_?+vDWy`>>T~D`KH@v)b~^bIt@vwC~%jc9(X*))YqrRcyRyt5G6C$j_VXy93W(r@F5fC+>Gr#f}7)VBF4c9rSeffBB0j z5Zc%T(M^Mms&kx*PJKEeSt#n7Z<gP(l zq}&7|!_qpCywzymsUKE?o?(BDIqQa<`sUGpVkzLO5Rr;uU6FC1$B1*Te4<3r=Dnta zo2yqL3<&Dm3-?wvmgJI23*x1lUiDK3bXH&TGfXG?7Wu? zizITakqrc~ff-2G_R24}tR#!?tqXn$_#%H9di?fkAAX5Dbo0_&^!ZP5kp$F zqO>Gn)8#bN<1{h=qW}+g#{zKvDbw9MOLJOG0K6EuQ(OZCA2lOYv_V z7+{RlI1R)-Uq@Lc3w9-7Ozp&3YoqY~lD?jhZAS!4s72 zTgNaNk)FT*FNQP9zRN`*pV5L9A^?($~j7OV?r2U8^)D6PA z0{fuJyE}7SK~&IQXFaScLb3P+WLVUiWy4aIp(^zxkX$~QvNgqy6-Pe<^NCA%o7Ofx zbUrhz`pNd z-VrR8H6+T+wZ}BVuAwqkJrFjX$z&3sH9%L({9tDvx3GL!g^dA;<_% z0By9w9uI)o%W%MBLiHMVLMn3}dR|dIP*TguOQ>#Wx}}8VLm`aa_Gh>;ssyP*ick{3 za+Huwy$86e0@bLhIB`B>J>a*9e(Rrupukv&M&v4rCJ&o8t>`u1h2a@&Dl)IvQD~o` zJ-<$QYmrG;QYU`#ZA?Cpo{Kj!$^aWLu&`w==9F|?GB9!M{vtjxL6y}j4o+kY3ahAshTW&wBaFhTb-PrglN{xI+q4@4 zQGevykEj`#g{H9`3lT+;iyFPv^?`ZtK#%&>Bb z@jU#mI6{Jwa5U>lkO<#BR1Ci=spz$7lj7{-x223BMT|@yofQ|kc_m3ipFz}w5X`VX zUl>tgenMz2WO%5?)~{-H51C}!2Z9i-+X!TKQ`tvg%(rD>LX0QjyzATo_;IIPpoHeY zchGx>17IM*VPAxe{)5zOTf>lw@5m& z0AO`)eB(Jev9Vzm&zm^`S}lsK9WXu^(js~On>%2}L|?_{8R#&&4gUpG5{d;*zlm_J z96t4*@SUHKOX}%aNUPbz$4%)FGP^wyZpVTas$34Y)NahuW?$BCKQAPZ%x|3Q?yq)0 zb{Zha0sMCH=1^Di93%*|YI$z=!Z_ zU^SL$u-#G~^!rYWo0rbyEYYn$!+u!41gfnv<0Lh~Cvehe_;1*I&^meU?{^`M=OUQp~kV_(&>k*6|(wZhlI{9c->}7`UT<3R~lY*~&l6b)F9#!SSqAdd}uW87jbb=#_u16(n>!ASnx5 z1MB?``*-29+j##o0kS}{S`c{r8r@%ckfO8qXP;=b|5|YcYoaH66A1&y$YS7>`VPe8 z`3u8A@%Z@aN>}xi6~k9^ZBoNZ*Us`3Zo5v?lOt6`Rcx54P7{U=hfG1^L0T!imT>)y3L_!s~4yt%x=;N9`HVqEmaxE>{{P`K3x^Hdj|?q{45x| zY@hb!gNBbAu_Qkq=P%0J!KN;;p~}wRY!YEpbOMc(*n!?qddiQyGsMyR)Qh^9bi#_Q z@aYb9Yba4WZ&mt%8TRo5 zbz`=Yu*uajmyrP{FhCP(*5HY{JC;!pvbm74WLBl%kdqjM8%cB)CAGJ>h%!#+SDr&xGFXiy!3y(l&HeU}En3#=XsXvAUoC zymcf`ez?tUaknV)JZ|n>49@lZyww&~$fLacE~`hMpz0mURe=Ne2OL8xn_(~t3XH}d zjpv#Ksh03vdgU{zv7@ZN>Lvd5 z>!#kKU=G*gDt9dv>R?X@VXr8U9tXn`ni`+?4Fr0$Vnm$>SbOD*p@Ium#B-n$GnoDj z0i!uZ(K?c8cdVKF5k{LUI~eG~%pk7?@s}p2IPB|IJ3iM|Iecs~28@bH9B{W-bca3Y z49^a{_1X49t)&RklKv56HuoZH?x`;)g0z7Nn)xM=cKHyv&Af*;O+b4Opn3oiPZ&IA zLQ$Nh&Ur3>2v~VQ_~y$=^iDpB2*oo83DgAeDN+BXcz_q@Z;-}A*ckEgWpWlr#uSYvB$`zaajwOqHKXBJ-cXGfvq{lOJ zjS^uV%#5VOy#}h)3f+M!rzx0DwjVfX6~y-aYmJ8m;DfR6TmN{=ASe4yDN_4}2~w?w zAQ5L=<})xB7{)2diGd9rW#*#LnWWwI$xHLwC~A}&HxQLMjc5Zk!o%I(itiz3Si5kH zh~#)6)&t-4M{2|6p(g|%M|q~I4zi!)zxTsAKRqUPNwgkg9iY=st4}Oc1NIa!AY0`v zYy$VX>;ZCuF+w15wM2jck?r<7X^+amfLntafQ&S}!&O*k@=GL7kWa)dPeU^{likh# zfcBUed@=_n`vXnFDd#g(8K8rK!pPRooykoIvU9aq`Cz z#E)oZVAg$cVJS#nfX4EEn~1Y^D0Ktk&n7^M2~Mv0f8D1N7obP!q$O6+<{*EB2`5M- zSjvZPdWv7e9@ZA`C6UJ$xbxS67md1WS3>4Yipu6l3c3Z;CH6fMw^l80;;McpgXvhJ z+K|CFbk7c%0Km6FfNyPhoj=h8*51vc(3LK#FY_9F;cQqWJ)05D52lAh>2iev1ii4;4R8hAs zLC7351OonPD^T-04|0q5UuZc*)MP5gr3^yZ7NI6YSuq%injQv}_Fb0iEBxZ2 zCjf=?yC59&>ok%nE(h=4q0q6~GwB!i703oUk`|e=al5ce8+e)H5EGaM8y%S%-R0;f z`zD!+|~w5Us%N$E}hhCXW6WC+VU2AN=9W#HWQ43t8l#QEASB2GrWQ zW!#d`UAxS38z!&xRLE^29U&dg8vKa%v;yNm_=O(8QLjY-%Ww#c8Sv`HKBFNrCCvf_ z*Np;dYXOAhmxeXrAI-q4VS&1m6{5Z5wc9YYrcIZIzj+7d;<*X|LX+IC;eSZFYKMhs;BO!JZyGGOlXR0mu8hk91FdmI8q&H4x zSZ)KOs$fp>N2WmpPlR!RCF{q2ZQ_QU;Gd`^|>2qMDD0DGu{Z;l$Ep2VUE5 zBiqFdoL&SfM&ilW)bZKM+{Ls9oel17S3RnYkc+KAzJ2^?a7esDqjyXf5&5@B7ouUa zHi~zQ4rpgPLh}&7L`54jw=^~3@=q{v(vZ$LaS5wWBn&3>-7c_A0U{O`%4xOBwF^iU zr51lWAAkMZ?|-U#UI;rUbbD1wpZ#HM%t?$jlSRSYHp>LB}AVCXY(USzn~gTF#Gmxn~LJHO<2 z0trfyR#-uO_ejG*3|sMzfgB8C>$$!q)WTm4fao#e^Cs-VD6rh|$96uIe+hg&qi_d_ z;w3q!gZ}+0T<@9+f;x8<6zin3v_HpyuJ+b(y!X495m76jp_{*adJQQ@u);u>vR<}I z?Gmc+RmtW+xQk+$3#IgCqSkK)6BeU**bAlcc%T#Lie=LQ@fD16WuBQY1grkup}6oC z6AD#6Ykb{~s*ceCX{ucLKnX@U=K`KGz{j2&mphoxq+T{4KX{gPGBuQ#rdnPehD$XQ3X|dQIx9QvdG*gh7%iTSV-%AIV?qm z?V&!uxvSEdH5$SabUXSX4|sbe35?8LSUk70`14;HrU#N2aCMx-$9~fk%QiI=5z7uU zTL@-p^n7a?^pCk}P&!W5O0jIw>d0)dMPe^)@c4ARZOhf;%_|s9h`6_g)PWQgm>deD zozDn)0(ur>$Sy#Wn`YI*Us=wa-}G$ctV@6i?{QnDnj0Dpf=BHQmC2pv6pi48#&G{! zAaTYO&g|U-dO=3RdFOck;+s5X|ABD!a~{I@!+L=Wp_foM9$tEZBwDWRTq{3-xC%95 zB6xmPB?Ux5<}$SVv;6uD&wT2onwp9_A++0R#@w$TpkoXKz11g5HRi5KlLz|2P75t2 z3}xRw!-qHVPG1k|Jw2IEMU@xA3zord!T_0|5_x4ps2TUMLiFM33328Oq(^|&OrPe} z)1Yn*=Lb))N1e-u%M9ks15X>guL~|6BN6JiigEtt%IZyd<{#{OX;*}giRL0IJ8Hj| zEl#);ypmY(bt|vHrB?u5ldHl?A(VOO^YExwZS%`L7DUCy8Rq>(3vYOK8`yNyROqw) z3uj6s!&+qbOYOas_4BxV0I5Q>5Q)2EfTWkfcgtFgPI%|iG|T4>(l5GFxG;Nd8) zQ|fP8UoYX$-z3*tSt(XHv8pmaS@^p$P2<}|v3>}Vf1~&P48i+fx7)e8i+p0y21@jV z8n@GJm(VL03NJUJqlN-`cqka*MV1Wov9_T%j;XdD>s#v${uSn69tyn7)xtC1)~Jlv zC%h)uSZP+wL=vc7hL*QCfoAS)Z_WkcS3|DfCeBM$l@t~Vzun)J<)CznbEV+ITOMQf z2k&H5>HjUK0wisE$$3aE-b-wTbbdsZ1E#cQ@N3I5yaF9}7aV;VPNd5k*v7QaKD)=k zE+#Gtz2N{yRk^lvqtE&9;5Chp|JW`HEia6-7R&&yJUT%Rt2T5cLr(p{$E2?wU1f~x zy!gce>!8f;(V~=nLlN@Fj+nrR!bO@qG^smv9!VYWoo8lX091Kt^L+teXG<|_1#NW}3~}9W!OQ#GMwAX-(yuTpTN76haHVgyGXXR@P=nvn-ZMUzmfnP0$Ts(7`hMVhPfc_%$; zj#uhm$#z!j-q@cEz0mos1dG~hL=liv2@aQS?62~t&6DgHfJx+{Fs;Qt%F~i~=^m)G*I3RByH!4&?eeolnFN0T_RIRp8;$k1^0w;ohR$~rqFtq~tBpEc?gBADFuIhOm zh}?BM#Fh=Xx?|V}OR0rWdF(m6dB$uj9e> z^@;u4ynr=^f;s~EN$Cf&w~~B`Bhkwd_6nx@;p1+`2bR4A%*Qq4zb-L8*$XR#Ki}?f z1H{QCg{x?$AJdrmNI}=83Wbe-o)9?-@r#P~?6}7kgl{Q2`sKPf2DXA{-guwhJGe=#8r;+eqlI%!V5Rp) z8&!T9n92=$5MOXc()bS0`xIaM*CPN6b}&L1Lm&qxg2bVO1rdLMG>Qw4a?jrMa74=t zItrgOWkFya;m1vnfQN6~_o(zk`$c8`4VWs0HD%?uhARc&2);TNMIICbFX#q%+aS28 zQ@C+#z8Ff?stNk9co2PAK=ls+UuTmb^=@KM2+t1~u*^2)UvB3pUCCzV&uVjwv+bVH zsbZNWWIu@OPB1e_e>g~5Pg-BT(x$F13@nAaz&h-wKvEMaq4anf02hVZVB>EMV=jY| z91MZ+?iGU{DyPE}fwRr%EmC9tRWnrR==?2MZ8>-Zs|(}7V&0mvPOOI7+j&1|Xbpc* zH|7f>ydt6kcOH|({oG0|YByNnvA-0Mqb^>WxoC{Qe}9Ix$LiYM$8Lf4#1O!sfsR~r z-Ao)T`S_2^qOsymS2FbUvCOfS>x4e>+T<$8OHtJFG0<8*HjzWYJ3?I&yiH&}dE0V1 zR1qsj6gD0G7%ahVZB`~KZ4kmQRo>4!hMBEX+|0or# zhaV@8U~@2Kh6r6i-(`2I8Fv0hR0~-&ZT!O+%EK$jjCV^#9k}s*8MR}z#vezFj6%6g z`o|B!_Ft6PlL#8%BIZX{gYJ$S&=wi-skQ4LO^>OFxAJcGHEDvuG*R6D2Djyux^cJE zq$4RXOTbm7nB;9#1q;xVt31<)!@(k!F}>qks6n@`Jl3inApFDA?S5E-jm-q@+6*<3 z*IOCMl2IK9?!qKCn*G#Wf=r&23hdan^@^h>dH0fFiZ&gfUU7t}GgTvx-eO$s(JmM6 z8wZ%fO^B?(Gkd@Jh-fK`nD}3DxXqtEQVpK|{jjjoIn@jU;%cFboW?RD)mI*;;C(U1 zNBO>ht4a?k=>5Mr?v=@sJ10vqcU6G1HchHbD$j4T_vJC*uUuzs{y}5ou&R^&dV5a* za#rS>YX28;Zypb2`~MBkV$Bwk$WoIf`T-TyuQXfCdEj`KW^<8yr0_vd{e5OV+}d&gs8 z`5F*PG`wwz${a!dIZ6uxW!hLXWwu1vKIdMfGtsx!GUM4X;K0Bfo7@#K*glW1 zrS&}M39w7cZD^}|9{`B2fz@pRw?WSI9q)(hFuw+s%oX`Z@hI?jPs+7#yR_e}yG4cG z@b>Be|Mug-JvzO8NdlXJ`Z^=9);D47h9Xtt_5h_#{vO8uP(N%6Hyov0ahTk1P6?=TEyO4({&kC8t!W}^I48I z>7mme&C-_?RvG3Y;y|-fJSIz>FAgVH+%>`%@{UZ1Z)bTQx zq?~KlwE5LouF~5L1Fw4cF2Dq==sJlLdw{DoBYF2UJkDq*f)6y~Fc1ZZBOsG$rd)jt z=&&71{)!&)LDf#rtS$*=)S8BZh?eud1=sPX*nm+Lz-U%{DZplKodBFXUf@sNqIvrq zL_z9Z;mXT8x*%~aSuNAnwdqczk4XCXZQd8ZiD+UOROaU0%3M@HI&o-}jees2F zck+57D}ed;;_(R;T$f#6aQ8x8Dhzz@i?4e7>N3wv+FKNC3*dQTKV838cmuf4ibNwS z#igHe6!0OXN0dwV8tQ;YIt2mX+-vHO$btsoiJB;){N$d@qDH}n=1=kJcP5?BgC_dY z=;wuRm-T=In{|wiECUm_c;i=A7^owsM^`~>){Uifu%HJ)gzs`K5QKA-mu<9$hXli( zQwR$gLs_!;=X&)vuMe8|iJ@)lwP}D~$Y2jVOLGija)6t=A0wxaR>RnDjN|wGMLNLW zeSvndXNiDK&xQFimy!o=_`pzC_!C%vKq5k)$5W;rg~=IPCQihxfF3U-a4Ak6AWtI{ zkI;xv2m^4lH^EV|-BrBQHPCm)phh}O9D$jyEaSpoz1tNVzul;Vks+~dR0bTMK@!4S z%^lwMF4FzHV_~x=ndq_ghCHqoL_O)Aqm89=qP$DhSs0Qp&lf$sXTeF+)~RCz%v7oi>64qts!Ke^AVQ#RhE zUSFM$W`85Dr8#3<`ZKIg{fecrZRO`TiQS@R*8|^2#;C-b|do0LDvkAQ{)q8 zwSEC%6JU^_I94j?0a)~|4CG8bcgE!QcqZ0c_jPAB`i0XKcZb{R;~=?C*!^UAdpzI0 zW!}YF9QT{qea!`DMZu0l+G;y5`Ov&%*tB;W8-}lkW@7WIh+*k5*2GXExl619I3YA( zs9bXgd(z{CYbu1?2UU+XcpRgt@h+$MZ7%u$HlOi~b^sd4LxMN;dPyobVF9m%_Zeu^ z-&LPK9C2G6R9UpyU2@U)n)<^B`QVAY6Sa&OX-8A>ti5>aAAEyfWb%%G%iLc2C3MeL zyKnK&^Bm20_hHw%Z?5bpvE??#r^Z9ERW6FWc&V&V4$5E$p!=4Su5!=yO2WRZujTaJ zpCxR((e0pXVdk@=X4v zAqsY>9fSd)jag`rA(z>(UycGbx!BL`_QPOxkg?w&}u4p(t6k2nhD_Q zN^MZ~xIGSy5THCmzj)?yYHiXJO2TOtX{$Az zoPi;97)joeQn+%o^xSAvddK_v<_ZB6}o4b^abmo?LQPbM*uKTsNIS zQpY~$mb4+rJQS@vVq|ZAcd^xt%>-mi{Q#mVLOemT>vi5GEKi(GK>LsoDOCvyS?5oB zq}rvtoz>b6s^`uA+I9>nMRjtrr!IZ@3iKH!m7E{v8-rn{cq`bGfjrOwTyiAP=xkk+ z`V72D=LE(LxWjjVQ7(#>n-L%1lNKztjIz>QbO5YNm+C3^DA=6)YNR}gEsZET(7YyS z{e8noKH+d+z3)5P+E)h!?^1s>dT%IA`NDnVo?5*EdXEuUDpRmWgO6|nEb>TV{sxtX zd90j?l1!x)CA%qIP+A+pQhKt!Zm~tuBPWNu=F(=JRqMl^F=!wETLgOi{6OQNUdmvX z`FbepF}Bx`18Brs^W2^gX*F%Xn4TH3y@44p~A z%Uucy1v;7KPS*!ew0moAfMukD%(Z*sfwE$8p?{e$yorVl9NvhFvn&LPU?1~ADHolo z*JHZ>tvO3-q&4NRZKK6420p7#WuWg(Pi(6plYeMs(7yxe765L8THLU4HR0gf(fYjj3k6qC5Weqku_K0ZK z`BE@dT$qUYDT<-4Ib`is*wb)K@U9WHv*1d!)CThpTRiojnu(%UdirnA{>7LY z3pD%Ew@k@MPDf$O_9uG9vJ!796v1F1ad-0+HLKTtT_z(6zynUL8=`!9cVFONQjQKz z75j^}-9uMe5B~FY1>q0GYieZE6T}^D#j}6B8G_{H+gKd%ulv{g%*}elAJ#(#=LUs< zcF~}lUi>XigoD>?#7v2j;HtpaJR(hylZ9e{k&@zO zH`FZ_0eNr}W|ViF7`=B2*uQVCa8bg+QXU5eap@b9K!UdOd)+&kS^&JvoY^aBO~66k z&!aK+mC&MLBY98bNA4Ip%WwJ4W-YfY5`c&;r-UIn;`xBhvTn{ zUx9KG(V=hbmO^WTq5A>Zhj}GAmbnE#VRT;wnpNk`VZF_-$&R6mk3b48=axJI(FMF# zwlWZExq^p^qxg=oAD{2P&qAbOI(Q7b zMU!M~=1A%IAc_^{sE9yX+`H(%lf46?&RfR-bSw2&BiTrRG*jqzOX`b>iMz`emlPKfb6Ql=5-BnqdfvmtTk0W%L^1&}ylvqIvJ2vBEe z5ZP%4o}2>k-nH7ky!i&6_9kt!{M2WDYJj9g9FQnHFKQaZoFrAS)6wZkMtA?)7f)lq zpj&)cGz$Tz#fChTzYyAzpAg06CaHs~QQOi%(ZsXv>CZ@8ki<(0(>CX2Ef^j88hajYvM1Nh$(_#M1N{ zzJIdb!!#%bUkj?LZt?@X?o;@1H_!o&*nw2n6~r z4~EGB9VzL_db-7#)|+LDmETVx5Qrp@=mj4LE-BiD|2LmJ^MdmPFG-szd9x~Yl7q2E z+_$r9{Z|(vB@k!ym{Gr48C(jH_a9-Cpcobbtxsg3ZXczZqFl6bI(u>6LMxwUtDIi( z(`O%c3MsgbaQ`%Khw5#Ty(bp(w6?5dh*E3A*G+ygJ zM7v9^L3)HP_z|%-lGpq9^L~8^h4}(MMVO;CZ)3=lPq;M$1dhtR`m_sglmJ>n8s+C> zuK(9(nTC>PCjo~wHPXlkD;>1}RD3ZY`JqtLM_68j<{|qCDC~H6i3lsIt_*AMjvB;{ zTPTJ15?-9C>6m?>-83kzw0j9RDm{9(ss!tOxK+p;JC0BaA0lA9P}~U(J{_$YB@cEZ z1q78o1YM(lIdG;1-KX9DWd z{scZ&cF3RoNDA~+E?O#fvn|r=sQ1AkEp{(9JAsv5mniXt+C>dKrj<{hmk->zozs8@=b%iPW$yKwe9XST49t+{V3Y%nKwjCI}+Uto8 zrk1Xsf$A^RRso}v9~k&dK-kjOOf z%8Q<5ra5(Arh&!~CwReuGtvS4(Y39C#@|E!40dc@5CK*JW-ms&A=0Cj==A8>!WAbX zvXIoq{u7c(v^9JRlbg%k)h22=xkdC%lW8mn@Ng(P`gmbhx;$sd;IEJT&qiOVV8@5f z^6I>qqId5SH=9n*I}lkP9NJ&msQP_sXrYwYE>Bm1$zA#yy*3;3qxMK@aalqO#)OeI zB;es}G9-wx&VQhl&Iu(!R8X22RS!15HOWL|B~9)QDX0_uh!X>i^r$-4tKV_qt>m{l z)36hM17DA<9OsBoZyNbE)F$^W{iPh_;PQBiJ-<>8j4J*?9e+Jc#`9x+%$gcWHbn^O zhB}BhZ&IR+d>@U;$wl{VRQd+P)ksqcHIMPTzpK!#lADoQhk*pAovw8nNtsG?sV>P3 zVsKbAjf3FODYHHNtGM9F$*H@iH~FjmQ(sQzkjX3S&b({ynx_M(_dgG?o>a<#P=*qOCRM;u-YFV9YO`QZYm742h(Z;*vjk7;(9vBop0=IKp zXC88jkG-Vkzt|iVnokn!Y8T#Ye!OcuvXf9GN$`rK>ZWrv%Lu@`ifKz^gFk*OOr2OcGGYew=*chReYM206ai$?b69YV8u zVk!w-_Ge}H|QRw|pinC*^I+F1_o zQ70E-K}PF=Fb7k04z`t}<(TN%dpP(c^Q1Qlim`ZintH5NZr1j@PxAJGM!B=GQPaN`FyV*=Xtllo@OKzErGfHt62g4>>myLfBdXr$QpM=%@dZ9JIlykLb*o& zG{H=v<~U(_<#a3`eKMajiuXc~v~mqHXZ+~r#OHQlGP5P4N;+XOdc~=y-&6=1M@OmF z^q!BH-k{io9w^`ykT5d_ojZ=MDD4PNl8ybs`6}0zpJCnlK;C;^m8z6-F zm2vVLt`DmFoKVq45Q8~FEC4A+QKSss7|%%&<@HQ*=nGl+m6+mS%z2Xuz}x{*g)h`m zro{F=;e~1q2g4W1L{DEQL8@X9M2+MCnn6+4AuArhxXAsnF%k&2b23?HI@QVIO5um! z5pB62Z0I?CEvKIw#X8L6!s`e3RSQWTY5#E-I^ehsw!^{u9LUT&ktU_Al1q`Xj^d3O zK#^xU3{q&?=(?%>_cPthL23+)N&7^bEH2gVD$S&ym}+5(GE|8eCvGnuT~1uY_! zxPVBm3>qDe#0L-!h-3&#g@?j)Ud^xo_P-|6Wz6FCwL3U8N6vUvOx00;FFkuVR2{UM zr~2A!PkkkL$X9i86WS*Ry9c8D>@d7yDvUMhS{j(N( zU@Zd1k&C^2TV3ZsX`ImA8L?Nmb>~769onf1>ITh+m_hSkJ_D-h`^Oti# zfI8j1#M1d>YvtW)=G`_!73}MA)F%bXmb{^5IJEhCnn$>1d zvj$5$k_Z`rW{3(Ju(H2Rsa&pAPEN?c3M(I}b;?+kb=n27)_@Gq#-q(pmiw~GU=prY zGriI?G4jeuv{IV{rK;zTRsy0e)E}ZfRZgoR$jg5 zaitt+%PbCfgR&5n;DJb4jeR>O+4W;>vR7F!EnVWV@?L-D_u}9AwY<%|44=#GZsXqz|8FRAD?iJ8d8wJYaw2mjRH>G$p&HcL^ob6DYRFP8uW>bZ;OLJ&-#@ z+8{@-S*c2bL9>ClL1NRuvfX5*vD^Qw#SB9YBLB)(q^XGpq|En^`&?WlL6Z%T;Qe#e zrT@6fI|Ins^dC7haI_TzqN4go%7;gfVogxF#djX=l>E{AJN)rB3MH_=<2_uV$#&)+ z*_LqWDTe>oRfhn5jqBeBxVMb!b=k4cw{T`hSF4vw|q^weiHu~@6GSMOLeui z+MFv>+#x4=8;bXz(bLRUn0M2St_KncM`dipeW$15^-cxSxb)-VSY1*~#A*hJ_v0&Q z{OY>842nm`)E7<^w*jJNFu8A*)4|L*a)FGM*K6#GJ1W~<1i^I&e8*>4;axSD6eGp& zfCdWCP&+~rqI;q%3-^#JH3!EQK~6R{^(C0_juF<+9gi$ThHi&Ks~P>6szrPc`tfDV zoghfIb015$>~oK3M5GpqZ1nvQq4k?jKmoMF->I2yhLe*|_5xT9R!>ISnxu$u5t5=+ zS(b$dvzbdl_a!JQSbjW-HR(=c|7Y<$7xTO}zGq8_EcVzD7FHhWtfcvl7QI~QCt$}7 z^>FBF>{mCGF=1ItgzY!!HriAJ2qMaJ~@v-;wwnWHJo3jNiPI#r9k7 z6lpS-;x8~8?G{rMtr{&xnvAq+BmV-<5a6Ujn5!QT8Bz~^fnH@MO%BF5!VYX&PwVNv ze|prUtj<{xOQ=5npn!S;6HiqP7|@2{@;Y0MKhaH&xlOa-c?n*Eq{+=T@vQM-{1id#ySBq3&X&I;(0G7@-;^s*KIKeJ5z8|23qeQa(+2B} z%MnW+ZK~_-ovOIlP!UJ<4}Rae(d484``mfM8!ZFD zr?ox~0Sj+Bja?ZT+;`xGaBtP!DL;}KXW(cg?|M2yIlb2_?bcyEjkq(&bh)^VFD3Jg zY@+dW=9)ZhbwMVJK%GqE==<#**+vcU)X)lF{?{s#PVXL1hhd9g5fg3-=fo;M6d+#aL z>9C{jkJkfnrWoUNl*9STI8ppZZ0EOyW>>i#F zq*5~ocZ9S#_N##fP)4nv*S(=Yuco|kVx|zR02pw(v))qYCTcKed<)M_5u5WcUz=tO zIq?O8IlQNxC}a)@+_iycuH`3<`TCPF=76qk9@qTpz5j!_N6vO&E1&-jPyu2m{Hh#f!Uaw1# zx36!M^uk$5EA!tm*h=I4Z}LO9lau?Zw*aP zCkVkO&5~q)r0L#P=WkGo0YE(E+evBcXZeR!m9QrLNpOJ+dGMzIH!pxZ${o=+Pob4)6?K_XDHCKQ#(ef%P3>F;RIu&saNswNsq4gb~=xrCH-L_>cHN z$}epw#s_tv`3a=)Se1^uDPo5V8Bel#vp&3ZC3KFk3{`3t&bOPofg+Q8SV6%Di=A_(M>~mBa-jjfWb+fj>#CLLf%ju!0M3G_Rs4;Ya?c@JX*bTqcH7nMznfWww=r4#|!IPnd^Y zQ6puD9KW=Y=H4d6AuU-Qb)LGD4PFl`2o{-c+6v=CW7ZjH>|2s(yz9b67_VrQZ&s?| z#H+^Ga>wZd+NN>!1&A)aS$Uquu1iPZTAwSv^Xxnc_-mqR&+hzgz^)`m)l_x{V;$*lfhgzr z9}88$ObJXl!+zQ0O&c)uq-_AsV?bJl0U}6qjaVbro1h7438D(C9BAAwXsHJ>fI^Xz zg|x$(?H3duklxgf9!Esi*MmjT*boa&u%jLSV2}T!0U;FRq$%pYCbfS zd=Vp}&`Y|4=jCds0>{OSi>LP{nrJYkz611Hff9qk(ZH%0MC|oB)Wb}B?jF(EoSVqaej>^0K5iFT3VdyI3 zRL7{tgpzMg>RFI~?|3YUHjq)5PwyQg-ZzA9U2A^eMvfSpZ8axPPYf$5BE93nqK~mXhWd!bpzUKnXF1nu2{@^UGMqJ)^}1{y&R@SfV2eP*V0-@F*=;j8RkUD=*# zj!=QiHWU#1#}xrt6&dsalFB>N(TP`~4*1%p{M!NCoDAxHQd^_)06dWVDcQzT8 z95m26S$c)a=d`2T3281Ihpeb)}g9vkG*xGc7TAnxcsvAYE0=Q9a^YO z^5Ed-c$CG@$+O)xs6N*!wwMyvZji0s(`2Xk51%veR;sCt_J{Ok$_Xp@PPGhOerj?} z<=xFW_Y2G@h3)075ML*eb<3Y2jMTIVGMnqgF3Eb6OPcF~O1saoB}FT8c={nU9Lp9V zyY}+W=Gve?|NK2+K%s`z?-fsThxXXjRBFx>2s~p!P z)@YfH(2tI@4UUuVcka#NnhAtFNL#Gqt9R>4+3a8nogaQ|XC^4t01m&=_WN=SEl{f$ z<0ur!_rM0As}P%*rG777(qsZ0*L14Q$E~Wq{Ah8U0aXQWUeO}4aJINEYg~e&e)y=j zXO?F0YG)&wWTv*!$(^60;M`5k^3mi+z9Da9z2HsYALQJpS9`Bc_E}>mO*W%47<}mV z>kpAD494$`r*yt{LAJ9uEVMgWA={EURfzucNGUG;N)Um`?jE9k~+$ zlR>1t<^!?{0Nf9=H@$amHcI1tnpf)nk?MWqdFNQwnTH#{^LtS$Pd}VH|M-+8(Hvib z+BQ_0Kzz|*royHTuAtx3!eb{Qr&AP>n^Krhv=vjLH&ajk96wTm?+jSAEnwT2{xJ2U z=75d52)oz9fV+3VXa0txqP2^_&QH`KL0LBI#(6rW5nQD;VC#6CS1urhfah55Q}5Xt zL?UlawS*QqA3C|}pSy?c&(7~9{X$P(oMW2PIF1~7#S(Jz3x>@uWo@`heU5!+pZ#Ib z0C3Z$1}CDV)_=izkj!>YsQQ_9iO4U6DJegJfkqErx}ZoQ+nC7Kms(wm<2Dd&+QC9q zKl9ZbAm1~OjyXp=1IDvqD43LXpxT?$*>$;s)w*i!UR)o*sV|vh6G(^kzL{jBc*X4be!KE}VX2P-eJ0#< zaNbpd$}#_J>H)X!Z0QzxPwbU~XOuJFJNvW7QRW(?j5IQXN=^1&4{vJh&nm3R{A=(W zbKo?ecpKrXdhyy=;|ytu@~#>tmK#k2PDeFJhg95uDTt{5Q&M<$^P7h~(rhmI4UXdo zf5J;~OfKP!8fg_2?ExDAQ-0tY5tn1<^!!T}$k;1JR6aYks}(4Mkr}+P67PEy5L)O@ zSaflmEjzw;`2xFq(DGP=Sar*hkAXJ|1Wsb+#Io9gi>i|l0t z^t;_=Z#kmnvd4jna8ueniRpcxP^1Q2XO3Cb8g&1%h|DP^LYz{ZYCUeBxuNdCJn(?!BxR+~RXg3Sj1_D(i^0+5qhcndjpaX{0TYLN(NB z7b%bcagkIsdc*T6Xfn+42R+y1Bpsdu)Z!Wbd}So-Ex0hf&MNMCFP|*}p=ZO$$B`S6k&X=0O)ohp!8k%ha4SyyV+w0;3uBwP4@t zR>`c@X388q6ECi#>iy+)0}3;kw4lKz;qfHr8%|2>z{sT6{`)|q6@{+mgV)CXK%>$E zIFShPDuWaMdr{KY?o#loNkmdtEkEX|X^zUl&yVI&irub=Hykh1Hy_(MNHWi5NbIN* zqX^4=0NP`$6@1*oZyC@Q-}!P>jjciYo0`bUfyVG??xL9`4p@3mB45pBMa@8%)>DPd z$X1(so<>O$!D;5a)xzr!u`(((!JGAMj5*`0sFCohc)ZV0TW#GR3$_`lkluUbtCVQR zW#tVwPW-b=Mb=gljdY?}j~8JN%2u$?0&L|6Wi}{`8(qfJiThK*XZ_cl^;7$-uS^Z0+cmiHR$~ zi?DQ*kjYxh9=9Y-=1@uyERXpl$NIfd;zz={Nt5};afZ6OGw1-Z^xxOQ!*_>^;i=c3 zw}*`@5+0>F2{HUMBdWjd+_n2k@-I-xYNh4-MfkYaJ>?EW7tVrQa{p(BOSfnbUHM@; zL5timzK9B<1I&1~XE}5laq)6(`;`_iq(I!JNe_Uk+QFiNXIqtO0yoav=zI!xzaewF z-h>n6sRsx_k}p4fNQth}B>DIaw32Y))9S(Sbv9zpV~`3#@Jwj`-9(Dgtq+>s^>NMF zA{A;>H#{5LC)}Q^yNUvnk&4};4-pPw4S6!C@^B@Zo_<>n^7Jux3djyFc7jmj`a()= z6GNyVMVNZA>)&WDVtBuiZg%lXqf8bOCI)AOB*ZvJf83ZhVaWM_=2$m+=Sfv_)?#n(depO!ul9#f-@9^^& zF^Kp?7s0RFDD^wBr|LZ%gZg~|L^r2cH;sGMRmJ&BLq)2&F)F`j@%;npXL7+o6|v_x zw9OEY!x-CJ3LdSgQ{~_CuB(46-Dqv=nKjlQ!3A&=N}~m18Yv~hw*6kRek$u^=1n%@24vhqEjoQv`B}IrB z1=|L$rDNfnUq!`qO4(x5&{8C>W zf$&tQ*^8E1H(q-2*bb(P7F)^od@&w0Tx@7=mZMUMQ}DBWBwV80a1U>u&VJ*V!ib%9 z^XSndFJ$r>EVv0WF{@J`;A`&pqOay_d){&yr2@-JmIHkSQsro$pm>lySI+jGMfx2Q z%ZwcJuK%hM2#Rro8UFc6eQNr2L=srEH4#Bwu(=r5<4fQ^@c}O!PQ`dfgRI7claZ;s zKCEwN+4j==K*BPFsEQw{*y|h8BOfj^1WR?do7*t0kXgIuvRyztI+>Iog&A%M-MRo= zfReSfwKrat0nv!{Lv8o$CI5|lsfwws8Q*#w9o36DdCES~eT?oSc-@?8dx`Ht)l~=I zN3TADzVKJ@lUw(XFg*3S?NOMbP`hrqfdzZ%yYGtAICb<$zM|{<7B2G~i^WLYb=P>K zJ;hV>Y9vL-C5d-ZApez?^em*rY_n0o(JAuW)W|(Y7Nw}^vvrJZbGY!g>Z;S~^(UgF z6ogU>R4j~t7``3psd{3aCTg7VXsazZt=GlK3{_I_m4gb-L5)35nw$7sCPCuDck;Lr?Wrd0y(qRJC~xc^;P7|60zR~+G7x8oW09CfSysV@!XglW890p zi89Gi@y76RM}&FPY1z*=4yzr7@rnv|`pw{)wHA&^rt02qG=-6m#HSn88w|gqz?QmR zyENV5(4o{GT0PTv8(rdWSNKZzvny%>@IiwE^@0alZ=!l2a_S@@W6(Am!;DXHYZe%Fw2>~)KbXVz#sCCy{V3co07q3V*J`AV{*>&to8(A(pEgdl|) zXF#M&t$a_`;-PS^JL2;wg&U*#fpdoh+u8i=Z%yXmqu?MbZf>b$Ru<}UFSAo`>F{8u z+}Gw2-RPSipY|j7etyiy(IS^az9m*)T;!2AeSIBuDA#K%yU};oAU8>qsTJ2!sMb%) z4w0XaJq%9G0f&_3M}NIq6JAQ@bve`Hg!vnz49x-$&7IhX52a5={>e1^{G>1|O)yff zc)YGIV~w{5*(Ew1uU;*M9Z1CCEG-lv>#|-1UGgP^K;SvCmP_9{f-e4`R_Pg!q})C{HE z##YYaY?qGb09;h}_Z5EOJ@xm55eap_G6}c5(D`Tms?!n8a*+$hIaDeMIT~`RjHe2k z5Z!x9KiTe#|4iqclyya131;rNZ_9?ALVNR}J)H_S6iQ@^?;6M&AK4PJsq-3_YbUp^ zC21T`x9*=PPy4w)k)&F~9J-qcJnn7nkY@pR4-puj&TN%Ngj+mMH_JtzZ-V;5oAsj{ zAe$A;ZF1A!vRpJc-m#J62w%~sXG()w=$ZK(U(6l!>bHZPssjxv zfMws*;_%Y(nQWMwrgWrDdk*e#N+9SB=N$Urc z0~D$+x~4Gl^QH=>dgp26wl8bT(4cx18BIO(1f0GxpxPQmVHmJ2ioACmWp9vl8l;Tz z2Qy@I^+CvMKpeoBElK!MFX3Bjck+#5KV^dGviQLZ;Ce@Cf?^fw>+sZ6o8NlJ z;`!F^O#fS&#^4D!u{HSo)O0=^>{GVr;3D6|&p+WO+)(71>0@qCTPQCaoZtmJ%5m5 zOAharc*z%lQW11a!qfrm&ysg$6*xwW2V|?5)@xo0(I*E!XK69-YR879L`@Nr=`l>N zp;ds?W1vho_2se^NcvhQ89m9!+BN zueF2)%uAy}_W2`#L9KxD(raS2$6miwe>>{E6iDx90^5i?;(6JrMla#$uS({SAhGlX z%@4N44tpbXndC9- zI1@34qBo(p__+}{2M5J>4oiGYz^{QaqQ@65;tsgwMYmbE)!=WuPeY-|?Sn8Pj^;yy z$5xH8R%#Y%H+oB6SE^-)?Q4VF^Nb>lf)Ps}DwZ$Pp9Y%yN~9y-yCh&*g;_CKo&A5D zGIn`-WOIa^6Pz@u4(x1&z6L0pqF4Q?MmoW8)o;y&D%dtS+m4pb@AR@Kii1?aGjOb| z#G61cPB5+V+hSvX^wo7W5=at&>XEkP^LW=P-9=CocVPUI-cbMU@G&-Ouvj`cZYSQu z#VE-(x@z^L;=|HtaRzN85s)@lN2!buwv}pTX|_rxK18>?n4WS|EFBA~AP6|6Ky2H9 z^MwZpX16`U6%&DJ12&b&m_AKU$ zZ=M-qWP`Fa19?>j3^)h*R7`k+h^rQ6bC8|3)qW=&LK!;_G)4|D{N&xr=%BB4FyaFj zA211|;Uo3ZMsi$y@<7dE-5P>4)?g}QNr=g#71q;rZ~x{Y9#H}*$NersTSmL+;gok5 zzd#y5CfmeB@8Z5V-fje%tSz~#*2Cd7OvRDcAeRm(jz(qOu25DbP!=7RxM zS7|vxbKnpa#Q8{bFNRHkfZ8*i#2o40xXz(>{8sLnR-wv4|LX9 zw*ZnKX@q#wBA|8#l*JxN+Z+aslXgyu_*brd7aT&q-D|eT{GR(r8pzdral0>t-Ynsy zN$QQ(xF)TVkd*So$B(2y-Bo1W7ZsF4gYhEYO>=>@IH9CT-vC!TTHQ8Ci!5g5G9BAK z0-s8)?Dhn$iaJtBj7YV(1s?x7+2Fx104y-rGrA$O`8Arcusy1H5WVwMZFZSBOvsLj-45`t63>FOwYrqcz-EW^r;o{J7#05SH9*=lmo@6Kvy%`F#MZzKn4G} zIDNU8b-G(TgFd}aXSr^|Cr1P1M%?;ZMrp*}i@T5C_Z!6L8G~7KluSnq>(g?F5leGV zaA+-H=F=s!C`y%tE!_uaI2sgzZhWDp{6=3AQ~_PQ?_aj-o8zA+U~4c~vea(}glN<2 z*49W+m@u#pwU?Q)Uf4KtJ%G1DXx)qv7~rb6sMmR?M`8* zK-snp;58OH)X4}xnTwVQ#n_kqDiZ_{2NE5jrhgl6s5^O3SZiA2>C(0UALQ!s;Hhu1{Q;sER&hC`EynacKtNEs|D z7Td^euC>vqm{2ht?Wkc@%;9IfB=@*WjOF&}xK2y%-D{ zJ$z4^89iW6Pw3=5=lEO{4PvY%%-7bl5^Z$hBwOI6;m0;U}|DvRHYO5<(_FjY=^qdYg^k_GjP?q3ap8qo&N(h(l#i-Izk8Hg1+WCsaYIYhCYdUFaF@eVE`mqNsKxrK*a6p zzg{ywn}S{WfeZJD{s{a!2jK^5B|(1z2|fIG;B!=#pJ=lu3s1hC*djmMQB-uw4Uq}U$ie0$;yHG9vwSC{j`gE!Dt3& zhwsym@ltkA_9FKX<-X=I`y(kzTwDr#!=cWody#;Pw-E9U;^cYa2qRdylN$2l{{R z#r7$S2R$?uH06gq5p;O{;?(SIXJb$0{AZql;7|)B6r=i10Uh%-#`KU@J*Q}eHPEO1 z1P4f+Ffps-duvR;iP8ogQ5B5!l~yI5?F9ngq-xj3DtBvu=W;;V{APUEl~I~S@_umD z8&3#}jz`tyqgPkmr}y!?#DN=YZm7%AGBE)O9>&g1T$D>d;yXYpN($`6RklpJn$z#a zXGRY@%Y#$&h<$Lo8z{!CaVTCC@3`p}fgMjr1qJ*h{~|2!qDEX$9|_Bcsg%b07$nQo!D>7JDc$cz#_ST3ukoa`+lr% zclQSIhewZS$FK!)68JjdpiInf(eY_Kz1$ykUpN8@{CL>@JL0@M&$_8-X4;cbnnw1; z#$Gch0m!hVC4 z7Xfs6u|O5TX&NA{fewpf0uVHbo@Ox0FbBZW{yPf&pWl<-97)Zlec{&HpD$RRu>E&L zaL9p8iK5=W53zcO#!z$LMjlX#(uT{mkuR|Z3-RxlK?nKY-{d6$*kF;Ms61fmk@@~e z{NJ111}m;-*mFV=@>qfkd_^_@oYr+7v=Lcw1Bzzl8sD7pTvXjV!aQ$iGIsnoYP+14 zP6yxw&&TI^K=V8>W~txIe(U;!tLZMlqaYZYx9SHBfGYY>wH$_RF^Ax_N9o|^EXx`} z@RsS!aqGEf0b4n`irYQ8ZlKVUgN2e{2XnY)P`*6vrySUpr}SF`uObsG&r84W}Q%wEOKh<&$L*d)Ufv9G{hFQu!A%DE8L zHsp42JamvJ;O{AyQSJbEXmNME;x{(J0jBUM$NW=mlbL)Gw8rP5cm5&YkHH^Wc*Zi< zU`{utf-c@8^MWGCra&hsV#jwISEuz2qqZM_)8ggIyBZ%r^lSIp+NpTs4iivx0yAC!s6zo#6Eu6#p((b9 zT;56T%esF2i$Nb=!d86S+~LT~KhO1)R#T$&xq;=Up+x^DAo?f1|85F93Woj%z@zNt z|8#_5@+R;ES>>8if>$cG75I@VHSzb7*U+m^hZ_I0HOx6VDg(QBdce~t^1*JaK;-x_ z_vVV*S4r99jdOW&y~E+>(~2KQxTuXuf7#~=5g6ldQ2Rpe-8WOLxrrCVM-Zo@@5cm2 z7saqUl}dKoofd*$&>&f}&PA3yr5^a6M1G6KYNDg^zq_nzle9@KN}=X(xX9^6J&4&F44w z?mBnuB!4A0fIJ+DFDW!I_BFaUrJ>QweeRIQ^CUbW0u< ze@hce{d96c%8a$y#ib0t5a6!qzw~7TXV`=?P@yGXmN-saN2~I4&5+E&;u3Q^ZA z^aj?Ad~}r#)*B8X3OQ-WGc-W542*12Z;AO`b2#9(U~PXKj1;6Cc6aui`~vwlR-HG0 zGT^wM$O^L^J+&m^#x5K-wKDJ518PsZdb;5{`*cnP#ph4W%-Q)cI^EE%=yydyd!UyQ zH;97t7q{Ty1p;{Yybmu{me$)X`jhBdML!bC16(?j9R^KHwpDx<$w^n{mhPTSSfl+pc?stMcJK zd-Y@PeIGS7L;@d%4~w!vh3JCBM0u4&a!2}Ka~)R`I6hK@19wR!X$>%FM1KspVcmDb zB4FHpSWLtGpXZ}j@}-^~96VRkb(GquwBk4(&7U~;Vi{sW&n_+PYv=i|m!=T%qWzoyYq$@F(IA0d0yRw|sjS%Ea zxzH(!S0fr&6heRXRQ^IHvn^d(U9H=92{vT3uC!&YKt!J403EH%8OUO&PD)(=ndD&3 zb*=TZVwGWfl{*Gog5s%Rs-(GJWl4MlkE2!vg@OEE@vdBe8fb#eWBv|otdHG#}{BlC3rKh z+_%^Fa9~-o5n7df1n~2IRy_*^eyk+{p6CDcX(f`Be&k;G_3ShBJx?FM@pox`b0sy$ zD)lGa>Gb+dig0Ikob$)`M738_M7oc(QH|!n?pYV<&%BjWY%5xs_Oq;bOLPUXu$DGr zWFxtd*+>nJO%XAD^x9@P#Bj}E@u9NqaCJF)(k5`~zG%O6OS{4F4a4IBfcMJwa^F?nOB<n@1SM0VCgp&8W zt}7iEcO?c1?>XbQ{|&D}+=!!`KsY4CElf}+#?H=+y;f99t|(J`^V)g?HK(WR#n2|A zZCgL{k&3S3->piCE4fD&4!%^UgpT2ec1=SW?wImwGmqE^@hVi{PXI?VxM3+onX6CFkgvjej!~XJ8Iob#8&`?>GmbN`+% z&-3H!oqXiGj%jz^c)ocObKUyrIg)Rbh2W0TUU(o%4`-Sv5PmVwdaS%x3$1kaJWFq1+)52&U6aMv%5gH= z_ATM#>a2CRJ7jCmL4p|n;adwrq~5@vSj&sCM_;rz@}X)KY?6ipW`}NlVghrH`A;cG z0%!{efH=Y%EHG7WQ!)I&Jx{&yF%u9}9u8O64wSx%uW#J@`rvSG2UnS?*2`Lt)P2g9 z@0AZ|@3gU#3|)O)Mr5r;T#WbtcTo^Q@RuBNb+r+$)`4cjt&IzY&)jf5Q;+82o`4>e zCoB?cgO8Av*Y9?=NE$DA7AG@$6$fKe6h$C1h^(-}jKDvGbb&ABvE1JoXLFLH#Uco_H07pGtUEz~_!QMm+EjNW+ggfg_@PLY8wDc!dg*cMDTR-0#F* z;-T_`v$gbU1_(jC#q(%kJCK~iCLK=<+yWD0BohJtTlZR{9K&aLpU5u&Qm zC2$gqfQX*exC5s@cENN;#N*0=u39wHuq&oMUWu7Rzr_#j0cZBpC1BZ#TlU@5^JF5F3S%uq_AUE1WsO0L zHQPie#4y>ioqP2Be*f?Pob!ME&v~8myk0%!v)uRfx$o&BSn)0Rn+A z>0Ct{K_IYT2!uxe7(KYcu-)$m{<`F+dCSk(3*#4f`>rEI@3x<}yO*E4i~YF($Gg5R zUY;mPl%&jsbIyK#-o8pwQXc>PfTY)5Cn>2I1S1&axc60aUkHTdHuVqmwR*k_1mZ%{ zL0`EUl>T!vIK|2le|WgXbo}-cP1X~*WB1&9#28#@t&m|{8^R*9b*Rz{k`HGe)UeJe zpz2<{=V*8I)8gbALDcH-qv7b2H`t+?0grj!ojP}!2D`h}bxGoRUh?8fq0*$u>WF`a zxW9fzAqCr`lhK&Dpki=GC{aKsF?Xe0YX}PdA)r&@@I;vUw{<(xfO@L|rq?u%BQtxe5b-T6p zMOp0RQ(vim{{MDJnVdxkm}=uU`>&rT!cNw4ZI56NuyC<>AkRsvTn*Q!@3q8XQP{X% zJ!J^og#BvbpkctsGl7C#m1toGl_(AqHgw`(FjaQ{Eb*u%u3>l~15#&E<>+nV5*`Yk~ls~p90;up(=kq`J9 zSsmskq>gGKxMfOUiNeq2ZA6)wf%$XgQ>`sCQ*nws@-%JrQq^3|LT0loaA@CsE1N&68 zp{$JN)G<;@J%u9!#@%q|Ym?g-pJiMSvp2J*;f^RtCgzKqGRc}yLXe8`$J##ctte4y z0gJs+%7|4bw|B?d7F~=5;~BFDEx@>*r9Bu{4TUZYWVAY$$+Lynz7n~xMI^$xYHaEE z1duf6P#jQndqjy!9jxrCQNr2pe7BA-!<*Pg-Cji6-L8HppyP^vD$3CG)+DUhTH#qvC-$(cv0 zIO)irX=N8DfX%Pj-X3|j+Suj_?`dK_hvfBKTgz-u`t#78GaVwSeaA>sro1YsRr(|d z9}c%+u`|_Id8Ds{dipPScw&;R)oPuV1Jfb2T-4vJo&#JV@{HIvlWRyqm z$WLxWqh@>O(@S+n>YH0?$eg_%+SwxI#pd0g_z&e^V(|n%SfX5+>=v`LDhZW@s2$^m zhviLdTqN0((&m1f&;4E!@(o*kPqmXlkE!>kDc_jPD8)1@aAps)C?c5f^)5+dmm9|Y zdC_6ZUDpQ9&4xIGi0vHpn#R>#M4F=8{SiL5qLJ6Yil#>0y+>&lVNex`Y0wVN_FoNq zVSW0gS*h^C`&b+Yje7R$sex`{F#mF`9N8&m{<9ZE>QzefK_7nSsZhe43e|{>G<$+6 z%-Nip6dTgB0Kbpv*Fs9WV{!Qq4#SBPV=Q|v&ycGW!jg<{*8>k*ct9VKLm~LcU<7n{ zKF3bV8PKvj&6lN(ZgmiTXw+oTFP}l6EHkfzkrRaq^670J;v#8nAj@OlbTP2N6Jr7J zj>Fn~SS^$9BlBXl`{9DV4p*tFp{Hv6O|!i!>JZ+fgfe?H`$}WCs`J=5oQH0(^UM(l zS!5?SxV1n=S*eSl*)C>hOVXJ8o!Ztk9}qL#q?Km$sKZS8kA5_`yT%J<2FV&Ac0CC0t0%ZcyNAkoU%{v;ODY;OFt+tZhUsZU?(f?+ZO!7#OS z`t&w`NqgHHJ$j~oKO3U#r++we1SH#RWEHz;V%R569t7gj_4DkAXvj3(a4*s1v}((w z9Cca!pH~u;`GO4VUFa`96%LVEp-Z=288Jev$;P}rYrtJffN_=*#66BpsN-o^{=x^l`x0B;!XQEDD|p zxDBi=v=@6{D>Wfh<-+=)m=rW~sQe(ogzgF0LW6OfaBcPx(yWv4!3yPn+qeAO&>F9G zf2+(BL>pv{DRtJQ2g3IZU7jstjw}$v0jWd2$i#%sq#_8-9^Kxwnt>k}ku!RT3J0`1 zAHplg`DzpF4ayg<8JxNz-zmWbuXAJt}?{rt=K|@A$-O1K!U`OK~Y(C zzU@bM50iR`ZrDkzEv$P+$-(#&1{nQJ;KR? zs(u@9(j`_{#v{|^5}N+3&#giFPDcLm5=V}_p-&mRdnOo?WHLvI4iLK`Z2pb9UW;PB zzd39*E`1HIcVX+;M%>q&-XYk`MOb&OqefaKlI0!BXBm=?5K=rSc}B z=HIIE03QoJ17GdIq$2-8-P?h>hZ#=PcN(q&Kka~BifY}E_`Z8*D42Rf*CuT&QCMg3 zSqoh_ml2Ug&Y7*eA9&=eFqW%{4Uef}`X^{du`w<6V!On8kUE7&oW$DxMI`Aqse~Xg zS4q2l3k+N>&LpI>D01Y|yTJgW1d2$@EDKbPWl#InO8{Dqz_S`{1xuEjxBYIRZms{+ zqe9s0P^zY#e!;Rm4q&{$STSB;qp~Q<65H3ifl3R%jkbai={*OCs+N3ui6I(jB7Hm! zGi?oI1y)Mm!no&zQDa3+Lu@qHRyXdFwg|#9l$iJ2<46Mususs#)ghM8m-uWdy{Fcm zKS<2wl>38cM5*o|t$p6*;*A0wc~PhC$G`%wGB%ZX%X#~*{h8JzjfS67_T^$52B zS$Nj9%j$hb^Jg^=Su%!iCgO@T!(k*;frbm#1t$bvBf~#{95g4* zNG-llmjrsGX)^ajK<_$w;=19t$wa*6%?#~CAu3y`A-pH(isU`hIVTcR;v1y_{|zs7 z>8jwLF=O4*UVV&bVWxzAyZFy7^fHYVje8n?ME}?J)YE*^`Uf-L&d3%BVSom>WcSdl zhS`;Wy#0R$1JV%TVH;Zzgr7BN33^Ct#WEp_KfxaC`VjD-{pa?qwZ_;o7~ktZx;^@y zK>sK#^vk35ou^;Cmpw!+PL#P%a3TUV+t=^zgtcw*BkeDBs0PC!z9`C*_q64Wn6!;+ zK%a~P%Nz4@f0Q=CS3mhQ-AOi`%Hco&MgxUA&JUceQIF1k^0PI{7v*bHAFg3%9Ao%I z{o0xrSr_Hofkur2odZgo#!XzTMZ{s)yl=!NL^5^kM=HyD5{XMPl(VF-=f_ujiA5;N z1ybDHlF;+_N1WJ5VGNhu?W#p%;4$|WMe(#dPR6dQHLfw(4d0RZ!-f}ydPNvsVQ9U* zxMaAm_)JgJA=dJ6qteKl1YE7*n?Y4}#K1#b4swPLQQ?Sg;@n1P>P{2xFnb=6?}D`S zzbF*!fXJ3t!QJ2YkBr^udaO5;e1)V4Tnhuqk(F*zj+JieK0#N8(*K@&8f*52h&2nl02iX<&J&2g{|RV3z++0fey5*<@VZIizPijIEQ$=TtHsKxkH={n_>T~Y+A@?> zV$(TP0*xe8O(nioktJw_bC;XZeYAWT^|BlYo+t}#9!^xaSspUdQ?ac7G0qo_uRnEb zXA6c_QLJ!2dLrV8gSFD+(^5;(r#brK5)0SpS0D07Qi1cj(( zF-Gv9MK++5PXtQlMKy*;$^`xap@%3?wnghm+6XH(o8!OCQb3eZP4x>KuR&-?J4Nfx z=q?SA_F4zkfiwOhss<> zN|6jBAP8}U#`#}TE!8trWi%S7Xw0*iS*C-xKop^)h*3VpiZ5vD4X?^><02w&WsA9> zC=fQ6*Xc>V=_Od*i?Ak!Teqkp2oyM(Q+d)asfc4iXUh4?XMyup|HCr|)AE)H;)n`O z%#@Wsvz!-ThHM0{qa_1Qv0x%`YXKJ&I&@xu4bZGNUjbLcm}Y2zd2`ZwG^g^TPV>(Q zBi7y&wq0#@U)j?D=IW9i>2zSYYy-*8H{0cS4sMIHm|T?G}%JY$wUss>Z|W(H{D1(`1&{0 zSuKD=hA#lFIH1ekADX*(!L!U) zpvipTK2r%&*x0Bgz;c>Ps5??Xmv>ipDwQDF|6EwdgYwslvalwh4=iD|4T`BqPrmhh z0hd&KrKSz0zeMT2fPa0c$V&C2yZfaKRn9TpMAf4Hb2_Q%qT|-aiGwz9p)urirq8N6-8xKvS9h;whldHniMKDzsr#V)Z))?3b7wl`wI9xBRfh zN-`rD_v%S4TYd->_EzxDrOOi7U_PQ+ZJ&d)39!*ZD@Y4t)0;NH>DbmXRZM;ckdoF7 zbUw9D9!tOU&et;FVzfYkea*K5BYeHn&>7j9Dh}?T6J$ipy}iem_G1sNJdh^Ko9824 z892Z51vP;+h7u0p#V-_{wj{FDURK&A=ElboiUH@UY))lmLF=_$#+RBz-aS?^Wqw3NYG5(G)3p>$Ga{&ih>ji(B#s8+_U$Qi_3z5}c*-}ERL z$pN%Q$jyBA+Wg{@UW%U2YII&XSc21>BixpbU)8wkCZPchu~{VoI>wg3lW4YoMfkX& zCu}7bwAv5P%*yR*wf}>tKq5s>#gLv7m@BtXb|BoEf7-4Sxg zB+R^l(zD>6G!QDVd4C61zB%`B2VX_-1ru%);_#QstPb7K%g4i5%ezA>%^iw$ zQ|*Br^+DKSW%RsDK-n_EwmmJ>d-Z-1>?0ldEXjftN7(JjXI=$A4}duxp8xYyz#k2K zcO24Qk95*bl{A3}2$lB!{n#TPx*Cte<9EIvTUCu6VocuZs=JtGY{zRRf{-FD`wF{q1&~HJ4DQia-$ZT%he8PcHHfHsAgMrXc zhO&+b$YPq1zBA6ldN`2DJR$#XDW1mlsey7cHDdE2G5Ib?r7}&_-ubH1NULK!JxQ2V z@rm60#8CBGZu9m=sGu2*+w+9gukWYbK%R6E1uJ`2N*j>#J$pxv^bN=9VN=Up$;%Hi z$`{ISw^a`Oov3dNu&Hs9#vqlKO3vt+^PR^oaRdccKOCengTzfrN9y^+z8%2s1M;3^ zmUs;$JynMilko}Uc7iwux}6cr0$b(7Y>fx6cl)H#6p2La^Zwuz7mc_?2eM@8*D*S- z`CzFdVFx9P+^%s{54Q^d4QuaR!4q{~q^0)2yv)xc-4XiEKL4QbAg5(KB@3+W399G_UJ9*qL9Q~?qxrqBmDkRneO$^d z!TU#E{F6vXo}j^}b_t*o>~@Ajmj*)sverNk9@-zgDP#J@Qe3DAKqFOv%3r7?LY}_= zWu4O*J10{3kRZ5IVh19dMQi0XG!{;dDZB^V&@jlY=T7<4b$pM#A7N&45_klqfRVx6 z^kx#_1*iRC3jhzVBH#t)!T1wHfIsn(npwBLNfc58ELXZ%6}?;Lr2S(-{N;mq>fWwWq(j`4}L(cf8gD|vM{_Ut-7 z4xaVB)!cD7XF_MVL|qkTB1n6+9Bay_(xd{m<zJbz9{vZR8~_>&5>xm0eNigrR7+!~=G#THwaky{h%Xk%CtJ=juVGY;(%D(O`t z>%;`FPbmS~YEGrCp9IDd^G$;VHGv}BB>A#o4BaNLNSk!Nuq`GhO1>O@7QQa}|5Ngy!?k|WG;40Tv@086{ZAbS(% z3D6z@A0eJl1rRFYrVrp-gEYX&zXF@C@Mb(OSJeGQ z0eHbbN;A`9u9oneu*vFMcOAS5#WiZixm?sz5(jc57DQSq%TzmFMGYFT4tiwZQV=@3>d?aU{KiqGAZ=T#o92H z)7vK^`oV4EB%l+WGJekn8;?kSZXO8v&klhhlOcR`p3sBK(t4dK$eDY%x=Tn&XD2lv zYe_!{ojYZLrY1*8#Zerquue7Ssh>@qiu(2c`|6sHpPtE2z>cmZTD$<%$dK@n)z`WO zz%yz2$k~E&-SeJ5JaRG*Jm8CslrU3(w?I|O8qkTk`jw4&0y>jU!;d$rsbUxYO)X+r zW5D|ZtR;aE@u&n-PVL0O+ea0$m%tOWMfFAL0lyNV6rViBJaKR9n(n7Jb0CTm@Gk(j zeK=gF#3gh-XMu5Cnz-4_5_3g~|L(2=y$#cZBKX?XqJI7YRreoH1YBGxng8zZF-5*@ zHSd0~)hbQ@5wbL$7_GUz{~_isHM~(RacTf@wjrpVF%#Mdt5}0O^UrgdFzTd7w==&; zqsp8$h(DH+<08XmU}f(=gZ z+HfOkHQT+AGjlmVIT2Mz`}=R{obz7YNL2cvj&1DiVu6+cs=Ad1yyZZ_MNk)VeUf=$ z9f^#Rf;lh)p7>fj%OCR0ly@J9w;uwdC*nz0Pzm z1x%<^pP3|<$$8;;OlZ8I&L`OsUrifyI;4p?C>S%Pf<4M7Ts6SV_Yj*Ry`jA6b~klg zYZ;@alM*TL9(ABZVkn;O~!Ey*9et3|k91CZNYdIo#&cAEQ`cII0x3@qJs*P~>;yeRFV)-BVr=;k3dWDV z1nFX!dHM{2N_l+Jos?tAuhU++9+On}c219J*PWWIXkqX8`)x8!D{LMDm$xM8e4eHAk*=DXxb-uc<;0azUA4y>JaoJ8FsUfRI zjXybq+NjvaqL?$$#7;g#knE*G%`+<0RJwQnZZ`QFsFsm0D5%7_0<}|z^5t{B{{B}C zlv*B<)!ZPmGMM-<&~1q2-vAF5KA1q1?))dkeK&Qf2VcaEW9Azdc@ zWWxYIWptV<7v_6-qnqiUu)M1KscdQ_)Ki4-ka=6*-;gTH2|#%GQ$M$ETi9{Epm%57 z+XND*)l$t==WHBUtcqotL2O@?D%R^Jm$p$AAmux%QaY;Lk$Zx1a|P5e;U2gaPJino z$R))Cli8&vvj;B$$m(2Iw$s_!Mvx9oQ#6fEgU3AJVeBc#-5J7~0mcCM0|FHSmShG! zgpaa~hJZCR29C$Y9Ti<%W}?HOVy4+^9Or%#;URG8;U;q2eW2(4}aQ zX(5J`2UUnoC@-j4Sh%T@F4(mZn_3qyy7CN+m(B-^gT(`myI0WWhF@~!$s2)`rk^sI zwV<5#rzrnFHFs2hxfX-PG`(%z-5v{&QXgNLbE3XaO)7)$i~W-=|G&-Z`e)!qrI0d6 z`9h^wi{1fKP#17#54J`k^eZ#JwjR;sgJ`gA?+Q}6Re2VM>w+@ zvC!aj6u-Tp_;i)!qs=j`_RhHl-~T9z-afs$f9$ zwzp7Jl+Cwvb!DS(zSM*xXWp$>)kz{< z<08v?1`azb1-FNBiY*fnLYn6*y~(~_JCW`z`0hXJ)Q2=^i^0WVVNs`1l(#PjoaQU< zwn8H4-LLydt8<(+<4brP$W(=zgTWKTI6BI-v!lzEu6@0C>g~ZbYf z^I|_GOg5q>ad7U!x@$Jw&owlJRzGg_RfcMgmSzL zP1B*FLu&*AE<;*=k1*@{<{51I~RQG^(Eet+59KC$S=jlPRh?b!x zgVj~TV~_D?5M^+Ek!gxg%nF*1+i7#Qr#RVog0XT#WH%x)o9(wU;Wz7+|IaM^Ry-x; z^ZSSshhv$v%O<6^sBb$ZqLQ7N?E?W8;|c7U3;geipOG_itT`eP>DiVmY=qh#>m-^@l+_ZcA7vVt+9qr9-HLBKu z|M|)({RdNx5lrrk+?vv7Jhku42SSkcMPD-$a7@@hnAZT&79ceJ1Z@+8VhKtoU+%~& zjZf}{3F=7P*0os;IkC-3e!J#Z{}5-)Z@=T*E8yD3j14@u+)}V` z`B&RRxAfNk$0Es^*L*u3leQ;CU+QW<9T3Raa59KBg>moLIix%+(*O=fen*1!>>a3S z+}XL7ClQbykO0>LYHosZp?5hI{s5%;b~gFT}87 z*iOTfERQW9tY<_^V(#&W*H`gLM+)@+I7a;+9iacEP}Byf|A}P)F7f}Uh4g!n_F`1%`?=(hd@DfQ>W>xJw_4m?`qSVJeQk+iv=RMO2n#|P-}nx>yI~ba|EPi z9Ps8NcJ;?3OXlQi#O7=-9}PWRtQ7TMb6TK^m|sj`j;Lkzu!RZyh8JMi;8hE^4A8$) zdz7f&MYl`w&kWyQ^j^3VvfRHJ*T`E!q8IOaCa(xs5Pi%uSvbZNo50XbaQc z9qzJm-n!P?;V$AD)G3RK&HSSz=QqMmhZJ`A5{dT+L6Nt)ZXZ1peLB zWU4c()@Ddy z<9rZ^Vp$^*^ch@;0UEWQ?vC*aLNeEIAdjOhklUZna=p`uFJ^a{zQlcq%YYmb@uf=8 zYp)-csr>0Fz8*k2pH&oGnM02{N0jE&w#sPGemY)4d|m6};zpQ4c{f+ z7&z6YNw`d}Dbq{e0F*g031^s=?r-&HoZx1lMw#S2P!cDgu+gFicez1H+`~W&O!lKk zl=Vy3(vA>Ft|#N2X!!MCKfy;cn;+7U|Jlp~gBm4|yhz5n>3 zR-@U*ws!I4q8>H*qhqvG0$sN8Kei$CN6A$;OMxan{WBe}RLOt*U^%?BAyLHqa_Udh zc=do9b;3W!_oWMIz~l5skO9w)knq_;jn}n*6#ZuveYw}r`9aGg{mYB^ zd9!$A$)HH-?~v#}Q`)#ecFn*SI{ax-&-FZs0HqC#LFDhx3QFtU{D(^4evCk-i;&47 z2}fbCksGm}*vA+0{UyFlrPjLHX1a9t;o#FhbM*�K?<@_lNIABTH^3Jbz6N94+7C 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 literal 0 HcmV?d00001 diff --git a/dabest/tests/baseline_images/test_53_delta_change_ylims.png b/dabest/tests/baseline_images/test_53_delta_change_ylims.png new file mode 100644 index 0000000000000000000000000000000000000000..66c34426a7ee53fa356931321eb051fe498cb1fb GIT binary patch literal 38748 zcmeFZXH-;Cvo=UZCE0?2WQn3gB}Wyo$p|PQL6U;xAUPufEvZR@5=F8kQF2DI2q+*K zn$YCXWN2t$cB8)cuK6+R&iBolKQn8!lDf~Sy{qb}r)pQ7HxJdJWS8hJ;o#tqDJjZp z;ouO?;^5$^T_6I#F^VM&1z*Hn6!cuQ9V}ejO`V_PsF}Jr+B&${TA8u9J$HU-9+np_E{-oH`1$Sr^9DW#XG?zmFbD~_$VErRCogeuC`_^caPwqyt#EJ>x|HPa zJ@QCdoAmTCboWJ_4MV@o^FB4REd4rmo&7cS1(hcQulwn|-fC4$Is5Zw{|v@6`dl3> z^5M2>!T7_3k>L9o!C%U$#teoYTqdQtfU7)Ox%MX2_bVkTIRS-&qpn%-sB9|^{kW!7 zvN-3&bVuT)#X@F`g?Bm%?ZcM+nq4XO{AC?k{Dma??@v}DcVLNszt0aQo#puVrt3i- zf4_~@?__!U=cBP%)VKe4-VVRcIzOa%uv#`V8+jig*4}FlEik>yknRV(Bx6qs|1IMsZ7cJ* zXdn%KAD$nx9+{6ct4`$Cljlvvn%$2fr8#8f%71Smp_&!{z1Z}@8yH6uZ&R|ivTlSE z8t;P>0meL_Ah07hzF|D==D!_D{l>Hv7q2x&1ChmJlIfif4Uj8OXEQUdwT}CHV^=1F z0aY!**%Q3!v@bR>|9&eIbZ8EPRX%9tfRysFrV(I_O|ES=$Ey7MSPxD`j(EkL0DnSt zJSLn|5)WtP0dch8clZPnQRey>GxtySgkdk60mZT