From 1f55216b987fcb0d911cf523e567447746d76941 Mon Sep 17 00:00:00 2001 From: Jerry Date: Fri, 14 Jun 2024 00:22:53 -0400 Subject: [PATCH 01/22] Reset to align with origin/streamlined-backend --- .../diagnostics/plot_calibration_curves.py | 110 +++++++++++ .../diagnostics/plot_confusion_matrix.py | 124 ++++++++++++ .../diagnostics/plot_distribution_2d.py | 85 +++++++++ .../diagnostics/plot_latent_space_2d.py | 36 ++++ .../experimental/diagnostics/plot_losses.py | 121 ++++++++++++ .../diagnostics/plot_mmd_hypothesis_test.py | 100 ++++++++++ .../diagnostics/plot_posterior_2d.py | 134 +++++++++++++ .../experimental/diagnostics/plot_prior_2d.py | 49 +++++ .../experimental/diagnostics/plot_recovery.py | 164 ++++++++++++++++ .../experimental/diagnostics/plot_sbc_ecdf.py | 177 ++++++++++++++++++ .../diagnostics/plot_sbc_histograms.py | 137 ++++++++++++++ .../diagnostics/plot_z_score_contraction.py | 115 ++++++++++++ 12 files changed, 1352 insertions(+) create mode 100644 bayesflow/experimental/diagnostics/plot_calibration_curves.py create mode 100644 bayesflow/experimental/diagnostics/plot_confusion_matrix.py create mode 100644 bayesflow/experimental/diagnostics/plot_distribution_2d.py create mode 100644 bayesflow/experimental/diagnostics/plot_latent_space_2d.py create mode 100644 bayesflow/experimental/diagnostics/plot_losses.py create mode 100644 bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py create mode 100644 bayesflow/experimental/diagnostics/plot_posterior_2d.py create mode 100644 bayesflow/experimental/diagnostics/plot_prior_2d.py create mode 100644 bayesflow/experimental/diagnostics/plot_recovery.py create mode 100644 bayesflow/experimental/diagnostics/plot_sbc_ecdf.py create mode 100644 bayesflow/experimental/diagnostics/plot_sbc_histograms.py create mode 100644 bayesflow/experimental/diagnostics/plot_z_score_contraction.py diff --git a/bayesflow/experimental/diagnostics/plot_calibration_curves.py b/bayesflow/experimental/diagnostics/plot_calibration_curves.py new file mode 100644 index 000000000..7efe79ca2 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_calibration_curves.py @@ -0,0 +1,110 @@ +from ..utils.plotutils import preprocess, postprocess +from ..utils.computils import expected_calibration_error +from keras import ops + + +def plot_calibration_curves( + true_models, + pred_models, + model_names: list = None, + num_bins: int = 10, + label_fontsize: int = 16, + legend_fontsize: int = 14, + title_fontsize: int = 18, + tick_fontsize: int = 12, + epsilon: float = 0.02, + fig_size: tuple = None, + color: str | tuple = "#8f2727", + x_label: str = "Predicted probability", + y_label: str = "True probability", + n_row: int = None, + n_col: int = None, +): + """Plots the calibration curves, the ECEs and the marginal histograms of predicted posterior model probabilities + for a model comparison problem. The marginal histograms inform about the fraction of predictions in each bin. + Depends on the ``expected_calibration_error`` function for computing the ECE. + + Parameters + ---------- + true_models : np.ndarray of shape (num_data_sets, num_models) + The one-hot-encoded true model indices per data set. + pred_models : np.ndarray of shape (num_data_sets, num_models) + The predicted posterior model probabilities (PMPs) per data set. + model_names : list or None, optional, default: None + The model names for nice plot titles. Inferred if None. + num_bins : int, optional, default: 10 + The number of bins to use for the calibration curves (and marginal histograms). + label_fontsize : int, optional, default: 16 + The font size of the y-label and y-label texts + legend_fontsize : int, optional, default: 14 + The font size of the legend text (ECE value) + title_fontsize : int, optional, default: 18 + The font size of the title text. Only relevant if `stacked=False` + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + epsilon : float, optional, default: 0.02 + A small amount to pad the [0, 1]-bounded axes from both side. + fig_size : tuple or None, optional, default: None + The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` + color : str, optional, default: '#8f2727' + The color of the calibration curves + x_label : str, optional, default: Predicted probability + The x-axis label + y_label : str, optional, default: True probability + The y-axis label + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + + Returns + ------- + fig : plt.Figure - the figure instance for optional saving + """ + + f, axarr, ax, n_row, n_col, num_models, model_names = preprocess(true_models, pred_models, fig_size=fig_size) + + # Compute calibration + cal_errs, probs_true, probs_pred = expected_calibration_error(true_models, pred_models, num_bins) + + # Plot marginal calibration curves in a loop + for j in range(num_models): + # Plot calibration curve + ax[j].plot(probs_pred[j], probs_true[j], "o-", color=color) + + # Plot PMP distribution over bins + uniform_bins = ops.linspace(0.0, 1.0, num_bins + 1) + norm_weights = ops.ones_like(pred_models) / len(pred_models) + ax[j].hist(pred_models[:, j], bins=uniform_bins, weights=norm_weights[:, j], color="grey", alpha=0.3) + + # Plot AB line + ax[j].plot((0, 1), (0, 1), "--", color="black", alpha=0.9) + + # Tweak plot + ax[j].tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax[j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) + ax[j].set_title(model_names[j], fontsize=title_fontsize) + ax[j].spines["right"].set_visible(False) + ax[j].spines["top"].set_visible(False) + ax[j].set_xlim([0 - epsilon, 1 + epsilon]) + ax[j].set_ylim([0 - epsilon, 1 + epsilon]) + ax[j].set_xticks([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]) + ax[j].set_yticks([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]) + ax[j].grid(alpha=0.5) + + # Add ECE label + ax[j].text( + 0.1, + 0.9, + r"$\widehat{{\mathrm{{ECE}}}}$ = {0:.3f}".format(cal_errs[j]), + horizontalalignment="left", + verticalalignment="center", + transform=ax[j].transAxes, + size=legend_fontsize, + ) + + # Post-processing + postprocess(axarr, ax, n_row, n_col, num_models, x_label, y_label, label_fontsize) + + f.tight_layout() + return f diff --git a/bayesflow/experimental/diagnostics/plot_confusion_matrix.py b/bayesflow/experimental/diagnostics/plot_confusion_matrix.py new file mode 100644 index 000000000..ac522c778 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_confusion_matrix.py @@ -0,0 +1,124 @@ +import matplotlib.pyplot as plt + +from keras import ops +from keras import backend as K +from sklearn.metrics import confusion_matrix +from matplotlib.colors import LinearSegmentedColormap +from ..utils.plotutils import initialize_figure + + +def plot_confusion_matrix( + true_models, + pred_models, + model_names: list = None, + fig_size=(5, 5), + label_fontsize: int = 16, + title_fontsize: int = 18, + value_fontsize: int = 10, + tick_fontsize: int = 12, + xtick_rotation: int = None, + ytick_rotation: int = None, + normalize: bool = True, + cmap=None, + title: bool = True, +): + """Plots a confusion matrix for validating a neural network trained for Bayesian model comparison. + + Parameters + ---------- + true_models : np.ndarray of shape (num_data_sets, num_models) + The one-hot-encoded true model indices per data set. + pred_models : np.ndarray of shape (num_data_sets, num_models) + The predicted posterior model probabilities (PMPs) per data set. + model_names : list or None, optional, default: None + The model names for nice plot titles. Inferred if None. + fig_size : tuple or None, optional, default: (5, 5) + The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` + label_fontsize : int, optional, default: 16 + The font size of the y-label and y-label texts + title_fontsize : int, optional, default: 18 + The font size of the title text. + value_fontsize : int, optional, default: 10 + The font size of the text annotations and the colorbar tick labels. + tick_fontsize : int, optional, default: 12 + The font size of the axis label and model name texts. + xtick_rotation: int, optional, default: None + Rotation of x-axis tick labels (helps with long model names). + ytick_rotation: int, optional, default: None + Rotation of y-axis tick labels (helps with long model names). + normalize : bool, optional, default: True + A flag for normalization of the confusion matrix. + If True, each row of the confusion matrix is normalized to sum to 1. + cmap : matplotlib.colors.Colormap or str, optional, default: None + Colormap to be used for the cells. If a str, it should be the name of a registered colormap, + e.g., 'viridis'. Default colormap matches the BayesFlow defaults by ranging from white to red. + title : bool, optional, default True + A flag for adding 'Confusion Matrix' above the matrix. + + Returns + ------- + fig : plt.Figure - the figure instance for optional saving + """ + + if model_names is None: + num_models = true_models.shape[-1] + model_names = [rf"$M_{{{m}}}$" for m in range(1, num_models + 1)] + + if cmap is None: + cmap = LinearSegmentedColormap.from_list("", ["white", "#8f2727"]) + + # Flatten input + true_models = ops.argmax(true_models, axis=1) + pred_models = ops.argmax(pred_models, axis=1) + + # Compute confusion matrix + cm = confusion_matrix(true_models, pred_models) + + if normalize: + # Convert to Keras tensor + cm_tensor = K.constant(cm, dtype='float32') + + # Sum along rows and keep dimensions for broadcasting + cm_sum = K.sum(cm_tensor, axis=1, keepdims=True) + + # Broadcast division for normalization + cm_normalized = cm_tensor / cm_sum + + # Since we might need to use this outside of a session, evaluate using K.eval() if necessary + cm_normalized = K.eval(cm_normalized) + + # Initialize figure + fig, ax = initialize_figure(1, 1, fig_size=fig_size) + # fig, ax = plt.subplots(1, 1, figsize=fig_size) + im = ax.imshow(cm, interpolation="nearest", cmap=cmap) + cbar = ax.figure.colorbar(im, ax=ax, shrink=0.75) + + cbar.ax.tick_params(labelsize=value_fontsize) + + ax.set(xticks=ops.arange(cm.shape[1]), yticks=ops.arange(cm.shape[0])) + ax.set_xticklabels(model_names, fontsize=tick_fontsize) + if xtick_rotation: + plt.xticks(rotation=xtick_rotation, ha="right") + ax.set_yticklabels(model_names, fontsize=tick_fontsize) + if ytick_rotation: + plt.yticks(rotation=ytick_rotation) + ax.set_xlabel("Predicted model", fontsize=label_fontsize) + ax.set_ylabel("True model", fontsize=label_fontsize) + + # Loop over data dimensions and create text annotations + fmt = ".2f" if normalize else "d" + thresh = cm.max() / 2.0 + for i in range(cm.shape[0]): + for j in range(cm.shape[1]): + ax.text( + j, + i, + format(cm[i, j], fmt), + fontsize=value_fontsize, + ha="center", + va="center", + color="white" if cm[i, j] > thresh else "black", + ) + if title: + ax.set_title("Confusion Matrix", fontsize=title_fontsize) + return fig \ No newline at end of file diff --git a/bayesflow/experimental/diagnostics/plot_distribution_2d.py b/bayesflow/experimental/diagnostics/plot_distribution_2d.py new file mode 100644 index 000000000..9b6855b10 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_distribution_2d.py @@ -0,0 +1,85 @@ +import logging +import seaborn as sns +import pandas as pd + + +def plot_distribution_2d( + samples, + context: str = None, + height: float = 2.5, + color: str | tuple = "#8f2727", + alpha: float = 0.9, + n_params: int = None, + param_names: list = None, + render: bool = True, + **kwargs +): + """ + A more flexible pairplot function for multiple distributions based upon collected samples. + + Parameters + ---------- + samples : np.ndarray or tf.Tensor of shape (n_sim, n_params) + Sample draws from any dataset + context : str + The context that the sample represents + height : float, optional, default: 2.5 + The height of the pair plot + color : str, optional, default : '#8f2727' + The color of the plot + alpha : float in [0, 1], optonal, default: 0.9 + The opacity of the plot + n_params : int, optional, default: None + The number of parameters in the collection of distributions + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + render : bool, optional, default: True + The boolean that determines whether to render the plot visually. If true, then the plot will render; otherwise, the plot will go through further steps for postprocessing + **kwargs : dict, optional + Additional keyword arguments passed to the sns.PairGrid constructor + """ + # Get latent dimensions + dim = samples.shape[-1] + + # Get number of params + if n_params is None: + n_params = dim + + # Generate context if there is none + if context is None: + context = "Generic" + + # Generate titles + if param_names is None: + titles = [f"{context} Param. {i}" for i in range(1, dim + 1)] + else: + titles = [f"{context} {p}" for p in param_names] + + # Convert samples to pd.DataFrame + data_to_plot = pd.DataFrame(samples, columns=titles) + + # Generate plots + g = sns.PairGrid(data_to_plot, height=height, **kwargs) + + g.map_diag(sns.histplot, fill=True, color=color, alpha=alpha, kde=True) + + # Incorporate exceptions for generating KDE plots + try: + g.map_lower(sns.kdeplot, fill=True, color=color, alpha=alpha) + except Exception as e: + logging.warning("KDE failed due to the following exception:\n" + repr(e) + "\nSubstituting scatter plot.") + g.map_lower(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) + + g.map_upper(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) + + if render: + # Generate grids + for i in range(dim): + for j in range(dim): + g.axes[i, j].grid(alpha=0.5) + + # Return figure + g.tight_layout() + return g + else: + return g diff --git a/bayesflow/experimental/diagnostics/plot_latent_space_2d.py b/bayesflow/experimental/diagnostics/plot_latent_space_2d.py new file mode 100644 index 000000000..7e91b2a11 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_latent_space_2d.py @@ -0,0 +1,36 @@ +from .plot_distribution_2d import plot_distribution_2d + +from keras import backend as K + + +def plot_latent_space_2d( + z_samples, + height: float = 2.5, + color="#8f2727", + **kwargs +): + """Creates pair plots for the latent space learned by the inference network. Enables + visual inspection of the latent space and whether its structure corresponds to the + one enforced by the optimization criterion. + + Parameters + ---------- + z_samples : np.ndarray or tf.Tensor of shape (n_sim, n_params) + The latent samples computed through a forward pass of the inference network. + height : float, optional, default: 2.5 + The height of the pair plot. + color : str, optional, default : '#8f2727' + The color of the plot + **kwargs : dict, optional + Additional keyword arguments passed to the sns.PairGrid constructor + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + """ + + # Try to convert z_samples, if eventually tf.Tensor is passed + if not isinstance(z_samples, K.tf.Tensor): + z_samples = K.constant(z_samples) + + plot_distribution_2d(z_samples, context="Latent Dim", height=height, color=color, render=True, **kwargs) diff --git a/bayesflow/experimental/diagnostics/plot_losses.py b/bayesflow/experimental/diagnostics/plot_losses.py new file mode 100644 index 000000000..0b0557c4e --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_losses.py @@ -0,0 +1,121 @@ +import seaborn as sns + +from keras import ops +from ..utils.plotutils import initialize_figure + + +def plot_losses( + train_losses, + val_losses=None, + moving_average: bool = False, + ma_window_fraction: float = 0.01, + fig_size=None, + train_color: str = "#8f2727", + val_color: str = "black", + lw_train: int = 2, + lw_val: int = 3, + grid_alpha: float = 0.5, + legend_fontsize: int = 14, + label_fontsize: int = 14, + title_fontsize: int = 16, +): + """A generic helper function to plot the losses of a series of training epochs and runs. + + Parameters + ---------- + + train_losses : pd.DataFrame + The (plottable) history as returned by a train_[...] method of a ``Trainer`` instance. + Alternatively, you can just pass a data frame of validation losses instead of train losses, + if you only want to plot the validation loss. + val_losses : pd.DataFrame or None, optional, default: None + The (plottable) validation history as returned by a train_[...] method of a ``Trainer`` instance. + If left ``None``, only train losses are plotted. Should have the same number of columns + as ``train_losses``. + moving_average : bool, optional, default: False + A flag for adding a moving average line of the train_losses. + ma_window_fraction : int, optional, default: 0.01 + Window size for the moving average as a fraction of total training steps. + fig_size : tuple or None, optional, default: None + The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` + train_color : str, optional, default: '#8f2727' + The color for the train loss trajectory + val_color : str, optional, default: black + The color for the optional validation loss trajectory + lw_train : int, optional, default: 2 + The linewidth for the training loss curve + lw_val : int, optional, default: 3 + The linewidth for the validation loss curve + grid_alpha : float, optional, default 0.5 + The opacity factor for the background gridlines + legend_fontsize : int, optional, default: 14 + The font size of the legend text + label_fontsize : int, optional, default: 14 + The font size of the y-label text + title_fontsize : int, optional, default: 16 + The font size of the title text + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + AssertionError + If the number of columns in ``train_losses`` does not match the + number of columns in ``val_losses``. + """ + + # Determine the number of rows for plot + n_row = len(train_losses.columns) + + # Initialize figure + f, axarr = initialize_figure(n_row=n_row, n_col=1, fig_size=(16, int(4 * n_row))) + + # if fig_size is None: + # fig_size = (16, int(4 * n_row)) + # f, axarr = plt.subplots(n_row, 1, figsize=fig_size) + + # Get the number of steps as an array + train_step_index = ops.arange(1, len(train_losses) + 1) + if val_losses is not None: + val_step = int(ops.floor(len(train_losses) / len(val_losses))) + val_step_index = train_step_index[(val_step - 1) :: val_step] + + # If unequal length due to some reason, attempt a fix + if val_step_index.shape[0] > val_losses.shape[0]: + val_step_index = val_step_index[: val_losses.shape[0]] + + # Loop through loss entries and populate plot + looper = [axarr] if n_row == 1 else axarr.flat + for i, ax in enumerate(looper): + # Plot train curve + ax.plot(train_step_index, train_losses.iloc[:, i], color=train_color, lw=lw_train, alpha=0.9, label="Training") + if moving_average and train_losses.columns[i] == "Loss": + moving_average_window = int(train_losses.shape[0] * ma_window_fraction) + smoothed_loss = train_losses.iloc[:, i].rolling(window=moving_average_window).mean() + ax.plot(train_step_index, smoothed_loss, color="grey", lw=lw_train, label="Training (Moving Average)") + + # Plot optional val curve + if val_losses is not None: + if i < val_losses.shape[1]: + ax.plot( + val_step_index, + val_losses.iloc[:, i], + linestyle="--", + marker="o", + color=val_color, + lw=lw_val, + label="Validation", + ) + # Schmuck + ax.set_xlabel("Training step #", fontsize=label_fontsize) + ax.set_ylabel("Value", fontsize=label_fontsize) + sns.despine(ax=ax) + ax.grid(alpha=grid_alpha) + ax.set_title(train_losses.columns[i], fontsize=title_fontsize) + # Only add legend if there is a validation curve + if val_losses is not None or moving_average: + ax.legend(fontsize=legend_fontsize) + f.tight_layout() + return f diff --git a/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py b/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py new file mode 100644 index 000000000..01b336094 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py @@ -0,0 +1,100 @@ +import matplotlib.pyplot as plt +import seaborn as sns + +from keras import ops + + +def plot_mmd_hypothesis_test( + mmd_null, + mmd_observed: float = None, + alpha_level: float = 0.05, + null_color: str | tuple = (0.16407, 0.020171, 0.577478), + observed_color: str | tuple = "red", + alpha_color: str | tuple = "orange", + truncate_v_lines_at_kde: bool = False, + x_min: float = None, + x_max: float = None, + bw_factor: float = 1.5, +): + """ + + Parameters + ---------- + mmd_null : np.ndarray + The samples from the MMD sampling distribution under the null hypothesis "the model is well-specified" + mmd_observed : float + The observed MMD value + alpha_level : float, optional, default: 0.05 + The rejection probability (type I error) + null_color : str or tuple, optional, default: (0.16407, 0.020171, 0.577478) + The color of the H0 sampling distribution + observed_color : str or tuple, optional, default: "red" + The color of the observed MMD + alpha_color : str or tuple, optional, default: "orange" + The color of the rejection area + truncate_v_lines_at_kde: bool, optional, default: False + true: cut off the vlines at the kde + false: continue kde lines across the plot + x_min : float, optional, default: None + The lower x-axis limit + x_max : float, optional, default: None + The upper x-axis limit + bw_factor : float, optional, default: 1.5 + bandwidth (aka. smoothing parameter) of the kernel density estimate + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + """ + + def draw_v_line_to_kde(x, kde_object, color, label=None, **kwargs): + kde_x, kde_y = kde_object.lines[0].get_data() + idx = ops.argmin(ops.abs(kde_x - x)) + plt.vlines(x=x, ymin=0, ymax=kde_y[idx], color=color, linewidth=3, label=label, **kwargs) + + def fill_area_under_kde(kde_object, x_start, x_end=None, **kwargs): + kde_x, kde_y = kde_object.lines[0].get_data() + if x_end is not None: + plt.fill_between(kde_x, kde_y, where=(kde_x >= x_start) & (kde_x <= x_end), interpolate=True, **kwargs) + else: + plt.fill_between(kde_x, kde_y, where=(kde_x >= x_start), interpolate=True, **kwargs) + + f = plt.figure(figsize=(8, 4)) + + kde = sns.kdeplot(mmd_null, fill=False, linewidth=0, bw_adjust=bw_factor) + sns.kdeplot(mmd_null, fill=True, alpha=0.12, color=null_color, bw_adjust=bw_factor) + + if truncate_v_lines_at_kde: + draw_v_line_to_kde(x=mmd_observed, kde_object=kde, color=observed_color, label=r"Observed data") + else: + plt.vlines( + x=mmd_observed, + ymin=0, + ymax=plt.gca().get_ylim()[1], + color=observed_color, + linewidth=3, + label=r"Observed data", + ) + + mmd_critical = ops.quantile(mmd_null, 1 - alpha_level) + fill_area_under_kde( + kde, mmd_critical, color=alpha_color, alpha=0.5, label=rf"{int(alpha_level*100)}% rejection area" + ) + + if truncate_v_lines_at_kde: + draw_v_line_to_kde(x=mmd_critical, kde_object=kde, color=alpha_color) + else: + plt.vlines(x=mmd_critical, color=alpha_color, linewidth=3, ymin=0, ymax=plt.gca().get_ylim()[1]) + + sns.kdeplot(mmd_null, fill=False, linewidth=3, color=null_color, label=r"$H_0$", bw_adjust=bw_factor) + + plt.xlabel(r"MMD", fontsize=20) + plt.ylabel("") + plt.yticks([]) + plt.xlim(x_min, x_max) + plt.tick_params(axis="both", which="major", labelsize=16) + + plt.legend(fontsize=20) + sns.despine() + + return f diff --git a/bayesflow/experimental/diagnostics/plot_posterior_2d.py b/bayesflow/experimental/diagnostics/plot_posterior_2d.py new file mode 100644 index 000000000..c546627c1 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_posterior_2d.py @@ -0,0 +1,134 @@ +import pandas as pd +import seaborn as sns + +from matplotlib.lines import Line2D +from .plot_distribution_2d import plot_distribution_2d + + +def plot_posterior_2d( + posterior_draws, + prior=None, + prior_draws=None, + param_names: list = None, + height: int = 3, + label_fontsize: int = 14, + legend_fontsize: int = 16, + tick_fontsize: int = 12, + post_color: str | tuple = "#8f2727", + prior_color: str | tuple = "gray", + post_alpha: float = 0.9, + prior_alpha: float = 0.7, + **kwargs +): + """Generates a bivariate pairplot given posterior draws and optional prior or prior draws. + + posterior_draws : np.ndarray of shape (n_post_draws, n_params) + The posterior draws obtained for a SINGLE observed data set. + prior : bayesflow.forward_inference.Prior instance or None, optional, default: None + The optional prior object having an input-output signature as given by ayesflow.forward_inference.Prior + prior_draws : np.ndarray of shape (n_prior_draws, n_params) or None, optonal (default: None) + The optional prior draws obtained from the prior. If both prior and prior_draws are provided, prior_draws + will be used. + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + height : float, optional, default: 3 + The height of the pairplot + label_fontsize : int, optional, default: 14 + The font size of the x and y-label texts (parameter names) + legend_fontsize : int, optional, default: 16 + The font size of the legend text + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + post_color : str, optional, default: '#8f2727' + The color for the posterior histograms and KDEs + priors_color : str, optional, default: gray + The color for the optional prior histograms and KDEs + post_alpha : float in [0, 1], optonal, default: 0.9 + The opacity of the posterior plots + prior_alpha : float in [0, 1], optonal, default: 0.7 + The opacity of the prior plots + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + AssertionError + If the shape of posterior_draws is not 2-dimensional. + """ + + # Ensure correct shape + assert ( + len(posterior_draws.shape) + ) == 2, "Shape of `posterior_samples` for a single data set should be 2 dimensional!" + + # Plot posterior first + g = plot_distribution_2d( + posterior_draws, + context="\\theta", + param_names=param_names, + render=False, + **kwargs + ) + + # Obtain n_draws and n_params + n_draws, n_params = posterior_draws.shape + + # If prior object is given and no draws, obtain draws + if prior is not None and prior_draws is None: + draws = prior(n_draws) + if type(draws) is dict: + prior_draws = draws["prior_draws"] + else: + prior_draws = draws + + # Attempt to determine parameter names + if param_names is None: + if hasattr(prior, "param_names"): + if prior.param_names is not None: + param_names = prior.param_names + else: + param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + else: + param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + + # Add prior, if given + if prior_draws is not None: + prior_draws_df = pd.DataFrame(prior_draws, columns=param_names) + g.data = prior_draws_df + g.map_diag(sns.histplot, fill=True, color=prior_color, alpha=prior_alpha, kde=True, zorder=-1) + g.map_lower(sns.kdeplot, fill=True, color=prior_color, alpha=prior_alpha, zorder=-1) + + # Add legend, if prior also given + if prior_draws is not None or prior is not None: + handles = [ + Line2D(xdata=[], ydata=[], color=post_color, lw=3, alpha=post_alpha), + Line2D(xdata=[], ydata=[], color=prior_color, lw=3, alpha=prior_alpha), + ] + g.legend(handles, ["Posterior", "Prior"], fontsize=legend_fontsize, loc="center right") + + n_row, n_col = g.axes.shape + + for i in range(n_row): + # Remove upper axis + for j in range(i+1, n_col): + g.axes[i, j].axis("off") + + # Modify tick sizes + for j in range(i + 1): + g.axes[i, j].tick_params(axis="both", which="major", labelsize=tick_fontsize) + g.axes[i, j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + # Add nice labels + for i, param_name in enumerate(param_names): + g.axes[i, 0].set_ylabel(param_name, fontsize=label_fontsize) + g.axes[len(param_names) - 1, i].set_xlabel(param_name, fontsize=label_fontsize) + + # Add grids + for i in range(n_params): + for j in range(n_params): + g.axes[i, j].grid(alpha=0.5) + + g.tight_layout() + return g diff --git a/bayesflow/experimental/diagnostics/plot_prior_2d.py b/bayesflow/experimental/diagnostics/plot_prior_2d.py new file mode 100644 index 000000000..5280486e4 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_prior_2d.py @@ -0,0 +1,49 @@ +from .plot_distribution_2d import plot_distribution_2d + + +def plot_prior_2d( + prior, + param_names: list = None, + n_samples: int = 2000, + height: float = 2.5, + color: str | tuple = "#8f2727", + **kwargs +): + """Creates pair-plots for a given joint prior. + + Parameters + ---------- + prior : callable + The prior object which takes a single integer argument and generates random draws. + param_names : list of str or None, optional, default None + An optional list of strings which + n_samples : int, optional, default: 1000 + The number of random draws from the joint prior + height : float, optional, default: 2.5 + The height of the pair plot + color : str, optional, default : '#8f2727' + The color of the plot + **kwargs : dict, optional + Additional keyword arguments passed to the sns.PairGrid constructor + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + """ + + # Generate prior draws + prior_samples = prior(n_samples) + + # Handle dict type + if type(prior_samples) is dict: + prior_samples = prior_samples["prior_draws"] + + plot_distribution_2d( + prior_samples, + context="Prior", + height=height, + color=color, + param_names=param_names, + render=True, + **kwargs + ) diff --git a/bayesflow/experimental/diagnostics/plot_recovery.py b/bayesflow/experimental/diagnostics/plot_recovery.py new file mode 100644 index 000000000..d8a4f83b7 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_recovery.py @@ -0,0 +1,164 @@ +import numpy as np +from scipy.stats import median_abs_deviation +from sklearn.metrics import r2_score +import seaborn as sns + +from ..utils.plotutils import preprocess, postprocess + + +def plot_recovery( + post_samples, + prior_samples, + point_agg=np.median, + uncertainty_agg=median_abs_deviation, + param_names: list = None, + fig_size: tuple = None, + label_fontsize: int = 16, + title_fontsize: int = 18, + metric_fontsize: int = 16, + tick_fontsize: int = 12, + add_corr: bool = True, + add_r2: bool = True, + color: str | tuple = "#8f2727", + n_col: int = None, + n_row: int = None, + xlabel: str = "Ground truth", + ylabel: str = "Estimated", + **kwargs, +): + """Creates and plots publication-ready recovery plot with true vs. point estimate + uncertainty. + The point estimate can be controlled with the ``point_agg`` argument, and the uncertainty estimate + can be controlled with the ``uncertainty_agg`` argument. + + This plot yields similar information as the "posterior z-score", but allows for generic + point and uncertainty estimates: + + https://betanalpha.github.io/assets/case_studies/principled_bayesian_workflow.html + + Important: Posterior aggregates play no special role in Bayesian inference and should only + be used heuristically. For instance, in the case of multi-modal posteriors, common point + estimates, such as mean, (geometric) median, or maximum a posteriori (MAP) mean nothing. + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws (true parameters) obtained for generating the n_data_sets + point_agg : callable, optional, default: ``np.median`` + The function to apply to the posterior draws to get a point estimate for each marginal. + The default computes the marginal median for each marginal posterior as a robust + point estimate. + uncertainty_agg : callable or None, optional, default: scipy.stats.median_abs_deviation + The function to apply to the posterior draws to get an uncertainty estimate. + If ``None`` provided, a simple scatter using only ``point_agg`` will be plotted. + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + fig_size : tuple or None, optional, default : None + The figure size passed to the matplotlib constructor. Inferred if None. + label_fontsize : int, optional, default: 16 + The font size of the y-label text + title_fontsize : int, optional, default: 18 + The font size of the title text + metric_fontsize : int, optional, default: 16 + The font size of the goodness-of-fit metric (if provided) + tick_fontsize : int, optional, default: 12 + The font size of the axis tick labels + add_corr : bool, optional, default: True + A flag for adding correlation between true and estimates to the plot + add_r2 : bool, optional, default: True + A flag for adding R^2 between true and estimates to the plot + color : str, optional, default: '#8f2727' + The color for the true vs. estimated scatter points and error bars + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + xlabel : str, optional, default: 'Ground truth' + The label on the x-axis of the plot + ylabel : str, optional, default: 'Estimated' + The label on the y-axis of the plot + **kwargs : optional + Additional keyword arguments passed to ax.errorbar or ax.scatter. + Example: `rasterized=True` to reduce PDF file size with many dots + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation from the expected shapes of ``post_samples`` and ``prior_samples``. + """ + + # Preprocess + f, axarr, axarr_it, n_row, n_col, n_params, param_names = preprocess( + post_samples, prior_samples, fig_size=fig_size + ) + + # Compute point estimates and uncertainties + est = point_agg(post_samples, axis=1) + if uncertainty_agg is not None: + u = uncertainty_agg(post_samples, axis=1) + + # Loop and plot + for i, ax in enumerate(axarr_it): + if i >= n_params: + break + + # Add scatter and error bars + if uncertainty_agg is not None: + _ = ax.errorbar(prior_samples[:, i], est[:, i], yerr=u[:, i], fmt="o", alpha=0.5, color=color, **kwargs) + else: + _ = ax.scatter(prior_samples[:, i], est[:, i], alpha=0.5, color=color, **kwargs) + + # Make plots quadratic to avoid visual illusions + lower = min(prior_samples[:, i].min(), est[:, i].min()) + upper = max(prior_samples[:, i].max(), est[:, i].max()) + eps = (upper - lower) * 0.1 + ax.set_xlim([lower - eps, upper + eps]) + ax.set_ylim([lower - eps, upper + eps]) + ax.plot( + [ax.get_xlim()[0], ax.get_xlim()[1]], + [ax.get_ylim()[0], ax.get_ylim()[1]], + color="black", + alpha=0.9, + linestyle="dashed", + ) + + # Add optional metrics and title + if add_r2: + r2 = r2_score(prior_samples[:, i], est[:, i]) + ax.text( + 0.1, + 0.9, + "$R^2$ = {:.3f}".format(r2), + horizontalalignment="left", + verticalalignment="center", + transform=ax.transAxes, + size=metric_fontsize, + ) + if add_corr: + corr = np.corrcoef(prior_samples[:, i], est[:, i])[0, 1] + ax.text( + 0.1, + 0.8, + "$r$ = {:.3f}".format(corr), + horizontalalignment="left", + verticalalignment="center", + transform=ax.transAxes, + size=metric_fontsize, + ) + ax.set_title(param_names[i], fontsize=title_fontsize) + + # Prettify + sns.despine(ax=ax) + ax.grid(alpha=0.5) + ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + postprocess(axarr, axarr_it, n_row, n_col, n_params, xlabel, ylabel, label_fontsize) + + f.tight_layout() + return f diff --git a/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py b/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py new file mode 100644 index 000000000..1863d6620 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py @@ -0,0 +1,177 @@ +import seaborn as sns + +from keras import ops +from keras import backend as K +from ..utils.computils import simultaneous_ecdf_bands +from ..utils.plotutils import preprocess, remove_unused_axes + + +def plot_sbc_ecdf( + post_samples, + prior_samples, + difference: bool = False, + stacked: bool = False, + fig_size: tuple = None, + param_names: list = None, + label_fontsize: int = 16, + legend_fontsize: int = 14, + title_fontsize: int = 18, + tick_fontsize: int = 12, + rank_ecdf_color: str | tuple = "#a34f4f", + fill_color: str | tuple = "grey", + n_row: int = None, + n_col: int = None, + **kwargs, +): + """Creates the empirical CDFs for each marginal rank distribution and plots it against + a uniform ECDF. ECDF simultaneous bands are drawn using simulations from the uniform, + as proposed by [1]. + + For models with many parameters, use `stacked=True` to obtain an idea of the overall calibration + of a posterior approximator. + + [1] Säilynoja, T., Bürkner, P. C., & Vehtari, A. (2022). Graphical test for discrete uniformity and + its applications in goodness-of-fit evaluation and multiple sample comparison. Statistics and Computing, + 32(2), 1-21. https://arxiv.org/abs/2103.10522 + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws obtained for generating n_data_sets + difference : bool, optional, default: False + If `True`, plots the ECDF difference. Enables a more dynamic visualization range. + stacked : bool, optional, default: False + If `True`, all ECDFs will be plotted on the same plot. If `False`, each ECDF will + have its own subplot, similar to the behavior of `plot_sbc_histograms`. + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None. Only relevant if `stacked=False`. + fig_size : tuple or None, optional, default: None + The figure size passed to the matplotlib constructor. Inferred if None. + label_fontsize : int, optional, default: 16 + The font size of the y-label and y-label texts + legend_fontsize : int, optional, default: 14 + The font size of the legend text + title_fontsize : int, optional, default: 18 + The font size of the title text. Only relevant if `stacked=False` + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + rank_ecdf_color : str, optional, default: '#a34f4f' + The color to use for the rank ECDFs + fill_color : str, optional, default: 'grey' + The color of the fill arguments. + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + **kwargs : dict, optional, default: {} + Keyword arguments can be passed to control the behavior of ECDF simultaneous band computation + through the ``ecdf_bands_kwargs`` dictionary. See `simultaneous_ecdf_bands` for keyword arguments + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. + """ + + f, ax, ax_it, n_row, n_col, n_params, param_names = preprocess( + post_samples, prior_samples, collapse=False, fig_size=fig_size) + + # Compute fractional ranks (using broadcasting) + post_samples = K.constant(post_samples) + prior_samples = K.constant(prior_samples) + + # Adding an extra dimension to prior_samples using K.expand_dims + prior_samples_expanded = K.expand_dims(prior_samples, axis=1) + + # Performing element-wise comparison + comparison = K.less(post_samples, prior_samples_expanded) + + # Summing along the specified axis (axis=1) + sums = K.sum(K.cast(comparison, dtype='float32'), axis=1) + + # Getting the shape of post_samples + post_samples_shape = K.shape(post_samples) + + # Computing the ranks + ranks = sums / K.cast(post_samples_shape[1], dtype='float32') + + # ranks = ops.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) / post_samples.shape[1] + + + # Plot individual ecdf of parameters + for j in range(ranks.shape[-1]): + ecdf_single = ops.sort(ranks[:, j]) + xx = ecdf_single + yy = ops.arange(1, xx.shape[-1] + 1) / float(xx.shape[-1]) + + # Difference, if specified + if difference: + yy -= xx + + if stacked: + if j == 0: + ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDFs") + else: + ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95) + else: + ax.flat[j].plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDF") + + # Compute uniform ECDF and bands + alpha, z, L, H = simultaneous_ecdf_bands(post_samples.shape[0], **kwargs.pop("ecdf_bands_kwargs", {})) + + # Difference, if specified + if difference: + L -= z + H -= z + ylab = "ECDF difference" + else: + ylab = "ECDF" + + # Add simultaneous bounds + if stacked: + titles = [None] + axes = [ax] + else: + axes = ax.flat + if param_names is None: + titles = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + else: + titles = param_names + + for _ax, title in zip(axes, titles): + _ax.fill_between(z, L, H, color=fill_color, alpha=0.2, label=rf"{int((1-alpha) * 100)}$\%$ Confidence Bands") + + # Prettify plot + sns.despine(ax=_ax) + _ax.grid(alpha=0.35) + _ax.legend(fontsize=legend_fontsize) + _ax.set_title(title, fontsize=title_fontsize) + _ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) + _ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + # Only add x-labels to the bottom row + if stacked: + bottom_row = [ax] + else: + bottom_row = ax if n_row == 1 else ax[-1, :] + for _ax in bottom_row: + _ax.set_xlabel("Fractional rank statistic", fontsize=label_fontsize) + + # Only add y-labels to right left-most row + if n_row == 1: # if there is only one row, the ax array is 1D + axes[0].set_ylabel(ylab, fontsize=label_fontsize) + else: # if there is more than one row, the ax array is 2D + for _ax in ax[:, 0]: + _ax.set_ylabel(ylab, fontsize=label_fontsize) + + # Remove unused axes entirely + remove_unused_axes(ax) + + f.tight_layout() + return f diff --git a/bayesflow/experimental/diagnostics/plot_sbc_histograms.py b/bayesflow/experimental/diagnostics/plot_sbc_histograms.py new file mode 100644 index 000000000..51d29bd26 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_sbc_histograms.py @@ -0,0 +1,137 @@ +import logging +import seaborn as sns + +from scipy.stats import binom +from keras import ops +from keras import backend as K +from ..utils.plotutils import preprocess, remove_unused_axes + + +def plot_sbc_histograms( + post_samples, + prior_samples, + param_names: list = None, + fig_size: tuple = None, + num_bins: int = None, + binomial_interval: float = 0.99, + label_fontsize: int = 16, + title_fontsize: int = 18, + tick_fontsize: int = 12, + hist_color: str | tuple = "#a34f4f", + n_row: int = None, + n_col: int = None, +): + """Creates and plots publication-ready histograms of rank statistics for simulation-based calibration + (SBC) checks according to [1]. + + Any deviation from uniformity indicates miscalibration and thus poor convergence + of the networks or poor combination between generative model / networks. + + [1] Talts, S., Betancourt, M., Simpson, D., Vehtari, A., & Gelman, A. (2018). + Validating Bayesian inference algorithms with simulation-based calibration. + arXiv preprint arXiv:1804.06788. + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws obtained for generating n_data_sets + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + fig_size : tuple or None, optional, default : None + The figure size passed to the matplotlib constructor. Inferred if None + num_bins : int, optional, default: 10 + The number of bins to use for each marginal histogram + binomial_interval : float in (0, 1), optional, default: 0.99 + The width of the confidence interval for the binomial distribution + label_fontsize : int, optional, default: 16 + The font size of the y-label text + title_fontsize : int, optional, default: 18 + The font size of the title text + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + hist_color : str, optional, default '#a34f4f' + The color to use for the histogram body + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. + """ + + f, axarr, ax, n_row, n_col, n_params, param_names = preprocess(post_samples, prior_samples, fig_size=fig_size) + + # Determine the ratio of simulations to prior draws + n_sim, n_draws, _ = post_samples.shape + ratio = int(n_sim / n_draws) + + # Log a warning if N/B ratio recommended by Talts et al. (2018) < 20 + if ratio < 20: + logger = logging.getLogger() + logger.setLevel(logging.INFO) + logger.info( + f"The ratio of simulations / posterior draws should be > 20 " + + f"for reliable variance reduction, but your ratio is {ratio}.\ + Confidence intervals might be unreliable!" + ) + + # Set n_bins automatically, if nothing provided + if num_bins is None: + num_bins = int(ratio / 2) + # Attempt a fix if a single bin is determined so plot still makes sense + if num_bins == 1: + num_bins = 5 + + # Compute ranks (using broadcasting) + post_samples = K.constant(post_samples) + prior_samples = K.constant(prior_samples) + + # Adding an extra dimension to prior_samples using K.expand_dims + prior_samples_expanded = K.expand_dims(prior_samples, axis=1) + + # Performing element-wise comparison + comparison = K.less(post_samples, prior_samples_expanded) + + # Summing along the specified axis (axis=1) + ranks = K.sum(K.cast(comparison, dtype='float32'), axis=1) + # ranks = ops.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) + + # Compute confidence interval and mean + N = int(prior_samples.shape[0]) + # uniform distribution expected -> for all bins: equal probability + # p = 1 / num_bins that a rank lands in that bin + endpoints = binom.interval(binomial_interval, N, 1 / num_bins) + mean = N / num_bins # corresponds to binom.mean(N, 1 / num_bins) + + # Plot marginal histograms in a loop + for j in range(len(param_names)): + ax[j].axhspan(endpoints[0], endpoints[1], facecolor="gray", alpha=0.3) + ax[j].axhline(mean, color="gray", zorder=0, alpha=0.9) + sns.histplot(ranks[:, j], kde=False, ax=ax[j], color=hist_color, bins=num_bins, alpha=0.95) + ax[j].set_title(param_names[j], fontsize=title_fontsize) + ax[j].spines["right"].set_visible(False) + ax[j].spines["top"].set_visible(False) + ax[j].get_yaxis().set_ticks([]) + ax[j].set_ylabel("") + ax[j].tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax[j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + # Only add x-labels to the bottom row + bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + for _ax in bottom_row: + _ax.set_xlabel("Rank statistic", fontsize=label_fontsize) + + # Remove unused axes entirely + remove_unused_axes(axarr, n_params) + + f.tight_layout() + return f diff --git a/bayesflow/experimental/diagnostics/plot_z_score_contraction.py b/bayesflow/experimental/diagnostics/plot_z_score_contraction.py new file mode 100644 index 000000000..41ed78be4 --- /dev/null +++ b/bayesflow/experimental/diagnostics/plot_z_score_contraction.py @@ -0,0 +1,115 @@ +import seaborn as sns +from ..utils.plotutils import preprocess, postprocess + + +def plot_z_score_contraction( + post_samples, + prior_samples, + param_names: list = None, + fig_size: tuple = None, + label_fontsize: int = 16, + title_fontsize: int = 18, + tick_fontsize: int = 12, + color: str | tuple = "#8f2727", + x_label: str = "Posterior contraction", + y_label: str = "Posterior z-score", + n_col: int = None, + n_row: int = None, +): + """Implements a graphical check for global model sensitivity by plotting the posterior + z-score over the posterior contraction for each set of posterior samples in ``post_samples`` + according to [1]. + + - The definition of the posterior z-score is: + + post_z_score = (posterior_mean - true_parameters) / posterior_std + + And the score is adequate if it centers around zero and spreads roughly in the interval [-3, 3] + + - The definition of posterior contraction is: + + post_contraction = 1 - (posterior_variance / prior_variance) + + In other words, the posterior contraction is a proxy for the reduction in uncertainty gained by + replacing the prior with the posterior. The ideal posterior contraction tends to 1. + Contraction near zero indicates that the posterior variance is almost identical to + the prior variance for the particular marginal parameter distribution. + + Note: Means and variances will be estimated via their sample-based estimators. + + [1] Schad, D. J., Betancourt, M., & Vasishth, S. (2021). + Toward a principled Bayesian workflow in cognitive science. + Psychological methods, 26(1), 103. + + Paper also available at https://arxiv.org/abs/1904.12765 + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws (true parameters) obtained for generating the n_data_sets + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + fig_size : tuple or None, optional, default : None + The figure size passed to the matplotlib constructor. Inferred if None. + label_fontsize : int, optional, default: 16 + The font size of the y-label text + title_fontsize : int, optional, default: 18 + The font size of the title text + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + color : str, optional, default: '#8f2727' + The color for the true vs. estimated scatter points and error bars + x_label : str, optional, default: Posterior contraction + The label for the x-axis + y_label : str, optional, default: Posterior z-score + The label for the y-axis + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation from the expected shapes of ``post_samples`` and ``prior_samples``. + """ + + f, axarr, axarr_it, n_row, n_col, n_params, param_names = preprocess(post_samples, prior_samples, fig_size=fig_size) + + # Estimate posterior means and stds + post_means = post_samples.mean(axis=1) + post_stds = post_samples.std(axis=1, ddof=1) + post_vars = post_samples.var(axis=1, ddof=1) + + # Estimate prior variance + prior_vars = prior_samples.var(axis=0, keepdims=True, ddof=1) + + # Compute contraction + post_cont = 1 - (post_vars / prior_vars) + + # Compute posterior z score + z_score = (post_means - prior_samples) / post_stds + + # Loop and plot + for i, ax in enumerate(axarr_it): + if i >= n_params: + break + + ax.scatter(post_cont[:, i], z_score[:, i], color=color, alpha=0.5) + ax.set_title(param_names[i], fontsize=title_fontsize) + sns.despine(ax=ax) + ax.grid(alpha=0.5) + ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) + ax.set_xlim([-0.05, 1.05]) + + postprocess(axarr, axarr_it, n_row, n_col, n_params, x_label, y_label, label_fontsize) + + f.tight_layout() + return f From c5cc2fd2fd25821afaa7fe53a37980d26766acc0 Mon Sep 17 00:00:00 2001 From: Jerry Date: Fri, 14 Jun 2024 12:43:06 -0400 Subject: [PATCH 02/22] Bug fix and reformatting for diagnostics submodules --- .../diagnostics/plot_calibration_curves.py | 1 + .../diagnostics/plot_confusion_matrix.py | 1 + .../diagnostics/plot_distribution_2d.py | 6 ++++-- .../diagnostics/plot_latent_space_2d.py | 1 + .../experimental/diagnostics/plot_losses.py | 1 + .../diagnostics/plot_mmd_hypothesis_test.py | 1 + .../diagnostics/plot_posterior_2d.py | 1 + .../experimental/diagnostics/plot_prior_2d.py | 1 + .../experimental/diagnostics/plot_recovery.py | 1 + .../experimental/diagnostics/plot_sbc_ecdf.py | 1 + .../diagnostics/plot_sbc_histograms.py | 1 + .../diagnostics/plot_z_score_contraction.py | 1 + tests/test_diagnostics/__init__.py | 0 tests/test_diagnostics/test_diagnostics.py | 16 ++++++++++++++++ 14 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 tests/test_diagnostics/__init__.py create mode 100644 tests/test_diagnostics/test_diagnostics.py diff --git a/bayesflow/experimental/diagnostics/plot_calibration_curves.py b/bayesflow/experimental/diagnostics/plot_calibration_curves.py index 7efe79ca2..21bdb36a4 100644 --- a/bayesflow/experimental/diagnostics/plot_calibration_curves.py +++ b/bayesflow/experimental/diagnostics/plot_calibration_curves.py @@ -1,3 +1,4 @@ + from ..utils.plotutils import preprocess, postprocess from ..utils.computils import expected_calibration_error from keras import ops diff --git a/bayesflow/experimental/diagnostics/plot_confusion_matrix.py b/bayesflow/experimental/diagnostics/plot_confusion_matrix.py index ac522c778..8345b7276 100644 --- a/bayesflow/experimental/diagnostics/plot_confusion_matrix.py +++ b/bayesflow/experimental/diagnostics/plot_confusion_matrix.py @@ -1,3 +1,4 @@ + import matplotlib.pyplot as plt from keras import ops diff --git a/bayesflow/experimental/diagnostics/plot_distribution_2d.py b/bayesflow/experimental/diagnostics/plot_distribution_2d.py index 9b6855b10..28da8faba 100644 --- a/bayesflow/experimental/diagnostics/plot_distribution_2d.py +++ b/bayesflow/experimental/diagnostics/plot_distribution_2d.py @@ -1,3 +1,4 @@ + import logging import seaborn as sns import pandas as pd @@ -10,7 +11,7 @@ def plot_distribution_2d( color: str | tuple = "#8f2727", alpha: float = 0.9, n_params: int = None, - param_names: list = None, + param_names: list[str] = None, render: bool = True, **kwargs ): @@ -34,7 +35,8 @@ def plot_distribution_2d( param_names : list or None, optional, default: None The parameter names for nice plot titles. Inferred if None render : bool, optional, default: True - The boolean that determines whether to render the plot visually. If true, then the plot will render; otherwise, the plot will go through further steps for postprocessing + The boolean that determines whether to render the plot visually. If true, then the plot will render; + otherwise, the plot will go through further steps for postprocessing **kwargs : dict, optional Additional keyword arguments passed to the sns.PairGrid constructor """ diff --git a/bayesflow/experimental/diagnostics/plot_latent_space_2d.py b/bayesflow/experimental/diagnostics/plot_latent_space_2d.py index 7e91b2a11..d7426f7cd 100644 --- a/bayesflow/experimental/diagnostics/plot_latent_space_2d.py +++ b/bayesflow/experimental/diagnostics/plot_latent_space_2d.py @@ -1,3 +1,4 @@ + from .plot_distribution_2d import plot_distribution_2d from keras import backend as K diff --git a/bayesflow/experimental/diagnostics/plot_losses.py b/bayesflow/experimental/diagnostics/plot_losses.py index 0b0557c4e..45ff284da 100644 --- a/bayesflow/experimental/diagnostics/plot_losses.py +++ b/bayesflow/experimental/diagnostics/plot_losses.py @@ -1,3 +1,4 @@ + import seaborn as sns from keras import ops diff --git a/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py b/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py index 01b336094..1a935d60c 100644 --- a/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py +++ b/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py @@ -1,3 +1,4 @@ + import matplotlib.pyplot as plt import seaborn as sns diff --git a/bayesflow/experimental/diagnostics/plot_posterior_2d.py b/bayesflow/experimental/diagnostics/plot_posterior_2d.py index c546627c1..d2f96da67 100644 --- a/bayesflow/experimental/diagnostics/plot_posterior_2d.py +++ b/bayesflow/experimental/diagnostics/plot_posterior_2d.py @@ -1,3 +1,4 @@ + import pandas as pd import seaborn as sns diff --git a/bayesflow/experimental/diagnostics/plot_prior_2d.py b/bayesflow/experimental/diagnostics/plot_prior_2d.py index 5280486e4..6cc2ff7ce 100644 --- a/bayesflow/experimental/diagnostics/plot_prior_2d.py +++ b/bayesflow/experimental/diagnostics/plot_prior_2d.py @@ -1,3 +1,4 @@ + from .plot_distribution_2d import plot_distribution_2d diff --git a/bayesflow/experimental/diagnostics/plot_recovery.py b/bayesflow/experimental/diagnostics/plot_recovery.py index d8a4f83b7..65258fe2c 100644 --- a/bayesflow/experimental/diagnostics/plot_recovery.py +++ b/bayesflow/experimental/diagnostics/plot_recovery.py @@ -1,3 +1,4 @@ + import numpy as np from scipy.stats import median_abs_deviation from sklearn.metrics import r2_score diff --git a/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py b/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py index 1863d6620..d9546db44 100644 --- a/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py +++ b/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py @@ -1,3 +1,4 @@ + import seaborn as sns from keras import ops diff --git a/bayesflow/experimental/diagnostics/plot_sbc_histograms.py b/bayesflow/experimental/diagnostics/plot_sbc_histograms.py index 51d29bd26..6e74f5823 100644 --- a/bayesflow/experimental/diagnostics/plot_sbc_histograms.py +++ b/bayesflow/experimental/diagnostics/plot_sbc_histograms.py @@ -1,3 +1,4 @@ + import logging import seaborn as sns diff --git a/bayesflow/experimental/diagnostics/plot_z_score_contraction.py b/bayesflow/experimental/diagnostics/plot_z_score_contraction.py index 41ed78be4..5454957ff 100644 --- a/bayesflow/experimental/diagnostics/plot_z_score_contraction.py +++ b/bayesflow/experimental/diagnostics/plot_z_score_contraction.py @@ -1,3 +1,4 @@ + import seaborn as sns from ..utils.plotutils import preprocess, postprocess diff --git a/tests/test_diagnostics/__init__.py b/tests/test_diagnostics/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_diagnostics/test_diagnostics.py b/tests/test_diagnostics/test_diagnostics.py new file mode 100644 index 000000000..4018ee577 --- /dev/null +++ b/tests/test_diagnostics/test_diagnostics.py @@ -0,0 +1,16 @@ + +import keras +import pytest + +from bayesflow.experimental.diagnostics import ( + plot_distribution_2d, + plot_prior_2d, + plot_posterior_2d +) + + +@pytest.fixture() +def test_plot_distribution_2d(): + pass + +#TODO \ No newline at end of file From 16ac39e5d85947b067bfa948b8630079cb060b45 Mon Sep 17 00:00:00 2001 From: Jerry Date: Thu, 22 Aug 2024 09:44:37 -0400 Subject: [PATCH 03/22] Miscellaneous --- .../diagnostics/plot_calibration_curves.py | 111 ----------- .../diagnostics/plot_confusion_matrix.py | 125 ------------ .../diagnostics/plot_distribution_2d.py | 67 +++---- .../diagnostics/plot_latent_space_2d.py | 37 ---- .../experimental/diagnostics/plot_losses.py | 122 ------------ .../diagnostics/plot_mmd_hypothesis_test.py | 101 ---------- .../diagnostics/plot_posterior_2d.py | 135 ------------- .../experimental/diagnostics/plot_prior_2d.py | 50 ----- .../experimental/diagnostics/plot_recovery.py | 165 ---------------- .../experimental/diagnostics/plot_sbc_ecdf.py | 178 ------------------ .../diagnostics/plot_sbc_histograms.py | 138 -------------- .../diagnostics/plot_z_score_contraction.py | 116 ------------ 12 files changed, 34 insertions(+), 1311 deletions(-) diff --git a/bayesflow/experimental/diagnostics/plot_calibration_curves.py b/bayesflow/experimental/diagnostics/plot_calibration_curves.py index 21bdb36a4..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_calibration_curves.py +++ b/bayesflow/experimental/diagnostics/plot_calibration_curves.py @@ -1,111 +0,0 @@ - -from ..utils.plotutils import preprocess, postprocess -from ..utils.computils import expected_calibration_error -from keras import ops - - -def plot_calibration_curves( - true_models, - pred_models, - model_names: list = None, - num_bins: int = 10, - label_fontsize: int = 16, - legend_fontsize: int = 14, - title_fontsize: int = 18, - tick_fontsize: int = 12, - epsilon: float = 0.02, - fig_size: tuple = None, - color: str | tuple = "#8f2727", - x_label: str = "Predicted probability", - y_label: str = "True probability", - n_row: int = None, - n_col: int = None, -): - """Plots the calibration curves, the ECEs and the marginal histograms of predicted posterior model probabilities - for a model comparison problem. The marginal histograms inform about the fraction of predictions in each bin. - Depends on the ``expected_calibration_error`` function for computing the ECE. - - Parameters - ---------- - true_models : np.ndarray of shape (num_data_sets, num_models) - The one-hot-encoded true model indices per data set. - pred_models : np.ndarray of shape (num_data_sets, num_models) - The predicted posterior model probabilities (PMPs) per data set. - model_names : list or None, optional, default: None - The model names for nice plot titles. Inferred if None. - num_bins : int, optional, default: 10 - The number of bins to use for the calibration curves (and marginal histograms). - label_fontsize : int, optional, default: 16 - The font size of the y-label and y-label texts - legend_fontsize : int, optional, default: 14 - The font size of the legend text (ECE value) - title_fontsize : int, optional, default: 18 - The font size of the title text. Only relevant if `stacked=False` - tick_fontsize : int, optional, default: 12 - The font size of the axis ticklabels - epsilon : float, optional, default: 0.02 - A small amount to pad the [0, 1]-bounded axes from both side. - fig_size : tuple or None, optional, default: None - The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` - color : str, optional, default: '#8f2727' - The color of the calibration curves - x_label : str, optional, default: Predicted probability - The x-axis label - y_label : str, optional, default: True probability - The y-axis label - n_row : int, optional, default: None - The number of rows for the subplots. Dynamically determined if None. - n_col : int, optional, default: None - The number of columns for the subplots. Dynamically determined if None. - - Returns - ------- - fig : plt.Figure - the figure instance for optional saving - """ - - f, axarr, ax, n_row, n_col, num_models, model_names = preprocess(true_models, pred_models, fig_size=fig_size) - - # Compute calibration - cal_errs, probs_true, probs_pred = expected_calibration_error(true_models, pred_models, num_bins) - - # Plot marginal calibration curves in a loop - for j in range(num_models): - # Plot calibration curve - ax[j].plot(probs_pred[j], probs_true[j], "o-", color=color) - - # Plot PMP distribution over bins - uniform_bins = ops.linspace(0.0, 1.0, num_bins + 1) - norm_weights = ops.ones_like(pred_models) / len(pred_models) - ax[j].hist(pred_models[:, j], bins=uniform_bins, weights=norm_weights[:, j], color="grey", alpha=0.3) - - # Plot AB line - ax[j].plot((0, 1), (0, 1), "--", color="black", alpha=0.9) - - # Tweak plot - ax[j].tick_params(axis="both", which="major", labelsize=tick_fontsize) - ax[j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) - ax[j].set_title(model_names[j], fontsize=title_fontsize) - ax[j].spines["right"].set_visible(False) - ax[j].spines["top"].set_visible(False) - ax[j].set_xlim([0 - epsilon, 1 + epsilon]) - ax[j].set_ylim([0 - epsilon, 1 + epsilon]) - ax[j].set_xticks([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]) - ax[j].set_yticks([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]) - ax[j].grid(alpha=0.5) - - # Add ECE label - ax[j].text( - 0.1, - 0.9, - r"$\widehat{{\mathrm{{ECE}}}}$ = {0:.3f}".format(cal_errs[j]), - horizontalalignment="left", - verticalalignment="center", - transform=ax[j].transAxes, - size=legend_fontsize, - ) - - # Post-processing - postprocess(axarr, ax, n_row, n_col, num_models, x_label, y_label, label_fontsize) - - f.tight_layout() - return f diff --git a/bayesflow/experimental/diagnostics/plot_confusion_matrix.py b/bayesflow/experimental/diagnostics/plot_confusion_matrix.py index 8345b7276..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_confusion_matrix.py +++ b/bayesflow/experimental/diagnostics/plot_confusion_matrix.py @@ -1,125 +0,0 @@ - -import matplotlib.pyplot as plt - -from keras import ops -from keras import backend as K -from sklearn.metrics import confusion_matrix -from matplotlib.colors import LinearSegmentedColormap -from ..utils.plotutils import initialize_figure - - -def plot_confusion_matrix( - true_models, - pred_models, - model_names: list = None, - fig_size=(5, 5), - label_fontsize: int = 16, - title_fontsize: int = 18, - value_fontsize: int = 10, - tick_fontsize: int = 12, - xtick_rotation: int = None, - ytick_rotation: int = None, - normalize: bool = True, - cmap=None, - title: bool = True, -): - """Plots a confusion matrix for validating a neural network trained for Bayesian model comparison. - - Parameters - ---------- - true_models : np.ndarray of shape (num_data_sets, num_models) - The one-hot-encoded true model indices per data set. - pred_models : np.ndarray of shape (num_data_sets, num_models) - The predicted posterior model probabilities (PMPs) per data set. - model_names : list or None, optional, default: None - The model names for nice plot titles. Inferred if None. - fig_size : tuple or None, optional, default: (5, 5) - The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` - label_fontsize : int, optional, default: 16 - The font size of the y-label and y-label texts - title_fontsize : int, optional, default: 18 - The font size of the title text. - value_fontsize : int, optional, default: 10 - The font size of the text annotations and the colorbar tick labels. - tick_fontsize : int, optional, default: 12 - The font size of the axis label and model name texts. - xtick_rotation: int, optional, default: None - Rotation of x-axis tick labels (helps with long model names). - ytick_rotation: int, optional, default: None - Rotation of y-axis tick labels (helps with long model names). - normalize : bool, optional, default: True - A flag for normalization of the confusion matrix. - If True, each row of the confusion matrix is normalized to sum to 1. - cmap : matplotlib.colors.Colormap or str, optional, default: None - Colormap to be used for the cells. If a str, it should be the name of a registered colormap, - e.g., 'viridis'. Default colormap matches the BayesFlow defaults by ranging from white to red. - title : bool, optional, default True - A flag for adding 'Confusion Matrix' above the matrix. - - Returns - ------- - fig : plt.Figure - the figure instance for optional saving - """ - - if model_names is None: - num_models = true_models.shape[-1] - model_names = [rf"$M_{{{m}}}$" for m in range(1, num_models + 1)] - - if cmap is None: - cmap = LinearSegmentedColormap.from_list("", ["white", "#8f2727"]) - - # Flatten input - true_models = ops.argmax(true_models, axis=1) - pred_models = ops.argmax(pred_models, axis=1) - - # Compute confusion matrix - cm = confusion_matrix(true_models, pred_models) - - if normalize: - # Convert to Keras tensor - cm_tensor = K.constant(cm, dtype='float32') - - # Sum along rows and keep dimensions for broadcasting - cm_sum = K.sum(cm_tensor, axis=1, keepdims=True) - - # Broadcast division for normalization - cm_normalized = cm_tensor / cm_sum - - # Since we might need to use this outside of a session, evaluate using K.eval() if necessary - cm_normalized = K.eval(cm_normalized) - - # Initialize figure - fig, ax = initialize_figure(1, 1, fig_size=fig_size) - # fig, ax = plt.subplots(1, 1, figsize=fig_size) - im = ax.imshow(cm, interpolation="nearest", cmap=cmap) - cbar = ax.figure.colorbar(im, ax=ax, shrink=0.75) - - cbar.ax.tick_params(labelsize=value_fontsize) - - ax.set(xticks=ops.arange(cm.shape[1]), yticks=ops.arange(cm.shape[0])) - ax.set_xticklabels(model_names, fontsize=tick_fontsize) - if xtick_rotation: - plt.xticks(rotation=xtick_rotation, ha="right") - ax.set_yticklabels(model_names, fontsize=tick_fontsize) - if ytick_rotation: - plt.yticks(rotation=ytick_rotation) - ax.set_xlabel("Predicted model", fontsize=label_fontsize) - ax.set_ylabel("True model", fontsize=label_fontsize) - - # Loop over data dimensions and create text annotations - fmt = ".2f" if normalize else "d" - thresh = cm.max() / 2.0 - for i in range(cm.shape[0]): - for j in range(cm.shape[1]): - ax.text( - j, - i, - format(cm[i, j], fmt), - fontsize=value_fontsize, - ha="center", - va="center", - color="white" if cm[i, j] > thresh else "black", - ) - if title: - ax.set_title("Confusion Matrix", fontsize=title_fontsize) - return fig \ No newline at end of file diff --git a/bayesflow/experimental/diagnostics/plot_distribution_2d.py b/bayesflow/experimental/diagnostics/plot_distribution_2d.py index 28da8faba..f03ba7907 100644 --- a/bayesflow/experimental/diagnostics/plot_distribution_2d.py +++ b/bayesflow/experimental/diagnostics/plot_distribution_2d.py @@ -3,40 +3,42 @@ import seaborn as sns import pandas as pd +from bayesflow.types import Tensor def plot_distribution_2d( - samples, - context: str = None, - height: float = 2.5, - color: str | tuple = "#8f2727", - alpha: float = 0.9, - n_params: int = None, - param_names: list[str] = None, - render: bool = True, - **kwargs + samples: dict[str, Tensor] = None, + parameters: str = None, + n_params: int = None, + param_names: list = None, + height: float = 2.5, + color: str | tuple = "#8f2727", + alpha: float = 0.9, + render: bool = True, + **kwargs ): """ - A more flexible pairplot function for multiple distributions based upon collected samples. + A more flexible pair plot function for multiple distributions based upon collected samples. Parameters ---------- - samples : np.ndarray or tf.Tensor of shape (n_sim, n_params) + samples : dict[str, Tensor], default: None Sample draws from any dataset - context : str + parameters : str, default: None The context that the sample represents height : float, optional, default: 2.5 The height of the pair plot color : str, optional, default : '#8f2727' The color of the plot - alpha : float in [0, 1], optonal, default: 0.9 + alpha : float in [0, 1], optional, default: 0.9 The opacity of the plot n_params : int, optional, default: None The number of parameters in the collection of distributions param_names : list or None, optional, default: None The parameter names for nice plot titles. Inferred if None render : bool, optional, default: True - The boolean that determines whether to render the plot visually. If true, then the plot will render; - otherwise, the plot will go through further steps for postprocessing + The boolean that determines whether to render the plot visually. + If true, then the plot will render; + otherwise, the plot will go through further steps for postprocessing. **kwargs : dict, optional Additional keyword arguments passed to the sns.PairGrid constructor """ @@ -48,40 +50,39 @@ def plot_distribution_2d( n_params = dim # Generate context if there is none - if context is None: - context = "Generic" + if parameters is None: + parameters = "Parameter" # Generate titles if param_names is None: - titles = [f"{context} Param. {i}" for i in range(1, dim + 1)] + titles = [f"{parameters} {i}" for i in range(1, dim + 1)] else: - titles = [f"{context} {p}" for p in param_names] - + titles = [f"{parameters} {p}" for p in param_names] + # Convert samples to pd.DataFrame data_to_plot = pd.DataFrame(samples, columns=titles) # Generate plots - g = sns.PairGrid(data_to_plot, height=height, **kwargs) + artist = sns.PairGrid(data_to_plot, height=height, **kwargs) - g.map_diag(sns.histplot, fill=True, color=color, alpha=alpha, kde=True) + artist.map_diag(sns.histplot, fill=True, color=color, alpha=alpha, kde=True) # Incorporate exceptions for generating KDE plots - try: - g.map_lower(sns.kdeplot, fill=True, color=color, alpha=alpha) + try: + artist.map_lower(sns.kdeplot, fill=True, color=color, alpha=alpha) except Exception as e: logging.warning("KDE failed due to the following exception:\n" + repr(e) + "\nSubstituting scatter plot.") - g.map_lower(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) - - g.map_upper(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) + artist.map_lower(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) + + artist.map_upper(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) if render: # Generate grids for i in range(dim): for j in range(dim): - g.axes[i, j].grid(alpha=0.5) - + artist.axes[i, j].grid(alpha=0.5) + # Return figure - g.tight_layout() - return g - else: - return g + artist.tight_layout() + + return artist diff --git a/bayesflow/experimental/diagnostics/plot_latent_space_2d.py b/bayesflow/experimental/diagnostics/plot_latent_space_2d.py index d7426f7cd..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_latent_space_2d.py +++ b/bayesflow/experimental/diagnostics/plot_latent_space_2d.py @@ -1,37 +0,0 @@ - -from .plot_distribution_2d import plot_distribution_2d - -from keras import backend as K - - -def plot_latent_space_2d( - z_samples, - height: float = 2.5, - color="#8f2727", - **kwargs -): - """Creates pair plots for the latent space learned by the inference network. Enables - visual inspection of the latent space and whether its structure corresponds to the - one enforced by the optimization criterion. - - Parameters - ---------- - z_samples : np.ndarray or tf.Tensor of shape (n_sim, n_params) - The latent samples computed through a forward pass of the inference network. - height : float, optional, default: 2.5 - The height of the pair plot. - color : str, optional, default : '#8f2727' - The color of the plot - **kwargs : dict, optional - Additional keyword arguments passed to the sns.PairGrid constructor - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - """ - - # Try to convert z_samples, if eventually tf.Tensor is passed - if not isinstance(z_samples, K.tf.Tensor): - z_samples = K.constant(z_samples) - - plot_distribution_2d(z_samples, context="Latent Dim", height=height, color=color, render=True, **kwargs) diff --git a/bayesflow/experimental/diagnostics/plot_losses.py b/bayesflow/experimental/diagnostics/plot_losses.py index 45ff284da..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_losses.py +++ b/bayesflow/experimental/diagnostics/plot_losses.py @@ -1,122 +0,0 @@ - -import seaborn as sns - -from keras import ops -from ..utils.plotutils import initialize_figure - - -def plot_losses( - train_losses, - val_losses=None, - moving_average: bool = False, - ma_window_fraction: float = 0.01, - fig_size=None, - train_color: str = "#8f2727", - val_color: str = "black", - lw_train: int = 2, - lw_val: int = 3, - grid_alpha: float = 0.5, - legend_fontsize: int = 14, - label_fontsize: int = 14, - title_fontsize: int = 16, -): - """A generic helper function to plot the losses of a series of training epochs and runs. - - Parameters - ---------- - - train_losses : pd.DataFrame - The (plottable) history as returned by a train_[...] method of a ``Trainer`` instance. - Alternatively, you can just pass a data frame of validation losses instead of train losses, - if you only want to plot the validation loss. - val_losses : pd.DataFrame or None, optional, default: None - The (plottable) validation history as returned by a train_[...] method of a ``Trainer`` instance. - If left ``None``, only train losses are plotted. Should have the same number of columns - as ``train_losses``. - moving_average : bool, optional, default: False - A flag for adding a moving average line of the train_losses. - ma_window_fraction : int, optional, default: 0.01 - Window size for the moving average as a fraction of total training steps. - fig_size : tuple or None, optional, default: None - The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` - train_color : str, optional, default: '#8f2727' - The color for the train loss trajectory - val_color : str, optional, default: black - The color for the optional validation loss trajectory - lw_train : int, optional, default: 2 - The linewidth for the training loss curve - lw_val : int, optional, default: 3 - The linewidth for the validation loss curve - grid_alpha : float, optional, default 0.5 - The opacity factor for the background gridlines - legend_fontsize : int, optional, default: 14 - The font size of the legend text - label_fontsize : int, optional, default: 14 - The font size of the y-label text - title_fontsize : int, optional, default: 16 - The font size of the title text - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - - Raises - ------ - AssertionError - If the number of columns in ``train_losses`` does not match the - number of columns in ``val_losses``. - """ - - # Determine the number of rows for plot - n_row = len(train_losses.columns) - - # Initialize figure - f, axarr = initialize_figure(n_row=n_row, n_col=1, fig_size=(16, int(4 * n_row))) - - # if fig_size is None: - # fig_size = (16, int(4 * n_row)) - # f, axarr = plt.subplots(n_row, 1, figsize=fig_size) - - # Get the number of steps as an array - train_step_index = ops.arange(1, len(train_losses) + 1) - if val_losses is not None: - val_step = int(ops.floor(len(train_losses) / len(val_losses))) - val_step_index = train_step_index[(val_step - 1) :: val_step] - - # If unequal length due to some reason, attempt a fix - if val_step_index.shape[0] > val_losses.shape[0]: - val_step_index = val_step_index[: val_losses.shape[0]] - - # Loop through loss entries and populate plot - looper = [axarr] if n_row == 1 else axarr.flat - for i, ax in enumerate(looper): - # Plot train curve - ax.plot(train_step_index, train_losses.iloc[:, i], color=train_color, lw=lw_train, alpha=0.9, label="Training") - if moving_average and train_losses.columns[i] == "Loss": - moving_average_window = int(train_losses.shape[0] * ma_window_fraction) - smoothed_loss = train_losses.iloc[:, i].rolling(window=moving_average_window).mean() - ax.plot(train_step_index, smoothed_loss, color="grey", lw=lw_train, label="Training (Moving Average)") - - # Plot optional val curve - if val_losses is not None: - if i < val_losses.shape[1]: - ax.plot( - val_step_index, - val_losses.iloc[:, i], - linestyle="--", - marker="o", - color=val_color, - lw=lw_val, - label="Validation", - ) - # Schmuck - ax.set_xlabel("Training step #", fontsize=label_fontsize) - ax.set_ylabel("Value", fontsize=label_fontsize) - sns.despine(ax=ax) - ax.grid(alpha=grid_alpha) - ax.set_title(train_losses.columns[i], fontsize=title_fontsize) - # Only add legend if there is a validation curve - if val_losses is not None or moving_average: - ax.legend(fontsize=legend_fontsize) - f.tight_layout() - return f diff --git a/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py b/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py index 1a935d60c..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py +++ b/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py @@ -1,101 +0,0 @@ - -import matplotlib.pyplot as plt -import seaborn as sns - -from keras import ops - - -def plot_mmd_hypothesis_test( - mmd_null, - mmd_observed: float = None, - alpha_level: float = 0.05, - null_color: str | tuple = (0.16407, 0.020171, 0.577478), - observed_color: str | tuple = "red", - alpha_color: str | tuple = "orange", - truncate_v_lines_at_kde: bool = False, - x_min: float = None, - x_max: float = None, - bw_factor: float = 1.5, -): - """ - - Parameters - ---------- - mmd_null : np.ndarray - The samples from the MMD sampling distribution under the null hypothesis "the model is well-specified" - mmd_observed : float - The observed MMD value - alpha_level : float, optional, default: 0.05 - The rejection probability (type I error) - null_color : str or tuple, optional, default: (0.16407, 0.020171, 0.577478) - The color of the H0 sampling distribution - observed_color : str or tuple, optional, default: "red" - The color of the observed MMD - alpha_color : str or tuple, optional, default: "orange" - The color of the rejection area - truncate_v_lines_at_kde: bool, optional, default: False - true: cut off the vlines at the kde - false: continue kde lines across the plot - x_min : float, optional, default: None - The lower x-axis limit - x_max : float, optional, default: None - The upper x-axis limit - bw_factor : float, optional, default: 1.5 - bandwidth (aka. smoothing parameter) of the kernel density estimate - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - """ - - def draw_v_line_to_kde(x, kde_object, color, label=None, **kwargs): - kde_x, kde_y = kde_object.lines[0].get_data() - idx = ops.argmin(ops.abs(kde_x - x)) - plt.vlines(x=x, ymin=0, ymax=kde_y[idx], color=color, linewidth=3, label=label, **kwargs) - - def fill_area_under_kde(kde_object, x_start, x_end=None, **kwargs): - kde_x, kde_y = kde_object.lines[0].get_data() - if x_end is not None: - plt.fill_between(kde_x, kde_y, where=(kde_x >= x_start) & (kde_x <= x_end), interpolate=True, **kwargs) - else: - plt.fill_between(kde_x, kde_y, where=(kde_x >= x_start), interpolate=True, **kwargs) - - f = plt.figure(figsize=(8, 4)) - - kde = sns.kdeplot(mmd_null, fill=False, linewidth=0, bw_adjust=bw_factor) - sns.kdeplot(mmd_null, fill=True, alpha=0.12, color=null_color, bw_adjust=bw_factor) - - if truncate_v_lines_at_kde: - draw_v_line_to_kde(x=mmd_observed, kde_object=kde, color=observed_color, label=r"Observed data") - else: - plt.vlines( - x=mmd_observed, - ymin=0, - ymax=plt.gca().get_ylim()[1], - color=observed_color, - linewidth=3, - label=r"Observed data", - ) - - mmd_critical = ops.quantile(mmd_null, 1 - alpha_level) - fill_area_under_kde( - kde, mmd_critical, color=alpha_color, alpha=0.5, label=rf"{int(alpha_level*100)}% rejection area" - ) - - if truncate_v_lines_at_kde: - draw_v_line_to_kde(x=mmd_critical, kde_object=kde, color=alpha_color) - else: - plt.vlines(x=mmd_critical, color=alpha_color, linewidth=3, ymin=0, ymax=plt.gca().get_ylim()[1]) - - sns.kdeplot(mmd_null, fill=False, linewidth=3, color=null_color, label=r"$H_0$", bw_adjust=bw_factor) - - plt.xlabel(r"MMD", fontsize=20) - plt.ylabel("") - plt.yticks([]) - plt.xlim(x_min, x_max) - plt.tick_params(axis="both", which="major", labelsize=16) - - plt.legend(fontsize=20) - sns.despine() - - return f diff --git a/bayesflow/experimental/diagnostics/plot_posterior_2d.py b/bayesflow/experimental/diagnostics/plot_posterior_2d.py index d2f96da67..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_posterior_2d.py +++ b/bayesflow/experimental/diagnostics/plot_posterior_2d.py @@ -1,135 +0,0 @@ - -import pandas as pd -import seaborn as sns - -from matplotlib.lines import Line2D -from .plot_distribution_2d import plot_distribution_2d - - -def plot_posterior_2d( - posterior_draws, - prior=None, - prior_draws=None, - param_names: list = None, - height: int = 3, - label_fontsize: int = 14, - legend_fontsize: int = 16, - tick_fontsize: int = 12, - post_color: str | tuple = "#8f2727", - prior_color: str | tuple = "gray", - post_alpha: float = 0.9, - prior_alpha: float = 0.7, - **kwargs -): - """Generates a bivariate pairplot given posterior draws and optional prior or prior draws. - - posterior_draws : np.ndarray of shape (n_post_draws, n_params) - The posterior draws obtained for a SINGLE observed data set. - prior : bayesflow.forward_inference.Prior instance or None, optional, default: None - The optional prior object having an input-output signature as given by ayesflow.forward_inference.Prior - prior_draws : np.ndarray of shape (n_prior_draws, n_params) or None, optonal (default: None) - The optional prior draws obtained from the prior. If both prior and prior_draws are provided, prior_draws - will be used. - param_names : list or None, optional, default: None - The parameter names for nice plot titles. Inferred if None - height : float, optional, default: 3 - The height of the pairplot - label_fontsize : int, optional, default: 14 - The font size of the x and y-label texts (parameter names) - legend_fontsize : int, optional, default: 16 - The font size of the legend text - tick_fontsize : int, optional, default: 12 - The font size of the axis ticklabels - post_color : str, optional, default: '#8f2727' - The color for the posterior histograms and KDEs - priors_color : str, optional, default: gray - The color for the optional prior histograms and KDEs - post_alpha : float in [0, 1], optonal, default: 0.9 - The opacity of the posterior plots - prior_alpha : float in [0, 1], optonal, default: 0.7 - The opacity of the prior plots - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - - Raises - ------ - AssertionError - If the shape of posterior_draws is not 2-dimensional. - """ - - # Ensure correct shape - assert ( - len(posterior_draws.shape) - ) == 2, "Shape of `posterior_samples` for a single data set should be 2 dimensional!" - - # Plot posterior first - g = plot_distribution_2d( - posterior_draws, - context="\\theta", - param_names=param_names, - render=False, - **kwargs - ) - - # Obtain n_draws and n_params - n_draws, n_params = posterior_draws.shape - - # If prior object is given and no draws, obtain draws - if prior is not None and prior_draws is None: - draws = prior(n_draws) - if type(draws) is dict: - prior_draws = draws["prior_draws"] - else: - prior_draws = draws - - # Attempt to determine parameter names - if param_names is None: - if hasattr(prior, "param_names"): - if prior.param_names is not None: - param_names = prior.param_names - else: - param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] - else: - param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] - - # Add prior, if given - if prior_draws is not None: - prior_draws_df = pd.DataFrame(prior_draws, columns=param_names) - g.data = prior_draws_df - g.map_diag(sns.histplot, fill=True, color=prior_color, alpha=prior_alpha, kde=True, zorder=-1) - g.map_lower(sns.kdeplot, fill=True, color=prior_color, alpha=prior_alpha, zorder=-1) - - # Add legend, if prior also given - if prior_draws is not None or prior is not None: - handles = [ - Line2D(xdata=[], ydata=[], color=post_color, lw=3, alpha=post_alpha), - Line2D(xdata=[], ydata=[], color=prior_color, lw=3, alpha=prior_alpha), - ] - g.legend(handles, ["Posterior", "Prior"], fontsize=legend_fontsize, loc="center right") - - n_row, n_col = g.axes.shape - - for i in range(n_row): - # Remove upper axis - for j in range(i+1, n_col): - g.axes[i, j].axis("off") - - # Modify tick sizes - for j in range(i + 1): - g.axes[i, j].tick_params(axis="both", which="major", labelsize=tick_fontsize) - g.axes[i, j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) - - # Add nice labels - for i, param_name in enumerate(param_names): - g.axes[i, 0].set_ylabel(param_name, fontsize=label_fontsize) - g.axes[len(param_names) - 1, i].set_xlabel(param_name, fontsize=label_fontsize) - - # Add grids - for i in range(n_params): - for j in range(n_params): - g.axes[i, j].grid(alpha=0.5) - - g.tight_layout() - return g diff --git a/bayesflow/experimental/diagnostics/plot_prior_2d.py b/bayesflow/experimental/diagnostics/plot_prior_2d.py index 6cc2ff7ce..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_prior_2d.py +++ b/bayesflow/experimental/diagnostics/plot_prior_2d.py @@ -1,50 +0,0 @@ - -from .plot_distribution_2d import plot_distribution_2d - - -def plot_prior_2d( - prior, - param_names: list = None, - n_samples: int = 2000, - height: float = 2.5, - color: str | tuple = "#8f2727", - **kwargs -): - """Creates pair-plots for a given joint prior. - - Parameters - ---------- - prior : callable - The prior object which takes a single integer argument and generates random draws. - param_names : list of str or None, optional, default None - An optional list of strings which - n_samples : int, optional, default: 1000 - The number of random draws from the joint prior - height : float, optional, default: 2.5 - The height of the pair plot - color : str, optional, default : '#8f2727' - The color of the plot - **kwargs : dict, optional - Additional keyword arguments passed to the sns.PairGrid constructor - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - """ - - # Generate prior draws - prior_samples = prior(n_samples) - - # Handle dict type - if type(prior_samples) is dict: - prior_samples = prior_samples["prior_draws"] - - plot_distribution_2d( - prior_samples, - context="Prior", - height=height, - color=color, - param_names=param_names, - render=True, - **kwargs - ) diff --git a/bayesflow/experimental/diagnostics/plot_recovery.py b/bayesflow/experimental/diagnostics/plot_recovery.py index 65258fe2c..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_recovery.py +++ b/bayesflow/experimental/diagnostics/plot_recovery.py @@ -1,165 +0,0 @@ - -import numpy as np -from scipy.stats import median_abs_deviation -from sklearn.metrics import r2_score -import seaborn as sns - -from ..utils.plotutils import preprocess, postprocess - - -def plot_recovery( - post_samples, - prior_samples, - point_agg=np.median, - uncertainty_agg=median_abs_deviation, - param_names: list = None, - fig_size: tuple = None, - label_fontsize: int = 16, - title_fontsize: int = 18, - metric_fontsize: int = 16, - tick_fontsize: int = 12, - add_corr: bool = True, - add_r2: bool = True, - color: str | tuple = "#8f2727", - n_col: int = None, - n_row: int = None, - xlabel: str = "Ground truth", - ylabel: str = "Estimated", - **kwargs, -): - """Creates and plots publication-ready recovery plot with true vs. point estimate + uncertainty. - The point estimate can be controlled with the ``point_agg`` argument, and the uncertainty estimate - can be controlled with the ``uncertainty_agg`` argument. - - This plot yields similar information as the "posterior z-score", but allows for generic - point and uncertainty estimates: - - https://betanalpha.github.io/assets/case_studies/principled_bayesian_workflow.html - - Important: Posterior aggregates play no special role in Bayesian inference and should only - be used heuristically. For instance, in the case of multi-modal posteriors, common point - estimates, such as mean, (geometric) median, or maximum a posteriori (MAP) mean nothing. - - Parameters - ---------- - post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) - The posterior draws obtained from n_data_sets - prior_samples : np.ndarray of shape (n_data_sets, n_params) - The prior draws (true parameters) obtained for generating the n_data_sets - point_agg : callable, optional, default: ``np.median`` - The function to apply to the posterior draws to get a point estimate for each marginal. - The default computes the marginal median for each marginal posterior as a robust - point estimate. - uncertainty_agg : callable or None, optional, default: scipy.stats.median_abs_deviation - The function to apply to the posterior draws to get an uncertainty estimate. - If ``None`` provided, a simple scatter using only ``point_agg`` will be plotted. - param_names : list or None, optional, default: None - The parameter names for nice plot titles. Inferred if None - fig_size : tuple or None, optional, default : None - The figure size passed to the matplotlib constructor. Inferred if None. - label_fontsize : int, optional, default: 16 - The font size of the y-label text - title_fontsize : int, optional, default: 18 - The font size of the title text - metric_fontsize : int, optional, default: 16 - The font size of the goodness-of-fit metric (if provided) - tick_fontsize : int, optional, default: 12 - The font size of the axis tick labels - add_corr : bool, optional, default: True - A flag for adding correlation between true and estimates to the plot - add_r2 : bool, optional, default: True - A flag for adding R^2 between true and estimates to the plot - color : str, optional, default: '#8f2727' - The color for the true vs. estimated scatter points and error bars - n_row : int, optional, default: None - The number of rows for the subplots. Dynamically determined if None. - n_col : int, optional, default: None - The number of columns for the subplots. Dynamically determined if None. - xlabel : str, optional, default: 'Ground truth' - The label on the x-axis of the plot - ylabel : str, optional, default: 'Estimated' - The label on the y-axis of the plot - **kwargs : optional - Additional keyword arguments passed to ax.errorbar or ax.scatter. - Example: `rasterized=True` to reduce PDF file size with many dots - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - - Raises - ------ - ShapeError - If there is a deviation from the expected shapes of ``post_samples`` and ``prior_samples``. - """ - - # Preprocess - f, axarr, axarr_it, n_row, n_col, n_params, param_names = preprocess( - post_samples, prior_samples, fig_size=fig_size - ) - - # Compute point estimates and uncertainties - est = point_agg(post_samples, axis=1) - if uncertainty_agg is not None: - u = uncertainty_agg(post_samples, axis=1) - - # Loop and plot - for i, ax in enumerate(axarr_it): - if i >= n_params: - break - - # Add scatter and error bars - if uncertainty_agg is not None: - _ = ax.errorbar(prior_samples[:, i], est[:, i], yerr=u[:, i], fmt="o", alpha=0.5, color=color, **kwargs) - else: - _ = ax.scatter(prior_samples[:, i], est[:, i], alpha=0.5, color=color, **kwargs) - - # Make plots quadratic to avoid visual illusions - lower = min(prior_samples[:, i].min(), est[:, i].min()) - upper = max(prior_samples[:, i].max(), est[:, i].max()) - eps = (upper - lower) * 0.1 - ax.set_xlim([lower - eps, upper + eps]) - ax.set_ylim([lower - eps, upper + eps]) - ax.plot( - [ax.get_xlim()[0], ax.get_xlim()[1]], - [ax.get_ylim()[0], ax.get_ylim()[1]], - color="black", - alpha=0.9, - linestyle="dashed", - ) - - # Add optional metrics and title - if add_r2: - r2 = r2_score(prior_samples[:, i], est[:, i]) - ax.text( - 0.1, - 0.9, - "$R^2$ = {:.3f}".format(r2), - horizontalalignment="left", - verticalalignment="center", - transform=ax.transAxes, - size=metric_fontsize, - ) - if add_corr: - corr = np.corrcoef(prior_samples[:, i], est[:, i])[0, 1] - ax.text( - 0.1, - 0.8, - "$r$ = {:.3f}".format(corr), - horizontalalignment="left", - verticalalignment="center", - transform=ax.transAxes, - size=metric_fontsize, - ) - ax.set_title(param_names[i], fontsize=title_fontsize) - - # Prettify - sns.despine(ax=ax) - ax.grid(alpha=0.5) - ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) - ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) - - postprocess(axarr, axarr_it, n_row, n_col, n_params, xlabel, ylabel, label_fontsize) - - f.tight_layout() - return f diff --git a/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py b/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py index d9546db44..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py +++ b/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py @@ -1,178 +0,0 @@ - -import seaborn as sns - -from keras import ops -from keras import backend as K -from ..utils.computils import simultaneous_ecdf_bands -from ..utils.plotutils import preprocess, remove_unused_axes - - -def plot_sbc_ecdf( - post_samples, - prior_samples, - difference: bool = False, - stacked: bool = False, - fig_size: tuple = None, - param_names: list = None, - label_fontsize: int = 16, - legend_fontsize: int = 14, - title_fontsize: int = 18, - tick_fontsize: int = 12, - rank_ecdf_color: str | tuple = "#a34f4f", - fill_color: str | tuple = "grey", - n_row: int = None, - n_col: int = None, - **kwargs, -): - """Creates the empirical CDFs for each marginal rank distribution and plots it against - a uniform ECDF. ECDF simultaneous bands are drawn using simulations from the uniform, - as proposed by [1]. - - For models with many parameters, use `stacked=True` to obtain an idea of the overall calibration - of a posterior approximator. - - [1] Säilynoja, T., Bürkner, P. C., & Vehtari, A. (2022). Graphical test for discrete uniformity and - its applications in goodness-of-fit evaluation and multiple sample comparison. Statistics and Computing, - 32(2), 1-21. https://arxiv.org/abs/2103.10522 - - Parameters - ---------- - post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) - The posterior draws obtained from n_data_sets - prior_samples : np.ndarray of shape (n_data_sets, n_params) - The prior draws obtained for generating n_data_sets - difference : bool, optional, default: False - If `True`, plots the ECDF difference. Enables a more dynamic visualization range. - stacked : bool, optional, default: False - If `True`, all ECDFs will be plotted on the same plot. If `False`, each ECDF will - have its own subplot, similar to the behavior of `plot_sbc_histograms`. - param_names : list or None, optional, default: None - The parameter names for nice plot titles. Inferred if None. Only relevant if `stacked=False`. - fig_size : tuple or None, optional, default: None - The figure size passed to the matplotlib constructor. Inferred if None. - label_fontsize : int, optional, default: 16 - The font size of the y-label and y-label texts - legend_fontsize : int, optional, default: 14 - The font size of the legend text - title_fontsize : int, optional, default: 18 - The font size of the title text. Only relevant if `stacked=False` - tick_fontsize : int, optional, default: 12 - The font size of the axis ticklabels - rank_ecdf_color : str, optional, default: '#a34f4f' - The color to use for the rank ECDFs - fill_color : str, optional, default: 'grey' - The color of the fill arguments. - n_row : int, optional, default: None - The number of rows for the subplots. Dynamically determined if None. - n_col : int, optional, default: None - The number of columns for the subplots. Dynamically determined if None. - **kwargs : dict, optional, default: {} - Keyword arguments can be passed to control the behavior of ECDF simultaneous band computation - through the ``ecdf_bands_kwargs`` dictionary. See `simultaneous_ecdf_bands` for keyword arguments - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - - Raises - ------ - ShapeError - If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. - """ - - f, ax, ax_it, n_row, n_col, n_params, param_names = preprocess( - post_samples, prior_samples, collapse=False, fig_size=fig_size) - - # Compute fractional ranks (using broadcasting) - post_samples = K.constant(post_samples) - prior_samples = K.constant(prior_samples) - - # Adding an extra dimension to prior_samples using K.expand_dims - prior_samples_expanded = K.expand_dims(prior_samples, axis=1) - - # Performing element-wise comparison - comparison = K.less(post_samples, prior_samples_expanded) - - # Summing along the specified axis (axis=1) - sums = K.sum(K.cast(comparison, dtype='float32'), axis=1) - - # Getting the shape of post_samples - post_samples_shape = K.shape(post_samples) - - # Computing the ranks - ranks = sums / K.cast(post_samples_shape[1], dtype='float32') - - # ranks = ops.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) / post_samples.shape[1] - - - # Plot individual ecdf of parameters - for j in range(ranks.shape[-1]): - ecdf_single = ops.sort(ranks[:, j]) - xx = ecdf_single - yy = ops.arange(1, xx.shape[-1] + 1) / float(xx.shape[-1]) - - # Difference, if specified - if difference: - yy -= xx - - if stacked: - if j == 0: - ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDFs") - else: - ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95) - else: - ax.flat[j].plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDF") - - # Compute uniform ECDF and bands - alpha, z, L, H = simultaneous_ecdf_bands(post_samples.shape[0], **kwargs.pop("ecdf_bands_kwargs", {})) - - # Difference, if specified - if difference: - L -= z - H -= z - ylab = "ECDF difference" - else: - ylab = "ECDF" - - # Add simultaneous bounds - if stacked: - titles = [None] - axes = [ax] - else: - axes = ax.flat - if param_names is None: - titles = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] - else: - titles = param_names - - for _ax, title in zip(axes, titles): - _ax.fill_between(z, L, H, color=fill_color, alpha=0.2, label=rf"{int((1-alpha) * 100)}$\%$ Confidence Bands") - - # Prettify plot - sns.despine(ax=_ax) - _ax.grid(alpha=0.35) - _ax.legend(fontsize=legend_fontsize) - _ax.set_title(title, fontsize=title_fontsize) - _ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) - _ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) - - # Only add x-labels to the bottom row - if stacked: - bottom_row = [ax] - else: - bottom_row = ax if n_row == 1 else ax[-1, :] - for _ax in bottom_row: - _ax.set_xlabel("Fractional rank statistic", fontsize=label_fontsize) - - # Only add y-labels to right left-most row - if n_row == 1: # if there is only one row, the ax array is 1D - axes[0].set_ylabel(ylab, fontsize=label_fontsize) - else: # if there is more than one row, the ax array is 2D - for _ax in ax[:, 0]: - _ax.set_ylabel(ylab, fontsize=label_fontsize) - - # Remove unused axes entirely - remove_unused_axes(ax) - - f.tight_layout() - return f diff --git a/bayesflow/experimental/diagnostics/plot_sbc_histograms.py b/bayesflow/experimental/diagnostics/plot_sbc_histograms.py index 6e74f5823..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_sbc_histograms.py +++ b/bayesflow/experimental/diagnostics/plot_sbc_histograms.py @@ -1,138 +0,0 @@ - -import logging -import seaborn as sns - -from scipy.stats import binom -from keras import ops -from keras import backend as K -from ..utils.plotutils import preprocess, remove_unused_axes - - -def plot_sbc_histograms( - post_samples, - prior_samples, - param_names: list = None, - fig_size: tuple = None, - num_bins: int = None, - binomial_interval: float = 0.99, - label_fontsize: int = 16, - title_fontsize: int = 18, - tick_fontsize: int = 12, - hist_color: str | tuple = "#a34f4f", - n_row: int = None, - n_col: int = None, -): - """Creates and plots publication-ready histograms of rank statistics for simulation-based calibration - (SBC) checks according to [1]. - - Any deviation from uniformity indicates miscalibration and thus poor convergence - of the networks or poor combination between generative model / networks. - - [1] Talts, S., Betancourt, M., Simpson, D., Vehtari, A., & Gelman, A. (2018). - Validating Bayesian inference algorithms with simulation-based calibration. - arXiv preprint arXiv:1804.06788. - - Parameters - ---------- - post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) - The posterior draws obtained from n_data_sets - prior_samples : np.ndarray of shape (n_data_sets, n_params) - The prior draws obtained for generating n_data_sets - param_names : list or None, optional, default: None - The parameter names for nice plot titles. Inferred if None - fig_size : tuple or None, optional, default : None - The figure size passed to the matplotlib constructor. Inferred if None - num_bins : int, optional, default: 10 - The number of bins to use for each marginal histogram - binomial_interval : float in (0, 1), optional, default: 0.99 - The width of the confidence interval for the binomial distribution - label_fontsize : int, optional, default: 16 - The font size of the y-label text - title_fontsize : int, optional, default: 18 - The font size of the title text - tick_fontsize : int, optional, default: 12 - The font size of the axis ticklabels - hist_color : str, optional, default '#a34f4f' - The color to use for the histogram body - n_row : int, optional, default: None - The number of rows for the subplots. Dynamically determined if None. - n_col : int, optional, default: None - The number of columns for the subplots. Dynamically determined if None. - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - - Raises - ------ - ShapeError - If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. - """ - - f, axarr, ax, n_row, n_col, n_params, param_names = preprocess(post_samples, prior_samples, fig_size=fig_size) - - # Determine the ratio of simulations to prior draws - n_sim, n_draws, _ = post_samples.shape - ratio = int(n_sim / n_draws) - - # Log a warning if N/B ratio recommended by Talts et al. (2018) < 20 - if ratio < 20: - logger = logging.getLogger() - logger.setLevel(logging.INFO) - logger.info( - f"The ratio of simulations / posterior draws should be > 20 " - + f"for reliable variance reduction, but your ratio is {ratio}.\ - Confidence intervals might be unreliable!" - ) - - # Set n_bins automatically, if nothing provided - if num_bins is None: - num_bins = int(ratio / 2) - # Attempt a fix if a single bin is determined so plot still makes sense - if num_bins == 1: - num_bins = 5 - - # Compute ranks (using broadcasting) - post_samples = K.constant(post_samples) - prior_samples = K.constant(prior_samples) - - # Adding an extra dimension to prior_samples using K.expand_dims - prior_samples_expanded = K.expand_dims(prior_samples, axis=1) - - # Performing element-wise comparison - comparison = K.less(post_samples, prior_samples_expanded) - - # Summing along the specified axis (axis=1) - ranks = K.sum(K.cast(comparison, dtype='float32'), axis=1) - # ranks = ops.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) - - # Compute confidence interval and mean - N = int(prior_samples.shape[0]) - # uniform distribution expected -> for all bins: equal probability - # p = 1 / num_bins that a rank lands in that bin - endpoints = binom.interval(binomial_interval, N, 1 / num_bins) - mean = N / num_bins # corresponds to binom.mean(N, 1 / num_bins) - - # Plot marginal histograms in a loop - for j in range(len(param_names)): - ax[j].axhspan(endpoints[0], endpoints[1], facecolor="gray", alpha=0.3) - ax[j].axhline(mean, color="gray", zorder=0, alpha=0.9) - sns.histplot(ranks[:, j], kde=False, ax=ax[j], color=hist_color, bins=num_bins, alpha=0.95) - ax[j].set_title(param_names[j], fontsize=title_fontsize) - ax[j].spines["right"].set_visible(False) - ax[j].spines["top"].set_visible(False) - ax[j].get_yaxis().set_ticks([]) - ax[j].set_ylabel("") - ax[j].tick_params(axis="both", which="major", labelsize=tick_fontsize) - ax[j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) - - # Only add x-labels to the bottom row - bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] - for _ax in bottom_row: - _ax.set_xlabel("Rank statistic", fontsize=label_fontsize) - - # Remove unused axes entirely - remove_unused_axes(axarr, n_params) - - f.tight_layout() - return f diff --git a/bayesflow/experimental/diagnostics/plot_z_score_contraction.py b/bayesflow/experimental/diagnostics/plot_z_score_contraction.py index 5454957ff..e69de29bb 100644 --- a/bayesflow/experimental/diagnostics/plot_z_score_contraction.py +++ b/bayesflow/experimental/diagnostics/plot_z_score_contraction.py @@ -1,116 +0,0 @@ - -import seaborn as sns -from ..utils.plotutils import preprocess, postprocess - - -def plot_z_score_contraction( - post_samples, - prior_samples, - param_names: list = None, - fig_size: tuple = None, - label_fontsize: int = 16, - title_fontsize: int = 18, - tick_fontsize: int = 12, - color: str | tuple = "#8f2727", - x_label: str = "Posterior contraction", - y_label: str = "Posterior z-score", - n_col: int = None, - n_row: int = None, -): - """Implements a graphical check for global model sensitivity by plotting the posterior - z-score over the posterior contraction for each set of posterior samples in ``post_samples`` - according to [1]. - - - The definition of the posterior z-score is: - - post_z_score = (posterior_mean - true_parameters) / posterior_std - - And the score is adequate if it centers around zero and spreads roughly in the interval [-3, 3] - - - The definition of posterior contraction is: - - post_contraction = 1 - (posterior_variance / prior_variance) - - In other words, the posterior contraction is a proxy for the reduction in uncertainty gained by - replacing the prior with the posterior. The ideal posterior contraction tends to 1. - Contraction near zero indicates that the posterior variance is almost identical to - the prior variance for the particular marginal parameter distribution. - - Note: Means and variances will be estimated via their sample-based estimators. - - [1] Schad, D. J., Betancourt, M., & Vasishth, S. (2021). - Toward a principled Bayesian workflow in cognitive science. - Psychological methods, 26(1), 103. - - Paper also available at https://arxiv.org/abs/1904.12765 - - Parameters - ---------- - post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) - The posterior draws obtained from n_data_sets - prior_samples : np.ndarray of shape (n_data_sets, n_params) - The prior draws (true parameters) obtained for generating the n_data_sets - param_names : list or None, optional, default: None - The parameter names for nice plot titles. Inferred if None - fig_size : tuple or None, optional, default : None - The figure size passed to the matplotlib constructor. Inferred if None. - label_fontsize : int, optional, default: 16 - The font size of the y-label text - title_fontsize : int, optional, default: 18 - The font size of the title text - tick_fontsize : int, optional, default: 12 - The font size of the axis ticklabels - color : str, optional, default: '#8f2727' - The color for the true vs. estimated scatter points and error bars - x_label : str, optional, default: Posterior contraction - The label for the x-axis - y_label : str, optional, default: Posterior z-score - The label for the y-axis - n_row : int, optional, default: None - The number of rows for the subplots. Dynamically determined if None. - n_col : int, optional, default: None - The number of columns for the subplots. Dynamically determined if None. - - Returns - ------- - f : plt.Figure - the figure instance for optional saving - - Raises - ------ - ShapeError - If there is a deviation from the expected shapes of ``post_samples`` and ``prior_samples``. - """ - - f, axarr, axarr_it, n_row, n_col, n_params, param_names = preprocess(post_samples, prior_samples, fig_size=fig_size) - - # Estimate posterior means and stds - post_means = post_samples.mean(axis=1) - post_stds = post_samples.std(axis=1, ddof=1) - post_vars = post_samples.var(axis=1, ddof=1) - - # Estimate prior variance - prior_vars = prior_samples.var(axis=0, keepdims=True, ddof=1) - - # Compute contraction - post_cont = 1 - (post_vars / prior_vars) - - # Compute posterior z score - z_score = (post_means - prior_samples) / post_stds - - # Loop and plot - for i, ax in enumerate(axarr_it): - if i >= n_params: - break - - ax.scatter(post_cont[:, i], z_score[:, i], color=color, alpha=0.5) - ax.set_title(param_names[i], fontsize=title_fontsize) - sns.despine(ax=ax) - ax.grid(alpha=0.5) - ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) - ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) - ax.set_xlim([-0.05, 1.05]) - - postprocess(axarr, axarr_it, n_row, n_col, n_params, x_label, y_label, label_fontsize) - - f.tight_layout() - return f From e5c7ee8f3aea42eb3f3579eef5480b3dc5396a56 Mon Sep 17 00:00:00 2001 From: Jerry Date: Tue, 24 Sep 2024 18:10:43 -0400 Subject: [PATCH 04/22] Update with dev --- bayesflow/data_adapters/__init__.py | 6 + .../data_adapters/composite_data_adapter.py | 52 ++ .../concatenate_keys_data_adapter.py | 105 +++ bayesflow/data_adapters/data_adapter.py | 29 + .../flow_matching_data_adapter.py | 44 ++ .../data_adapters/transforms/__init__.py | 5 + .../transforms/constrain_bounded.py | 140 ++++ .../transforms/lambda_transform.py | 47 ++ .../transforms/numpy_transform.py | 38 + .../data_adapters/transforms/standardize.py | 62 ++ .../data_adapters/transforms/transform.py | 50 ++ .../simulators/composite_lambda_simulator.py | 20 + env_dev.yml | 25 + examples/TwoMoons_FlowMatching.ipynb | 670 ++++++++++++++++++ tests/test_data_adapters/__init__.py | 0 tests/test_data_adapters/conftest.py | 42 ++ .../test_data_adapters/test_data_adapters.py | 22 + 17 files changed, 1357 insertions(+) create mode 100644 bayesflow/data_adapters/__init__.py create mode 100644 bayesflow/data_adapters/composite_data_adapter.py create mode 100644 bayesflow/data_adapters/concatenate_keys_data_adapter.py create mode 100644 bayesflow/data_adapters/data_adapter.py create mode 100644 bayesflow/data_adapters/flow_matching_data_adapter.py create mode 100644 bayesflow/data_adapters/transforms/__init__.py create mode 100644 bayesflow/data_adapters/transforms/constrain_bounded.py create mode 100644 bayesflow/data_adapters/transforms/lambda_transform.py create mode 100644 bayesflow/data_adapters/transforms/numpy_transform.py create mode 100644 bayesflow/data_adapters/transforms/standardize.py create mode 100644 bayesflow/data_adapters/transforms/transform.py create mode 100644 bayesflow/simulators/composite_lambda_simulator.py create mode 100644 env_dev.yml create mode 100644 examples/TwoMoons_FlowMatching.ipynb create mode 100644 tests/test_data_adapters/__init__.py create mode 100644 tests/test_data_adapters/conftest.py create mode 100644 tests/test_data_adapters/test_data_adapters.py diff --git a/bayesflow/data_adapters/__init__.py b/bayesflow/data_adapters/__init__.py new file mode 100644 index 000000000..15a202cfc --- /dev/null +++ b/bayesflow/data_adapters/__init__.py @@ -0,0 +1,6 @@ +from . import transforms + +from .composite_data_adapter import CompositeDataAdapter +from .concatenate_keys_data_adapter import ConcatenateKeysDataAdapter +from .data_adapter import DataAdapter +from .flow_matching_data_adapter import FlowMatchingDataAdapter diff --git a/bayesflow/data_adapters/composite_data_adapter.py b/bayesflow/data_adapters/composite_data_adapter.py new file mode 100644 index 000000000..2bad78848 --- /dev/null +++ b/bayesflow/data_adapters/composite_data_adapter.py @@ -0,0 +1,52 @@ +from collections.abc import Mapping +from keras.saving import ( + deserialize_keras_object as deserialize, + register_keras_serializable as serializable, + serialize_keras_object as serialize, +) +import numpy as np + +from .data_adapter import DataAdapter + + +TRaw = Mapping[str, np.ndarray] +TProcessed = Mapping[str, np.ndarray] + + +@serializable(package="bayesflow.data_adapters") +class CompositeDataAdapter(DataAdapter[TRaw, TProcessed]): + """Composes multiple simple data adapters into a single more complex adapter.""" + + def __init__(self, data_adapters: Mapping[str, DataAdapter[TRaw, np.ndarray | None]]): + self.data_adapters = data_adapters + self.variable_counts = None + + def configure(self, raw_data: TRaw) -> TProcessed: + processed_data = {} + for key, data_adapter in self.data_adapters.items(): + data = data_adapter.configure(raw_data) + if data is not None: + processed_data[key] = data + + return processed_data + + def deconfigure(self, processed_data: TProcessed) -> TRaw: + raw_data = {} + for key, data_adapter in self.data_adapters.items(): + data = processed_data.get(key) + if data is not None: + raw_data |= data_adapter.deconfigure(data) + + return raw_data + + @classmethod + def from_config(cls, config: dict, custom_objects=None) -> "CompositeDataAdapter": + return cls( + { + key: deserialize(data_adapter, custom_objects) + for key, data_adapter in config.pop("data_adapters").items() + } + ) + + def get_config(self) -> dict: + return {"data_adapters": {key: serialize(configurator) for key, configurator in self.data_adapters.items()}} diff --git a/bayesflow/data_adapters/concatenate_keys_data_adapter.py b/bayesflow/data_adapters/concatenate_keys_data_adapter.py new file mode 100644 index 000000000..bb5bd1551 --- /dev/null +++ b/bayesflow/data_adapters/concatenate_keys_data_adapter.py @@ -0,0 +1,105 @@ +from collections.abc import Mapping, Sequence +from keras.saving import ( + deserialize_keras_object as deserialize, + register_keras_serializable as serializable, + serialize_keras_object as serialize, +) +import numpy as np + +from .composite_data_adapter import CompositeDataAdapter +from .data_adapter import DataAdapter +from .transforms import Transform + +TRaw = Mapping[str, np.ndarray] +TProcessed = np.ndarray | None + + +@serializable(package="bayesflow.data_adapters") +class _ConcatenateKeysDataAdapter(DataAdapter[TRaw, TProcessed]): + """Concatenates data from multiple keys into a single tensor.""" + + def __init__(self, keys: Sequence[str]): + if not keys: + raise ValueError("At least one key must be provided.") + + self.keys = keys + self.data_shapes = None + self.is_configured = False + + def configure(self, raw_data: TRaw) -> TProcessed: + if not self.is_configured: + self.data_shapes = {key: value.shape for key, value in raw_data.items()} + self.is_configured = True + + # filter and reorder data + data = {} + for key in self.keys: + if key not in raw_data: + # if a key is missing, we cannot configure, so we return None + return None + + data[key] = raw_data[key] + + # concatenate all tensors + return np.concatenate(list(data.values()), axis=-1) + + def deconfigure(self, processed_data: TProcessed) -> TRaw: + if not self.is_configured: + raise ValueError("You must call `configure` at least once before calling `deconfigure`.") + + data = {} + start = 0 + for key in self.keys: + stop = start + self.data_shapes[key][-1] + data[key] = np.take(processed_data, list(range(start, stop)), axis=-1) + start = stop + + return data + + @classmethod + def from_config(cls, config: dict, custom_objects=None) -> "_ConcatenateKeysDataAdapter": + instance = cls(config["keys"]) + instance.data_shapes = config.get("data_shapes") + instance.is_configured = config.get("is_configured", False) + return instance + + def get_config(self) -> dict: + return {"keys": self.keys, "data_shapes": self.data_shapes, "is_configured": self.is_configured} + + +@serializable(package="bayesflow.data_adapters") +class ConcatenateKeysDataAdapter(CompositeDataAdapter): + """Concatenates data from multiple keys into multiple tensors.""" + + def __init__(self, *, transforms: Sequence[Transform] = None, **keys: Sequence[str]): + self.transforms = transforms or [] + self.keys = keys + configurators = {key: _ConcatenateKeysDataAdapter(value) for key, value in keys.items()} + super().__init__(configurators) + + def configure(self, raw_data): + data = raw_data + + for transform in self.transforms: + data = transform(data, inverse=False) + + data = super().configure(data) + + return data + + def deconfigure(self, processed_data): + data = processed_data + + data = super().deconfigure(data) + + for transform in reversed(self.transforms): + data = transform(data, inverse=True) + + return data + + @classmethod + def from_config(cls, config: Mapping[str, any], custom_objects=None) -> "ConcatenateKeysDataAdapter": + return cls(**config["keys"], transforms=deserialize(config.get("transforms"))) + + def get_config(self) -> dict[str, any]: + return {"keys": self.keys, "transforms": serialize(self.transforms)} diff --git a/bayesflow/data_adapters/data_adapter.py b/bayesflow/data_adapters/data_adapter.py new file mode 100644 index 000000000..0acf02ff6 --- /dev/null +++ b/bayesflow/data_adapters/data_adapter.py @@ -0,0 +1,29 @@ +from typing import Generic, TypeVar + + +TRaw = TypeVar("TRaw") +TProcessed = TypeVar("TProcessed") + + +class DataAdapter(Generic[TRaw, TProcessed]): + """Construct and deconstruct deep-learning ready data from and into raw data.""" + + def configure(self, raw_data: TRaw) -> TProcessed: + """Construct deep-learning ready data from raw data.""" + raise NotImplementedError + + def deconfigure(self, processed_data: TProcessed) -> TRaw: + """Reconstruct raw data from deep-learning ready processed data. + Note that configuration is not required to be bijective, so this method is only meant to be a 'best effort' + attempt, and may return incomplete or different raw data. + """ + raise NotImplementedError + + @classmethod + def from_config(cls, config: dict, custom_objects=None) -> "DataAdapter": + """Construct a data adapter from a configuration dictionary.""" + raise NotImplementedError + + def get_config(self) -> dict: + """Return a configuration dictionary.""" + raise NotImplementedError diff --git a/bayesflow/data_adapters/flow_matching_data_adapter.py b/bayesflow/data_adapters/flow_matching_data_adapter.py new file mode 100644 index 000000000..993ba6e64 --- /dev/null +++ b/bayesflow/data_adapters/flow_matching_data_adapter.py @@ -0,0 +1,44 @@ +from keras.saving import register_keras_serializable as serializable +import numpy as np +from typing import TypeVar + +from bayesflow.utils import optimal_transport + +from .data_adapter import DataAdapter + + +TRaw = TypeVar("TRaw") +TProcessed = dict[str, np.ndarray | tuple[np.ndarray, ...]] + + +@serializable(package="bayesflow.data_adapters") +class FlowMatchingDataAdapter(DataAdapter[TRaw, TProcessed]): + """Wraps a data adapter, applying all further processing required for Optimal Transport Flow Matching. + Useful to move these operations into a worker process, so as not to slow down training. + """ + + def __init__(self, inner: DataAdapter[TRaw, dict[str, np.ndarray]], key: str = "inference_variables", **kwargs): + self.inner = inner + self.key = key + self.kwargs = kwargs + + def configure(self, raw_data: TRaw) -> TProcessed: + processed_data = self.inner.configure(raw_data) + + x1 = processed_data[self.key] + x0 = np.random.standard_normal(size=x1.shape).astype(x1.dtype) + t = np.random.uniform(size=x1.shape[0]).astype(x1.dtype) + + expand_index = [slice(None)] + [None] * (x1.ndim - 1) + t = t[tuple(expand_index)] + + x0, x1 = optimal_transport(x0, x1, **self.kwargs, numpy=True) + + x = t * x1 + (1 - t) * x0 + + target_velocity = x1 - x0 + + return processed_data | {self.key: (x0, x1, t, x, target_velocity)} + + def deconfigure(self, variables: TProcessed) -> TRaw: + return self.inner.deconfigure(variables) diff --git a/bayesflow/data_adapters/transforms/__init__.py b/bayesflow/data_adapters/transforms/__init__.py new file mode 100644 index 000000000..c2d633ea2 --- /dev/null +++ b/bayesflow/data_adapters/transforms/__init__.py @@ -0,0 +1,5 @@ +from .constrain_bounded import ConstrainBounded +from .lambda_transform import LambdaTransform +from .numpy_transform import NumpyTransform +from .standardize import Standardize +from .transform import Transform diff --git a/bayesflow/data_adapters/transforms/constrain_bounded.py b/bayesflow/data_adapters/transforms/constrain_bounded.py new file mode 100644 index 000000000..59a4b4338 --- /dev/null +++ b/bayesflow/data_adapters/transforms/constrain_bounded.py @@ -0,0 +1,140 @@ +from collections.abc import Sequence +from keras.saving import ( + deserialize_keras_object as deserialize, + register_keras_serializable as serializable, + serialize_keras_object as serialize, +) +import numpy as np + +from bayesflow.utils.numpy_utils import ( + inverse_sigmoid, + inverse_softplus, + sigmoid, + softplus, +) + +from .lambda_transform import LambdaTransform + + +@serializable(package="bayesflow.data_adapters") +class ConstrainBounded(LambdaTransform): + """Constrains a parameter with a lower and/or upper bound.""" + + def __init__( + self, + parameters: str | Sequence[str] | None = None, + /, + *, + lower: np.ndarray = None, + upper: np.ndarray = None, + method: str, + ): + self.lower = lower + self.upper = upper + self.method = method + + if lower is None and upper is None: + raise ValueError("At least one of 'lower' or 'upper' must be provided.") + + if lower is not None and upper is not None: + if np.any(lower >= upper): + raise ValueError("The lower bound must be strictly less than the upper bound.") + + # double bounded case + match method: + case "clip": + + def constrain(x): + return np.clip(x, lower, upper) + + def unconstrain(x): + # not bijective + return x + case "sigmoid": + + def constrain(x): + return (upper - lower) * sigmoid(x) + lower + + def unconstrain(x): + return inverse_sigmoid((x - lower) / (upper - lower)) + case str() as name: + raise ValueError(f"Unsupported method name for double bounded constraint: '{name}'.") + case other: + raise TypeError(f"Expected a method name, got {other!r}.") + else: + # single bounded case + if lower is not None: + match method: + case "clip": + + def constrain(x): + return np.clip(x, lower, np.inf) + + def unconstrain(x): + # not bijective + return x + case "softplus": + + def constrain(x): + return softplus(x) + lower + + def unconstrain(x): + return inverse_softplus(x - lower) + case "exp": + + def constrain(x): + return np.exp(x) + lower + + def unconstrain(x): + return np.log(x - lower) + case str() as name: + raise ValueError(f"Unsupported method name for single bounded constraint: '{name}'.") + case other: + raise TypeError(f"Expected a method name, got {other!r}.") + else: + match method: + case "clip": + + def constrain(x): + return np.clip(x, -np.inf, upper) + + def unconstrain(x): + # not bijective + return x + case "softplus": + + def constrain(x): + return -softplus(-x) + upper + + def unconstrain(x): + return -inverse_softplus(-(x - upper)) + case "exp": + + def constrain(x): + return -np.exp(-x) + upper + + def unconstrain(x): + return -np.log(-x + upper) + case str() as name: + raise ValueError(f"Unsupported method name for single bounded constraint: '{name}'.") + case other: + raise TypeError(f"Expected a method name, got {other!r}.") + + super().__init__(parameters, forward=unconstrain, inverse=constrain) + + @classmethod + def from_config(cls, config: dict, custom_objects=None) -> "ConstrainBounded": + return cls( + deserialize(config["parameters"], custom_objects), + lower=deserialize(config["lower"], custom_objects), + upper=deserialize(config["upper"], custom_objects), + method=deserialize(config["method"], custom_objects), + ) + + def get_config(self) -> dict: + return { + "parameters": serialize(self.parameters), + "lower": serialize(self.lower), + "upper": serialize(self.upper), + "method": serialize(self.method), + } diff --git a/bayesflow/data_adapters/transforms/lambda_transform.py b/bayesflow/data_adapters/transforms/lambda_transform.py new file mode 100644 index 000000000..9e2daec7e --- /dev/null +++ b/bayesflow/data_adapters/transforms/lambda_transform.py @@ -0,0 +1,47 @@ +from collections.abc import Sequence + +import numpy as np +from keras.saving import ( + deserialize_keras_object as deserialize, + register_keras_serializable as serializable, + serialize_keras_object as serialize, +) +from .transform import ElementwiseTransform + + +@serializable(package="bayesflow.data_adapters") +class LambdaTransform(ElementwiseTransform): + """ + Transforms a parameter using a pair of forward and inverse functions. + + Important note: This class is only serializable if the forward and inverse functions are serializable. + This most likely means you will have to pass the scope that the forward and inverse functions are contained in + to the `custom_objects` argument of the `deserialize` function when deserializing this class. + """ + + def __init__(self, parameters: str | Sequence[str] | None = None, /, *, forward: callable, inverse: callable): + super().__init__(parameters) + + self._forward = forward + self._inverse = inverse + + @classmethod + def from_config(cls, config: dict, custom_objects=None) -> "LambdaTransform": + return cls( + deserialize(config["parameters"], custom_objects), + forward=deserialize(config["forward"], custom_objects), + inverse=deserialize(config["inverse"], custom_objects), + ) + + def forward(self, parameter_name: str, parameter_value: np.ndarray) -> np.ndarray: + return self._forward(parameter_value) + + def get_config(self) -> dict: + return { + "parameters": serialize(self.parameters), + "forward": serialize(self._forward), + "inverse": serialize(self._inverse), + } + + def inverse(self, parameter_name: str, parameter_value: np.ndarray) -> np.ndarray: + return self._inverse(parameter_value) diff --git a/bayesflow/data_adapters/transforms/numpy_transform.py b/bayesflow/data_adapters/transforms/numpy_transform.py new file mode 100644 index 000000000..ecb8f602c --- /dev/null +++ b/bayesflow/data_adapters/transforms/numpy_transform.py @@ -0,0 +1,38 @@ +from collections.abc import Sequence +from keras.saving import ( + deserialize_keras_object as deserialize, + register_keras_serializable as serializable, + serialize_keras_object as serialize, +) + +import numpy as np + +from .lambda_transform import LambdaTransform + + +@serializable(package="bayesflow.data_adapters") +class NumpyTransform(LambdaTransform): + """A LambdaTransform for numpy functions. Automatically serializable, unlike LambdaTransform.""" + + def __init__(self, parameters: str | Sequence[str] | None = None, /, *, forward: str, inverse: str): + self.forward_name = forward + self.inverse_name = inverse + + forward = getattr(np, forward) + inverse = getattr(np, inverse) + super().__init__(parameters, forward=forward, inverse=inverse) + + @classmethod + def from_config(cls, config: dict, custom_objects=None) -> "NumpyTransform": + return cls( + deserialize(config["parameters"], custom_objects), + forward=deserialize(config["forward_name"], custom_objects), + inverse=deserialize(config["inverse_name"], custom_objects), + ) + + def get_config(self) -> dict: + return { + "parameters": serialize(self.parameters), + "forward_name": serialize(self.forward_name), + "inverse_name": serialize(self.inverse_name), + } diff --git a/bayesflow/data_adapters/transforms/standardize.py b/bayesflow/data_adapters/transforms/standardize.py new file mode 100644 index 000000000..e19ea96a7 --- /dev/null +++ b/bayesflow/data_adapters/transforms/standardize.py @@ -0,0 +1,62 @@ +from collections.abc import Mapping, Sequence +from keras.saving import ( + deserialize_keras_object as deserialize, + register_keras_serializable as serializable, + serialize_keras_object as serialize, +) +import numpy as np + +from .transform import ElementwiseTransform + + +@serializable(package="bayesflow.data_adapters") +class Standardize(ElementwiseTransform): + """Normalizes a parameter to have zero mean and unit standard deviation. + By default, this is lazily initialized; the mean and standard deviation are computed from the first batch of data. + For eager initialization, pass the mean and standard deviation to the constructor. + """ + + def __init__( + self, + parameters: str | Sequence[str] | None = None, + /, + *, + means: Mapping[str, np.ndarray] = None, + stds: Mapping[str, np.ndarray] = None, + ): + super().__init__(parameters) + self.means = means or {} + self.stds = stds or {} + + @classmethod + def from_config(cls, config: dict, custom_objects=None) -> "Standardize": + return cls( + deserialize(config["parameters"], custom_objects), + means=deserialize(config["means"], custom_objects), + stds=deserialize(config["stds"], custom_objects), + ) + + def forward(self, parameter_name: str, parameter_value: np.ndarray) -> np.ndarray: + if parameter_name not in self.means: + self.means[parameter_name] = np.mean( + parameter_value, axis=tuple(range(parameter_value.ndim)), keepdims=True + ) + if parameter_name not in self.stds: + self.stds[parameter_name] = np.std(parameter_value, axis=tuple(range(parameter_value.ndim)), keepdims=True) + + return (parameter_value - self.means[parameter_name]) / self.stds[parameter_name] + + def get_config(self) -> dict: + return { + "parameters": serialize(self.parameters), + "means": serialize(self.means), + "stds": serialize(self.stds), + } + + def inverse(self, parameter_name: str, parameter_value: np.ndarray) -> np.ndarray: + if not self.means or not self.stds: + raise ValueError( + f"Cannot call `inverse` before calling `forward` at least once for parameter {parameter_name}." + ) + + return parameter_value * self.stds[parameter_name] + self.means[parameter_name] diff --git a/bayesflow/data_adapters/transforms/transform.py b/bayesflow/data_adapters/transforms/transform.py new file mode 100644 index 000000000..6dcaf5ea0 --- /dev/null +++ b/bayesflow/data_adapters/transforms/transform.py @@ -0,0 +1,50 @@ +from collections.abc import Sequence +import numpy as np + + +class Transform: + """Implements typical data transformations that can be applied as part of the adapter pipeline.""" + + def __call__(self, data: dict[str, np.ndarray], inverse: bool = False) -> dict[str, np.ndarray]: + raise NotImplementedError + + +class ElementwiseTransform(Transform): + """Intermediate layer for transforms that are applied on a per-parameter basis.""" + + def __init__(self, parameters: str | Sequence[str] | None = None, /): + self.parameters = parameters + + def __call__(self, data: dict[str, np.ndarray], inverse: bool = False) -> dict[str, np.ndarray]: + """Apply the transform to the data""" + data = data.copy() + + if self.parameters is None: + # apply to all parameters + parameters = list(data.keys()) + elif isinstance(self.parameters, str): + # apply just to this parameter + parameters = [self.parameters] + else: + # apply to all given parameters + parameters = self.parameters + + for parameter in parameters: + if data.get(parameter) is None: + # skip when in partial configuration + continue + + if inverse: + data[parameter] = self.inverse(parameter, data[parameter]) + else: + data[parameter] = self.forward(parameter, data[parameter]) + + return data + + def forward(self, parameter_name: str, parameter_value: np.ndarray) -> np.ndarray: + """Implements the forward direction of the transform, i.e., user/data space -> network/latent space""" + raise NotImplementedError + + def inverse(self, parameter_name: str, parameter_value: np.ndarray) -> np.ndarray: + """Implements the inverse direction of the transform, i.e., network/latent space -> userdata space""" + raise NotImplementedError diff --git a/bayesflow/simulators/composite_lambda_simulator.py b/bayesflow/simulators/composite_lambda_simulator.py new file mode 100644 index 000000000..46d886cb7 --- /dev/null +++ b/bayesflow/simulators/composite_lambda_simulator.py @@ -0,0 +1,20 @@ +from collections.abc import Sequence +import numpy as np + +from bayesflow.types import Shape + +from .simulator import Simulator +from .composite_simulator import CompositeSimulator +from .lambda_simulator import LambdaSimulator + + +class CompositeLambdaSimulator(Simulator): + """Combines multiple lambda simulators into one, sequentially.""" + + def __init__(self, sample_fns: Sequence[callable], expand_outputs: bool = True, **kwargs): + self.inner = CompositeSimulator( + [LambdaSimulator(fn, **kwargs) for fn in sample_fns], expand_outputs=expand_outputs + ) + + def sample(self, batch_shape: Shape, **kwargs) -> dict[str, np.ndarray]: + return self.inner.sample(batch_shape, **kwargs) diff --git a/env_dev.yml b/env_dev.yml new file mode 100644 index 000000000..2526d53a7 --- /dev/null +++ b/env_dev.yml @@ -0,0 +1,25 @@ +# "dev" conda envs are to be used by devs in setting their local environments +name: bf-dev +channels: +- conda-forge +- defaults +dependencies: +- aesara +- flake8>=6.1.0 +- ipywidgets +- jupyter +- jupytext +- matplotlib +- minikanren +- mypy>=1.5.1 +- pandas +- pip +- pytest>=7.2.0 +- pytest-xdist>=3.5.0 +- pytest-cov>=4.1.0 +- scikit-learn +- seaborn +- tensorflow<2.16,>=2.10.1 +- tensorflow-probability<0.24,>=0.17 +- tox>=4.10.0 +- watermark diff --git a/examples/TwoMoons_FlowMatching.ipynb b/examples/TwoMoons_FlowMatching.ipynb new file mode 100644 index 000000000..4fcfd655d --- /dev/null +++ b/examples/TwoMoons_FlowMatching.ipynb @@ -0,0 +1,670 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "009b6adf", + "metadata": {}, + "source": [ + "# Two Moons: Tackling Bimodal Posteriors" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d5f88a59", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:46.551814Z", + "start_time": "2024-09-23T14:39:46.032170Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "CUDA backend failed to initialize: Unable to use CUDA because of the following issues with CUDA components:\n", + "Outdated cuDNN installation found.\n", + "Version JAX was built against: 8907\n", + "Minimum supported: 9100\n", + "Installed version: 8907\n", + "The local installation version must be no lower than 9100..(Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import seaborn as sns\n", + "\n", + "# ensure the backend is set\n", + "import os\n", + "if \"KERAS_BACKEND\" not in os.environ:\n", + " # set this to \"torch\", \"tensorflow\", or \"jax\"\n", + " os.environ[\"KERAS_BACKEND\"] = \"jax\"\n", + "\n", + "import keras\n", + "\n", + "# for BayesFlow devs: this ensures that the latest dev version can be found\n", + "import sys\n", + "sys.path.append('../')\n", + "\n", + "import bayesflow as bf" + ] + }, + { + "cell_type": "markdown", + "id": "c63b26ba", + "metadata": {}, + "source": [ + "## Simulator" + ] + }, + { + "cell_type": "markdown", + "id": "9525ffd7", + "metadata": {}, + "source": [ + "This example will demonstrate amortized estimation of a somewhat strange Bayesian model, whose posterior evaluated at the origin $x = (0, 0)$ of the \"data\" will resemble two crescent moons. The forward process is a noisy non-linear transformation on a 2D plane:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "x_1 &= -|\\theta_1 + \\theta_2|/\\sqrt{2} + r \\cos(\\alpha) + 0.25\\\\\n", + "x_2 &= (-\\theta_1 + \\theta_2)/\\sqrt{2} + r\\sin{\\alpha}\n", + "\\end{align}\n", + "$$\n", + "\n", + "with $x = (x_1, x_2)$ playing the role of \"observables\" (data to be learned from), $\\alpha \\sim \\text{Uniform}(-\\pi/2, \\pi/2)$, and $r \\sim \\text{Normal}(0.1, 0.01)$ being latent variables creating noise in the data, and $\\theta = (\\theta_1, \\theta_2)$ being the parameters that we will later seek to infer from new $x$. We set their priors to\n", + "\n", + "$$\n", + "\\begin{align}\n", + "\\theta_1, \\theta_2 \\sim \\text{Uniform}(-1, 1).\n", + "\\end{align}\n", + "$$\n", + "\n", + "This model is typically used for benchmarking simulation-based inference (SBI) methods (see https://arxiv.org/pdf/2101.04653) and any method for amortized Bayesian inference should be capable of recovering the two moons posterior *without* using a gazillion of simulations. Note, that this is a considerably harder task than modeling the common unconditional two moons data set used often in the context of normalizing flows." + ] + }, + { + "cell_type": "markdown", + "id": "21bf228e706a010", + "metadata": {}, + "source": [ + "BayesFlow offers many ways to define your data generating process. Here, we use sequential functions to build a simulator object for online training. Within this composite simulator, each function has access to the outputs of the previous functions. This effectively allows you to define any generative graph." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f761b142a0e1da66", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:46.703381Z", + "start_time": "2024-09-23T14:39:46.700649Z" + } + }, + "outputs": [], + "source": [ + "def alpha_prior():\n", + " alpha = np.random.uniform(-np.pi / 2, np.pi / 2)\n", + " return dict(alpha=alpha)\n", + "\n", + "def r_prior():\n", + " r = np.random.normal(0.1, 0.01)\n", + " return dict(r=r)\n", + "\n", + "def theta_prior():\n", + " theta = np.random.uniform(-1, 1, 2)\n", + " return dict(theta=theta)\n", + "\n", + "def forward_model(theta, alpha, r):\n", + " x1 = -np.abs(theta[0] + theta[1]) / np.sqrt(2) + r * np.cos(alpha) + 0.25\n", + " x2 = (-theta[0] + theta[1]) / np.sqrt(2) + r * np.sin(alpha)\n", + " return dict(x=np.array([x1, x2]))" + ] + }, + { + "cell_type": "markdown", + "id": "722cb773", + "metadata": {}, + "source": [ + "Within the composite simulator, every simulator has access to the outputs of the previous simulators in the list. For example, the last simulator `forward_model` has access to the outputs of the three other simulators." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4b89c861527c13b8", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:46.747091Z", + "start_time": "2024-09-23T14:39:46.744830Z" + } + }, + "outputs": [], + "source": [ + "simulator = bf.simulators.CompositeLambdaSimulator([alpha_prior, r_prior, theta_prior, forward_model])" + ] + }, + { + "cell_type": "markdown", + "id": "f6e1eb5777c59eba", + "metadata": {}, + "source": [ + "Let's generate some data to see what the simulator does:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e6218e61d529e357", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:46.798575Z", + "start_time": "2024-09-23T14:39:46.790581Z" + } + }, + "outputs": [], + "source": [ + "# generate 128 random draws from the joint distribution p(r, alpha, theta, x)\n", + "sample_data = simulator.sample((128,))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "46174ccb0167026c", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:46.854911Z", + "start_time": "2024-09-23T14:39:46.852129Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Type of sample_data:\n", + "\t \n", + "Keys of sample_data:\n", + "\t dict_keys(['alpha', 'r', 'theta', 'x'])\n", + "Types of sample_data values:\n", + "\t {'alpha': , 'r': , 'theta': , 'x': }\n", + "Shapes of sample_data values:\n", + "\t {'alpha': (128, 1), 'r': (128, 1), 'theta': (128, 2), 'x': (128, 2)}\n" + ] + } + ], + "source": [ + "print(\"Type of sample_data:\\n\\t\", type(sample_data))\n", + "print(\"Keys of sample_data:\\n\\t\", sample_data.keys())\n", + "print(\"Types of sample_data values:\\n\\t\", {k: type(v) for k, v in sample_data.items()})\n", + "print(\"Shapes of sample_data values:\\n\\t\", {k: v.shape for k, v in sample_data.items()})" + ] + }, + { + "cell_type": "markdown", + "id": "17f158bd2d7abf75", + "metadata": {}, + "source": [ + "BayesFlow also provides this simulator and a collection of others in the `bayesflow.benchmarks` module." + ] + }, + { + "cell_type": "markdown", + "id": "fee88fcfd7a373b0", + "metadata": {}, + "source": [ + "## Data Adapter\n", + "\n", + "The next step is to tell BayesFlow how to deal with all the simulated variables. You may also think of this as informing BayesFlow about the data flow, i.e., which variables go into which network.\n", + "\n", + "For this example, we want to learn the posterior distribution $p(\\theta | x)$, so we **infer** $\\theta$, **conditioning** on $x$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c9637c576d4ad4e5", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:46.905081Z", + "start_time": "2024-09-23T14:39:46.903091Z" + } + }, + "outputs": [], + "source": [ + "data_adapter = bf.ContinuousApproximator.build_data_adapter(\n", + " inference_variables=[\"theta\"],\n", + " inference_conditions=[\"x\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "254e287b2bccdad", + "metadata": {}, + "source": [ + "## Dataset\n", + "\n", + "For this example, we will sample our training data ahead of time and use offline training with a `bf.datasets.OfflineDataset`.\n", + "\n", + "This makes the training process faster, since we avoid repeated sampling. If you want to use online training, you can use an `OnlineDataset` analogously, or just pass your simulator directly to `approximator.fit()`!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "39cb5a1c9824246f", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:46.950573Z", + "start_time": "2024-09-23T14:39:46.948624Z" + } + }, + "outputs": [], + "source": [ + "num_training_batches = 1024\n", + "num_validation_batches = 256\n", + "batch_size = 128" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9dee7252ef99affa", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:53.268860Z", + "start_time": "2024-09-23T14:39:46.994697Z" + } + }, + "outputs": [], + "source": [ + "training_samples = simulator.sample((num_training_batches * batch_size,))\n", + "validation_samples = simulator.sample((num_validation_batches * batch_size,))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "51045bbed88cb5c2", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:53.281170Z", + "start_time": "2024-09-23T14:39:53.275921Z" + } + }, + "outputs": [], + "source": [ + "training_dataset = bf.datasets.OfflineDataset(training_samples, batch_size=batch_size, data_adapter=data_adapter)\n", + "validation_dataset = bf.datasets.OfflineDataset(validation_samples, batch_size=batch_size, data_adapter=data_adapter)" + ] + }, + { + "cell_type": "markdown", + "id": "2d4c6eb0", + "metadata": {}, + "source": [ + "## Traing a neural network to approximate all posteriors\n", + "\n", + "The next step is to set up the neural network that will approximate the posterior $p(\\theta|x)$.\n", + "\n", + "We choose Flow Matching as the architecture for this example, as it can deal well with the multimodal nature of the posteriors that some observables imply." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "09206e6f", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:53.339590Z", + "start_time": "2024-09-23T14:39:53.319852Z" + } + }, + "outputs": [], + "source": [ + "inference_network = bf.networks.FlowMatching(\n", + " subnet=\"mlp\",\n", + " subnet_kwargs=dict(\n", + " depth=6,\n", + " width=256,\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "851e522f", + "metadata": {}, + "source": [ + "This inference network is just a general Flow Matching architecture, not yet adapted to the specific inference task at hand (i.e., posterior appproximation). To achieve this adaptation, we combine the network with our data adapter, which together form an `approximator`. In this case, we need a `ContinuousApproximator` since the target we want to approximate is the posterior of the *continuous* parameter vector $\\theta$." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "96ca6ffa", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:53.371691Z", + "start_time": "2024-09-23T14:39:53.369375Z" + } + }, + "outputs": [], + "source": [ + "approximator = bf.ContinuousApproximator(\n", + " inference_network=inference_network,\n", + " data_adapter=data_adapter,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "566264eadc76c2c", + "metadata": {}, + "source": [ + "### Optimizer and Learning Rate\n", + "For this example, it is sufficient to use a static learning rate. In practice, you may want to use a learning rate schedule, like [cosine decay](https://keras.io/api/optimizers/learning_rate_schedules/cosine_decay/)." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e8d7e053", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:53.433012Z", + "start_time": "2024-09-23T14:39:53.415903Z" + } + }, + "outputs": [], + "source": [ + "learning_rate = 1e-4\n", + "optimizer = keras.optimizers.Adam(learning_rate=learning_rate)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "51808fcd560489ac", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:39:53.476089Z", + "start_time": "2024-09-23T14:39:53.466001Z" + } + }, + "outputs": [], + "source": [ + "approximator.compile(optimizer=optimizer)" + ] + }, + { + "cell_type": "markdown", + "id": "708b1303", + "metadata": {}, + "source": [ + "### Training\n", + "\n", + "We are ready to train our deep posterior approximator on the two moons example. We pass the dataset object to the `fit` method and watch as Bayesflow trains." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0f496bda", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:42:36.067393Z", + "start_time": "2024-09-23T14:39:53.513436Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:bayesflow:Fitting on dataset instance of OfflineDataset.\n", + "INFO:bayesflow:Building on a test batch.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 6ms/step - loss: 0.6938 - loss/inference_loss: 0.6938 - val_loss: 0.5508 - val_loss/inference_loss: 0.5508\n", + "Epoch 2/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6250 - loss/inference_loss: 0.6250 - val_loss: 0.6023 - val_loss/inference_loss: 0.6023\n", + "Epoch 3/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6056 - loss/inference_loss: 0.6056 - val_loss: 0.4454 - val_loss/inference_loss: 0.4454\n", + "Epoch 4/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6006 - loss/inference_loss: 0.6006 - val_loss: 0.5079 - val_loss/inference_loss: 0.5079\n", + "Epoch 5/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6020 - loss/inference_loss: 0.6020 - val_loss: 0.5414 - val_loss/inference_loss: 0.5414\n", + "Epoch 6/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5973 - loss/inference_loss: 0.5973 - val_loss: 0.6961 - val_loss/inference_loss: 0.6961\n", + "Epoch 7/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5874 - loss/inference_loss: 0.5874 - val_loss: 0.5399 - val_loss/inference_loss: 0.5399\n", + "Epoch 8/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5939 - loss/inference_loss: 0.5939 - val_loss: 0.4877 - val_loss/inference_loss: 0.4877\n", + "Epoch 9/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5841 - loss/inference_loss: 0.5841 - val_loss: 0.5115 - val_loss/inference_loss: 0.5115\n", + "Epoch 10/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5827 - loss/inference_loss: 0.5827 - val_loss: 0.5383 - val_loss/inference_loss: 0.5383\n", + "Epoch 11/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5807 - loss/inference_loss: 0.5807 - val_loss: 0.4411 - val_loss/inference_loss: 0.4411\n", + "Epoch 12/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5774 - loss/inference_loss: 0.5774 - val_loss: 0.5844 - val_loss/inference_loss: 0.5844\n", + "Epoch 13/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5813 - loss/inference_loss: 0.5813 - val_loss: 0.8106 - val_loss/inference_loss: 0.8106\n", + "Epoch 14/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 5ms/step - loss: 0.5756 - loss/inference_loss: 0.5756 - val_loss: 0.4150 - val_loss/inference_loss: 0.4150\n", + "Epoch 15/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 5ms/step - loss: 0.5761 - loss/inference_loss: 0.5761 - val_loss: 0.5451 - val_loss/inference_loss: 0.5451\n", + "Epoch 16/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5747 - loss/inference_loss: 0.5747 - val_loss: 0.6248 - val_loss/inference_loss: 0.6248\n", + "Epoch 17/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.4689 - val_loss/inference_loss: 0.4689\n", + "Epoch 18/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5705 - loss/inference_loss: 0.5705 - val_loss: 0.3853 - val_loss/inference_loss: 0.3853\n", + "Epoch 19/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5739 - loss/inference_loss: 0.5739 - val_loss: 0.5055 - val_loss/inference_loss: 0.5055\n", + "Epoch 20/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5688 - loss/inference_loss: 0.5688 - val_loss: 0.5032 - val_loss/inference_loss: 0.5032\n", + "Epoch 21/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5663 - loss/inference_loss: 0.5663 - val_loss: 0.5237 - val_loss/inference_loss: 0.5237\n", + "Epoch 22/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5650 - loss/inference_loss: 0.5650 - val_loss: 0.3955 - val_loss/inference_loss: 0.3955\n", + "Epoch 23/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.7317 - val_loss/inference_loss: 0.7317\n", + "Epoch 24/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5632 - loss/inference_loss: 0.5632 - val_loss: 0.6094 - val_loss/inference_loss: 0.6094\n", + "Epoch 25/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5701 - loss/inference_loss: 0.5701 - val_loss: 0.5721 - val_loss/inference_loss: 0.5721\n", + "Epoch 26/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5711 - loss/inference_loss: 0.5711 - val_loss: 0.6184 - val_loss/inference_loss: 0.6184\n", + "Epoch 27/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5672 - loss/inference_loss: 0.5672 - val_loss: 0.6326 - val_loss/inference_loss: 0.6326\n", + "Epoch 28/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5585 - loss/inference_loss: 0.5585 - val_loss: 0.6209 - val_loss/inference_loss: 0.6209\n", + "Epoch 29/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5594 - loss/inference_loss: 0.5594 - val_loss: 0.5672 - val_loss/inference_loss: 0.5672\n", + "Epoch 30/30\n", + "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5597 - loss/inference_loss: 0.5597 - val_loss: 0.4648 - val_loss/inference_loss: 0.4648\n" + ] + } + ], + "source": [ + "history = approximator.fit(\n", + " epochs=30,\n", + " dataset=training_dataset,\n", + " validation_data=validation_dataset,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b90a6062", + "metadata": {}, + "source": [ + "## Validation" + ] + }, + { + "cell_type": "markdown", + "id": "ca62b21d", + "metadata": {}, + "source": [ + "### Two Moons Posterior\n", + "\n", + "The two moons posterior at point $x = (0, 0)$ should resemble two crescent shapes. Below, we plot the corresponding posterior samples and posterior density. \n", + "These results suggest that our flow matching setup can approximate the expected analytical posterior well. (Note that you can achieve an even better fit if you use online training and more epochs.)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "8562caeb", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:42:38.584554Z", + "start_time": "2024-09-23T14:42:36.076923Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 0.5)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg0AAAIQCAYAAAACUF3RAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAACNeUlEQVR4nOz9d3xc1bn3f3/2FLVRL7YsXHCVcS8EAzZFJpRQTEuIIScQ4E5OwpOQAElIQk7u/JIQUsCEkNupQEwOJYRiRG8WxTbYCZa7JaxiFWRZvY2kqfv5YzTb6h7ZlmzZ3/frdY7t0S5rlobsa9a61rUM0zRNRERERA7BdqwbICIiIqODggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGGdDzzz9Pdna29X+zZs3i3HPP5Yc//CEHDhw46vfbsmULDz/8MC0tLUf92nDw/VRWVg7L9U8Ex3MfDffnoz9H0h/Hc18erj/84Q9ceumlBINB6zW32829997LsmXLmDt3LldeeSWvvPLKYV0/0mv961//4pxzzqG9vf2w34scHgUNckj33Xcf//znP3n00Ue57rrrePnll7nhhhuO+n+w+fn5/OEPfxi2h8L555/PP//5T8aMGTMs15fhNdyfj/4cyWfmRPu8HThwgEceeYTbb78dm+3go+Nb3/oWa9eu5Zvf/CZ//etfmTt3LnfeeScvvfTSkO8R6bWuvvpq4uLi+Nvf/nbE70uGxnGsGyDHv+nTpzN37lwAzjzzTAKBAKtXr+btt99mxYoVx7h1h9bR0UFsbCypqamkpqYe9evKiedofGaO9uftWHv88cdJSEjgoosusl5777332LBhAw888ACXX345EPrfiKqqKn7zm99w6aWXYrfbI7r+UK7lcDj44he/yOrVq/nqV7+q/w5HkEYaZMgWLFgAQFVVlfXaf/7zH2666SYWLlzI/PnzWblyJe+++26P8xoaGvif//kfzjvvPObMmcOZZ57JypUr2bhxIw8//DC/+c1vALjgggusKZFNmzZZ5+/bt4+77rqLs846izlz5vC5z32OJ554osc9Hn74YbKzs9m1axe33347n/nMZ7jwwguBgYeLI2n7YNftz2DvNaysrIwf/vCHXHTRRcyfP59zzjmHr3/96xQWFvZ774KCAm6//XYWL17MGWecwX333Yff76ekpIRbb72VhQsXsnz5cv7617/2e/7u3bv55je/yaJFi1i8eDHf/e53aWhoGPA9DKXfI33P/YmkHyL5fPTnSH+3/X1m3n77ba644grmzJnDBRdcwJo1a6xrdNffueHj9u7dy5133snixYs5++yz+eEPf0hra+ug76WmpoaFCxdyxx139Hg9Ly+P2bNn8+CDDw56/pHwer08++yzXH755T1GGd566y3i4uK45JJLehx/zTXXUFNTw7Zt2yK+x1CvdcUVV9DW1nbYUyFyeDTSIENWVlYGYH2L2rx5M7fccgszZszg3nvvJSoqiqeeeoqvf/3rrFq1iksvvRSA733ve+zevZs77riDU089lZaWFnbv3k1TUxNf+MIXaG5u5h//+Ad/+MMfyMjIAGDatGkAFBUVsXLlSsaNG8fdd99NRkYG69ev5xe/+AWNjY1885vf7NHGb33rW1x66aWsXLly0GmUSNs+1OsO9l7DampqSE5O5q677iI1NZXm5mZeeOEFrrvuOl544QWmTJnS45rf+c53WLFiBStXrmTDhg387W9/w+/3s3HjRm644QZuvfVWXnrpJe6//34mTZrU4xshwDe/+U0uueQSVq5cSVFREQ899BDFxcU888wzOJ3Oft/HUPo9kvfcn0j64VCfj/4Mx+/2/fff51vf+hann346v/vd7/D7/Tz66KPU1dUN+h57C9/r85//PJ988gkPPPAAEJoKHMiYMWO49dZb+cMf/sCtt97KnDlz2LRpE9/+9re5/vrr+wQTYaZpEggEImqXw9H/I2H79u00NTWxZMmSHq/v3buXqVOn9jkvHEDt3buXRYsWRXTvoV4rIyODKVOm8N577/H5z38+onvIUWCKDOC5554zZ8yYYW7dutX0+XxmW1ubmZeXZ5555pnmwoULzdraWtM0TfO6664zzzrrLLOtrc061+/3m5dffrl57rnnmsFg0DRN01ywYIF57733Dni/v/3tb+aMGTPMioqKPj+75ZZbzHPPPddsbW3t8frPfvYzc+7cuWZTU5Npmqb5+9//3pwxY4b50EMPDfh+ul8/0rYPdt3+HOq99sfv95ter9e86KKLzF/+8pfW6+F7P/rooz2Ov/LKK80ZM2aYb775pvWaz+czzzzzTPOb3/xmn/O7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Dz/8MA8//DBPPfUUhmGwfPlyfvSjHw06ghBpv0f6nvsTaT8M9vnoz3D8bs8991yrbd/5znfIyMjg+uuvp6amhtzc3MO65qHU1NRw8803k5aWxp///Gdr1GTq1Klce+21PP7441x//fWHNUUXqXHjxnH66afzzjvv8MUvfrHHzx5++GEefPBBfv/739PU1MSUKVNYtWoVl112WY/j3G430De35nCuBbBp0yZaW1v7JPjK8DJM0zSPdSNEZPg8/PDD/OEPf+DDDz88oSoUHi98Ph9XXXUVY8eO5dFHHz3WzRk2b7zxBnfccQd5eXk9cmMi9d577/Hf//3fvPjii30KYR2O733ve1RUVPD0008f8bUkcqoIKSIyBD/60Y945ZVX2Lx5M6+++iq33HILxcXFhxxRGe0uuugi5s6dy5///OfDOv+jjz7isssuOyoBQ3l5Oa+99hrf/e53j/haMjSanhARGQK3282vf/1rGhoacDqdzJo1i7/85S+cffbZx7ppw8owDH7+85+zbt06gsFgj3LSkbj77ruPWluqqqr4n//5H04//fSjdk2JjKYnREREJCKanhAREZGIKGgQERGRiChoEBERkYiccEGD2bUNrFI1REREjq4TLmgIBoNs3bqVYDB4rJsyZKZpWpviyPBTf48s9ffIU5+PrJOhv0+4oGG0G43Bzmim/h5Z6u+Rpz4fWSd6fytoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYgoaBAREZGIKGgQERGRiChoEBERkYiMSNDwxBNPsHz5cubOncs111zDf/7zn4jO+/jjj5k1axZXXnnlMLdQREREDmXYg4ZXX32V++67j2984xusXbuWxYsX89WvfpWqqqpBz2ttbeXuu+/mrLPOGu4mioiISASGPWh47LHHuPbaa/nCF77A1KlTueeee8jMzOSpp54a9Lyf/OQnXH755SxYsGC4mygiIiIRcAznxb1eL7t27eJrX/taj9eXLl1Kfn7+gOc999xzlJeX89vf/pY//vGPh3Vv0zQxTfOwzj1Wwm0ebe0erdTfI0v9PfLU5yNrNPe3YRgRHTesQUNjYyOBQIC0tLQer6enp1NbW9vvOfv27eOBBx7giSeewOE4/Oa1tLRgs42uPE/TNGlvbwci/wXK4VN/jyz198hTn4+s0dzfycnJER03rEFDWO/OM02z3w4NBALcddddfOtb32Ly5MlHdM/ExETsdvsRXWOkhaPTpKSkUfeBG43U3yNL/T3y1Ocj62To72ENGlJSUrDb7dTV1fV4vb6+nvT09D7Hu91udu7cyZ49e/j5z38OQDAYxDRNZs2axSOPPBJxYqRhGKPylxZu92hs+2ik/h5Z6u+Rpz4fWSd6fw9r0BAVFcXs2bPZsGEDF154ofX6xo0bueCCC/ocHx8fz0svvdTjtSeffJKPPvqI3//+94wfP344mysiIiKDGPbpiZtvvpnvf//7zJkzh4ULF/LPf/6T/fv3s3LlSgAeeOABDhw4wG9+8xtsNhszZszocX5aWhrR0dF9XhcREZGRNexBw6WXXkpjYyOrV6+mpqaGGTNm8Je//IVTTjkFgNraWvbv3z/czRAREZEjZJijcW3IIAKBAFu3bmXBggWjMhGyubn5hE6iOZ6ov0eW+nvkqc9H1snQ36NrTaKIiIgcMwoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkRERCQiChpEREQkIgoaREREJCIKGkREjpGi8lpWrcmjqLz2WDdFJCIKGkREjrJIg4HcvJ08+crH5ObtHKGWiRwZx7FugIjIaFRUXktu3k5W5Mxh2sSMHj8LBwMAd96UM+A1VuTM6fGnyPFOQYOInFQG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RESGz+hakygiIiLHjIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIggYRERGJiIIGERERiYiCBhEREYmIgob/f3v3EhJV/4cB/DGtlUZecJMtWjSBZo7NwvISqYQmmiRRiyAoqRwoMGQMkiQss8tUpOLC7DZkEZYIlpRELboQZYyWqYWRmZV5JScpG2d+/0V/fRsd7Yx5Zt5z3ucDbn7+jjznizLPnDnjEBERkSQsDURERCQJSwMRERFJwtJAREREkrA0EBERkSQsDURERCQJSwMRERFJwtJAREREkrA0EBERkSQsDURERCQJSwMRERFJ4uPpALNNCAEAsNlsHk7iOiEE7HY7bDYbvLy8PB1H9Thv9+K83Y8zdy+lz3vOnDl/zK260mC32wEAL1++9HASIiIi5dBqtfD29p52j5cYe2quEna7HaOjo5IaExEREf0i5XFTdaWBiIiI5MEbIYmIiEgSlgYiIiKShKWBiIiIJGFpICIiIklYGoiIiEgSlgYiIiKShKWBiIiIJGFpICIiIklYGjzo69evMBgM0Ol00Ol0MBgMGBoaknx8fn4+li5diosXL8oXUmVcnbnVasWJEyeQlpYGrVaL2NhY5Obm4suXL25MrRyVlZVISEhAeHg4MjIy0NDQMO3+p0+fIiMjA+Hh4UhMTMTVq1fdlFQ9XJl5fX09tm3bhpUrV2LFihXYvHkzHjx44Ma0yufq7/iY58+fIzQ0FOnp6TInlBdLgwfl5OSgra0NFRUVqKioQFtbG3JzcyUde/fuXTQ1NSE4OFjmlOri6sx//PiBlpYW6PV6VFdXo7S0FB0dHdDr9W5MrQx1dXUoKiqCXq9HTU0NdDodduzYgU+fPjnd/+HDB+zcuRM6nQ41NTXIyspCYWEh7ty54+bkyuXqzJ89e4bo6GiUl5ejuroaUVFR0Ov1aGlpcXNyZXJ13mMsFgv27duHVatWuSmpjAR5RHt7u9BoNKKxsXF8zWw2C41GI96+fTvtsd3d3SIuLk68efNGxMfHiwsXLsicVh3+Zua/a2pqEhqNRnz8+FGOmIq1ceNGkZ+f77CWnJwsjEaj0/3Hjx8XycnJDmsHDhwQmzZtki2j2rg6c2dSUlJESUnJbEdTpZnOOzs7W5w+fVoUFxeL9evXyxlRdrzS4CFmsxl+fn6IiIgYX9NqtfDz84PZbJ7yOLvdDoPBgMzMTCxZssQdUVVjpjOf6Nu3b/Dy8sL8+fPliKlIP3/+xKtXrxAbG+uwHhMTM+VsGxsbERMT47AWFxeH5uZmWK1W2bKqxUxmPpHdbsfw8DAWLFggQ0J1mem8b9y4gc7OTuzevVvuiG6huo/GVoq+vj4EBgZOWg8MDERfX9+Ux509exY+Pj7YunWrnPFUaaYz/93IyAiMRiNSU1Ph6+s72xEVa3BwEDabbdJ8g4KC0Nvb6/SYvr4+BAUFOawFBgZidHQUg4ODfOntD2Yy84nOnz+P79+/Y926dXJEVJWZzLujowMnT55EZWUlfHzU8XCrjrP4FykpKUFpaem0e65fvz7l94QQU340aXNzM0wmE6qrq/mx37+Rc+a/s1qt2Lt3L4QQOHjwoKsx/xMmzvFPs3W239k6Tc3VmY+5efMmSktLUVZW5rRMk3NS522z2ZCTk4M9e/Zg8eLF7oonO5aGWbZlyxakpKRMuyckJASvX79Gf3//pO8NDAxM+Qfc0NCA/v5+xMfHj6/ZbDYcO3YMJpMJ9+7d+7vwCiXnzMdYrVZkZ2ejq6sLly5d4lWGCfz9/eHt7T3pik1/f/+kqwljnD1DGxgYgI+PDy+XSzCTmY+pq6tDXl4ezpw5g+joaDljqoar8x4eHkZzczNaW1tx6NAhAL9eDhJCIDQ0FOfOnVPkjZEsDbMsICAAAQEBf9wXGRkJi8WCFy9eYPny5QCApqYmWCwWREZGOj0mPT190h94ZmYm0tPTkZGR8ffhFUrOmQP/FIb379/DZDLB399/1rKrxbx58xAWFoZHjx5h7dq14+uPHz9GYmKi02O0Wi3u37/vsPbw4UMsW7YMc+fOlTWvGsxk5sCvKwz79+/HqVOnsGbNGjckVQdX5+3r64va2lqHtStXruDJkycoLi5GSEiI7Jll4bl7MCkzM1OkpaUJs9kszGazSE1NFbt27XLYk5SUJOrr66f8GXz3hGtcnbnVahVZWVli9erVorW1VfT09Ix/jYyMeOIU/rVu3bolwsLCRFVVlWhvbxeFhYVCq9WKrq4uIYQQRqNRGAyG8f2dnZ0iIiJCHDlyRLS3t4uqqioRFhYmbt++7alTUBxXZ15bWytCQ0PF5cuXHX6Xh4aGPHUKiuLqvCdSw7sneKXBg4xGIw4fPozt27cDABISEpCfn++w5927d7BYLJ6Ip0quzry7u3v8ZZ+J/5TFZDIhKirKDamVISUlBYODgygrK0NPTw80Gg3Ky8uxcOFCAEBvby8+f/48vn/RokUoLy9HUVERKisrERwcjLy8PCQlJXnqFBTH1Zlfu3YNo6OjKCgoQEFBwfj6hg0bcPToUbfnVxpX561GXkL8/84jIiIiomnw/zQQERGRJCwNREREJAlLAxEREUnC0kBERESSsDQQERGRJCwNREREJAlLAxEREUnC0kBERESSsDQQERGRJCwNREREJAlLAxEREUnC0kBERESS/A8s4JnEnCTYGAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Set the number of posterior draws you want to get\n", + "num_samples = 5000\n", + "\n", + "# Obtain samples from amortized posterior\n", + "conditions = {\"x\": np.array([[0.0, 0.0]]).astype(\"float32\")}\n", + "samples_at_origin = approximator.sample(conditions=conditions, num_samples=num_samples)[\"theta\"]\n", + "\n", + "# Prepare figure\n", + "f, axes = plt.subplots(1, figsize=(6, 6))\n", + "\n", + "# Plot samples\n", + "axes.scatter(samples_at_origin[0, :, 0], samples_at_origin[0, :, 1], color=\"#153c7a\", alpha=0.75, s=0.5)\n", + "sns.despine(ax=axes)\n", + "axes.set_title(r\"Posterior samples at origin $x=(0, 0)$\")\n", + "axes.grid(alpha=0.3)\n", + "axes.set_aspect(\"equal\", adjustable=\"box\")\n", + "axes.set_xlim([-0.5, 0.5])\n", + "axes.set_ylim([-0.5, 0.5])" + ] + }, + { + "cell_type": "markdown", + "id": "01821d24", + "metadata": {}, + "source": [ + "\n", + "The posterior looks as we have expected in this case. However, in general, we do not know how the posterior is supposed to look like for any specific dataset. As such, we need diagnostics that validate the correctness of the inferred posterior. One such diagnostic is simulation-based calibration(SBC), which we can apply for free due to amortization. For more details on SBC and diagnostic plots, see:\n", + "\n", + "1. Talts, S., Betancourt, M., Simpson, D., Vehtari, A., & Gelman, A. (2018). Validating Bayesian inference algorithms with simulation-based calibration. *arXiv preprint*.\n", + "2. Säilynoja, T., Bürkner, P. C., & Vehtari, A. (2022). Graphical test for discrete uniformity and its applications in goodness-of-fit evaluation and multiple sample comparison. *Statistics and Computing*." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "f76289b3", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:42:38.595234Z", + "start_time": "2024-09-23T14:42:38.593542Z" + } + }, + "outputs": [], + "source": [ + "# Will be added soon." + ] + }, + { + "cell_type": "markdown", + "id": "66248a2f", + "metadata": {}, + "source": [ + "## Further Experimentation " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "89dcb727", + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-23T14:42:38.639240Z", + "start_time": "2024-09-23T14:42:38.637439Z" + } + }, + "outputs": [], + "source": [ + "# Will be added soon." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "165px" + }, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tests/test_data_adapters/__init__.py b/tests/test_data_adapters/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_data_adapters/conftest.py b/tests/test_data_adapters/conftest.py new file mode 100644 index 000000000..465bbf268 --- /dev/null +++ b/tests/test_data_adapters/conftest.py @@ -0,0 +1,42 @@ +import numpy as np +import pytest + + +def forward_transform(x): + return x + 1 + + +def inverse_transform(x): + return x - 1 + + +@pytest.fixture() +def custom_objects(): + return globals() | np.__dict__ + + +@pytest.fixture() +def data_adapter(): + from bayesflow.data_adapters import ConcatenateKeysDataAdapter + from bayesflow.data_adapters.transforms import LambdaTransform, Standardize + + return ConcatenateKeysDataAdapter( + x=["x1", "x2"], + y=["y1", "y2"], + transforms=[ + # normalize all parameters + Standardize(), + # use a lambda transform with global functions + LambdaTransform("x2", forward=forward_transform, inverse=inverse_transform), + ], + ) + + +@pytest.fixture() +def random_data(): + return { + "x1": np.random.standard_normal(size=(32, 1)).astype("float32"), + "x2": np.random.standard_normal(size=(32, 1)).astype("float32"), + "y1": np.random.standard_normal(size=(32, 2)).astype("float32"), + "y2": np.random.standard_normal(size=(32, 2)).astype("float32"), + } diff --git a/tests/test_data_adapters/test_data_adapters.py b/tests/test_data_adapters/test_data_adapters.py new file mode 100644 index 000000000..f5ff155d9 --- /dev/null +++ b/tests/test_data_adapters/test_data_adapters.py @@ -0,0 +1,22 @@ +import keras +from keras.saving import ( + deserialize_keras_object as deserialize, + serialize_keras_object as serialize, +) + + +def test_cycle_consistency(data_adapter, random_data): + processed = data_adapter.configure(random_data) + deprocessed = data_adapter.deconfigure(processed) + + for key, value in random_data.items(): + assert key in deprocessed + assert keras.ops.all(keras.ops.isclose(value, deprocessed[key])) + + +def test_serialize_deserialize(data_adapter, custom_objects): + serialized = serialize(data_adapter) + deserialized = deserialize(serialized, custom_objects) + reserialized = serialize(deserialized) + + assert reserialized == serialized From 0b65cf22a5151cf43b33d6b0f92f8d2db7587b85 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 25 Sep 2024 01:01:14 -0400 Subject: [PATCH 05/22] Temporarily migrate plot_distribution_2d --- .../diagnostics/plot_distribution_2d.py | 0 .../diagnostics/plot_calibration_curves.py | 0 .../diagnostics/plot_confusion_matrix.py | 0 .../diagnostics/plot_latent_space_2d.py | 0 .../experimental/diagnostics/plot_losses.py | 0 .../diagnostics/plot_mmd_hypothesis_test.py | 0 .../diagnostics/plot_posterior_2d.py | 0 .../experimental/diagnostics/plot_prior_2d.py | 0 .../experimental/diagnostics/plot_recovery.py | 0 .../experimental/diagnostics/plot_sbc_ecdf.py | 0 .../diagnostics/plot_sbc_histograms.py | 0 .../diagnostics/plot_z_score_contraction.py | 0 tests/test_diagnostics/__init__.py | 0 tests/test_diagnostics/test_diagnostics.py | 16 ---------------- 14 files changed, 16 deletions(-) rename bayesflow/{experimental => }/diagnostics/plot_distribution_2d.py (100%) delete mode 100644 bayesflow/experimental/diagnostics/plot_calibration_curves.py delete mode 100644 bayesflow/experimental/diagnostics/plot_confusion_matrix.py delete mode 100644 bayesflow/experimental/diagnostics/plot_latent_space_2d.py delete mode 100644 bayesflow/experimental/diagnostics/plot_losses.py delete mode 100644 bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py delete mode 100644 bayesflow/experimental/diagnostics/plot_posterior_2d.py delete mode 100644 bayesflow/experimental/diagnostics/plot_prior_2d.py delete mode 100644 bayesflow/experimental/diagnostics/plot_recovery.py delete mode 100644 bayesflow/experimental/diagnostics/plot_sbc_ecdf.py delete mode 100644 bayesflow/experimental/diagnostics/plot_sbc_histograms.py delete mode 100644 bayesflow/experimental/diagnostics/plot_z_score_contraction.py delete mode 100644 tests/test_diagnostics/__init__.py delete mode 100644 tests/test_diagnostics/test_diagnostics.py diff --git a/bayesflow/experimental/diagnostics/plot_distribution_2d.py b/bayesflow/diagnostics/plot_distribution_2d.py similarity index 100% rename from bayesflow/experimental/diagnostics/plot_distribution_2d.py rename to bayesflow/diagnostics/plot_distribution_2d.py diff --git a/bayesflow/experimental/diagnostics/plot_calibration_curves.py b/bayesflow/experimental/diagnostics/plot_calibration_curves.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_confusion_matrix.py b/bayesflow/experimental/diagnostics/plot_confusion_matrix.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_latent_space_2d.py b/bayesflow/experimental/diagnostics/plot_latent_space_2d.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_losses.py b/bayesflow/experimental/diagnostics/plot_losses.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py b/bayesflow/experimental/diagnostics/plot_mmd_hypothesis_test.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_posterior_2d.py b/bayesflow/experimental/diagnostics/plot_posterior_2d.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_prior_2d.py b/bayesflow/experimental/diagnostics/plot_prior_2d.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_recovery.py b/bayesflow/experimental/diagnostics/plot_recovery.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py b/bayesflow/experimental/diagnostics/plot_sbc_ecdf.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_sbc_histograms.py b/bayesflow/experimental/diagnostics/plot_sbc_histograms.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/bayesflow/experimental/diagnostics/plot_z_score_contraction.py b/bayesflow/experimental/diagnostics/plot_z_score_contraction.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/test_diagnostics/__init__.py b/tests/test_diagnostics/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/test_diagnostics/test_diagnostics.py b/tests/test_diagnostics/test_diagnostics.py deleted file mode 100644 index 4018ee577..000000000 --- a/tests/test_diagnostics/test_diagnostics.py +++ /dev/null @@ -1,16 +0,0 @@ - -import keras -import pytest - -from bayesflow.experimental.diagnostics import ( - plot_distribution_2d, - plot_prior_2d, - plot_posterior_2d -) - - -@pytest.fixture() -def test_plot_distribution_2d(): - pass - -#TODO \ No newline at end of file From 24362dbc611ef5ca78094acb7bfccf0ee2701744 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 9 Oct 2024 01:32:39 -0400 Subject: [PATCH 06/22] Add preliminary plot utils --- bayesflow/utils/exceptions/__init__.py | 0 bayesflow/utils/exceptions/shape_error.py | 5 + bayesflow/utils/plot_utils.py | 300 ++++++++++++++++++++++ 3 files changed, 305 insertions(+) create mode 100644 bayesflow/utils/exceptions/__init__.py create mode 100644 bayesflow/utils/exceptions/shape_error.py create mode 100644 bayesflow/utils/plot_utils.py diff --git a/bayesflow/utils/exceptions/__init__.py b/bayesflow/utils/exceptions/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/bayesflow/utils/exceptions/shape_error.py b/bayesflow/utils/exceptions/shape_error.py new file mode 100644 index 000000000..c167bdab6 --- /dev/null +++ b/bayesflow/utils/exceptions/shape_error.py @@ -0,0 +1,5 @@ + +class ShapeError(Exception): + """Class for error in expected shapes.""" + + pass diff --git a/bayesflow/utils/plot_utils.py b/bayesflow/utils/plot_utils.py new file mode 100644 index 000000000..402a61e05 --- /dev/null +++ b/bayesflow/utils/plot_utils.py @@ -0,0 +1,300 @@ + +import numpy as np +import matplotlib.pyplot as plt + +from .exceptions.shape_error import ShapeError + + +def check_posterior_prior_shapes(post_samples, prior_samples): + """ + Checks requirements for the shapes of posterior and prior draws as + necessitated by most diagnostic functions. + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws obtained for generating n_data_sets + + Raises + ------ + ShapeError + If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. + """ + + if len(post_samples.shape) != 3: + raise ShapeError( + f"post_samples should be a 3-dimensional array, with the " + + f"first dimension being the number of (simulated) data sets, " + + f"the second dimension being the number of posterior draws per data set, " + + f"and the third dimension being the number of parameters (marginal distributions), " + + f"but your input has dimensions {len(post_samples.shape)}" + ) + elif len(prior_samples.shape) != 2: + raise ShapeError( + f"prior_samples should be a 2-dimensional array, with the " + + f"first dimension being the number of (simulated) data sets / prior draws " + + f"and the second dimension being the number of parameters (marginal distributions), " + + f"but your input has dimensions {len(prior_samples.shape)}" + ) + elif post_samples.shape[0] != prior_samples.shape[0]: + raise ShapeError( + f"The number of elements over the first dimension of post_samples and prior_samples" + + f"should match, but post_samples has {post_samples.shape[0]} and prior_samples has " + + f"{prior_samples.shape[0]} elements, respectively." + ) + elif post_samples.shape[-1] != prior_samples.shape[-1]: + raise ShapeError( + f"The number of elements over the last dimension of post_samples and prior_samples" + + f"should match, but post_samples has {post_samples.shape[1]} and prior_samples has " + + f"{prior_samples.shape[-1]} elements, respectively." + ) + + +def get_count_and_names( + samples, + names: list = None, + symbol: str = None, + n_objects: int = None +): + """ + Determine the number of objects, such as parameters or models, + and their respective names if None given. + + Parameters + ---------- + samples : np.ndarray of shape(..., n_objects) + The objects of interest + names : list[str], optional, default: None + The names of individual object + symbol : str, optional, default: None + The symbol used for naming the individual object. + If none given, default is associated with a parameter named $\\theta$. + n_objects : int, optional, default: None + The number of individual objects + + Returns + ------- + n_objects : int + Number of individual objects + names : list[str] + List of names for the individual object + """ + if n_objects is None: + n_objects = samples.shape[-1] + if names is None: + if symbol is None: + symbol = "\\theta" + names = [f"${symbol}_{{{i}}}$" for i in range(1, n_objects + 1)] + + return n_objects, names + + +def configure_layout( + n_total: int, + n_row: int = None, + n_col: int = None, + stacked: bool = False +): + """ + Determine the number of rows and columns in diagnostics visualizations. + + Parameters + ---------- + n_total : int + Total number of parameters + n_row : int, default = None + Number of rows for the visualization layout + n_col : int, default = None + Number of columns for the visualization layout + stacked : bool, default = False + Boolean that determines whether to stack the plot or not. + + Returns + ------- + n_row : int + Number of rows for the visualization layout + n_col : int + Number of columns for the visualization layout + """ + if stacked: + n_row, n_col = 1, 1 + else: + if n_row is None and n_col is None: + n_row = int(np.ceil(n_total / 6)) + n_col = int(np.ceil(n_total / n_row)) + elif n_row is None and n_col is not None: + n_row = int(np.ceil(n_total / n_col)) + elif n_row is not None and n_col is None: + n_col = int(np.ceil(n_total / n_row)) + + return n_row, n_col + + +def initialize_figure( + n_row: int = None, + n_col: int = None, + fig_size: tuple = None, +): + """ + Initialize a set of figures + + Parameters + ---------- + n_row : int + Number of rows in a figure + n_col : int + Number of columns in a figure + stacked : bool + Whether subplots in a figure are stacked by rows + fig_size : tuple + Size of the figure adjusting to the display resolution + or the designer's desire + + Returns + ------- + f, axarr + Initialized figures + """ + if n_row == 1 and n_col == 1: + f, axarr = plt.subplots(1, 1, figsize=fig_size) + else: + if fig_size is None: + fig_size = (int(5 * n_col), int(5 * n_row)) + + f, axarr = plt.subplots(n_row, n_col, figsize=fig_size) + + return f, axarr + + +def collapse_axes(axarr, n_row: int = 1, n_col: int = 1): + """ + Collapse a 2D array of subplot Axes into a 1D array + + Parameters + ---------- + axarr : 2D array of Axes + An array of axes for subplots + n_row : int, default: 1 + Number of rows for the axes + n_col : int, default: 1 + Number of columns for the axes + + Returns + ------- + ax : 1D array of Axes + Collapsed axes for subplots + """ + + ax = np.atleast_1d(axarr) + # turn axarr into 1D list + if n_row > 1 or n_col > 1: + ax = axarr.flat + else: + ax = axarr + + return ax + + +def add_xlabels( + axarr, + n_row: int = None, + n_col: int = None, + xlabel: str = None, + label_fontsize: int = None +): + # Only add x-labels to the bottom row + bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + for _ax in bottom_row: + _ax.set_xlabel(xlabel, fontsize=label_fontsize) + + +def add_ylabels( + axarr, + n_row: int = None, + ylabel: str = None, + label_fontsize: int = None +): + # Only add y-labels to right left-most row + if n_row == 1: # if there is only one row, the ax array is 1D + axarr[0].set_ylabel(ylabel, fontsize=label_fontsize) + # If there is more than one row, the ax array is 2D + else: + for _ax in axarr[:, 0]: + _ax.set_ylabel(ylabel, fontsize=label_fontsize) + + +def add_labels( + axarr, + n_row: int = None, + n_col: int = None, + xlabel: str = None, + ylabel: str = None, + label_fontsize: int = None +): + """ + Wrapper function for configuring labels for both axes. + """ + add_xlabels(axarr, n_row, n_col, xlabel, label_fontsize) + add_ylabels(axarr, n_row, ylabel, label_fontsize) + + +def remove_unused_axes(axarr_it, n_params: int = None): + for _ax in axarr_it[n_params:]: + _ax.remove() + + +def preprocess( + post_samples, + prior_samples, + fig_size: tuple = None, + collapse: bool = True +): + """ + Procedural wrapper that encompasses all preprocessing steps, + including shape-checking, parameter name generation, layout configuration, + figure initialization, and axial collapsing for loop and plot. + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws obtained for generating n_data_sets + fig_size : tuple, optional, default: None + Size of the figure adjusting to the display resolution + stacked : bool, optional, default: False + Whether subplots in a figure are stacked by rows + collapse : bool, optional, default: True + Whether subplots in a figure are collapsed into rows + """ + + # Sanity check + check_posterior_prior_shapes(post_samples, prior_samples) + + # Determine parameters and parameter names + n_params, param_names = get_count_and_names(post_samples) + + # Configure layout + n_row, n_col = configure_layout(n_params) + + # Initialize figure + f, axarr = initialize_figure(n_row, n_col, fig_size=fig_size) + + # turn axarr into 1D list + if collapse: + axarr_it = collapse_axes(axarr, n_row, n_col) + else: + axarr_it = axarr + + return f, axarr, axarr_it, n_row, n_col, n_params, param_names + + +def postprocess(*args): + """ + Procedural wrapper for postprocessing steps, including adding labels and removing unused axes. + """ + + add_labels(args) + remove_unused_axes(args) From 2df83141519f45091ae8a8a307a5237c09b6d72b Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 9 Oct 2024 01:36:18 -0400 Subject: [PATCH 07/22] Add refactored plot recovery from previous --- bayesflow/diagnostics/plot_recovery.py | 165 +++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 bayesflow/diagnostics/plot_recovery.py diff --git a/bayesflow/diagnostics/plot_recovery.py b/bayesflow/diagnostics/plot_recovery.py new file mode 100644 index 000000000..2001c95e6 --- /dev/null +++ b/bayesflow/diagnostics/plot_recovery.py @@ -0,0 +1,165 @@ + +import numpy as np +from scipy.stats import median_abs_deviation +from sklearn.metrics import r2_score +import seaborn as sns + +from ..utils.plot_utils import preprocess, postprocess + + +def plot_recovery( + post_samples, + prior_samples, + point_agg=np.median, + uncertainty_agg=median_abs_deviation, + param_names: list = None, + fig_size: tuple = None, + label_fontsize: int = 16, + title_fontsize: int = 18, + metric_fontsize: int = 16, + tick_fontsize: int = 12, + add_corr: bool = True, + add_r2: bool = True, + color: str | tuple = "#8f2727", + n_col: int = None, + n_row: int = None, + xlabel: str = "Ground truth", + ylabel: str = "Estimated", + **kwargs, +): + """Creates and plots publication-ready recovery plot with true vs. point estimate + uncertainty. + The point estimate can be controlled with the ``point_agg`` argument, and the uncertainty estimate + can be controlled with the ``uncertainty_agg`` argument. + + This plot yields similar information as the "posterior z-score", but allows for generic + point and uncertainty estimates: + + https://betanalpha.github.io/assets/case_studies/principled_bayesian_workflow.html + + Important: Posterior aggregates play no special role in Bayesian inference and should only + be used heuristically. For instance, in the case of multi-modal posteriors, common point + estimates, such as mean, (geometric) median, or maximum a posteriori (MAP) mean nothing. + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws (true parameters) obtained for generating the n_data_sets + point_agg : callable, optional, default: ``np.median`` + The function to apply to the posterior draws to get a point estimate for each marginal. + The default computes the marginal median for each marginal posterior as a robust + point estimate. + uncertainty_agg : callable or None, optional, default: scipy.stats.median_abs_deviation + The function to apply to the posterior draws to get an uncertainty estimate. + If ``None`` provided, a simple scatter using only ``point_agg`` will be plotted. + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + fig_size : tuple or None, optional, default : None + The figure size passed to the matplotlib constructor. Inferred if None. + label_fontsize : int, optional, default: 16 + The font size of the y-label text + title_fontsize : int, optional, default: 18 + The font size of the title text + metric_fontsize : int, optional, default: 16 + The font size of the goodness-of-fit metric (if provided) + tick_fontsize : int, optional, default: 12 + The font size of the axis tick labels + add_corr : bool, optional, default: True + A flag for adding correlation between true and estimates to the plot + add_r2 : bool, optional, default: True + A flag for adding R^2 between true and estimates to the plot + color : str, optional, default: '#8f2727' + The color for the true vs. estimated scatter points and error bars + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + xlabel : str, optional, default: 'Ground truth' + The label on the x-axis of the plot + ylabel : str, optional, default: 'Estimated' + The label on the y-axis of the plot + **kwargs : optional + Additional keyword arguments passed to ax.errorbar or ax.scatter. + Example: `rasterized=True` to reduce PDF file size with many dots + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation from the expected shapes of ``post_samples`` and ``prior_samples``. + """ + + # Preprocess + f, axarr, axarr_it, n_row, n_col, n_params, param_names = preprocess( + post_samples, prior_samples, fig_size=fig_size + ) + + # Compute point estimates and uncertainties + est = point_agg(post_samples, axis=1) + if uncertainty_agg is not None: + u = uncertainty_agg(post_samples, axis=1) + + # Loop and plot + for i, ax in enumerate(axarr_it): + if i >= n_params: + break + + # Add scatter and error bars + if uncertainty_agg is not None: + _ = ax.errorbar(prior_samples[:, i], est[:, i], yerr=u[:, i], fmt="o", alpha=0.5, color=color, **kwargs) + else: + _ = ax.scatter(prior_samples[:, i], est[:, i], alpha=0.5, color=color, **kwargs) + + # Make plots quadratic to avoid visual illusions + lower = min(prior_samples[:, i].min(), est[:, i].min()) + upper = max(prior_samples[:, i].max(), est[:, i].max()) + eps = (upper - lower) * 0.1 + ax.set_xlim([lower - eps, upper + eps]) + ax.set_ylim([lower - eps, upper + eps]) + ax.plot( + [ax.get_xlim()[0], ax.get_xlim()[1]], + [ax.get_ylim()[0], ax.get_ylim()[1]], + color="black", + alpha=0.9, + linestyle="dashed", + ) + + # Add optional metrics and title + if add_r2: + r2 = r2_score(prior_samples[:, i], est[:, i]) + ax.text( + 0.1, + 0.9, + "$R^2$ = {:.3f}".format(r2), + horizontalalignment="left", + verticalalignment="center", + transform=ax.transAxes, + size=metric_fontsize, + ) + if add_corr: + corr = np.corrcoef(prior_samples[:, i], est[:, i])[0, 1] + ax.text( + 0.1, + 0.8, + "$r$ = {:.3f}".format(corr), + horizontalalignment="left", + verticalalignment="center", + transform=ax.transAxes, + size=metric_fontsize, + ) + ax.set_title(param_names[i], fontsize=title_fontsize) + + # Prettify + sns.despine(ax=ax) + ax.grid(alpha=0.5) + ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + postprocess(axarr, axarr_it, n_row, n_col, n_params, xlabel, ylabel, label_fontsize) + + f.tight_layout() + return f From d83fa8160a60e835837aee733457fb8752838bb8 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 9 Oct 2024 01:38:39 -0400 Subject: [PATCH 08/22] Add loss plot from previous --- bayesflow/diagnostics/plot_losses.py | 121 +++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 bayesflow/diagnostics/plot_losses.py diff --git a/bayesflow/diagnostics/plot_losses.py b/bayesflow/diagnostics/plot_losses.py new file mode 100644 index 000000000..d778e1e8b --- /dev/null +++ b/bayesflow/diagnostics/plot_losses.py @@ -0,0 +1,121 @@ + +import seaborn as sns + +from tensorflow.keras import ops +from ..utils.plot_utils import initialize_figure + + +def plot_losses( + train_losses, + val_losses=None, + moving_average: bool = False, + ma_window_fraction: float = 0.01, + train_color: str = "#8f2727", + val_color: str = "black", + lw_train: int = 2, + lw_val: int = 3, + grid_alpha: float = 0.5, + legend_fontsize: int = 14, + label_fontsize: int = 14, + title_fontsize: int = 16, +): + """A generic helper function to plot the losses of a series of training epochs and runs. + + Parameters + ---------- + + train_losses : pd.DataFrame + The (plottable) history as returned by a train_[...] method of a ``Trainer`` instance. + Alternatively, you can just pass a data frame of validation losses instead of train losses, + if you only want to plot the validation loss. + val_losses : pd.DataFrame or None, optional, default: None + The (plottable) validation history as returned by a train_[...] method of a ``Trainer`` instance. + If left ``None``, only train losses are plotted. Should have the same number of columns + as ``train_losses``. + moving_average : bool, optional, default: False + A flag for adding a moving average line of the train_losses. + ma_window_fraction : int, optional, default: 0.01 + Window size for the moving average as a fraction of total training steps. + fig_size : tuple or None, optional, default: None + The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` + train_color : str, optional, default: '#8f2727' + The color for the train loss trajectory + val_color : str, optional, default: black + The color for the optional validation loss trajectory + lw_train : int, optional, default: 2 + The linewidth for the training loss curve + lw_val : int, optional, default: 3 + The linewidth for the validation loss curve + grid_alpha : float, optional, default 0.5 + The opacity factor for the background gridlines + legend_fontsize : int, optional, default: 14 + The font size of the legend text + label_fontsize : int, optional, default: 14 + The font size of the y-label text + title_fontsize : int, optional, default: 16 + The font size of the title text + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + AssertionError + If the number of columns in ``train_losses`` does not match the + number of columns in ``val_losses``. + """ + + # Determine the number of rows for plot + n_row = len(train_losses.columns) + + # Initialize figure + f, axarr = initialize_figure(n_row=n_row, n_col=1, fig_size=(16, int(4 * n_row))) + + # if fig_size is None: + # fig_size = (16, int(4 * n_row)) + # f, axarr = plt.subplots(n_row, 1, figsize=fig_size) + + # Get the number of steps as an array + train_step_index = ops.arange(1, len(train_losses) + 1) + if val_losses is not None: + val_step = int(ops.floor(len(train_losses) / len(val_losses))) + val_step_index = train_step_index[(val_step - 1) :: val_step] + + # If unequal length due to some reason, attempt a fix + if val_step_index.shape[0] > val_losses.shape[0]: + val_step_index = val_step_index[: val_losses.shape[0]] + + # Loop through loss entries and populate plot + looper = [axarr] if n_row == 1 else axarr.flat + for i, ax in enumerate(looper): + # Plot train curve + ax.plot(train_step_index, train_losses.iloc[:, i], color=train_color, lw=lw_train, alpha=0.9, label="Training") + if moving_average and train_losses.columns[i] == "Loss": + moving_average_window = int(train_losses.shape[0] * ma_window_fraction) + smoothed_loss = train_losses.iloc[:, i].rolling(window=moving_average_window).mean() + ax.plot(train_step_index, smoothed_loss, color="grey", lw=lw_train, label="Training (Moving Average)") + + # Plot optional val curve + if val_losses is not None: + if i < val_losses.shape[1]: + ax.plot( + val_step_index, + val_losses.iloc[:, i], + linestyle="--", + marker="o", + color=val_color, + lw=lw_val, + label="Validation", + ) + # Schmuck + ax.set_xlabel("Training step #", fontsize=label_fontsize) + ax.set_ylabel("Value", fontsize=label_fontsize) + sns.despine(ax=ax) + ax.grid(alpha=grid_alpha) + ax.set_title(train_losses.columns[i], fontsize=title_fontsize) + # Only add legend if there is a validation curve + if val_losses is not None or moving_average: + ax.legend(fontsize=legend_fontsize) + f.tight_layout() + return f From 9e75b283e5761ba89ffc01fddd93f7c1366e3a81 Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 14 Oct 2024 18:14:56 -0400 Subject: [PATCH 09/22] Add TwoMoons notebook for testing diagnostics --- bayesflow/diagnostics/__init__.py | 2 + examples/TwoMoons_Diagnostics.ipynb | 1637 ++++++++++++++++++++++++++ examples/TwoMoons_FlowMatching.ipynb | 83 +- 3 files changed, 1674 insertions(+), 48 deletions(-) create mode 100644 examples/TwoMoons_Diagnostics.ipynb diff --git a/bayesflow/diagnostics/__init__.py b/bayesflow/diagnostics/__init__.py index e69de29bb..28adaf7ba 100644 --- a/bayesflow/diagnostics/__init__.py +++ b/bayesflow/diagnostics/__init__.py @@ -0,0 +1,2 @@ +from .plot_losses import plot_losses +from .plot_recovery import plot_recovery \ No newline at end of file diff --git a/examples/TwoMoons_Diagnostics.ipynb b/examples/TwoMoons_Diagnostics.ipynb new file mode 100644 index 000000000..43abbdaa4 --- /dev/null +++ b/examples/TwoMoons_Diagnostics.ipynb @@ -0,0 +1,1637 @@ +{ + "cells": [ + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2024-10-14T21:00:47.608845Z", + "start_time": "2024-10-14T21:00:47.596803Z" + } + }, + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import seaborn as sns\n", + "\n", + "# ensure the backend is set\n", + "import os\n", + "if \"KERAS_BACKEND\" not in os.environ:\n", + " # set this to \"torch\", \"tensorflow\", or \"jax\"\n", + " os.environ[\"KERAS_BACKEND\"] = \"jax\"\n", + "\n", + "import keras\n", + "\n", + "# for BayesFlow devs: this ensures that the latest dev version can be found\n", + "import sys\n", + "sys.path.append('../')\n", + "\n", + "import bayesflow as bf\n", + "from bayesflow.diagnostics.plot_losses import plot_losses\n", + "from bayesflow.diagnostics.plot_recovery import plot_recovery" + ], + "outputs": [], + "execution_count": 29 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:27:46.593978Z", + "start_time": "2024-10-14T20:27:46.585246Z" + } + }, + "cell_type": "code", + "source": [ + "def alpha_prior():\n", + " alpha = np.random.uniform(-np.pi / 2, np.pi / 2)\n", + " return dict(alpha=alpha)\n", + "\n", + "def r_prior():\n", + " r = np.random.normal(0.1, 0.01)\n", + " return dict(r=r)\n", + "\n", + "def theta_prior():\n", + " theta = np.random.uniform(-1, 1, 2)\n", + " return dict(theta=theta)\n", + "\n", + "def forward_model(theta, alpha, r):\n", + " x1 = -np.abs(theta[0] + theta[1]) / np.sqrt(2) + r * np.cos(alpha) + 0.25\n", + " x2 = (-theta[0] + theta[1]) / np.sqrt(2) + r * np.sin(alpha)\n", + " return dict(x=np.array([x1, x2]))" + ], + "id": "2aa9c9710a36b980", + "outputs": [], + "execution_count": 2 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:27:47.665818Z", + "start_time": "2024-10-14T20:27:47.650596Z" + } + }, + "cell_type": "code", + "source": "simulator = bf.simulators.CompositeLambdaSimulator([alpha_prior, r_prior, theta_prior, forward_model])", + "id": "7db949c6bfecc86d", + "outputs": [], + "execution_count": 3 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:27:48.154339Z", + "start_time": "2024-10-14T20:27:48.131066Z" + } + }, + "cell_type": "code", + "source": [ + "# generate 128 random draws from the joint distribution p(r, alpha, theta, x)\n", + "sample_data = simulator.sample((128,))" + ], + "id": "b3a0fe5293beec1b", + "outputs": [], + "execution_count": 4 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:27:48.809696Z", + "start_time": "2024-10-14T20:27:48.792150Z" + } + }, + "cell_type": "code", + "source": [ + "print(\"Type of sample_data:\\n\\t\", type(sample_data))\n", + "print(\"Keys of sample_data:\\n\\t\", sample_data.keys())\n", + "print(\"Types of sample_data values:\\n\\t\", {k: type(v) for k, v in sample_data.items()})\n", + "print(\"Shapes of sample_data values:\\n\\t\", {k: v.shape for k, v in sample_data.items()})" + ], + "id": "7b75698477fdf1f3", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Type of sample_data:\n", + "\t \n", + "Keys of sample_data:\n", + "\t dict_keys(['alpha', 'r', 'theta', 'x'])\n", + "Types of sample_data values:\n", + "\t {'alpha': , 'r': , 'theta': , 'x': }\n", + "Shapes of sample_data values:\n", + "\t {'alpha': (128, 1), 'r': (128, 1), 'theta': (128, 2), 'x': (128, 2)}\n" + ] + } + ], + "execution_count": 5 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:27:50.913110Z", + "start_time": "2024-10-14T20:27:50.887083Z" + } + }, + "cell_type": "code", + "source": "sample_data", + "id": "ad5010214a02d3de", + "outputs": [ + { + "data": { + "text/plain": [ + "{'alpha': array([[-0.32667086],\n", + " [ 0.4273289 ],\n", + " [-1.4049091 ],\n", + " [ 0.6495664 ],\n", + " [-1.2431567 ],\n", + " [ 0.00233715],\n", + " [ 0.8480671 ],\n", + " [ 0.3825317 ],\n", + " [ 0.51094717],\n", + " [-1.089614 ],\n", + " [-1.3354424 ],\n", + " [ 1.521167 ],\n", + " [-0.39602077],\n", + " [ 0.88564837],\n", + " [ 0.9123921 ],\n", + " [-0.8354839 ],\n", + " [ 0.4103786 ],\n", + " [-1.3677335 ],\n", + " [ 1.5597553 ],\n", + " [ 0.857706 ],\n", + " [ 1.3851596 ],\n", + " [ 0.08588123],\n", + " [-1.3278203 ],\n", + " [-1.4882586 ],\n", + " [-0.7284002 ],\n", + " [ 0.13790596],\n", + " [ 1.0051142 ],\n", + " [-1.2707354 ],\n", + " [-1.4755409 ],\n", + " [-0.03580285],\n", + " [-1.5595189 ],\n", + " [-0.67198914],\n", + " [-1.5414019 ],\n", + " [ 0.46680772],\n", + " [-0.49131817],\n", + " [ 1.3081697 ],\n", + " [ 1.3158842 ],\n", + " [ 0.5498999 ],\n", + " [ 0.28842863],\n", + " [ 1.5669599 ],\n", + " [ 1.1178267 ],\n", + " [-1.3773671 ],\n", + " [ 0.21009572],\n", + " [ 1.247244 ],\n", + " [-0.70116574],\n", + " [-1.3302704 ],\n", + " [-1.2457173 ],\n", + " [ 1.5158378 ],\n", + " [ 0.4760814 ],\n", + " [ 0.5130099 ],\n", + " [ 0.38356388],\n", + " [ 0.51667935],\n", + " [-1.3263792 ],\n", + " [ 1.1610556 ],\n", + " [-1.0892584 ],\n", + " [ 1.5635314 ],\n", + " [ 0.6141801 ],\n", + " [ 0.7341371 ],\n", + " [ 0.23875016],\n", + " [ 0.6227148 ],\n", + " [-0.4782562 ],\n", + " [ 0.3656121 ],\n", + " [ 0.6328574 ],\n", + " [-1.3631004 ],\n", + " [ 1.4811654 ],\n", + " [-1.373762 ],\n", + " [-0.24200128],\n", + " [ 0.00168619],\n", + " [ 1.0400674 ],\n", + " [ 0.18901351],\n", + " [ 0.9238482 ],\n", + " [ 0.02520916],\n", + " [ 1.4398099 ],\n", + " [-0.51892877],\n", + " [-1.1703858 ],\n", + " [-0.12021437],\n", + " [ 0.80984557],\n", + " [-0.9726958 ],\n", + " [-0.2244538 ],\n", + " [ 0.30686495],\n", + " [ 0.59431726],\n", + " [-1.322811 ],\n", + " [ 0.8136638 ],\n", + " [-1.5020558 ],\n", + " [-1.4799207 ],\n", + " [-1.3136892 ],\n", + " [ 0.06446969],\n", + " [ 1.3328581 ],\n", + " [ 0.66848814],\n", + " [ 0.7860198 ],\n", + " [ 1.315634 ],\n", + " [-0.23607427],\n", + " [-0.8002341 ],\n", + " [ 1.5251296 ],\n", + " [ 0.15763855],\n", + " [-1.5531527 ],\n", + " [ 0.56706136],\n", + " [ 1.047334 ],\n", + " [ 0.89252347],\n", + " [ 1.2277393 ],\n", + " [ 0.8999341 ],\n", + " [ 1.0635433 ],\n", + " [ 0.04854681],\n", + " [ 0.84339076],\n", + " [ 0.42572305],\n", + " [-0.13823606],\n", + " [ 0.36718416],\n", + " [-1.1577339 ],\n", + " [-0.5522179 ],\n", + " [ 0.7911456 ],\n", + " [ 0.8179233 ],\n", + " [-0.62356246],\n", + " [-0.33656436],\n", + " [ 0.17404567],\n", + " [ 0.4389914 ],\n", + " [-0.9474675 ],\n", + " [-1.1168886 ],\n", + " [-0.09231075],\n", + " [ 1.0462689 ],\n", + " [-0.90480804],\n", + " [-1.4208354 ],\n", + " [-0.16266003],\n", + " [ 0.58943385],\n", + " [ 0.9045791 ],\n", + " [ 0.42233914],\n", + " [-0.9887428 ],\n", + " [ 1.3377244 ],\n", + " [ 1.3765699 ]], dtype=float32),\n", + " 'r': array([[0.08992655],\n", + " [0.11262761],\n", + " [0.09988438],\n", + " [0.10757513],\n", + " [0.09842595],\n", + " [0.08780682],\n", + " [0.09458143],\n", + " [0.08305464],\n", + " [0.10684904],\n", + " [0.09243193],\n", + " [0.09636895],\n", + " [0.10226896],\n", + " [0.10459247],\n", + " [0.10921837],\n", + " [0.11026573],\n", + " [0.08566567],\n", + " [0.08520468],\n", + " [0.09628233],\n", + " [0.09432837],\n", + " [0.09125222],\n", + " [0.09802835],\n", + " [0.08590778],\n", + " [0.10220997],\n", + " [0.09208615],\n", + " [0.09563595],\n", + " [0.11774731],\n", + " [0.08680242],\n", + " [0.11012331],\n", + " [0.09633071],\n", + " [0.09756536],\n", + " [0.12378401],\n", + " [0.11334178],\n", + " [0.09062148],\n", + " [0.10854411],\n", + " [0.09699341],\n", + " [0.09652205],\n", + " [0.10683485],\n", + " [0.10969307],\n", + " [0.1108022 ],\n", + " [0.10317604],\n", + " [0.07496227],\n", + " [0.09012368],\n", + " [0.09105562],\n", + " [0.08200298],\n", + " [0.0828375 ],\n", + " [0.10398124],\n", + " [0.1007928 ],\n", + " [0.10111594],\n", + " [0.10167468],\n", + " [0.08223265],\n", + " [0.09048541],\n", + " [0.09253196],\n", + " [0.11334959],\n", + " [0.10842754],\n", + " [0.09764497],\n", + " [0.08462145],\n", + " [0.11413962],\n", + " [0.11527291],\n", + " [0.10542885],\n", + " [0.09038962],\n", + " [0.10374972],\n", + " [0.10187822],\n", + " [0.10547098],\n", + " [0.0985254 ],\n", + " [0.11656975],\n", + " [0.10378908],\n", + " [0.09430881],\n", + " [0.10135388],\n", + " [0.09672231],\n", + " [0.10255771],\n", + " [0.09387974],\n", + " [0.09308615],\n", + " [0.09995835],\n", + " [0.10125452],\n", + " [0.08677949],\n", + " [0.10938775],\n", + " [0.08700917],\n", + " [0.10388696],\n", + " [0.10093628],\n", + " [0.08200264],\n", + " [0.10838373],\n", + " [0.11670296],\n", + " [0.0975048 ],\n", + " [0.10851161],\n", + " [0.11573117],\n", + " [0.08443198],\n", + " [0.11458082],\n", + " [0.09952442],\n", + " [0.09616404],\n", + " [0.10941261],\n", + " [0.10953938],\n", + " [0.10442203],\n", + " [0.10339843],\n", + " [0.11485437],\n", + " [0.10533367],\n", + " [0.09481129],\n", + " [0.09040346],\n", + " [0.10173973],\n", + " [0.10177024],\n", + " [0.11780889],\n", + " [0.09570873],\n", + " [0.11882972],\n", + " [0.08545157],\n", + " [0.09944647],\n", + " [0.08443879],\n", + " [0.08220201],\n", + " [0.1000874 ],\n", + " [0.09128848],\n", + " [0.08286219],\n", + " [0.09595444],\n", + " [0.0979057 ],\n", + " [0.10283633],\n", + " [0.09927638],\n", + " [0.08226943],\n", + " [0.08991795],\n", + " [0.08759429],\n", + " [0.09739396],\n", + " [0.09011568],\n", + " [0.1022917 ],\n", + " [0.10698826],\n", + " [0.09153012],\n", + " [0.11289136],\n", + " [0.09984156],\n", + " [0.09630046],\n", + " [0.09598115],\n", + " [0.09263593],\n", + " [0.11081006],\n", + " [0.10720474]], dtype=float32),\n", + " 'theta': array([[-3.05581540e-02, 1.45420015e-01],\n", + " [ 2.11661726e-01, -8.16319406e-01],\n", + " [-2.41767168e-01, -8.90369564e-02],\n", + " [-9.58784044e-01, -6.43721148e-02],\n", + " [-8.37376893e-01, -3.60958546e-01],\n", + " [-5.58282018e-01, 9.12082434e-01],\n", + " [ 4.27646607e-01, 8.86675537e-01],\n", + " [ 1.40667871e-01, -2.22100895e-02],\n", + " [ 1.42964154e-01, -7.41437301e-02],\n", + " [-2.23557115e-01, 6.94955945e-01],\n", + " [ 1.82445496e-01, -8.65079284e-01],\n", + " [ 4.57260549e-01, -5.30316174e-01],\n", + " [-6.21315300e-01, 2.07263768e-01],\n", + " [ 6.10240161e-01, -8.74304950e-01],\n", + " [-2.59324551e-01, 4.74186003e-01],\n", + " [-3.78903113e-02, 9.00502682e-01],\n", + " [ 6.82602823e-01, -7.56820023e-01],\n", + " [ 5.94463050e-01, -1.21822745e-01],\n", + " [ 8.27706277e-01, 3.59144360e-01],\n", + " [-7.00999856e-01, 4.03989136e-01],\n", + " [-4.31024581e-01, -7.00606406e-01],\n", + " [ 9.86329079e-01, -8.04728150e-01],\n", + " [-5.38084447e-01, 3.05770040e-01],\n", + " [ 6.28210962e-01, 3.67884368e-01],\n", + " [ 1.20291792e-01, 5.00622094e-01],\n", + " [-7.59945214e-01, 4.06511813e-01],\n", + " [ 9.54336047e-01, -4.55123216e-01],\n", + " [-4.13251549e-01, 5.47428668e-01],\n", + " [-9.78350341e-01, 4.92099434e-01],\n", + " [ 6.58699691e-01, -5.58192194e-01],\n", + " [ 3.67015302e-01, 3.97362381e-01],\n", + " [-8.03872824e-01, -5.61456561e-01],\n", + " [-7.27509439e-01, -2.47731626e-01],\n", + " [-2.85620838e-01, -4.79526430e-01],\n", + " [-1.94825262e-01, -2.55926311e-01],\n", + " [ 1.67872280e-01, -9.53495979e-01],\n", + " [-1.38880566e-01, -6.23547696e-02],\n", + " [ 8.53347182e-01, -2.39163131e-01],\n", + " [ 6.25432789e-01, -7.36523867e-01],\n", + " [ 7.81854391e-01, 2.92491883e-01],\n", + " [-8.66746664e-01, -8.48121166e-01],\n", + " [-1.03085585e-01, -3.94162923e-01],\n", + " [-7.86425531e-01, 8.93066466e-01],\n", + " [ 4.55110759e-01, -3.10456127e-01],\n", + " [ 8.81353259e-01, 5.10756969e-01],\n", + " [-7.21052825e-01, -2.99451917e-01],\n", + " [-7.17009425e-01, 7.83575058e-01],\n", + " [ 3.48350137e-01, 7.37254381e-01],\n", + " [-7.80723929e-01, -8.84120941e-01],\n", + " [-1.95760652e-01, -2.31012523e-01],\n", + " [ 6.60519898e-01, -6.55787408e-01],\n", + " [-7.19074786e-01, -2.03196511e-01],\n", + " [ 6.15297891e-02, -5.67862332e-01],\n", + " [-6.49809659e-01, 5.80364406e-01],\n", + " [ 2.61088669e-01, 5.19194543e-01],\n", + " [ 3.60945612e-01, 3.35697114e-01],\n", + " [ 3.50850195e-01, -7.03177214e-01],\n", + " [ 7.74477005e-01, -2.59503335e-01],\n", + " [-7.42385924e-01, -8.22378099e-01],\n", + " [-2.85933644e-01, 6.74357533e-01],\n", + " [-8.53843629e-01, 4.06876981e-01],\n", + " [ 9.58840549e-01, 9.16405022e-01],\n", + " [ 7.74163187e-01, 7.48323083e-01],\n", + " [ 8.63941729e-01, -3.28039467e-01],\n", + " [-2.40420654e-01, 2.52833039e-01],\n", + " [-5.98286033e-01, 9.57714319e-01],\n", + " [-7.42678821e-01, -3.43333989e-01],\n", + " [ 9.68854368e-01, 3.85829717e-01],\n", + " [-2.75604427e-01, -7.95602053e-02],\n", + " [-2.03438953e-01, 9.11069755e-03],\n", + " [-1.43148184e-01, -1.46573469e-01],\n", + " [-9.49487031e-01, 3.15213263e-01],\n", + " [ 6.84628665e-01, 9.61936653e-01],\n", + " [-2.04393521e-01, 5.88398874e-01],\n", + " [-9.50749099e-01, 7.83227861e-01],\n", + " [ 2.88510352e-01, 9.24940228e-01],\n", + " [ 8.27838302e-01, -9.24422801e-01],\n", + " [ 6.05663717e-01, -7.59422839e-01],\n", + " [-9.75102127e-01, 1.72841713e-01],\n", + " [-2.73299128e-01, -2.70784408e-01],\n", + " [-4.23562735e-01, 1.31962135e-01],\n", + " [ 9.45790648e-01, -3.38832617e-01],\n", + " [ 1.88001692e-01, 2.13898122e-01],\n", + " [ 5.90824075e-02, -2.38077283e-01],\n", + " [-9.78379369e-01, -6.26421869e-01],\n", + " [-6.73744559e-01, 4.74431008e-01],\n", + " [ 5.22617698e-01, 8.93913805e-01],\n", + " [ 5.95449269e-01, 9.14583445e-01],\n", + " [ 3.90204303e-02, -2.39531472e-01],\n", + " [ 5.71989954e-01, -4.74963844e-01],\n", + " [ 6.58734083e-01, 5.09142876e-01],\n", + " [-2.53153235e-01, -3.53049845e-01],\n", + " [-4.54396307e-01, -6.79341435e-01],\n", + " [ 9.29932415e-01, 8.80713701e-01],\n", + " [ 2.17661366e-01, 6.54169917e-01],\n", + " [ 2.10923515e-02, -2.40477219e-01],\n", + " [-2.51346976e-01, -2.13967457e-01],\n", + " [ 5.17891407e-01, 2.40374476e-01],\n", + " [ 3.59319031e-01, -3.92084904e-02],\n", + " [-6.95064545e-01, 6.54330254e-01],\n", + " [ 4.39562589e-01, -7.08017647e-01],\n", + " [-2.80083835e-01, -2.79529452e-01],\n", + " [ 4.68703598e-01, -3.61453325e-01],\n", + " [ 1.75413545e-04, -6.19711876e-01],\n", + " [-4.56947744e-01, -5.46697043e-02],\n", + " [ 1.10423014e-01, 3.81866604e-01],\n", + " [ 4.95571673e-01, 6.30076528e-01],\n", + " [ 8.15737665e-01, 1.29877731e-01],\n", + " [-9.83589232e-01, -7.80846715e-01],\n", + " [-1.60895333e-01, -4.13245976e-01],\n", + " [-2.93852985e-01, 7.96879292e-01],\n", + " [-2.34337926e-01, 8.69962096e-01],\n", + " [ 8.72636318e-01, -3.94712389e-02],\n", + " [ 4.87689257e-01, -5.77459276e-01],\n", + " [-1.07371598e-01, -4.61379528e-01],\n", + " [-5.80118716e-01, 2.98643053e-01],\n", + " [ 3.65539849e-01, -8.42200577e-01],\n", + " [-5.28841615e-02, 4.88022923e-01],\n", + " [-9.50672925e-01, 2.79116750e-01],\n", + " [-6.66263402e-01, -8.50575149e-01],\n", + " [-2.95702636e-01, -7.57089794e-01],\n", + " [-4.11702067e-01, 9.68640268e-01],\n", + " [ 6.91891074e-01, 3.68866891e-01],\n", + " [-8.32779333e-03, 9.29424405e-01],\n", + " [ 5.37282348e-01, -9.28587794e-01],\n", + " [-5.35197616e-01, 4.34972018e-01],\n", + " [-8.97157609e-01, -2.00011898e-02],\n", + " [-2.74420083e-01, -9.79378104e-01]], dtype=float32),\n", + " 'x': array([[ 2.53951252e-01, 9.55786705e-02],\n", + " [-7.50578418e-02, -6.80214882e-01],\n", + " [ 3.25798206e-02, 9.48337466e-03],\n", + " [-3.87813628e-01, 6.97510600e-01],\n", + " [-5.65676749e-01, 2.43688509e-01],\n", + " [ 8.76319110e-02, 1.03990984e+00],\n", + " [-6.16806686e-01, 3.95518869e-01],\n", + " [ 2.43289366e-01, -8.41702744e-02],\n", + " [ 2.94539064e-01, -1.01268895e-01],\n", + " [-4.05492671e-02, 5.67550659e-01],\n", + " [-2.10222960e-01, -8.34424138e-01],\n", + " [ 2.03415319e-01, -5.96179128e-01],\n", + " [ 5.37187196e-02, 5.45547307e-01],\n", + " [ 1.32390037e-01, -9.65161324e-01],\n", + " [ 1.65536702e-01, 6.05887115e-01],\n", + " [-3.02492917e-01, 6.00012600e-01],\n", + " [ 2.75650620e-01, -9.83832717e-01],\n", + " [-6.47898912e-02, -6.00794613e-01],\n", + " [-5.88188708e-01, -2.37000689e-01],\n", + " [ 9.96765494e-02, 8.50363314e-01],\n", + " [-5.32090664e-01, -9.42790136e-02],\n", + " [ 2.07179919e-01, -1.25909996e+00],\n", + " [ 1.10319838e-01, 4.97487545e-01],\n", + " [-4.46753800e-01, -2.75851369e-01],\n", + " [-1.17684998e-01, 2.05271512e-01],\n", + " [ 1.16714276e-01, 8.40996325e-01],\n", + " [-5.64713925e-02, -9.23357546e-01],\n", + " [ 1.87672526e-01, 5.74100673e-01],\n", + " [-8.46691579e-02, 9.43871021e-01],\n", + " [ 2.76433289e-01, -8.63964856e-01],\n", + " [-2.89100736e-01, -1.02317505e-01],\n", + " [-6.26734078e-01, 1.00853950e-01],\n", + " [-4.36936170e-01, 2.48671815e-01],\n", + " [-1.94109902e-01, -8.82630050e-02],\n", + " [ 1.67907290e-02, -8.89653489e-02],\n", + " [-2.80460954e-01, -6.99714661e-01],\n", + " [ 1.34644642e-01, 1.57494441e-01],\n", + " [-9.07719210e-02, -7.15195656e-01],\n", + " [ 2.77671933e-01, -9.31531489e-01],\n", + " [-5.09281754e-01, -2.42856264e-01],\n", + " [-9.29788351e-01, 8.05726424e-02],\n", + " [-8.42837393e-02, -2.94265717e-01],\n", + " [ 2.63646871e-01, 1.20657015e+00],\n", + " [ 1.73785478e-01, -4.63589519e-01],\n", + " [-6.71075225e-01, -3.15490365e-01],\n", + " [-4.46836084e-01, 1.97128952e-01],\n", + " [ 2.35122561e-01, 9.65559661e-01],\n", + " [-5.12083948e-01, 3.75960112e-01],\n", + " [-8.36854875e-01, -2.65152324e-02],\n", + " [ 1.98727194e-02, 1.54331038e-02],\n", + " [ 3.30564082e-01, -8.96907687e-01],\n", + " [-3.21691066e-01, 4.10491407e-01],\n", + " [-8.06015953e-02, -5.55028141e-01],\n", + " [ 2.44089246e-01, 9.69316781e-01],\n", + " [-2.56520003e-01, 9.59672704e-02],\n", + " [-2.41986051e-01, 6.67658299e-02],\n", + " [ 9.41473544e-02, -6.79532588e-01],\n", + " [-2.85616964e-02, -6.53907835e-01],\n", + " [-7.54016936e-01, -3.16303074e-02],\n", + " [ 4.87661436e-02, 7.31747448e-01],\n", + " [ 2.60557346e-02, 8.43715191e-01],\n", + " [-9.80854273e-01, 6.41715247e-03],\n", + " [-7.41514742e-01, 4.41092215e-02],\n", + " [-1.08623601e-01, -9.39265966e-01],\n", + " [ 2.51657397e-01, 4.64884877e-01],\n", + " [ 1.61637682e-02, 9.98477459e-01],\n", + " [-4.26366359e-01, 2.59778708e-01],\n", + " [-6.06552601e-01, -4.12089765e-01],\n", + " [ 4.78178374e-02, 2.22041234e-01],\n", + " [ 2.13320345e-01, 1.69564873e-01],\n", + " [ 1.01722233e-01, 7.24871457e-02],\n", + " [-1.05442718e-01, 8.96624506e-01],\n", + " [-9.01241720e-01, 2.95188427e-01],\n", + " [ 6.63916618e-02, 5.10371685e-01],\n", + " [ 1.65370926e-01, 1.14619160e+00],\n", + " [-4.99440819e-01, 4.36905563e-01],\n", + " [ 2.41706863e-01, -1.17602539e+00],\n", + " [ 1.99771896e-01, -1.05111480e+00],\n", + " [-2.18879402e-01, 7.89253116e-01],\n", + " [-5.65532483e-02, 2.65488382e-02],\n", + " [ 1.33606523e-01, 4.53504145e-01],\n", + " [-1.50539234e-01, -1.02149868e+00],\n", + " [ 3.27841304e-02, 8.91788527e-02],\n", + " [ 1.30884781e-01, -3.18378985e-01],\n", + " [-8.74263108e-01, 1.33617908e-01],\n", + " [ 1.30533725e-01, 7.30226099e-01],\n", + " [-6.37296259e-01, 2.69927859e-01],\n", + " [-7.94296503e-01, 3.22382361e-01],\n", + " [ 1.83682933e-01, -1.37363449e-01],\n", + " [ 2.58710474e-01, -6.62893653e-01],\n", + " [-5.48165679e-01, 2.15799548e-04],\n", + " [-7.71245658e-02, -9.50605869e-02],\n", + " [-4.79652673e-01, -2.33250588e-01],\n", + " [-1.02507687e+00, 7.99317434e-02],\n", + " [-2.62450218e-01, 3.25194120e-01],\n", + " [ 9.65442061e-02, -2.79754162e-01],\n", + " [-2.77321483e-03, 7.49920383e-02],\n", + " [-2.35317081e-01, -1.08117975e-01],\n", + " [ 8.75033140e-02, -2.02557355e-01],\n", + " [ 2.60823607e-01, 1.06511045e+00],\n", + " [ 1.19672045e-01, -7.36494482e-01],\n", + " [-8.79814923e-02, 1.04258955e-01],\n", + " [ 2.59513497e-01, -5.82862794e-01],\n", + " [-1.21953085e-01, -3.64049733e-01],\n", + " [-3.48663330e-02, 3.19325000e-01],\n", + " [-1.66834649e-02, 1.80612490e-01],\n", + " [-4.52537745e-01, 1.31039545e-01],\n", + " [-3.82006407e-01, -5.68586946e-01],\n", + " [-9.27098870e-01, 9.98930261e-02],\n", + " [-8.85202736e-02, -1.10199966e-01],\n", + " [-3.87514569e-02, 8.42708707e-01],\n", + " [-1.15971282e-01, 7.20808744e-01],\n", + " [-2.45430186e-01, -6.77743077e-01],\n", + " [ 2.67549545e-01, -7.38927364e-01],\n", + " [-7.07757547e-02, -2.12103873e-01],\n", + " [ 1.02099039e-01, 5.50257146e-01],\n", + " [-4.43446413e-02, -9.41533327e-01],\n", + " [ 3.20424363e-02, 3.74172240e-01],\n", + " [-1.73633844e-01, 9.58132327e-01],\n", + " [-7.56465554e-01, -2.14453653e-01],\n", + " [-4.80762124e-01, -4.16752875e-01],\n", + " [-3.24135572e-02, 9.57767427e-01],\n", + " [-4.17075306e-01, -1.72911614e-01],\n", + " [-3.41798395e-01, 7.38798976e-01],\n", + " [ 6.08528070e-02, -9.97184515e-01],\n", + " [ 2.30055511e-01, 6.08631432e-01],\n", + " [-3.72935683e-01, 7.28057206e-01],\n", + " [-6.15877926e-01, -3.93291622e-01]], dtype=float32)}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 6 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T22:06:35.724356Z", + "start_time": "2024-10-14T22:06:35.716334Z" + } + }, + "cell_type": "code", + "source": [ + "# data_adapter = configurator\n", + "data_adapter = bf.ContinuousApproximator.build_data_adapter(\n", + " inference_variables=[\"theta\"],\n", + " inference_conditions=[\"x\"],\n", + ")" + ], + "id": "461e6dfcdf6944b", + "outputs": [], + "execution_count": 57 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:27:53.903783Z", + "start_time": "2024-10-14T20:27:53.883195Z" + } + }, + "cell_type": "code", + "source": [ + "num_training_batches = 1024\n", + "num_validation_batches = 256\n", + "batch_size = 128" + ], + "id": "ed2cec2c3fdedb22", + "outputs": [], + "execution_count": 8 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:10.611306Z", + "start_time": "2024-10-14T20:27:54.318482Z" + } + }, + "cell_type": "code", + "source": [ + "training_samples = simulator.sample((num_training_batches * batch_size,))\n", + "validation_samples = simulator.sample((num_validation_batches * batch_size,))" + ], + "id": "7d1bffc7f17b5aaa", + "outputs": [], + "execution_count": 9 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:22.181678Z", + "start_time": "2024-10-14T20:28:22.155164Z" + } + }, + "cell_type": "code", + "source": [ + "training_dataset = bf.datasets.OfflineDataset(training_samples, batch_size=batch_size, data_adapter=data_adapter)\n", + "validation_dataset = bf.datasets.OfflineDataset(validation_samples, batch_size=batch_size, data_adapter=data_adapter)" + ], + "id": "d7f545fd2ee536d8", + "outputs": [], + "execution_count": 10 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:23.402981Z", + "start_time": "2024-10-14T20:28:23.353636Z" + } + }, + "cell_type": "code", + "source": [ + "inference_network = bf.networks.FlowMatching(\n", + " subnet=\"mlp\",\n", + " subnet_kwargs=dict(\n", + " depth=6,\n", + " width=256,\n", + " ),\n", + ")" + ], + "id": "be6ed75d4d899021", + "outputs": [], + "execution_count": 11 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:24.123891Z", + "start_time": "2024-10-14T20:28:24.106889Z" + } + }, + "cell_type": "code", + "source": [ + "# Approximator is equivalent to Amortizer\n", + "approximator = bf.ContinuousApproximator(\n", + " inference_network=inference_network,\n", + " data_adapter=data_adapter,\n", + ")" + ], + "id": "b1dc4f27eb17b270", + "outputs": [], + "execution_count": 12 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:25.265638Z", + "start_time": "2024-10-14T20:28:25.223633Z" + } + }, + "cell_type": "code", + "source": [ + "learning_rate = 1e-4\n", + "optimizer = keras.optimizers.Adam(learning_rate=learning_rate)" + ], + "id": "ad75c807a7617e0a", + "outputs": [], + "execution_count": 13 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:26.705303Z", + "start_time": "2024-10-14T20:28:26.693791Z" + } + }, + "cell_type": "code", + "source": [ + "class BatchLossHistory(keras.callbacks.Callback):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.batch_losses = []\n", + "\n", + " def on_train_batch_end(self, batch, logs=None):\n", + " # 'logs' is a dictionary containing loss and other metrics\n", + " loss = logs.get('loss')\n", + " self.batch_losses.append(loss)" + ], + "id": "9d08447b96c58cf4", + "outputs": [], + "execution_count": 14 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:28.279798Z", + "start_time": "2024-10-14T20:28:28.258494Z" + } + }, + "cell_type": "code", + "source": [ + "approximator.compile(\n", + " optimizer=optimizer,\n", + " loss=\"sparse_categorical_crossentropy\"\n", + ")" + ], + "id": "120d9b0fed8a8a01", + "outputs": [], + "execution_count": 15 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:28:28.698900Z", + "start_time": "2024-10-14T20:28:28.690911Z" + } + }, + "cell_type": "code", + "source": "batch_loss_history = BatchLossHistory()", + "id": "50d2d9f6d6419075", + "outputs": [], + "execution_count": 16 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:38:09.636742Z", + "start_time": "2024-10-14T20:28:29.157027Z" + } + }, + "cell_type": "code", + "source": [ + "history = approximator.fit(\n", + " epochs=30,\n", + " dataset=training_dataset,\n", + " validation_data=validation_dataset,\n", + " callbacks=[batch_loss_history]\n", + ")" + ], + "id": "b80eda4adc2ad620", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:bayesflow:Fitting on dataset instance of OfflineDataset.\n", + "INFO:bayesflow:Building on a test batch.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 16ms/step - loss: 0.6919 - loss/inference_loss: 0.6919 - val_loss: 0.6134 - val_loss/inference_loss: 0.6134\n", + "Epoch 2/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m18s\u001B[0m 18ms/step - loss: 0.6234 - loss/inference_loss: 0.6234 - val_loss: 0.6321 - val_loss/inference_loss: 0.6321\n", + "Epoch 3/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m18s\u001B[0m 18ms/step - loss: 0.6018 - loss/inference_loss: 0.6018 - val_loss: 0.4567 - val_loss/inference_loss: 0.4567\n", + "Epoch 4/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m21s\u001B[0m 20ms/step - loss: 0.6079 - loss/inference_loss: 0.6079 - val_loss: 0.6692 - val_loss/inference_loss: 0.6692\n", + "Epoch 5/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m24s\u001B[0m 24ms/step - loss: 0.5956 - loss/inference_loss: 0.5956 - val_loss: 0.7312 - val_loss/inference_loss: 0.7312\n", + "Epoch 6/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m22s\u001B[0m 22ms/step - loss: 0.5911 - loss/inference_loss: 0.5911 - val_loss: 0.5461 - val_loss/inference_loss: 0.5461\n", + "Epoch 7/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m22s\u001B[0m 22ms/step - loss: 0.5907 - loss/inference_loss: 0.5907 - val_loss: 0.5829 - val_loss/inference_loss: 0.5829\n", + "Epoch 8/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m24s\u001B[0m 24ms/step - loss: 0.5820 - loss/inference_loss: 0.5820 - val_loss: 0.7137 - val_loss/inference_loss: 0.7137\n", + "Epoch 9/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m25s\u001B[0m 25ms/step - loss: 0.5801 - loss/inference_loss: 0.5801 - val_loss: 0.5453 - val_loss/inference_loss: 0.5453\n", + "Epoch 10/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m26s\u001B[0m 25ms/step - loss: 0.5841 - loss/inference_loss: 0.5841 - val_loss: 0.6155 - val_loss/inference_loss: 0.6155\n", + "Epoch 11/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 17ms/step - loss: 0.5748 - loss/inference_loss: 0.5748 - val_loss: 0.4574 - val_loss/inference_loss: 0.4574\n", + "Epoch 12/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 16ms/step - loss: 0.5714 - loss/inference_loss: 0.5714 - val_loss: 0.9205 - val_loss/inference_loss: 0.9205\n", + "Epoch 13/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m23s\u001B[0m 22ms/step - loss: 0.5804 - loss/inference_loss: 0.5804 - val_loss: 0.4696 - val_loss/inference_loss: 0.4696\n", + "Epoch 14/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m20s\u001B[0m 19ms/step - loss: 0.5691 - loss/inference_loss: 0.5691 - val_loss: 0.5795 - val_loss/inference_loss: 0.5795\n", + "Epoch 15/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m22s\u001B[0m 22ms/step - loss: 0.5663 - loss/inference_loss: 0.5663 - val_loss: 0.7035 - val_loss/inference_loss: 0.7035\n", + "Epoch 16/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m23s\u001B[0m 22ms/step - loss: 0.5692 - loss/inference_loss: 0.5692 - val_loss: 0.6051 - val_loss/inference_loss: 0.6051\n", + "Epoch 17/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 17ms/step - loss: 0.5635 - loss/inference_loss: 0.5635 - val_loss: 0.5303 - val_loss/inference_loss: 0.5303\n", + "Epoch 18/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 17ms/step - loss: 0.5730 - loss/inference_loss: 0.5730 - val_loss: 0.4921 - val_loss/inference_loss: 0.4921\n", + "Epoch 19/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m24s\u001B[0m 23ms/step - loss: 0.5641 - loss/inference_loss: 0.5641 - val_loss: 0.5474 - val_loss/inference_loss: 0.5474\n", + "Epoch 20/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 15ms/step - loss: 0.5669 - loss/inference_loss: 0.5669 - val_loss: 0.5979 - val_loss/inference_loss: 0.5979\n", + "Epoch 21/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5698 - loss/inference_loss: 0.5698 - val_loss: 0.6764 - val_loss/inference_loss: 0.6764\n", + "Epoch 22/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m15s\u001B[0m 15ms/step - loss: 0.5697 - loss/inference_loss: 0.5697 - val_loss: 0.5636 - val_loss/inference_loss: 0.5636\n", + "Epoch 23/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m19s\u001B[0m 19ms/step - loss: 0.5697 - loss/inference_loss: 0.5697 - val_loss: 0.5355 - val_loss/inference_loss: 0.5355\n", + "Epoch 24/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m18s\u001B[0m 17ms/step - loss: 0.5623 - loss/inference_loss: 0.5623 - val_loss: 0.4090 - val_loss/inference_loss: 0.4090\n", + "Epoch 25/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5686 - loss/inference_loss: 0.5686 - val_loss: 0.5841 - val_loss/inference_loss: 0.5841\n", + "Epoch 26/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5650 - loss/inference_loss: 0.5650 - val_loss: 0.5608 - val_loss/inference_loss: 0.5608\n", + "Epoch 27/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 16ms/step - loss: 0.5646 - loss/inference_loss: 0.5646 - val_loss: 0.5898 - val_loss/inference_loss: 0.5898\n", + "Epoch 28/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5608 - loss/inference_loss: 0.5608 - val_loss: 0.3862 - val_loss/inference_loss: 0.3862\n", + "Epoch 29/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.5265 - val_loss/inference_loss: 0.5265\n", + "Epoch 30/30\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5673 - loss/inference_loss: 0.5673 - val_loss: 0.7562 - val_loss/inference_loss: 0.7562\n" + ] + } + ], + "execution_count": 17 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T20:38:43.704457Z", + "start_time": "2024-10-14T20:38:42.786411Z" + } + }, + "cell_type": "code", + "source": "plt.plot(batch_loss_history.batch_losses)", + "id": "3bc7cb16f130a630", + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 18 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "# Validation", + "id": "451fc9fda7232b4f" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T22:04:54.358194Z", + "start_time": "2024-10-14T22:04:53.528807Z" + } + }, + "cell_type": "code", + "source": [ + "# Set the number of posterior draws you want to get\n", + "num_samples = 500\n", + "\n", + "# Obtain samples from amortized posterior\n", + "conditions = {\"x\": np.array([[0.0, 0.0]]).astype(\"float32\")}\n", + "samples_at_origin = approximator.sample(conditions=conditions, num_samples=num_samples)" + ], + "id": "b72018bbbb9f1fee", + "outputs": [], + "execution_count": 55 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T22:04:58.192926Z", + "start_time": "2024-10-14T22:04:58.170406Z" + } + }, + "cell_type": "code", + "source": "samples_at_origin", + "id": "ee223f7bcd8021ee", + "outputs": [ + { + "data": { + "text/plain": [ + "{'theta': array([[[ 0.17654721, 0.27041006],\n", + " [ 0.12645097, 0.24587561],\n", + " [-0.19934806, -0.278135 ],\n", + " [-0.24838944, -0.24566503],\n", + " [-0.23984583, -0.25675145],\n", + " [ 0.15274203, 0.27565002],\n", + " [-0.17649002, -0.28321353],\n", + " [ 0.2847274 , 0.16072123],\n", + " [ 0.26681536, 0.14605851],\n", + " [ 0.17062895, 0.26429826],\n", + " [-0.28589755, -0.17278582],\n", + " [-0.18308169, -0.29656368],\n", + " [ 0.23003347, 0.24603625],\n", + " [ 0.24050273, 0.21084891],\n", + " [ 0.26269466, 0.12824804],\n", + " [ 0.1484585 , 0.26595044],\n", + " [ 0.26594985, 0.2410507 ],\n", + " [ 0.25229037, 0.24877094],\n", + " [-0.21716174, -0.25466734],\n", + " [ 0.22001 , 0.258107 ],\n", + " [-0.26463276, -0.12307405],\n", + " [ 0.25718766, 0.23288907],\n", + " [-0.23486198, -0.09413613],\n", + " [ 0.27260107, 0.22248606],\n", + " [-0.24408428, -0.2348922 ],\n", + " [ 0.28494632, 0.16640714],\n", + " [-0.23431693, -0.24937971],\n", + " [-0.21345644, -0.26375318],\n", + " [ 0.27926463, 0.21351193],\n", + " [ 0.21171738, 0.28555256],\n", + " [ 0.20336659, 0.23305316],\n", + " [ 0.2076843 , 0.26461732],\n", + " [ 0.24040912, 0.22672929],\n", + " [ 0.26609492, 0.18270998],\n", + " [ 0.27759737, 0.21346761],\n", + " [ 0.2724777 , 0.18199308],\n", + " [ 0.15100089, 0.29426283],\n", + " [-0.17589754, -0.27801663],\n", + " [-0.2785506 , -0.15468442],\n", + " [ 0.12913461, 0.25736886],\n", + " [ 0.1828006 , 0.26205993],\n", + " [-0.22678165, -0.279141 ],\n", + " [-0.22860202, -0.27190363],\n", + " [-0.14008933, -0.2561372 ],\n", + " [-0.22078572, -0.2765645 ],\n", + " [ 0.1633323 , 0.27531624],\n", + " [ 0.245555 , 0.2657401 ],\n", + " [ 0.23057584, 0.24123977],\n", + " [ 0.2830829 , 0.16790009],\n", + " [ 0.2726102 , 0.17767592],\n", + " [-0.2565915 , -0.20570078],\n", + " [-0.27068108, -0.25210744],\n", + " [ 0.25900364, 0.079817 ],\n", + " [ 0.22121005, 0.25927085],\n", + " [ 0.2580096 , 0.2309487 ],\n", + " [-0.1160552 , -0.2476957 ],\n", + " [-0.18104881, -0.27573648],\n", + " [-0.13058631, -0.27183357],\n", + " [-0.25789464, -0.2562468 ],\n", + " [ 0.1564322 , 0.2645709 ],\n", + " [-0.1561471 , -0.2756685 ],\n", + " [ 0.28238744, 0.16419713],\n", + " [ 0.13610052, 0.2615081 ],\n", + " [-0.18580219, -0.2808326 ],\n", + " [-0.13579899, -0.2644095 ],\n", + " [-0.25453556, -0.21007065],\n", + " [-0.26590583, -0.2072551 ],\n", + " [ 0.26141977, 0.164808 ],\n", + " [ 0.27442408, 0.14368123],\n", + " [ 0.27178353, 0.15285778],\n", + " [-0.16379204, -0.26401907],\n", + " [ 0.2755499 , 0.19109674],\n", + " [ 0.24399526, 0.2382826 ],\n", + " [-0.21451049, -0.27771395],\n", + " [-0.21337557, -0.2809109 ],\n", + " [-0.21846037, -0.263758 ],\n", + " [ 0.26772732, 0.18167527],\n", + " [-0.25085008, -0.22487502],\n", + " [-0.23806724, -0.269768 ],\n", + " [ 0.1680724 , 0.2599398 ],\n", + " [ 0.1615107 , 0.28257108],\n", + " [-0.2491922 , -0.09990174],\n", + " [-0.13779363, -0.26620704],\n", + " [-0.1558931 , -0.26355422],\n", + " [-0.21514817, -0.04246794],\n", + " [-0.14641808, -0.26987153],\n", + " [ 0.21003644, 0.26511782],\n", + " [-0.24539289, -0.09259013],\n", + " [-0.14154209, -0.26200366],\n", + " [ 0.2583239 , 0.22858255],\n", + " [-0.19606611, -0.27139133],\n", + " [-0.1492368 , -0.26115084],\n", + " [-0.14322335, -0.25939518],\n", + " [ 0.13081153, 0.25858665],\n", + " [ 0.25838077, 0.12905371],\n", + " [-0.27384835, -0.14071937],\n", + " [-0.2832994 , -0.10836863],\n", + " [-0.24902178, -0.11251126],\n", + " [-0.28539097, -0.1751118 ],\n", + " [ 0.23493315, 0.23637466],\n", + " [ 0.15128584, 0.27237755],\n", + " [-0.22134736, -0.26069474],\n", + " [-0.11475502, -0.24605674],\n", + " [ 0.27256542, 0.16720194],\n", + " [-0.2531284 , -0.10332474],\n", + " [-0.26484224, -0.21712682],\n", + " [-0.1963381 , -0.2724918 ],\n", + " [ 0.28410047, 0.16903692],\n", + " [-0.28119767, -0.18954884],\n", + " [ 0.16959138, 0.2755884 ],\n", + " [-0.20630495, -0.27477667],\n", + " [-0.28206652, -0.17886436],\n", + " [ 0.22695933, 0.2509038 ],\n", + " [ 0.15067881, 0.26440012],\n", + " [ 0.16328944, 0.2806378 ],\n", + " [ 0.26133698, 0.20578645],\n", + " [ 0.2730273 , 0.21775459],\n", + " [-0.26709872, -0.13604781],\n", + " [ 0.27165067, 0.18136705],\n", + " [-0.16354825, -0.2658952 ],\n", + " [ 0.27130795, 0.13281836],\n", + " [-0.26172233, -0.20255604],\n", + " [-0.2656914 , -0.12956285],\n", + " [ 0.26998436, 0.17273536],\n", + " [-0.25801274, -0.24676166],\n", + " [-0.16900623, -0.26649785],\n", + " [ 0.17619887, 0.28156966],\n", + " [-0.16531721, -0.28414413],\n", + " [ 0.26003808, 0.13653943],\n", + " [ 0.26175636, 0.14695114],\n", + " [ 0.13328604, 0.27599776],\n", + " [ 0.23215918, 0.25090832],\n", + " [ 0.26951528, 0.14531177],\n", + " [ 0.27629095, 0.17952204],\n", + " [-0.1899774 , -0.2696848 ],\n", + " [-0.2577222 , -0.2291099 ],\n", + " [ 0.27753985, 0.14961004],\n", + " [-0.26477182, -0.15710792],\n", + " [-0.16838536, -0.2772453 ],\n", + " [ 0.14863718, 0.2671488 ],\n", + " [ 0.16921876, 0.30610895],\n", + " [ 0.25700146, 0.20359705],\n", + " [-0.2723776 , -0.13057159],\n", + " [ 0.15679039, 0.27260846],\n", + " [ 0.26662302, 0.2313111 ],\n", + " [-0.1483945 , -0.26958892],\n", + " [-0.28797525, -0.16708171],\n", + " [-0.2701152 , -0.18412311],\n", + " [-0.22698759, -0.26212072],\n", + " [ 0.26134652, 0.17660096],\n", + " [ 0.24770044, 0.25576842],\n", + " [-0.26324385, -0.17584372],\n", + " [-0.24796484, -0.2644273 ],\n", + " [-0.2512376 , -0.2497181 ],\n", + " [-0.14071809, -0.26300108],\n", + " [ 0.25602716, 0.21307798],\n", + " [ 0.15512946, 0.26241523],\n", + " [-0.13459323, -0.2672544 ],\n", + " [-0.27148777, -0.10496917],\n", + " [-0.26881555, -0.14279647],\n", + " [ 0.2439939 , 0.23070608],\n", + " [ 0.24191315, 0.25623626],\n", + " [-0.26984468, -0.21261044],\n", + " [-0.2708213 , -0.14030349],\n", + " [-0.10411157, -0.25560504],\n", + " [ 0.16901971, 0.2944855 ],\n", + " [-0.23794813, -0.26510406],\n", + " [ 0.24874337, 0.2428212 ],\n", + " [-0.27015492, -0.19753729],\n", + " [ 0.16361678, 0.28820413],\n", + " [-0.2720252 , -0.17723957],\n", + " [-0.24740805, -0.2495067 ],\n", + " [-0.2634244 , -0.1747841 ],\n", + " [-0.16585416, -0.21445206],\n", + " [-0.2081011 , -0.2766696 ],\n", + " [-0.26483506, -0.17030197],\n", + " [-0.28507483, -0.16922492],\n", + " [-0.261419 , -0.1225991 ],\n", + " [-0.16929954, -0.26587838],\n", + " [ 0.2638874 , 0.14496247],\n", + " [-0.20467407, -0.2825095 ],\n", + " [ 0.26162702, 0.21156694],\n", + " [-0.14833814, -0.26648057],\n", + " [-0.2305345 , -0.255768 ],\n", + " [ 0.08747022, 0.24928974],\n", + " [-0.14354517, -0.27147245],\n", + " [-0.26059756, -0.23299775],\n", + " [-0.20088947, -0.26393372],\n", + " [ 0.25847495, 0.12191093],\n", + " [ 0.17978095, 0.26116067],\n", + " [ 0.27232087, 0.13389245],\n", + " [ 0.1689069 , 0.27647942],\n", + " [ 0.20815115, 0.26791954],\n", + " [-0.1713421 , -0.26446718],\n", + " [ 0.16414319, 0.2682889 ],\n", + " [-0.21358459, -0.25886625],\n", + " [-0.21310486, -0.26620245],\n", + " [-0.14630145, -0.27673244],\n", + " [ 0.25637555, 0.10911691],\n", + " [-0.24687341, -0.2515366 ],\n", + " [-0.22562824, -0.2634732 ],\n", + " [-0.24021488, -0.25353155],\n", + " [ 0.27167273, 0.21580078],\n", + " [ 0.23716737, 0.26719362],\n", + " [-0.27758297, -0.19752777],\n", + " [ 0.2810052 , 0.19020875],\n", + " [ 0.26287878, 0.22724666],\n", + " [-0.23488928, -0.250957 ],\n", + " [-0.27531016, -0.17768633],\n", + " [ 0.21583839, 0.27459365],\n", + " [-0.17736377, -0.2707683 ],\n", + " [-0.17810163, -0.27602732],\n", + " [-0.2846307 , -0.13999233],\n", + " [ 0.21645485, 0.26564485],\n", + " [-0.24948609, -0.22531442],\n", + " [-0.25105706, -0.22081058],\n", + " [ 0.15915596, 0.26416653],\n", + " [ 0.11383924, 0.28477448],\n", + " [ 0.21720125, 0.27140385],\n", + " [-0.2634048 , -0.23810792],\n", + " [ 0.250942 , 0.11477937],\n", + " [-0.26577836, -0.18498161],\n", + " [-0.24776752, -0.25986475],\n", + " [-0.26308554, -0.12615162],\n", + " [ 0.25829774, 0.22018121],\n", + " [ 0.27852893, 0.15985395],\n", + " [ 0.13305658, 0.30257642],\n", + " [-0.2717955 , -0.20277436],\n", + " [-0.20948571, -0.2705216 ],\n", + " [ 0.2838514 , 0.30136824],\n", + " [-0.15114638, -0.2609089 ],\n", + " [-0.27054653, -0.2396658 ],\n", + " [ 0.27936798, 0.1702747 ],\n", + " [-0.26180363, -0.23037021],\n", + " [ 0.12675536, 0.29809797],\n", + " [ 0.2860673 , 0.1818126 ],\n", + " [ 0.15882272, 0.2739191 ],\n", + " [-0.2716868 , -0.23455156],\n", + " [ 0.18038103, 0.26399285],\n", + " [-0.19035973, -0.2701561 ],\n", + " [-0.18592411, -0.28720114],\n", + " [-0.28801578, -0.20492856],\n", + " [-0.25421828, -0.252667 ],\n", + " [-0.19853641, -0.27539486],\n", + " [ 0.2658394 , 0.13718288],\n", + " [-0.18788746, -0.26782632],\n", + " [ 0.25122517, 0.22947817],\n", + " [ 0.22315653, 0.2824493 ],\n", + " [ 0.2672273 , 0.19705571],\n", + " [-0.18191774, -0.26465735],\n", + " [-0.16103017, -0.2874695 ],\n", + " [ 0.13860585, 0.26392978],\n", + " [-0.2511997 , -0.25885814],\n", + " [ 0.27468997, 0.16526596],\n", + " [ 0.14169784, 0.2599411 ],\n", + " [ 0.26611072, 0.17375904],\n", + " [-0.2878152 , -0.08115485],\n", + " [-0.28335226, -0.15670936],\n", + " [-0.27376425, -0.178761 ],\n", + " [ 0.27126724, 0.14793816],\n", + " [ 0.2668656 , 0.10891573],\n", + " [-0.15683985, -0.27304047],\n", + " [-0.2727784 , -0.13070625],\n", + " [ 0.2501254 , 0.10839404],\n", + " [-0.15620172, -0.2873354 ],\n", + " [-0.15404768, -0.26731277],\n", + " [ 0.21467187, 0.25746334],\n", + " [ 0.25429416, 0.1797972 ],\n", + " [ 0.20857449, 0.249985 ],\n", + " [ 0.11666797, 0.27871257],\n", + " [ 0.24273743, 0.20371343],\n", + " [ 0.26860923, 0.13919559],\n", + " [ 0.16740836, 0.27165604],\n", + " [ 0.16717246, 0.26184237],\n", + " [-0.21383077, -0.271177 ],\n", + " [-0.2659731 , -0.22285458],\n", + " [ 0.28479463, 0.15989105],\n", + " [ 0.11832219, 0.27264667],\n", + " [-0.2787032 , -0.2067107 ],\n", + " [-0.16163397, -0.27661702],\n", + " [-0.26493195, -0.20964915],\n", + " [-0.21109939, -0.26734334],\n", + " [ 0.26570964, 0.15831824],\n", + " [-0.16366 , -0.27646917],\n", + " [ 0.1530443 , 0.2601412 ],\n", + " [-0.2540462 , -0.24356595],\n", + " [-0.25072587, -0.21606591],\n", + " [-0.25311893, -0.18031111],\n", + " [ 0.28140247, 0.21742497],\n", + " [ 0.13237408, 0.26540524],\n", + " [ 0.2564062 , 0.12839843],\n", + " [ 0.15366873, 0.2635122 ],\n", + " [ 0.22159882, 0.24206953],\n", + " [ 0.26372212, 0.12725428],\n", + " [-0.22098112, -0.27278456],\n", + " [-0.20793442, -0.27573195],\n", + " [ 0.26726925, 0.13613409],\n", + " [ 0.19226794, 0.2606786 ],\n", + " [ 0.13405557, 0.25951523],\n", + " [-0.24498801, -0.10678881],\n", + " [-0.20078732, -0.27810192],\n", + " [ 0.26355267, 0.19066595],\n", + " [-0.24511454, -0.22381541],\n", + " [ 0.20138271, 0.26740623],\n", + " [-0.17140028, -0.27542722],\n", + " [ 0.28308725, 0.13273714],\n", + " [-0.21728876, -0.2650354 ],\n", + " [-0.16061038, -0.23381335],\n", + " [-0.26724768, -0.22253583],\n", + " [-0.2655784 , -0.16959837],\n", + " [-0.24018149, -0.26769286],\n", + " [-0.26636603, -0.18842779],\n", + " [ 0.24131311, 0.28197736],\n", + " [-0.26913485, -0.2285188 ],\n", + " [ 0.11729264, 0.25736594],\n", + " [ 0.13231607, 0.22730176],\n", + " [ 0.26941478, 0.21044381],\n", + " [-0.25148863, -0.2359707 ],\n", + " [ 0.23700745, 0.21061157],\n", + " [ 0.22925268, 0.2627837 ],\n", + " [ 0.24546961, 0.16472188],\n", + " [ 0.26913851, 0.14494902],\n", + " [-0.2042441 , -0.27723473],\n", + " [ 0.27372217, 0.18476877],\n", + " [ 0.23441432, 0.25146925],\n", + " [-0.26290894, -0.21708629],\n", + " [-0.2156923 , -0.2754048 ],\n", + " [ 0.24024172, 0.27976716],\n", + " [-0.23979467, -0.2512276 ],\n", + " [-0.25661737, -0.24269213],\n", + " [ 0.19709219, 0.2668875 ],\n", + " [-0.26447535, -0.22487412],\n", + " [-0.26613384, -0.2496682 ],\n", + " [ 0.25823814, 0.22014786],\n", + " [-0.23661795, -0.2597047 ],\n", + " [-0.18679908, -0.26142985],\n", + " [-0.24493581, -0.18804303],\n", + " [ 0.17663766, 0.26372564],\n", + " [-0.2361322 , -0.26485068],\n", + " [ 0.17371084, 0.27549374],\n", + " [ 0.20716886, 0.28001374],\n", + " [-0.27110183, -0.13153674],\n", + " [ 0.27748924, 0.14194696],\n", + " [-0.20262113, -0.27168894],\n", + " [ 0.27442312, 0.12007011],\n", + " [-0.2616744 , -0.19247435],\n", + " [ 0.13171248, 0.2602473 ],\n", + " [-0.16328776, -0.2698179 ],\n", + " [ 0.12095347, 0.25061035],\n", + " [ 0.15479945, 0.26521897],\n", + " [ 0.26058197, 0.12008516],\n", + " [-0.24259163, -0.25619787],\n", + " [-0.25585926, -0.10046624],\n", + " [-0.09253009, -0.24216235],\n", + " [ 0.2025079 , 0.25464582],\n", + " [ 0.26418608, 0.14600448],\n", + " [-0.13562107, -0.2535293 ],\n", + " [ 0.20196442, 0.28894037],\n", + " [ 0.14610024, 0.2617845 ],\n", + " [-0.19805442, -0.24427016],\n", + " [-0.26247138, -0.14815763],\n", + " [-0.25442994, -0.14696085],\n", + " [-0.27216715, -0.1356835 ],\n", + " [-0.13450277, -0.24344285],\n", + " [ 0.24729492, 0.26272237],\n", + " [ 0.20515431, 0.27405024],\n", + " [ 0.2608167 , 0.15682302],\n", + " [-0.15053959, -0.26844054],\n", + " [-0.18680488, -0.26017186],\n", + " [ 0.22681056, 0.24950348],\n", + " [-0.2625429 , -0.23297158],\n", + " [ 0.2613256 , 0.22275327],\n", + " [-0.15576485, -0.27131522],\n", + " [ 0.27989298, 0.13113242],\n", + " [-0.27222443, -0.22823197],\n", + " [-0.25886652, -0.2011627 ],\n", + " [ 0.26871747, 0.21118324],\n", + " [ 0.15130182, 0.27510864],\n", + " [-0.14449994, -0.28044653],\n", + " [ 0.25875401, 0.13721596],\n", + " [-0.22085567, -0.25945926],\n", + " [-0.24155052, -0.25671858],\n", + " [ 0.24092378, 0.23994891],\n", + " [ 0.29403216, 0.17666245],\n", + " [-0.26444742, -0.11436895],\n", + " [ 0.26498055, 0.18587114],\n", + " [-0.30489963, -0.18212527],\n", + " [ 0.2606231 , 0.12549354],\n", + " [ 0.17819688, 0.2753808 ],\n", + " [-0.2085124 , -0.24076138],\n", + " [ 0.2783888 , 0.21553223],\n", + " [ 0.24207772, 0.27036875],\n", + " [-0.19318947, -0.28491825],\n", + " [-0.28575206, -0.11007828],\n", + " [ 0.20214315, 0.25610656],\n", + " [ 0.25302982, 0.16020659],\n", + " [-0.25691435, -0.09973457],\n", + " [-0.16929191, -0.2823217 ],\n", + " [ 0.28185576, 0.14506812],\n", + " [-0.25279728, -0.09789051],\n", + " [-0.27485964, -0.15160048],\n", + " [-0.2778846 , -0.16473699],\n", + " [-0.17066869, -0.28102553],\n", + " [ 0.13137233, 0.2776695 ],\n", + " [ 0.27647096, 0.17463823],\n", + " [-0.26363677, -0.19969368],\n", + " [ 0.26302052, 0.14910254],\n", + " [ 0.2524321 , 0.26034302],\n", + " [-0.18632376, -0.2879629 ],\n", + " [-0.27709562, -0.19126996],\n", + " [-0.26679304, -0.11288792],\n", + " [-0.13774812, -0.2649699 ],\n", + " [ 0.28189063, 0.20290558],\n", + " [-0.27441102, -0.2103486 ],\n", + " [ 0.2638747 , 0.20561664],\n", + " [ 0.24635617, 0.15771465],\n", + " [-0.2822139 , -0.1699524 ],\n", + " [-0.20473354, -0.21127829],\n", + " [-0.2742424 , -0.22162642],\n", + " [ 0.25963825, 0.23948784],\n", + " [-0.26096076, -0.13017972],\n", + " [-0.16121498, -0.28439793],\n", + " [-0.27414775, -0.14413777],\n", + " [ 0.24034937, 0.19255368],\n", + " [-0.18428135, -0.2854242 ],\n", + " [-0.25247365, -0.2194159 ],\n", + " [ 0.16972582, 0.2716142 ],\n", + " [ 0.27258348, 0.16816002],\n", + " [-0.21479341, -0.2591002 ],\n", + " [-0.22572103, -0.2740637 ],\n", + " [-0.25940806, -0.2296557 ],\n", + " [-0.25289565, -0.10597888],\n", + " [ 0.27644205, 0.17131492],\n", + " [-0.2744681 , -0.20247808],\n", + " [ 0.1569854 , 0.26544535],\n", + " [ 0.16878295, 0.2785138 ],\n", + " [ 0.27115518, 0.19420569],\n", + " [-0.19849882, -0.2581566 ],\n", + " [ 0.2501585 , 0.10598603],\n", + " [ 0.27531207, 0.1523792 ],\n", + " [ 0.2688099 , 0.15870939],\n", + " [-0.25474942, -0.15129292],\n", + " [ 0.23721237, 0.24722971],\n", + " [-0.2737707 , -0.1965245 ],\n", + " [ 0.24654536, 0.2790857 ],\n", + " [ 0.258439 , 0.22061013],\n", + " [-0.27449885, -0.17695272],\n", + " [ 0.20442174, 0.27892023],\n", + " [ 0.17934252, 0.27942443],\n", + " [ 0.13801269, 0.2676139 ],\n", + " [ 0.2189254 , 0.21409418],\n", + " [ 0.26100272, 0.15690793],\n", + " [ 0.25874227, 0.19437556],\n", + " [-0.2684424 , -0.18466231],\n", + " [-0.27459067, -0.13723826],\n", + " [-0.26729393, -0.22947192],\n", + " [-0.23811837, -0.25796393],\n", + " [-0.26904866, -0.1451745 ],\n", + " [-0.21287099, -0.26636374],\n", + " [-0.2356898 , -0.25938934],\n", + " [-0.18526974, -0.26750624],\n", + " [ 0.26033378, 0.14162609],\n", + " [ 0.18297893, 0.12170283],\n", + " [ 0.21097694, 0.24945582],\n", + " [-0.24043491, -0.25133517],\n", + " [-0.13337177, -0.25957477],\n", + " [ 0.21417986, 0.2602194 ],\n", + " [-0.20514008, -0.27646336],\n", + " [ 0.26594204, 0.2504294 ],\n", + " [-0.15494907, -0.27878577],\n", + " [-0.24846888, -0.22488065],\n", + " [ 0.27053243, 0.18878628],\n", + " [-0.20375696, -0.26968008],\n", + " [-0.23099579, -0.25355121],\n", + " [ 0.23137142, 0.23804243],\n", + " [ 0.13809101, 0.26715648],\n", + " [ 0.1641148 , 0.27006269],\n", + " [ 0.27676284, 0.15274183],\n", + " [-0.25447246, -0.09072974],\n", + " [-0.27731633, -0.18285707],\n", + " [-0.1584472 , -0.27314755],\n", + " [-0.23445056, -0.25665188],\n", + " [-0.1045018 , -0.24585408],\n", + " [-0.22868754, -0.14893918],\n", + " [ 0.16116361, 0.27902877],\n", + " [-0.2680272 , -0.13343239],\n", + " [-0.25145337, -0.23630832],\n", + " [-0.27399144, -0.21066816],\n", + " [ 0.16021812, 0.27963275],\n", + " [-0.18627508, -0.25839704],\n", + " [-0.16178118, -0.28439075],\n", + " [ 0.12971437, 0.25599122],\n", + " [ 0.26095128, 0.16551861],\n", + " [-0.13171294, -0.2682826 ],\n", + " [-0.17962739, -0.25391853],\n", + " [ 0.1130407 , 0.25770533],\n", + " [ 0.26060718, 0.13303255],\n", + " [ 0.26106697, 0.11457562],\n", + " [ 0.24399544, 0.22096606],\n", + " [-0.2890758 , -0.15642428]]], dtype=float32)}" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 56 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T21:06:00.343643Z", + "start_time": "2024-10-14T21:06:00.324488Z" + } + }, + "cell_type": "code", + "source": "sample_data[\"theta\"].shape", + "id": "5c47d5541b0a24ee", + "outputs": [ + { + "data": { + "text/plain": [ + "(128, 2)" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 42 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T21:50:10.198765Z", + "start_time": "2024-10-14T21:50:10.176034Z" + } + }, + "cell_type": "code", + "source": "np.reshape(samples_at_origin, (128, 2, 1)).shape", + "id": "51c802b500199423", + "outputs": [ + { + "data": { + "text/plain": [ + "(128, 2, 1)" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 50 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-14T21:51:42.186086Z", + "start_time": "2024-10-14T21:51:40.305203Z" + } + }, + "cell_type": "code", + "source": "f = plot_recovery(post_samples=np.swapaxes(samples_at_origin, 0, 1), prior_samples=np.array(sample_data['theta']))", + "id": "e32b56a7ec84701b", + "outputs": [ + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for -: 'NoneType' and 'int'", + "output_type": "error", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[1;32mIn[53], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m f \u001B[38;5;241m=\u001B[39m \u001B[43mplot_recovery\u001B[49m\u001B[43m(\u001B[49m\u001B[43mpost_samples\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mswapaxes\u001B[49m\u001B[43m(\u001B[49m\u001B[43msamples_at_origin\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m0\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mprior_samples\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43marray\u001B[49m\u001B[43m(\u001B[49m\u001B[43msample_data\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mtheta\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\diagnostics\\plot_recovery.py:162\u001B[0m, in \u001B[0;36mplot_recovery\u001B[1;34m(post_samples, prior_samples, point_agg, uncertainty_agg, param_names, fig_size, label_fontsize, title_fontsize, metric_fontsize, tick_fontsize, add_corr, add_r2, color, n_col, n_row, xlabel, ylabel, **kwargs)\u001B[0m\n\u001B[0;32m 159\u001B[0m ax\u001B[38;5;241m.\u001B[39mtick_params(axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m\"\u001B[39m, which\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mmajor\u001B[39m\u001B[38;5;124m\"\u001B[39m, labelsize\u001B[38;5;241m=\u001B[39mtick_fontsize)\n\u001B[0;32m 160\u001B[0m ax\u001B[38;5;241m.\u001B[39mtick_params(axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m\"\u001B[39m, which\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mminor\u001B[39m\u001B[38;5;124m\"\u001B[39m, labelsize\u001B[38;5;241m=\u001B[39mtick_fontsize)\n\u001B[1;32m--> 162\u001B[0m \u001B[43mpostprocess\u001B[49m\u001B[43m(\u001B[49m\u001B[43maxarr\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxarr_it\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mn_row\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mn_col\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mn_params\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mxlabel\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mylabel\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mlabel_fontsize\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 164\u001B[0m f\u001B[38;5;241m.\u001B[39mtight_layout()\n\u001B[0;32m 165\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m f\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\utils\\plot_utils.py:299\u001B[0m, in \u001B[0;36mpostprocess\u001B[1;34m(*args)\u001B[0m\n\u001B[0;32m 294\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mpostprocess\u001B[39m(\u001B[38;5;241m*\u001B[39margs):\n\u001B[0;32m 295\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 296\u001B[0m \u001B[38;5;124;03m Procedural wrapper for postprocessing steps, including adding labels and removing unused axes.\u001B[39;00m\n\u001B[0;32m 297\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n\u001B[1;32m--> 299\u001B[0m \u001B[43madd_labels\u001B[49m\u001B[43m(\u001B[49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 300\u001B[0m remove_unused_axes(args)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\utils\\plot_utils.py:239\u001B[0m, in \u001B[0;36madd_labels\u001B[1;34m(axarr, n_row, n_col, xlabel, ylabel, label_fontsize)\u001B[0m\n\u001B[0;32m 228\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21madd_labels\u001B[39m(\n\u001B[0;32m 229\u001B[0m axarr,\n\u001B[0;32m 230\u001B[0m n_row: \u001B[38;5;28mint\u001B[39m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 234\u001B[0m label_fontsize: \u001B[38;5;28mint\u001B[39m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[0;32m 235\u001B[0m ):\n\u001B[0;32m 236\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 237\u001B[0m \u001B[38;5;124;03m Wrapper function for configuring labels for both axes.\u001B[39;00m\n\u001B[0;32m 238\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n\u001B[1;32m--> 239\u001B[0m \u001B[43madd_xlabels\u001B[49m\u001B[43m(\u001B[49m\u001B[43maxarr\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mn_row\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mn_col\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mxlabel\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mlabel_fontsize\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 240\u001B[0m add_ylabels(axarr, n_row, ylabel, label_fontsize)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\utils\\plot_utils.py:208\u001B[0m, in \u001B[0;36madd_xlabels\u001B[1;34m(axarr, n_row, n_col, xlabel, label_fontsize)\u001B[0m\n\u001B[0;32m 200\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21madd_xlabels\u001B[39m(\n\u001B[0;32m 201\u001B[0m axarr,\n\u001B[0;32m 202\u001B[0m n_row: \u001B[38;5;28mint\u001B[39m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 206\u001B[0m ):\n\u001B[0;32m 207\u001B[0m \u001B[38;5;66;03m# Only add x-labels to the bottom row\u001B[39;00m\n\u001B[1;32m--> 208\u001B[0m bottom_row \u001B[38;5;241m=\u001B[39m axarr \u001B[38;5;28;01mif\u001B[39;00m n_row \u001B[38;5;241m==\u001B[39m \u001B[38;5;241m1\u001B[39m \u001B[38;5;28;01melse\u001B[39;00m axarr[\u001B[38;5;241m0\u001B[39m] \u001B[38;5;28;01mif\u001B[39;00m n_col \u001B[38;5;241m==\u001B[39m \u001B[38;5;241m1\u001B[39m \u001B[38;5;28;01melse\u001B[39;00m axarr[\u001B[43mn_row\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m-\u001B[39;49m\u001B[43m \u001B[49m\u001B[38;5;241;43m1\u001B[39;49m, :]\n\u001B[0;32m 209\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m _ax \u001B[38;5;129;01min\u001B[39;00m bottom_row:\n\u001B[0;32m 210\u001B[0m _ax\u001B[38;5;241m.\u001B[39mset_xlabel(xlabel, fontsize\u001B[38;5;241m=\u001B[39mlabel_fontsize)\n", + "\u001B[1;31mTypeError\u001B[0m: unsupported operand type(s) for -: 'NoneType' and 'int'" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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txYxfvxYAIxGoyREYUhKSgJoc78M6HwGaW+cTg+KEpnYumI263E4PNF/IeC++x5p0zaNGzcJj8fH888vZvr0OQnfNsWyrHo7KavwSHl1LhAIUFJSzLBhwwEYPHgoDocnquVlsRj2+jtRO2ghNTWVnJyckH9flil0rXWj02LUqDFA89SjEELs6ZtvvuLss//MQw89gBKL3ngfU1BQAEBpaWmbx1v+PXz48JjHlGikbRJChENRFB588D7+/vez+Pbbr+MdThsJs+C3vyxT+Pzzz7jppuvbPW6xWBg2bDh/+cuZnHnm2SG933XrVqPT6RgxYljCTtGuWPErL7zwHJs2bcTlcjFixD6cf/4FnHjiSd26zsaNG3C73V1eZ//9J4Z0zSVLXuDAAzveV7Fixa9Mnz6N2267g7POOiesWHtKptxDI+XUtV9//YUbbriaQCBAdXUVZrMelUoV77B6lby8PIYMGcKnn37KKaecEnz8s88+Iz8/nyFDhsQxusj66qsvuOOOee0eN5stFBQM47TTzuD00/8SUtu0atVKdDodgwcnbvmsXLmCl19eSlHRJlwuN8OHj+BvfzuPP/3phL0/uYtrXnXVTG688Vb+/OczO/ydb7/9mltvvaHTa/zpTydw5533Bf+tKAoffPAu7733NsXFW9HptAwfvg9nnHEWJ5/cv/dai95p6dIlvPLKPwFobIztzVn3JmGSov6yTGH16jUA5OXlM3bseAA8HjebNm1kzZrVrFmzmrVr13H99e0bp9aKi7fy//7fK5xxxlmo1Yk5RfvZZ59w9913oNFoOOiggwEVK1b8wrx5N7Bx4yamTZsR9nX23/8gNBp1l9c58cRTOrkS7NixncLCNVitVtLTszsst7KyEubNuxFFUfB4/DEvW5lyD42UU+c2bdrIZZdNxeVyc/TRx3LPPffhdHpj8tqhLFFIVDabjaKiInJzc0lPTwdg9uzZ3HzzzaSmpnLcccfx5Zdf8sknn/Doo4/GOdrI2rhxPdBx21RYuIbCwjVs2rQxpLbpjTde5YwzzsJiic8JUnvTWds0f/7NlJRsDbltaq2srIQFC27d64zspk0bAJg0af8Ob5o8btyENv9+9NEHePvtNzAajUyatB8qlZrVq1dyzz3z+e23X7nllvlhxypEvLz11us89tjDANx44y38+c9/iXNEbSVMUtR6mcLY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J598RvYRiT4lKjWhND5C9IzV2nw38KVLX2Hs2HHxDkeIXm/btm14vV7y8/PbPJ6XlwdAcXFxu+ds2bIFIKznCNGXjRw5ipdffpXFi18gKSk53uEIEVFRSYqk8RGie1au/GPAwGg0SkIkRIQ0NTUBYLVa2zxusVgA2txnpUXLY+E8R4i+xuVyUVi4NvjvoUNzyczMjGNEQkRHVBaCSuMjRPj+/e+XWbjwHmbMmMns2XNl46oQERQIBLr8ubqDJWTdeU5XTCZ9WL/fXTqdBrM5Nq/V20lZdc3n83HttdexbNl3PP30Yo4++th4h9RryGcrdIlSVlFJiqTxEXuScura+++/x/3334tKpSI5OQmLxRDvkBKefKZCJ2UFSUlJANjt9jaPdzYg193ndMXp9LCXA1gjwmzW43B4ov9CfYCUVecUReGOO27h888/R6/XYzKZpazCIJ+t0MWirELpV0UlKZLGR+xJyqlz33//HTfccB2KojBlyoXMmHGFlFUI5DMVuliWVaIm9Lm5uWg0GkpLS9s8XlZWBsDw4cPbPaegoPmI6tLSUsaOHRt8vOUaHT1HiL7iscce4t1330KtVvPgg49x8MGHSJ0r+rSo7CnqaePTmjQ+oi9btWolc+fOwefzceqpp3PjjbfKsjkhosBgMHDggQfy+eeft7lf3qeffkpSUhITJ05s95y8vDyGDBnCp59+2ubxzz77jPz8fIYMGRL1uIWIh5deeoGlS5vv37VgwT0cd9zxcY5IiOiLSlIkjY8Qe7dly2Zmz56Oy+XiiCMmc88994e9TFQIEbpZs2axatUqrr76ar799lsee+wxXnjhBWbMmIHJZMJms/H7779TW1sbfM7s2bP55JNPWLBgAd999x3z58/nk08+4eqrr47jOxEiet5//x0efvh+AObOvYGzzvprnCMSIjaidsetWbNmcemll3L11VdzzjnnsHLlSl544QWuu+66YONTVFREbm4u6enpQHPjc/PNN5Oamspxxx3Hl19+ySeffMKjjz4arTCFiJvVq1fR0NDAxIn78sgjT6LT6eIdkhB92mGHHcaTTz7JE088wezZs8nOzubGG29k6tSpABQWFnLRRRdx3333cfbZZwNw9tln4/F4WLp0KW+99RZDhw7l/vvv59RTT43nWxEiKhRF4fvvvwPg4ouncumll8U5IiFiR6Uo0dt5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UlNT1Q5JCCFEDHO73dxwwzR27txBWlo6Dz/8uMwhEkL0SpIUdRMvvbSK555bDsC9997PWWf9XuWIhBBCxDK/389tt81h06YfiI+PZ/ny5+nXr7/aYQkhRKeQpKgb+M9/3uaxxx4GYPbsm7n44ktVjkgIIUQsC4VCzJt3F5999ikmk4lFi5YxePAQtcMSQohOI0mRyrZs+YV77rkDgCuvvIprr52mckRCCCFi3YsvPs+///02Op2Oxx9/imOPPV7tkIQQolPp1Q4g1g0dOozLLvsTdrud2267Q8ZqCyGEUN2kSRfzyScfcsklkznjjPFqhyOEEJ1OkiKVabVa5s69h1AohFYrHXdCCCHUl5SUzIsvvoZOp1M7FCGE6BLyFK6CAwf289BD9+P3+wHQaDRS8QghhFDVp59+wuuvvxr5t9RLQohYIj1FXaysrIypU68hPz8PgDvvvFfliIQQQsS67777httum4PX6yUjI5Px43+ndkhCCNGlpKeoCzkcDmbOvI78/DwOO+wwWVRBCCGE6rZv38ZNN83A6/VyxhnjOf30M9QOSQghupwkRV3E5/MxZ84sfv11C8nJySxfvorMzEy1wxJCCBHD9u3LZ/r0a6murmbMmGN57LEn0etlEIkQIvZIUtQFgsEgd9xxKxs3bsBqtbJ06UoGDBiodlhCCCFiWElJCdOmTaG0tITBg4ewZMlyzGaz2mEJIYQqJCnqAo899hAffvgBBoOBp55ayvDhI9QOSQghRAzzeDzMmHEd+/bl069fP5YuXUl8fILaYQkhhGokKeoCZ531exISEpg//3FOPPEktcMRQggR40wmE+eccx6pqWksX76KjIwMtUMSQghVaRRFUdQOojOUllbTFZ/MajXicvla/b3qantMt8JFW05CyipaUk7R68qySk+P75L36Ym6W70EYLdXkZCQ2MkRdV9yH4melFXbSHlFryvKKpq6SXqKOsnHH69l584dkX/HckIkhBBCfYqi8MorL+JwOCKvxXJCJIQQdUlS1Am++up/3H77zVx99eWR/YiEEEIINT399AIeeeTvTJ16NYFAQO1whBCiW5GkqIP99NOPzJkzC7/fz8knn0a/fv3VDkkIIUSMe+mlVTz33HIA/vCHS2TZbSGEaECSog60Z88uZs68Hrfbzcknn8JDDz2KVitFLIQQQj3/+c/bPPbYwwDM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GD16NJdffjmbN2/u5AjV9+KLLzJhwgRGjRrFpEmT+Oyzz1o95o033mDIkCGN/rv//vu7IOKu8b///Y+LL76Y0aNHM378eFauXImiKC0e8+6773LuuecyatQozj77bN56660uilY9bS2nvLy8Js+d8847rwujVldhYSHHHXccGzdubPV3Y/Gc6u2kXmqd1EvNk7qpbaSOarueUEfpu+RdepGNGzdyyy23RP378+fP58033+SWW24hKyuLVatWcfXVV/P222+Tk5PTiZGqZ9WqVTz22GPMmjWLESNGsGbNGmbMmMFLL73Ecccd1+xxW7duZeDAgcyfP7/e62lpaZ0dcpf48ccfmT59OmeffTazZ8/m+++/57HHHiMYDDJ16tQmj1m7di233norf/nLXzjttNP4+OOPmTt3LkajkXPPPbeLP0HXaE85bd26FYAXXngBi8USed1sNndJzGorKCjg2muvpbq6utXfjcVzqreTeql1Ui81T+qmtpE6qu16TB2liKhUV1crCxYsUIYOHaqMHTtWGTx4cKvHHDx4UBk2bJjy6quvRl7zer3KGWecodx1112dGa5q3G63ctxxxymPPvpo5LVQKKRceumlytVXX93isZMnT1ZuvfXWzg5RNVOmTFH++Mc/1nvt0UcfVcaMGaO43e4mj/n973+vzJ49u95rs2fPViZMmNBZYaquPeW0YMEC5fTTT++K8LqVYDCorFmzRhk7dmzkvvT111+3eEwsnlO9ldRL0ZF6qWVSN7WN1FHR62l1lAyfi9Kbb77J6tWruffee7nyyiujOmbDhg0EAgEmTJgQec1oNHLGGWdE1W3fE23evBm73V7vM2s0GiZMmMDGjRvxeDxNHqcoCtu3b2fo0KFdFWqX8vl8bNy4sV65AEycOBGn08n333/f6Jj9+/eTm5vb5DF5eXnk5uZ2ZsiqaE85AWzbtq3Xnjst2b59O/fddx8XXXQRjz76aKu/H4vnVG8m9VJ0pF5qntRNbSN1VNv0tDpKkqIojR8/nnXr1jF58uSoj9m9ezc2m4309PR6r+fk5FBcXIzT6ezoMFW3e/duAAYMGFDv9ZycHILBIPn5+U0el5+fj9Pp5Oeff2bixIkMHz6ciRMn8vbbb3dyxF1j3759+P3+JssFYO/evY2Oaaksmzump2tPOUF4aILT6WTy5MmMHDmSU045hccffxy/39/ZIauqb9++fPTRR9xxxx1RDcOIxXOqN5N6KTpSLzVP6qa2kTqqbXpaHRXzc4pcLhfvvPNOsz/PyMjgrLPOIjs7u81/u7q6mri4uEav22w2ABwOR+T/e4JoysrhcAA0+tx1P3NTasfb7t+/n7lz56LX63n77bf529/+hs/n49JLL+2Ij6Ca2nG0bSmX9pZlT9aeciovL6eoqIhgMMhtt93GYYcdxoYNG1ixYgUFBQU88cQTnR+4SpKSktr0+7F4TvVEUi9FT+qlQyN1U9tIHdU2Pa2OivmkyG63M2/evGZ/PnbsWM4666x2/W2llZVbtNqe1VEXTVmdcsopLf6N5j7z8ccfz7JlyzjhhBOwWq0AnHbaaZSXl/P0009zySWXoNFo2h272kKhUIs/b6pc2nNMT9eez2y1Wnn++efJycmhX79+QPhcNBqNPPnkk8ycOZPDDz+8U+LtaWLxnOqJpF6KntRLh0bqpraROqpzqX1uxXxS1KdPH7Zv394pfzsuLq7JoQi1mW58fHynvG9niaasXn31VQCcTieJiYmR11v7zKmpqZx55pmNXh83bhxfffUVpaWljYZ79CS1n7vh+dBcq0h7j+np2vOZzWZzkw89Z5xxBk8++STbtm2TCqdGLJ5TPZHUS9GTeunQSN3UNlJHdS61z63em853A4MGDcLhcFBeXl7v9by8PLKysnrlUowDBw4Ewp+xrry8PAwGA/3792/yuO+++67Jdei9Xi86na5eRdYTZWdno9PpGpVL7Vj2pm6ILZVlc8f0dO0pp9zcXF5//XXsdnu912snT6ekpHRStD1PLJ5Toj6pl34T6/USSN3UVlJHdS61zy1JijrRySefDMAHH3wQec3n87F+/fpWu/N7qjFjxmC1Wlm7dm3kNUVR+OijjyLdxU35+uuvmTt3br1JdKFQiLVr1zJmzJhmj+spTCYTxx13HB999FG94Str164lPj6eUaNGNTqmtqu9blkCfPjhhwwYMCDSDd+btKecSkpKuO++++pdZwDvvfcecXFxDB8+vNPj7ili8ZwS9Um9FCb1UpjUTW0jdVTnUvvcivnhcx2psLCQwsJChg0bhtFoJCsri0mTJvHwww/j9XoZMGAAq1atwm63c91116kdbqewWCxMmTKFJUuWYDAYGDNmDGvWrGHLli289NJLkd9rWFaTJ0/m9ddfZ/r06cyePRuLxcI//vEPduzYERn60NPNmDGDa665htmzZ3PxxRezadMmVq5cyS233ILFYsHhcLBr1y6ys7MjLUezZs3ijjvuICkpifHjx/PJJ5/w/vvvs3DhQpU/Tedpazkde+yxnHTSScyfPx+Px8MRRxzB+vXrefnll5k7dy4JCQlqfyTVyDklpF6Seqk1Uje1jdRRHafbnVudvhNSL/T00083uUle7ev79u2LvOb1epW///3vykknnaSMHj1aufzyy5Uff/yxK8PtcsFgUFmyZIkybtw4ZeTIkcqkSZOU9evX1/udpsoqNzdXufHGG5WTTjpJGTVqlHLFFVco3377bVeH36k+/PBD5bzzzlOGDx+ujB8/Xlm5cmXkZ19//bUyePBgZc2aNfWOee2115QJEyYoI0aMUM4++2zlrbfe6uKou15by6m6ulp5+OGHlTPPPFMZMWKEcs455yirV69WI3TV1JZL3Y3x5JyKHVIvtUzqpZZJ3dQ2Uke1XU+oozSK0spSNEIIIYQQQgjRi8mcIiGEEEIIIURMk6RICCGEEEIIEdMkKRJCCCGEEELENEmKhBBCCCGEEDFNkiIhhBBCCCFETJOkSAghhBBCCBHTJCkSQgghhBBCxDRJioQQQgghhBAxTZIiIYQQQgghREyTpEgIIYQQQggR0yQpEkIIIYQQQsQ0SYqEEEIIIYQQMe3/AyIMq55ZmkH+AAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 53 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "977301bbdf313eeb" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/TwoMoons_FlowMatching.ipynb b/examples/TwoMoons_FlowMatching.ipynb index 4fcfd655d..e80477087 100644 --- a/examples/TwoMoons_FlowMatching.ipynb +++ b/examples/TwoMoons_FlowMatching.ipynb @@ -10,28 +10,13 @@ }, { "cell_type": "code", - "execution_count": 1, "id": "d5f88a59", "metadata": { "ExecuteTime": { - "end_time": "2024-09-23T14:39:46.551814Z", - "start_time": "2024-09-23T14:39:46.032170Z" + "end_time": "2024-10-14T00:04:09.950062Z", + "start_time": "2024-10-14T00:03:55.013171Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "CUDA backend failed to initialize: Unable to use CUDA because of the following issues with CUDA components:\n", - "Outdated cuDNN installation found.\n", - "Version JAX was built against: 8907\n", - "Minimum supported: 9100\n", - "Installed version: 8907\n", - "The local installation version must be no lower than 9100..(Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" - ] - } - ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", @@ -50,7 +35,9 @@ "sys.path.append('../')\n", "\n", "import bayesflow as bf" - ] + ], + "outputs": [], + "execution_count": 1 }, { "cell_type": "markdown", @@ -435,65 +422,65 @@ "output_type": "stream", "text": [ "Epoch 1/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 6ms/step - loss: 0.6938 - loss/inference_loss: 0.6938 - val_loss: 0.5508 - val_loss/inference_loss: 0.5508\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m6s\u001B[0m 6ms/step - loss: 0.6938 - loss/inference_loss: 0.6938 - val_loss: 0.5508 - val_loss/inference_loss: 0.5508\n", "Epoch 2/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6250 - loss/inference_loss: 0.6250 - val_loss: 0.6023 - val_loss/inference_loss: 0.6023\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.6250 - loss/inference_loss: 0.6250 - val_loss: 0.6023 - val_loss/inference_loss: 0.6023\n", "Epoch 3/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6056 - loss/inference_loss: 0.6056 - val_loss: 0.4454 - val_loss/inference_loss: 0.4454\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.6056 - loss/inference_loss: 0.6056 - val_loss: 0.4454 - val_loss/inference_loss: 0.4454\n", "Epoch 4/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6006 - loss/inference_loss: 0.6006 - val_loss: 0.5079 - val_loss/inference_loss: 0.5079\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.6006 - loss/inference_loss: 0.6006 - val_loss: 0.5079 - val_loss/inference_loss: 0.5079\n", "Epoch 5/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.6020 - loss/inference_loss: 0.6020 - val_loss: 0.5414 - val_loss/inference_loss: 0.5414\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.6020 - loss/inference_loss: 0.6020 - val_loss: 0.5414 - val_loss/inference_loss: 0.5414\n", "Epoch 6/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5973 - loss/inference_loss: 0.5973 - val_loss: 0.6961 - val_loss/inference_loss: 0.6961\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5973 - loss/inference_loss: 0.5973 - val_loss: 0.6961 - val_loss/inference_loss: 0.6961\n", "Epoch 7/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5874 - loss/inference_loss: 0.5874 - val_loss: 0.5399 - val_loss/inference_loss: 0.5399\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5874 - loss/inference_loss: 0.5874 - val_loss: 0.5399 - val_loss/inference_loss: 0.5399\n", "Epoch 8/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5939 - loss/inference_loss: 0.5939 - val_loss: 0.4877 - val_loss/inference_loss: 0.4877\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5939 - loss/inference_loss: 0.5939 - val_loss: 0.4877 - val_loss/inference_loss: 0.4877\n", "Epoch 9/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5841 - loss/inference_loss: 0.5841 - val_loss: 0.5115 - val_loss/inference_loss: 0.5115\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5841 - loss/inference_loss: 0.5841 - val_loss: 0.5115 - val_loss/inference_loss: 0.5115\n", "Epoch 10/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5827 - loss/inference_loss: 0.5827 - val_loss: 0.5383 - val_loss/inference_loss: 0.5383\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5827 - loss/inference_loss: 0.5827 - val_loss: 0.5383 - val_loss/inference_loss: 0.5383\n", "Epoch 11/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5807 - loss/inference_loss: 0.5807 - val_loss: 0.4411 - val_loss/inference_loss: 0.4411\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5807 - loss/inference_loss: 0.5807 - val_loss: 0.4411 - val_loss/inference_loss: 0.4411\n", "Epoch 12/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5774 - loss/inference_loss: 0.5774 - val_loss: 0.5844 - val_loss/inference_loss: 0.5844\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5774 - loss/inference_loss: 0.5774 - val_loss: 0.5844 - val_loss/inference_loss: 0.5844\n", "Epoch 13/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5813 - loss/inference_loss: 0.5813 - val_loss: 0.8106 - val_loss/inference_loss: 0.8106\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5813 - loss/inference_loss: 0.5813 - val_loss: 0.8106 - val_loss/inference_loss: 0.8106\n", "Epoch 14/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 5ms/step - loss: 0.5756 - loss/inference_loss: 0.5756 - val_loss: 0.4150 - val_loss/inference_loss: 0.4150\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m6s\u001B[0m 5ms/step - loss: 0.5756 - loss/inference_loss: 0.5756 - val_loss: 0.4150 - val_loss/inference_loss: 0.4150\n", "Epoch 15/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 5ms/step - loss: 0.5761 - loss/inference_loss: 0.5761 - val_loss: 0.5451 - val_loss/inference_loss: 0.5451\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m6s\u001B[0m 5ms/step - loss: 0.5761 - loss/inference_loss: 0.5761 - val_loss: 0.5451 - val_loss/inference_loss: 0.5451\n", "Epoch 16/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5747 - loss/inference_loss: 0.5747 - val_loss: 0.6248 - val_loss/inference_loss: 0.6248\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5747 - loss/inference_loss: 0.5747 - val_loss: 0.6248 - val_loss/inference_loss: 0.6248\n", "Epoch 17/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.4689 - val_loss/inference_loss: 0.4689\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.4689 - val_loss/inference_loss: 0.4689\n", "Epoch 18/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5705 - loss/inference_loss: 0.5705 - val_loss: 0.3853 - val_loss/inference_loss: 0.3853\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5705 - loss/inference_loss: 0.5705 - val_loss: 0.3853 - val_loss/inference_loss: 0.3853\n", "Epoch 19/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5739 - loss/inference_loss: 0.5739 - val_loss: 0.5055 - val_loss/inference_loss: 0.5055\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5739 - loss/inference_loss: 0.5739 - val_loss: 0.5055 - val_loss/inference_loss: 0.5055\n", "Epoch 20/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5688 - loss/inference_loss: 0.5688 - val_loss: 0.5032 - val_loss/inference_loss: 0.5032\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5688 - loss/inference_loss: 0.5688 - val_loss: 0.5032 - val_loss/inference_loss: 0.5032\n", "Epoch 21/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5663 - loss/inference_loss: 0.5663 - val_loss: 0.5237 - val_loss/inference_loss: 0.5237\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5663 - loss/inference_loss: 0.5663 - val_loss: 0.5237 - val_loss/inference_loss: 0.5237\n", "Epoch 22/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5650 - loss/inference_loss: 0.5650 - val_loss: 0.3955 - val_loss/inference_loss: 0.3955\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5650 - loss/inference_loss: 0.5650 - val_loss: 0.3955 - val_loss/inference_loss: 0.3955\n", "Epoch 23/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.7317 - val_loss/inference_loss: 0.7317\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.7317 - val_loss/inference_loss: 0.7317\n", "Epoch 24/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5632 - loss/inference_loss: 0.5632 - val_loss: 0.6094 - val_loss/inference_loss: 0.6094\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5632 - loss/inference_loss: 0.5632 - val_loss: 0.6094 - val_loss/inference_loss: 0.6094\n", "Epoch 25/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5701 - loss/inference_loss: 0.5701 - val_loss: 0.5721 - val_loss/inference_loss: 0.5721\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5701 - loss/inference_loss: 0.5701 - val_loss: 0.5721 - val_loss/inference_loss: 0.5721\n", "Epoch 26/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5711 - loss/inference_loss: 0.5711 - val_loss: 0.6184 - val_loss/inference_loss: 0.6184\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5711 - loss/inference_loss: 0.5711 - val_loss: 0.6184 - val_loss/inference_loss: 0.6184\n", "Epoch 27/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5672 - loss/inference_loss: 0.5672 - val_loss: 0.6326 - val_loss/inference_loss: 0.6326\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5672 - loss/inference_loss: 0.5672 - val_loss: 0.6326 - val_loss/inference_loss: 0.6326\n", "Epoch 28/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5585 - loss/inference_loss: 0.5585 - val_loss: 0.6209 - val_loss/inference_loss: 0.6209\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5585 - loss/inference_loss: 0.5585 - val_loss: 0.6209 - val_loss/inference_loss: 0.6209\n", "Epoch 29/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5594 - loss/inference_loss: 0.5594 - val_loss: 0.5672 - val_loss/inference_loss: 0.5672\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5594 - loss/inference_loss: 0.5594 - val_loss: 0.5672 - val_loss/inference_loss: 0.5672\n", "Epoch 30/30\n", - "\u001b[1m1024/1024\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 5ms/step - loss: 0.5597 - loss/inference_loss: 0.5597 - val_loss: 0.4648 - val_loss/inference_loss: 0.4648\n" + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m5s\u001B[0m 5ms/step - loss: 0.5597 - loss/inference_loss: 0.5597 - val_loss: 0.4648 - val_loss/inference_loss: 0.4648\n" ] } ], From 8d38eff9572ec237fa698ec0eca2299683207bfd Mon Sep 17 00:00:00 2001 From: Jerry Date: Tue, 22 Oct 2024 14:10:54 -0400 Subject: [PATCH 10/22] WIP notebooks for Diagnostics testing --- bayesflow/diagnostics/__init__.py | 2 +- bayesflow/diagnostics/plot_losses.py | 37 +- bayesflow/diagnostics/plot_recovery.py | 91 +- examples/Quickstart_Diagnostics.ipynb | 695 +++++++++++++ examples/TwoMoons_Diagnostics.ipynb | 1279 ++++++++++++------------ 5 files changed, 1413 insertions(+), 691 deletions(-) create mode 100644 examples/Quickstart_Diagnostics.ipynb diff --git a/bayesflow/diagnostics/__init__.py b/bayesflow/diagnostics/__init__.py index 28adaf7ba..5e4fdbce2 100644 --- a/bayesflow/diagnostics/__init__.py +++ b/bayesflow/diagnostics/__init__.py @@ -1,2 +1,2 @@ from .plot_losses import plot_losses -from .plot_recovery import plot_recovery \ No newline at end of file +from .plot_recovery import plot_recovery diff --git a/bayesflow/diagnostics/plot_losses.py b/bayesflow/diagnostics/plot_losses.py index d778e1e8b..3797b0257 100644 --- a/bayesflow/diagnostics/plot_losses.py +++ b/bayesflow/diagnostics/plot_losses.py @@ -1,5 +1,7 @@ +import numpy as np import seaborn as sns +import matplotlib.pyplot as plt from tensorflow.keras import ops from ..utils.plot_utils import initialize_figure @@ -8,16 +10,17 @@ def plot_losses( train_losses, val_losses=None, - moving_average: bool = False, - ma_window_fraction: float = 0.01, - train_color: str = "#8f2727", - val_color: str = "black", - lw_train: int = 2, - lw_val: int = 3, - grid_alpha: float = 0.5, - legend_fontsize: int = 14, - label_fontsize: int = 14, - title_fontsize: int = 16, + moving_average=False, + ma_window_fraction=0.01, + fig_size=None, + train_color="#8f2727", + val_color="black", + lw_train=2, + lw_val=3, + grid_alpha=0.5, + legend_fontsize=14, + label_fontsize=14, + title_fontsize=16, ): """A generic helper function to plot the losses of a series of training epochs and runs. @@ -70,17 +73,15 @@ def plot_losses( n_row = len(train_losses.columns) # Initialize figure - f, axarr = initialize_figure(n_row=n_row, n_col=1, fig_size=(16, int(4 * n_row))) - - # if fig_size is None: - # fig_size = (16, int(4 * n_row)) - # f, axarr = plt.subplots(n_row, 1, figsize=fig_size) + if fig_size is None: + fig_size = (16, int(4 * n_row)) + f, axarr = plt.subplots(n_row, 1, figsize=fig_size) # Get the number of steps as an array - train_step_index = ops.arange(1, len(train_losses) + 1) + train_step_index = np.arange(1, len(train_losses) + 1) if val_losses is not None: - val_step = int(ops.floor(len(train_losses) / len(val_losses))) - val_step_index = train_step_index[(val_step - 1) :: val_step] + val_step = int(np.floor(len(train_losses) / len(val_losses))) + val_step_index = train_step_index[(val_step - 1)::val_step] # If unequal length due to some reason, attempt a fix if val_step_index.shape[0] > val_losses.shape[0]: diff --git a/bayesflow/diagnostics/plot_recovery.py b/bayesflow/diagnostics/plot_recovery.py index 2001c95e6..4031a7542 100644 --- a/bayesflow/diagnostics/plot_recovery.py +++ b/bayesflow/diagnostics/plot_recovery.py @@ -2,30 +2,31 @@ import numpy as np from scipy.stats import median_abs_deviation from sklearn.metrics import r2_score +import matplotlib.pyplot as plt import seaborn as sns from ..utils.plot_utils import preprocess, postprocess - +from ..utils.plot_utils import check_posterior_prior_shapes def plot_recovery( - post_samples, - prior_samples, - point_agg=np.median, - uncertainty_agg=median_abs_deviation, - param_names: list = None, - fig_size: tuple = None, - label_fontsize: int = 16, - title_fontsize: int = 18, - metric_fontsize: int = 16, - tick_fontsize: int = 12, - add_corr: bool = True, - add_r2: bool = True, - color: str | tuple = "#8f2727", - n_col: int = None, - n_row: int = None, - xlabel: str = "Ground truth", - ylabel: str = "Estimated", - **kwargs, + post_samples, + prior_samples, + point_agg=np.median, + uncertainty_agg=median_abs_deviation, + param_names=None, + fig_size=None, + label_fontsize=16, + title_fontsize=18, + metric_fontsize=16, + tick_fontsize=12, + add_corr=True, + add_r2=True, + color="#8f2727", + n_col=None, + n_row=None, + xlabel="Ground truth", + ylabel="Estimated", + **kwargs, ): """Creates and plots publication-ready recovery plot with true vs. point estimate + uncertainty. The point estimate can be controlled with the ``point_agg`` argument, and the uncertainty estimate @@ -93,17 +94,40 @@ def plot_recovery( If there is a deviation from the expected shapes of ``post_samples`` and ``prior_samples``. """ - # Preprocess - f, axarr, axarr_it, n_row, n_col, n_params, param_names = preprocess( - post_samples, prior_samples, fig_size=fig_size - ) + # Sanity check + check_posterior_prior_shapes(post_samples, prior_samples) # Compute point estimates and uncertainties est = point_agg(post_samples, axis=1) if uncertainty_agg is not None: u = uncertainty_agg(post_samples, axis=1) - # Loop and plot + # Determine n params and param names if None given + n_params = prior_samples.shape[-1] + if param_names is None: + param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + + # Determine number of rows and columns for subplots based on inputs + if n_row is None and n_col is None: + n_row = int(np.ceil(n_params / 6)) + n_col = int(np.ceil(n_params / n_row)) + elif n_row is None and n_col is not None: + n_row = int(np.ceil(n_params / n_col)) + elif n_row is not None and n_col is None: + n_col = int(np.ceil(n_params / n_row)) + + # Initialize figure + if fig_size is None: + fig_size = (int(4 * n_col), int(4 * n_row)) + f, axarr = plt.subplots(n_row, n_col, figsize=fig_size) + + # turn axarr into 1D list + axarr = np.atleast_1d(axarr) + if n_col > 1 or n_row > 1: + axarr_it = axarr.flat + else: + axarr_it = axarr + for i, ax in enumerate(axarr_it): if i >= n_params: break @@ -159,7 +183,22 @@ def plot_recovery( ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) - postprocess(axarr, axarr_it, n_row, n_col, n_params, xlabel, ylabel, label_fontsize) + # Only add x-labels to the bottom row + bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + for _ax in bottom_row: + _ax.set_xlabel(xlabel, fontsize=label_fontsize) + + # Only add y-labels to right left-most row + if n_row == 1: # if there is only one row, the ax array is 1D + axarr[0].set_ylabel(ylabel, fontsize=label_fontsize) + # If there is more than one row, the ax array is 2D + else: + for _ax in axarr[:, 0]: + _ax.set_ylabel(ylabel, fontsize=label_fontsize) + + # Remove unused axes entirely + for _ax in axarr_it[n_params:]: + _ax.remove() f.tight_layout() - return f + return f \ No newline at end of file diff --git a/examples/Quickstart_Diagnostics.ipynb b/examples/Quickstart_Diagnostics.ipynb new file mode 100644 index 000000000..6ceddd5bc --- /dev/null +++ b/examples/Quickstart_Diagnostics.ipynb @@ -0,0 +1,695 @@ +{ + "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": "Quickstart Diagnostics", + "id": "ee8e90d08cdb035e" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:18:05.726356Z", + "start_time": "2024-10-22T16:18:05.710363Z" + } + }, + "cell_type": "code", + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import seaborn as sns\n", + "\n", + "# ensure the backend is set\n", + "import os\n", + "if \"KERAS_BACKEND\" not in os.environ:\n", + " # set this to \"torch\", \"tensorflow\", or \"jax\"\n", + " os.environ[\"KERAS_BACKEND\"] = \"jax\"\n", + "\n", + "import keras\n", + "\n", + "# for BayesFlow devs: this ensures that the latest dev version can be found\n", + "import sys\n", + "sys.path.append('../')\n", + "\n", + "import bayesflow as bf\n", + "from bayesflow.diagnostics.plot_losses import plot_losses\n", + "from bayesflow.diagnostics.plot_recovery import plot_recovery" + ], + "id": "56c348ceefe0a66f", + "outputs": [], + "execution_count": 24 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:24:23.691704Z", + "start_time": "2024-10-22T16:24:23.677134Z" + } + }, + "cell_type": "code", + "source": [ + "def theta_prior():\n", + " theta = np.random.normal(size=4)\n", + " return dict(theta=theta)\n", + "\n", + "def forward_model(theta, n_obs=100):\n", + " x = np.random.normal(loc=theta, size=(n_obs, theta.shape[0]))\n", + " return dict(x=x)" + ], + "id": "214241c510d751f4", + "outputs": [], + "execution_count": 38 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:24:24.077994Z", + "start_time": "2024-10-22T16:24:24.058994Z" + } + }, + "cell_type": "code", + "source": "simulator = bf.simulators.CompositeLambdaSimulator([theta_prior, forward_model])", + "id": "938dc70eb8ba4a54", + "outputs": [], + "execution_count": 39 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:24:24.971064Z", + "start_time": "2024-10-22T16:24:24.948063Z" + } + }, + "cell_type": "code", + "source": "sample_data = simulator.sample((50,))", + "id": "931b7f6a77c8401b", + "outputs": [], + "execution_count": 40 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:24:27.263198Z", + "start_time": "2024-10-22T16:24:27.249771Z" + } + }, + "cell_type": "code", + "source": [ + "print(\"Type of sample_data:\\n\\t\", type(sample_data))\n", + "print(\"Keys of sample_data:\\n\\t\", sample_data.keys())\n", + "print(\"Types of sample_data values:\\n\\t\", {k: type(v) for k, v in sample_data.items()})\n", + "print(\"Shapes of sample_data values:\\n\\t\", {k: v.shape for k, v in sample_data.items()})" + ], + "id": "e9b0a37820825b85", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Type of sample_data:\n", + "\t \n", + "Keys of sample_data:\n", + "\t dict_keys(['theta', 'x'])\n", + "Types of sample_data values:\n", + "\t {'theta': , 'x': }\n", + "Shapes of sample_data values:\n", + "\t {'theta': (50, 4), 'x': (50, 100, 4)}\n" + ] + } + ], + "execution_count": 41 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:25:08.028115Z", + "start_time": "2024-10-22T16:25:08.013014Z" + } + }, + "cell_type": "code", + "source": "sample_data", + "id": "c0caf508bb83962f", + "outputs": [ + { + "data": { + "text/plain": [ + "{'theta': array([[ 0.34066415, -0.5138845 , 1.4528089 , -0.49958685],\n", + " [ 0.86015004, 0.48635587, 0.2364767 , -0.53709507],\n", + " [-0.6582664 , -0.1106401 , -0.5822995 , 0.29959023],\n", + " [ 0.17613287, 0.40979308, -1.1803418 , 0.7906092 ],\n", + " [-2.5815134 , -0.5926008 , -1.442977 , -1.1212678 ],\n", + " [ 0.15085632, 0.8538437 , -0.71999 , -0.6779198 ],\n", + " [-0.04969181, 0.45948943, 0.6696255 , 0.9931811 ],\n", + " [ 1.015672 , 0.28774238, 0.18076487, -0.11111598],\n", + " [-0.7719207 , -1.3176122 , 0.5294132 , 0.4176514 ],\n", + " [ 0.03191099, -0.6768063 , 0.5141813 , -1.592261 ],\n", + " [-0.99575025, -1.8044442 , 0.56740063, -1.9281672 ],\n", + " [ 0.81070745, -0.60243636, -0.10667904, -0.3417887 ],\n", + " [ 1.0685011 , -1.3776896 , 1.8168131 , -0.8139481 ],\n", + " [ 0.01134184, 0.02382061, 1.6661643 , -0.46634912],\n", + " [-1.8478132 , -0.08229433, -0.04664409, -0.11284911],\n", + " [ 1.4040706 , -0.67715555, -0.2592975 , -0.20792411],\n", + " [ 2.399644 , 0.89749336, 2.4230204 , 0.0970002 ],\n", + " [ 0.93040395, 0.25475293, 0.8398071 , 0.29117548],\n", + " [-0.16029291, -0.02478953, 0.29951358, 0.33260188],\n", + " [-0.86853355, -1.1873287 , 1.9413403 , 0.32616952],\n", + " [-0.67677224, 0.02859171, 0.5428518 , -1.5521122 ],\n", + " [ 2.3776774 , -0.6828046 , 0.5556347 , -1.4531173 ],\n", + " [ 0.17357443, -0.45678964, -0.12053017, -0.8963106 ],\n", + " [ 0.20243092, 0.4169088 , 0.4405855 , 0.06946267],\n", + " [-0.4409229 , 0.07481287, -0.82419586, 0.33597344],\n", + " [-1.0189365 , 1.2648267 , -0.84935266, 0.58711445],\n", + " [ 0.8026323 , -0.73901856, -0.3391541 , 0.5761913 ],\n", + " [-0.9766659 , -1.1858828 , -0.5103791 , 0.73724025],\n", + " [ 1.5424025 , 0.28468883, -0.05811996, -1.0388048 ],\n", + " [ 1.6943154 , -0.36717394, 0.37467596, -0.18305473],\n", + " [-1.4355195 , -1.1271007 , 0.98609 , -2.1474707 ],\n", + " [-0.24416563, -0.88949496, -0.83292514, 0.05820413],\n", + " [ 1.0845547 , 0.97108537, 0.18267912, 0.16928157],\n", + " [ 1.5283549 , -0.9298855 , -1.9587208 , 1.4929713 ],\n", + " [ 0.34513605, 0.904506 , 0.46237883, -1.4228871 ],\n", + " [-0.81769085, 0.7091762 , -0.54571545, 0.5346092 ],\n", + " [-1.221732 , -1.3575743 , -1.3833972 , 1.5352001 ],\n", + " [-1.1201226 , -0.11686669, -0.21259853, -0.01677035],\n", + " [-0.1394734 , -0.3124989 , -0.21038432, -0.2977672 ],\n", + " [ 0.41691035, 0.28065392, -0.38032046, 0.95429885],\n", + " [-1.771154 , -1.1321709 , -1.9100127 , 0.5539506 ],\n", + " [-1.447865 , 1.2216287 , 2.154635 , -0.3226352 ],\n", + " [ 0.68915546, 0.41079593, -0.05922764, -2.326437 ],\n", + " [-0.81387454, -1.0814589 , -0.6311428 , -0.16105291],\n", + " [-0.12934463, 0.26514062, -1.6791768 , -0.20046751],\n", + " [-0.19893628, -0.48227343, 0.38067642, -0.8310641 ],\n", + " [ 1.2004272 , 0.0041292 , -0.02631984, 1.3608695 ],\n", + " [ 2.2010703 , 1.2613806 , -1.1433984 , -0.1893912 ],\n", + " [ 0.38409767, -0.2333284 , 0.67292047, 1.7366157 ],\n", + " [-0.22914144, 1.6965197 , 1.2130772 , 0.39718068]],\n", + " dtype=float32),\n", + " 'x': array([[[ 3.6254582 , -1.2774805 , 1.829676 , -0.32256916],\n", + " [-1.256944 , 0.3428607 , 1.6378316 , -1.9851911 ],\n", + " [ 0.7485846 , 1.0144739 , 2.0964758 , -0.01522239],\n", + " ...,\n", + " [ 0.08928863, -0.51128244, 1.1220746 , 0.7665733 ],\n", + " [ 0.3698297 , -3.188901 , 2.025168 , 0.01316792],\n", + " [-0.0478575 , -1.2997395 , 0.98696446, -1.16682 ]],\n", + " \n", + " [[ 2.8832037 , 0.8261143 , -1.1377803 , -1.1128289 ],\n", + " [ 0.9582984 , 0.79203564, -0.3229012 , -1.6079041 ],\n", + " [ 0.16740797, 1.4642444 , -0.06614214, 0.3791665 ],\n", + " ...,\n", + " [ 1.3970535 , 0.965935 , 0.5211107 , -0.23564771],\n", + " [ 0.92998844, -0.22871257, -1.2391579 , 0.9288718 ],\n", + " [ 0.23330195, -1.122806 , 0.29205167, -0.21602471]],\n", + " \n", + " [[-2.1422992 , 1.1895313 , -1.2813323 , 0.94614196],\n", + " [-0.6536977 , -1.7648559 , -2.6089973 , -0.25280094],\n", + " [-0.9758994 , -0.09433198, 0.5126696 , -0.4680349 ],\n", + " ...,\n", + " [ 0.6029331 , -0.5393456 , -3.4281068 , 1.9625674 ],\n", + " [-2.7362714 , 1.6726367 , -0.20103195, -0.2370804 ],\n", + " [ 1.6226304 , -0.20690091, 0.6907045 , -0.4412011 ]],\n", + " \n", + " ...,\n", + " \n", + " [[ 2.5122259 , 2.7933333 , -1.8370881 , -0.21269593],\n", + " [ 0.08193951, 2.768969 , -1.8215785 , -1.3286033 ],\n", + " [ 1.3069335 , 1.077523 , -3.191183 , -0.19069603],\n", + " ...,\n", + " [ 2.0579758 , 1.8073362 , -0.04059944, -0.1998354 ],\n", + " [ 1.7150037 , 1.5609382 , -1.7395236 , -1.3606325 ],\n", + " [ 2.9268007 , 0.23673572, -0.95533824, -1.3200113 ]],\n", + " \n", + " [[ 1.4436094 , -1.3594241 , 0.415787 , 2.261267 ],\n", + " [ 0.31457698, -0.8279396 , 1.7133617 , 1.7376964 ],\n", + " [-0.72784173, -1.3070168 , 1.0091938 , 2.5164726 ],\n", + " ...,\n", + " [ 0.4194977 , -0.2666566 , 0.8669603 , 3.1416023 ],\n", + " [-0.5483485 , -0.539848 , -0.2195546 , 1.9718776 ],\n", + " [ 0.20176356, 1.069642 , -0.65165126, 2.8493927 ]],\n", + " \n", + " [[-0.6640122 , 1.3560729 , 0.5739129 , -0.85077333],\n", + " [-1.5651604 , 2.4200397 , 1.7220724 , -2.3291683 ],\n", + " [ 0.12706083, 0.7526239 , 0.46398893, 0.5266859 ],\n", + " ...,\n", + " [ 0.28359127, 1.544274 , 1.2267944 , -0.26292163],\n", + " [-0.24361266, 2.2830348 , -0.09784857, -0.17053986],\n", + " [-0.12756453, 0.9381281 , 1.8230177 , 0.8788254 ]]],\n", + " dtype=float32)}" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 43 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:25:14.230395Z", + "start_time": "2024-10-22T16:25:14.219237Z" + } + }, + "cell_type": "code", + "source": [ + "data_adapter = bf.ContinuousApproximator.build_data_adapter(\n", + " inference_variables=[\"theta\"],\n", + " inference_conditions=[\"x\"]\n", + ")" + ], + "id": "b0f547fc9dfec62e", + "outputs": [], + "execution_count": 44 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:25:14.901880Z", + "start_time": "2024-10-22T16:25:14.887223Z" + } + }, + "cell_type": "code", + "source": [ + "# Define hyperparameters\n", + "num_training_batches = 1024\n", + "num_validation_batches = 256\n", + "batch_size = 128" + ], + "id": "d6a75322b3e87b16", + "outputs": [], + "execution_count": 45 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:39:40.767333Z", + "start_time": "2024-10-22T17:39:27.893610Z" + } + }, + "cell_type": "code", + "source": [ + "training_samples = simulator.sample((num_training_batches * batch_size, ))\n", + "validation_samples = simulator.sample((num_validation_batches * batch_size, ))\n", + "\n", + "training_dataset = bf.datasets.OnlineDataset(\n", + " simulator=simulator, \n", + " batch_size=batch_size, \n", + " num_batches=num_training_batches, \n", + " data_adapter=data_adapter\n", + ")\n", + "\n", + "validation_dataset = bf.datasets.OnlineDataset(\n", + " simulator=simulator,\n", + " batch_size=batch_size,\n", + " num_batches=num_validation_batches,\n", + " data_adapter=data_adapter\n", + ")" + ], + "id": "f54a245984369b8b", + "outputs": [], + "execution_count": 69 + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "summary_network = bf.networks.DeepSet(summary_dim=10)\n", + "summary_network.build(input_shape=(training_samples['x'].shape))" + ], + "id": "6d219a2947a41c39", + "outputs": [], + "execution_count": null + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:33:25.157778Z", + "start_time": "2024-10-22T17:33:25.114152Z" + } + }, + "cell_type": "code", + "source": [ + "inference_network = bf.networks.FlowMatching(\n", + " subnet=\"mlp\",\n", + " subnet_kwargs=dict(\n", + " depth=6,\n", + " width=256,\n", + " ),\n", + ")\n", + "inference_network.build()" + ], + "id": "ecc20e920b0dc330", + "outputs": [], + "execution_count": 61 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T16:29:39.431488Z", + "start_time": "2024-10-22T16:29:39.361352Z" + } + }, + "cell_type": "code", + "source": [ + "test_sim = simulator.sample((4,))\n", + "z, log_det_J = summary_network(test_sim['x'])" + ], + "id": "2d182d111fdacf3b", + "outputs": [ + { + "ename": "ValueError", + "evalue": "too many values to unpack (expected 2)", + "output_type": "error", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[1;32mIn[58], line 2\u001B[0m\n\u001B[0;32m 1\u001B[0m test_sim \u001B[38;5;241m=\u001B[39m simulator\u001B[38;5;241m.\u001B[39msample((\u001B[38;5;241m4\u001B[39m,))\n\u001B[1;32m----> 2\u001B[0m z, log_det_J \u001B[38;5;241m=\u001B[39m summary_network(test_sim[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mx\u001B[39m\u001B[38;5;124m'\u001B[39m])\n", + "\u001B[1;31mValueError\u001B[0m: too many values to unpack (expected 2)" + ] + } + ], + "execution_count": 58 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:33:32.494258Z", + "start_time": "2024-10-22T17:33:32.477712Z" + } + }, + "cell_type": "code", + "source": [ + "approximator = bf.ContinuousApproximator(\n", + " inference_network=inference_network,\n", + " data_adapter=data_adapter,\n", + ")" + ], + "id": "a3b83230f640d6d9", + "outputs": [], + "execution_count": 62 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:33:33.040002Z", + "start_time": "2024-10-22T17:33:33.017491Z" + } + }, + "cell_type": "code", + "source": [ + "learning_rate = 1e-4\n", + "optimizer = keras.optimizers.Adam(learning_rate=learning_rate)" + ], + "id": "f0c0c672f6667945", + "outputs": [], + "execution_count": 63 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:33:33.566726Z", + "start_time": "2024-10-22T17:33:33.550196Z" + } + }, + "cell_type": "code", + "source": [ + "class BatchLossHistory(keras.callbacks.Callback):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.losses = {\n", + " \"training_loss\": [],\n", + " \"validation_loss\": [],\n", + " }\n", + "\n", + "\n", + " def on_train_batch_end(self, batch, logs=None):\n", + " # 'logs' is a dictionary containing loss and other metrics\n", + " training_loss = logs.get('loss')\n", + " self.losses[\"training_loss\"].append(training_loss)\n", + " \n", + " \n", + " def on_test_batch_end(self, batch, logs=None):\n", + " validation_loss = logs.get('loss')\n", + " self.losses[\"validation_loss\"].append(validation_loss)" + ], + "id": "359d6e9fe112d405", + "outputs": [], + "execution_count": 64 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:33:34.490293Z", + "start_time": "2024-10-22T17:33:34.464277Z" + } + }, + "cell_type": "code", + "source": "approximator.compile(optimizer=optimizer)", + "id": "7b96a6c3943dcf40", + "outputs": [], + "execution_count": 65 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:33:34.834571Z", + "start_time": "2024-10-22T17:33:34.821630Z" + } + }, + "cell_type": "code", + "source": "batch_loss_history = BatchLossHistory()", + "id": "e683fe5d365b279e", + "outputs": [], + "execution_count": 66 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-22T17:33:36.209593Z", + "start_time": "2024-10-22T17:33:35.778861Z" + } + }, + "cell_type": "code", + "source": [ + "history = approximator.fit(\n", + " epochs=10,\n", + " dataset=training_dataset,\n", + " validation_data=validation_dataset,\n", + " callbacks=[batch_loss_history]\n", + ")" + ], + "id": "768ee6ac6ce0ef37", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:bayesflow:Fitting on dataset instance of OnlineDataset.\n", + "INFO:bayesflow:Building on a test batch.\n" + ] + }, + { + "ename": "TypeError", + "evalue": "Cannot concatenate arrays with different numbers of dimensions: got (128, 4), (128, 1), (128, 100, 4).", + "output_type": "error", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[1;32mIn[67], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m history \u001B[38;5;241m=\u001B[39m \u001B[43mapproximator\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfit\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 2\u001B[0m \u001B[43m \u001B[49m\u001B[43mepochs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m10\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[0;32m 3\u001B[0m \u001B[43m \u001B[49m\u001B[43mdataset\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtraining_dataset\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 4\u001B[0m \u001B[43m \u001B[49m\u001B[43mvalidation_data\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mvalidation_dataset\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 5\u001B[0m \u001B[43m \u001B[49m\u001B[43mcallbacks\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m[\u001B[49m\u001B[43mbatch_loss_history\u001B[49m\u001B[43m]\u001B[49m\n\u001B[0;32m 6\u001B[0m \u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\continuous_approximator.py:109\u001B[0m, in \u001B[0;36mContinuousApproximator.fit\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 108\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mfit\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs):\n\u001B[1;32m--> 109\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39mfit(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs, data_adapter\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdata_adapter)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\approximator.py:82\u001B[0m, in \u001B[0;36mApproximator.fit\u001B[1;34m(self, dataset, simulator, **kwargs)\u001B[0m\n\u001B[0;32m 80\u001B[0m mock_data \u001B[38;5;241m=\u001B[39m dataset[\u001B[38;5;241m0\u001B[39m]\n\u001B[0;32m 81\u001B[0m mock_data \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mtree\u001B[38;5;241m.\u001B[39mmap_structure(keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mconvert_to_tensor, mock_data)\n\u001B[1;32m---> 82\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbuild_from_data\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmock_data\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 84\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39mfit(dataset\u001B[38;5;241m=\u001B[39mdataset, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\approximator.py:23\u001B[0m, in \u001B[0;36mApproximator.build_from_data\u001B[1;34m(self, data)\u001B[0m\n\u001B[0;32m 22\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mbuild_from_data\u001B[39m(\u001B[38;5;28mself\u001B[39m, data: \u001B[38;5;28mdict\u001B[39m[\u001B[38;5;28mstr\u001B[39m, \u001B[38;5;28many\u001B[39m]) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m---> 23\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcompute_metrics(\u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mdata, stage\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mtraining\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 24\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbuilt \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\continuous_approximator.py:95\u001B[0m, in \u001B[0;36mContinuousApproximator.compute_metrics\u001B[1;34m(self, inference_variables, inference_conditions, summary_variables, stage)\u001B[0m\n\u001B[0;32m 92\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m 93\u001B[0m inference_conditions \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mconcatenate([inference_conditions, summary_outputs], axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m1\u001B[39m)\n\u001B[1;32m---> 95\u001B[0m inference_metrics \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43minference_network\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcompute_metrics\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 96\u001B[0m \u001B[43m \u001B[49m\u001B[43minference_variables\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconditions\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minference_conditions\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mstage\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mstage\u001B[49m\n\u001B[0;32m 97\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 99\u001B[0m loss \u001B[38;5;241m=\u001B[39m inference_metrics\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mloss\u001B[39m\u001B[38;5;124m\"\u001B[39m, keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mzeros(())) \u001B[38;5;241m+\u001B[39m summary_metrics\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mloss\u001B[39m\u001B[38;5;124m\"\u001B[39m, keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mzeros(()))\n\u001B[0;32m 101\u001B[0m inference_metrics \u001B[38;5;241m=\u001B[39m {\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mkey\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/inference_\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mkey\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m: value \u001B[38;5;28;01mfor\u001B[39;00m key, value \u001B[38;5;129;01min\u001B[39;00m inference_metrics\u001B[38;5;241m.\u001B[39mitems()}\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\networks\\flow_matching\\flow_matching.py:122\u001B[0m, in \u001B[0;36mFlowMatching.compute_metrics\u001B[1;34m(self, x, conditions, stage)\u001B[0m\n\u001B[0;32m 118\u001B[0m target_velocity \u001B[38;5;241m=\u001B[39m x1 \u001B[38;5;241m-\u001B[39m x0\n\u001B[0;32m 120\u001B[0m base_metrics \u001B[38;5;241m=\u001B[39m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39mcompute_metrics(x1, conditions, stage)\n\u001B[1;32m--> 122\u001B[0m predicted_velocity \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mintegrator\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mvelocity\u001B[49m\u001B[43m(\u001B[49m\u001B[43mx\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mt\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconditions\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 124\u001B[0m loss \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mlosses\u001B[38;5;241m.\u001B[39mmean_squared_error(target_velocity, predicted_velocity)\n\u001B[0;32m 125\u001B[0m loss \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mmean(loss)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\networks\\flow_matching\\integrators\\euler.py:45\u001B[0m, in \u001B[0;36mEulerIntegrator.velocity\u001B[1;34m(self, x, t, conditions, **kwargs)\u001B[0m\n\u001B[0;32m 43\u001B[0m xtc \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mconcatenate([x, t], axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m1\u001B[39m)\n\u001B[0;32m 44\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m---> 45\u001B[0m xtc \u001B[38;5;241m=\u001B[39m \u001B[43mkeras\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mops\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43m[\u001B[49m\u001B[43mx\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mt\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconditions\u001B[49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m-\u001B[39;49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[0;32m 47\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39moutput_projector(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39msubnet(xtc, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs))\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\keras\\src\\ops\\numpy.py:1352\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(xs, axis)\u001B[0m\n\u001B[0;32m 1350\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m any_symbolic_tensors(xs):\n\u001B[0;32m 1351\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m Concatenate(axis\u001B[38;5;241m=\u001B[39maxis)\u001B[38;5;241m.\u001B[39msymbolic_call(xs)\n\u001B[1;32m-> 1352\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mbackend\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnumpy\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43mxs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43maxis\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\keras\\src\\backend\\jax\\numpy.py:405\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(xs, axis)\u001B[0m\n\u001B[0;32m 400\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m 401\u001B[0m xs \u001B[38;5;241m=\u001B[39m [\n\u001B[0;32m 402\u001B[0m x\u001B[38;5;241m.\u001B[39mtodense() \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(x, jax_sparse\u001B[38;5;241m.\u001B[39mJAXSparse) \u001B[38;5;28;01melse\u001B[39;00m x\n\u001B[0;32m 403\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m x \u001B[38;5;129;01min\u001B[39;00m xs\n\u001B[0;32m 404\u001B[0m ]\n\u001B[1;32m--> 405\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mjnp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43mxs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43maxis\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\numpy\\lax_numpy.py:4243\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(arrays, axis, dtype)\u001B[0m\n\u001B[0;32m 4241\u001B[0m k \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m16\u001B[39m\n\u001B[0;32m 4242\u001B[0m \u001B[38;5;28;01mwhile\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(arrays_out) \u001B[38;5;241m>\u001B[39m \u001B[38;5;241m1\u001B[39m:\n\u001B[1;32m-> 4243\u001B[0m arrays_out \u001B[38;5;241m=\u001B[39m [lax\u001B[38;5;241m.\u001B[39mconcatenate(arrays_out[i:i\u001B[38;5;241m+\u001B[39mk], axis)\n\u001B[0;32m 4244\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m i \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mrange\u001B[39m(\u001B[38;5;241m0\u001B[39m, \u001B[38;5;28mlen\u001B[39m(arrays_out), k)]\n\u001B[0;32m 4245\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m arrays_out[\u001B[38;5;241m0\u001B[39m]\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\numpy\\lax_numpy.py:4243\u001B[0m, in \u001B[0;36m\u001B[1;34m(.0)\u001B[0m\n\u001B[0;32m 4241\u001B[0m k \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m16\u001B[39m\n\u001B[0;32m 4242\u001B[0m \u001B[38;5;28;01mwhile\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(arrays_out) \u001B[38;5;241m>\u001B[39m \u001B[38;5;241m1\u001B[39m:\n\u001B[1;32m-> 4243\u001B[0m arrays_out \u001B[38;5;241m=\u001B[39m [\u001B[43mlax\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43marrays_out\u001B[49m\u001B[43m[\u001B[49m\u001B[43mi\u001B[49m\u001B[43m:\u001B[49m\u001B[43mi\u001B[49m\u001B[38;5;241;43m+\u001B[39;49m\u001B[43mk\u001B[49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 4244\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m i \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mrange\u001B[39m(\u001B[38;5;241m0\u001B[39m, \u001B[38;5;28mlen\u001B[39m(arrays_out), k)]\n\u001B[0;32m 4245\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m arrays_out[\u001B[38;5;241m0\u001B[39m]\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\lax\\lax.py:650\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(operands, dimension)\u001B[0m\n\u001B[0;32m 648\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(op, Array):\n\u001B[0;32m 649\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m op\n\u001B[1;32m--> 650\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mconcatenate_p\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbind\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43moperands\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdimension\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdimension\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\core.py:438\u001B[0m, in \u001B[0;36mPrimitive.bind\u001B[1;34m(self, *args, **params)\u001B[0m\n\u001B[0;32m 435\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mbind\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mparams):\n\u001B[0;32m 436\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m (\u001B[38;5;129;01mnot\u001B[39;00m config\u001B[38;5;241m.\u001B[39menable_checks\u001B[38;5;241m.\u001B[39mvalue \u001B[38;5;129;01mor\u001B[39;00m\n\u001B[0;32m 437\u001B[0m \u001B[38;5;28mall\u001B[39m(\u001B[38;5;28misinstance\u001B[39m(arg, Tracer) \u001B[38;5;129;01mor\u001B[39;00m valid_jaxtype(arg) \u001B[38;5;28;01mfor\u001B[39;00m arg \u001B[38;5;129;01min\u001B[39;00m args)), args\n\u001B[1;32m--> 438\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbind_with_trace\u001B[49m\u001B[43m(\u001B[49m\u001B[43mfind_top_trace\u001B[49m\u001B[43m(\u001B[49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mparams\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\core.py:442\u001B[0m, in \u001B[0;36mPrimitive.bind_with_trace\u001B[1;34m(self, trace, args, params)\u001B[0m\n\u001B[0;32m 440\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mbind_with_trace\u001B[39m(\u001B[38;5;28mself\u001B[39m, trace, args, params):\n\u001B[0;32m 441\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m pop_level(trace\u001B[38;5;241m.\u001B[39mlevel):\n\u001B[1;32m--> 442\u001B[0m out \u001B[38;5;241m=\u001B[39m \u001B[43mtrace\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mprocess_primitive\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mmap\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mtrace\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfull_raise\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mparams\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 443\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mmap\u001B[39m(full_lower, out) \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmultiple_results \u001B[38;5;28;01melse\u001B[39;00m full_lower(out)\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\core.py:948\u001B[0m, in \u001B[0;36mEvalTrace.process_primitive\u001B[1;34m(self, primitive, tracers, params)\u001B[0m\n\u001B[0;32m 946\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m call_impl_with_key_reuse_checks(primitive, primitive\u001B[38;5;241m.\u001B[39mimpl, \u001B[38;5;241m*\u001B[39mtracers, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mparams)\n\u001B[0;32m 947\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m--> 948\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m primitive\u001B[38;5;241m.\u001B[39mimpl(\u001B[38;5;241m*\u001B[39mtracers, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mparams)\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\dispatch.py:90\u001B[0m, in \u001B[0;36mapply_primitive\u001B[1;34m(prim, *args, **params)\u001B[0m\n\u001B[0;32m 88\u001B[0m prev \u001B[38;5;241m=\u001B[39m lib\u001B[38;5;241m.\u001B[39mjax_jit\u001B[38;5;241m.\u001B[39mswap_thread_local_state_disable_jit(\u001B[38;5;28;01mFalse\u001B[39;00m)\n\u001B[0;32m 89\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m---> 90\u001B[0m outs \u001B[38;5;241m=\u001B[39m \u001B[43mfun\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 91\u001B[0m \u001B[38;5;28;01mfinally\u001B[39;00m:\n\u001B[0;32m 92\u001B[0m lib\u001B[38;5;241m.\u001B[39mjax_jit\u001B[38;5;241m.\u001B[39mswap_thread_local_state_disable_jit(prev)\n", + " \u001B[1;31m[... skipping hidden 18 frame]\u001B[0m\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\lax\\lax.py:3904\u001B[0m, in \u001B[0;36m_concatenate_shape_rule\u001B[1;34m(*operands, **kwargs)\u001B[0m\n\u001B[0;32m 3902\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mlen\u001B[39m({operand\u001B[38;5;241m.\u001B[39mndim \u001B[38;5;28;01mfor\u001B[39;00m operand \u001B[38;5;129;01min\u001B[39;00m operands}) \u001B[38;5;241m!=\u001B[39m \u001B[38;5;241m1\u001B[39m:\n\u001B[0;32m 3903\u001B[0m msg \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mCannot concatenate arrays with different numbers of dimensions: got \u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[38;5;124m.\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m-> 3904\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mTypeError\u001B[39;00m(msg\u001B[38;5;241m.\u001B[39mformat(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m, \u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;241m.\u001B[39mjoin(\u001B[38;5;28mstr\u001B[39m(o\u001B[38;5;241m.\u001B[39mshape) \u001B[38;5;28;01mfor\u001B[39;00m o \u001B[38;5;129;01min\u001B[39;00m operands)))\n\u001B[0;32m 3905\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;241m0\u001B[39m \u001B[38;5;241m<\u001B[39m\u001B[38;5;241m=\u001B[39m dimension \u001B[38;5;241m<\u001B[39m operands[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;241m.\u001B[39mndim:\n\u001B[0;32m 3906\u001B[0m msg \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mconcatenate dimension out of bounds: dimension \u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[38;5;124m for shapes \u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[38;5;124m.\u001B[39m\u001B[38;5;124m\"\u001B[39m\n", + "\u001B[1;31mTypeError\u001B[0m: Cannot concatenate arrays with different numbers of dimensions: got (128, 4), (128, 1), (128, 100, 4)." + ] + } + ], + "execution_count": 67 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-20T18:45:43.804570Z", + "start_time": "2024-10-20T18:45:42.197334Z" + } + }, + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "\n", + "f = plot_losses(\n", + " train_losses=pd.DataFrame(batch_loss_history.losses[\"training_loss\"]), \n", + " val_losses=pd.DataFrame(batch_loss_history.losses[\"validation_loss\"])\n", + ")" + ], + "id": "4aa8f4aa440e9925", + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 36 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-20T19:00:34.909974Z", + "start_time": "2024-10-20T19:00:32.167528Z" + } + }, + "cell_type": "code", + "source": [ + "n_samples = 5000\n", + "\n", + "conditions = {\n", + " \"x\": np.array([[0.0, 0.0, 0.0, 0.0]]).astype(np.float32),\n", + "}\n", + "\n", + "samples = approximator.sample(conditions=conditions, num_samples=n_samples)\n", + "\n", + "theta_samples = samples[\"theta\"]" + ], + "id": "2c9328186f195ecd", + "outputs": [], + "execution_count": 37 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-20T19:00:35.847766Z", + "start_time": "2024-10-20T19:00:35.835217Z" + } + }, + "cell_type": "code", + "source": "theta_samples", + "id": "ad55f949b09a8160", + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[-0.8272288 , -0.49605218, 0.70173615, 0.5919672 ],\n", + " [-0.3977319 , 0.29412413, 0.4869203 , -0.6501034 ],\n", + " [ 0.36272183, -0.808805 , 0.0503429 , -0.8143094 ],\n", + " ...,\n", + " [ 0.44116256, 0.22608528, 0.08759339, 1.1507258 ],\n", + " [-0.14893901, -0.90049297, 0.67143995, -0.46183816],\n", + " [ 0.05667248, 0.3298449 , 0.0929981 , -0.47135326]]],\n", + " dtype=float32)" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 38 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-20T19:00:37.143832Z", + "start_time": "2024-10-20T19:00:36.896189Z" + } + }, + "cell_type": "code", + "source": "prior_samples = simulator.sample(conditions=conditions, batch_shape=(n_samples,))", + "id": "d05dc915057060f9", + "outputs": [], + "execution_count": 39 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-20T19:00:37.768597Z", + "start_time": "2024-10-20T19:00:37.759081Z" + } + }, + "cell_type": "code", + "source": [ + "prior_theta_sample = np.zeros((1, n_samples, 4))\n", + "prior_theta_sample[0, :] = prior_samples['theta']" + ], + "id": "67dfb4675712b77b", + "outputs": [], + "execution_count": 40 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-20T19:00:40.077651Z", + "start_time": "2024-10-20T19:00:38.274146Z" + } + }, + "cell_type": "code", + "source": [ + "f = plot_recovery(\n", + " post_samples=np.swapaxes(theta_samples, 0, 1), \n", + " prior_samples=prior_samples['theta']\n", + ")" + ], + "id": "aa003fa535917e25", + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAABjYAAAGGCAYAAADYTbhfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUVfrA8e+dnpn0QEJPKAKCWFDX3sva26orimKvqIjrioqCq65gAxFUEF0rdtbuz7KComJDigQILY2WOiXTy72/PyYZE5JA+qS8n+fxMczcuffMzeS+c897znsUTdM0hBBCCCGEEEIIIYQQQgghugBdvBsghBBCCCGEEEIIIYQQQgjRVJLYEEIIIYQQQgghhBBCCCFElyGJDSGEEEIIIYQQQgghhBBCdBmS2BBCCCGEEEIIIYQQQgghRJchiQ0hhBBCCCGEEEIIIYQQQnQZktgQQgghhBBCCCGEEEIIIUSXIYkNIYQQQgghhBBCCCGEEEJ0GZLYEEIIIYQQQgghhBBCCCFElyGJDSGEEEIIIYQQQgghhBBCdBmS2BBCCCGEEEIIIYQQQgghRJdhiHcDhBAN27BhA6+++irLly+nvLycjIwMjjvuOG699VZ69eoV7+YJIYToYBIXhBBC1CZxQQghRA2JCaInUjRN0+LdCCFEXfPnz2fOnDmEw2GMRiNGoxGv1wtA//79ee+990hPT49zK4UQQnQUiQtCCCFqk7gghBCihsQE0VNJKSohOpm5c+fy1FNPkZiYyMyZM1m5ciUrV67khRdewGazsX37dmbNmhXvZgohhOggEheEEELUJnFBCCFEDYkJoieTGRtCdCLLli3juuuuIyEhgTfffJORI0fWeX7BggU8+eSTJCYmsnz5ckwmU5xaKoQQoiNIXBBCCFGbxAUhhBA1JCaInk5mbAjRSYRCIf71r3+haRoTJ06sF5AAjj32WADcbjdbt27t6CYKIYToQBIXhBBC1CZxQQghRA2JCUJIYkOITuPDDz+kqKiI1NRULrvssga3SU1Njf1cUlLSQS0TQggRDxIXhBBC1CZxQQghRA2JCUJIYkOITuO9994D4JxzzsFisTS4TSgUiv1sMBg6pF1CCCHiQ+KCEEKI2iQuCCGEqCExQQhJbAjRKWzfvp2VK1cCcNpppzW6ncPhiP2cmJjY3s0SQggRJxIXhBBC1CZxQQghRA2JCUJESbpOiE7gp59+iv186623oihKg9uFw+HYz9nZ2e3eLiGEEPEhcUEIIURtEheEEELUkJggRJQkNoToBFasWBH7uaKiYq/b9+rVq06tRCGEEN2LxAUhhBC1SVwQQghRQ2KCEFGS2BCiE9iyZQsAV111FVOmTGl0u8suu4zffvuNgw8+OPaYx+PhpZdeYu3ataxdu5by8nLOP/98ZsyY0e7tFkII0T5aExdyc3P56KOPWL58Odu2bcNkMjF06FCuuuoqTj755HZvuxBCiLbXmriwY8cOnnrqKdauXUtpaSmaptG/f39OO+00rrzySilPIoQQXUxrYkJD+zr33HMJhUK88MILHHvssW3eXiHaiyQ2hOgEiouLAejTp0+j23g8HlavXg3AYYcdFnvcbrczd+5cevfuzX777cfSpUvbta1CCCHaX2viwsKFC/nxxx855ZRTuPTSS/H7/Xz66afccsst3Hzzzdx+++3t23ghhBBtrjVxoby8nJKSEk455RT69OmDXq9n7dq1PP/883zzzTe8/fbbGI3G9n0DQggh2kxrYsLupk+fjtForLPQuBBdhSQ2hOgE3G43AElJSY1u88033xAKhTAYDHUWh8rMzOS7774jKyuLQCDA/vvv3+7tFUII0b5aExfGjx/PjBkzMJvNsccuv/xyLr30UhYsWMCECRNkKroQQnQxrYkL+++/P6+99lq97XNycnj88cf58ccfOe6449q+0UIIIdpFa2JCbR988AFr1qzh2muvZe7cue3SViHaky7eDRBCgKZpAI0u+ATw7rvvAnDCCSeQkZERe9xkMpGVldW+DRRCCNGhWhMXDj744DpJDQC9Xs8pp5xCOBymoKCg7RsshBCiXbUmLjRmwIABADidzjZooRBCiI7SFjHB5XLx2GOPcd1119G/f//2aagQ7UwSG0J0ApmZmQCUlZU1+Pyvv/7Kzz//jKIoTJw4sSObJoQQIg7aIy6UlpYCkJ6e3jaNFEII0WHaIi4EAgEqKyvZuXMnS5cuZdasWZjNZg499NB2a7cQQoi21xYx4YknnsBqtXLddde1WzuFaG+S2BCiExgzZgwQnSq4O7vdzn333QdES4mMHDmyQ9smhBCi47V1XCgpKWHx4sUccMABDBo0qG0bK4QQot21RVx49913OeKIIzj++OO54YYbUBSFZ599lr59+7Zfw4UQQrS51saE1atX8+6773LffffVm+ktRFciiQ0hOoHzzz8fgFWrVjFr1iyCwSAAv/32G5dddhmFhYWMHTuWu+66K57NFEII0UHaMi74fD5uueUWgsEg//rXv9q13UIIIdpHW8SFk08+mf/85z/MmTOHq666CqvVGqvTLoQQoutoTUyIRCJMnz6d4447jhNOOKFD2y1EW1O0msJsQoi4uvPOO/nkk08AMBqNGAwGfD4fAMcddxyzZs3CZrPtcR81i4eff/75zJgxo93bLIQQov20RVwIBoPcdNNNLF++nNmzZ3Pqqae2e7uFEEK0j7aIC7V9/vnnTJo0if/85z8ceeSR7dJmIYQQ7aOlMeGVV17hySef5NNPP2XgwIEALF68mHvuuYcXXniBY489tuPehBCtZIh3A4QQUY8//jijR49m8eLFFBcXYzabOfjgg7nwwgs5/fTT4908IYQQHay1cSEUCjFp0iR++OEHHn30UUlqCCFEF9fW9wunnnoqZrOZ999/XxIbQgjRxbQkJlRVVfH0009z3nnnoSgK27ZtA6LlqwAqKirYtm0bffv2Ra/Xd9h7EaKlZMaGEN2IzNgQQggB0Snmd9xxB1988QXTp09n3Lhx8W6SEEKITiYYDHLggQdy1FFH8cILL8S7OUIIIdrZtm3bOOmkk/a63bfffkufPn06oEVCtI7M2BBCCCGE6EZUVeXuu+/miy++4J577pGkhhBC9HDl5eX06tWr3uNvvfUWkUiEAw44IA6tEkII0dEyMjKYN29evcd/+uknXnvtNW655RZGjRpFWlpaHFonRPNJYkOIbuD111/H5XIRiUQAyMvL49lnnwXg0EMP5dBDD41n84QQQnSgxx57jI8//piDDjqItLQ0PvzwwzrPjx07NlZPVwghRPf3xBNPsHnzZo466ij69euH1+vll19+YcmSJQwePJgrrrgi3k0UQgjRARISEjj55JPrPe5yuQA48MADZY0N0aVIYkOIbuCll15i+/btsX+vW7eOdevWATBx4kRJbAghRA+Sm5sLwMqVK1m5cmW95x999FFJbAghRA9yyimn4HA4+O9//0tlZSUGg4FBgwZx0003cc0115CYmBjvJgohhBBCNJussSGEEEIIIYQQQgghhBBCiC5DF+8GCCGEEEIIIYQQQgghhBBCNJUkNoQQQgghhBBCCCGE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vPIiAJdcMp60tLQ6zz311EyWLVvKtdfeSCSisnbtH7HnBg8e3KTFnyZMuKZlDW+mqioXwWAAq9VGQoK1wREhGRm9qKgoj5VKaEzNAk7ffPMVNpuNAw6ILuS0YcM63nrrdb7//jvmzVtARkavBo7d8A197WOnpKRSWlpCamoqP/74PY88Mh2v988b5rfeep3TTz+Lu++eisEgf1oi/jZt2siMGQ+jqirnnHMe06Y9jMnUPTsBO1vJkfawZs1aAAYPHtrgtfL5558HonHBbK5bOuDxx//NkiXfcO21N+LxBPjllxWx55oaFy699Mo6/95TKYfWjO5zuZwEAtFrc2MlUdLTMygvL2P79hISE9Ma2MufSkp28e9/P8Lw4SMZP/5qvN5g7LOxt5IjAD/99CNr1qwmJ2cwxxxzUrPe29NPzwbgyCOPJhJR6rxWSmG0npzD5lu69Bvmz49eK66//mbuuusf+P3hDj+PHVFyZMiQ+p0IqampmEwmxowZ08Arup6eeb+w9+/se+vEKinZxZNPzmT48JFcddV1TWpDc19z0UWXNGm/QsTbu+++xWeffYLBYODeex+Qz24XJjHhT+0ZE5rb77S76dPvo7Awn02bNpKSksK0aY8wcuS+ez2uEB3l2Wef4ddff8ZmszFz5lMcd1z96jqdifS+dlI12fbBg/8MSuFwmKKiQt544xWWLv0f1157I1deeW291/7883IAFi58noULn6/z3Jw5zzN27CHt2PLmqZl6t6c6bWazuXpb7x73VbOA0xFHHMW0aY+QmBgNvna7nenT72XFil+ZOfMRHntsVouOXTPqz+v18eCD93HkkcdwzTU3kJmZyapVK3niiUf5/PNP6NWrd71SJULEwz77DOcf/5hCMBjg6quv77QZ9rbQE0qOSFz4U1PjgqZpPPLIdILBAFOnPtiipHPNAoKXXTahWX9Db7/9Bt988xUWi4Xrr5eYIDqH448/kcsvv5JRo/bjrLPOaVbCV3Q+Ehf+1J5xoS1iiRCd1bhx41m7dg3nnXchhx9+RLybI1pBYsKf2jMmNLffqTan08HXX38R+7eiKGzdupnjjjtBZkmJTuP22+9k166d3HrrHV2ihLl8K+ukarLAH3zwHh988F6d56xWG489NpuDDz60wde+997H7d6+tlJz8W5KX5Gqqnt8/oEHHua663aQldWnTpBLS0vj/vv/xbhxF1Qv7r2Dvn37NfvYoVB0NGMwGOCggw7m4Ydnxp4/6qhjyMjI4LrrJvD224u49NIrSEpK2vuOhWhjRUWF6HS62OLgl19+ZXwb1EF6QskRiQv17S0uvPXWG/z++2/ccsukRkev7UlRUQG//vozmZlZnHLKaU1+3TvvLOKZZ2ahKApTptzf6in3QrRGbu5aBg4cSHJytIzaP/95b5xbFD8zZsyIdxPalMSF+tojLrQ2lgjR2fz22y8ccMBBGI1G9Ho9M2Y8Ge8miTYgMaG+9ogJze13qi0hwcrHH3+JyWRizZrVPP30E7z88kIqKsq5++6pTTq+EO3hp5+Wc9hhh6MoCjabjTlznot3k5pMEhud0K5du3A4HACceOIpmM1mVFWlrKyU1atX4vV6mDr1bt5++4M6tfvaUlst/FRQkM+rr75U7/Hs7BwmTLgmNnUwEAg0uo+a56xW6x7bYjKZGu086tWrN8OHj2T16pXk5a2nb99+zT527aB1wQUX1dt25MhRjBw5ivXrc1m7dg1HHHHUHtsrRFv77bdfuOOOiWRk9OK1194iKal9rg+dUXcvOSJxoa6mxIUtWzbzwgvPcuCBY/n73y/da7sb8s03X6NpGief/Ncmj+p97rk5LFr0Gnq9nilT7ufkk1u/5osQLfX5559y//1TOPDAsTz33MJOueCfaJnuHBf0eh2RiNop4kJbxBIhOgtN03j55ReZNetxzjvvbzz44CPdekZ3T9KdY0KNzhAToPn9Tru/1mRKB6IzPgYNymbChEv49NOPGD/+Svr3r7+OohDtKRwO8/jj/2bRote5/fbJXHvtjfFuUrNJYqMTqplCaLPZmD79kTplAtauXcNtt91IVZWLTz75gEsvvaJd2tBWCz9VVlbw5Zef13v8wAPHMmHCNVitNqxWG263G7/fD9QviVBRUQ7QaI3CpkpPjy6YHD0OdY4dCPgxm+tPZax9bJstEaPRSCgUom/f/g0eo2/ffqxfn4vT6WhVW4Vorv/+9z0eemgaoVCIAQMGEggEkUlD3UdnjAs1HU+7a8u40JRrc2Pmz59LMBhEURQefnhanedqrtHz5s0mIcHKFVdcTU7O4Hr7WLbsWwBOPvnUPb4ngEDAz7/+dT/ffrsEs9nM9OmPcMwxx+/1dUK0h2iSbS7PPfcMEC3XEAqFJLHRjXTGuNCYrhwX2iKWCNEZhEIh/vWvB/jgg/cBMBqNqKoq5W+6CYkJdXXUvUJDdu932pP+/Qew337789tvv7B580ZJbIgOVVXl4q67JvHDD9/HuymtIomNTqgmKI0YsW+92sf77bc/p556Op988iFffvl/7RaU2mrhp7FjD+H7739r9HlFURg8eAi5uX+Qn7+V7OxhdZ53uZxUVlaQlJS8x0WfAoEAs2c/gcNhZ/r0hxsMbjt2bAeIBdvaxy4oKGDEiJF7PXZ29mA2b95IeXkpUH+Bp8rKCgDS0tIbbasQbSkSiTB79hO8/HJ0Mbi//vUMHn54xh5rjvYU3ankSGeMCy1duLk5caGp1+aGeL3RmrorV65odJuaxMVZZ51b72bFbq+sHmnVn+HDRzb08hiPx82dd97G2rVrSE1NY+bMWYwevd8eXyNEe/H7/UydOoUvvvgMgAkTruaOO+6SzqtupjPGhZbaPS7sHl/iGRdaG0uE6Azs9kruuONWVqz4FZ1Oxz//eS+XXnq5zNboRrpzTNhdPGNCS/qd5s+fx7Ztxdx777QGFzs3mUxAdOS8EB2luLiIiRNvYOvWLZjNFh599LFmlV7uTCSx0QnV1Ebcd9/RDT5/1lnn8cknH7J580a2b9/W5bO6hx9+JLm5f7B06RImTKib2Pjuu6VomrbXsk5ms5nly7+nvLyMn3/+iWOPPb7O85s3b2Lz5o0kJibW6WyqOfayZUvrBcSGjn3EEUexefNGvv76S44++rg629d0gplMJkaNkg4t0f7cbjdTptzJt98uAeCmm27lppsmyk1KN9RT48KyZU27NjdkT1PcL7zwbHbt2slbb/03th7N7tatywVgv/32XMosHA5z112TWLt2Df37D+Cpp+Z2+fMvuq7S0lJuv/0m1q79A4PBwP33P9hg+UzR9Ulc+FN7xoXWxhIh4m3r1s3ccssNbNtWjM1m4/HHZ3PMMcft/YWiS5GY8Kf2jAkt6XdavvwHNm/eyDHHHMepp55eZ/uqqipyc/8AokkpITpCTQlzh8NB796ZzJ07n1GjGr52dAX16/6IuMvLiwalxj5Yo0fvF8v+1nRodmVnnnkOFouF119/lT/+WB17vKiogBdeeBaAceMur/OawsICCgsL6kzvO++8vwEwZ86TsSw5RGdR/PvfDxKJRBg37vI6WfWaY7/99htNOva55/6NhAQrX3/9BZ988kHscZ/Px4wZD+Hz+TjttDNl4XDRIWbOfJhvv12CyWTiscdmcfPNt0pSo5vqqXGhqddmaDgutMaGDesA9jpb48UX57NmzSoyMjKYO3dBl79RFF2XpmnVSbY/SElJYf78/0hSoxuTuBDVkXFBiK4mFApx443XsG1bMQMGDOD119+RpEY3JTEhqiNiQnP7nc477wIgWtaquLgotr3L5eKhh+7H6XRyzDHHS4JcdIjKygpuuulaHA4Ho0aN5q23FnfppAbIjI1Op7S0BLu9Emg8264oCscffyLvvPMmy5Yt4dJLL29wu64iMzOLSZP+wcyZjzBx4vUcdNDBmEwmfvvtV4LBADfcMJF99hle5zWXXXYhAHPmPM/YsYcAcOmlV7Bq1e/89tsvXH75xey//4EYjSZWrlyBz+fl+ONPYvz4K1t17D59+jB16nSmTbuXGTMe5t1334qtq1FRUcGwYcO5+ebb2/eECVHt1lsns2nTRu699wH23//AeDdHtBOJCy2PC62xc+cOANLTGy8t6HQ6ePfdNwFIS8uIrWfQkIkTJ8Vq7grRHhRF4b77pvHAA/fw2GOzGDQoO95NEu1E4kJ84oIQXY3RaGTatIdZuHA+Tz75tHwP6aYkJkRjgsVi4Zdffm73mNDcfqdzzrmA339fwTfffMWECZcwZsyBGAwG1q1bS1WVi+HDR3LPPQ+0uD1CNEd6egZ33XUPP/+8nIcfntlgebSuRhIbnUxNbcSMjF57XHjphBNO5p133iQ3dy0VFeWtXlg73s466zwGDOjPiy8uJDd3LXq9jhEjRnDJJeM57rgTm7QPk8nEE0/MYfHid/i///uUNWtWodPpGTx4COeccx5nnnlug6PZzzrrPHr3zuL1119u0rGPO+5EXnzxdV599UV+/30FxcVFZGb24aqrLuDSS6/oFhcG0Xlt3JjH8OEjAMjMzOTNN9+XWRrdXE+OC825Nrc1h8MOQGJi4zPwVq36PTbqa/PmjWzevLHRba+++nrpUBBtTtM0Nm3aGIsLw4ePkLjQA0hciE9cEKIrCIfDFBUVMGRItMTzUUcdw5FHHi1xoRuTmFATE/QdEhOa2++k0+l48MF/85e/HMaHH/6XtWujM0wGDszmssuu4KKLxmE2m9utvUJ4PB7s9srYrKCLLx7HRRdd0m3igqJpmhbvRsRbeXkVLT0LLV08VdQn57LtyLlsO53lXKqqyrx5c1iw4FlmzHiSM888O95NarLevbteabbWxIWeorP8bXRVcv5ar6efw2AwyIMPTuXzzz9l4cJXWjT6MF7nsCfGhZ7+eW0OOVfNI+erebrz+aqqcjF58m2sW7eWRYveIzs7p1X768hz1RPjAnTvz2NHk3PZNuQ8tp3OcC537tzBxIk34PP5WLToXVJT0+LanuZoalyQNTaEEKKT8/l83HXXJBYsiNYL3bp1S5xbJIQQIp4qKyu49toJfPTRB6iqSkFBfrybJIQQIo6Kigq59NKL+OmnHwkGg2zbVhzvJgkhhIij1atXMm7chWzcmIfX66WkpCTeTWoXUopKCCE6sdLSUm677UZyc9diNBp54IF/xRYsE0II0fNs3ryJW2+9gW3btpGUlMQTTzzNkUceHe9mCSGEiJNffvmZyZMn4nQ6ycrqw9y58xk5ct94N0sIIUScfPbZJ9x//xSCwSDDh49g7tz59O3bL97NaheS2BBCiE5q3bpcJk68gbKyUlJTU5k9ex4HH3xovJslhBAiTr7//jvuumsSbrebgQMHMXfu87E66kIIIXqexYvf5aGHphEOhxkzZn9mz36WzMzMeDdLCCFEHKiqynPPzeX55+cCcNxxJzBjxpMkJibGuWXtRxIbQgjRCZWU7GLChHH4/X6GDh3GM888z8CBg+LdLCGEEHGyZs0qbrnlelRV5ZBD/sKsWc90qTq5Qggh2tbnn3/KtGn3AfDXv57Bww/PwGKxxLlVQggh4mXhwudjSY2rrrqW22+/E71eH+dWtS9JbAghRCeUldWH8eMnsH79Oh5/fBZJScnxbpIQQog4GjPmAE455TSsViv33/8gRqMx3k0SQggRRyeeeDIHHTSWww8/iptumoiiKPFukhBCiDi66KJL+OSTj7j66ut6TAlzSWwIIUQnEQgE8Pm8sRG4t956B6qqYjDIpVoIIXoil8uJ0WgiISEBRVF49NHHMRgM0nklhBA9VGlpKb169UKn02E2m3nxxdck0S2EED1YaWlprARhWlo677//cY+KC7p4N0AIIQRUVFRw7bVXMHHiDQQCAQB0Op0kNYQQoocqLCzg0ksvYurUKaiqCoDRaJSkhhBC9FCrVv3ORRedy5w5T8Ue60mdV0IIIer63/++5MwzT+b999+JPdbT4oIkNoQQIs42bszj0kv/xqpVK9m6dQv5+Vvj3SQhhBBx9NNPy7n00gspLCxgzZpVlJeXx7tJQggh4ujjjz/k6qsvp7Kygu+/X4bf7493k4QQQsSJpmm8+OJ8Jk2aiN/vZ8mS/6FpWrybFReS2BBCiDj69tslXH7539mxYwcDBw7ijTfeZeTIfePdLCGEEHHy7rtvcdNN1+ByuTjggANZtOi92PRyIYQQPYuqqsyZ8xT33nsXoVCIE088mVdeWSSLhAshRA8VDAaZOvVuZs9+EoBx48Yze/a8HjurW2qcCCFEHGiaxmuvvcyTT85EVVUOPfQwnnpqTmx9DSGEED1LJBLh8ccf5Y03XgXg9NPP5KGHZmA2m+PcMiGEEPHg9XqZOvVuvvrqCwCuvvo6br/9TnQ6GZ8qhBA9UWVlBZMm3cLKlb+j1+uZMmUql1xyWbybFVeS2BCtsnLlCl599SU2bdpIIBBg6NBhXHTROE466ZRm72vFit9YsGB+k/alqioff/wBn332Mfn5WwmHQ2Rl9eGYY47n8suvIikpqd5rvv12Cffdd1ejxz/ppFN48MFHm91uIVpi/vx5zJs3B4C//e1i7rtvWo+rhSi6p7aMC63Z18qVK7jtthv55z/v4+yzz2twm5bEEiHaywMP3MNHH30AwMSJt3P99Tf32JFXouuJ1z1BQ+3Y07Vf0zQ+/vgDPvxwMfn5WzEaDQwdug/nnHM+p512ZrPbKkR7UVWVG2+8mpUrf8doNDJt2kOce+4F8W6WEE3Sle4HWrO9EB3J6/Vy2WUXs21bMUlJSTz55ByOOOKoeDcr7iSxIVrsyy8/56GHHkCv1zN27KHo9TpWrPiVadPuoaBgK9dcc0O77EtVVaZOvZvvvluCxWJh331Hk5CQwLp1uSxa9CrffbeEZ59dSHp6Rp1jbNy4AYADDxxLZmZWvTaMHj2mhWdCiOY744yzefPN17n22hsZP36CdF6JbiFecWF3RUUFTJ9+3x7rjLY0lgjRXi688O8sWfI/pk17mL/+9fR4N0eIJutK1/5Zsx5j8eJ3sVgsHHjgQSiKjjVrVvLww9P4/fffuPfeac1670K0F51OxyWXjKewsIBZs+Yyduwh8W6SEE3SlWJCa7YXoqNZrVbOP/9vfPDBYubOnc+QIUPj3aROQRIbokUqKyuYOfNhLJYE5s5dwIgRIwEoLCzg1ltv4OWXF3L00cfFHm/KvhISEnjmmb3v67PPPuK775YwaFA2Tz75DH379gPA6/Xw4INT+eGHZcya9TgPPTSjznE2bcoDYPLku+UCIOLC7XaTmJgIwKBB2XzyyZckJSXHuVVCtI32iAst2deKFb8yffp92O2VezxGS2OJEG2pdlw46KCD+eKLJRIXRJcSz3uC2ppy7V++/AcWL36XzMwsnnvuRbKy+gBQUrKLm266hs8++5gTTjhZRj+KuKodF8444yyOOeZYiQuiy+hq9wMt3V6IjqJpGh6PJxYXrrvuJi699HISE6WyQA0pzihaZPHidwkEAvztbxfXCSTZ2TnccMMtaJrGO+8sata+/v73cU3a16effgzAxIl3xDqiAKxWG/fcMw1FUVi2bCmBgL/OcfLyNmCxWMjOzmn+GxailX766UdOP/1Eli37NvaY3KSI7qQ94kJz9mW3V/LEEzO4445bcLmcsQ6rxrQ0lgjRVj766L+cfvqJbNyYF3tM4oLoauJ5TwDNu/Z/+eXnAFx77Y11tsvK6sPf/nYxAD///GOT2ipEW9M0jQULnuW8886gtLQ09rjEBdGVdLX7geZuL0RHCoVC/OtfD3DllZfh8XgAUBRFkhq7kRkbnZSmaZx++gm43W4+++wbli//no8++i+bN2/E4/GwcOFrjBy5b73XTZx4PatW/b7X/R944Fjmzl3Q4vb9+OP3ABxzzPH1njvmmOOZMeOh2DZN3dfxx5/QpH0lJSWTnZ3D6NH71ds+NTWVpKRkXC4nDocjFpgqKyuoqChnzJj90ev1TWqXEG3lrbfeYMaMh4lEIixa9BpHH32slJ4SzdYT40Jz9vXqq//hgw/eY+DAQUyZcj+ffPIhn3/+SaPHaEksEaItqKrKnDlP8eKL0b+39957m3vvfSDOrRJdUWeIC/G8J4DmXfvvu286V1xxNX369K33nM/nA5D7BBEXgUCAadPujQ26+PLLzxk/fkKcWyW6mu4aE9rzfqC524uuTVNVPCW7CHm9GK1WbFl9UHSdc7y/0+lg8uTb+OWXn1AUhV9++YkTTjgp3s3qlCSx0Ult374Nt9tNr169mTnzIb7//jvGjDmAI444mu3btzF06LAGX3fooYc1uH7E7loza0HTNAoK8gEaLOmUnJxMenoGFRXllJWV0rt3ZpP2NWzYMHYvZ9jQvh57bFaj+9u+fRsulxOj0Uhqalrs8by86PoavXtnMW/e03z//beUlOwiI6MXxx13IldccTXJyTIaRrStcDjM44//m0WLXgfgrLPOYfr0RySpIVqkJ8aF5uyrX7/+3HnnFM4++zwMBgOffPLhHtvcklgiRGt5vV7uvfcu/ve/rwC47robmThxUnwbJbqseMeFeN8TQPOu/QaDgcGDh9R7fO3aNSxe/C56vZ5TTpH1bUTHKi8vZ9Kkm1m9ehV6vZ57732Aiy8eF+9miS6ou8aE9rwfaO72PVFXSgbsibMgn+JlS3EVFhAJBNCbzSRn5zDwmONJyRkc7+bVUVCQzy23XE9RUSFWq5WZM5/i+ONPjHezOi1JbHRSeXnrASgvL6OgIJ9XXnmLnCb8sU2YcE17N42qKhfBYACr1UZCQkKD22Rk9KKiopzKyso9Bqy6+7Li9QZbvC+A+fPnAXDkkUdjNptjj9csHP7NN19hs9k44IDoAuIbNqzjrbde5/vvv2PevAVkZPTa6/vfm+5y4RetU1Xl4q67JvHDD9FRJLfddgfXXnujJDVEi/XMuND0fV100SWtfyPVGoslQrRGSckubrnlBvLy1mM0GnnwwX9z9tnnxrtZoguLd1zoDPcErbn2T59+H4WF+WzatJGUlBSmTXukwdHMQrSXjRvzmDjxenbu3ElSUhJPPTWXww8/It7NEl1U940J7Xc/0Jb3D91RV0oG7ImzIJ8N771FwOHAlpWF3pJAxO+jMm8DnpJdjLzwkk7zfn76aTmTJ0+kqqqKvn37MnfuAoYPHxHvZnVqktjopGpmGCQkWJkx4ykGDhwU5xb9qWaqtsViaXSbmo4gn8/bYft6++03+Oabr7BYLFx//S11nqtZOPyII45i2rRHYgvv2O12pk27h99//42Hp93LQ/dNb1Uiortc+EXrVFW5GD/+72zdugWz2cKjjz7GKaecFu9miS5O4kLz99USe4olQrRUUVEhEyZcSnl5Genp6Tz99LMceODYeDdLdHHxjgtd+drvdDr4+usvYv9WFIWtWzdz3HEnSDkq0SFWr17J9ddfhdfrZdCgbObOnd/gjCIhmkpiQutoqkrIG92X3+lAU9UePUC1KyUD9kRTVYqXLSXgcJAyeEhsoKnOlkjKYBvO/K0UL1tK8qDsuP++v/jic+6+ezKRSIQDDjiQ2bOfpVev1g++7u4ksdFJ1QSlSy65rFN1XsGftWebMvBcVdUO2dc77yzimWdmoSgKU6bcX2+a5AMPPMx11+0gK6tPneCoczq4eNR+rF29kl9X/c7SZ2aRs++oFiUiusuFX7ReYmISBx10MFVVVcydO59Ro0bHu0miG5C40Px9NdfeYokQLdWvX3+GDduHtLQ0nnnmefr3HxDvJoluIN5xoStf+xMSrHz88ZeYTCbWrFnN008/wcsvL6Siopy7757a6v0LsTdDhw6jX7/+pKdn8NRTc0hJSY13k0QXJzGh5WoGqNo3bQRg27JvydW0HjtAtSOTAe1d8cRTsgtXYQG2rKx61TMURcGamYWrsABPyS4S+/Zrs+O2xP77H0BqahqHH34EDz74b6kc0ESS2OikakonnXjiKc16XVst/FRQkM+rr75U7/Hs7BwuvPDvQHSRs8bUPGe1WvfYjppphS3dl6ZpPPfcHBYteg29Xs+UKfdz8sl/rbedyWSq10FVk4hQHQ4GpqezpayMknCI5BYkItr6wt+Tyll1p/caDocxGAwoisJ9903jlltup3fv3vFulugmOltc0Ot1RCJqp4sLLdHUWCJEc2iaRiQSwWAwYDAYeOqpOSiKQmJiUrybJrqJeMeFtrxed/S132QyYTKlA9EZ3YMGZTNhwiV8+ulHjB9/pSQfRbsIh8Po9fpYLFiw4GVSU1MxGo3xbproBiQmtEztAap6U/Rv0ZiQ0KMHqHZUMqAjKp6EvN7ovi0NlzQzJCTgKy+LzdbpaDV9SAB9+/bj7bcXk5lZ/7yLxklioxPasWM7VVUuMjJ6NXs6alst/FRZWcGXX35e7/EDDxzLFVdcjdVqw+12Ewj4MZvrTw+sqCgH2OuaFVarLbYvv98P1O/QbmxfgYCff/3rfr79dglms5np0x/hmGOO3+PxauyeiEgpyIeyMoLhMKbeWXhLdlL83ZImJyLa8sLfk8pZdZf3GolEePrpJ9m4MY+5c+djMBgwGo2S1BBtpqfGhdbuqylaE0uEaIzf7+eBB+4hKSmZqVOnoygKSUnJ8W6W6EY6Q1xoy+t1a+4J2kL//gPYb7/9+e23X9i8eaMkNkSbczjsTJ58G8ceezxXXhld00DuFURb6c4xoT3vB3bvF9JtKwZAb7aQMnhIpypT1JHaKhmwp0GsHVXxxGi1ojebifh96GyJ9Z4P+3zoTSaMbTRgrjm2bSvm9ttv5uabb+Wkk04FICurT4e3o6uTxEYnVLPo04gRzV+8rq0Wfho79hC+//63Rp8fPHgIubl/UFBQwIgRI+s853I5qaysICkpea+LfSuKEttXfv5WsrOHNWlfHo+bO++8jbVr15CamsbMmbMYPXq/Bo8RCASYPfsJHA4706c/jNlsqZeIKHXYAdC2FVNWWgqoeCsqyNh3NH0PPWyP7wHa7sLfk8pZ7e29jrjgYgwJCZ1+JofH42HKlDtZuvQbAH788XuOPfb4+DZKdDudMS5YraY6i7u2R1xo7b72pjmxRIimKisrY9Kkm1mzZjUGg4Fx48YzbNg+8W6W6GY6Q1xoy+t1S+8JmmP+/Hls21bMvfdOa3AxWpPJBERHTwrRlrZu3cLEiTdQXFzEhg3rOO+8C0hNTYt3s0Q30p1jQnveD3SlMkUdqS2SAXsaxJo8KLvDSl3ZsvqQnJ1DZd4GUgbb6vyeNU3DW1pC+oiR2Do4ofD7778xadIt2O12nnrqcY477sTYzA3RPJ2vl1DEaiPuu++oOLekcYcffiQAy5Ytrffcd98tRdM0jjjiqGbta+nSJU3aVzgc5q67JrF27Rr69x/A/Pn/2WNHlNlsZvny71m2bCk///wTUDcRsbUwn+0OO2ZFx8CUVMwpKRgSbATsdjZ9/F+cBfl7fQ+1L/wNacqFf/fRAkZbIjq9HqMtkZTBQwg4HBQvW4rWxjXl42Fv79W9Ywcr5s5i9cLnWfvyQta8OJ/cN15p0u+iI+3cuYMrrhjH0qXfYDKZmDHjSUlqiHbRU+NCW+yrMc2NJUI0RV7eBi699ELWrFlNcnIyzz//kiQ1RLvoLHEhnvcEzbV8+Q8sWfJ1g22tqqoiN/cPoGUdg0I0ZvnyHxg//mKKi4vo378/r7zypiQ1RJvrzjGhLfbVmKYMUI0Eg/UGqGqqinvnDuxbNuPeuWOvfTTN3T7eapIBnpISNE2r81xNMiA5O6fRZEDNINbKvA2YU1JIGpSNOSWFyrwNbHjvLXat+LXJCaXWUnQ6Bh5zPObUVJz5Wwm63aiRCEG3G2f+ViypqQw85vgOHUT70Uf/5dprJ2C32xk1ajQvvfS6JDVaQRIbnVBNbcSRIzvvl+ozzzwHi8XC22+/wR9/rI49XlRUwAsvPAvAuHGX13tdYWEBhYUF1VPM6+7r9ddfbdK+XnxxPmvWrCIjI4O5cxc0aar4eef9DYA5c55kx47tsUSE3V7JG8t/QAOOzMrCYrGg6HQoOh2m5BTCXm+TkgmtvfBD80YLNKYmYFZu2tSpA+ae3mvA6cBXUYarsACd0VAvCHaW5MaaNasYN+5CNm7cQEZGL1566TXOPPPseDdLdFM9NS40d1/N0ZJYIsSeLFnyPy6//O/s2rWT7OwcFi16j8MOOzzezRLdVGeJCy25Xjd03a+9r6beEzTXeeddAMC8ebMpLi6KPe5yuXjooftxOp0cc8zxDBgwsMXHEKK2t956g5tuupaqqioOOmgsixa9xz77DI93s0Q31J1jQnveD7RkgKqzIJ/cN15hzYvzmzQIs7nbdwatSQY0ZcDu9h+XEfb7m51QaqmUnMGMvPAS0keMJOhyUlVcRNDlJH3ESEZ0YFUUVVWZPfsJ7rvvbkKhEKec8ldefnkRWVl7LwUnGicpoU6idu25DetzARg5svOOzM3MzGLSpH8wc+YjTJx4PQcddDAmk4nffvuVYDDADTdMbPBL22WXXQjAnDnPM3bsIc3el9Pp4N133wQgLS2D5557ptE2Tpw4ifT0DAAuvfQKVq36nd9++4XLL7+Y/ccciL+0hLxtRQRVlX2Tkzm6T18gmogIeTwkZPQiaWB2k6Ye1lz4PSW7cOZvxZqZhSEhgbDPh7e0pElZ4JDXSzjgxxi24ausRG80YkxMjHX8762cVe2pfkRCoDd2yHoVLVn8u7GREZqm4SosQA2HMSRY0RtM6PT6dpmS2BrffPMVd911B8FgkOHDRzB37nz69qCpqaLj1Uwvl7iw5301VUtjiRCNeeONV5k58xE0TePww4/kySefJjk5Jd7NEt1YZ4kLLbleN3Tdb+m+muOccy7g999X8M03XzFhwiWMGXMgBoOBdevWUlXlYvjwkdxzzwMt3r8Qtc2Y8TBvvPEqAOeccx7Tpj0cK3cm4kdVVd5++20WLVrEtm3bSE9P56STTuK2224jMbF+yZ2uQmJCy+xepqi2hsoUNbd0eFcuNV6TDCheFu1j8pWXoTeZSB8xco99TE0ZsOsp2QnQoetepOQMJnlQdrP7rtpKOBzmzjtv45tvvgbg+utv5pZbbkPXCcutdzVdOrHRXYJS7Q7pcqcDV1UVaYmJ6JxOSEuPd/MaddZZ59G7dxavv/4yublr0et1jBgxgksuGc9xx53Y7H0NGNCfF19cuMd9rVr1eyyTv3nzRjZv3tjoPq+++vpYZ5TJZOKJJ+awePE7/N//fcqaP1ahUxSyEhMZqWoc2m8AiqYRCYUIeTwYLBaSs7MxWq34K8qblClu6YW/hr+ygqrt23DmbwUUdAY95pRUkrNzsKSm7fHivnvAtCQl4q9yRwPmrp0MOv4kLOkZbXLxrp3I8FdWUL4+l6qiwmYt/t1YzcaQ203A6UBvNoOqojMaY881VOOyJUmVttCv3wB0Oh3HH38iM2Y8ic1m2/uLhGihXbt24nQ6yczMIq0TxwRo+7jQVvvaXUtjSXuL1zVNtN6AAQNRFIWLLx7H3Xffh7FW/BKirXW2uBCPe4KW0Ol0PPjgv/nLXw7jww//y9q10RHAAwdmc9llV3DRReMwm82tOoYQNbKzc1AUhdtvv5Orr76uXgefiI+FCxcye/ZsrrnmGo444gjy8/OZM2cOmzZt4qWXXuqSv6fuHhPa634A6g9QjYRDAIQD/nozE3afibC3dSGau31n1JJkQFPKeyk6PQm9euEpKenQdS8UnS5ua6UYDAb69euPyWTiwQf/zVlnnROXdnRHirZ73ZwuZMGCBQ0GpVGjRjUrKJWXV9HSs7D74qnN1VgG11NSgjk1tVNncNtaa89lS+z89Wd+f24OajAIioJOr8eckkZydjaW1DSCbjdBl5P9r7mhyRfAlnRMOQvyWf/um5SvWY0aDmFOS0eLRAh53OgtFjL2HU3Abid9xEhGXzahzv40VSX3jVeqRxlEA6bRqCcUiuCzV1K6eiU6g5Gkfv2rEzYtn8VROwnns1fi3rEdvcFI+siRJPTOwl9ZjmdXCZb0NPYbfxWpQ4Y2eo52bzOAr7KSkpUrAA1zcgopQ4ZhMJliM1fUSISq4iL2m3ANOr2+0cWo2vJvpuZzqWlanWvKxo15DB06DL1e32bH6q56906KdxOarTVxoaeIxzW7O9n9/O1pgb2e8j2gueL9Gdw9LuTlbai3uGVnF69z2BPjQrw/r12JnKvmkfPVPO15vnaPCxs2rI97aaDW6MjPVkfEBVVVOeywwzjrrLOYNm1a7PHPPvuMO+64g/fee48xY8Y0eX9tcb8gf79tpzXnss738GAQvclU73u4e+cO1rw4H3NKCsYGZhns3nfU3O2boz0HQzV0HptyvJptnIWFbP54MbasvpgaGHBe874H//UMir79hoDD0WDFk44sEdVerFYTHk8gFhcikQhbtmxm+PARcW5Z19DUuNBlZ2yoqsoLL7zA3//+d+68804AjjzySNLS0rjjjjtYu3Zts4JSPHSHDG5X1+fgQxl0/EmUrVmFrU9f9MY/O9Fbmilubha45nMQdDrpfeBBVK5fR9DlwmizYUpOwV9ZQenqlaQN3YeUnCF4SnbVCSSNTfXzO+xUrM+NJm1UFUtGBnqDocXTHh1bt5D7+n/w2+0k9M6K7lfT0DSVyg0bMFTP2lDDEaqKC1nhmMXBE+9oMLnRWOkuNRQk5HaDpoKmUbZ6ZZ2ZKzqDEb3JhL+yIhYEO2JKZ2lpKXfdNYnJk+/igAMOApBgJIRoM115mnpPtWXLJh544F5mzHiSgQMHAXS5pIYQQoi289tvvzBnzlPMnTs/VoqwKyc1uiO32825557L6aefXufxIUOGAFBcXNzp+5BE+2jKzISmzESoXTq8uds3VUcPhmrK8WpvE/b7ce/cgau4iMwDDiKh1iyi2n1sfQ4+lISMXmz5/BNcRYWgqpiSk5tc8aQr+OSTj3nnnXd45pnnMRqN6PV66UdqB122t7wmKJ111ll1Hq8dlDq7tlgsWjRNzaLa9i2b6yyqreh0DDr2BGx9+hJwOEBR0FS1SYsitZXan4OEtHQyRo0mISODSMBPsMqFpqoEXE78jkoKvvy83mJTDQXMmrUqIn4/lvQMUBSIqHUWbCpetvdF0Ws4tm5hxdxZlK5ejae0lPLcNTiLCtBbLOgtCXjLy3Dv2I7OZMackoIpJRVXYSG5r/+n0UWxGlrAKeBwRKdtahrGxCTMKSnozRZ8FeWU5f6BsyCf5EHZlK/P3eNiVM15b3uTm5vLuHF/4/fff2PatPtQO+mC7EKIrqkpC+wVL2u7a5pove+//47x4//OmjWrmTnzkXg3RwghRJx98MH7XH/9Vaxc+TvPPTc33s0RjUhOTmbq1KkcfPDBdR7/+utozfthw4bFo1mik6gZoJo2dBiJffvV6wNq7kLjLVmYfG9qBkNV5m3AnJJC0qBszCkpVGxYx8r5c9nw7luUrl6JGg43eZ8tOV5l3gY2vPcWzoL8etskZ+eQNnQYEb+fnb8sp2rH9gYXHncVFbLth+/wV1ZAJIKiU0jIyGDAUcd2+aSGpmk8++wzTJp0Gz/8sIz33ns73k3q1rrsjI2aoLS7rhSU2iuDK+raW4a5tWtjtNbunwNLahrmlFRCbje+ygoc+VuIBEMkpPfC1qdvvVG8Da1XEXRXEXA6MNoS0SKR6ALc1fW+FUUhoXcmFRvWsfPXn0gelLPHqYvOgnzWvv4fXIUFmFJSMSYkEHS7ifj8+LRKdHp9NCEEKES/EBgTEogEA/jt9j3OOqozMsLtJv+rzwkHAgSrXIS9XhSbDZ3BgMFqw1dWil5vIH3kvhR8+X9NSgi2tn7i//73Jffeexder4/Bg4cwZ85zsriTEKJNNWeQQ7xqwoooTdN4883XmTnzEVRVZezYQ3jooUfj3SwhhBBxEolEmD37CV5++UUA/vrXM7j99jvj3CrRHKtXr2bBggWccMIJDB/euoWoRfe2+0LjNd/bNU0jWFWFqzCftH1GYO2ducfta17T3OogjVV8cVdUYN+0EX9lJSW/r4gmIAYMZMTf/s6Ao45p8fttSoWZou+WoEC9bRL79kdvSaBs1UocWzcTCQQwmM2xPjagzmz1mn4u944d5C1+J+6z1VtT6svv9zN16hS++OIzFEVhwoSrufjice3c4p6tyyY2GtLVglJjCyjXaEkGV9TV1PIeLVkUqa009DlQFAVjYiKOrZtRQyHMKcmYk1OiCYrdSpWNGnd5vYCpBkOo4QgGq56gy0VCRi+M1fUN/Q47zvx83Du3s/7tRSSkZ8QSPbufA2vvTIqXLcVfaceQYMWYkICi02Ewm6NtDgaIRCIYbYmo4XBsRLEaDqM3GLBmZuEsyKfsj9UYE5MaPK81IyPcO3fgr6wkbehQIqEQrsICAk4HIW80MWPr0xdzSiqaSrsnBDVN46WXFjB79pMoisKRRx7FE088TVJScov3KYQQDZFBDl1DKBRi5sxHePvtRQCcd94F3H//vzCZTHFumRCiK2nPuuiiY3k8HqZMuZOlS78B4KabbuWmmyZ2ycWne6oVK1Zw4403MmDAAB59tPkDFRISWv8dwGjUY7XKd4m20BHncp9TTyG3ohRPcQG2rD6E/H7smzfhKS1Bpzdgsiaw6b1F5JxwImmDh9TbvmYdCU/JLhJ7ZbDPqadgS7Q06dhVO7bj2V5ESv9+mEzRrlxHYSElK34hEgxiSIjux2ix4CrIZ/X8uZgtBrKPOa5Z77HmPDZ0vNpS+vfDuTkv9vPu2xgze2M+4gjcu3ay7wUXkJozmMQ+fQFY9fJLRNwueg3f589rpsVEQkoyjq1bKPnpe/qM3Ccu8dGev5WCJd/gKMiPDYxOzRkc+53uSUlJCTfffAOrV6/GaDTw738/ygUXXNRBLe+5uk1iozVBqTUBqTUXz4TBg8gYNpSKDetJSEmul8F1V5bRa+Qoeg8e1CO+8LZ1INJUlbyfljXrgmlLzGmz4zdVY5+DQJWLoMuJTgFbRgbWtJQ6n5GU/v3wbC9Cc9vrBUyd0YCiaAQdlZgSk0gfOgSTyYDPbse+YR1BdxXGBAtpg3PQG4y4tmxkXf4WEnr1IuByxi7gCekZOAsLSenfj6DLDmoEnUGPLsGC0ZpAxBlEjUTQ1Ag6vQ69UY9OpxD0ebD26o3RbKI0bz0b3n49lgxpLCj41RBEQliSomVYEntlEHRXoYZC6IxGDAlWXEVFWCx6TLYElHAQo6WBxagCPkxWC8kZKS36PIVCIe699x7++9/F1Rn2Cdxzz1QMhm5zuRRCdCIyyKHzq6pyMXnybfz0048oisKkSf/gqquulc4rIUSzdHRddNF+du3ayS23XM/GjXmYTCYefngmp59+ZrybJZrhs88+Y8qUKeTk5LBw4ULS0tKavQ+fL9glFw/vrgnWlp7L5pwPc9YAhp53McXLllKeuxZH/ha0cBhrVhapg4dhsJgpWZuLY9v22CDamu3rLEw+dDgDjzkec9aAJrfZVeEk6PFhzsgkFIqgqiola1YTDgQxJiWhAOFAAJ3JjLVvMp4d21nzxhtkHHAoumb0ZdScx92PV+ecaRoBfwB3aTmKXodtQDbBYJiQ240aCqFUHy8SDBDyBVBsqehTe+Pzh3Hv3EHF5i2YM3oTDtcvtWtK70355s2U5Rd1+Gz13QdGmzMyifh99X6nDcnL28Att1xPSckuUlJSeOqpuRx//DEd/vfdndhs5iZt1y166loblFoTkFobiPocfgyObdsp37gptoBy2OfDW1qCJTWVrMOPxudvm/p4nV1bB/WOvGC29stBQ58DT4Udv8OBJT0d24BB9d6DZjAR9PpxVThJGzqMIedcyNb/+wR7QQGKAhiMKOhIHbEvhsRkgsEwlVu2EPR60RQdCem90FuTUBQFfVIKO39ZjsFkoc+hf4ldwEvXrce9czt9DvkLpqQUfBUVmFNTURQFU3IKQY+XsM9H2OfHnJpKJKIRqKjAYLFgTE5l1+pVhNxu0pJTSMjovcegENYZQW/EX+XGWN25p7PY0FUPYPBXuUFvwNS7H7b+g6pnqAyplxB0bt9B+oiR6JIzWvR5UlUVl6sKnU7H3XffxzXXXI3XGyQYlIDUUk0NSEL0RG09TV20PaPRhNtdRUJCAjNmPMmJJ54c7yYJIbqYps4iF11DTVzIyOjFnDnPsv/+B8a7SaIZXnzxRR5//HH+8pe/MG/ePJKSkuLdpA4jCda6WnI+UnIGkzRgIKsWzCPs95OSMxhTUlLsO3zt6hrJg7KbXR2ksb6l3QdD+UpLCFa5MFgsKIqCVr1OhaLTodPpMKelUbWtmPLcP8g84KBmn5vGBl/5HXZchQV4y8sJed0oOj07fF70BmN1IsNH2BddV0RvMqHodOR/+Tl6o5GUnMGddrZ6U0pvFS9rvMy6waDH43EzePAQ5s6dz6BB2R3Z/B6tyyc2unpQivf6Dt1ZR10w2+LLQe3PgbMgn6riIiKhAIbERJJzBqPTG/BVVqI3GjEmJqIoSp1RvM6CfLb98B2+igo0VUVvNJAxfCQhn5eA3Y7eaEKNhPGWl6NFwpgSE0nOzokGQE3DVVSIFlGJhEOE3NHEgtGWSErOYKqKC3Fu3ULqsH0IeTwEHA6MNht6kxlTSjJhrxc0DUXRoQYDJGT0InlQNs7CAoIuF8mDsrH2jtaO31NQaGrnXmLffgw85ng8Jbtw5m9tMCHY1AXfG/rSoNPpeOSRx1i/PpeDDz60uR8HIYRoFkWna7NrmmgfFouFp59+Dru9khEjRsa7OUKILqa1nSWi88nIyODZZ1/AarXRV9a/6lLeeustHnvsMc444wxmzpzZo0pKSoK1rtacD29ZaayMtnG3Gdc1a+TtrST37jRVZdeKX9n24zK8pSUoig6DxVKnbHjt/pKQ348WUVESDGiaRjjgx2C2oBHtPzGYLQQcDnx2e4vOT0P9M36HnYp1uYT9PrRImKQBgwi53VQVFaEzGrCkpRP2+YgEAwBEAn5s/Qbg2bmdDe+91egasbXFa7Z6a9c9HDp0H55//kWGDBkqJcw7WJdObHSXoBTP9R26s464YDoL8tnw7pt4S3dhSk7Fkp6Ooje06MtBSs5gNFUl4HIRdLvRGUygquz65WeMiYno9AZ0Bj3mlFSSBmUTsNtJHzGSsM9H3uJ36iy8pISDOLfvQNHrScjMIOhy4qusJBLwk9i3HymDh2BJjc5scu/YjrNga3SNDFeYXStXYElNJ3nQIGx9+2HNzMJbWkr6iH3JGDX6z7UvPBFUf4C0ESMxJyWhhkIk9M5CbzbjrSijqrgQU3JqLIFSY09BIWPkKCo35VGxPpekgdkYrdYGO/faIiFYOyG1a/s2SsvLOfrscxl47Amk5AyWpIbo8brrNPXOSAY5dD7vv/8OpaWl3HTTRAAyMzPJzMyMc6uEEF1RaztLRPypqsqzzz7DwIEDOffcC4BoJ5boWsrKynj00Ufp378/l112GevWravz/KBBg0hPT49T69qXJFjrau352Nsg2kgggH3TRnLfeBU0FXR6kgdlM/T0s0gdMrTe9s6CfDZ9tJjty38g4vdjtNmwpGWgt1goW7MS+8Y8hp1zPgOOOjY2GApFAZ1CyOtBDQajCQ1VQ921A4PZgs5sQmcwkNCCMms1avfPJA4YhDM/n6DHjaLTYUpMJDVnMJUbN6AY9KiRCN7yMrRItGyVGg4DCv7KclIGD8Zvt8fWiE0alE3ZmlXY+vRFbzTFBu/Gc7Z6cwdGB4NBHnnkQc4442wOO+xwAA5owcwY0XpdNrHR3YJSzQLK3UVn6BBr7/Iemqqy6aPFlP6xGkVRcO/cVS/xULys6V8OnAX5sQRF8oABhAMBqrYXE/b5UENBrJl90BlNeEp24d61g14jRzPgqGMp/v5bPLt2YuvTF03VYkEmZfAQnPlbsaSmMeJvf8dVXMzmjxdjy+qLqdZC4pV5G4j4/OiMRlRVJeRxE3Q6ce8oJqn/QKx9+uCvrMBVmE/K4KFkjB6Dv6IcT0kJCelpjB5/FYpOx6aPFlOy6neCLhdqKEQkECChl7HB97p7UKidZAh5PPjtlfgqK0hIy8CSlkb6iJEMOOpY9GYz9i2bMVqtJA/KZvRlE+otdu4tK41t09jnrvbojKKKCpav+BWDppG69Bs8pSU9brSKELuTaeodTwY5dA6RSISnnnqMV1/9DwB/+cthkugWQrRKZy27IZrG5/MxdeoUvvzyc4xGI4cc8hf69x8Q72aJFvj222/x+/1s376dyy67rN7zjz76KBdccEEcWtb+JMFaV2vPx54G0foddsrWriHgdKIzGav7RoI4Nm+ibPVK9ptwDQOOOia2fc1g2dI/VoOmYevbDy0SwVO6C9e2InQGAxG/H0fBVrJP/iv9jzgax9bNlP2xBjUcRg0EQFHQGQwoaKBB0OtBtdtJ22c4vUaPafb5aah/xl2yi1BVFabExGiVjuwcdHoDkUAAW5+++MrLCDqdoNOh6PUoej0AAYeTHct/ILH6fZWsXEHAYadq+zYcWzZjsNpISM/AmpVFxO+P22z15gyMrqys4I47buX3339j6dL/8dln/8Nms3Voe8WfumxioycHpc6us3SINbW8B0TX42huR9KuFb+yffkPoGmYU1LRGQyo4TC+inKCHjcpOUOa9OVAU1XcO3ew8YP38ZbsJG3EKBRFwb55Ezq9nqTsHHylu/A77ZiSktGbLajBABiiM0OKlvwPNRTEU7ILnT6aWEkfOhRDYnI0IBcVouh09PvLYdg3baAybwMGq5WQ203FhvWE/T7Q6wn5vNF6jEYTmhFUnxdnUQE+pwNLShqWXr3xlOxE0ekxmM30OfgQBhx1LIaEBOybN+GzV2JJSyd18FBQFCrW5xKsqqJ83Vp6jdovNkMEqFdGq/YU0ITMLHzl5VRtKwKdjpxTT8PaK5NtP3y3x8+UsyCfdW++ttfPXc3oDL/dzuqiQtZviCZFh4wcxfDDj8RdVNijRqsIsTuZph4/3W2QQ1fjdldx99138t13SwG4+ebbGDv2kPg2SgjR5XXWshti70pLS7ntthvJzV2L0WjkgQf+JUmNLuzCCy/kwgsvjHcz4kISrHW19nw0NohW0zRcBQX4KytBrxD2+TElJmJKTCISCuEtK+WPVxaS2LcfqUOGxvomvKW7UBQl2q+k1xMOBQm63YS9XhS9Dp3RiLe0lILPP8U5YjM5p5yOY8tmjAkJBIJBUBQ0RUckFCYSCoMCOr2exP4DmtynUTM4uaRoCxs++ICQ348tsw/pI/Yl4vdTmZdL2O0mbZ8RJA0YiKIo+CorUcMRTCkp+B120OkwWK1o4TBoGig6VCUCqoqvtJSAw0Hum6+h0+lIzs4mUGkn6HFTta0YX3kZ/Y44kn3OuaBN7zWbOui6qQOjd1ZVcdvV49m2bRuJiYk8+ugTbZrU6AyDxLuaLpvY6MlBqTNrqw6xtvpj3lt5D4DcN15pdhJGU1W2/biMiN+PrW8/dNXZaL3JhM6YRsBhx1uyC3NqGiGvt9H3U5MEqtiwLppwsFiIBEMk9OpNwOnAaEuM7rNvf0IeN0n9BhB0OfGHQpSs+JXS338j5PVi69MHU2JSdWKlgjKfl7SRozAlJccCck2ix755E8XfLSESCOB32NHp9ER8XtBAX136SQ0G0FQVNI2wx4O/ohyjzYrRaiUhoxcDjjqGhIxebPvhO5wF+dg3bYy2r/9AjDYb5pRUfGWl+CrKCft8uAoLMKek1pteaO2dybo3X4tNAQ04Hdg3byLgdBAJhfGWlPDHf17AmJiEFg5jzexD4sAs1IC/zmcKaPLnzlOyi/JNG1m+ZhVFu3YCCkcccSQHHHBQjxytIkRtzZmWLaLky2f3sH37Nm699UY2bdqI2Wzm4YdnctppZ8S7WUKIbqC9Z5GLltlb/F63LpeJE2+grKyU1NRUZs2ayyGH/CWOLRai5STBWldrz0djg2h95WVUbS9GUUBvsmBJS4td8w1mMwm9M/FXlLP1/z7hoBtvjc0cMSWnVlcAia6X4Ssvj/bR6JRoP43JjBoKoaoRytfl4iouIuLzEQmF0FssqMEQWjiERnTGicFqo9eYA1CgSf0aNf1SZX+soTx3DSGfD73RSNW2bST27UtKzmDS9tkXz64SPLt2kjRgIAB6oxGdQU/Y60UNBFF0uj+TGno9qCoKoDOaiKgRwlUu7HkbsGT0Ak1F0ekxJSWT2H8AYU9VdGBv9b7bQnMGXTdlYHSZLZF7J4zD7XYzYMBA5s2bz5Ahw4CGY0p7tlf8qcsmNkTHaE6HTVvVbWzrP+bGynu4igpZ/+6b0QRESirm9HR0en2TkjCekl14S0sw2mzRGoLViQ2IBhKjLRG/vQJTcjK+ijK2/t+nuIoKQY1gSk4hJWcwqUOGsX359wQcDgyWBPQWCwarFV9FOZ6SXUSCQRIyTGiaFp1+GAjgLMyPBipbIkGXE0VfXcuwrAwAU1Iy5tRUQi4HrsJCUoYMrROQNVUl7IsGHTUUBi3WajQdhD2e6oRG3ferhsJU7dhO2rB9cBbk496xLTq6QVWji2UpYEpJxVdZQcjrIWPUaJKzcwh5PAQ9bnwVZdGpmAZDndky3rLS2BTQgNNB+bq11TUlEzHaDPid0VJZiqLDnJGB316JOSW6bkdNqa3i75agQZM/d4WbN/HjsqVsc7sxGo2cfPJfyan1e+5po1WEqK0507JtiTnxaWQnUBMb7Zs3UfbHKnwVFajBoHz57KJWrfqd22+/mcrKSnr16s2cOc8yZswB8W6WEKIFOmOyuamzyOPdzp5kb/ebX3/9BVOm3EUg4GfIkKE888zzDJJBHaILkwRrXW1xPhoaRBsJ+NGbzehMJszJKfXup/RGIzqTKXY/VTNzxJKejs6gj657qmkE3VWx8lJaJIIaDqEABqsVv8OBMz8/Wl5cA6PVBlaI+H2g6DAlJ2OwJJDYpw8Bu32v/Ro1g5MdWzbjzN9KyOuJDnANhwn7/dXrtVaQPnwkpuQUPLt2EHC5sKSkYExMxJySStWO7aiRMDqTiUgwGG13MISmRkBRCPt9qKEQaNE4rakq5uRkwl4P7u3FaMUqhgQr3rIlaCgMO/OcVt9LtWTQ9Z4GRq92OnnswftRVZWDDz6UWbOeIS0tPXasmtfUjin7nHoK5qymzfKTqgktJ4kN0ajmJhjaom5jQ3/MYZ+X0tUrqdyUxz5nn0+fgw9t9hf/3ct71KyPUb5mNeh0dco4xdbH+G4JOqORsN9f78Yo5PWiKDosadHOdp3RWHeBbL2ekMeHGo6weuHz+Cui2+jNJoJuN/7KSrYt+xajLZFe+40h5HajNxhQg0HCgQBBpwM1HI6ed5MJNRIh5I4u0mRISCDo8xH2+TAkWACNkMeNOxTEnOrFkpoaTaw47OiKC8k84CCsvTPZ8fNy1vznBbwlO9EnWNFhQGc0YEiwoapqdJZGJFI9ZVCJ/h9QTCa0SAR/eRnlPl80WVNWhk6vJ+uQvxAJBVHDESyJSWC1EnBEkyq99z+AjFGjcebn4965naptRSSkZ9RZDNe+ZTORQACd2YJ98yYifj/m1OiohrDfR8DhRI1EMJgNoKroTOZYqa9eo/bDmplFRd56ABL79G3S587p9eD2+Ui12TjlzHPIyOhV5zU9bbSKELXJNPW9q4mN5blrceRvqZ5NlkXqkGEYLGb58tkFFRcXUVlZyYgR+zJv3nyyeshNvRDdTWce6bi3WeTxbl9PYs/futfOo40bNxII+DnqqKN5/PHZJCUlx7vZQrRKT02wNpbsbqvzsfsg2pC7itw3XsVVVIjOUL+7VQ2H0RlNhLw+KvI2kJCWhs5kQtEbolUvKspBFx28+mdSIxz9t16Pt7yMsNeHFg4R8vvRImHUSBi9wRiduRGOoEVUtOr+o731a9QMTnZv346zuJCwzxd9ombgbiRC2OfFs307frsdo81GyONh588/0mu//bFl9SGhdyZV24pQNDDarPiDQVR/AJTo507R66PrgNScg2AQ945tBF2J0cXOI9EZHmokgl5vwLF5Ixvee6vF91KxUu8fvo9n107SR45CV/17bMqg64YGRlszs3hj6t2oqsp5513AAw88hNEYXU92TwmJ3IpShp538V7fR1sNEu+pJLEhGtSSbGFTOsS8ZaU4CwsbHEXV0B+z32HHVViA3+Eg6HJSta2Y7ONPYuCxJ7TqBmDXil/ZsfxHQMOUnFJrfYwKQh4Pll69KVz6Pyry1qPT6evdGBmtVgwWC4YEC2Gfl4DDgdFmi+0n4HKi6HVUFRcS9nkxpaah0+nQNI2Ay0XQ4ybodJHYPxowjImJ6M1mXEVFoFPQJySgeb2ooWAsY45OF50uGQ4T9rhB0wiGgrEkRCQYJOB0EPZ4MKekEPJ6SB40iJTBQ/n58UfY8fNPBFwu9GYTit6I0WYl6HLhryyPJjRUtf6JUpRYSSotEkENhdBUFTUcIuz3s/Pn5RhtNiKBAKBhSUvHaLMRcNoJud1YUtNQhhkwJSexzznnkzwop87vvGYKqL+iIlZ6q6ZcVcDhQA0FUfR6dGYLkWAABTCnRkt9uQoLSBqUg6+iorpGY8Ofh907Yo845TTKl/9AgtdDenpGnW174mgVIWqTaep79mdstBNwOtAZDBhTUglWVVGZt56MUaP/nE22TL58dhVnn30eOp2eE044CWsP/WwL0dV1hZGOjc0ilzjRcTRVpWDJN3vtPLrxhpvp168fZ511LoYGOieF6Iq6Y4K1duIikpGCLjkjdk3dW7K79vlwFuRTVVyEolNIzs5hyGlnNfl81B5Eq6kqydk5OLZsJhIKYTCb/2yrpuF32NEiYdw+L1s//RBTcgp+eyV+u52kQdkEPW78dnuso18LhQAFncmA0ZYY7Y8JBaPHVRQUQ/Xi5FowOiA0wULY70VvNhFwOsg84KA99mvUJHY8ZaWE3Z5o6StViV4bFSVayCMSiSYfAn4SevVGUUDRKZTn/kGgep3VgceeSMWGdVTt3FF9UgCdDhQlOlNj999bOEzAbgdFQdHr0RSFcCCAyWbDnJZOwOFo0b2UsyCf4u+WULJ6JY7NmzAkRMt0JefkxNZ83dug68aSYdOnP8KRRx7NWWed++eaKntJSHiKC5r0PtpikHhPJlFa1NPSbOHeOsQ8Jbuo2l7M5o8XN5gscO/aWeeP2e+wU7EuNzpjwmZDbzYR9nop+2MVntKSVmVwt/2wjLDf18D6GEa8ZaV4yktRUEgdPBRbn771boySB2XHpi6m7zuKqqJCAk4HIU8ETYtOrdNbrQSdTnR6Pf6KcjRVQ1EUdAZjNOtevSBUsKoKgJDXRyQUrUuIpqEChMOxxAKqSshdVTcBoWmxmRVoWrTOIj6C7ir0lgQCVVWsXjAP965dqOEQqBpqOEKwykXQU4UWClUHy91P0p/7JByO/giEA360ivJom3RKdLaGKxwdEeD1EPJ6SEjPQK1JgmgavrJSMkaOou+hh9e7mNdMAS35/TcioTBGW/SSpAaDhPw+FEWHTq+P1mqMRNBUtTqAG3AUbMW9a2d0IXVFh7ZyBWn7DK+zSHn0vHrI27yJ9LJS0oYOQ9HpOO7Ka9nw3ls9arSKEE0h09QbVzs2JvTKpGpbMabEJPQmE3qTqdZstVT58tnJeb1eZs9+guuvv5levaKz9s488+w4t0oI0VJdaaTj7rPIRcfylOzCUZBfr/PI5/Py66+/cMj+B+IqLMBbWsJ55/0tji0Von10pwTr7okLky0BW/9BsbVUm5LsTskZjKaq0cGnbjeaGsFXUcG2H75D0ema3d+k6HQMPf0sylavxFtWSkLvTPTGaP+P32En5PGgKApJAwaSus8I1IAff2Ul3vISAFJyhqDoCvFXVsaSGnqLGaPVhqKvXhu1mhoMgE6HpkbQIhoo0TJWiqKghiPYsvrstV/DvnkTFRvW4SkpQYuEiU6zAC2iVic5qvueNC06gNfpICU7h1777Y89bz1JAwYy6LiTMCYm0vcvh7Purdcpz/0DncGAPsFKyO0GLdz4CdO06JocNX1goRCuwgJSBg9p9r2UsyCfNf95AUf+FsI+PyGvFzUcJuTZjN9eSeZBY2N9RY1VIaj9mXLZKynavp0jzjiLQdUDq88++7w629dOSAAEq6pQQyF0RiPGxMRoCfwmvA+pmtA6ktgQ9bQ0W7inDjGfvZKyNavQWyzYsvpiSKgfWMxGXeyPWdM0XIUFhP1+zKnVi06rKmHFR0Jm3xZncGven7es4fUxANRQiLDXi7VXJubkFHR6fb0bo9GXTYhNXQzY7aQMGUbAYcdZsDWaYdfpCLicRPx+dEYTRpsNFDW6qFKoCtCitQVLdlHy+2+E/D58ZaWxUlCR2AnXRbPdSnVQ0XZb/KIhen11OSkoX7M6ml2vzrgTiSYhVIWm7Ws3WihMRNPQahIqej1oYLDZCHu9BBzO6kx7It7KMpyFWzGnppMxclSD+6uZAurM34KzqBBvRfX7DwWJ+P0YrDYMOgvhQDCW4Aj7ffjtlYS9PvQGI0kDBhEJhfDs2kkkGKTX6P1iASsQ8PPDl5+TW1LC+9On8sGHn2M2m9tltEpnrOksRHP11GnqTVE7NoYD0RJ8NcnY6NpKf85WM1it8uWzkyopKeHWW29g/fp1bNq0kZdeeq3edx3Rvaiqyttvv82iRYvYtm0b6enpnHTSSdx2220kJtYfiCO6HhnpKJqqpvPInJEZe6yiooLPP/+YqqoqIuEwY4cMlfgturXukGBtaJaeEg5SmbcB966dGMzmJiW7XUWF5C1+h4DDQfKAAW0y2y91yFD2m3ANf7y8EH9FOTqTCZ3RhBYJV8ekTNL2GY7eYEBviJYmL1/7B9EFKDRsmVn4K8vxlpejN5owWm3o9HoioRDhYM2gVCU6cFYHuurECZEIasCPzmwm68CDGHnRuDpt372/IuzzUbjkKwJOV7TPKLpV9XqrGn92SlWLRAi73UT8PkJVLsypaZSuWYW3rJSIz4/PURkdtKuBGgkTcTkhUr2TWKlzJfY+66gpg643EHS7qCouwmi14SoqaFK/Sk2p+YoNuegMRkyJidE1R3Q61HAYb3kZlXkb6PuXw6NlzxuoQlD7M+VSVf7383LUQADzl5/jbWRgdU1MCfsD2DdvIuB0xMqGmVNSSRucQyQY3GtMkaoJrSOJDVFPS7OFjXWIhbxeylatBAUyDzgousgR9QPLyDPPiP0xa6pWXZrozwSJGg6j0+sxmEwYWnGDEvJ6UXQ6LGnp1etjpP15jGCQSDAYXYQpMRFjrRve3W+ManeOl+euxZm/JbrWRHoG4WAQf3lZtJM+HEYNh/6ceQGxmRZhnw/3zu0oSnRGQvWBQNOiU/JUFRQ9BquVcJWraW8wEgGdjojPVydgKEYTWk1AaX5Oo3on1e2rbqvOaESrroWoJFgJ+byE3W7CXh8BlwudXoc5OZW899+hYsO6BpMGKTmD6bXfAWz/8XtCHk+d53QGA+ZevQn7y6MZfE0jYLcTCQRQ9DqMiYmkDB4SfduhIL6Kcspz15I2fASeqip++2EZZW43hYqef0y+C3OtqaBtOVqlM9d0FqK5uuM09eZqKFFZOzZqqhZb4E9vMgHR61XIG52tJl8+O6e1a//gtttuoqyslLS0NG69dZIkNXqAhQsXMnv2bK655hqOOOII8vPzmTNnDps2beKll16Sz0A3ICMd904G4ETt3nlUWFjAV199QSgUJDk5hf1G7IteQeK3EJ1YQ7P0NE1D01RMKalUFeUTdHvIOujgPSa73Tt3tNtsv/5HHIXOYKDgf1/iLd2FGlEJ+7xYs7JI6j8Qnd4Qm12hKAopg4cQcDrY55zzMSYmUZ77B2v+80L1eqah6H+RCKCBTh/tMtLp0BmM0bVI9Xo0RYcWDpHQqxfDz78IvdkcrXih0+HYuoUtn3+Cq6gQ1AimpOTqGSReFJ0CatM6iBSDAb/DQcnK39E0lbDHgy0zE7/TTtjnJRIKgk7BkGAj7PPV7ePaS1+UzmgCTSPgcOK32zFZbWz66L9Ubszb6z2oe+cOSlb9Xr0ObnRB75C7ipDPi8Fiqe5320mwqgpTUlK9KgS1P1PbvF5++OE7VFUlK6sP+/zlCAKlJRR9t4Sc3dbgNVqtREIhyteuQY1EMNpsGGuVuQ+6nFiz+u41pkjVhNaRxIaopzXZwoY6xNRIGMVooPfIA0movsjUqB1YQIn9MZtTU6MXhuqappoWXSA7IaMXxsRENFWN3qC43bh37qj3Jb1mwSBXcTGKopE0YBCJffuh6HTR9THMFvR9+hDyeQk47BhtiegMBsKBQHSWhclI8sBB9QLh7jdGKTmDSRowkJXz5xEJ+DGnpWPflIe/rKROUiFW7kmnQ9Hp0dRILLkRCQarN9JqzbZQotPxIhFQI0T8/hb9LmuOiapG29AG9+5a9XREncEQnTaoaYR83mjpqXD17BA0DBYLCRkZRAIBPDt3RP/fwKiHbT8sY/3bbxAOBqPvvybohUKEPB7UcJiEjF6Yk1Oia5NUVYGmYU5Lo/f+B8ZmZ6QMzCbodOAqKsS1czuVVVWEgkHKbDaemruA/fYbU++97Gm0Ss0NoF8NEdYZG70B7Ao1nYVoru40Tb25GktUZowcFYuNxsTE2AJ/NcnxmuS7YjDIl89O6MsvP+fee+8mEPAzbNg+PPPM8wwYMDDezRLtTFVVXnjhBf7+979z5513AnDkkUeSlpbGHXfcwdq1axkzpv73A9G1dOWRjh2RcJABOH+yZfUhNWcwJWtzKXRtZPlPP6JpGv369efUU08jsHMnyRK/hejUdp+lV7Mua7DKSSQYJhL0E3BVkZIzODaotraaPh1XcXG7zParfc0NB/zVa2NEZ0REgiEcWzbjKszHnJJKcnYO5pTUaKkqeyVhv4/eYw7AaLWy/cfvCTgdBFzO6IwMQKc3oIai62mgqtE1XkMhNDW6JiqKgr+ykhVzZ5HYpy/J2TkYE5PI//yT6NqkRiN6swlvZWVsIK5iMKAzmVADe+5zUgyGWF+b31EJERVLr954SsvwV5QTCYWIBAKowWB0sfDdY5nGHqqGRJMe4YAfrTpRY+nVG1tWnyb1q7iKCvDbKzElJaMGg+hMJsypqdFKIAE/ikFPJODHW7ILX3lZvSoENWUK1xUWsHrDOgCGDduHE044GYPBQJXLSdHS/1GxYR1aMISi15GcnUPOKacTCQYIuJzY+vWPLVKuN5mi94Q7d2BOS8faO7PBdsfevVRNaBVJbIh6Wpst3L1DzFdeyuZPPsSW2fD2NYEl7PMx4KhjceRvwbF1M5FgkHAggE6vJ+RxY7BYSM7OQVEUQj4fkWCQ/K8+j2ZCnc7YxaX3mAMpWfkbJat+J+iKznIwJSeTdeBY9jnngjrrY2TsO/rP9TG8kei0MYMBW59+JPbrX6+tDd0YectKCdgrSRk8lPLcNXhLS/5MVuxOVf+cNQEo1TMeUNXqBISGotf9WWswetJjC0Q1mU4XWxvjT62YqRHbRTTpouh0GBKshP0+VFVFCYbQNDX6nNEI4Qha9RQ8Y/XiT5oawW+31xn1oIbDsYV4jQlWFIMBNRBAjYRRiSaEIoEg+oQEMg8+FFfBVgIOO6akZDJG/Vlyyu+wU7WtGL3ZQsTkY0NFJX41Qu/kFK4+9gQGNrPURO0vI0RCoDc2eAPYlWo6C9Fc3WGaenPtMVG5ayem5GQ8JSWkDB5CcnYOQY+bgMOOwWoj5HFjTk6J1tNNS5Mvn52EpmksWPAsc+c+DcDRRx/L44/PIjExKc4tEx3B7XZz7rnncvrpp9d5fMiQ6GzP4uJiSWx0A111pGNHJBxkAE5dik7HgKOP5esP/suu/K0YNY2hI/bl8EMOxb9zp3QeCdEF1J6l53fYKV+3lojfjzkpCUOCnqBbj6+ikooN6zAlJdVbg7OmT0dRtAZn+2maRsjtJuz3E3A6o+tENKChxLSrqLDONddq6YOntLr8uKsKvdmMpTqR4asox1dZgdFqJeRxE/YH2PjhYnb+9iu999ufpIGD0On1pI/YNzqAymCgPPcPHAX5KDo9Cgphv+/PgbFKtJSTpmn47XZsfftS8vsKKjfloWkaCRm9MJhNoOgIOOyEfD5Aw5SUjLVXL9w7doCmNvheaxYSVxSFYFVVtKy6GsFfWUHQ7YZIuM62aNqfZajgz/6uxmZrGKIJm9i5BbRIGDUcJmXwkD32qzgL8in85n+EqtxE/AECRgMGswVzairW3pkEHI7oehuRMCGvhz6H/KVenHWVl7Hipx/JK42udXLooYdx8MGHxhJnzvwt+MrKo11qaoRIMIh98yZ2/vIzOpMJU3IyQacjNmA6uraHG3NKCnqTGW9Z6V7vq6VqQstJYkPU0xbZwtodYjUzJPY2ispbWcGOVasJe33Vi2q7CDgcWNLTsWVmkZydgyU1DU3TcBbkE3S7CAf8RPx+Ql4PkWCQig3r2fzJR+gMBkw2W3QamgJBl4ttP3yHr6KC/a+6ru76GEOHoYUj0dkATgemxERMtvodHo3dGNUEVjUcomrnDtRwJJrJrpXAqKO6VBSKDp3RRCQcnf1hsFiIhEJ/TtdrjdoLjKuNBKemUnTUqYMYDqNBbKFznaKg6PWogQA6kxlVjYAhOisl4HBizbJU1553YOvTt86oh/LcP3AVFqDo9dHak3o9+upkj6Zp1fUK/QTslZT/sYqA04mmaaihMM6tm/FXlJM0KJuqokLCfh86oxGP10dQjZCZM5jjTzgZ99ZNbPrwfUZceEls1s6e7H4DaElKxF/lbvAGUGo6C9F9NCVRac3MwpSSEvs5fcS+OLduwVtais4QraWaMXJf+fLZiXi9Xj755CMAxo+fwJ133o3BIF9/e4rk5GSmTp1a7/Gvv/4agGHDhnV0k0Q76IojHTsi4bC3uObYuoUtn33E4FNOjy1yuvs56o4lrMJJiXy5YwdZEZVjxuxP9oCBhN1u6TwSoouomaUX9vmiiWG/H3NqGnq9jkgkOthSbzETdLlw5G8l68Cxsetf7T6dpAGD6s32q5n9EXA6CPsDaGqE/K8+R2c01rk21CSmnQX5BF1O0OlJHjgILRKpVyLLV1qK3pxAxBQgUFmBzmRCUTU0wFdaAgYDluQULOnp+Csrseflse3bJVj79I2uZ+HzkZIzGENCAsZEG1oohIr2ZwlzJTqLQlGUaJ+KTlc9O6GEgMtJyF2FYjBEZ5rrdRjMFgxWG9jtqJEIkWB0jVSjzUooEICaaiO1aRqEw9HqGTV9Q4pCMBKpm9So2bYhDfVLKToUoyE2IyX6mIIxMYlIMETFulzS9x2F0WajfO0ayv5YTe8xB8TiUE0s9dsr0CdY0MIRFL2BsM9HJBTC2rs3CZlZUFqCOTWVMVdeS+8xB+AtK8W+ZXMsru2qtFNSWYFFb+DoE09m2LB9Yp+X6OfBiRYJE/Z5MaekYkpMiq7zunMHWiRC1iGHEnQ6YwOmdXo9CRm9SM3JwWd3NLkUZk+umtAacmcnGtTSbGFDX36bMorKmplF/tdf4qmwk9S/PylDhuIs2Er52j8Iez0YEm0YE5MIut14S3cRcleh0xkIulxEAoFoLTtbIm5/gLDXgaLXk9A7E4PFAoC+lxm/vRJH/haKv1vC6PFX1nl/kWAQvclE5gEHkTpkGNuXf7/HGyMgVgIr5K5CZzLhLS8n4vej1brQN3pR1wBFiy5oVL1N2O+PnhtNa/x1TdXaZEZtCtHkRk27qtsW8fnqbRpRQiiaht6SgN5sIez3EXK7qxf9DsTW/qi5sPvsdtRQKFpbstbFWtHrqw+rQ42EMSUmozOZsWZmYbQlEqxyoTOZo6McHNGFxLVIhJDHQ6rNypikJDJS06hYtYKQx40jPx9PaQkZI0ft9fNbvKzuDaBOr8fYyAwMqeksRPfRlERl0OVk8F/PoGLDuljsSOzXn95jDqD3mANIG7aPfPnsZGw2G/PmLeC3337hggsuindzRCewevVqFixYwAknnMDw4cPj3RzRRrrSSMeOmvG7p7gWcDrwV1Zg35SHM39rrCRK7XPVXUtY9e3bj+lPP4vDbufQfUdJ55EQXUxN/1LZmpX4q8uK1ywI7bXbCbpc0fVKtQiOTRsxJyeTkjOkXp9OYt9+dfqpAk5HbPaHwWpDCYUwJtqo3JiHr/xFRo+/itQhQ2Od6e4dOwj7vNFBtoEg9o3riYRC9BpzQOyaG3K7CTgd6E1GFL2eoMtNKH8roEQrXlSvraomRBfzRtOwZGQQ8rhRw0EMNhvBKhfuHdtRQyE8u3ZhtEXXdYgEgxBR0apX+daAiMdDRKdD0zQqN21EC4equ540dEZj7DxFQkH0ZhORqirU6pLlOqMRk95A0OOuW/3DYIgOztW0ujM6qpMdMYpCtKSUWvexxvq2dDr0JlN0fZRaDytGE7Y+fTBYEvCWlbLz55/QWyyE3FXkLnqN3vutYuAxx5M8KDsWS9NHjiJY5cJVVIgaCqIzGFFDIXyVldE+QUWh32FHYE5JZd2br9WLa0OOOpa/nHo6enslg4b+Oegl5Hbjs0fXD1H0OiwZvWLlpgxmM5aMXri3FePesZ1+hx9F2OMhEgqhNxqj6/UG/QSbWQqzJ1ZNaC1JbIhGNTdbuKcvv3saRWVOSQE0Ak5n7Mu932En7PFgTEzEX1FO6crfcRcXk9hvAMmDsomEwgRdTiKBAObUVBRFqa7nF+0811SVgD16EdNCIVRVRW8yEwkGqMhbH1v8e/f3Z+2dibesFDUcZvtPP1K1rRg0DVNycuzGCCD3jVdw5m/FW1ZKOBAg7PNGZxgEg3Wn3DVGU+tPw1PVVleKahe1FzyvWf+iscRJ9WwOnT76Owj7vHjKSqrnEqrYN+ZhrU441SSG0OvRIuHoKAO9vs7u1Ej4z9r1Oh0Z+44m4HRQsS6XsNeLwWqjatdOgk5HdFF5SwLWrCy0cJiq4kIAEjKzMFgUDJaEvY6Ca+4MjK5c01kIUVdTE5WW9AxGXzZBRtJ0Yhs35rFu3VrOO+9vAAwalM2gQdlxbpXoDFasWMGNN97IgAEDePTRR5v12oQEU6uObTTqsVpbt4+eoqXnyjpqBH1G7oN7105CHi9Gm5XEPn073fW5asd2PNuLSOnfD5Op/u14Sv9+eLYXoboqSGqgNO7uGjtffjUEkRCWpER0tb5j++x27BvWEfL50BsMJPftiyEhAdeWjWypKGX0uMsA2PLBO/gdDmxZfWL3brW3SRs8pBVnoWP9+OMPBAJ+TjjhJIxGPUcddUS8m9QlyHVLdEY1s/TsG/MIulzoTeZoCfSyUsJ+P3qzGWtWFmowhKdkF5V5G4j4A1jS0uolu//sp9qCr6KCsM+H0ZZIwOlADQaj6z74/FQVF+N3zGLszbezffn3uHfswO+0owYCGG2JmBKTCFRVEdheTMX6dVh79SYhLZ1IKBQto+73R9fCgOrBrET7VBQFTdUIe6Md59beWbEFxUMeD0n9B+GtXl/UYDSh6MCadSg7f/0Zz84dNFjbSdNQA8E6i41DdXLDYEDT6aLVNgxGUHSowSAa0XYEq6pA3a0/S1WbNvBW0xpY01Wp1caanxXQ69AbTajhMFq47gwRg8Vc3b/nJ+zzogaDJJgzY2XFavp0Bh13YqzvRqfTkT5iX0JeL4HqwbOaphJyuzEYTWSM3JfUwcNY/Z8FBBx2rL2z2OFwkJqeTrh6f4ecenq9Ac4Bl5OAw46maVhrJTVqGG029GYz3rLo+r/m5ORap0PDU7KL5KHDW1wKszvOmmwPktgQe9TUbGHt6dTWzCy0SJig203ZmpV4du1k5EXjGh1FlTFyFPlffBb9I61OalSsyyXs92NOSsaYaCPodGFMTMJoTaDX6DE4t24h5PVgtP05AyRa5y86BU9DIejxoBYXoUaiC1wr1Rd0f2VlbAR9zfvTVJVdK35l/TuLcObn46soIxIIoDMYSMjoTXLOYAYcdSwAG957C8eWzbh3bCfgclWXjmrmLIuaYIYWXVBcr48txN1majrma/7f1FkcseSFRux9aaAYDeiMJjQ1grqXxcxDXh+KPoCmquh1elBV9BYrvopy1HCIvPfeJljlIuTzoWkqYb8/egyrtc400bA3mhjQJ1iio9YUBUtqGhmjRuMqLMC+cwdV9kqMWnScgi01FS0cwe9wRNf7UHSEqqowJSVjTk7BmJjY6Cg4TVVxFRVE61zabGiattfF45tU03n4CDRVrTPVUYKR6Ok645e05iQqa8fGzvheerKlS7/h7rsn4/f76dOnH4cfLp1XIuqzzz5jypQp5OTksHDhQtLS0vb+olp8vmCrvqZZrSa83maumdZDNedcxa7BbjchrweD1YYpMRFb34EoOh0+/+5rzsWfq8JJ0OPDnJFJKFR/QJRmMBH0+nFVONGn9t7r/hIsBsryi+rFobDOCHoj/io3xuq4pmkalVu2EPT6MFitqMEAmt6IYk7ANjAHZ/5WNn3xJRrgLq+MDTqLqNTd5suvGH3ZhBbHu4ZiJ9CqeNpYPH777UU8+uhDmM1m3nzzPfbbb5T8LTZRR163bDZzhxxHdA8pOYMZds75uLYXE/J6CLqcqKEQpuQULGmpGCwJRPRBrFl9sKSkkDxoUIOlqWtm+23+9CMqN+ah6PWE3FVEggH0JhOmpGR0BgMhnxdnQT4r5s1GC4UJ+bxE/H4saemxPgCjxYLBkkDY68GxaSOWQw9DZ4iWRVLDoeh6rjodpuQUtEgkujaFAigKoWAAJWAi7POh0+uJhMP4KysoX7sGDQ1XUSFGq430fffFkpaOzmDYQ3UQDTUcIjoNI5pM0DSqf44mVhSjETUYxGRNQDGaomveetwN9xk1pxrI7m2qs2aH9uf/Y/usfqxmZoeiQETFU1oCmkYkGAJFR9jvJ6lff6yZmUBmtE/nh+/wO+zoTCY0VcOckkrWQQfjrO5vjIRCqKEQ6aNGY0lJYd1br+ErL0PR6di1Lhe7z0eR3sBhp59BwOHAsXUzIy64mG0/fBfrs1QjYUxJSdVVYurfH2rhMKbkZCLBIM6CfFIGD0FTI7GZOin9+/8/e/8dJlt6lvfCvxUrdnV17p16h8l5hDQKKI4EtpGRQEIIY1kGLozhM5gDnwMYfM71XZePLQPnYD6wjjAIhQ+EB5AFSEISiqMJmqAwYefZofPuVDmt/L7fH++q6uq0d/funWZ23VxoZrqr1lpVvdb7vM9zP899X7YU5it1avJqoEds9LBrdI9TJwYGqJw7oxjuMEIzdBpLSxiJJK/+pV/ZtMu1MnmeyPNUJ1CkNOxC1+1MYuhCENk2/Ydvwa9WKBw/qiSNfB87Nv+UUnYIDCklUggiJyTyXHTDUMEmZsNbhRXcUhF5+AjNpUXKZ88w98SjLL3wPGGziQgDNMMgkR8AKeMJgWM0Fy5gZTLUZqbVNbuO8phIJIiiCHZi8C1XF3AzkQRDJ9xg9k1ssLSONLnYOF8XNMtCNwz19jBAto91qYmS9eeLRwTNZArNNHFLxUt/vDBAhqAnkkpqytBBU4y2X6+z+J1nGX/otaTHxpEiYvE7zyo2PgoxU2mkFEQtB83Q6T94CDOZwkytTj0k8wPMrqzwvZkZ9usapmGgCUHjwrwiuKJIyVkZJlHgkxkbx8pmt/S9aAeN4qkT1GamaS0vkRoaJnfwENbIcOe8m01gDN15N+WXTlM6dZzsgYNY8Rhpa3kJ3TBwK2WOfvyPe8HoGkEIwV/8xV/w53/+58zNzTE4OMg73vEOfvmXf5nsDk3ke7g6uFE3aZdjPnujfpbrhetJ8kgp+eQnP8bv/u5vI6Xkda97A3ffffc1OXcPNz7+5E/+hN/5nd/hta99LR/+8Ifp6+uZx78S0F6DC8eP0bgwT+g6mMkk2b37Gb7n3ht2Le7Wh0fKNbIVbZmQ7U78Vs6f4+hXv0Dh3CSICDvXT/+hwx2ZjvVxrV1sMdNpwlaT1NCwkstgdTq5ePokgJp2uQoecpvFTjvucm3LDO80nm52zOz+A3z5zEt88rN/A8Db3/4D7Nt3YMfX20MPPdyYGH/1Q0y87R0sfPtppBDYmTRGMt3xtgiaDVJDw/TfcquSp9L1Tfel/YcOc/gf/BDVyXNYmSzV6SmMKCI9MtpZA7V4sqH80unYa9TATKfRzTqGZaljWxZmKkXk+7jV8hrTcRkJJX9uWZ0CvqbrHTkqpCSoVal7qoFU+EoeKjk0gplK0VyYp1VYIXrRJ6irdXyDF2o3pGpS1XQLGYZolkXoupjJFHosVRW6Dn37DnDfz/wc3/vw7xE5sZpGGF5ZafPNICVR4KNb1urlK/9zQt8DT/mbaPG1Gpa5hkQykkmWvvttglaL+vwcZiLRkVQcvf9B/Hqd5vIibrFA2GpRXFrALRZB02k6DmEQkAbyqRSNc+foP3yE2vQUxtt/kINv/0HqczNIqdG3bx9nP/sZpr/+VaIgwEwkuj6CuseS+QESuX4S+TzLL3wPv1YDUKovRy5vsvFa+HC9ktAjNnrYNdryPUYqSfHkcSLXxcpksTLKBMirVph/6gn2veGN7HnodRs2wN2b+8BXr++exBBhiG4YSmpodAynWCA1PEzl3BmiIAAp8CoVQtdV5ttdZke6lVTBS0pVYI+D2dy3nqB48jiFE8epnD+LV6mArqFbdkyACPxKBasvh1Mt4lRK1GZnEEGAEBHC89AMUzHlGugi4rKWfikJfa9zjRuwmezTNtsFZRgidTXip6fTGKaJ32gQOq2dTYYIQRSESNFEt+1Ngpy2OnK4jhCRIkL4EZppIgyTUDrq76rr8VSkweBtd6DbNgvPPE3kufhRHQ0NK51m+O57mXj7D7Dw7NOdLmopJd/5zrN85zvPMqDrZMxETGxIpBRIoYK7DENkGKnOBF3v3E/rpy7WBo1x/Fodp7BMq7CC32xg3v8AZja3obDZnUAFzSZOuURjcRE72xcb3o/jlAq0lpd7wega4qMf/Si/93u/x8/+7M/yhje8gcnJSX7/93+fM2fO8LGPfWxDgt7DtcWNvEnbqfls5fw5jv/Zx3HLZdKj42QPjCE894b4LNcD14PkkULQWLiAU6vxkY/+D/7qS38HwI//+D/hP/yH/x3Lsq7KeXt4eeGRRx7ht3/7t3nnO9/Jb/3Wb2HbPVmVlyu6yVO3VGTm0a/RWFhQnaaei27ZRJ5PY+ECkedd8bX4SpG3mbFx7FyOhe88owpwkUA3DRL9efoOTNBaWqBv/8TqNPoW55h78nGOffJPcMtFNMPCSNj4jQZuudz57OvjWuA6+M0mNJtY6RR98UR0G+24h+SqeMhttg9oLS8y98RjoMHI/Q/SN3FwR3uDTY9Zq/L1v/yfLBRWGNJ1PvBL/xv/4l/8Qm8f2EMPryBous7EWx6mfPYlGnNz6LlchywOmg3MZFI1KqbSuIXCRdcsr1LGKRWpzc7gVSvopklLCBL5PACtlSVEGJDIDyoViigkqFXxqxUMO4FumZiJpDLvtkz8RovG0oKqPxk6URiAiBCRpiY1uhpzVfEepAYEoZq2iCLQdZyVZeUl6rogldR3K/5ZR5njIrUdGTfPyrgeFoRhRy3EsGwO/8MfIpkfQEZRJy+ToI7djj3bkVrv/FG214TbPq5oH1vT0C0L0OJpEzpS7e0m1/rcLHZO1WXKL53Cq1Sw+/sRgd+RffIbDXIHDlBfWFDG3iKiVVhBCnVfNH0fTUSYmoZtmugiohn/ney+Pk59+hH8Wm3VEH7iICP3PcjS88/hrCyTGhnFsCxEGBI0GxiJBGYqTXbfPiLXJT00RP7wLdjZLJph0lpe4tSnH9nRXuRa+XC9ktAjNnrYNYJWi9Bz8SoVItclkR9YZVJtm+TgEM2FC8x963HGX/3Qhoev3SVbO/cSRjaHiCIsU92a3Uy7lc0ihcAprHDgLQ9TPvOSWqxihlszTTTLVJMT7cVUSNBkLBeloZsWumVx4ekn6du7T7G41QqR76n3NJtqAdd1EAKvXounKhIkBgZxVpaV1qKmoRmrJuHycrUJNEW0dJMxa7CTILIecSIUea4KvGgIz708uasoRESoz74enamStYSH3ZfDTCax0hmMhI0II5oL8+iWjeY6yqQKcCtl/EqF1NAQfr2G3ZdD03WSg0PolsXCs0/jlku4pRL5O+/i0W98jbPnzpDSNO7oy2H6HgihiKUN0y3qH/XZGQaO3EJyYHBNF9xmQaP/8GFCp9UxPq+cP0ffkVtxlpc7hc3azPTaBCqRxG81ccslgmYT3U4QtM6jaTrD99x7VYJRT/5mI4QQ/PEf/zE/8RM/wb/5N/8GgO///u9nYGCAX/3VX+XYsWPcd9991/kqb168HDZp2zWfrZw/x3f/+3+jNj2NkUzilkudLqH+w0duiM9yLXE9CKvq1CSnn36chRMn+d6zT9Mql3hDMsFbf+pn+ae/+L/1ilc9ALCyssKHPvQh9u3bxwc+8AFOnDix5vcTExMMDg5ep6vrYTto73fKZ8+wcvR5nGKRyPOoX5hDhCFomirsE+/HNdBaqtjglstXbC2+kuRtbWYap1ggctVkuRVPoNfmZymdOY2dySIjydGP//GW56icP8fRT3wUp7CivOEM1VDm12uq2xWYffxR7vnAT3XiWuH4MWozU3gVZWRrWBb1memO1Cuo6WQzpQiNK+0ht9k+QDUOLXcMZJ3lZbLje7G2uTfY7JjVapUv/v0XKZdLjJoWv/Kj/5gf+dmf78WFHnp4GeJSOW//ocPc9q73UJ9TklQSDd0wOuoLyfwAfqNx0TWrOjXJ9KNfQwahIgLiepDXqOM7LXTTInI9JXM1OIhbKSNcBxk3T0opQDcIWi2kEFi5PkJXNTuJMCRoNFRZot1wGwUduW9o16oURLefhRCqwB5DMwxFeG9VO9r0C5Sg6VjJFFEYIMIIGU8JJvJ5KufPsfzCc3i1aqemZdi28qjY6dSGYUK0c/lHzTQ7qisyEoBETyYRnoeZSpPbfwAjmcSrVCieOolXKeNWKkgpEGFI5PtocZOyWy5TnZ6kbcoOyq/EbzYJggArJpIMy8IwTKRQx6hOT2Fl0oSup5ptmw1C16Fw7EXmn3yM8YdeT/HEMdxiEd22OjJlZipNds8eALxajcE771kTa9L5HIWXzuxoL7JT39ceesRGD1cA7QKxWy5hZbIbHj4ZRZjpDK3lpU0fvnaX7NnCEsXzSpZKFYdtwlazw7RrmqZM7mybwdvv4N6f+lm+/bu/hV+rxpMEEWYiifSVlh4aSlZKGOimSSKXxcrl8MolZCSoa1rM4sq1BklCbJhKCFstRBiuFvalRPg+QlOyVZdNbEiBDK7emF/U7kqIyZgr6uHRhtzcTCpotdBMA0vTMBJJIr+GRCMKfHA0MAxqc3MUTx5D+D5WXx9GMqVMx1stRW4MDBK2HLxKBb/VoFopM3PuLFld58GxMfRmC2mp8crOdEvbIyQmOYxEgsjzKJ89w9irH1ozdbFZ0GgXJ+szM3i1CrX5OYxMlqE77+6M9R//1Cc7CZRXrVA6fZLQdVUnXLNB0KjjVcpYWWU81k4W4eqN8N/M8jdtNBoNfuRHfoQf+qEfWvPzI/EI6OzsbI/YuI64npu0nRCB/YcOk5s4uOXrq1OTHPuzj1ObnsLuz2OlUogwxCkW8JsNhu++95p9FjOZBCB03etGcF4PwqpNpESNGgvlEmeLBdKWzT961QPscx1q01M39VrYwyq++c1v4rou8/PzfOADH9jw+w996EO8973vvQ5X1sN20C01VZk8hwxD0qNjZMb3IHwfv9HAq1UxrFX/IykEoedSn5slNTJyRdbiyyVvt/KRmH38UWQk2PO6N1CfmcarVggcp5Nv6MkkqbExEBFLz3+P0pnT3Pau93QaxKQQnP/S53FLRVIjo5iJBEJIDNtGtwbwKmXCWA++ubRI/6HDSCGoTp4jPTaOkUoTuQ5mOkNzaRGnVGTw9jtJj++hNjNFdt9+It+nfO4s/YeOYPf1rfHA20yacTvYbB/QlsZqa5d71QpBo9E556Xi6WbHPHHiGOVyiXQ6wxsffgdZ07zqBaBew1EPPVx5XCzn7d6rZ/fuY+Ktb6d04iiJ4TFM2+5I+11qzWrvY/1qlZEHX8Xid55FlEsIVE1BREoy0EylsVIpQqeFbhgIXVd1JHNVukkCUkSqaXN0jOG77gVd58JTT+DXa8jYx1TTddUcuxlBcbHpi502vcbNukiB34xlsYRqADDsBGOvfggzkWTphedW61y6rmTWt3E9G9AmNdrn3Q7iSQ0ZRer7jKW1ZBRh2Allzp1MKl8Q06A+M40QkfJnjes+urlKUESOqn8pr5UBnFKJ0POV5GNbAgwgCIji6RXdzuBXq2hIqnMzRM2mmqaJP4Nfr9FcWmL81Q/Rf/gWFWNdBzOZov/QYcZf/RBTX/nSFctxg1ZL3e9XYWrylYoesdHDrpEZGyc9MkbxxHHsXP+a36mJiyapoSG0mMXeCkYiid9o4NdquKUiRjpN3569DN5xlxqPWxeUpBD0TUzgFoqEnoduxAEiDBCJBBogolBp3uXzGHaCyHNpxNcQLLZUcDDNtcTGFth0WiGWPHpZ4GqQGhc5rgx8vFIJv1rFsG0VJD2vw6wvPPs0TmFZdQNoGnq1AihiITE4RHNhnvr8fKx0pcWGUAGvve12rMDH8H1EKoWVydBaWlwN9N1TG5pi7qWUtAoFyqdPkBnb05GTWR803EqZ2vQUXrXSCXSarrP3dd/PrT/8I2i6TmPhQieBAjZ4wmiapsi2eESxNj1Foj+/Ycz/So7w3yhSPtcbuVyO//gf/+OGn3/1q18F4NZbb73Wl9RDF67XJu1yiMBuc/BuSCGYeewbNBcWlRxhHHe6i0m16SmG7rmPaJefZbMiSW1menWapFzCLZcASOUHSQ4OXheC81oTVt1EyvDtt5E5cIhWEHLLrbcyMDB4003L9HBxvO997+N973vf9b6MHi4Dq/udckcWxOrP49fr+I26kp+Nix/YxJ2Z6p9mKk1Qr+MsLaHv2bvrtXj28Z2Tt1vFnqE77+6smVYmq7qJ63UKJ46qHEZI3MIKi88+rSR3AaSkPjfLwbe9gwNveRgjkaA2PYVu20qvfR10y8Ypl9Eti6DRQArB3JOPEfkBI/fej1etsPTcd2nFk+9R4OMUC+i6gWaa1OfniDyPyHGpTk6S3buX/iO3YCaSm0ozbheb7QNEEKyZ1g9a0ern5tJ7g82O+brXvQEhBA8++H2kkknqszNXtQDUazjqoYcrj4vlvOWzZ5TaQ5cnj53LYWcy+NUK5ugYUgiCLjnZ/W98y6bkY/c+NgoCdNNE0424FhCvcUIQug6t2EwaIDk0rGoGcY1I8z2sdIYgDJFSMHjbHWTHx6nPzyGjEI1uWair1HC6Ht3kQve/Swhdh9BxiVyXoNVc+7r22r7Ta2z7kejG9qc9pEREEZqmI6Va+zVbycOnRkchCmkszGNlc2oiMfYgQdcx7URnCid0HELPW5Xn0jSiUHnuijBEB2Sb1Ghfa1zLCxp1dQzfR/N9de1rPruG8D1WXnyOobvvIz0ygldRvilOscD800/ilEuktyD7d5rjtqX6r/TU5CsZPWKjh11D03X2v/HNLDzzFF65hJ3rRzfNWHdOTVykR8fQYNOHr7vzcvxVr8E9VKJ46gRhq0nouIgowm801mykazPTvPQ3/0tpKSYSGLaFlcmQGh6hOnket1QkjMfn/FqNyPcxU2ncWgXheWsvYCejfD3sDHGwCKMo9i8BhJp2aczPKsbcNNE1XWkpCkHQbBC2WgROazUAx2ObbqlI/6EjJIaGSebzVGemCZzWRQKnhoxClbS5DomBIW5/7/s7SUZ30PCDgOKJ46rzOZPBypgEjkNQr7L8/HcZvf9B+g8dXpNArXaZrXrC6PEoJZqOkUiu6Txr40qO8MONJeVzo+GFF17gj/7oj3j44Ye5/fbbr/fl3NS4kpu07XZGVqcmOfVX/5PW8iJ2Lk9ycBDNMC+bCFz87reZefRrhK0mXq1C0GxgpdMk8nnMZAoro6a03GJhVxvOrYxVnWIBGQmMVBK3UlbTbZqGq5VJDg1eF4LzWhNWzaVFjj/5GAduu6NDJj/02td1ft8bz+6hh5c/uvc7qeFRpaud7cOwbQzbVmtK3FGpmyYiCJFR1CE3pBDoloXfqJEWY7tK/rdL3jYWLnSaZtr+H26lgt2XxbL7kCKieOok5ZdOEzSbnQJIex0LGg1F1kTKLy50XSVvIqSSRKlUWH7xeZpLiwzcfhdevYGmaaoL1VSfO3Sdju9g6DoIz2XyK19kT+X1Gz6D1u2Rp2kErRaGaap9uW2TyA8QmHUi16VxYR6nVCR/+JZdmbJvtg/QLUt1P8cFP90w1pA1l9obWOk0um1z8sXnufP+BzEMA13XeeMb3wxwSQma3aLXcNRDD1ceF8t5EwM+C88+hWknGX/otZjxBFpzaQnLtkiPjuLXqmvkZPNHbmXuycc2JR9FFBF5HnoiSfnsGZDQd/AQzvISke8RyVWpqCjwOzJNoeNgJpKIKEKGISIMlXeqYWCn+7DTGZxyicKJY/HxE8pPYkPR/PpA+D4XvvUYZiZL2GqtVfe4XOPw+P0y3Fl9Tfo+3d9Ie5LFWVkBZDwZX9wg0x4KiW4aaIZJ5PtxnU8dya9VlYxXl2ftmgje9TeQQRC/TrJFyy4AgetROHGU9Mgoex56Xefeq05P0bgwT3JwkL49+za8e6e1n7ZUf+n0KfoPZ9bsPXYzNflKRo/Y6OGKYPzVD7H3Dd/P4refVRtxEXW0DfsmJvDK5U0fvvWdl2EosLNZ7L4+alNT1OdnKRx9kYHbbu9onEshOP5nH6exuIhmGBiWDVLi12qqIN6oK30+UObcbRZaFq7DN3MTYDujhlKqTgXTVJ0K7UAipQpkbfko1MIPrI5zSokmpepyQE1IpMfG6D90CKancJaXtt4c6Jpi6G0bzTDwG3XmnnwMTdfJTRxUGph9fVSmJhF+sGbyQkqJ8D1y+w8Q+X6HMOhOytZ3mYEyuzcSCaxUBq+ugml359mVHuFvo6e3uBHf/e53+YVf+AX279/Phz70oR29N5XqmcteCpZlkE5v/3tKHZ5g6NZbKJ46Sao/t2GT1iitMHzn3YwcnrgoMVeePM/UN75OZWqyk5zkDx3m0MNvZ+DwkdVjCsHzX/hbCsdeREQhcnYW3TJJD4/Qf+gwXrnE0tNPMH7nbVvqdjcWFwiaLaxMmsBxmPzC3+JXK6SHR1QnWLNJ6DiIMCAzMoqZTCrSo7jC3te89qKfZavvrzx5nnN/85e4lQqZsXHMVIqg1WL+2aeJXJd9r/9+qjPTEPhkx8aQUqqO5mKB0QcepDp5/qKf60ojGurHzqTQQh8ruZGw8j0HO50kN9S/o/tlM4RhyB99+L9Rfu45JleW+dH3vBfLMta8xshl8ctFTBHs+nw3A3b6HPfQw9VEm7QuLs5TPKWmbCPfR4QRVkbttTRNw87149fryDBU3hKB6rBsy8PKIFAm2K5PZnRsV8n/dsjb2vRkx3DUq1Y65uXJgUEa87OISOVFiVweIQKClkvotLCzfcpXolLGLVdAk2rS2PcQIbGsriJtQtehsbREfX6W5Refx282kb6PX6+h7dmr9pcry4og0HU0wyA5NER9fp7G4l93yBQpJbXpKaQUpMf3IjxPTf8JgZnOEDlKdsVKp7HS6VhatQ8jkSQ3McHdP/lBdPPySgibFWusbJZEf14R91KSHh7ByqpYsq09c7aPx46+QGt6imKtxlve+nDnV1e7ANRrOOqhh6uDrXJeKWXsCxR7okpFhuqZLLlDaapnTmHm8tzyj9+Nne3DymYJHYfTn/nLLcnHibe+XXkylQq4lYoiWzWN5OAgzaUl1UAZd/pLKbEyWfx6naDZQNN1zEQCM5fH6usjbNbxGw1FrLeaFI69iFspEwUhWhhePmFwlRA0m6rxKJZo2hZ2IjN1uYhrOyLwsbNZIsMkjKcqVGOshQwDZBjg1WoqJslYxqpzCImQEr17SmMb57woopAo0OOJjtV7b/DOu2ktLVE6fYrM2B70rvX+YnFoq0a9tlR/c2mR6uR50qNjak/TNYF0OVOTr2T0iI0ergg0Xee2d7+X0PNoLS2S6M8rXUPdwFlZ3vLh2ypoJfMDJB7Ik9mzB69S5rZ3v4eR+x6gOjXZMWzF0PEqZeTKMkYioZhaz0XTDcWINxqxp/XLRCrq5Yr1gU3XVXfZOr5bSolcPy2z+ss1ZAftd8eExpqXhgHN+XlmvceUVuXFtCaFQEhI5JL0HThIdnwPpdMnWTn6AnafMvUKHYfa7AxBvYbdnydstVQgDHzMZJL84SMI9A5h0J2UpYZHOl1mbdPDttl934GDLD33HYJ6Hb9awc7liFz3io/wd6Ont7iKL3zhC/z6r/86hw4d4qMf/SgDAwOXflMXHMe/EZppbmik0zat1iYSfRfB+OvfTGVunsJLZzbdpI29/k047tZr9vrOyMTQKJHrsHTsOJW5+TWdkQvffobJr3+NwFFTDUhAA6dSoVkoMnjHnRTOnmVlcmYDEbh+YkK3bdxyicjzsLJ9SDQS/XkiPyAKAoTn0yqVsPr6CFoOVu7Sn2Wz708KwZkvf4VGodQpkkQCwiBS96OmUzh9mqDVxExlECI2+UtlaJVKOJUa9uDIlp/rakDPDZHZNxEXqo5sSECr8xcYvONO9NzQju+XbtTrNf7Nv/llTjzzFG9OJtkzNIoQkjBcG4P8RgMMk1C3dnW+mwWX8xxfCWQyiWt+zh5ubHSvu361RHlyCr9WIz06hm4aREGgCktCKH3wRFJN5cZFp9D3MOLO2rZ8iJVKse/737yr5P9S04bNpUXqF+YJXBeEwKtWaC4vIcMQp1QkPTxCangEGUU4pSKaoSOikNrMNJk9e6nPTCsS3Wmi6Qaa56nGn3gTousGAiVh0lpcQNNV/MkMj+AUCwStJrW5WXTTUhMslk3UamFlMgzddQ/J/ADFk8dxyyXVPBQTIKHr4tWqqsvYcdB0HeF7GMmkku7wfdWok8kSuQ79Bw/hlko0lxY7kyk79ZLYqliTGhmlsXABNEiNjG6QkDnw5rcB0Fi4sOa8S8tL/OIv/jzFsy/x2lSSUcvCbzSuWQGo13DUQw9XB1vlvG21BLsvp6bS4ubBtpy0WypQOneO1soSQ3fezf43voW5Jx9bQz4qk2qJ3Z+ntbRA4cQx+iYOMv/kEziFFaQUqs6P8ms1bFutr4GPCAK8apXIU+s9hoFumKSGhzCTKYJEAq9aJXAcSmdewqtWMePPELnutf4at4d1NZhLQly7BFmGIaHnIYKufEpKZNC1bxVCScYbq41OAjqNsZciNTTDRO7A8FzG0zqiq3FV13UG7riT4vFjlE+foO/AoU4capRWNo1Dl5Iw7D90mDvf909WJYi7JpB6Mocb0SM2erhi6D90mLt+/Cc7D59XLl/y4btYoVbTNFLDI4SOg5XtozYz3TFsNVIp/HpdafFBvBi0O+NDDCHQdAN0iQw2Ftl7uBLQQF816e6ML27F4O+A2W+TGsCGRKH9CrdUurQ3ipSgq4CVyA/gVas0lhapT02BrpMaHiE1OEgiP4BTLBAuL+GaRXTTxM71M3Dr7aQGBvBcfw1hMHTn3ZTOnKY2O42RTOPXq1iZbMfsPjkwSG1miqDRRApB8fRJqtNTZPfuu+Ij/N3o6S0q/Mmf/Am/8zu/w2tf+1o+/OEP09clA9bD9cVuNmk76YwEOP+lzytddktJl7QNVyPfxyksU0smyYzv2UAEbiYr4RRXqE1PYWWymKkkQbNBIj8Qa6xWCJwWfr2OCEPyR27hnn/205d8xqUQG4o0WxVJ2vIkVrYPt1IBKbCzq/e1bpoErQgRBNj9/TiFFfxGY8Pxr0Zh51p0Fc3MTPNLv/TzTE6eJ5lM8vof+mEGNvG3utzu3J7paw89bB9X43lZv+4m+3PUFxZprSwTtFpIoHlhXnnpxftOzTBIDA7hFgtYqbSa0g185cWR6cMwTcYfei3jr35oV9d2MUkIIQSll06BREmjxtrcot2ZG0U0l5aIgoD08DCJfL4zHSGEYOGZp9T0uZ1YlWOKY5UGyqMOkGG8JzYNNE0ndBwyd96tDFQNg7BeJ2g00G2LKHSwMhlGH3gVqYFBAPoOHMQpFanPTmGkMuoaYn1yKWISRUhCz8O2bPWzeN/eji+aYeAUCpz6q0cIGvXL9pLYah+w/01vAcCv1ajPzqzZGwAc/9Qn1xSAWokEH/67z3O2WGBwcIgf+43/nczy0jUtAPUajnroYXvYadzYKueNggARRuhW3C1vWbiVspJ7cl3sTAYpwUymKJ46SeHEMYJGk+xeJQ/U7acpwggQtIpFDrzl7TiFZfxGA83QFQEiJDIMlDxf7LuhmRLd0BGahtQ0pBAYiaTycvV9IqeFmc4QNhogBJqhalUiCG4I+akrg2v7OaK2mselJkXiZlfZbozVNLazM+mQGt1SXBd9g2pkDZwWSQY7P86MjeOVy2T3TayRQhu+827GXv+mNXFouxKG/YcOk5s42MtRtoEesdHDJbGTQLTTh687aJHcKIXQLtSaySTTX/8KbqmMkUoRua5i0FNJNENt8APXjYvsAikMksPDuOVSLH10Rb+SHgCQaxn7KxSsL01qxNiG4TsAUUSrsIL31BMqIY4idMNEtyyMhE1zeUmN8esGuqFjptIkBgYQfkBtbob04AACHcO2cUtFjn/rcWrTUwTNpurg9pW5YuR6pEdHSY+MUpk8h1+rkRzIM3T3fUgR0lxcwkyn2P/Gt1x2gtXTW7w0HnnkEX77t3+bd77znfzWb/0Wtt2TWLnRcLmbtJ10RkohKL50Whl7JxLrTGVTBK0mjYV50iOja4jArcgTw7QxU+mOYaCRSCp5jkyW1OgYZrOBWywyeNvtvOr/9cvkj9xy0c9SnZrk9NOPUzx7bk1xqP/QEULPxQozOKUShmVhZbMYloUea6gjJZqmdSbFQEmVtBO80HGIfJ/JL38RL54yudpGptslrC6nIPrtbz/Dr/7qL1GtVhkbG+cP/uAP2ZtKcerTj1A5fw57cGRXRMqNavraI1t6uBFxNZ6XzdZd09RJDQ3jFAt49ZqS/4wi1VNjJzo62pHrYvfnSQ+Pkhkf7xDYfq1KZmyc29793m09Nxd73i5G3tZnpzqyV8L3FRF+YV4VXzRNSWNFkSqiBQHJgQFkFBE4DlnDwEgm1WSe58VFMxXPZKzDLuP/1+IimmHFa348VTx8973K34N5At/DzvaRHh4lf9ttpAYG1SRxo0HkuljpDEYiRfnMaUQUYZgmQaupjG+FAENDRoKg1cRKpTufvx1f3GqFxoV5NB1yE4d25SWx1T4A2PCz2sz0hgLQ2ZMnOPrUE9wZRew9OMH/+//8bY7c/+Cm77+a62av4aiHmwW72ZNcTtzYKuc1LAvN0AkaddKj45iZDIWjLxC5Lon8AMS+SwBBvU51+jyh6+FWK1hT5zqyS1Ymi5VRvgytwgqTX/q88iuy1OSbJJbJjsmL0HWxUmnsvhxGOqW8HzRVdA9dB69aRTOMuJkqoUzF6zHBfYPJT72sYBirvhqX+B67a0ht6bDtQ1N+XVLCJo1Ta1+qoekGrZUVsnv3de7N0HFIDgxw54//kzVTjSOHJ9ZM8O9UwlDT9d7E3zbQIzZ6uCguJxDt5OFbI+vTn1vzu+5Cbfta7L4cjfk5JUEkBGGzGXcZdZlMGwYiClUSEY9z9/DyQCcg7TgYXQJRRNQlWSUt1enXToBlGHaMCmUUYVo2eiaLVylTmTyPmcmSHh1j5tGv4VWrZMbGSI+Nrya1kSQ1MoIIAspnzxA0G+QmDpI7eIhkXkkgpUfGqE6eZ+7Jx+g/dHhHiVb3ZnLozrtpLC709BY3wcrKCh/60IfYt28fH/jABzhx4sSa309MTDA4OLjFu3u4lricTdp2OiNbK8tUp6dpLs7j12tYmSwyCJC6voYM0S2bsNnAymZJxxIYQezRVJ2a3ECe6G1iQbeJPI/8LbfhFFZUnGlFIAWpkRHufP8/3RapcerTjxA1aiSGRtYUh1aOvkj9wizVyfOoTbZBoj9PbuIgif48zaVFjEQSK5XCb9TRrQHlsVGtYOf6EUJQn1HEq24aZMbGr5mR6aUIq8vZTwRBwP/xf/wG1WqV++67n9/7vf+H0dFRAO583z9hMSaHLrc790Y1fb1RyZYebm5credlM9Ja0zRyBw/hNxq45TIi8EmPjSs98GYTTdexc/3olsXg7XeSmzhIfWaayFfGrqMPvGrbz8t2nrf+Q4e5473v59wXP09tZhqEwM7l6Ns/QeA4eLU6umXRWl5SREHc+dmeLpFRhF+v4zfqarOra5ROnSS7/wDJ/n5axaL6necpAid+j4widFPtT0WkyHnhq6kUzbKVdG9/nuz4OPNPP0XfxEH69uzDMC2ccon6zDRetULoekgRkcgPICJFlAT1OhINM6GkVNvnE54H6Qx6R2K1SXJwiPr0NJplMnDH3R398NVCzDnOfeFzHPrBf4SdzW6r6LnVPqD7Z90FoNyhw4TNJrXlJZ5/+lukpGQim2UkP8Di5/4G5+gL13yN7DUc9XAzYDd7kp3EjfXkyf43voXm4gKlU8excnnsTFZNQEiJiCL6JiYIGg1ahRV00yLyPCLPwUxlqMY+fFYuT+QvgxTUL8wjw5DsvgOdxiBN17FSaZzCMrpldUzDRRiiWxaB4yBcR63lmkZyII+m6fimqWoG+UGsVIrs3n00lxZpXJgn9L0eoXGlEEXQcVq9BC6b1IDM3n34tSqi2bjkazVdJzEwiF+rEDQa2H19a9b77J69a+LfdqX41aX3JAwvFz1io4ctcbkJzFaM/lY/b3dBbdV5uf+Nb2Hxu9+mcPwoaBputULktDosukK84HUFEdkLJi87aIC80qSGpoGmr5nwkEFAEIZxodTFSKXUZI+mE3lePIpvods2tblZ8rfchlet4NeqaxI6O5tl8M57qE6eJ7tvP6P3PcjJR/6UxMAA6ZG1wepyA9Vmm0k7l8McHV0z5tjTW4RvfvObuK7L/Pw8H/jABzb8/kMf+hDvfe97r8OVvTKxmZTS9eyMbC4tUp+f5eznPoNbqRA2mhipFJoGwvPQLKsTi0Tgd4oqJ/7nn3aer9D3aS7MM3Lfg1hd52ibm7YKK6BpmKk0I/c/SNBoEPo+zvICI/c9eEnJk+4izfDtt3X8IfRMlsSAz8IzTxE6LUVe9OUQYUBj4QJupUzu4GEaixdACDL79hNOnqOxeCE2egURhMw9/k1Akhkbp//wLdfEyHQ7XXyXu5+wLIvf/d0/4M///P/Hb/7m/4dkMtn5Xf+hw4zfeRsrkzOXdQ/eqKavNyrZ0sPNjav5vGxFWif686THxmgsXEBKSeT52H05MmPjpEfHSA0OITUIajUOPvwDuKUiTrlMamCA4Xvu29Tgev16dSlT2fbzVp2aZO7Jx3BLRYg9PFJDQ4y96jUUjh+nuXhByeGu7/TcpNNUM61ON2dteoqqiEjk+kkNjeCWCoSeRxSGq40+ho6uG2i6muzQTSMm7X3cUgndsmgLwlfPn8NZXkaKiMBpqan3VAYpIoxEgvJLp5SUa/vvZ6iJZHSjY4SrjMpd/GYT4Xuxd0eAjEKG7rpvjSkqgFet4BSLlF46TfX8ORL5PH0TBxm64674I0j69k9sKPZsB82lRapTk0gpWHj2aYJmAxGG3J3NEEYR+fE98bSieVlr5G4n43oGrz280rGbPclO4kZtZnrTfDf0XEX8Tk4CYOdyDN5+JyLwaczP45RLitgwDBACM50G3UCGEYl8Xk3wVUqErRZIFClRrWLG+8mg2cRI2AgJGhrEBHDQbCCCAF3XEABSYqbS6HaCsNVSUx2RID2gXludPo9TKCICv9dUe8Wxve/zokofF4GeSGImE4goS9BoqEZp2JyY0jSMZBJQ0o2h54Km7Wi970kYXh3siNj47//9v1/2iTRN4xd/8Rcv+/09XFtcbgKzFaOfP3IrlfNnt2T6t+q8zB+5lbOf/xtmH/8mbqmkDJrbBepub4dNFrwrOq2xXc29HnaNK0pqgLo15CayVVLiFAvoupKmiWL9+qBeI2g1CT0HEUZETovm4iJevYaVShH5wZpJjDZhUZ+ZZvD2uzDsBKmhkU2D604D1VabyebSEon+fg7/w3eSHBzqyZTEeN/73sf73ve+630ZNwW2klK6muTaxTojnXKJlRefx0gmyYztITU0TG1mShGXto1u2cgoRARKxknTdKz8AKXTJ4k8j/ToONkDY7jFIpWzZygce5GRBx5c85znDh7CrVQIGnX8akV1t4qIoNkgM7aHA295+JLPYGPhAsVTJzCTauJCS6Q7Rob1mWlEFCGFxK/VcEpFJTul64rUL5UYvEN1Jvu1GmYyRWtpERlFWNk+rEwG3bJwVlYIWk28aqVz/e3PsBm5erHCzqWKPtvp4tvpfqLRaHD8+DFe97rXA3DXXXfzn/7Tf930+9zNePaN2DF1o5ItPfRwNZ+XzUhrp1xWBrDLS6pQpGmY6TQDt9y6RvpBRBH16WlO/6+/XOP7sPzi8xvi0fr1Srdt5TUhYfje+7Z83qQQa8iPzPgeItehfOYMF55+isbCBSWpu11oKG+MMET4HoBqqElnkGGoZKg6DVsS3bQ6xXKl2a46hYunTyFFhIgi/GoFM5nGzKSV1FU82RJoIGVRxT1dV7KMUqhJjWyWyHUJWi100+pINrZ1471qhUS2j+yevWT27FFm56NrJw/a2vah46AZBqnRUUTgc/7vPsepv/jzeNrRxM7lGHvw+7jt3e+9aBF0fbwpnz1D4cQxnHIJEYZYiSRCRBiajpWylVF4Molh2qQPj+1ojbxSk3E9g9ceXqnY7Z5ku3Fj8bvfZuabX1+T7zaXF5l78jGQMHL/A1iZbMc43EgkGL7nPs5/4XP4lRKaVMczMlk0DZzlZdKjo0q2NYqw+3JqyqNex0gkCNwWQbOJCAKMZAI7kwU5Q9hq0lxaUmulpqHHcrCOlIggQIaB2quHgWqa1KC5uKDyiyjqkRovU4gopLm4oDyuNLAyWSLPVYbkoOqAbWNyITCTKcyE8lt0VlZI9PfvaL3vSRheHeyY2Fg/Yrn+v7vR/l37dT1i4+WDy0lgtirCLj33PSa//EWl+XrkyJZMf3fnpWHbrBx7kROf+qTq1NJ1EvkBNSLWXmTa6Bo7W/PfVzKw9ILUVUFbeupyGfYdnGVTCM9Dxrr0MorwK2U0Q0cEAVHdVSw84FRKyDDCzmZxigX8ZoPhu+/tFA3bhIWmySsWqLazmSyeOsE9H/ipXoGrh2uKi0kpXc2O8q06I4NWi5XnnwMNRh94FXY2i5SSvr37qE5PIfwA3U6QHh1HBAGh5xA0HSLPo3jqJFYmg1MqYqXSqgt4eLgTAxP9+c6zl+jPY6XSRJ5L8fRJNaZumvTtP8CRH3rXtsbxX/rb/0Xp9CmMRJJqwsLu6yd38BC6YdJaWVZj9L63KpUXCSVLgkbgOKBp3PrDP4qRSHDq049gplL07Z+AKEK3LKLAZ9l9DhGG6vpz/QTNZkc32EiliLrI1YsVdoCLFn2228W3k/1ETUr+9b/+BaamJvnYx/6UBx541RW9h7pxI3ZM3YhkSw89wNV9XtaT1l61QvnUCfyWg55Iouk6ZjKFDAOq05NYmUxn/9WW/riU78Nm65VTKFCbnsbKZmlcmMdMpTu+Ru3nrTJ5nvqFCzQXLtB/6DBmWpHqfhDg1ao0lxaJYnLikoiNT2UQqH/vNkINQ/xaVRVPdB0MHaQGGvTfcivJXB63UqY6eY6w1UTP9gHK/8IpFkAIkoNDDBy5lcbiAk5hRU2QSKEKcLrWMVMFkGGInsmiZ7L4jTpR4MfeTVGsE2+SP3ILt/7jH2HozruQQnD043+8Zn8rpVTxwXWxMlmE7xF5HuWXTuPVlDGvbtskBwfxazXmnnwMp1jk/p/5uQ3xcqvp5NrsLK1CgZbrEACDySSR66kpjVSSyA8IJWimuaM1sjx5/oqqEvQMXnt4JWK3e5J23NATSfx6vbMXba+xbQnZuW89vibflVLiLC8rwlXTcFYKZPfsI9mfJ7t3H5Xz55h7/FHSo6MM3XMvxRPH8GtVkkMjCN+jVpvGbzRVw2KzQXpklOTQCIvfeUaREGGo/JlyOZCS+oV5VV+SEhH4WOkMmq4T+R4iCpUPpwV6IhGTHSOYqTR+o05jblYZg0OvXnSN0ZYH23UVKQwJY18s4iYAw7bj/EtN+aiGAACNoNVEhCGjD76aQ+/4AVKDQ1tOiW6G6yFheDP49u2I2Pj5n//5DYvaV7/6Vc6ePcsdd9zBO97xDvbv349hGCwvL/Poo4/y3e9+l1e96lW8//3vv6IX3sPVxU4TmK2KsFo6gwgDgkYDOTjUSQg2Y/qlELSWl5h/+lvMPvFNGvPzyDBQhW/DwEimFJO6VdBY/3PLgnag6eGGwxqDp+sIEUV4tSqaBDQN3TIJWi0lTYX6mV+rIYWSOsvs3UfkOmuKnm3Com//xKUD1e13IIWgfO7sRQNLr8DVw42Ii0kpbda9daU3Upt1RoooRLNMRu58kNSA8lDRNI3BO+4iaLVwi0XCZpPAtpAiNlL1PaSQGMlE53M1FxdV0SzbhxSR8toY30NqeITQcahOnido1sns2UdmbBRNN5Aiwq83mH/qCfr27d+S3GgX1ZqLC5jJpCqgmUaHKO3bux+/XuuYk+u6jp7OEHlup4NXRhG1mRnOfv5vuOPHfoKgXqf/4CGQEEUhQbNBFARIKTDsBK2VZRa+86wy3Q0jdNPATKUVQZNOX5SYKJ89A0hkJDYt+tzx3vcz9+Rj2+ri2+5+4vhz3+Xf/9Z/oVQqMjQ0vEHu5ErjRuyYuhHJlh56gKv7vKyXpXVLRQLHwUynCZoNzHQaw05g9+fxq5XO/ktKSfn0qY7vg6Zpan0PAlLDIziFZWYff5S+/Qc2bxSxLDB03GKBhUoJO5vDsEzla3TwEDISlE6dUJ8tmcSrlEj0K5ml+sw0QbOh9rLblb7t2vPqloXYTINdCCWpgoaesJBhSOXMaYyEkk1RRuI6frOBUyoq2V0hwDBwVpYxU2kGbrmN6tR5NWyuGYrLiA1IEVLFGSEImo3Yy0N0pjjUuh8SOhHl0yc5Watx70/9LPve8MY1+1uA1tIireUl9Lhz1e7LUZ6apLWyDBoYySQyDNHQSA2P4JZLVCbPMfvYN9Z0eG8Wi0KnxeK3n6VaWMZpNdEAQ9cBVXSSUhI6LpqhozbwCttZI6UQTH3j61dMlaBN9vcMXnt4pWG3exIrnSYKApaf+y6h0+rsRdtrrG5aSBHRWl4iO76n8yy2JzPsmMD1quWOl4GmaViZDMWTxxm64250TWfwjrsonjyuJtcSCZXLNxs4hRXsbJbcwUMk+vM4hcM0LsyjWxa5w4dpLS2pzvxYjhpNKkK42YynoG2CRgPNUOR65DokBoYADa9Sxi2XgS5Vj57CxzXD+ob6XUPTVCyVUjUZ6LryX9U0Na2jaWoqyLSQqFyyePxFQqdJamCQpReeY/iue7alpHGtJQxvFt++HREbv/qrv7rmv7/61a/yh3/4h/ziL/4i//pf/+sNr/+5n/s5PvGJT/Bbv/VbPWLjZYadJjBbFWGDRgO/ViUxMIBXXTXYAVV4So2MUjx1gqOf/CjL3/s2lekZvGpldaNvGCCUoV3YjDXvYtb0ougFlhsasmsDcDVnNS59HXS8N6SmY2YyyDBYJTXiF8mYIPPrNbQlncyefZ372cpm15hFXSxQ6YaBWymrrrdLBJZegauH3eBqdWbshHCLPO+yN1IXu/71nZFOYZmzn//bDRIZyfwAY696teq4nZuNu6tUHDEz2dhXR8Ov10CCmUmrLi7PRTctQsdRJoCOowpgGqRGxhi+5941nz09Ii86jt9NBg3eeTciCHCKRazBARL5AbxKmfr8XExKxO/RDaTblh0xQNOUqavvceGpb5E7eAS3VKK5tIRTXFGkSBiuSokIgQhVV1pyYBArYxIFgRq1jkKCZpP5p57YtLCTO5Rm9rFvoEnY/9aHNzGJPc/5L30ep1jc1n2wnf3EwvISH/k/foOS53H77Xfy4Q//D8bH91z0HtktbkTT1xuRbOmhB7j6z0ubtD73hc9SPnMawzQRvkd6eITkwB3U52bxq1UlH1Up01pewikWEGHA0L334deq1Kan8KqVNURu4fgxCseProlbUkr8ep367DRepQyS+LlKgabTXFqgsah8PUQsWWVlsoggoLm0iFsuEwWBMvIOuxqoLpZ7aFosIRXGXcHB5q+NO1CtWCZKCImh6QzecSdWOsPKi8/TKhaRwbrp9Vh+qnzmNJHvKdmq+PjtrlYsC103oG374a+TTdE0tLjjVNM0JBqNxQWOfuKja/a3hWNHCV0Ht1zGKa4oZQa0WKqxEbuca/EUhU7gOCQTCexsH0GzTvH0yU5TzlaNcVIIyivL+PUaVlxQMk0L4blIKVQ3deBjW5l4mkft27ezRjaXFqlMTV4RVYKe91EPr2Tsdk8SOg5OsYBTWCE1MoqVsTpTZl6jTrJ/gP6DB2mtrKzJd6MgQIQRVkatR0Er6kxFuJUylfPn8GpVyudeorEwp4iS/RM4pSJOqYAQksj3SCUSZPcdQDfUcXIHD9FcWkA3TNxSmdBV+/ugqSTt0DRkGBCFIbItc2db8QRZnqBRo7V4gcj3FRkCaLqx+oF7paerjjWNsVeyjhSpuIVuqBgWRUTQycE0iCUdNRCgWyboOsL3kcD0V/6e81/8PNm9+0gNDF4y371WEoY3U+zalXn4Rz7yEW677bZNSY02fvqnf5rPfvazfOxjH+M973nPbk7XwzXEThOYrYqw7cBk96lxPdE1QaFGqiepTJ5j4dmnkVIRGGu6lzqLjL5qDG6YEF2a2NB0A0l48df1cM1xo5AawOq9Zpoksn3KYMzZSidZdbJ5lQp2Nqe6/GpVWivLa5j1rQJVenQMp7hCa3l5W4GlV+Dq4XKxmY54cnCI0fsfZODW23ZFcmy21kupOldEEIChE3oe5bNnuPDMty5rI7WdzpLuzkgrncZMJDd9VpL5AQZuu51EXw4rk6WxMI9TVHrjbqWECCIlvyEEYbMFmjJnNewEGpAYGOCeD/4MYavJmc/+Ncl8ftuFkDa6ySBd18kdPETQbOJVyhipDGYqjVspq05clI6r8H1kLAnSlqTSDTMmQiosPPOkGp0PAyLPU8UvS41NSykJWy2kECquiogokIStJnZfDl03OP2ZvyJynTWFvnans/A9FYs1jbDZ7DQjrP+sUggyMfmw+n5fFct0A69aJWg0yN9y65b7CSEELz71BE+deYmC5/Pww+/gQx/6v8hkMju6Ly8HN6Lp641ItvTQA1yb56X/0GEO/+APUZ08T27PHqSxKlli53LUpqdwK2X8eh23UqHvwARSSsxEksKJYx1JJCtjIsIQr1bFKSlT63bccitlSqdP0lhYwK/X1WQ4SmPbrdaQYUDgOMpoFomV7UOEjiIKUNJQolJWprJ2otP4Aly8qGUY8Tby0pUvRbB7RLFeu5XJkB4cRiLxG3VFanQ8Btf6DMowpHr+nPq9rq+R55W+T3Qx8kVKNWGh60hdJ6jX0W2L6vQUJx75M17/73+ToTvvZvnF5/EqZaSQRH7QITKiWL61c6wgQKLhFAuYyQSGnUCippzbTTndvlPtZiGnVOLYV76E1WpiahqGpqHbNrquqxgXRUgh0E0Tqy+HmbCVpOw218j2PiYxNLrp77erStDzPurhlY7d7EmkEMw9+Rh2nF+HrRZaJoNumpjpDM7KMoZhsvcNb2Tqy19as4c3LAvdNDrkgR7LRruVMsUTajJDNwzMdAYjkcApFpUXayqFrmnohkEUCVoLC4SNJlY2g5VW++3hO+/BSCZYeu57ykuoUkGEIUYiobw1UH5DUkjsbJbU6BheuYxbLKAnk1h9OcKVFRASdE2tvp11tcdsXE1cNVJjzUnW1iFlFKFbNlYuh5VIErSaRIGPYSZJ5PoVSVerIqWa9mjnQEvf+w7VyXPc889+hvS9d216qp1IGF5Ow+LNFrt2RWycPXuWhx9++JKvO3DgAI8++uhuTtXDNUY7gWksLlA8eVxJV2SzaLoadV6fwGxVhG0HptBz0Q0DzTTx63WcUpHq1Hl8x1GGe7FBU+jFOrXdG++2SXgbl5rWAFWwjnqkxo2Gq0JqXNZ0jqY2LfEmRNN1hIjWdl2sh6F3RhRbxQKJXI7IdRi68+4NzPr6QGUmk0x97cu0lpe2HVgudzN5M2go9rA11ndmhJ5H5dxZlp9/jrlvfoP+I7cwfM+9l90N0r3Wk1Sds50u2dj42rBt5p74JkGzueONVOX8OY792cdxS2Uy42NkRycQnrtGAqntq9G+v9MjoyQGBqmcfYncwcOdUXWgo9Pbt/8A1ekpgmYTt1REN01FCISh6lCVokMOSKmKQxg6xePHqJw/S/7IrQjfv6wJqvVkUDI/wNDd99CYm8EpKUNUGYYk+weIwgC3UlakPpoqGAUqqTMSSjbLTKeozcyApghONLBS6tialAT1WoeYcIoF/FoN3TIx7ARmMolTLlN/4psYts3I/Q8Q+j71melOp7OIIvx6FTOltO5FEHQMFNuayFJI0A0i18EPAmrTU7RWlvFqVUVwaUqf9vyXv8Ct//hHtiyInn/xeY6fPcuZIORnfuZf8Cu/8m+vugRVN3ITB5l469uZ+9bjNJcW0HQDM5G4bqavNyLZ0kMPbVyLDkMrmyXRn8dMpdASq+ttMj9Aoj9Pa3kJr1Lm7n/6QVLDI7z4sT+icu4skeuSyA901n4jnrJwiwUqk+fQbZvm8iKlUydxCiuqOC5FZw8pg4DWwvxa3wsgaNTV8RIJ7L4cket2TLx1O6H2kp0p3633ooZpErldhf+LyVcJEU9cCFXQ13R0y8JvNAgdd5XUkJJNN9PtPfFm51iTT20+MdJpMpMQeeoYs49+Db9RpzYzhbOy0pkKVOe42D5cEjSbNBcXSe/Zg4bETKU6cojdvlOGZaLbNiuzs9BsKNmPtmFrFCE0TU3OeEr3Hk1HhgH2yAgSqE6e39YaeaVUCaAnDdvDKxu72ZM0lxapTk2SHhslkcvRXFoicFpIEaEbBpnxPUrab9+BDfluOw60CitK4WNoBDOToXD0BULXQbNsEvkBZBigZ7MYySSN+Tl00yA1NEzke+iWIigCpwmaUhFJDg1xx4+9n8zoGPX5+VhKSkG3lJ9H6HvomoFhJ8gdPKyaGAvLRJ6P5rTUuhd7LyCBsCd7fi3QTWpcNW/WTsPA+h8L1fzaqBG0HKQUmAlJFAb4tRpmJkN6ZBS/Uac6M4VTKgIatZkZ3Mp/I/nv/j3JPRObnnI7EobblZJaXwOSQtxUsWtXxMbQ0BCnTp3aYCLeDd/3eeGFFxgbG9vNqXq4BK5WMdNMJBQJMXkeKQRmOs3IvQ9w+3vfv+ZB2qoIa2Wz2Ll+6rMzpEdGqZ4/h1ut4JYKqstH01RhybIQXpf53sUK1RdLBnRdrXxSqI15DzcW2t4rV+p4uoFuW0ozeAfmjbppKm3j9ph+JNT4/MX4ESljGbQITdcY+75Xc99P/Quye/Zu+qx1B6rGwgXqM9M7CiyXs5m8WTQUe9gc6zszvGqF4qkTRK5LcmiIoNnAq1Uonjp52eOn3Ws9UcjyC88Rui5WOoPdl8EtFYk8wfKLzzNy73072khVzp/ju//9v1GbnsJMpTt65rmDh+g/fITCsaN85w9+FzOVInJcjFRSGYVHEU6pSGN+ntrMDOnRUfqP3IKZSHaelczYOLOPfr3jo6ObFoaUCL+G9P3O2hSFgRo/1pRMVei6vPDRP2TirW8nCoLLmqDarIiSzA+QHR6iVa7i1aoErSaaYbL8wnNxU2+7YKWBVH9b3U4oU8NMltbKEunRUZWUaXQ6WINWk8htNwgoPXIjkSB0Wiop05V0StBq4TfqzD3xOGYigZlOkcwryaqg1aK1vEToOKwcexEjkUA31moi27kcycEhKmfP4NWq+I06fr1G5PsdDXcR+Mw+9k1ay0vc/zP/ctOC6F1veRsvJlP8yg/8A370R39sR/fibtG9XoZxp3FqaJj9b3wz469+6LqRB9dqPL2HHi4HV9okeX3+kh4ZJXfwELVzL5E5cGhDDAmaTYbvvZ+R+x4AIDk4xPLzz5EcGtrQABK2WqRHxwhdl9TgEBeefQq3VAI0ojAu3rffsxUZIAToOpHn4YalVU8LIGw20GMfiYtC02I5i21I6bavRQekhhQCu79fyZ6WikgRrb6m+59XGp3vQ/0zdBwWnn1aNakZhpoIFIJtdSiLCK9SJgpDEv39DN1xF6HjcPozf7nGdyoKfKrnz2EEIQldR2//beLvT0YRwvMwUilEs4FhmfFUosCvVTddIzfLjzNj4+QPHWbp2PFdqRK00ZOG7eGVjMvdk5TPnqF85rSSdxJKPs5KpUmPjZMaHMJIpWjMzRK67qb5bmpklMbiBZCQGhnBr9doFQrIKMTOZunbP0Ftbga3XFKErwZhEFCbnVE1q2RKrbtCYGWyjD74fTiFFSrnz3YmpyPfVX5NQhB5niJdU2m1l/Y8qjNTBPUaSIlmGmpCr7u+1JM9v2bQQPlcXO0TrZNnbE8y+rWqmjoMg850f2NuFjQNuz9P5Lm45RKR46LnB7GzWQKnRW16iuc/9lHu+sDPXNb+fbtSUpvVgKxsH26pRHqLCcZXWuzaFbHx1re+lUceeYT//J//M7/+67+Ouc4J3nEcfvM3f5OlpSX+5b/8l7u60B62xtUoZnY/RPkjt1CfncEtlQjqdZZffA4rk+a2d793jSzIVkVY3bTQbZtWYQUjkcBMJBGRUM2oQaAKMvHY4K7CgxYbysUBRzNN9e+9oHPD4IpPaUiB8PztJYptCLEqiRYbRWmWgYy4+HG6kl3DTnDgzQ/Tt2//tk65naSotbJMdXp6TfK1k83kzaSh2MPm6O4qBFRM6Opi1TRNFXpuvwunsHJZ46fttb505jSTX/8qoespk76G6q5MDgyQO3wLhaMv0FxaIjO+d0NharONVHVqkuN/9nFq09PY/XmsVCrW4S0SNJv07T9AY3EBr1zqmMb6jRqh46BpOqmRYRL9eUQUKu31UpH84VsYvvseBu+8i6mvfJko8EgOjRD5HoGr3re6lsRxojthiZ/5VqHA0nPfQTfUlMfwOsJmqwkqKQSNhQvUZqZB16lMTTJ01z0dg9uQCCn1jjRWc3mayHU6RSM0Dd001aZaCCXzkc0SNBsE9QaOpqvON90gdFqEnq9inq6BkGiG6mZVGvLq87U8V/29DRMrk8Wv1xGBr14rIjTdVg0CqK7dKAw75umNxQXccpnk0BDj3/ca9r3hTTz9/P+pGhXCSBEqGkgNdMtGNwzCVoPiyROc+exnePUv/Sr3fOCnOP7MU4zmB0jHhNO9H/yZq9d9tQXWr5fp5DiR69BcWmLmm18nPTJ6XdfLK1087qGHK4krZZK8Vf6SP3IrfnF5W00do/c/yNw3v0EQd/jrppKhCppNzGSS/JFb8WpVEv05/Hqd0HWVL0Z7T7edHCF+rWz/j6Z16vkdYvwix9EMg0S/isMiioi2lDztQjuXwSQ5MEjx5HGKp05s36j8KkD4PlI3sHI58AOVc+3gekLHIZnrp//Ircw9+RhepcLAHXcRNJpU5mbQhVBNR5qmSA1N7/jgCU1DQyPy1bSGFAIr00dmbBQrkyU5OMT+N76F3MRBGgsXCFot3FKRwsnj1GemN+THhx5+O5W5+U3usUUMO0H/oSM0lxbJjI33pGF7uOmx0z1JdWqSmW98haDZwu7vx86qPb3faCDCORL9/eC6necmu2fvpvnu/je+FZD4tRr12VkizyW7Zy/9h4+QzA9g53KUTp9SU3ixrwaahplMqSnnuADtrCwTNOpkxsapTU+xcuwFnHKRqOUQtBw0JFGg1hUjkVANj16LoNVCtyy1T9Z05PUX0b6pcW2/fSUNTLtxIYqIHJW3aqaJblkq75ECr14jbDURQRDXOhMdIk/4AW65vCbn3qohfbNGj9nHvkFraYHU6B6kUCoj1joFBCkEpz/zlxtqQLWZKRoLF0gODZLds2/DJ3ylxa5dERv/6l/9K77xjW/wqU99ii996Uu84Q1v6ExmXLhwgSeffJJqtcrtt9/Oz/3cz12RC+5hLa5GMbO76zcxMEDx5HHV8Ts4hGYYeOUSi99+ltDzuOvHf7Jz/K2KsKMPvorkwCClM6dUQSceQ7SzfQStluq0l7JjznP5RITW0ZvVLAtN1y7dRdXDVUX7L3nFA9GaTrUd3i+63un86iSrwc7GSJODgwzcetu2J6UulRQ1lxapz89y9nOfQdeNDeTkpTaTN5uGYg+bo5tACxoNvGoFK5NdvR9Mk6AVIcNw1+OnoeMSeZ5acqVEKlc1JBqGZWFl0rilIkGjscajQb137UZKhCFn/+6z1Ofn0UxDSZDoSspItyzccpnlF54ndFuq6KHrhM0GkefFk1SS0PEwrBZGIsnIA6/CLZVI9PcjpOTM336G0qmThJ5Hdeq8mlpo+0hshe44FAbUL1wgf+gwfrNO5fw5MmPjawohumWT6M+z8O2n6ds/QeR5nP3837D0/Pfwa8rYWwQBtclJ7Hy/IvSDAL/ZRIqI9Og4mqaR3bsPr1bHK5eQIlK6v6aFkbRjs9SAyFHydlZfjsj3lCRIEKKbBlLXQdcQfqDi3/p4GsuM6IaBjMI45Eoi18Mtl7Hz0Fq8oEgf28CvVqnFJrUijHCDAn69zh3vfT9WJqNG/qOI+vSk6sgzDUzTwkgm0TRNTcBIydLzz9FYuMDTJ47xH/7Dv+cd7/gB/ut//b+vOaEBL5/18koVj3vo4UbEpfKXIw+/jaUTpy7Z1DFw6230H7kFr1ohdFoELbW+pYaGyR08SNBqUZ+fxa9XCds5x+UilqnQDDX1J5GquSb23tgqf9F0g9B11GTwDiGEoHjyOH61quSXriekjOOFqwqIO8zXrFSKzN59rLz4vPLdSCUpHn2RwuwUfqWCGU9paIYZS8XGpEnchCTjJgTNsrCSacZe9WrSIyOKlF64wNFPfpTU0DB+rYZTLtG4MI9hWgzeeSd9EwfX3F8PfvCDG3LWyPcVcRJGTH35i8x+8+vkDh5ShEnP+6iHmxzb3ZO091iR75Pdtw+3VIR0urOn9yoVatNTWNk+hu68q/PctPPdxsIFarOzaJqkb/8EmbHxTvPf2c99hszYHuysyqWllIqsjiJEEHam8CLfQ0YhumGiJ2wix6U2O8PY6Bj1hXnKf3GOyHXRTBMNiWaYaJEgCvz4vco82ujLkMhkaK6sKOnCnofGNUNbeup65AmAiunh5nmijI3FdVM1okWuQyilkuC3LEQUgech49e0CbXm0iKR523Z0FE5f3bNzzXDYOX4i2hoNBYW0U0DO9dPemQUK5XGymSoTJ7Hq9XwKhVyhw4TNpv41Sq6ZZG//S4aS0uUTp0iPbZnjdTvKzF27YrYGBkZ4VOf+hT/6T/9Jx599FE+97nPrfm9ruu8613v4jd+4zfIZjcW83rYHa5Wct7u+k2PjlE5d2aDbq2d6yd0XVpLixuOv1kRVgrB0Y//MXte8zqQErdaoXT6JIadIHRdtYEVUVwUMXdcZO76QpCB6EgNRb4XF7FNNTbWm9y4puj207iq2CEZ1r7f1nS97eQYmo5fq1I+e4apr/79tialMmPj9E0cZOXF58mM78Gw7I5evVMusfLi8xjJJJmxPUpmZxNy8mKbyZ7+bw+wlkCLggARRliZ1TAvwrBjwHe546dSCM589jPUZqbVvRbLHZmJJMnBISLXwSmskBgYojE3q8xPu9+/biNVnZrk3Bc+y+w3v46UomNCnhoaUmPksf+SV6ugmyaGbRO6jko8pIwLIILQaZIeHSVyXdxikeTwMMsvPk9fsUCiPw/x5lP4/o6e9XaxKnJa+PU6ffv207dvH26p1CmEeNUKfq3GytEXADCSqtsrcj00U8dMZ9B1Hbdcwi0XcStl7P5+Ev05NN9CejI2ig1I9+ex+3Ikcn00FxbQdJ3E4KDytyqsEDbV55RCEDSb6JZN4LQQMVmhJi1kTOxv8TnbsihSomk6mqHMD71alaDZ7MgyyVBAFOHHHhtGIoGRySKlYPobX1Gf1bLoPzBBY24GK51GN5WmcfzHBqkmdPxalb/4o/+H/+9nPg1AtVrB8zwStn3NpxJ662UPPVxfbCd/KZ85y90/+UFaK8sXXR8yY+MM33MvxVMnSY/chQzDjieQWymzcvR5TDuJmc5siEc7v3BVWJeAHk/gijCEzfIWw0A3LYTvIQIfr1S8vHNGIW65pPapu2r+ukKQotO1ulNY2Qx2NkvhxHFF9LRalJYXqTebpHUdoyP7EX+fUqqO2S75LwDhupj5AYyEmgzUM1kSAz4LzzyFkUyy59Wvpbm0GBMxgurkJGYqTTI/0Lm/pr/xDW57/we45wM/RXNpkfLZM0x/4ytohkF2fHwD0bbvDW/qeR/1cFNju818q3uscZKDQwStJl6ljJXJopsmmmVRnZ5i8LbbGbrz7jXvrc1Mb6lCsve1r6N85hSl06ewMhnqszMsvfAcQVPlDWum8IRQPnBhQBQGGJaFVykz9/ijNBcuqBpF3CilWxYGav8nI6FqBG2fvjDAq9fU5Nj1XntvInT7aUiu9aRG+yIuJYuvYWQyqt4Y55caEGmaij9xv0N2735Sw8O4k1OUz57hwjPf6jR06IkkbrHI/JOPc+4LnyUzvpeBI7dgJFM0lxdZfPZp/Ead7N592Nk+/GaD6vlzlM+ewe7rw0wmEUFAcmiE7PgYhaMvdDwv2xLC2b37qU1PUjp1gtzEoVd07NoVsQGwb98+/vAP/5ClpSWeffZZlpeX0TSNsbExXv/61zM0NHQlrrOHTbDb5HyrANXu+pVR2On4BdTP2h3uUYSd66d46kSnQxWItdbXBrvyubMd3ULdMFSyUSzQWLgAUmJmMgSNOjIIVLfpbiG6Nt2ahtxtItPDjtAdjK6oSfiWJ9zZRuOi94OmJFi2PKZhYqZSCD/gxY/9D7J792+aAK2flKrNTONVytTn56icO4uZzpAaHCI1OkrlpdOgwegDr+p0oOyUnOzp//bQ1ru2+vqoTk+R3XcA3TRUx79tI6Uy8EwNDWNlswTN5mWNny5+99tceOpbIKLYmM9UXkm+rwiNfB6vWiG7bz9OMklzcUGZVm+ykarNTHPq049Qn5tDMwyS+eGO342MItKjo5jJlNLVDqPOufxaTZHhUYTUdDUZIENCXxXka/MztOL7PTO+B920CJtN5f/QXSS5VJGovXjF0lCtYoHMnj0c/sEfwspmKZ89w9nP/TVOsYBuGCQHBpFIGvPzhK0mEjATSYJmEym7Y6iIJTlyGJZNanAIv1ZVhE0QYCYSJHL9REGAs7KMWyzE3WgBuplT/+77+PWaMmyPBDKMEDGRQLxWdLqG1kmF6JYVT0maSOlhWDbJgUHcYgFN11alVtpfg6F31nI724eMQpxiiZWjz6PbNmHLQYubCDqkBnR8jEI/oFIq8tnP/jUA//w9P8bP/LOfonz0hS1lQq6kDNT6vY7faPTWyx56uI7YTv5SnjpPa2X5kuRitxSuU1jpFJ39ZoPlF55DCklmz17K585euSluIQiaDbWWbkZqtAv00SZTc5d5vs5xrzd28Xn8ep3y2dP49bqSpIkiNCnJGQZm3MQgO4bkMTabrNR0It+ndPIEg3fdjW6YlE+dQgpB6DqUz52hubxEoj+PYdtxh/i0asxrNjESCZZPHGPPwgX69u0nMzbO1Ff/HuH7pEdGlayjkFjZLP2Hj1CdPE/l/FnueO/7mXvysZ73UQ83HXYie96dk1qZLMN330ttegqvWsGruPhOE+EHeI0Gk3//BYqnTnDgzW8DuKQKSXutXzn2ItVzZwlcB92yiVy1/2/n8TKKELreaZgVuoFbKSPDECkkZjpN5PuIMFANT0LGTbZRp2gNqOPqRo/UuIa4JibhVwIiUnLIcY4EqnlPM63VRjrAbzZoLi2hWxYrR59f44NZPnsGt1LBKRaIXAcZSfr2H8BMZ3CWl9FtG80w8BsNdEvFMhmrlcgoQjMMgkqFoNnEK5cAsDIZrFiS0ykWMRJ1kgOD9B2YwK9VX9Gxa9fERhtjY2O8613vulKH62Eb2E0x82IBqt31q3QQI9ADZSTaHjuOdU4r584SNBsc/cSfrBpv5gdJDAyQHBxi9P4HGbj1Nsxkco0Mj6Zp5A4ewq2U8apVdUFtndb1CUK7Q+lyNWV7geia4pqTGlcKUqpioK6rf1+fSMX+LYl8ntTQMM3FBdxSidEHvq9D/G1FRnTLLQzfex+txUXccon63CzNpQvots3I/Q+SGhhcd8rtdw739H9vbnSv5235hdbSIppp4TfqWJksYUvJF+UOHgSgtbzEwO13IIWgfO7slhJn67U+5558nNB1SO/Zi1dcwW+q40pdR3geQaOBnkgQtlrse8ObSOTz1GemN2ykchMHOf6pT6oN3qHDeJUSCEFqaAgRqc2iUyyS2bM3jj1CTWY0m6seOcpVW8lgAc25eaQUHW8lzbIonjxJenyc0PWQkcCwuzacl4ov3T+PjWidwgpm/F2d//IXqc/MAGD19WHYCYTvI8KwI3MVum6HYOouToWuQ31+DillZ7Q4aLXwaxWM4VEiz1WECBqJXF6Zf2saURDQWloiMzZGZu8+nEKBoF5X30Mo1CZY05BSVyZ3rtOR72hPauimqQpKsZeGpmmEjnqdjEXkJah1UFOSjjKK8AOfwFVriW7bFE6coO/ABGGlhGEniHxPeYKAMihvNJBAs1YlEoI7LYufeOObOGzbvPA/PnxRmZAr5Qm02V4nMTB42UbwPfTQw+6xnfzFLxe3TS5uJoXb8WHIZimeOkHQbFzZnEAIhLeFrFV7suNK+2G8zHMaJfUU4LfUlCFSKdabhgkiUn4lF0NcPNJ05Rnm1qosPPM0umnSXF5UewMpcVYKSCnwKmWSA4OYqTTN5SWi73yb0G0RhSHC8zj1V49w+4/+GEYiQeHYUVrFFSrnziKlxEgkSebz5A4e6uzFzR/4h50Jj573UQ83C3Yqe74+J03mB0j052lcmKd0+hRmlMDo62fw9jswTJPS6VM0Fi4go4jW8hK5g4cx00rybX1ufc8Hfoo73vt+nv2/P6SkXKXoPPcASLFaZI5zBc0w1LSeEGp/jGo0UjkEyCgk2kB6y9Xmp+stAXgToVNHepnUkGQYoGkWZn9exTRQew0h0HQD3bbxKmWWXnyefW98q8prx8bwqhUKJ44RuS66pfI2I5nCq1ZYefF5Bm69Ha9aIZnPI4IAv15X+W0YYiSTqonb8whbLVJjY9SnJgk9l74DE6rpUNM60m9OsYCUcMd73x9LUr9yY9cVITbK5TKf/vSnefbZZ1lcXORNb3oTv/Zrv8ZHPvIR7rjjDt7+9rdfidP0sA6XW8y8VIC6473vJ3fwECsvPkfoOniLC+ph1UBDUxqDmka0eEGZjzYbnSJRvTVHY2mBsNVk9ptfJ3/kVobvvgc7l6O5tNTRJk3mB8gdOkL9wjyiw7JrYFmqmNKloyrXjSD3cGPiZcOwb4X2PddlQI9poknZkYmy+/oImk1EFGKm0xu6/9aTEZmx8Q1yC5mxPTjLS/iO0gSOPJf0yNiml7TdzuHM2HhP//cmxQYT5LFxkoODlE6fIqjXkSIicl3So2Pkj9yKblpUJ8+jGzpepczRj//xpt1XWxWEq9PnsTIZiCKS+QFCzyd0XQzLQjNNglYTIwxJDgxy27vfs6U/TGPhQqdj10ilMZMpnFKJRL6f9MgIbqlE0GyqGOG5EBMnGws7siN5K9bLXgUB5ZdOUjl/pvOsRl6XL0+8eUY3OgalG6DrXePtEY35OU7+1SMM3nob01/9e5xyETSdoNHASCbRLZPI7TaGlRunJuJ1RrdsglaTxsIFchMH1VRj7CkSOi1C14G4OIOGIiOERFomXrWCZloQGx0KEaEBg3fdRWtpWa0b6wt58RrXmaRwHUVEaBpuqag8PNpSXes7hLsKdULTaC4u0pifx6tV1GcxLWXK3mp1jg3ghSGRELTQ+L7xcZLLy8jxvR1JsK1kQmYf373HxVZ7nebCPG6puCMj+B566OHKYVv5S2Jn5OJ6KdyVY0cpn3kJEQTIKMJIJFdJ8Zc5QfCyhKYho0iRTnEMQtNUIWKbOZ7Sw28XJl1E4COjCDOZXpWZ1GL9D6GaERqOg55Igoji/fYoui2INGjMz3Dqr/4nmmGy9Px3EUIojXTDJPJ9QsfBbzYYvOMuIt8naLV63kc93FS4HNnzrXJSp6B8KsxkktTQCIlcP5qmkRjwWfzOs3jVColcP265RKJfkYrJWAq9O7c2Uym1b9fiCeNNvOTa0NrSq54Hmo5mmfE6gXrvVnv/1QP04sU1QreE+cupiiSCAK9UJDE4iHBcpZSQznTqSZHr4kYRVjpFa9FHTyQpn12V+g9dlyiK0HUdKSVupUpleoooCLEyWZIDAwTNJkG9gZVKxeFNSRib6TTSD4jiBrTmhQtY6TSJfB6z3TgST3jcDLFr18TG448/zr/9t/+WWq2mxm80jbvuuguAL3zhC/z+7/8+P/3TP82v/dqv7fpie1iLyylmbidAzT35GPvf+BbKL53GLZdUIqDr8ZhevPnUdWWa4zqQSmNl+3AKK3iVCmgaRiqJEYQ0l5c6HaKaoXe0SVuFZZaf+15nTAtQwWPdxMYlu3d6uGGgAfJlFozWIJ7UkF0FPV1XMjdWKtUxQA6aDTTDwLAs/Fazo+Xcfpa6yYj1cgtupdwZx23LyXi1GrXpSQZuuW3DJW23c7hbiqGn/3vzYKv1vG/PPjJjeyifPoGdy5McHMQpFmktL6HpGol8nsBxaS0vb0pu73vDm5h/6okNBeHK2ZdozM+T6O8naDZIDw2RHhnBq1QIPRcRCSLPJzdxiHv+2U93Org220i1O3ZD16N89gxerYpfr+FVKxiJhDJjC3xENVATGd1TVDtMNNYQkO1kBmI5JgPdMIgCubG4ssk0h4gipmNT0chxOl1ekZQEraZaP7qvbYuCjQxDQlyQIDyP6vQUqYFB+g7ciltSfysR+Gi6jpnrw0ylaC0uIEIfIdTaYSST6HZCaYwHalKkPjOLpukbr6N93vYap2kQRUrGKyaMZFvKiotfv/B90NUESmt5CTORVKa2EkKntfp9GwYJy6IaRUwcOoIeBmiaRmN+jqDVJNGf7zKSnCbRn0fTNFIjox2Zy9zEocvqKrr4XucWgpaD36htYgTfWy976OFqYzv5y/i99+6YXGwn7lIIzn/p75CRUHK3TbVX09rT4T1ce7QnBwGd9fnC9uK5DAL1Sk1TRq2JtkxHfbXLVzc6U5vtvYLw3A5xL6KIyHXIjo6SGhlj/ltP4JZL6j2GqbyqTDVdIqMIvwbV8+fI7t23baJtu14EPfRwo+NyZM83y0mVLM4KCIGZydI3MUHQaOCUilSnzqvnLYywsn3ohkGrUMCtlOk/dITU4BBGKkXUbvQTgubiBUQQKD+5rZYP0yQ5NELkOcooPK5HRa67Sq5eDD1C49qiPZF3nS/jsiAEXrmMYdugt6fg1V5D03VEFFE68xJWKo1bLOJWKmiWpfLeWpWw2QCh7rfI9wgaNaxMFiuTQTct7L4+wlYLIUWnyU+z1Z4mcFoYlkUoJSIM8GPp5cTAADIMsdJpkgODhO1G8lcwdkVsnDlzhl/6pV9CCMEHPvAB3vzmN/PzP//znd//+I//OH/wB3/AJz7xCR566KHe5MYVxuUUM7cboIy3/yBmOo2mdUnztLUKw9Xu08j3kUiclWXVHaoryR7DtBBhQHNxgf5Dh5Vu6egYiXyewvFjFI6+QOA6qDEQbW2HaBuGsbm2ag83LF6WwWg9pES3bSUrEwQYqSSR7+OWSh1DMREE+LUapdOnMCxzTWdJNxnRLbfgVsoUTxxXPjSx/mHo+7iVCsUTx0kODq2Ro9pp5/BmUgyvVA3FHhQutp7ruk7fgUP4tSp7XvM6Fr7zbDxtFFF66SVkGDLy4Ks2SKlVzp/j9P/6C6x0mv7Dt6wpCOcOHqY2M4OIBHoigVsuYaQypEbHCFstvFoVO53m/p/5OfJHbrnotVvpNFEQUDj2IiKKsPtymOk0zYUFNaHQTigMY7WLp43dJBvdkwhSaZRG7QLI+piz7jx6IoGVSiujQqfVkdGgPcm4k4KZlGpMXtfV0InvK6+O88qkW4QBmmFgpjNI36NVra4SBmGIADBNIs9HRKEa2TdM/KbyJ1kzabLJuTvye5qm4nosTaUmJOWl4297D+B6gKYMctuEiW5g2FZcSDTYk82iBz52Xw4At1IBKbCzfYo4zmTwqmVlHB+FVCcnaSzMc/Iv/pzU4NBl+W5caq/Tf+gwjQvza4zge+tlDz1cHWxW6L1U/nLw4YcvKo14sWJxc2kRt1QkPTqKWy6qNSCK1Fq3lXxUD9cUu8oXYoPxUAPTtJTMTDuWyq4YH//dkVL97UVEa3GB9Ng4URgy9dUvrzVCj0JCT91rVjoTG8P7tJaXGLnvgW3txXfiRdBDDzc6Llf2fENOWioSuh7ZvftIDQ5Rn5nGrVRwSwUiP8BIp5CofbHUQPgeTqGGWyqRHBxSXej9eax0mubiIkGjqbwNhEDJRsUembC6dxeCoFmP/QANNKm66zXLUo2zPeLihsINU0PqnlTfCaLVGhESrFQK3bYRYUDouhSOH2P47ntoLS3RXFpAhhFREGycGhICEUV4YYXIc0nk86SHRwmcVuxnqOPXFZmvGwZmto+g0cDSdcxUmijwCV0HWZb0HzxMenQMDW4Ked1dERsf+chH8H2fj3zkI7ztbW/b8Pt//s//OQ8++CA/8RM/wZ/92Z/1iI2rgJ0WM7cboGqzs7jlcmxaoyPbpkpSgq6pACJBhBFBs6k2lajCipRKw9BMpQnqdepzMwzfez9+rcrt73kfzcWFjgxHFF2EPWwXVS53genhqqItPfWylJ26FKQkkR/Ab9Q6RsaB6yomXkg0TcdIJkn096vR+mIBv9lg6K578MrlDhnRXFrESCQInRa16SlCVwWoTrFY10kODhL5HivPP8fYa16LlU5fdufweimGXqfYKxvbWc9r05Oc/bu/BSHJ7d+PCEOai0rLtnTyBEN330MyPwCogq+dzVI+c5qxV71mw7Nt9/WRHh1VSf4Dr8KvlHBKJURLFcWtTIY9r3kdex563SWvPT0ySuR7eLUqmb371AiuE6lY0jGv1pCaDtEm5qy7hexKgOLNKF3G12sQm5ra2b41b0UIpKYpTd/LRTf5oOu4lbKSTglDJOCvn1rsmlYRzqrkldS0VS8NIdRnuaQ5uorDZjpN2Goqk8T267fZVCCjkLDV7MTpAA0RhaTNFOmRUTXNubKM32ySGBhUiUscN9rG9krzNcItFanPz+E3G8oP5sAEeqy/vFPfje08G4Ztd4zge+tlDz1ceUghWPzut5l78nFaK0tqAi2R7BR6L5a/DBw+QrPh0lxapPTSaeaf/hZusQBCYPf303/o8Jo8p018+I0G5bOncUpFMnv24NZqBE5LTav10ojrgvbXfsWyhXZsCwLCtlyxbgCi0/UKqAJmV+Ocputg6FjpNIWTJ5T04vpjhiERoDlOZ/9uZ/oYue+BS8aGnXoR9NDDjY7deDh256S1mSnOfPavMVIpalOTylvAtgENI5kkcl1kJJTBN2q6uO0lgKbRXFxARCGh4xA4jirqxtMXqqFGU89+1yKvW1b8+9U6loaJYRpIw+hN711nXPG4cKWwi41C5MQSv7pGFCqJKDUVL/D8Eovf/bbyYexSw9mArtw7dByEEOQO3YJuWbQKy2oflUwgYqmqtqcGpkl2z15EEBB6HiIM6D9yC26hcNPI6+6K2HjmmWe4//77NyU12rj//vv5vu/7Ps6cObObU/VwEWynmNne8LdWVhBCGbPa2a0DlKYpjWwpIoxkCsOyVGdrGBK2WsrsOwyQQhC6DoZlE+Gjxf+HriGFUDIT1SpuqUTYbFKfm8UpFFRnJ6wZTd4SvUzkhkO3n4bkBgxKu4GmIyKBUyqg60anyKpremxEppEcGsK0E/i1GlYmg53rxy0VWX7hOUbve6BDRrTlFpZfeA63UsHKrEouSCkJmg0yo2OkhkeoTJ6jtbyIbpi76hy+GTQUe1C4VMIROC2ccomUpjF01z1omoZTKgEaiYFB/FptjQQQKJM9EYZKk3YdNE2j/8gtOKUibqnE8O234bs+frNBUKuQHh3ntne/Z1uF4dbKMoadwM7l8KsVzEyGVrGA8AMw29MCm0zyXQwXm1K4FOKCxqbHkLJjaC6lUJNb7fe0u8R2Gad02yY1PIxbLq8ef6vr3Orn3WTEdoiJKCRyo9g7I9r1JIwAIhHG+uc+fr2Ole1TXlz1GmGrhWHbGIkEViqF36ijWwPqftN1mktLhK6DpuukhoaxY/3ly/Hd2HYyns321sseetglukmFsNXESmdwK2XmvvU4C08/Reg6WJkMyYFB9LExll94jtKZ09z2rvdw909+kNbK8ob8pTx5njNf/goL336W8pnTRL6HbtmKYB9WPkztYjHA7OOPUjh+jMaFOfxGQxGkiSQyCtF0ozOh18O1RXe+wJVqhIqnMVSTnEXkOKrrdd3xZXtKJwxJDQ6R6M8TtFpUZ6YRQYBuWaveHLq+2hgQRoTSRTcNdMMku3cvA7dulItdc64u+cPcocOEzSZ+tYpuWeQOHaYWT3Ls1juqhx6uJXbr4djOSTNj45ROn2Lyq3+PjCKSA4OKzJASwzCQuoFmq70ZgBnny2EQELaa2H05NM3g7Bc+Syqv1A20eA2Qm8jGtq/PSqbIH76F4ukTRH48pR30ZM6vN7pNwl9RiPNFTdfXyu2DkvFvE3Gwdb4qhFLJMZQfjJ3N4qwsK78ZlGdMZnwv9fk5ZOzDmBwYQKLhVStKwiqdVvLnU1Pk9u+/aeR1d0Vs1Go1xsY2N73tRj6f5+jRo7s5VQ+XwMWKmd1jsaHrKtPW2RlGH3jVltI3ffsnMJPJjv62putq3MkwkEFA6Puq3msYyDBCS6oimBQRhmWDpisDVSFxSiWWnvsuumky9bUvU5+bJWg1VXDcTadrD9cFL3uT8EtBCpAQtVpI28ZMJTGSSaxUBqewjG4nADDjwplfq6ogZpjopsXE297RISPacnGlM6fxa1WMhK3Md8OQoN2VfPAQdl+OyPe59YffTWp4tNc53MO2cKmEozE7DWgqkY5/Z1gWuqk0qLslgNoeMjKK0GNpos1gJpLkD99CbmICr1bBb6lJppH7X7UjIi5oKU3QkfseoD47Qys2u5ZIZQ7amajYQSHqSnRfbXWMKFKTCetgJGxk7JezK2gakeerDtJr2UUmJZEXT05ervyjlJ24YGkahqHM2NuSYonBIXTTwm/UMRMJUkMj9E1MUDx5XGmbC0Ei149XryKjCDubJXfw0CrZtoWO84bL6JKqMZNJchMHKb10+rKS8R566GF7aOcYbVIhjLXMRRB0pHgye/YqY8vlRWpzM0ouwXGoz81y8G3v4MBbHmbgllsB9RwvfPsZJr/wt9SXlqnNqNwFDULXIfQ8/HoNO5PFKZdxK38YP9OL+PV6x1Ba+D5e3IhlJpIkBoYIfY+gVu0RHNcI3cWrK5otxJKxUoi1f8vuKcV2E1EYqa5W20YCoecQNBqrUlXEZuOx55ZE5aa6ZWPn8kSey9Bdd5MZG7+oHFpb/tBMJSkcfaHjpacbBon+PKmR0UvGsB56uNFwpTwcNV1n6K57OP/FvwOkkusBQBLGighWJq8m95IpZBQShREyUqbIIgxoLi1QPnsazTBUF7xQJuCabqCZqqSpGSaR76FpGtnxPQAYyQSGaanJjUA15cpt+vr0cOXxcjUJ3zaEWDsN1Ik1rDZ0X2yiPpbo1XSDyHXJTRzEymS57d0/hm7oFE8ep3j6pPKNAVJDw/RNHCRstajNTuM36ohI2QYM3n47t7zz3TfNpOCuiI3R0VFOnz59ydedPn2a0dHR3ZzqFYuraTDWHgE/87m/Jmy1yE0cJD02jplKsvzC8yw8+xQj9z1IZmx8Q4CKPI+g2SDyA2W05nkYtoWZTMUdrVGsjZ1FxFpuanZQjf5GrkPkeUgpkUISxibLc49/U71WiF5IeRniFU9qrIMIQ6x0hvTQSKzhayBFpMb8XKfTBS+CAAy9owXajf5Dh7ntXe+hPjdL2GoRag66YZAaGu74cviNBmYiQd/+CWUEFRuP98iNHi4WIy6VcJipDKm8xEytjohb2SyJ/jxOsYCd61cm9nGCIaXEbzTo23+AoFlHytFNC8LD99zL3T/5QWSjTK1Y3Xbs6v4sQaOObtuYiQQj9z9IfX5Oyb7FEkw7NQi/XhBBEE+3tL+ny7tmTdPxG43r5yvV5aWlGyYiDFZ/fsm3rsYEHTrEjBCSoNVChKEazRYRke+TGhkhkeun/9ARSi+dUvJ+uk7keWT37KX/8BES/Xn8ep0oCNBNExFFOKUitZmpTe+1zXTN7VwOzTB2lYz30EMPW6MtvdOYn8ctFRGRMn9tLi8qg0tNFY1F3CEbeV5s/iqx+/sJmk2WX3iO6tR5Jh7+QcxkkpXjR5n62pfxymUlp+A6SjbPttA0XeUczYCw2YSVZarnXgLd6OitS01D1w102yYKQxAilj2skB7bQ+S5ROv04Hu48rgqxav2fkTXAU3tF7qLRN3FpHYByTDI33IbXqVEbWoSKQXC9zqv0XQNib5hokfTIGg2yI6Pc+Qf/TC1memLemcErRZuqYRbLRN5fsdLT5kmF/EbdZL5wQ1eBD30cKPjSnk4JgeHyO7ZSxQE+PUqIowUKYEgNTzSeX6TQ8MYpoFTWEGEppKkklIR12GIoetqXxiv70pdJKnW/LjYayST+NUqGDq1mWmiMESICN3Q0SwT3bYJKpWr9ZX1sAnWT++98qtIq9B1HbFuskgzLWS4idSyriPDkDD0kCKiubCAmUwhAp99r38r469+iMbCBU791SM05mdIj+2lPj1Nq7iCCMKYq9cYfdVrePBf/qLKv24S7OqTvu1tb+PP//zP+dM//VM++MEPbvqaT3ziE8zNzfGTP/mTuznVKxJX02CsOjXJ7GPfYPrRr+GVy6qAFQTkDh4iu2cfRjLFyvPPUTl/lsjzMBOJToACOP2Zv0S3E9iZjNKmlRC6HqGjZCI0TQfdQDd0jEQfYaOBmUoiggDh+6r4GxudaoapjJilIPTcjl4isP3C1cukyPVKxiueYd8MUmnIO8UCoeuqEUJdU3I5mkqqEoNq6qlNTmymMzr+6oc4+LZ3sHL0eVKjezBjCRRN0xBCUJ+dws7leelvPo1bKiF8v2c42MO2YsTFEo6hO+9m8u+/sEaOR9M0cgcP4TcbuKWiGnU1VFG9tbxEamCAve98F/NPPXHRgrBumqT37sPIjwCKtGgsXNiSpF//WXTbxi2XcMtlhu+5l0Suv1OgkNEuZZGuIWQYrpp67wJREEC0++NcNjoxNp6WactywEX/FheNC1IghEC0mlh9fRx88w+g6Rp+rUZ9dkZ5XPzAP2TornuIwpDTn36EZH+eoNmkOj2FX60oPWXXiSeJLM589q8pvXR6zTOwla55c2kJzdBJj47i16pbJuNXs8Gkhx5eqWhL77jlsuqojeVFhO8r6U7DQASq29YtV0Aj9jTQ8Oo1QtdFRCGB46BrWsfzIPJcQtdVXbXtrl4pFFGy4SLaJrGRktOLcwshBHTJjUghiTwPt1TAzGR7xMZVxlXLF9okumGgGwZCjVpcNEZpuo5Xq9JcWlKEfXezRttfqzvH7NxTkszYOPf+1L9A03VOffoR3HIZuy+LZfchRUTx1MmOHJqZTOJUSkSOQ3JoeHVK1rbRLQunWEBKMJPJK/mN9NDDNcHFZM+3s4eSQqiGJsskOTJMPnUrMgwJnBbV2HNDaup5lYFP4AmklMoPLZWmPjOtZAVNCyuT7aiJiDBChkquCt9TNSYhiBwHYRhkxsYxkim8SgUZBETx8x11edT1cPVxM5MabYJdW9fUrRk6MtqkvhlFhEGAJiVWMo2ZzhDU68x84yvkDkzQf+gwffv2c/uP/hgvfvyPmP/W4/HkvaopyTBEt0yc4gr1udmbqoa0K2LjF37hF/jiF7/If/kv/4Wnn36a1772tQAsLy/z6U9/mscee4yvfOUr5HI5fu7nfu6KXPArBVfTYKx97NbSAiLujtQ0HadYJGg2Gbr7HlIDg4y95rW0lhe59YffTW7iUEeS4finPolXqTBy7/0k+/MsvfAcQbOhuloiDd00SQwMYaVTWJk+zFSyE9h006Q+O0t9bmZ1/FjT4u5P9V4BMbmhb19m5GVS5HpFoy0Lcp0v45pC1/BbLWg20QwTKQUEgkgLCerKkDLJ4CWlTTRd58BbHlY+N8sLWLk8IooImg1KZ06rDVgUdSRX8kduxUwm1qwHPVPwmws7iRFbJRwAxVMnNkhVJfMDDN11D8svPIdmmDTm59ENndzBQxz5Rz9M/sgt9O3bv+3urEsRMFt9FrdUolVYonAcUsMjSoZKN5TXxU5xOeT3jUSY3xCkBiAFUihTRiud6axTW8pjXSIuiMAnPTRM34EJJt76dqxstqPBb8YkcOX8OZZffA63VKJ85iWiIMAwDOxcThU//UD5cJgWRiq15hlI3XlbR9e8//CRzj2uZ7Idb45EfoA7fuwnCF13w9p5NRtMeujhlYy29I7dl6UxP9vxEBNCFaQMy1YSfZpG6DSRQqgJiihCRoJIesgowg8CdNMicFqqRi26Oup3iq3IWKlyjsgPkGFPhuqq4yrnCzKKiISgzWt00CbkuzpjZRBQmzyHZpqkx/agW5bKUdv7jPZkR7e/lqYxdN/9vOYXf4X8kVs4/qlP0pifR0YRjfnZVYmpXJ6w1WL28UeZePgH4sNdxAerp1XQw8sYm8meb2cPVZ2aZOaxb1A8dYLq9BThaZfcgYP0H1YFWiuToTY1RW1uBt20CFstUsMjRL6PCAKa83MxESGV9yWKIIx8DbsviVerKuJbSsxEgtDzQNPRTAuvVkOr15SkummqCfUbZd9/E0ED5M1GaHRBeMojbMOd15YAXn9PhiEYJna+HxkGZPftI/L9NT5NuYmD6KZN6DqIUMlIG6aJnk6h6Sa12WnOfPavefUv/cpNUy/aFbExMjLCxz72MX75l3+Zr33ta3z9618HlKn4M888g5SSkZERfv/3f5+9e3t6km10G4xtlYjPPn55BmPdx06N7qGxsIhh2R2DNa9S6ZjFWuk0umGSGh7tBKrGwgVq01NkxsZUZ+/EQcxslgvfegK/XkdLGIAkPTzMwG23Y+f6KZ06QSLXT3JwkNrMDH6jDlKZoZqpNJqm4TcbsacGysgtCOht8F5euOmCka6vkYWRhDGBp5KgMAioTk9h5/pjU6eN0ibdXSxuqYhuJ2gVi/iTk4gwRAQBdl8fVraPyPdik906pdMnGbr7HvoPH6E6eZ4zn/0MyfyAGqftFd9e8bicGLGVz9JWUlVeuUz+0GHMVBq3UkGKCKdYZO7Jx9B0/aLdWd24FAFzx3vfz9yTj236WYbvvY/CsaOAxKuUO6Zomqaj2RZCRNsnObp1tbeTtOh6u4Voe8d/JaPdZBBPY2qWqSZoogjhtDqNC5u+9VLHjiIMO4FTLHLykT/FsBMdmSiAxoULVCbPIcMQO9eviJUwRADNlRX0OBm1MmmMhI27ssLwfQ90jFgzufSaPcuaa4uJ4vrMNJqudzT827iaDSYvF0ghqF+Y35GkXA89gPJJijwPy+5TElSx3IGu62i6piRG4o5aNBCeH8vTCvWcR4CmYdgJIt8DX2Akk1dvRRYC4Tpxl38PVxNX/Rvu3Efr7pZ2nIqnD1XSqXJPw7YJm3Ulf6NpG++zLlLDTKXwKxXmv/U4brlE4fixVam1bompUhHNMCgcP8bg7XeQHBjE1TTccgnDTqjzSKn29+k0yYFB5RfTQw+vAGxnDwXw4sf/iOr580ipSO/Icym9dJJWYYXx73sNum2jWSYDt9zK0N33UpuZpnHhAn6tpnxv2qRgvDcJWk2sVBo0neTAIFII3DAkPaQapCK/oBoRkYROC03TMdJpZEx+9HB9cLNHXhEGq0SGpnUaPzaFpqGZBn61Qnp4hP5Dh9FNa41PU2PhApXJs9h9/ST6+0EIVe+1bQCcwgpLz3+XxsIF+vbtv4af9Pph16Jbd955J1/4whf48pe/zDPPPMPCwgJRFDE6OspDDz3EO9/5TpK9scs1aHc5XSwRv1yDse5jq65LQ+kR2nbsibFqFqsSCnuNdE47UTGSqc7PDNPCTCYxkyll2OR79B9RBYLC0RdoFQpUpyYZuO0O/EYNO5cjcFqYyRS6YcSapWoTKaMQhLZ192cPNwzaof+mDUQb7lFNJVIaoJtomk5jbpb06CjDd92zgWTo7mJxyiUaF+YxTIuBO+7ATGcoHH0Bp1hUnjSei92Xw7BtDNvuEJAj9+cx1/UVbQABAABJREFUkkkuPPUt+vbvIzdx6JLFt56syssfVzJGbCVVlR4d7Uzx5fbv3/K+utjx1xMwAEGjQRQEpIZHcArLnP/S3+EUC1t+lv7DR/CqFfa/8c1K09r1qJx7Cdpa6juVpdouwdGLQQqGofYJfhR7XwmkFB15GSU9qSENAyKBUNaq248LmkarsIyVyZIYuIfU0Ait5UXmnngMUJ4vumli9efxa1VEEKjiZhggPA9pmVh9faQGBtB0A69aIWw2O89AdXpmw56lG2YqhVNY6eiad9bHRoPJr3wRt1wmf+SWK9pg8nJBO0Y152fwm06PMO9hAy62n7DSaXTbxm/UkWGkXpPJxN5JSfxmAz0u7oaeq4jqDcVoTeUFmg6IjozCVf5UV/n4Nx/aNMI1w7bi97rpndi/ToTt+21zWKk06fFxROCzcvR5SmdOU506j2YYJAcGN0hMufH+PgojzGQSK5PFK5dxioXYw0PH7suROnCQRDa7qVxtDz283LCdBqzpb36d5vwcKy++gJGwsXN5EpaFlUrhFAq4hRUuPP0t1eiiQXJgkMb8XKeRT0Zh3OykKf83y+pMXQStFnqcPwdOS9GYUmAmkhiWRRRFasojnuCKAn9VCr1HblwTSClvCj/WbaPLy1CzLKTvbx7LTFPFDjQwDMx0hkS/UvrwZmconj4FQG1mGr9WIzk4iJlIbDiM3ZfDLZeoz830iI0dHcQ0eec738k73/nOLV9Tr9fp6+u7Eqd72WMz8qAb6xPxyz22pusdk1jdGlDGnqZJ0IqIAh+vUtkgnWOl0xiJREeT3a2UKZ08iVMqohvqdtEMZejkxr4DVjqtdrSaRmtxCc1QQSNo1JWpqkTp32r6RnO3Hm5IrNdCvKmgaSrpEevlCtSkhqbp2H19JAYH8atVDrzprRz5R/94g59Au4slPTpGc2lRyTAEHqXTp+g7MIEUksz4HrxKmdBxSAwMxqdXBKRbKdNcXKQ2NYXfbJIcGceKfRK2Kr71ZFVeGbjSMWL99IWZTDL9tS/TWl4md+gwYbOJV61iWBa5Q4c73fCXKuo2Fhc6BIxXrVCbnsKrVuKRWAMzlcar1jATCTLjeza8X0qJCEPV3ZhI0nfgIIUTx7Bz/ZiJBG6lrCRLPE9JiewAumUho2iNGWgPmyDWxl8DIZBC6dNLZFwe0oiQaFIiNA1ju8eP/8bp0VHSI2MAtJaXMWybKAhwigWy43sxbBuRyeIUCmgoHf62nEj7b7i6fwlI9PfjFFZAk2v2LOsROk6ngaN7ffSqFarTU6SGhvGGhkjmBzrv2W2DycsB3TGqf99eEkOjN920yisRV7Kx4VL7idBxcMslqlOTCN9HlItY2T6SAwPY/Xn8Rh1N1zGSSYSUW3hkCESw6rsnYzPYXvHp5YO29NKNLjMSOg5EaloIfesuWQydoNnESCZJje6hPjOFV6uSHtuzaXOGkUjglcvMP/FNqlOTtJaW0AwDI5lUDUuWRRT4VM+fZf+b3rKpXG0PPbzccKkGLD2R4PwXP49bKoIQGGEaGQkS+Tx2Xw4zk6V5YY6g1SC7Zy8Dt9+BmVINVrWZKfxGg8yevUS+j9WXozk/S+h6CC1ScoVBgBQRrWKRyHHQ4olBlYOEaye62nJzsCo514svVw3dNaRrTnq/HCAlmhBgmuimpSZWY+l+DTBSafR4Uj41MkrkuTQuzNO4MI9TLPDSZ/4SM5VWJF8YXLJXQ8qb5y+wK2LjHe94B//gH/wDfu3Xfu2ir/t3/+7f8dRTT/HEE0/s5nSvGKwnD9ajOxHfzbGtTLZjEutVypiZDJHnE3oetelJchOHNkjnZMbGyR08ROn0KRIDPqWTJ/AbdXTTRDMtpXsrNIonj6ObJsmhYfVQRZHaLBo6fq2mxoSlKoKoUXQJUbB6ob2k5YbFTWkSvh7dpEZsLKibptIvtBOq5hZ7xiQHhzfIT80+vtrFEjQaOMUCIggRgU/klXFKJXRNIz0+HstP1QidFna8HogwwC0VWXr+u3jVKpqmUTt/DsM0OgW49cW3yPNuelmVVwquRozolqpqLFygNjONkUpSOPrCGjIi0Z8nNTK6raJu0FQETOh5FE+dIHJdrEwWK6NkGrxaldB16du7f8NncStlNUFSXMFvNPneH/4BSEHYcghaTSXV1im47zxWSCl7pMaVQNyIEEhFcJg7ITViGLZN7sBBJUtZr+NWKuiWjYgiQsdRpr+ooqaUAuGFWBk1ySGlIHJdWisrJPJ5dMPAsKzOM9A/caizZ+n2kQHWeB+FjsPpz/xlZ33U7QS12Vm8WpXiieMM3X3PGnJjNw0mNzrWxyjbNgmC6KaaVnkl4ko2NqxtzhhVXjuNBssvPEdjcYH93//m2LBSnQfU8+bVqoSOg5nOkMwPEvkeQbOpyOmLoWPYLNb+dw83LF52ZrDt6c+t8k/diIm2EL9eJ2nZmLZNamSU8pmXCFtN7MzGGOM3GkSeR2PhAkYigWYqOU0RBAT1GvrAQHxe6JX4eniloLsBS0pJ0GggggDdsnBKRZZfeA6vWu0Yfmuehx+FREFAemQEI5FEoiGCgOTICFYm0zmGmc0ReS6J/pySKnRdEgODREuLHS8N0NQ+0vc6TbNhq4WRTILnQhBsfuG9vOCq4mUXF64HtLaKTYTUjQ5BbiSShM0Gkedi5PqRvo+u6fitBqXTp/CqVfSEjVspEy7MEzqOIuwl9B2Y+P+z9+dBcmX3fSf6OeduuWdl7di37gZ6JZtsiqKabFOSWxQ1MscjyrL0OCM9UTJHCirEGGtCMxGzx/wx46EjFE+cN0E/S/bY8oxky5ZsahuKIZHiToqtbrIb3UCjG0BhryUr98y7nvP+ODcTVYUqoAoooArA/fyDQlYut6ruvb9zfsv3u05s6uBWqlQOHNi5n/Uec0eFjcuXL1Ov12/5vAsXLtBut+/kox4oVhYPbrYRv52ujrXvnRurMfnEUyyffoPO1Ssk/T7SdgiKpdFmZCVCSg584IN0r11l8ZWXSeIIrzZOPBgQdbtI1wFhKuJIaTpqtcbO5eHCHEGzYbRMvRwWGhWGxpNghSmbsExaJEs67T6yogbrmE5qpOvi5E2y2eiDBoS9Dl5l7IaAsbaLZbBcx280RrqHdirnFkcx/fl5CtMzCMsmaDbNZiiOGNTrI/8NtMYuFgm77RsScKPkW7fL5W9+7a749mTce7YrRmzUvRv1+wway/jNBioIVhUjBvUlgk6bfG18VVJ3vfdyikaKpPn2W2bjMVZbJdPgFEtEvR5Rr0tr7jzjJ55ApnFj6fXXiAeDUcJLp5sQ4RiZt3W7e7eA3mhTk7ElhpsUC0bdRFvCsqgcPExp7z4Acz9cXhot6lUY0pufpzA9TdTvGfNhrY38gJToOEHYFiqK8JeWqB49hl0s0j5/jvHjJyjv3cv+51+gde5tll77HoXpGXITk6YYsjBPbmyM/c+/cIPPi1YaO+chXY+43x95jw3P3ztpMNnt3E051IydYTv9YlYWvrxajebbb5nid5IgpEXv2jXqb5xExXF6LSlUEqMFSMshCQKEZVGaPYLfbJjrWspMAOoB4r5LXglhChdJzIYm3mmBPfEHAPiA36jjVowkrJCCoNkYFd1VHBN2O6Zpw3EpTE3jNxrkJyaJ+j2SICQaDNBoqoeOUJieIWy3tnxfzeRlM3Yjwwas/sI1+gsLoxihkoRBfQmdJEjHNvKlljRShJHJAwXNFt6YMEUJKfGX63QvmekNIaTx4ogj/GaD2iOPMVhaJOx2R9cdkBYoFV5ljEGzgVbms0Uc3wM5w4z1uO/iwj0n9X1SynhtkEr0Q6oIIrDzBaJ+j7jfR1oWSRwT97pEOp1+iSKCZtOsuRJlVA+aDYS0KExPj66RqNdFJwkz73z2oVrHb6mw8fGPf5yzZ8+ueuwLX/gCH/zgBzd8Tb/fp9PpcOzYsds6wAeRYfFgPUPX4UZ87STFnby36Yr0EQgKU9OMn3iCXK1Gf2GBU//2927Y8FQPH+HQB3+Y+hsn0YFP99JFkjBAJQlJP0rlITSoeLQ0VFFIEkVpx6VG2jb5yUli3yfu90mikCSOUzMc+0bpi4wdJQtG6yNcdySFEg9NdLU2OvCuu27AWNvF0p+fB62Qjoe0LNCaREicQpG436e3MA/aGJy1uyYQaZXgliuoJMFyHLxqFbdUHnlvDBNww+Rb1O9liaoHiO2IETfr3rVzOfzGMnG/T35yao1mdI3B0iIDwE79sTZ6r0f+9g+TG59g4ZWXyU1MrDr3okGf/vw10Jp+fYmw26a3MM/4o8fpL8wTdbsI20YnCZbnkZuYJOx28K9eIUkScJyNO64y7gkr48JtFTXMC7HyOcJOB5XEtM6fJQnN/RPLNoW2Xpfu1QSBRno5VNIjbLdGhuUjTzDHxSmXaZ8/N7oGmnPnufS1LxP1BwzqS3QuX8LO5Snt3cfkk09x4AMfxPK8G+6PTqk0kuq0C9e9x9xy+Y4bTHY7d1MONePesxmt84tf2Xxjw7DwZedzLL/xupGcXWGY3Fu4RnCpgTdWozgzi1sqmwm9VhNh2RRnZ5DSxsp5tC9dQCs9amjKuP9ZGxfuC4Qw8lOb3XoKgYojrn7nr5l88mnjrWFbCARht2PikW3jlspEvR6lPXtJggB/eQkQI21528theznGjj6CUyzSuXhhS/fVTF42Y7dSnJnFrVS49NUvjxqZbMuie/kSKggQQmLnC8Rao5Uy6/04RoUhkegiczniIEBrTePNU+hEIV0HO5fHLZZQiSJcWABlmmd1kiBth9K+SZK0IWvi+Amifp8r3/waKtEkg4GR9clyTPec+zIu3HOuF9R1HCOkBQikbZGkjeB2oWD2R0IgLAu/sYxOFJbrEgc+wWAAWiEsC2k75hrr9/BbDaRjY7kuWoOUksnHn+DRj/zEQ1UI33Jh4xd/8RdH/xdCMBgMGAwGN31dpVK5pVzVw8ZGhq7jx0/c8YJl5Xu3zp+jceZNol6XsSNHqRw6POr2doqlDTc8uXGjOT2sjOcnp/AbywTtVloJTy9OyzJa5nFM0FgGy0JHEbE/AGlRmJomHgwI2i0iBCqJsRwXFXZv++fL2H7SGnJW1BgiJKCNhqEw3bsqSQi6HaRlYXs5pp56et2AYedyKJXQu3YVaVlEgz52oUgSBkZaRSmkZfxvkjAkarewCwXT7dVsmuSAEKgwxJvdQ25sjKjXA8ApXk/AOaXSKPlmF4pZouoB405ixK26dw984IPATRaf4ro99Fq/GJ3EhN0ui997mWBpgdLBI+Y873VHPk5hr2sKekBhahqtEkr7DtC7cpmF772CiiKcYhHbyxH7AzTQuXyJqNMxMUclRpddCGOulrEjDOPCHW1S4pjFl/+G5ptvYufzCMfBLuQJO52ROfnQk8tozEr0UAc9XdiLVGtWxRFRu8Oe73vv6Bw++bv/F92lZcr79lE5cpTu5Yv05udBwL73vZ/q4SM03n7rhvujEGIk1Rn1umiliAPfeIXdYYPJbuduyqFm3Hu2ewIn6veJfZ+gZaQEvbHrk0zScUCZRJXWGuk46WS2wq1UiXo9VBghPEnz7NtISxpvnMDf1M8iLGu1NnrGLkXcX/Z7WkO0hS5uIcCySXyfpde+S/nAQfxmExUE5t5YrlCcmTFeHJ5HYWqa1tw5U7TP5bDTtX4chkZ+sbFs/Ga2cF/dzimsjAeLnZziGX12N107oUdqDyqKRsUKJAjbximWzDTHUEJKGd+1JIxQYWi8MYTAKZVMk58/MPsCrUYSV16tBkLgh8v4y3WKU9OMHT1Gf2Ge9qWLqJX7hKyosXNkOaTbwHi3CstMpke9LtKyTKEwn0faDnHgmwJHHJsaveOl/oWm2dzycuZ9pCQ/NYNTyDN+/HEOvvCDD12M2FJh4/3vfz9f/OIXUemC9m//7b/Niy++yH/9X//X6z5fCIHneYyPj2fVu3VYa+i6ncFp+N6Lr36X1//vf4lXq1GYWr3pudmGx3T0NogHfbzKmBnxi2NjgsZ1mQ/LdY2HRirPM0QLwWBxgcQv4+TzlPcdoHPlMoOFa6go2tymxbava6Jm3HWya3QFqRZuMhhQ2DNL6OUIO21UGGEX8+z9/h/giZ/+T28IGK3z57jwV39J+8IcQbOJ9DxUYCR6tEr15LXGKRaRrpvq7krsQmn0uE5ivLFxdBKba+fgIepvnDQ+OfnCyLugv7gwSr4ZbcYsUfWgcTsxYjPdu1e++TVy1RqBEATNpjkfR+OrPZx8AbtQoH761Ojcc8dq1F9/jaDVNAkt16W/uMC4H1I5fMRIWLXboBVROkJbmN1jRmkDn/LefdQefYz5l75Df+EaTqmEX68zWFq6buynU9lCQGXG37uC7YoLUa9riry5vNGXjWMT2mUqgZhOZ2gSkBK7UERYpsNPWBK3VCYOAsoHDvDEz/xnCCk5+X/9CwaNBvnJKQZLS/Tm54kGfXSS0Fha5G/+j/8P7/6V/2LDRP5QqrNx5k0G9SUGi4t41eq2NJjsZtZK3a3kQZ9WeRDZ7gkcp1BAa4XfqOMUS6vuASoMScIQYVnE/oDulcuoODJTGVIgbYfefEhufJyg08YtlNCqb4qVQlx3El1vXS8EhZk9+I1lIweUrf13JfelVcRWzyUhIIlJ4sSoEaiEqaefoX/tGn5jGb9eJ+71mHrmGWwvR39xAZ0kuJUK8aAPjmMMxF2XuG+mV1UcM3Hi8U1JiHavXuHN//Dv6F27OpLwBBCFIvnJKVrnz/H2n36Od37ik0j7jlTFM+4zdnKKZ+VnB60mrbnzuKUylu2QBL6RXlMJlusa6eYkximUCFut1EvNtMtoDUkUmkS4lFhebrSvsWTO7DOUwimVzJRUu502Tllmj2BZtC7OETYb+I3G5g5+ODWY7SvuCvdbSNhxtDYyVJYFUiClQ6KMhL+SkjgMEU3zW9VxKqGYegwiMN6v0iaJIoSQuNUxijOzPPHT/y8qBw8/tJKFW46Ge/bsGX39K7/yKxw/fpx9+/Zt60E9TKw0dL0b7+2UyliuR35iat0ExUYbns6liwwadZL+gKhvNhhJ2nElpIUWcVotjJHSMl22qSnbcDFn53NYrsPYsUdJopCFV1/Z2uIyK2rcVYb7y4x1SJOsKgzo1+tmNNB2IFG4lQpRt8ulr/4VQsrRQrJ1/hzf++f/lOa5t410Wxylkx4xKlHkxsYIOm1EopHSIu73EJZFfmqa2WffhXQ9VBhQP31qJAEUtJqM2Y8w+cRTI6Pl2A+I/QETJ54YLWS1UnfNtydjZ9lqjNhM925v/ip2IU9+coL+wgJ+s2kK00KYiaP0nDnzh79Pb/4a0nUIW+1RQktaFjKMkJbg2kvfxquO4TeWTcI6iUnCAHeshoojglaL/PgESivCZhOrkMNvtUjCgCSKTEJ75X1+mOBW6rqRbMY9467EhaFZq1Im6WNZ2PkCyaCPDqMbPnA4Yq3j2Nw/fXMvdatj9JeW6C8uALB08jXibov6mTNmc6uVMS0eH0e6Lu25OU7+q3/Ok//pz9+QyI+6XZIoMrKZ4xNMPf0ODr/4o7il0gO/IVgrdVfdtxdtu9sih5px79nuCZzizCyF6Rnqr5/ErVRXfU8lpslJ2g4qCIiExMnnEY6Zqop9f7RXiPt9VBShwsh4GwCg17U3GB2rb9ZMGbuH4Z/rodovjDTQzflamN5Dec8+SrN7ibpd4jBksHCV0t79uOUqjS/+BbmJCex8nn4UEvsDc41EEVY+R29hntLevZuWEK2fep3ldC+goojKocMAo4RyHAR0r1xCa3jkP/rIA1uEz1jNraZ4jv/ET2Hn83dlkmPtZ0vXo33xovFUEpKxY4+itWb59BvG1DgIUFFEsryEJm1aSpK0w9xFuh4CiAd9kjBAuJ5plI2iUU5JJyqd4FM4lZqR3Rn06S8sQJKY6ZDNxos0R5WxPTyUceEuICwLpIUQYOdzRF2zvrIcZ/Q7jqOO+SJJUAhkWhDUWg9LhViuY/K9k9MPteT4HZX5f+VXfmXTz02SBCvTWL3n3M6Gp3X+HG/9yX+ARJmKu1IgBSpOjDyEZaVVdst0+YahWQSm/hmW4wLglquoKKR++nUjS7JVM6esqHHXGI6N6mxscH1WnHux75tzXwg0pjuy8fYZ2pcu0Hj7LZ75+X9A5eAhznzuD6ifOom0HXJj47ilCoPlZSMd1TPSa7VHHqUwNW3MoXpdFl75G0qzsxRmZo0Jp9b05q8xqC/hVqomiRBF5MbHcStVGqdfp7z/IMd/8qcp7dk7WrDeTd+ejLvLeiPlwG1P8m2me1dIi/zkJIPFRUoHDpIEASoMiMOAoNlAK0Vp335K+w/QvXqF3pWrI98X6bpGFigMUEDY7xENBoBGhREqitBJTNzrgTTjtVG3TffqZSNT1WmjwoAgDK4nvNcj66q6p6zUx932uDDcUKbvLy0bnY5Qy5xnfIVW+KnoOCHsdkb3RLPBTYi6HeqvfY/LX/8qhekZWmffRroOsR8gpEQ6HkkYMlhaIj8xiZU3k6eXvvZl9v3AB2ide5trf/0t4/kVGa1nFUXkJyY4+mN/h/FHH9vOn3pXs1Lqrnf5AmHf3zY51Ix7y3ACp37qDSP9F8dIxzHSHrDlxgYhJft/4ANc+ebX8ZfreNWxFRN9nVGHuI4jhDTrIp1O2Kk4Mv9GEXYub3Sj0Ztbz0tJ0Gpm9/5dxFr/vfuW9dYaUq7fPDGcLNLp1+J68k4IgVsu4wK259G5eIHJp985kuN0S2XyE5P4jQZRP5WQzeWxPZcDf+uHNy0haufyWF4OO19gUK/jLy8DjCa77XwBv9mg+dab63plZjx43Goae+nka7z0v/8Gudo4Kgy3dZJjvc/WSmPnPKTrEff7DJaWmHz6Gfz6Et2rV8H3iVOpemnbSCFRhAgp8coVhG1h5wr0rl3Bsh1jhhyl8jqjtaKFcBycUplk0B9530Tdjmmy3WxRQ8rUH1bdfN+RsSkemLiwC5CWjdCaJAxRqe+GUy6howgnl0fFsZH3T3OoOolR0VAWVI1yA3Yuj1up3FVljp2UwNssdzy/2O/3+cu//EsuXbpEGIajhCmAUoowDFlcXORrX/sa3/jGN+704zK2yFrJgVt1cg+DV9zvkxufAAFxr0fs+wjbQoeJmYByXUgSLC9n5EKERFoWVj6H5Xpm46MVKk4YLJnuymGSS2eGsDtGZhK+SWTaqYUZAUzSgCJcl8T3UWFgtNm7Xc587g957D/5SeZf+RuEkMZkUIh0aimPVynTvXKFJI5wy1Usz0NFIUG7hZ3LUZidHV2XK3Xf/eU6wrLBkoTdLv2FeYoze3j0P/4o5X37bzjku+nbk3F3WG+k3K1UAAjb7dsaM99MMdv2PPb/wAd464//A9f++psIYab7In8JlcRp11RIEpjpIK0UWgiSwMQBadkkShG2mibhHHeQtoXWetUawGwipIkfkUl46ZUbi2wiY1dwT+LC8P21RgU+SGkW5utJjmkFCejU62joeSQsm2jQ5/Qf/D7jjz9BHAY4jk0S+EjXNZNEtk3sGz1at1yhMD3D0snXCNpt+kt1WhfmUGFgkkaFAm6lgnBsLn39K5T37b/lNXY/LOw3y1DqTrXrtOut+/7neVgRUjJ29BEufvlLLJ96Hem6acNSETuXp7xv35YbG2bf/R72ve95rn7n26MYIC2LwvQsVq5A5+IF7HLFJHS7HSMdqPR1U0vPwy4U6F65PDxIc12vZWVyOSto7CoeKDPY9RKZGyU5R34BRrdfOA7CthksL2OlBUMhxEjxoDQ7Q/XoMTNJMeijkgQ7l0PI615lKo5ZOvk9qocOrxtj1iaOo24Xy7ERUuJWq3TmzoOA8sHDSClJwhDb86gcOsJgaXFdr8yMzfHVr36V3/iN3+Ctt95iYmKCj33sY3z84x/fdef8zaaxg1aTQX2RqNulMD1NcXbPtvqxrPfZTqmEVx1jUF/CLhj/x7jXo3LoMEHqKyOlRKVT2UrFSNelODNrvAQGfexiGWmb89yr1pCWTX9p0UyQS4nWCidXxCkUoVA0BUPfB4QpmG+WdALLzudxCkUGS4u3/bt42Hmg4sIuQEWRmXIdqhUIRdhq45bMdLlWylxHtr2iuJGgpUTYNgJhvF8LeaqHj6xqYNnO/cpOSuBthTsqbCwsLPDTP/3TXL16ddXjWusbEuh36+S/XwLSTrHVTu5h8KocPISKIgb1OvnpGXQUEfZ79K5eRcUREiCd1lBxko5SmWq4Vx1j8smnsGzH+GosLeBWxgiay1kiawfJihrXsYpFdBSjwuDGbwphNudSotd0dJnEbIK0XFCKqNflyre+wdixRwjbbbxabWSkKaREui5epUoShPQX5ll87RWkZSNtm9K+A0w8+RTJwF91j8yN1Zh4/EkWvvsy0nbwl5exPW9TBYq76duTsb2sN1LeX7jGpa9+GQRMPfNOygcPbXlzstli9syz7+byN76K7eZASqJuh8Qf4JYq5MbHSfwB3cuX0LE55xHCjJYnJnGl4/h6QlorEPZ109cVyQLzHG00QodIa/0kV8Y9Z8c2KUqZac+ViaW1SSYpTEI0NudQ0jdTQN0rl+jPX0XYDlGvi4oTrDhOjfZspOMQ9XoUZ2bAsmicOY3fWEbFMW61ihQSv7k8MizXSrH0ve9yxvN496/8FxveL++Xhf1WEFJS3rsPa2xqpw8l4zZpnT/H5W981UzU2TZRv0cShkTdHvmJCfa+7/1bPj+FlDz6kZ8gCQLjiVQZwy2WELZF/eRJ00krzESrkBa266LjhCQKzbql2cArV5GWjUoScy2vV7fQqfhdun/I2B08NMmrm3Vup/FIRzFLJ1/D9jykbeFVx6gcOmzkQlyX8v6DTD75VDox9Th+Y5nm+bexhMAploh6Xbxqlc7lyxtOV6xNHK9OGheuT9lHEdp1iXpd8hOTuOUyQsp1vTIzbs0rr7zCL/3SL/HhD3+YT33qU7z00kt8+tOfJkkSPvGJT+z04a1io2lsrTXtufOoOMbOF7DstMljha/exa/cWeFrvc9e2YgX9bpGijDwsXN5nHzeyE055vwXloWTy5ObmMDJF4iDgLDToX/1spkAjxPiQR/p5YiD69Pc0nHwxqrXp1Mch8T3sXI54/26hWK4sCzy07M4OQ+/00YH6+z/M27KKC485Dmk7UTHabP3cP+jtcm5djpIJ7h+ng/XR5adTmpYSMdBaHBLZcYOH12Vz93O/cqtJPB208TgHRU2PvvZz3LlyhX27t3Liy++yKlTp/jrv/5rPvGJT9Dv9/nmN7/JmTNnePTRR/md3/md7TrmEfdTQLpXjKpz3S5Rv4ddKOKWShz/iZ/i0te+fMtO7mHwsvMFE7C6Xfz6EpaXw8nnyU9O0V+4BlpjF0skvg9aoWON0gopbSND0u+T27tvtGmxct51zfRsDPCe89BsUjZJMhiYm/9NurV0ktzYQZgYA3AVRdiFIgjJoL5Ef2EeFccMlpbQSTwy0rS9nNE77XVBCsr7D5KrjSPTZJqKjDHu2qJj0Ggw/fQ7OPjBHyY3PrGlAsXd9O3J2B7WHevWmv7CApbrorVmsLBAaXYvzhY3J5stZvcXFwjbbWbf832gYVBfYvnN08afIPXRGNSXVo2Fg9lEqRXdJUNUFG1wX1+vUzLrzN0NXI8LYmemyYeG8Sv/v5K199/0nq3jmCRJcGwH4TioOCaJTEHZzufQiSks24US1779DYJWC4Qg6nWRjptODaXTIMpIboadNle+8XX2ve/97HnPe2841PtpYZ/x8LAylkw++RSw2j9msLRA8+xb7Hvf81tOalUPH+HE3/uZ62axzQaW61I9fIhBo26KhWFkmjiUhZ3Lm8+wLOJel4G/AFKYwvhGa35tJrKEZaNVeCe/ioxtQq8oND+0uwUhrnsCoIn9AYVpI/M2qC8RdDvkqjVmnn0XpT17R2uuwdICg3odHSc4xRJxv4+TL1B75DG86tiG67i1ieOVSeOg2RxJQsdBgO73sHM5KocOr5ocWeuVmXFrPvOZz/D444/z6U9/GoAXXniBOI757Gc/y8/+7M+SS/0OdwMbTWNH3S5Bq4nleaCUmYRNGfrq3Wnha6PPzo3VmHziKRpn3mRQX2KwuIhXrTL+2HEsz6O8/wD1U28QtlvkJyZJwhC/3SIJAuNFmSSm4DE5SdjpEHXaJFGE5XrY+VwaU6y0+BEbb0ohyE9MMFjc5NSFEMbDMgrpX7uCUyphOS5xELLu/iRjXbK4cBe5odlPj9RChOMghERrsx8StoVl53AKBVSc4BQK7PuB53n0Iz+xyvN1u/Yrt5LA247C6XZyR4WNr3zlK+TzeX7/93+fiYkJvvSlL/Htb3+bD3zgAzz33HMopfhv/9v/lj/8wz/km9/8Jj/6oz+6XccN3F8B6V4wrM4tnXyN7pXLxP4AO5ejtHc/k08+xf7nX8D+2x+6aSf3yuAFIG2LqN/HbzbS/zvkp6aZOP44QbNJ58olUMoY13g5dBzTvXKZ/sI85f2HiIMBWiv689euJ8KyosbOkAWj66jUkOw2X6vCkDCKTMABol4PFUckYYhTLCFTI82o38dvNdFxApYkaDYIWy2kbeFWqkjboXr4CN7YGJ0Lc5l81EPCemPdw82Jk24aglaTqNs1HXlb3JxUDx/h+E/8FG//2R/TvjAHypjerzyvGm+/NSpiy9T/ys6dNwU9y0JYxuAeIRGuiw5N0klH6ySfsmL1/ct9FBdkWsQATFeT1ji5AlopkjAkicxG1S1XEJZF7+plgqa5ptxKlajfI+730No8ByGMaSWQq43Tu3qVy1//CrPvfs+qtdH9trDPeHhYL5a45fLo+3fazV05eIhDP/QinUsX0NoUQC/81V+mExsCp1xGaKOLrpIYrRKzf0h9cRC28WUKo9HG/Eb0zYvdWXy5twylUXf4MHYSK5c3TUrp7yIJfKJeD8uxQVoMFheRUjJ+/ATNc2dxCoXRmmv5zdMIy0KFAfmJSSqHDpEbqwFsuI5bL3E8Shq/eZqg1UQn5jorTE5ROXR49J7reWVm3JowDPnWt77Fr/7qr656/EMf+hC/9Vu/xUsvvcTzzz+/Q0d3IxtNYydRRBLFgKYwOT3yVhqyHYWvm02Ce9Ux8hMTTD39Dg6/+KO4pRJaKV795/8Uy3GYOPE48y//Dc1zbxvPpUQZbwytsYtF8tPTCMApFpGOQ9hskJ/Zw8w7nqVzcc7shfqJmQzM5bFzeYp79qTFQP/WBy8luYkJBkuLqDgm7HRM02+lYqTjMnn0zXMf7RfuOzZY46yV79dxjFUoMH7icYrTM0w8/iS1o49c90SGbd2v3EwCb7sKp9vJHUtRvetd72JiYgKAxx9/HK013/3ud3nuueeQUvLf//f/PV/4whf4vd/7vW0tbNxvAeluM6zOda9cYVBfRCWxMVsKfHpXr5AEwahKVzv2yIbvMwxe83/zEkFaVS/O7gGtiIMAv17HzuU4+qP/EQuvvISwLCzPZeG7rxB1u+mCWJNEEY0zpxGWvD6pkbFjZIHoLqA1OgzRQlA/fQq3XMZvNFBRiOW4RhNRSqMVqjW2V8ItlUcmnMZDw8JyXY5/9KcQUmbyUQ8J6411qygy3Uu2jdaa2Pfp15cAo2U73JyE3S7dq1dueq60zp/j0te+jL9chyRBWJL8xAT7n39hVCxbu5FeKX2gVYGo1yOJYyzPRXW79+6Xk3HPuN/iglojHRCHAdK2KMzMEiwvk0QhQkiEbYFShJ02wnbIT00hpYUQEqU1AoycQaGAVtqsUZIEp5intzB/wwK9N3+N1vlzOKUiQaMxMmYWQuzKhX3Gw8NG8iRD7iSptVbKQLoufmMZNIw/dpwr36yj/IHxWdYa3R9wQwes0qA0+mbSg8MiyE2+n3HvuN/iwrYhJWAk0ZIwQNq2mczWpvA2WFwwxbtUOrZ96SKv/P/+D9xSBadYYPz440w99Qztc2fJT09je7lRnBiy0fW4UeI4N1Zj+t3vIWg30Uoz+9x78SqV0ffX88rM2BwXL14kiiIOHz686vFDhw4BcO7cuV2VR9poGltFIYnv45ZLVA4duiH5uB2Fr1tPgtc49mN/Z7S/0EqNzmevViMJA5IgMH59MJrU00pDkjD22AnTZGXbLJ9+g/7CPNK2mXz6HQwW5unXlwiWG/SbyyCgMzdnJlQ2U/ROzLWLUgjHMTFJKyMtnYWWTZOpfdxFho0dUt44yb4SIZBCkBsb5+Df+iH689e49tff4vJXvzySmpo48cS2FiLu5hrzbnBHhQ0pJdVqdfT/mZkZcrkcb7311uixXC7Hs88+y/e+9707+agbuN8C0t3kejdhAxUbg9ahgbEuFNIx1gS/0bhllU5Iyf7nX+Dil7+Ev1wnPzWN5ThmHHZ5Ga0VQbPJ33z2M1i2Q/XYMboXL5iLUIr0Ikp1SeMYnZB1W+0Aw992FobuDY0zp5l+x7NI2yFoNEjC0OyP4mSkR1mcnsZyXQAs10U6NfzGspmu6vepPfrYDv8UGfeK9brzpOMgLYuw1yVsd4gHPRpvnqaTO286oqamScKQc3/+ZwSN5Q01M9eOoA5NBLtXrnD6D/7NaAR1vY10rjZO+8Ic/aVFVBihtNG+HU03rfGcGZHd3+8LHri4EMeE3S5WPk+uViPodAjbbWQQGqPjmVnift/4GjkO0nWh30PYZvJDxLExeJVGpipXm0BI64YFeuOtMzTOnB75cUjrus56bqy26xb2GQ8PG0mEDLndpNZ6UgaDpSXac3O4pRLSdRFCoIY3Fa3NjWVtKFAJKlxRtBhutLOYsWtIXU4yLAvLttFxglIJSAuBMQ9XkcbJ55GOS9jtEHQ6kMQ03jqDUyjglst0LlyguGcPwrZx8vnR9O1KNroeb5U4Hn/0OBqBX18yRrE38crM2BydTgeA0poJh2LRmPZ2d2FDT/XwEU785E+PCs6DpUWk41A5dAi0mZ5YyXYWvtb77PUUBoaS6NXDR2mefZv5V/6GqNvBzuVAWqggIBECt1xBxRF+s8FgaZGpZ96JEILq0WMMluvU33gdIQV+s4G/vEwSRTj5HJWDh+kvLW3JAFxHEdLzcPIFwnaLsNXKYtAtyOLCvUcIAY6LXmcSSdhm+pVEMagvcfErX0IgbpCaarx5mqjXo7DB9b7V/crdWmPeLe6osDE9Pc2lS5dWPXbw4EFOnz696jHXden1enfyUTdwPwaku8VwTMgplulcuohTvN4hIoTAKRYJWk2Ks3s2VaWz83nyE5NI2yYe9FNJlA5CSorTM0jXJWg2idotkjgmWK6DAK9UNl1bShH1V/y9td44IZax7aw1Cc+4u9j5AkkY0rt2hfFHj9NbWsSvL6Hi2Gi/p51fluOuep0QAsvzRn44d4OR5042CbKrWK+o4JRKWK5H++IcKklwS2Vy4+PoJGFQX6J9YQ63UkHaFsWZ2XU1MysHD21pBHXlRtrK5WhdOG/00i0bXCCKjMEzIF3XFOrWkt3b7wse2LigFIPFRaJcF2lb5KcmOfzDH2Lx1e9S2ruf1vmzRN0O3lgNr1IlbLdQSYxAoMIQp1gk6vVw8nkKM7NGEmHFAr11/hwXvvgFol4ft1rFLeWNn1K9TtTrMfHEkyMT2d2ysM94eLiZRMjtJrU2lF5zHKxcjiSOaJ07azba0sJyHeJeH5U2NN38zbNk0m5iGBd0JjECUQS2bSb+wgRUgsZBBT5CSqxCgbDVMuv1FRNGiR8QCYkumXhh9s8W1SPHtnQ93ipxDNwyqZyxedQt1q1yC3ulfN699ZNugeNYFAq3fp/CE8eZPfEo3WtXiXp9nGKBaDDg9X/9u/Qunqc4MzsqfPXmr1GanODRH3mRYunO5dnX++zS7J7RvrJx7iznv/iXNM+fIwkConaboNk0vhmOg5QCu1wmDnwsy8KyLJIwwF9eQgd93HKFXLFAYWKCIL3W4jBEqwTbdVBRROv8WTPpAVuLJ9rIRt90OjADyOLCTqG1xrZt4nQ4XaSy0FopnGIRJ72uw16P/tUrTD/1NJYlcD0HkXPJVyssnnyNoN2AKMDJlW/4jDAY4BZyVCaqm7rf5I8cZOKRY9RPvUG+WrkhpnWXF5k88QRTRw7uivzSHRU23vve9/L7v//7/Pmf/zk/8iM/AsATTzzBH/3RH3H27FmOHj2K7/u88sorzMzMbMsBD9ktAWmzgehu4qsIkgi3kAelsD131YknXIdk0MfxXKMtqKKbHvMgCZAoJh55hCSOaZ57G2lJChOTJFGUmieH2F6OsNkg7HYQtm0mNDTGbHbt30dKhJS33vRk3BGZSfg9RkikbREHPt0rl0ElFCanmHnqKZx8gaDX5fI3vo6KY6QtkXJ1QNBRhFMoUB4f2/Ca1EptuIi8GWsXmJbnMXb4CId/8IeoHTm6bb+CjK2zXnfeMGGkohhhW7ip3IDGxLs48LHCHJXDR0fxbW3B4tAPvbilEdTRRvrLX2TuS39B0GjgVqqU9h0gPznJ8huvGx8lMAUOIW6cwMuKGrueBz4uKIW0zXLW9nL0FhboXL5E5/JlpCVJopAkivDGxnDLFYJ2C6USJBrL9fAqFfJTM4StBlNPv3OUdBomeJMwpLRvn5F2KxTSiTuHoNk0TSWlMhMnHs+kQDLuObeWCLl1N/faBgit1LpxxHIcLMdGJQlhp0VufMJIFoZBam68+jOk44I0BcSsoLH7yMxgbyTx/VQOBKRlE/sDE19cl97VK2ilU01+PVoLqSgkSqVt7EKRsNOmODt7W9dj9fARKgcPbdiQdLPvZWyNcupFtLbxdtgYu7Zx9mYMBuEd3+IKBZd+fx0Puw2wxqawxoZfw7G/+1PXpQPDEMt1qRx7jAMf+CDezP4tvfdmP1srxeK5C8ZPcrnO3Jf+grDVojgzgzcxjZZXR6oFXm0Ct1BAui79+WtEgwGW56E0xGFE0PfpLjVYOvk94n4/lTr3YOAjbRshLaQjCXtddBxv+bxXYXDrJ2VkcWEn0RCvnNYQIm0o1MQDHxUnJKkyT79e58pLLyHt1RPkhX0H6C4usnz2LBOPP3lDIaJ1+Qrjx08gKxObvifMfv8HaF66zNKbZ9aNaTPf/34G/t3N7xaL3qaed0eFjY9//ON87nOf41Of+hQ/+ZM/yf/8P//P/NRP/RT//t//e37xF3+RH/mRH+Eb3/gG9Xqdj370o3fyUTewWwLSVgPR3SCWDlgOYRCBlMRBOJK8AUhC83gUhGDZxNLZ8Jhb58/x9p9+juWzZ2mcnwMpCFst7Hye5twcUd9Uu3WaSFBxbHQLhQAhUVG4fqIrjm+YUM/YXq7rVmbB6J4hjHGbTH0REBa9xSWCTpeJJ57EKpTN38Oy8Zst3IpJDqg4Jur1EJZFcXYvie2te02u1bheT3poPdbKSHgT0yT+gPnXTtK8dHkkR3Sv2GxAephY250XXLxA1O1SPngQy3FIgoCg3UJaFrlKFR3HSMsi7vVWm8OuKFi0L17cshZm9fARpONQP/0GY0eO4VWqI13ouNulc/Xy9e5EIc1sctbxdN/wsGxS4sEA6boMlhYZ1OuAJglDhGWB0qgwTLvLXTNB57pUDh9DhQFBu03v2jXsXJ7ygUO0L8xRPXxkhWnerEni9nsEzQZOsYS0baTr0Ll0kel3vDOTAsnYMTYrEbIe660xnFIZf3n5BimDoQ9T58pldKKMh0ChwGBxkXjgG0NYAGlB6qkhLRslE0jW2fRK6+am4Rl3jYclLmwZbTT/kZIkiszUhjads8Mp7FHCYKUWuoY4CBBSoFXCzLPPEbSatM6fo3PxAkIKKocOc/RHf3zD63FtgXHsyNEbYoqQMvNx2iYOHjyIZVnMzc2tevzChQsAHDt2bCcO67a5VVFsu1kZO+LAp3P5EjqKmXrnsyMZNq9SxatU6S8tEPd75MbGEELgjY2NGmXBKH0svPIy/flrxo9JCJxSGYQkDgJAp8lU39y7UnWQjO1j7VR3Fhd2AK0QSLSUxpssSczfQloIKUj8wWjiyKzHqukE+RJhr8vkE0/hlivka+PYhcK2NbtUDh667TXmveaOChuHDx/mt37rt/if/qf/iST9Rb/rXe/iZ37mZ/jd3/1d/s//8/8EYHZ29gaT7zvlQQtId8L1UfQ3cCtV/OU60qmZbl+tiXo98hMThN3uTbsKh8lQv9EgPzFJv75E0hsQdo1utWlhkQhpYXm5VZMZOo5RZF4aO0W2SdkB0m6tJIpwi0W00iRhgFupEvW6LL72KkkUmskMrYn6PaJ+Hzufx8nnyU8YPffJJ59a95pcT+N6pfTQ8Z/4Kex8/oYF7IYyEhvIEWXsHCs3IvXTpzj7J/+BsUePIy2LqNsdjW8nUUjwSgeNKaStZViwEELflhZm7PtIaVGc3YO0rNHjhT17kdJCDQsZN0tCZV5Ku46HKS5oNEkQECuF5TpGvzk0pppaa/A1QkhK+/ZTPXwUp1ym/vprJL6PUyxSPnCQ4swM/YUFTv3b3+PET/40KklGhUK7UKR66AjtixfMlKqQCEviFEsc/MEXd9XCPuPh43aSWhutMdoXztO9eoXcxDilPftGzxfCJGf7S4tolRBHEbl8BXesRtjvIVzXJJu0RiUxCEEShSsK42tjxFDFW289fkhpXpMV2bdElrzaHJbn4ZUraGF8LeJ+PzURXz+ZqpPYNBCGETJOUHHM+PETBK0WYbeLVgmDep1LX/syQsob4sXtNjFl3D6e5/Hcc8/xhS98gV/4hV8Y7ZU+//nPUy6XeeaZZ3b4CLfOvSp8rY0dTmz2ljpJWH7jdSaeeJLcWA2nVCI/OWkkzfs9kiDAzuWwc3nyk1P0rl4hieJRnkm6Dt7YOH5jGRWGqCAwhQ6liYYS85lP07aTxYWdRbguaI2QEqdUJmy30Spk6HIihAANOlVNENLCyuVRUYRWCrtQIOr1aM+dp3rsEXK1cY586Meon3p9W5pdhrHoyY/93K6fGLyjwgbAc889xx/90R/RX9EB+j/8D/8DP/ZjP8bLL7/M+Pg4P/qjP7qlCYrN8CAGpNtl5Sh61B8gLAu/sWwSXEGAtB2EtMjXahtW6VYmQ8eOHqPjOHQuXjAjUeaOlz5Rg05lH5QisRQkSVY53w1kwejeojVYFlJIdKIoHziIk88TtJrEgU9v/hpOqUzl4GFif0Dc76eSVDbFffsRiA2vyVsVJ5Zee5WX/vffIFcbR4XhqsBjed6W5IgydpaVG5HLX/0rVOBjFUurpjLCTmeU+7Ec54b3GBYsSvsOkBsfZ/nNN6kePoJbLo8K3GGnQ+v8OcYfe4zC1PSq129kDiaEQLqOmcQbIiUgbixyZJuM3cnDEBeEwHI94p7Z+CaBYhAvG+NXaSEEqNhsnuMg4MmP/Cc0z75FmHqPWY47mlLSWq+SdrM8j97CNQYLCwStpunYBexCgcLUFHYuT+2RR3fsR8/IGLKVpNbN1hi140/QnZ9n+dQpCjN7Vkn7etUxitOz6CQh7vXwtTJThWM1kjA0e4ZEYdk5M9Hq+4yCV/o+luOiVIIeSvrAluKHlS+AVqhEZXrpt8vDEBfugGQwIEiLblqpzUluKoUOfBLL4uyf/RFRt4dwbOOpMT17gyfaMLl0qyam9SasM/+87eGXf/mX+fmf/3k+9alP8dGPfpSXX36Z3/7t3+bXfu3XyOfXn3x+2FkvdgyWlwGBVxsnbLdpz83hVc10RvXwEfzlOr35awyW6+THJwCIuh2cYhHPcbDcHEnojyY9gmYDIeVICs58sL5B7jBje3kgpWrvA3QcI4RA2DZxr2sK5ZaFEBI7l0PYttmHR2YK3XJc+lcvI6SF1hohBdJ26S3MY7kOU888y+y738Psu9+zLc0uN4tFu407LmwMKazpAH3Pe97De97znu16+3XJAtJ1Vo6iL518je6Vy0TdLnYuT2nPXiaffOqmVbrrkgvGC8VvLGMXiwjbIQnro73HcGJDxTGJSpCWhZbSfDtJMh+NHSILRjuHsCy0VhQmpxg7eozlM2/SuXIFFYZEnQ7Ns29huR5OsYh0XIJ2m/b5c+z/gfdz9MN/Z91rcuX1uPZvG7SaDJbrRN0uhakZirN7VgWeve/9gS3LEWXsPDczgbWLRaSUaGG+XsnQkLIwPcPcX36B9oULdK9coj13FndsnOLkFEG3w2BhHmHb2Lkcr//u73DgAx+83uHb7ZIbH6dz+TLVI0eJez1UFBH1e1j5AvFQ8nFY1MiEBe8LHpq4IARJsEI/WWsjfykEOkmQroedL6DiCDufZ/F7rzCoL1E9dHi0kb7+VteLvwBupcKlr30ZaTu4pTJO0R4VSRqtBvuf/1uZt0bGfcfN1hhSSsYfO8HSyVdZPvU6lYOHV0kZlPft47GP/hQX/vLP8RsN7EKB3sI83UsXSQYDtNJIz0s9xdL3TqUUhJRorcw+4XaL4VIibYek07mzX8JDiIDrHc8ZNyUZ9G9rElUImU5LGimR1rmzOPkCubHaDVPTwJYnrLPpju3jfe97H5/5zGf4zd/8TT75yU8yMzPDr//6r/Pxj398pw9t19K9eoX6qdexc3mibhenVDLG4LaFThKcYpGg1SDqdnHLZXJjNcZPPIHGTM36jWXArK3GHz1B0GriFIssv3kKrRKCVoskDIyMularr79sMvyukMWFHUYptLTQSmN5LiqO8SoVhGUT9brEXX/UQG5sACK01kiHkfVAPOgTNBtYXo4Z12X5zJt4lcqmi94PitrHthQ2Tp48ydzcHGF4c6+Jv/t3/+52fNyILCCtZtUoerdL1O9hF4q4pdItT+yo3x8lQ6Nul6DVJDdWS70AuiSpmY1l28bMNjIBR9gO0rGxPY84Ck1yQcrV3S1ZINp2hgP8GXcTAcONeJIgHQeVqFT6ID2fE4W2FKBpnjtL5/IlevNXSQJ/lEROwoCg1SJoNbFcFyEtglaLzuXLG46lr7weV6K1pj13HhVHWPkc0nGQlrUq8Cy++grSdUn8AaJQXCVp5JRKG8oRZewstzKBHTt6FI2gff7cDd+TlsWgvkh/YR6nXMIbq9K9epXO3Dna595Gui7l/QeZfOJJbM9j+fQpGm+dMRKF7TZJEJBEEd0rl2m+dQZh2yBARxFxtwupMbNpfdeZ/Mcu5aGNC0rdODUqxEjrX8eR+d1IMyXXmjsPSUJxds+6b3dD8VffWCQajoZnRb6M+5GN1hhDijOzBI1lygcOErZb60oZVPYf4Mzn/oAr3/g6se/jVioIxyFqd1CBj5ISadlo204bn2y8sXHibhudJAjb2bqhqxCQxESD/ua66DMe3riwHWx172rZSNsi6nTwxmpIxyFoNmjPnR91sK+cmga2NGH9IHTU7jZefPFFXnzxxZ0+jPuC1vlzvPkf/h3Lp09heTksx8arjlE+cMism+p13ErVmBxHIWGnY6R0mw0Ov/hhDv/Qi3QuX0YITXn/QaJ+n5P/8p/hlErGEHn+WjoVK24sakB2z99Gsriwu7BcB611ml8FpCQ3MZmqKQRIz8Vvt9BhaHyOPZN7VUlsZHh9H5Sidf4s3/2nn8XJ56keOcae93zfporeN2t2uZ/UPu6osNFoNPgH/+AfcPLkyU09f7sLG5AFpLXcrr7iSikSFUWoJMGxbdAay3VNdVApktQs3Fx0AqUSLGycUomcl6Nz6QIyXyAe9NHDQldW1NhWhlqIOhslv7tYpsNQJ8nIqMxyHcAxnSTKPC5sG9t1sXMenYsXScIg1UBMTc+GCzGlSHwfYZlqe9DpbLgZ2UgaaFh0tLwcqGSVLNEw8AzqdXLjEzTffgsVR4TtFipOkLaFW6kibYeZZ9+VdRnvQjYyga09dpzJx58k9n0WvvcK/nL9eqLpseP4zQb9hQW8Wo36GydJfJ/Snr30FxeJOm2kZQoVQhpPAK8WcvXb38B2c8y+5/uw8wX6C9eMVI8/wC2Vka6bFq6dtOvdJQlWGMRm7CqGfhpZXFhJ+jtRiiSOsFwXb3ySwfw1hCVv6UUT93uE7TbT73gn/VSKKuqbSdX8xBT5qSnCdnvXL/QzDF/96lf5jd/4Dd566y0mJib42Mc+xsc//vGHZ7JpBRutMYbEgwG52jgnfvKnEVKuK2VQ3n8AIS28Wo3xmVncSpXWubfpXr5EEseE7ZaJHZZEJQoVx/jLS+YD0skNYMvNT0beKmMzZHHhHmJZWK6LTBsApW0jhMAplkzsSDvY1xbON2piirpdYt8naLWIut0VHbUN8pPTxEGIVhqnVKJ65Oh901GbcX8yLKr1rl01Phn5AkJKuteu0r4wh7Btom4Xv9FA2jaLr34PFcfE/R52Lkfl4CF0krDv+983es/u1StI1yUeDIj8AfFggEYg0AjbQUdrGqaHU+PZPuS2WeunkbE7GPqxWpaNthWxH9Cfv4ZTKFDaZ7zOVBAw6PWxPBdpSYRt4+TyRN2e+ZsKiRACy3WIA5/mW2+iwnBTRe9bNbvcL2ofd1TY+N/+t/+N1157jUqlwrPPPks51fPOuP9YKYOSn5xCWkZuSrquMSjudU3XoiURlg0Yk9qo1yPxB1iuR3F2rxlF7/fW+QSBcOxUU3e9b2dTHZvhYTKD3XFUgk6un5M6SVCpaRMYfw2SBBUEyGKROAhSORRtzDOD0CzC9JoOk7RY0p47R+WFDxI0mzdsRjaSJVJRhIoTtI4oTE7hrPEuGgae0uwernzza0TdLl6thlsuEAc+nYsXcEolxo4+km18diFaKSzPY+/3P8/0M+/EKRTxmw3qb5zk3Of/1HgmuS75iQmmnn4ntUceRSvFq//8n1KYnqH59hkS38cbq6HCEJ3EOIUiWmvi1FjMLVfMYidOUHaCVsawrL+wgFMoYOfzeJUqY0cfwXJd/GaDS1/5EvFgcHPz8IwdI4sL66DXTBYp4wWgogC3UiE/MUH3ypXR/XWUSApDBgtXmXraXH9JEFA+eIji7F6ibhcVRch0+k0rRefihV2/0M+AV155hV/6pV/iwx/+MJ/61Kd46aWX+PSnP02SJHziE5/Y6cO756y3xljvGijt2bvuWqF1/hxv/+nnuPjlLyKklSav8gTtVtqxa6a9VRwjLQvb84xM1co9gGUbySrLNt4cap0O3bVk+4RNkZnB3huE7aC1QmgQto3lOjiFItK2SdJzPfYHRL0efrOx7tT02gKjn054BK0msR+gVcK5L/wZe5rfz9LJ1whaTTqXLo4alrzqGJVDh++bjtqM+4+VMjXjJ55ARRGDeh0r5xH7PslggFMuUdyzl96Vy8SDAZ3LF8mPT1Def4DC7Cz9hQVO/f7vcvCDP0xufAInNTz2G8u0zr1N2Omm3eraNFZZEh2n5smWlXrdaNBr9iGWZe51605zZNK5K8mKGrsXFcUISyJtG69WY1Cvp8XwiskppZNMRtLTQlgW8WBAEjZRSWysAoREWBLLcbHzBaJOh0Gjjrc8fsui92aaXe4HtY87Kmx8/etfp1ar8cd//MdMTExs1zFl7AArZVD6iwvY+QJBu4VTLI0uIK3TCnnapa412LkcIAj7XeLzb5PE0ajDfTV646JG+p4ZG5NtUnaAleekZZl6RRyjiUfXALaNEBLQDBYXGBU8hhv0lYngYfFOa6TrkQQBrbfOMP7EkzdsRjaSJUqikHjQxy2VqBw6DBhj6WGyTQPScejNX6UwOY2uTRC0m4TdDtKy0qBm0Tz7Fvve93xW3NhFrKeb7FYqDOp1dJKskh3oXrlC1O9TOXAQlSQkQYBO4lSr1ixIYt9HRaY4rVWC5eXoLy5w5Ztfo3vlMhpB1Ouy9PqrVA4cWv3aQR/LdXHLZZxiESuXIwlaO/fLyViXLC5sASHQStE+P8f+93+A/c+/wOk/+De0zp3FyuXoz1/Db9SJen3sXJ7ygUP4zcZooe8US7jl8qq3jO6ThX4GfOYzn+Hxxx/n05/+NAAvvPACcRzz2c9+lp/92Z8ll8vt8BHeW9auMTa6BtoX5m7o8ht27nYuXUKkxuHGzHieoNVEOjZJFI+6bVUYQRSZTtxU1lCnfuJCSvNv2q2YcedkceHeodNGJoTEzhfSqaY9xP6AzqULJGE42hNf/etv0bl8EbdUWTU1vbLAGLSaLL3+GonvYxeKiCgiN16jc/kyjbf/Fa1zZ7Hz+VV+T4P6EmGvy/jxx0nCMCu0Z2w7K2VqpJRUDh0m7HaNdFSSYBUKRg4nLXA7xSJISX5ikul3PIuQkkFjmYXvvszSG69T3rtvdO5K28Hy8tDuGOlnpUYFjhv0ktY2CgphzJRt2zRfaW2kc0d5qCymDFkZF7Im9F2IMsoIhZlZ7LRxPNYKtCJot5CWZWSiUi8bFUXE/gAVxViOkbEy+SiMjLoQWLkcYfraWxW9b+bzOfTyHD9+YterfdxRVqvdbvOe97wnK2o8IAxlUCZOPI5XHUPHMX69jlsu49XGR5t6Mz6usRyX6uGjTL/zXQit8SpVvGoV6TgmuTviJjdQaW38vQwg26TsLOlvW6nrep/D0X7Aq1bJTUzgVsZwCkVT6LBshLXOeT1cUEiJnc8jLIug1UTHybqbkeH1OH78BGG7RefiBVQcUzl0mNzEFFprFr/3CvMvf4f57/4N1/7mO8x/59tI22FQrzN29ChT73gnM88+x8w73sXMs88x+fQ7KExPs/Ta91h89bs36tJn7AjDRNHy6VN41Srlg4dwKxWu/fW3qZ86iVer4RRLSMvCKRrZAb/R4O0//Rz9hXmUSgg6HTOFEcf0568xqC8SB77RuA0CkjDAbzTwl5dBSCOZYNn4y8ssvvY9wk4HYVnGmCxJRt2G3atXjHZnxq4iiwtbQAik45BEMbE/YPyxE2itOfi3fojC1BRLJ1+lc+kiICgfOMjkU0/RX1hg7kt/gVup0JufvyHpOlzoVw4d3vUL/YedMAz51re+dYNs7Yc+9CF6vR4vvfTSDh3ZzjJcYxSmpze8Bk7929+jdf7c6DWrDCYPH8H2PLRSaGU01VUcX59cHb4miY2nhlYgBJbjGplPzHooiaJsL7BNrE1eZXFh+xGum1blxEhqqjg7i2VbuOUy+fFxwlaLZOCnzVAgHGMI2zp7lu7li6Op6WGB0Rsbo3XubRpn3iQeDLALReJ+HydfoPbIY1SPHKV75bJ5rFhK/frMOs4bq5H4Pq2zb5tpwqzQnrHNrJWpyY3VTMFbmC5xHUeoOMbO57ELefKTU+THJ4gH/dG0Uv2Nk6gwRIUB3vg4QavJYGmRJAyoHDqMlfPMh0kr9UiTWLkcluul/n7X96vCcZCui5XPY+cLeGPj2PkC0sth5/NZs+wasqLG/YGwTKNHHIWgFbnaOGNHH2H6mWdNLue576O8dx9OoUBuYhK3WDY+x4XiUHjXSCCm6ylp22Z9ptUti96rY9FZwm4XlSSE3S6tc2fJjY1x4AMf3PUNsXc0sfHUU09x/vz5bTqUjM1iOqOurat5e6esNCBvvHWGhe+9QnvuPH5jmdz4JOX9BbxKFbdUwq1UcUolFr/7CipKKO7ZS9huEXa7pvtqJC+1ToCRMhuD2yrZJmUHSM/dUXvhdck0y3HxKmOoOEJFIcWZWRM4Bn2kZRnDzPhGHVCRTnRIy0JrTdjrbtj1u/J6HF7v8WDAq//it7j6rW8gLCv1Q4Cw3UZrxWBpATQUZ/cghBgVJP1mg6VXv4vfbBB2Opz8v3+Hqade2ZSpVMbdY1Wi6MjR64vO1DxMCEnnwhy5sdroe0Grib9cp3HmNM2zZxksL5H4A5IwImg3QWmE42IlCYkfoAUMlhaNZ1Ktlsqm+QghifwByg/QWqG0xqtUkJY16gBpvPUmKtiiwWvGPSPbpGzA8F6dbpBVHOOWyyRRyJnP/QFSWkjXZbBcJ1ebYOzoUSzHxSmVRrI8rXNnsaen8arVVZNz8WBAf2H+vlnoP+xcvHiRKIo4fPjwqscPHToEwLlz53j++ed34Mh2nsrBQ3hjNcr79lOc3bPuNXDxK9clDFZ27tqFIl51jEF9yUwIKmW6CeN4tLEekfqUSWkhczlUNwYBdr6A7y+vlo3LuH002V7hbpIWyaVnkq2mCGH24X6rhbRsWhfnCHtdhOtAkiC0xrJtZDrlDYLG22dGU9PDAuNbf/I5lt88jbAsVBiQn5ikcugQubGaaTyRAmnbhO0W1uTUKPYLIbALRfoLC0w9/Y6s0J6x7awnU2PnC7jlCk4hTxJGqDiievgojbfeNOc6EPVN417n0gUS3yc3PkHYaRN3u8SDPvmpaeJ+n8QfUN5/kNa5t0dmySqJcYpGSjdsNVcdj0DglMoIKYj9wHSuo1GRKZxkrCFdC2dxYZci0mlWIejNzxP7vpHOtWMWX/se5QMHGTtydNW0lL9cx6tWiIOBkanSelQMHMmXx3E6FSs3NV2+kc/n+PET902u6I4KG5/61Kf4uZ/7Of7JP/knfOITn8g22PeA9eRKKocOb+sJNzQgL+3Zy/7nP8DCd1/h1X/xT7ELRYrTs7grvFSCdpvewjUzeu4PUInCsh0Sra+bh69H1im+aQRkRaDdgNZIx0V6bmoeroyfxb59xP0+0nHIT04SX7qETtSoI3El0nXRSULU6+GUS0jXJWo3mXrm2Q03I8PrcXQYSpGfmBwFr9gfpCOKs5QPHqJ/7Qr9+nIqWXW9qFF//aQJlqnEUG6stqF5eca9Y2WiaGUMVVGEVglupbLKeHL4t4wGfYRlUZiewauNsfDKy/iNZdNBWKkitEYJo9eJECT+AKTEbzRI/EHq55HDzeVQlk3U6xK124TdDsXJ6VEBrL+0uIO/nYyNyOLCLVipI5xu6rQy0n1aa0oHDuLX63QuXMApFlMZA4jmr5lOQMclPzVN2G5z5EM/Rv3U6/ftQv9hp9PpAFBa40lVLBYB6Ha79/yYdgu9+Wt0LsxRPXR4JEU4RAhxg27/ys5dIQSVQ4fxmw2ibgdp2SjMuker5Pr9aZWmt0bHkVm/SHETbfSM2yELCXcZrbFsMxXhdzsIIbFdj/5yHa0Sol4Xv7GMThLsXA6nXDFyno6ZsNBA1OuxfPqNVbIg1cNHOPIjH6Z97iz56WlsLzcqMALpBK3ELhawHIeg2cQpGi+PoZ+NtC2mnn7HthTa1zZQ5o8cvOP3zLh/WU+mxnIcLMcGIdFJQmFyGq86NvJoBVJfs3AkdauTxDT1AUkUIx0HYVn0lxapPXaC/sI142WWvl5FESpJp55c10iap0X3xB+gk7Qb3R+slkEX6/hbPsRk+dldzlAJJEkIeg2kbWOXSqaQ3enRePMUg6VFZt71HLaXw6tUkVLijY/jN5tEvS6W65k+rrSoqJQi7vdxKxXCXpfao49tqui9XkPtdjbQ323uqLDx3HPP8T/+j/8j/91/99/xr//1v+bRRx+lWq2u+1whBP/oH/2jO/m4+547nbQYypUEzeYqvfW7mZxsX5hj8dVXCNpt2nNzdC9fJjc2NtL3r7/xOoOlJex8nvaFOcJWk2hkArith/JQsVZWMmOHWGNqr5IYHWijSCUFSRjiliskQUA06JtJiZkZ4iAgWNNhgm2bv6uZCUUFAVprCtOzt+z6XXnviLodglaLPc+9F7QmiSIsx8EpFtOCSRV17RqtufNMPvEUAO2588S+j1utEraa5CcmKUxPA9M3dGRm3FvWjngPkY6DTL1dhtJQWuvR39IpllBhgO15FCYn0Yni0lf/ChUnRN3OqPMWYFBfAlJpCimQtkMSBug4RiUx0nYQQpKEAShF59IFeovzRiZkMCAz4Mu4b1mRNI3aTYRt03zrDHGvhzdWA0syWF6i/80lpBDp9WDjlivkJ6awXJfc+ARPfuzn7tuF/sOOukXiXG7h75jPu3d0LI5jUSjc2XtsJ76KIInIlY3U4VqsSomwUcdWEYWCSzJRxS3mIQpQkcaWgsq+ffjLyyiVGKlaKbFzORNfYiNDBdeTK3Yuh+16FGdn6S3M4zdlNrFxm2R7hXtIep+Iel2iXjedmC5iOUbfX2uFtGycfMFMbtsOhfFxI42TopUiGfTRYTC6poYkUzUKk+PkyiXcNUVYVfCQEqTrMfXEE/QWF/GbDZJBH2FbFGo1vGqVvU8/ccf3l8a5s5z/4l/SPH9u1EA5cewoB174QWpHjt7Re2fcn6zn+ziUgepdu0puYoLKoUNGurw6Rr++hIoictUxkiiVqSpYhO02+YlJAMJOm6DZAMze2r10ifK+/SyfPoVOCxtht5PKUGmENP4ZOo7RcUQiQFppYWVtI60U8BCHlCwu7DKETM/JjU9KnSSoVM3GKZbwqmPY+TxOIc9gaQl/aYn5l77D5JNPMfOud7P/+Rew83kuff0rnP793yPs9kArIzel1UhCOvF9+levEBw+sq5n2vqHKzf04tjt3FFh47XXXuN//V//VwCuXLnClStXNnzuw17YuNNJi43kSmSxRPVI8a4kJ1cWUsaOPULz7NvEvR69+Wv05q+hYqNXLR2H3MQEAkEcBiP5HWE7ZpOTbVi2hF7V3Zaxo6zU6RQSlDK+FEKgsREWRJ0OaE3YalHef4DKocMIKbnyja8RBYEZoU11pXWSoIUGBVpppp54ihN/72dueg9Ye+9IwoDu1atMPfMO8uPG38hvNlh89bsErSZJZLq3QLCkXqUwbbrvpesStprYuZw5xvT8WtuRmXFvWW/EG8ApmYVNb2Eey3WxHIeo2yVoNbELBeJ+j/zE5Kh44RaK5CcmjeROqUQShiAEYaeN7eVQrovQkKuMEXTb2Lkc8aBPPPABn8T3WSm9poLghsJexs6Q6eNuHzqOCbsduteu0luYJ2q30EqbBKzrIC2bJI4JO22SIMRyXfzlOuLYI9n98T6lnMox9nq9VY8PJzXWTnLcjMEgvKNbYqHg0u/fZJr5HhNLBywHv9O9YWIDIOx2wbKJpUO/HyIrE1iFEhe/+Q0jV5V2zGrALZZRYYRTKFDaf4Co22VQXyTq99FKYReKo8lXLQTdhXl6165lMeY2GcYFoz6VxYW7ipA4hQLCson6faOFDoTdnlk7OQ4CQRIYWU9pO6gkZtBoUHC965MXYYRSGuF6o2tqiKxMUNx3MO2KP7r6b+rm0UIiNHhTs+Sm95jO9ihC2Db9xQVqJx5HVibu6P6ytoHSm5gm8QcsnHyd+tylezLdXSx6d/X9M26PtTI1ydIiXnXMFCWKZaTtmEnwfAF/uZ4WtWOCboew3SL2fXJjNXK1Gu2582iVoJIYYTsIKenXF1FhiF0omon1VDrJ7LlB5nJYlkXQagFmD63F9T25sG0z0QEPdd5pFBcy6andgWVdP4/XYyhzrhQ6CMCySOKYQX3RTGeMjVE+dJjBwjzSkjzy4/8x0+94dpTrPfHRv09pdi+n/92/pnX+HGGng4pCkBJvrEZl334Ks7Mjz7QHXaHjjgob//gf/2N6vR5PP/00H/rQhxgfH88WV+uw2UmLm010bCRXAuuPi98p6xVSnHyB5dNv0L5ymTgd7bfLZZxCwZikaYWwrFFg0cmN/gIZG7PWDDZjB1kvoZs2rQvLBsuCxJhk9hbnGX/sBOi0y952iFPZH7dYxCuVU6k23xStpMQpFLFzuVsGmPXuHYP6Io23zrD46neZfsezACy9/hpJ2sUvHYUQ4FYqRL0u3SsRYadjTA0nJo35+Fht9Bl2Ps9gafGmplIZd4/1RrzB3NfLBw/RvXoFrTVamM6LOAgQUYSTz68qUEnHwXJNp97E408Sdtr4y8vE/oDC9Cx+fYmo1wPHBg2W5yJsm7DfQw2LGisWWGTd6LuCLC5sP1G/j3BcRDoJpZSGJEGjUdKsW3QUkcQxheI09TdOMvvu92QTGvcpBw8exLIs5ubmVj1+4cIFAI4dO7YTh7Ur2Cj+gGmy6S/MM378xEjCoH1hjkF9iSTVgHZKZbTWBM0Gg+Ul7FweaZv1ju15FGf30r18iTg0vk6W5xEHAXG/lya+FFlv6dbJit33ECFAmGY9KSVaJQg0iTKNeyoSWFrj5AuQzxN1OiQqQFoWYa+H07teNIx6XaSUjB9//AZZkPW64ld6OtWOHEOjaZ8/Z76Xeu71F+bJ12p37Pd0swbKfLXC0ptnsunuh5yNfB8vfe3LtOfO0547R+fKZbxyFbtYQCfGY0PHCVG/x8STT+E3lgm7HaTjEA8GqMHAFCWUkSmUXg6nUkWFAUJII9nc65qpjGJptE+R1rALXl3fuzzkrIoLO3okGSM06JspHmi9Kt8kpGW8MJQiGgxIoojC1BTeWA2/sUwchDfcf/c//wH2vvd9LL76Xc78hz+ge/Uy1aOP4uRyN/VMexC5o8LGq6++yuHDh/nd3/1dbPuO3uqBZbOTFlqpUWBYb6JjI7mSIZtNTm5WDmtD3fc4wfFy6NBcWMXJaaJej6DdJFlrMJt1YW2atcmrLCDtMOudu0qBkAhLAqYbYijd0L18merRoxQmpwjbLYJWC50k5MZq1B59DK86RtTtjmSjtICo3R512697CBvcOwpTM5T3HaB9cY7W+XOpf4JvZFWAoNkkPzHF5NPP0D5/Fq9axcoXyNfGKUxP37AJjgeDTZlKZdwdbraZDRoNJh9/gtzEJGG7fcN5lRurobUm6naJwxBp2/j1Ope/+XWSQR8VxyRhRNhqY7lOOhliihgqSdBgJjPSjidjVp5uGlxvlYxIxr0nS17dJZKEsNHAzufM+icKQGuENPJvWhkTSqEU+fFJ2hfm6F69gpDyjqSo7lSONOP28DyP5557ji984Qv8wi/8wuha+vznP0+5XOaZZ57Z4SPcOW6VTM2NjY0SpsM1iU4Ue977PjoX5ghaTVSS4FbG0MtL6DgiSmKCTgdpWQgp8cbGKBWLxL0ekT8Y7VO86hhht2NiUMamyeLCvUW6rumAThIjtZwosCzjKZMYLxmdJMSDPna+gOU6JGFoJqyDgE6SYHtmakPaNpNPPsXBF35w3Xv/rcxbgbtm7HqvGygz7k/Wk6mpHj5C58plXvuXv03UH1B77DhuuUzc66GiiLDfY/HV79J487SR1h0MUEliZHCllZqAD4x3h4Da0WMsv3ka0EgpcfIFwm6HoNk0974VPh7CspCpRNXDjM5ySLuDtd5iKpXidN2bew+naJUYLxrbxrYsYt8naLZwU6sHIdbPrUrbpji7B2nbTD31zKY80x5E7qgaYds2jz32WFbUuAmbWSgsnXyN1rm3ScJow4mOjeRKhmwmObkVOay1hZShtnsS+HjVMaMnijGGcisV/EYdrVS2Sb8Nsk3KfYRWRnqB1PBSa+KBj04Ug/oStUce4/hH/z5Rv8+5P/8zelcv41XHEELgpnIYw6r5yi7I9djo3iGEoHL4MH6rSefiHNL18CpVVBQR9Xqp1NQhpJQUpmcJWk3GDh+me+UKML36x1mnIzPj3nOrzeywQyrsdledV36zQXvu/EiCzF+uE/V7CCGwC0Wk65nNtT9I791VM3ikIe4b83HATGdojRByZPqqkqyosZOM4kK2Sbk7aGVk2GQ6IWXbCAQqSczmOpdDJwlht4OQklP/9vdMJ+4WpERXFjL85TpLb5ykc2FuU++RFUG2l1/+5V/m53/+5/nUpz7FRz/6UV5++WV++7d/m1/7tV8jn1+/Yehh4VbxZ3h+rlyTOMUSubHaSA4nGvRZev01gkYDO18gCUMjJ6ISVBQx/fQ70UDzrdP0lxaxcwWsfJ747TOorAlq02TJq3uNAATSdcjVxhnUFxG2jV0sEvf6RqIWIC38Rf2eSdg6DiqdflWBTzAYICxJYXqa/OTUTT/xVuatd8vYdbsaKDMePtoX5njrTz7HwisvIyyLxe/+DV7V+LHmxsfJjY8jpDQxotVEK43l2Dj5PG61ilaa/tJCOjguccsV3HI5nfgISOLIyBha0timrTIKF6goMo89pPK5WVzYZaxzHm6mqGGeqI0natr4ajlGBURrhVupUN5/cMOXZvfwbTAPf+2110iSBGsd07mMW59kVi5H98pl8hMTTD71zIYTHU/8zH+2pXHxtWzVeHxYSIkHA9CaoNWkv7RoLrSVqhhSEjaWjS61jI0U1TAZ5jgm+fuQV9FvSZa8uq/QiTnPheMa3U/HIQl8/OVl6q+f5MiLP8r4o49hOQ6n/u3v3bILciNudu/IjdWYeuoZrr30beLBgNhxkLadSk0dGklNDYPY1NPvJOr3b/tY7je++tWv8hu/8Ru89dZbTExM8LGPfYyPf/zju7pweKvN7LC7YnheLZ18jUF9ERXHWJ6HikIjgaYUWkrifu/6Yjd9jySMcCsOXqWCUglxp4vluqgwQuvEyAemr8mKGjtHVtS4R2hlDCYtC7dUNl1/Wo/GtpMgoL8wbzw2JFQPHbnl2mnIykaSQWOZ7pXLWLbD+IkTlA8euul73KknW8aNvO997+Mzn/kMv/mbv8knP/lJZmZm+PVf/3U+/vGP7/Sh3RHbVQC7VfyBG9ckw4YNrTXti3MIKclNTDJ+/AR2voCOQoTj0J+/hrAtguVlI4vYSH2iej3MIsr4l2XcnFGaJIsL9xCNCgO0SugvzqPjxKy3hlNGljl3BQKk8diQto1TKhO2W1i5HHY+j+XmUElMrjZBf2H+llrnNzNvvVvGrtvRQJnx8DHML3UvX0JIy0ySK8WgXifq9Zh44klyYzWKM7P05q8RtFpmL6Y1SRzhN5bTyQ2JkBKVFjGcfB7pGr+V3rWr6DgmNz7JYHHBTEql3LBXsaxR4+HDQBYXdhlrpKW2ihCC2PdH3ppaayLfR0jB2BEjm7pRI3l2D7/DwsY//If/kJ/8yZ/kv/qv/iv+m//mv6FWq936RQ8ZtzrJ/PrSSAP9ZqOf/cWFTY+Lr+V2jMeLM7O4lQpXv/Ot0UUWtJokQYhbraRyJaaoEgc+Vi5HEoWoKEbYdnphA0KuoyyXmhVkANmUxq5HyLRpS0ISm8WD4yC0RtpGugTXRStN98plY7bJii7IL3+R+uk3iAcD7HyeieOPc+CFH7xlgupW9w7L86gePUYS+OTGxvEq1ZGW4pBhEKs98iiVAwfv2gj7buKVV17hl37pl/jwhz/Mpz71KV566SU+/elPkyQJn/jEJ3b68G7KZjas1cNHOP4TP8VL//tvEHW7pjvW94n6PbPYSX02jHY5CCcN81qThKHRsg1DpLDIT00zaCybbqfNLMQcxxSq01FwtM4SUncBAZle8D1EprIG0nWRQqDimKjbQWlg0Ee6LnEQkkSR8TG6ydoJVjeSFKZn6M0bg2StFa1z57DzBXJjtXXfY6tNKBmb58UXX+TFF1/c6cPYNra7AHar+LPRmiTqdglaTSwvByohVx0bTagC2F6OzoU5tFKU9u5Dq4Te1SvEgU8SBkbm6g6TAQ8DAjJD2HuEWCltk8ZilZjmDx2YNY9OEnPfF9JMuKbnsHRd0xQIOPkCxT17EUIYeSp/QH5ymsHS4q7TOt+q305Gxsr8UuXQEfzGsjEQd12k4xA0m7Tn5kZKH2hz3SiV4BRL5t4fRcSDAUkUorXGclySKELYLmG7hXTd0eTsYHHBGCMPkRaweh8iLQss2zzvIYgp2X7hAUEIMw2Y+pCpMDQxJ44giRHSJmg0ePWf/9MN13nZPfwOCxv/7t/9O5555hn+5E/+hD/90z/lwIEDjI2NrStNJYTgX/2rf3UnH3dfcquTrDc/j53Lk5uYWPf1K8eGasce2dS4+FpuRzdzrUGgneobRt0OUa9rdPsdl7DdJAkjhJ1qtKMRGiOBEgYbaB4++IHmZmgyU6f7CWGlXSTDhZPWkCiEbWHlcqg4xskX0g7ELnG/t+r1es0Xmz37NxOgJk88gQYab56+oaixNogJKe/aCPtu4jOf+QyPP/44n/70pwF44YUXiOOYz372s/zsz/4suVxuh49w66ztyrU8j1zqmSJth+ZbZ4whspBYto1OFImOjdmlIF38QxIGRJ0OTsF0Qr3zE5/k6ne+zfk//zOCxvKtDySKrn+dTXRsK1lcuNcIrHzOeINpjYrN5lpIQdQzY9rSttBKkKuNEzSWWRr0mXziKXJjtQ3XTmsbSaJul7DTxquO3bDRX/sexZnZLTehZDyc7EQBbKM1SRKGxL6PShIKE5PYxeKq19n5PFppkBZhr0vU7xsTZcc153Eq4/MwJKG2ytq4kMWIe8Nw7yo9DyuXI+71Rp3hWmsz3ZckaRLXAwEqUWihEGnxSXo5chOT1+/jtk3UT1BxvCu1zm/mt9NdXnwgp7sz7oyV+SW7UMSrjjGoLyEds0ZyikWCVoOw06G3ME/sD7AsG5V6aqCMvHOSxCN1jziKmH/5O8bDJo5SSUOFVSqZKb9VHgZrmquEMAUTIIlc4sBHr9y3PCBk+4UHDCEQUpp8cK1G2Ong5PMkUUQY+DjFIjPvfjfFmT03XedtxTPtQeWOChv/7J/9s9HXWmvm5uaYm5tb97kPa1f6rU6y/HgNO5dDBT6Wfeuxoc2Mi69lq5pr6xkE+s0mUlokcYxlu3iVMYp797D06vdMFT7VZQdQKkGtSu4KhOus1pdba67zkDCUGMm6ru4TLMsEHCERqFFRQti2GUePY6Rt41arxjgwl8cpmE39ysRDaXbPKPHQePM0/YX5WyYeNhWgXvhBwCwu62+cxKuOmQKHtBgsLtwQxO7WCPtuIQxDvvWtb/Grv/qrqx7/0Ic+xG/91m/x0ksv8fzzz+/Q0d0e63XlOuUyfrPBxIkniPt9Yn+Am0ofaKXRqZGGlOm0kVJYOWNeOX78cQpT0/iNZQpT0zzyY3+HK1//KkGz8dDdj3cLWVzYRixzb07C4KYymFbOozi7h8Hi4siEUmtN0vcBjZ0vABoch/zEJEJKgtTTZliUWE+vdm0jSRJFqDjBKdqrNvpRt4tbLq96j8y8NWMz3M4U9naw3pokCQLqp04yWFpEWDaW47D06neNtnoqiRkPBriVCrnaOJe+9lejIkgSdtMfCCMLN/qgh1MnfS1ZXNghhtJoUiItC0taaM9DK00S+MY3I05wKxVTDLctCjN7iLod4n4Py/WM4XhqADtExbF5P8fZtVrnG/ntTJ54gpnvf382LZixipX5JSEElUOHCXtdgmZjNJERBwH1N14n8QcE7RYaRRIEIzkpMbzeVtz3hRBpt3piJqGEMPJvSiNsC2k7Zo23dmJca+IgwLKkkYDzPPzl+gMVT1ZK1WY8GIhUAcF4YvpUDh2muGcvi997BbdSZe8PvJ/CuGmAv9U6b7OeaQ8qd1TY+Jf/8l9u13E80NzsJNv//Atc+tqXtzQ2tNXk5FY11zYyCBws12mef5vED/Cby4SDHolSCCnQSKx8ARX4N05pCLMRG2HZ2IUCKEXc627657jfWWUSvqNHkrFZhGUhMXrrdqFI1OuNJNi0UtiFAk6xaK4t26a0Zx9OqbRtiYfNBKjW+XPYnsdguU7r/DkA3HKF8ceOs+e9P4DleRvqMT5oXLx4kSiKOHz48KrHDx06BMC5c+fum8KGVoprL/01b33uD4n9PuUDh7HzpjjWmjtP98plcuPj2F5+tMm26jlifzAyBVfKSCVopdADn/zkJLVjjxD1+9ieN7rnO8WiKeLd0g8pkxHcbq7HhSx5tR0MNwhOsYhKNwmrnyAR0uj69xfmkZYNlkSHEV6thsrlsFwHFRnvGiEEOkmQloVTLBG0mqOixHp6tWsbSSzHQdqp1JXjoFVCNBgQtJo4pdKq98iM/zI2w04WwFauSZZOvkbr3NuoOMYdqyGkxCmVV2mre9Wx0T7Gq47hf26ZZKWUyHpShg9QEup2ycxgdwDLwvY8EMajTFgWSEk0GBh/SSlJXJeo20EnMUkqvZyEIf1rV7C9PFgWie8jLIu436N37Sr5iQksL0fU65KfmMQplYh6vV2rdb5eA+XUkYMM/Mwvc6fZLk+l7WJtfik3VmPyiadoz50naDWJ0zVYkvOx8gVEr4uwHVTcHd379Uo1BABpYXk57HyB/sI1szdJVNqAolP5txUHIVKfprRQkvR7JJaFrRQgsBwXrZWR3L3PWRkXMh4QbBvpeeZ6UIqw16WQJMS9Lk6hSO3pZ0ZFjSG3WufdThP8g8IdFTa+7/u+b7uO44HnZieZkPKujg1tVXNtI4NAt1zGq1ZpnTvL8pk3kY5juhbTSr3WmmS9DYnW1xNmQlwvaNyWNvv9mVjLzGB3MUKabsHR4kgxPMcEAi1ARRG2LFA9eAjpOCAFYbttpmCjiNzEJJbtMPnkUyODtNb5czilIkGjgXSckVTUVhMPN7t3rJwKmXnnu9FJTPfaNToXzrPwvVcYLC6SGx9/aIxnO50OAKXS6gJuMZXG6Hbvj0Jq6/w5Lnz5i1z40l8QNBq4lQpJGI26YMdPPEF/fp7l06eYefY5I5mTJBSmpmhfvoRKp+N0FI3uPcJ1qR48BEKsuudf+tpX8Ot1LNs29++bSoLcf/fe3UyWvNpG0nVNad8+wnabuN8jWTklCiAthCVNZ1S/D0LgVirka+OEnQ5xt0M0GCAdB9vLjaby/GaDwtT0SEokiaING09WbvRFoWhkS1yX/tICCEkyGKCSmPrpNxgsLSEsi5l3vXsUNx5247+MW7PTBbDq4SOU9x/g5X/y/yUJfCqHjqCTmKU3ThL3e2kTSJfGmTfJjU+Qr9XY//wLvPav/gUqidPiIyCEiSiZT9MqsriwM9hejsL0NFppOr4PQiClRZQE5j4uhJnASDvMhQBpOaDByheQQpKfmkJFEUkcoZKEsNshCUOcQhGvUqZy6DDArtc6X9tA+TAkxHY72+2ptB2sl1/KjdXwqmOEnQ6t82fNHnmshvQ82hfOo5VpFFFCmGLEyv2GNI0nYbdDEqTXnZRYxQLxYIBW2uxvpLyeU5HreLkmCUkQIB2XwvQ0uckZFl97ZRPNW7uTlY2xWVx4sBAac65aFpbrYXkuxdk9HHnxR3n7Tz5HYfp6jNBaE3W7pkhnmWmojdZ5D7pCx0bcUWEjY2tsdJLd7bGhrWqu3WzCIzdWI96zj86Vy1QPHaZz6SKJZZGEgZGkupXu+lATcSv5MSEQjosmLZCoVF3QtkYVzt1MtknZ5QwlEEabFo1K4lS60yy6hBBMP/UOjv34Rzj3539G89zb5qVoVBwTNBvUjhwbXUeNt87QOHPabNyVQloWXnVslJjeauJhvXvHelMhfrPBoL5oFodKkcQRbqXy0BjPqlvcC+QWNmf5vHunh3NbNM6d5e1//2/oXL2KjqJRV27QqNMY9Jh66hnytRpTTz7JwqvfZXD1Mm6xSNBu4ZbK5Epl/HbLdEGlvw9h2+TGxhgsLdI4dZLKvv08+iMvUii4NN/4Hkgz5eMv182t2bJuUeDIuBOyTcpdQGuQkqBeR0WhWfir6/d2tAat0LFa9Zqw2yUeDChMTpEkMZHvY3s5qocOoZMEv7FM1Ovh1xdxCkWkJZE6pnfxPKXJCR79kRcplq779uSPHGTikWNcfek7pijSahK02wSNBhozweFWqjj5PJ1LF3BLJWaeOEGxlKNQMK+tn3qDfLVyQxNKd3mRyRNPMHXk4LYmmhzHolDYmftdxtbZ6hT23aC/uEDQWGbs6DGc9BhWdupqpRjUl5h6+hmO/dhHkI5D48wppGVj5fNolZAMBmghUABri5APIVlc2EGEQCUxUX9gPMikRMXXJZZ1kqDTaQy0RtgO+doEGjO97VbH8BcXcEslygcP0bkwR39xARX4JP4AK+dRe+wE0nZonTv7UGidZ2wfO+GptBlull8aLC2SHx8n6g8ozMzSeOtNc10N5fWERIvV+wxhWUjHIRn4JIRmohZtmk208QlUYbgq76MRkKwoWNip7GehiFMqorSiv3DVNODew9/NdpHFhQcYy8KpVBBao5WRXYt6Pa5+6xuMHXsEO5cbrfP8VAo3aDWNTJvSWJ5rpNaOPbLTP8muYUuFjY997GMIIfjH//gfMzs7y8c+9rFNv/ZhNQ/fLHd7bGgrxZNbTXgMFudxiyXsYpGw0wYpsRyXiM13hwnHRatk3UKIcBwjZzWsxlsWTi6HsG2jIZ920QyNm5PB7pVlGAXRLBjtfpRCxzHScXE8Dzufxy6WiLttnGKZZz/5q6nMmkZok6AaIrQpckDabf/FLxD1+rjVKm4pj4rjVfIM0nbuOPGwVo5Ca206eXyfXG0cFUWE7RZoqB45+lAYz5bLZQB6vdUG7sNJjbWTHDdjMAjveV5fK8WZP/8C3aVlclMztK9cQVi2kfiojBE0Gyy//TZTz7wTb2KK4uw+Cnv3o69dpbe0RDg/j3Bs013uuISdNloluOUKwrII2h282jhHP/JRvJn9LJ67QHt+kcLUDP2F+etdUFlB496QxYXtRSljSAnXJ/Bg9fmcTo0OvycwU3fda1fNFKqURL0ufqdNrjJGbnIapedRicJvNnGKJUI/pHrsMQ584IN4M/vp91cnZYsHjtD5kz8m6nbxxmpoLRCWjU6NMIeyCqX9B5C2w/zrp5h89r0IKZn9/g/QvHSZpTfPrNuEMvP97992SZBCwb3hZ7gXFIvePf/MB4GtTmHfDdabGhl26kbdLrHvM1ha5MiLH6Z6+AiXv/kN40NWLBpD19R4GctCAptuTxrqsT+IZMmrnUNrVBQTNJeJ+55palKJkaQSAhXHaCGIwyD13RME7RYqipCuSzwY4FXKBK0mY/YjTD3zzpGEc+fSBcJOh8HiIl61+tBonWdsDzvlqbRZbpZfqh4+yvk//zN0EhO2W+QmJ/HrdfAHqQTVahUOIYb3d41AIKRAJcrcGqXAcs0U7aqmlRVFDemZNYWOE9NYUq+bzxACIS0096Ec1QrfkYwHgJVeMlJCEqOUxnIck/9MEsJOm/Of/1Nm3/199Obn8Wohy2+8TuwbI3HbsvCX66hYcuFLf0FhajqLJylbKmy89NJLCCEYDAaj/2+W7IK8NXd7bGizxZNbTnjUxpGuR+/KFVMxtC2ibnfzI37polBYFtqy0FG0akFvezm0p9FxglMs4pRKFGZmCRp14n4PlSRG71QIVBRelxLahQjIjP92PdcXVlqZaQ3L83ArFSNB5eXY833fT2l2D6//7u+gE8X+v/WDxL0eSRSiwhDhOPTnrzH3V3+JFIIkCMlPTeIvLyNtG8t18cbGCJpN2nPncUplJk48fluJh6HGav30KYJWk/z0DABRt2t024tG8moom6Ki6KExnj148CCWZTE3N7fq8QsXLgBw7NixnTisTbOyWKWVNuPacYzluqnx8HWNf4QgV6tx4u/99GhK6PI3vsq173wbYVlYjs3YkaNUDh5C2g5xGBK2WyRBkBY8FFG/jwpDxo49QtjtIFsttGWZjqi1xQ3bvm/HuHcbAjKN3LuEUhopzf0vGU4dCUFq9mWetKLgoVfqM2uw8nnibof+1WsIIXGLJXPdNVuMHz/OsR/7CLVHHt2w8UQrRfPsWxSmZlC1cQb1JaJeB8tz8apV0JrcxCSTTzyFWy4T9Xqr7ssPu/Ffxq3Z6hT2rdiMbvva59i53LpTI0PpWoTAq1Zx0mYCIcyktZXLEXbaxggWbj3lfcPBaoTrocNga6+7D8j2yTuMSlAx2HmJtG20lCilkFKiVYIamPWPVgphGe8yO5/HLhTx60sEGBm44Zp7KOFc2ref5pk3OfoffYSJtOD4oDYXZWw/O+mptFk2yi/15q9x8a/+krDbRcUJXrWa7keCkRwosKqpSiWm8UQDUlpIIYj7faRtGa+zQpGo20llq+QqX9eRj4bWxP3e6GuEMJPoK5LK9wtZXHhASPOeluuShCFaaXSiiHp9sCQqjpChjXQdLM+sk6J+H6dSYfGVl0niiFxt3BQ+2i3cUonxx58kaDQe+KbVrbClwsbQLHzv3r2r/p9x/7DZ4smtDM/f/rM/pnHmTSzPJex00FvZnKTyPAiQto1Syrw+DWo6SbBLJXQcM/30O9jz3vexfOZNrs1fA8yiMkoNQfWw8zLZnYUNyIzCdzvCNRVyk9hSoEx3Vjzog5CMHz3KIz/+H9NfXBgtLqWUqCSmc/HCqrHA7vw13LSwELbbhJ0OQauFUyymBUGHzqWLTL/jnbc1hr5SYzVoNmldOE/Y7VJ79DFTlIkTnKK5ras4RqZjvfBwGM96nsdzzz3HF77wBX7hF35htCD8/Oc/T7lc5plnntnhI7w5K7tghZR41TEG9frIz2hYrIrDkLDVZPz4CUp79o7u66XZPQwWF8hPzRhz8NTXxW826F66gN9sEHY6nPy/f4epp15h4sQTWJ6H7XmMP3aCoN0iiSJUFDPqoZXSdJvv0uJxRsYqkgSEdd2QEiNvoIcb3pWazGumk0yjBEjXQ9oW/nIDHScIS+KWShz7sY9w4AN/66YfP0xCjB05gl0o0r18icWTr+JVqsazI4pIAn/kt7TefflhNv7L2BzbVQDbjG77es8pHzyEW6nQm5/f1NRIef9BrJzHYHGJVa0+W5m+kEOJxCwWZdwllELFCZbroZMYISQyl8OrVNFa0blwAbRG5oxvXm5sDCEkUbeDCkNiBMJenVpJfB+vWmUiXa9lZGyFnfZU2izr5ZeG04WL33sZYUlUHOPk8xRn9tC+OAdKpXtUgU5iMyk1jCVamcbA1OssCfx0ckNi5fLYuRxx4JOsbLjaKJ4MCxr3YWEj4z5HCKTrmkbtQgmtYoJmk7g/AEyjhrRt41McRSRhiFutYHl5/GaDQz/0t1k+9TpSK8JOG2lZ5CcmR9LmluPueGFzN7GlwsZas/DMPPzB5mab6+ln3snFv/pL4sFtdPBaVppQMIUJ2zMyU7E/QEUxdrGIk89jeTn2vPd91E+9Tu/aVQRQmJymN3+VJPB3ZZAaGfVmFfadZb3zYoNzRSeJKVQo4/+ipSQJfKKeTX58HCEkl772ZaqHj44Wl36zQf31k6OxQMe2ScKQzuVL9K9exRsfJ18bxy4U8JeNRns8GOCNjeEUSxz8wRe33Hm7VmM1Pz1D2OvSu3aVOAwYO3wUaZsOf+k4RL0e+YnJUcfkw2I8+8u//Mv8/M//PJ/61Kf46Ec/yssvv8xv//Zv82u/9mvk8+tvDHYLK7XTnWKJyqHDRL0eQbOJUyyaZK1WDBauUpzZc0NxzCmVcCtVtIpRkSTqdkniaDTCKl0Xt1wmN1Yz2rzXruKUy7TmzlOYmaW8Zx+dq1dIpI9OGE3XScsi8TMN9NtFZ6Pk9w6tUAnG6FVKU3SOVsgPKHXd9yr15bj+Wm06yaUEu4iX8xh/7DjScVBxTO2RR2/58auKk0LgVcdw8qZQuXaSDja+Lz+sxn8Zm+dOC2Cb0W0H1n1O483TCEsiLOuWUyNaKbRSWI5LEoXX1+6jBJa+fi0OpaaUunHNprY43bHL0UO53Z0+kIwVmIk/b2wMt1QGAWG3R9huYXmeOecx92dBenoKwLJQgz7SXe1VdDvScJuZoMp4eNgNnkq3y2i68NpVuvPzBK0mufEJ7FwOJ583ayXXQ8URQhqJZq000cBMc7iVKsXpGdxqlcabp7GLBeJeD7dSJWg1CVqtzR2I1mA7CK1WNb3sNkYNN1lc2N1sVrbZcczkXqGIZduoJElzTTBUClFJPNofjL6jtIklSmF5Ocr79pMfn0AlCstxRk2LsHsKm7uFOzIP/9mf/Vmef/55/vP//D+/6fP+l//lf+FLX/oSn//85+/k4zJ2gI0217VHHqW0bx/NM2ewHId4MxIlw01MkuCOjRtpxDDAKRTRWqOikFx1jNn3vo/BwjyTT78Df7luNlSze+jNX8Or1Yj8AWGraRIDu6mosUJOK2MHEQI0eBMTBM3mdamD9c4VISBJUElitA2VwrYdkihCOg6Vg4fJjVVYPv0GrXNvk0QR8aBPe+48se/jjY1dT1YKke7D1ai4YLku9t48SRgSNBs4hSLVQ4c3lSBbyUYaq7VHHyMJQ/zlOh3Xwy1X6C8uIG0bO5encujQyH/jXuhu7wbe97738ZnPfIbf/M3f5JOf/CQzMzP8+q//Oh//+Md3+tBuyVrt9NxYjYknnqQ9dx6/2SRst/BqNaaeficHXvjBG4pj8WCA31imPXceO19AWBZRt4NO5W+SQZ/8xCSF6WlgmqXXXiX2B/jNBs233wIhzPNXdLcjLZKh7Mculv3brWRx4R4hLXNuam26bsMQy8uZ4kawWrZG2A46Ts/xtKC9CqVIul0Gvo/fbuLkCpu+d65NQjilUjp5tYR0aqsm6R6m+3LG3eF2C2Cb0m3/8hfRcNPnFKanyY3VaF+YW3dqZDjtUT/1OoPlZdPQtHJNNpSCG3rfqDX3y7QAIoS8PjVoWUYWcRet/7fCKjPYjF2DcD2cQoGJ449T3n/ASKoBnUsXWfjuyziFIl61hopCVBzhN5sMmg2TsIpjVKKIB326Vy/jFIu3JQ23mQmqjIeL3eCpdCdUDx/hxN/7GSzP4/I3vkbv6hXsQpHyvgOEnQ7xoIc3Nsb4Y49j5Vz68/MmDtgWUkrKBw6hVYKwLFPUKJWYOH6Cxde+B5aEeBN7Eq0RSXy9eL5RUnqlNOk9JosL9w/ScVGBv8E3U4k0pXHzBaYefxKdxNiOQ+viJZIoNPtCx4HI+MUkYWCmkxwX6Tgkvo81aeNWKuRrNWwvh7RtvOr9VdjcCe6osPHtb3+b2dlb30hPnz7NlStX7uSjMnYZxZlZqoeO0jp3jsLEBIPFRXQSEw8GG96Y7XyBJI4gSdBRiDteQ7UTwm4nndzwqD7yGIOFeZxCgdLsHq5++5ur9OZ1klCYnEQFAWG0O0ygVgWjrMq+swwDSpJAoowWZ6+3fqefkFxvuWJkWD/Uz416XRa++zKFyUmccgVp2SCglSaZneL1BabWmrDdBGnhlMsk/R5JEGDnckZuxPNgrIZfr5N/99QNC9BbdWhtpLGaG6sx+eRTNM68yaC+RGF6ZpQEqBw+gluuEHa7t6W7fT/z4osv8uKLL+70YWyZ9bTT3XKF6tFHkBfnqB46xCN/5z9h9t3vueHv2Dp/jtN/8G8AgVMqEQ0GJIM+YacDQhB2Otj5PMXZvaNJjsFynajbZfzECYJ2m9b5s6lMoCkOmu72FQXkrKixabK4cA9xnFRKcPXaI4kjRmKQK0yH9Yr7/g1FjeHGVmt0HFN/9VX2vPf7N33vXC8JUTl0mLDXxW8so5WiMDWNBlrnzj5U9+WM3cNmdNvrp98AoDS7Z8PnhO0Wxz/69xFS3rB+WTkRYufy2PkcKgxIwlSONi1sSNfFclxif2DWYcK6Xni0jK46QkIcIRzTEa/v0wRQFhd2L1JKVBTSvXoZFYVUDh3Gq44ZxQAhKc7OMqgvoeMYFUVpcx3gKnK1cbAkYatN6+xZdJyQq9W2JA23mQmqrLjx8LHdnko7QfXwEd79K/8F+973fi59/Sv0F+YR0kjqJKGZ2kArSBSz734PBz7wQYBRkS8OAizPRcWS8cefRNoOWmm8coWg1bw+4XeTosRIcvpmTUZa73hRI5vs3v2oaH0FA2FZyHTqSOsIO1/g6If/Dq25c1z6svGasXIutudRmJ6hPz+PikI0AmnZWPm88bgUAstxqR46TG58AqdUpn3hPLXjTyBXXOf3Q2HzXrOlwsY//If/kPn5+VWPfe1rX+NjH/vYhq/pdDqcOXOG/fv3394RZuxKhJTsf/4DXP3WN1BBgJ3LkwQD0wm53gWfjqPnJybxSmWk6+Iv1xEYvWsrl6cwOUHvyiW0MovEub/4At2rl6k98hhOsYidyxN0OuRqNdxajbDTvvc/+BqyTcpuQiBtJ/WI1WjMQsYplcxm2l9RXRepYbhaIWeW/h2TOMayLexc3nR5WNKcq5aFVx3D8rx0LN1FKzOdEfW6SMcx3bquR38wwF+uk5uYxEplTKJeF2lbTD39jlUL0JUdWrHvo7WiMD3D/h/4wCiBfTON1dxYjeln3z0yJ3SLRZbeOEnnwhydixcy49n7jOrhIxz/iZ/i7P/zx7Tnzpuuj0qF6Xc8u+HfcGX37eSTT9G5eIH5V/4mPZ9AoFFJTNTvs3TyVTqXL466Zq18jlxtgsLUDP35a4Aw99abTTpl3JQsLtxjosh0cVvW6k3pyq9Xyg+EG2xKbMc0jicJKI1wbDRg54tUDh4CNicTMnHiCRpvnmb51ElKBw6Z4uShI9TfeA0dRWilCNut7L6csSF3W45mM7rtplGJW2q7x75P7dgjNxz/xa9cnwiJul2kkCAk3liNeNBPm0UE8aBP1OsaWVDHwc7lCHsay3UQ0uiy69hcNzoMtubLsYvIkle7ENseyQdrrfBKVZxiiUG9TtTrUT54mP7CPG6lSn9hwSRfpQArfZ3WaK2xCwVQmtJjJ7Bcm8qBgxz/yZ8eeaDdik1NUH0lM4h9WNkuT6WdREjJnve8l9l3v2dVbCtMTdNfXFg31q2UWvSX61z40l8QNBrI1HfDLZYI2220JbEcmyTahHrIaE8jVjU33vj/zf5gdyaJfj0uiGyw+35hgzWITptjVRwjpUVp337GHztO7ZFHab11msqho0jLon76FHYuh9wj6V27RhKFxFGICGyzBrId3EoVv9ngtX/x2/jLy3SvXqE7P8/4Y6aIcT8VNu8lWyps/NAP/RD/5X/5X47+L4SgXq9Tr9dv+jrLsvjkJz95e0eYsWuZffd72Pu+H+DaX38bhEzNllc8Ib1DC9tGCIHl2IwdOYZXLvPU//sX8etLDBoNctUxmufPcubf/h5Bu4WVyxG02/jNJv35eQZLi7iVKtKyiAYDVLw7JjWAbJOyqzByZmiNsG2cQgFncgphWYSdDr1rVxC2bToC4SabY42VL5hxwCBASgtvrIbfWCZoNnnsJ/4eg/oScb9PLAYjIyc7l2fpjZOEnTZaa+LAp3ftKnY+j5PP41WqeNWxVTJUqzoa8zmCVgu/Uaf++kmufPPr7Hvf8zz6kZ+4Qd5Ea2267qMIy3HQglXmhGsXjplG7/1D6/w5Ln3tywzq9XR6Qho5goOHsTzPTBSt+Vuu7L4F8BvLOMUSubEa3WtXSMIQNGbznSREgz7JwDejrbaN5TgMluuEHSNbNZIDuRlblaUajn+vKSQ+aGTJqx3ill12aTH7JmitEWnCCqHJ1SYQQjBoLNObv0YSBDeVCVlZpI56PQbNZfr1OnYuT+wPsLy86b4qlsiNT7D/+Rfui4RExr3lXsjRbEa33U49qW72HOk4RN0OjbffWrXWWDsRMpJkW14eeeslofGzMQ0pAmwbISVJFEESk6z08NuspvUuJdNO34UIYSTNhETmPKRtjbTO3UoFv7HM0slX0VIibZt4MKAwM0t/fp544GPZFgiBCiMGS0uU9uylevgw0nYI2y3zXptcd29mgioziH24uVNPpd3CevKJG53Tq5577BHyE5Oc/X/+mOU3TxH1u9j5ArnxCWK/b3oV4/jGVd5GhQfHRqQxxcoXQEDc729tYkMIhGWZicMw2PK0RxYXdhHb4dmrFCoIELZDbnyc2Xc/R3Fmlua5s0jLojC7Z7Q+GtTreGNjSNdjUF8i6nWx83njJzw9g5Xz6C8sUJyZoTAzS25inOVTp1g6+SpBY5lcbfy+KmzeK7ZU2PjxH/9xZmdnUan54s/93M/d1GNDCIHneezfv5/x8fFtOeCM3YOQkkc/8hPEQUB//hrlAwdpnHmToFE33cDamN/YuRx2oQhC0L16maknP0R57z4q+w8AcPErf8XJ3/nnZiHouOAHJEFIEvjoJCZRwnTeV8dQSUIyGBD6gx3+6VOyYLS7GMpKJQl+s4FTKhuDMn8wkoRKhBgZt658zfX/QzIYoFLNQ2GZjY7leUTdLtVDRzj0wR9m8dVXyE/vwXZdVByx+PpraJWYLpJKlfz4OGG7hXQcqkcfIQkCJk48PhoXXNmh5dVqI4Nnp2gMoP3lOle/822SIOD4R//+SN7Eq4V0LswRtJqoOEFYEq01e5577+i9M+PZ+5O1UgR2Pk/z7bdovv0W89/5a6pHjzH55FM3LGRWdt9G3S5Bq4lbKiEdx3QiKoW0bKQQCNcswIWUJGGIShLsQoH+qZMjk1ez0JYIK5XkWbtYF2Lz2rbrMUxS3aedtzdDADqLC7uHoUmx1hvXNYbfT2JUkiZTLYuw20ZKSffSBS5//as0z729oUzIvve9n8vf+Oro+4WZWeJBn/qpUwzqi+Qnp5g4fsJIcvoDelevcPoP/k0mL5KxinslR7MZ3faJ44+jgcabp9d9Tuv8OUBz5nN/mHraXC/AJFFE0GyOZBmcUomxRx+jO3+NuNfDyueJgwBp2QhpYpRZo+VI0nX+Ku7zWJHFhV3IKonN/z97/x0lWXbfd4Kfe58NH5G+bJbrLteWjW6wYQmC3kAERdGMRHG50tFIpKShjmYl7WoP58xIIiXtUOJwZWZFnpGjRBKkSAmgEUmQDTQ8ugF0o11Vl8ssk5UuvHv2vv3jvoiMrMqqyqx2lYX4nkMCqIgM++Le+/v9vibRIcZxjN9qIU0DaUgwJZn8JEG7iZXLY9j2UHFEAomKNdFbSkqHDuOWK6g41mGunQ6d60vbakJvR0E1Dogd4xu5thslfUnT1vmsSlE59gDta1fxquuakDioLZJkM6FqFKnllOG6QxKjiqKd21ANBhsZFyObIez1UDfuXbf7c8b7wr2CIfF1u8ONGxXio48lJbm5vZQPH6W7sozpukMiiZXLU5w/RNjt4qe25pnJKUzHJjM5SXZmDqdcob+2tkm9l9+zj+zsHmpnXqVw4CAndqAI/EbCjjM23vWudw3/+0c/+lG+6Zu+iaeeeupNfVFj7B6UDh3m5J/7sWE4oDQk7sQkKgwRhoGVzSFMA2GYxF6PJIyYPHkagM71JWqvn+WF/9+/3GjEmRYq3sjdkKlMOGi3MRyHyPM0q/geUW2MN6N7FElC3O/TWrhEZnoGaUjMbBYVRli5PJHX1z6GsKHgGP6tIo5CREQadKnASLR6w7To12tMnjxNZ2WZoNnAmJmhuXCJqNvVuRsIpGEghMSdmMKrVamff52Zhx/dJBccMLSyMzM0Lpy/KYzcKZWJvD691WWufu5Z9r/3A9TPn+P6l7+AEBK7UERaEHbaupCqrtG6vDhuku1S3GhF4DcbVM+8Sux5uJOThN0OfqtB9cxrNzW4Rtm3cRiiohgrZ6KCAJGyDVEKlSQYQpDEikTFGLaNNAz6a6uEvb5WDTWaQDI8sOvMGqWVcgPGbJJopuNOMGhMjao27lOM94V7CMPm1W2uty2uSSEESRgislli3+f87/5X3PIEUw89fJNNSOPiBc7+l9/AymYpHT46vN3K5XWwbBAgDQMrl0cIMbYXGWNLjO4BxUOHibpdgqYmRxQPHaaVKjnejOtlW77tH/gQAL3VlZvu01y4RG9thezUDG65vGkAUz//OqaboXl5gda1K5iOg1MqU5w/xOyjj7P64tcIOm1dJ5imtn0TAjObRUgDwgCksXU22i7GeF+4RyEESZRmRALKCZl48AT5vfvwalWkbdFdXsIulgCwMhnMTFarNcIQw3WxczmsjA5vjfp94iDg0h//AV6tti3V1XYUVOOA2DF2O+7WYvHGgX9ubg/SNFn9+tdYXV9HOg5x4A8VEEJqwt+NKr/h4FCglYGAkEbae1Kbsti2BaX02tHrk8TxXTmKjPeFewDS0P+53brUsjBtm8jzNInbMDUpEEhIkKaJ36hx6Q9/nyufdikcnMcplmgtXad0OIdbrjB56jStNLPVb9Sw8gUmTz3CniefYuGP/vuW6j0pJcWDh3asCPxGwhsKD//5n//5W94WhiHNZpOpqak38hRj7AIM5JHXn/sir/3Gf6Z44CB+s8H6q6/g1asksQ5jtvNF3OlJIs/jlf/072kuXKL62it0l69vsCqFSG0OhZ5iC6FzO5Sit7qqQ3YSbjsp3RbuorE2lgzeI9jud5ckqMCnu3QVu1SifOQozYUFon4PISVOqUyCwK+taylqNosKQz3IUIoEQUJCr1bVg7l+H2EYXPr9T+CUy9jFIubMDN2VZTrXlzBdl8zkNG4lta1qNlBxjDBMpGlx8Fs+vCXLXsUxfnNzGDmANPVGaRXLtBYXML7128lMTmLaLkhJ5GkbrOzMHIWDB/Hr9XGTbBfjRjup1uICsefhlCt6HRSCqNcj++BJ+utrm77rUfZtZmoaaRqoKNLqSnQIGQCJ0gcxEpxiUTeRpCT0PJI4xnBckji1lkwltRgGUkqEkCSowUL4xt7sfTTUGO8LuwCj19tgjb1Jqbf5PkkUkUiJCiPcfdN462tDa55RCCGw83nq584y+/i7Nq3hYUcPI52KVu+FnQ52oTD8u7G9yBijGOwBZsZl/aUXh2cImeZ7ZaZn3tTrZbu+7TfeR1oWkJCdmrlp0OdUAq5/6QsYrktmcgq/1UytFnRmwcTJU8w8/gTLX30OErBzeaJeFytXwi4U8GpVEpWkKg64a9/zdxjjfWEXYGQvSNL/Kd0Mca9H/cLrOKUSpusy9+S7qb72Kl6tilMqIywrtWDrYGYzOKUSApCWNVQyBZ0WwjDIz81tS3W1HQXVOCB2jN2Mu7FYTJSic32J1//rf6G3cn0Ynuw16vTWV7FyBaJeJ82+kTq31TC0U4MfaGXVCGKvr+9nGKASoiBACKnZ+gO17nZ6DIMaO1W0x8obPu7AsWTL95P+zdim9h5Dokh26ECgwkj3aeKY3J69qV1+j6DVwi7o4bQ7OYlhmtRfP4tlmwjDGJJE7EIRd2qa7uoK0rJxyxW8WpVrn/8cXq1G9hZr/Zup3nurs9zeCbyhwQZAtVrl137t1/jWb/1WTp06BcCv/uqv8s/+2T+j3++zd+9efvZnf5YPfvCDb/jFjnHvQqRTxMzEJEGvS+vqFaRlkZvbm4ayJYS9Lr3VFc5/4r9q5kkur+XnpoUKQ8JuFyuX1xtFohAIHcAjNAM+ESCMDIbrogJf/6jvZrghBNvx2x7FpjDYMd5Z7PR7SBLivofXaJLfs5fOtavEaYBrHPgIw8TMZlJmeqx91oVmESZxrNVCtgNAfs8eyg8eR/ke3ZUVnFKJPU+9h6jXp3DwIE6xhBCCwoGDhJ2OtrwyJF6thjsxuellDRhaYaeDimMsc/NyrKIIaRjYuTx+o0776mWCVou5J5/SXqJhqAPL8/k0w8YeN8l2MbaykxowvEEPusJeTBJFNzVER9m3/fVVzEx22FAijpC2TXZmDgR4tRpOoUjp8FEaF88RdrqIRIeL+436zS8sjlGbpNzjdXCA8b6wCzES6o5haOWRaW5WIA3uo5T+Tdo20rIJu91Nw4kBhKEHicIwNv27CkNUHGNnsgSd9pAhOMDYXmSMUeiA1Bpes07sB1i5HJZpoqKIfrVK0Gnjlife1OtlO77tN94n7LQ59/HfwR1RmIJuwLYvL2qlnxDk9+7ToZi9LmY2h9eos/SFz6YOIQZmLofpONpTenYOFQSoOCKJ440G0U6znO4BbMpZekdfyRi3xeheICQqijEEmLkcYbdL9bWXOfJd38ehD38HtbOvcf35LxN5fZ0R47okiUKaNrHvk52eIQGaly4QdtrYuQLlI0e5Ud13K5XethRU44DYMXYp7sZicTAIqZ55lVoathwHIcWD87QuLxJ7HrnZWeKgQtBsYGXzWPk8Ybej1eu+v/X5fNReN4oJhY+hRoYRac7OlgMKITRT3jQ3aqI4xshmcUsVvOoaYXfr/XlcL9w7ELatFT0D66kdKDVQCuKYxAAS3Z80XRczkxkq/LIzcwTtFsQKq6TX/u6VBTKTU7jlCq3Li7QWL9FeuoZhWkw/9DDZmTlir0/r8gKd60u4kxPk9+y76SW8Weq9tyPL7Z3AGxpsLC8v80M/9ENUq1Wmp6c5deoUr7zyCv/oH/0jkiShWCxy7do1fvqnf5rf/M3f5OTJk2/W6x7jHkRudo7iwXkuffIPSeIYtzIxPNQlSUIc+AS9Hp3lJQ584EP4jQYAhq3ZxCrSww2EbuoOmMEqjpGmhTAkpj0IzzVwiiX8ZuOWskFhGDhT04g4Jg5CgpZ+PpIkzSW4g+Qwndpv2ozG7KvdgfS6M7M54sBHxRHd69eQlk1+zx4K+w9SOnSI5ee/TL9eJzMxSdTvpUV7Jx1uCJRSiDRTKDc3R+XYgximiWFuFCmda1dwJyYwTHN4vQshhs2voNPBdJybNqEBQ2v1xa8hpG6MDX4LSZIQdjtkJqcQpoFh2ySJIPZ9zEwWeUMDDcZNst2OW9lJDTAYdEnL2vK7HmXfrr/yMv1aldjzsPJ5kAYqDOmvreprGkHj4nlizyc7M4OwLPxWi8jzdEMJNh/2drm/+VuBcUj4LoSQDAZzw+tcCE2QGN4mRngPCYmK6a0sIx1XZ9KEN1sNJHE8ZG6NQloW0jDSLAEDw7I23T62FxljFKbr0m/UiPt93Mmp4bqiB2sW/eo6SaLv92ZiO77to/epXzivMzVuyAPYyHcqEHl9TDdDaf4wzcuL9NbXCNttEhVTPHSYqROnaFy8QPvaVVQUEfW6GLaj1drpIENalv4ZKnnP2M/eCWOlxi5EkpCEAbEQiL6n1+kkQQUhkydPI02TBz7yg8S+T291GatYxs7pBmrt3FmSMMKwbMJ2i/ze/agoprBv345DwLeroBpjjN2EG212tzPsGx2EmK4mtJrZLP3qOl6jjgpD7EIxJfVZSMvGzGaIen3sUplut3NzrgZsWE0N8jcAokiTToQAaWBYpnZbGNwuJcnQtkqrMtzKBCiF32ph5gtAqtzwfbYifyXjHtI9gA1C8yB78rYDDSEQxoiSZ9S5AH3uF6aJTPuS/fU1EqXIzMzomsAwEKZJ0Na2m1Yuj99scvzP/ggAZ37r10EIJk5oFRLo30Tl+Ck6KyvUzpwhO7tneBu8eeq9tyvL7Z3AGxps/Jt/829YX1/nO77jO3j66acB+I3f+A2SJOEnf/In+bt/9+/yqU99ir/6V/8qv/Irv8Iv/MIvvCkveox7E0JKJk+e5uIf/B6QaEZ5yjYLu12kaWorB6V0eKBlYTguRhBopnwcEfueZlEKCUk8DHhSacMg9nyEFJhuBrdS0UqPTvvmFyMlhuNC6uFrZrPEYaBDpKWhcz8QqOCGiX66kAlDIkwLr9vBSBIEb7B59Uats8bYMUTKuhCpxZldKIIhyc3uIfZ6tBYu6WtBCLrL11FRSKISEp0ISIJEhQECKB44wNSph3DLlY3HT4uUfnWdzOQknaWlHUnIBwytzvJ1eisr+K0mbmWCJI4Jux1MV/sy9ldXmTh+guKBA2MP3vsYt7KTMlJmSdjtkpmcShlJ3S2/61Fmbe31syx96fO0Ll+muXCB3uqKLgJsm9Dr4fc6GIaJXamQnduDmcmgwkCvvXGMUrE++I3XrZswbl7tUiRqaHmZqARIhoWuYduoUU//JNHXv1L01tawcjkSEiLfHw6+9d0Sgk6Hwv4DhN02STKzkbGRz+MUy7SuLFI4cFAPGYcPP7YXGWNrJLcqtpP0mn2Hcas8gIFCSdq66G9cPIffbOK3moS93rARoIKQyPMoH3uA0PfoXrtKb22VwsFDSMtCdbsYlqkDxrs9kOIeeNd3xrh5tUsx0uyMuh3ilEBilytDpXXp0GFOpHmSrcUF/EYdw7Y5/G3fyeTJ07gTk5iuS3Nxkfq514mjCHMLy5k7EZC2o6AaY4zdhFGb3e0M+24chISdTkoclDjlCr3VFaJ+H6cykbqB9EjiiMzUNL2VFYJWkzgIMB2bSDAcSiDEBklr8DpGbacSQMWoWGDaDhhSZ3FKgzgMMdwMubk9lA4fJjs5TXd9jeUvf5HY99M/bQ17VQOMibFvI25lMzvExr8nsdLDjds9npSYGRchJKGnM1SSMNDkaMvCsCxUGGm3D6WwiyWSJMHK5ghaLaxcjsbF8wStJiqOMUwDFSc0Ll6gcuwBwnab0vwhhBDD4cfAhWPiwROsv/IStTOvUjx4aEfqvTvZS93NoHE34Q0NNj772c+yb98+fvEXf3E4UXrmmWcQQvATP/ETAHzLt3wLjz32GM8999wbf7Vj3PNwJybJ79lLHIYE7SZhT08tM5NTOOUy9QvnSNChTW6lglsuE/X7SDsm8j0gnamqW3gUqpgkEag4Imi3sEslwl53Y7OSEsN2sHJZhGES9fuoKMLM5TEdh9j3tD9wohvYwjBuCo8eMKKbtSrGm9W82g1V2f2EJCERQl9TSpEAQbtFEses9r+mfXIFxGFM5PVQfoCZzWJYBolSROnAy7Bs3FKRuSe/GfMGti1sFCnTDz9G2OvtWEJeOnSYk3/uxzjnOCx94fN0r1/HymVwK5NkZ+fw6/Xh3+f37B178N7HuJWdlJXLE/V6mK5LcX4e4LbftZCS2PdpXV5IpdiKOAggAWGZIPVhPQ40Q7H++hmaF8+joginpMMxY88jCVO59h0Pi99YGA81djmSBGk7mI6NmcsT9/v4zQZxFN48xBNCs/UiTaAQUrL0pc9T2Lef8pFjGI5Db3WFTKXC3u/5fq594bM37QHCMLDzeaRpEXa7Y3uRMW6JyPNwKxN4QuA36li5/Ag5qIOVzeJWJtKcpHcOt8oDkJaFkAb9Wk0TlaKIOLXu0TOZhCQM6Sxdo7++SnZmltzcXkigu3SV7tJVpO1iOLbOOosVZjYLJARRdE8rB8dDjXsIdxEADAzXe6Rm2obdDl6tCkePAbcfOjQXLrH4p39M9cyrtK4s0ltbITM5RXH+0CZC1HYISNtRUI0xxm7BqM3uVrhx2HfjIMTK53FKZfrVKk65jJXLE7Rb+KllY9BqYdg2nWvXMF1nmE+pAGnZxFEM3GA3NFCkm9p2GqFDxEWi+wXSslAqxnAzmgArJUbGRUhB0GwipYG3tsaAxKuUIvYZ1gYbw5LxvvD2QOga17aHw4ctIQ20uibSJL6t9opB3m+siD0PaZqb9ghpWalaCIRhkp2apjh/CGk7rH7tOfx6DWlZRL1earGvLUVj3yNsNbj8zB8DEPs+kedTP3/upjy1wv6DFPbuo5BmFrevXEZIQXH+EIe/43swHIf6hfM3DS62Yy+100HjbsMbGmysrKzwwQ9+cDjUeP3111lbW+Pw4cPMzW00XGZnZ3n55Zff2CsdY1fAymZxJyawi8WbcgDCTof6+XPa2tqyEEL/SINuB1WP9PT0RnmYYWzIBkcQ+75uunU2hhrCNBFSopRCRTESMZQbGqaJMjULR5im/k8BKlaEraa+n2FquwjHQfk+rmWRhOGbsxmpMev5nUCSHmiE1NZNwjAg0ZYJ0rbxmw2kaQ1zW5Shw52EaRG125g5vWn4tRrG9DRht6uZG+k1PShSKsceoHjg4F1JyEuHDvPEX/9b7Hv6fVz93Gfora3oAxbc9PdjD977G1vZSXnVdbIzs5SPHEOaFs1LF2/7XY9KTLMzs7SvXiaJFdI0SKKYOI43hrlSIgxTh4yHIV61ipnJIE0LK2sT+x7CMNM8o2jnDYP7EAJIxkXKroY0DfIH5rEzWXprazpbJo65KXtrxI5NOi52LoeQgu7KCl6tSunwUaZOPzRcowv79t+0B8x+0xOUjxyjcfH82F5kjNvCymbJVCZwJybor67iNxubyEGZ6RlEer93ErfKA9C2UXGaqaHz8lADVdTGGVipGOXFtC5fpr+2Rn7fPgoH5ikeOEgc+Hj1Oq3FBRIVY7lZzGxWn8lSZq5KEtjCEu6dxID9Od4X7gHc7RklSfTfSonpZpGWRfW1V5h74snhWWurocNmW489BK0WvbVV+tV1wm6XyVOnccuVMQFpjG9I3ErhN8CNw74bByGDXlHY7eI3GhiZDCDoraxqFbrjkJ2dRRp6GBn1+2QqE2njWtALg1sGepuOiwoDPZhOFEYuR9z3CLud1ApR71tupYKZzWE4Lp3l6zQunMfM5YZDFjub1URa/YL1eXIkm3C8L7xFEEIHvw/cBW6XlyH0+V5aliZbhCHpRGsjx0vKoQJjOLQa1MtpP9HM5XFKWp0x8eAJSmnmi9+oI20HFYaYboaw18NJc8iSJEEFPvl9+4iDgLWXXiQKAlovf11nrN6Qp+Y1GuT37GXf0+/l+nNfJuh0SFRMc3GRr/6r/wPDdlLXm43BBbAte6mdDhp3G97QYCOfz+ONMIeeffZZgKEt1QCrq6vkcrk38lRj7BJsZnId2TQNNHM5pJQkaTgbgFuuMHXqIdZfe5Wg2dCTdvRGZtoOUeDrderGCWySaIngEIIkioYtiSDw9YJnWTiFIkkcY1g2hX378arV1GYiQQqB6bpEvg9KoaQg9vpaTqgUYsSTe8xYvocxypDY+Ef0CD+1HgFMy8bK5YYBgCiVZrqExEFAEnsMPRilAQj66+s0FhaRjq3lsNJAmgZ2sYQ0LWYf/6bhxPxuJeRCSvY8+W7mnnjyjiGeYw/e+xujrMD6+XOsvfSCDo5ttzD823/XW0m4+9UqiYr1wX0TI10gkpS5ojbWuDgMMTJZlO+jwhCh0oOikFt71n4DYvwp7EIM2LgqQRommYkJJo+f5MqnP7XhtQwbv4XRPzVM8nNzmG6GyPOYePAE/fVVigfnOfVjP64ZXdye0bvv6feO7UXGuC1Gz89TDz9KNEKkMHM5WguX7pmm6PAs8uwzVM++RtTvY2YyTJx8iPCrzyOEblAhBLHnbWKuEiukbWkSrVJ0lq5hFYoc+a7vpXhwnrDXo7++xvoLz1G9uEASx2Qqk/TrVQzTRqF0Nsc9VniP94V7DFvWBXdAkkCsMGyTiQdP0Lq8eFvm6la2HqXDRwj7PaJ+n6DboblwCXHUpL+2OiYgjfENh1sp/GBrt4GtBiFuucLkqdOaSb62pns0iULaLu7kpB5QRBFJkiBNk+zUFH67jVeva0tqw9gYOgzIskLorI5ikUQl2jLI95G2hRASO58n8jwy09OUDszTunpZB5OHIVHgD+2ITMfV7h+DGmtk3bntnnA369MYmyHlxjBjEPh+K6T3S5TCymYJut2N8PD0sQzbRkhDu3aMqDSElBvB8YkiN7eX/L59hK0W8x/+DoSUhL0eXq3K+d//OOtffxG7VB7W1GG3g53NUjp0GGlaOnOs08JvNcnt3TcUCBi2jTBNukvX8LNZLn/qTwlaLYr79xN5Pusvfx2/1cQuFpl++FFMx9GDi+XrGI6zLXupnQ4adxve0GDj8OHDPP/881SrVcrlMp/4xCcQQvChD31oeJ+vfvWrvPDCCzz11FNv+MWOce/jVkyuAau8fOQICYLWwqXhbdK0cEslgnKZOFZYqQWLNCQEvmZ6DaRhA2wlHbtxg0hl72Gnw+Sp0yRhRL+6jnRckkRhZTIkUYRTqeDV6/QadZIgTlnMBlYmi10q0V9dRe2S4MJvVGglhh5WDX3UVaxnFIlK2RgSkdFLnmHZhP3+cCOUpj6cKBWTxPEwqNl0HPL79tJ/+RWCTgvTzZCdmQUB7SuXsfJ5ykeO3ZbNtaP3sY2/H3vw3v8YXAf5PXvZ/973b/u7vlFiGgUBYae9cdjbpLhIUrsPveYZrquVcGFIEoYYjkPU76FCD2GZSCmJb7Dt2xKjB837AAPrqXFA+DuEN8sKLc1cMrIuhQMHefDP/CCG7XL+d/8bdqFI2O0M8sI3qtH0t2LlczqjKdFh4qbjUDp8FK9Wpbe2umnNvtUaPrYXGeNOGD0/D87ITqlE1O/TWrh0TzRFR/2bvVpVqydgyP8xMxmy0zMEnTa96voNOU1C/7akGIZwCtMkDnzMKOL6819m7oknkaZJ5egxjn7w/Vz8zOc2lKyG1MGxvo+dzRJEkWZTbsnQv0F99WZ/DiPPMsY9irvZM4QAQ2Jl82RnZulcvXJb5upWth4Dwl5rcYF+dY3O0jXsQoHJE6fGBKQxvuFwp77QjfvarQYhbrmCXSyhXvwqQkBp/jBBt0PQbKQ9I4Ps1DSZ6RlUv4ewbHrLy0jDIE7JqsPzpJQpeTHBKZYxXAfDcbCyOVTgE3S7qDCksH8/pSPHSIIAp1Qm8gOiXheEJOp1cffuIzs7R+PSRd07GCh8x+r2twdJsrm+lQKSO9QMsRr2fKKoM6wNpGXrPK8bsiWFlNiF4lDpEXW71F8/Q2ZyEr/ZpHbudSaPn6B8+Aji6DEiz6N54QJJHA2vy8zkFBNHj2Lmi6g4JrxyGSFN7GKRoNm4yXbULhTxW016qytMnjwNQP38OVQck9u7jyC1p5p+5DFKh49QO/MKvWqN2ccev6O91E4HjbsNb2iw8cM//MP8nb/zd/i+7/s+MpkMS0tLzM/P8973vheAn/3Zn+XjH/84AD/6oz/6xl/tGLsCd2KVAzfdNvPIY+QmKlx77jntA6+U3iAGAZ6ANAwSITBtW+dyOFrypW1VUs/zQYN7xANdmib96jpBu41Xq6WyQ4i6HTITk5iVCV66dg3bD5i1TKx8geL0jG7s9bpkp6fpra/doBAZA3jbrWnMfAEVBijf33gJto3pZvR/ZrLaViRR6eCCjSarUoTdjibuWvYwPyBJErJze7RdWRzj1Ws6myNJiIOAoNPBKuQxs1mCdpv++hruxGQarGTQuHiefU+/921tNoybZN84EFKSm50bNpMGB5Otrrew1yPyPMxcjrhWw280iAbr1qj6bPC/U/mtNC2sXH5oSaXCQN9TSCDGsG39G9qG/YcwjJTZ3t8I7dulGM3TGOPtgTCMzayrWxUnpqnZVnd8QLExbENgZnJkJicpHjxE9ewZkigiOz1DP2WYqxE2X/oAWLkCQgjiMESmwbK7Xa49xr2Je1mVOerf3K/X6CxdwzAtJk6coHToCLHXp3V5gd7aKgh99hbSQAV6P0nCYMOaanAm63W1AjsMufLpP0UIOPo9H6F06DC1C+c5+9sfo1+rkZudpXL8JP21FVa/9hWEEEw/8iiRH9C8eIGo19uwkzAMbSfxFu0/o3kaY+wi3EiA24oQJwR2oUiiFF51/Y7M1VvZerjlCk6pjN9s0r56mQc+8lH2PPnNYwLSGN+Q2Mm+dqdBSKYygWE7mpkuJWGns8kiOlGK3tJVDrzvg/RWlgl7XRLPI073HWGaOmvNsvR5zjSJul0Ke/Yy9fCj9NdWaV+7hhDgVCosf/mLaUanzt9QUYiR9hD6tRrtq1eJAx8/ijCEQMLW5FspN6vm7xPy1zsJIQTJqGV9FIFpwS3JyHpwLU2D8gPHqb32slb5SAMShQqV7imOfDcDG7OB8sfMZgm6Ha5+/rMYlsXF3/1vXPvsp4eWUJVjD1B54EGkaSFTVY+Vz2PbJmEY6+w9KTBdh+L8o7SvXL7JdtSdmGDtpa+nebA6XNxvNrBS5xsrl9d/0+lgFwpYxTLBpUs3hdcPMFqv7HTQuNvwhgYbH/nIR7h69Sq//Mu/TL1e58iRI5uCxJ9//nmiKOLv/b2/x3d/93e/KS94jN2BO7HKR28zXReAq8/8IYuf+QxBt5Oy5mPdmFZKh7kNQn9UgjBMpDRIRDQcYoBICw7N1NKSsYQ4DGhcOI9brlA8eAAV6OBxFUfE2Rwf/+rziH6fBzMZcq6LoWK8WhW7UCA7PUNmaprVr79Ib311e42UAbY6NN9vU/y3870YOtBPJookzQkQpkl2ZhY7nydB4K2vYroudrlMd2kJFYWoYXErSKIYv93GdF09KEuEtiQzTQzHAd/XhxZbB80nSuG32rjliWFgVOz1mTx+guzsHGG3u6tDlsa497GdMLABvFqV9tJVmgsXQQgiz0sHeJqRkmz6vW6sTYZjI00TK5MhStDBaKaJ6Th4taq2+VNqQ259mwN5EkWE7faup7KOw2DfGSTb3VOSRAcB3im/Kv3+EkAYEivjMnn8JLnZOXqrK0jLAiHIze2hX6/jN+q6sBEytcWUWNkMSZIQdrtkJqd0Zli3u6vl2mPcu7gXVZk3Zjd1V5ZTEpGieekSZiaLW65QfvAk1TNniHwfp1gi6nVRUuj9J5bDBoSKQj0/NAxM1yEzNU3Y61J7/XXC3q9TPnKMs7/5a/TWVhHSoH15AfvMa5iZLIab0YrEbh/DdbALRX3W87UFrWHbxCPklzcLw0E3jPeFnWCnliuGcYNt5pv2QkBqZq7yva1fU5JguA5JHNNdWWHuiXfdlrl6O1sPIQTSNMlM6EH6bmgUjSqy7oV1Z4z7BzvZ1243CJk8cYpLf/j7RP3+hn1u2jwWQhD2+xiOzcSDx5k6/TDCNEjCCL/dpnV1ERXGqDAg9n09GOm2sfMFivOH9N93u0ydOs36a6+y8vxzqCjCdF1ExtT9qTAkCkNtsxg1SOKYWG1kNMiB3dUoxrZTbz4MEyuf09kmgz5gHN9mqAGQINCDguxcTPHAQTpLSzqnI4og9tP/PgicB5JEDwTSIdjgmktaTbJHjlJ+8DjK94ZZFsd/8Ic1MWMLS/6BIqI4f4h+tYrpOEw/8thNw7n20jUArLzeU1QY6iyO1PZWmiZhLyZO+1t2uveEnQ5uqXzTu77RXupeJtC8UbyhwQbAT/3UT/GX//JfptPpMDExsem2n/3Zn+XBBx+86d/HuD9wpwPQ7Vjlg9uaC5dY/NM/Zv2Vl2kuXEDFMYnSMrFEpf7vDGwRYz0xNQ1Eai+kBptHkqRDkI2iQ5oWcRhAFCFNE6dUxnQy4OjFYv3KItXXXuFBpaAywbve8z46ly5Cooh9H2lZFA/OkyRgOjZuuaI9GOOB7146QlHJzc0VKTcWx9HbhASxC21apES/YaFZcW+z9F/YNoJBIFf6b4ZBZmoGw7YJOh1UEOKUK1j5IkkUYlg6TF4O/BJByxSVQkUR+T37tLrDkASdDnEQEHl9or6HMAwMWzd7k/T6EUJgZbPDwYcQYszaHeMtxeZQyluHgQ3ue/lTf4JK7TnciUltNQUMs2ZGf6Mja5BgEG4WkpmaZu/T74U4Jgp9Vr72Vfpra0BCchuG6jDAbbgmv+kfx9uCcfPqHcZ298bUQm1QMArDwHBdVByjQm1PI2QaLJgkEEYYlkXl2IMc+MCHEFIydfphCvsPaNbSnr2aCWhZBM2mHmT0dTEjTAu/0cB0XYrz8wC7Xq49xr2Ne0mVuVV2U9Bu4ZTKSEv/NlqLizilMnGvh5nJ6II7SXSTGj3wHgQza+ajiTQkhmVjZXN6wOE4uiFw5jUuP/MnxL6HkclodmwU4dXrJOtrZOf2IC2L9rXLmK4eOor0eUgS4n5f//c3sZk03hfeAHb6HdyQBbZxfrmLxxp5HCGFFnCr+LbXhl+tEmdzTDz44B2Zq/eTrcftSDTZU8ff6Zc3xn2AnexrtxqEAFz7wme5/vyX0oG5QpoGTqlM4eA8fr3O3EMPMXX6YVa//sKwwVwQgvyePbQWF+isrBB1O8QqxszmqTx4AmlaNC9dxC2XOfTt38WVZ58h8j3sUhkpZTo8H3HuSJI060PntRpC6D5F6hwyej+EhHgLYux2yDn3I7a7N6dh3iBI0CrPTXbKSpOYrUyGyA+GYe+3Q5IoIs9Dmhbz3/adnPud39Jk6tTKyjAt/E5b1xCmVpAnsVZaWPm87vcohXQzFPYdwDBNDHMjy+Lq555l/3s/cJMiIvD7NK8t4ZbLHPmu7+Pq554dXpt2oTDy+hLCVgO7WEJIg6DdJuh1SZQiDkNMxxnapRuWpT9O08AuFvGbDfJ7921rH7oXCTRvBnY02HjuueeYnJzkyJEjm/7dtu0thxff/M3fDMDHPvYxvva1r/HzP//zb+CljnEvYScs4ts9hm7a1fGbDQzLIr9nb8oEU7iTk6gowq/XU2sKgZnN6OLJ8wjarRHPxEEGR+pvaKRNtlRhoZTCq1VT+VeGdrvF1dVVylKSy2Q5+Z3fQ7ZSIW7U6VerZKZnCJoNWpcXKR0+qie1UvuuxlFAEsVI2yaJI2LPS21bblio4zhtpI+86a02tjtBSKQh9RDnnVJ7DAZHw/e31RBji9BV294oaO8GaViTncmi4kizoywLYZgkiaI0f1grMqSkNH+IqdMPc+ET/5Vuq0FmcgqvUSdOdFhskr4HzcbVRY7hOGSnpumsrtBbub7h12wYKZPQRVja99Cw7eFmItPNZLeHLI1x72KrUErYOgwMtL2f32wy8+jjVF97haDVRNo20rK0ZZ9Smm0ihbbVS5tBCRCFwfAanzx1SudpxBFedZ3Cvv3019cRQoemDQP4bjiUGrajm8q+93Z9RG8Nxs2r3YNBo9QwdeiekKBCvTsZkkQpktSKTdo2+973QR76C/+34RlFmibH/+yP8Pwv/QLNC+f0EEMIreYMQwzTxMzl8GtVsjOzlI8c21T8vtly7TFbdox7ETfmCMRhiIpirFxK+Mjl8Jt1wk4HFYZI28YpFnHKlWHGU9zvkwwIMlIiDDm0arCKRYJWU/unK0V3bYWo38NwHEzb0WuxbWMAYbOJV61iFfLEqcUVKtH/9xaxYsdDjTcJd/X9jHzuhrF9e7HBc40MRAbPnNxOeZ9AHISYOcHBD337HevZ+8XW404kGvfHfxxndv87/TLH+AbDVoOQ5sIl+tV1Ys9DGgZWXjeFuyvLdJaXmDpxmvkPfQhpmjf9Nu1CkczUNL21Fax8AWlahJ026y+/RH7vPqZOP8SB938LfrNBHASYbkbXS5ZF2OttGoomgEoSJGiVBoAA280QDqx4hQRjw/b35vcnbnXT/Y2BLZeQQxWdNCQqCFAICNMBklJbq7ilRBoGdr6A32oS76C3NnB5MUyL5sULSNOi32ppEquteztm6tqBEJiOSyJAhQFht0scaOKzVShgOo4mVgixKcvC/LbvHCoimguXaF+5jGEZ5Pcf5Mh3fR/lI0cRUt5y38jOzGGXyix/5cu6JoliPeBoNcnMzKF8b6geT5KE/uoqs489QeR7O9qH7iUCzZuFHQ02fvzHf5w/82f+DP/kn/yTm27763/9r/PUU0/xF//iX7zptueee47f/d3fHQ827hOMDiSsXAGroGW7tbOv3cQivhVGm3aZqRnaV69g5wsI00JaJr2VZVQYYOeLSMMg6HTIzc1ROfoAVj7P2ksvErSaukBCqwhGLVKUSuVog2agaREFAd3VVdxymYxpUckXcMOA3MQEEi0bLs4fIux2CZq6Keg16mR7PeLAJ+r3MLN54sAn9n1iz9vc7Bd6Ui9SRtAtLTUGB+40vCq5hWxOpCoTaVnEvkfQbm/fpuMNY2RwIQSDEO7BoCFhm68jHUjdEreTnKeSv0RKpG2TKU1TPHQEp1jCq65RefAE8x/6ttQLM6Gw/6B+uYYkDgIyE5NDNmHY6xL7ASqOhoVpHEaQpIFMKkaaJnYmS+x7qDAk6nYQQpCZmCDodBBmeZMVyW5jY42xu7BVKOUAN4aBAcP7Wrn8MLjSazQwbEcX8lKSmZrGcJ30gNQiiUKkaSGE1MPpw0fxqjXq586lnrIxhuPoBnGSepjeInNCRRHYNuz2wca4cbW7oBRGJsPkqYdoXrqor8+sBUrpxmcUIi2bo9/3Axz77u8dXs+DA35h336KBw5SS/d5lRYpVjZH6fBhDn7Lh+mtLNOvVgnaLQz/rZFrvxlkkTHGeCtwY46AYVlI0xgOwwe2CCoMNekjAcO2mTr1kLaMCgL8epX21at0V65rNYdKsLIZpO3QX1lO95iE61/6PH69vpGTkVogAhiGQWgaRKnNVJIkJJE+aycq3trD/E0YdgggGe8L7yyUQlgWwtH1ZpIkt64dUpbvUEGaXkuoBAxBEqnN18Sg2TNoeNkO+bk9NBcusv+977/jUOKN2HrcC8Ps7ZBoFp95hgd++M/f8wOaMbaHe+G6uxsMrtUkVux599O0Ly/iNxuoOMZwXFCaFFueP0Tfi276bbYWL9FOs6H2PPkwmelZvNo63eUVzGyG/e/9AKVDh1n81J9CkmjL6XZL56+lQ1VhmIDOc5CDTI0UQqYZbFIQNpuQKITh3NSj0ncWu86847YYKKhH1+Ut9l9p2xtuKwO7J3SfLvb9O1hJpVAKpbTyYmCVfGebAJ2vIdI+lopC3HKZuXc9yfXnv0xvdQUhDZxKhQToXrtKEsfIbBbDsof5FEIaCCFRvk81HfwW5w/hliubXDwqR4+lduYtgk4HlKJfrXL1c88ipLztvlE+coxLf/T7m4Z30jDorizTvrxAdmqG/P4DhN3ucHDxwEc+CtycYXw/2EvtBDu2okpu8Sv85Cc/SXbMWr7vMdhUOml+QfvqFVQUI00Du1gi7PWHLOLbbZKjTbvID/RjWBZJAlYmS27PPsJuh4njJ7DzBdpXr1Ccnydst+ldv66Dng7O6815eXnotThcRON4OGTAkFiuiwLCboeo18NwbEqmQRTpA/BAzuWWK0yeOp02BesE7Tbd60sYtovh+pAoHQaklLa5Gl3A00N0ImUaYs7QSgu0JQYyLY6EznswMy5C5LDyOVQcI0hQCVhuhvzefTjlCt21FVqXLm5kiQze41a/xXQIoILgDakkEFLLI0eDV1Obr+RWxcTGAwwHPtKyNJM7ClFhhBoMm9LXJqShN6Qt3osQ6QAljgm7HaRpUX/9LFJKykeOUDn6AJc/9SebG0EH53HKFdT5c1qy52YwZl3NAohj+tV1VBggLZvphx6icekSXr06bPxKw0BkMgRRrA8iUZg2wQy6S9ewiyUKN2wmu4GNNcbuw61CKQe40QZt9L6D4Mqw06Ffq1I9+xpedV0PK5r6gC1ME3dykn3vfg/ZmRkai4tUX/k6secjLb1WGVYGKVMLhzv87FU4uua8dbZ0bzXGzavdh6jfp3H+nN5zbBsAw83gFktI1yHq9Vl94Xn6a8uYjjscGBQPznPlM5/CdDMc+8hH6a+tEnoeluuSmZ6htbhA1Ovx2F/5aXprq3fVBNhOA2EnlnNjjPF248YcASufxymV6VfXkVZlk5LVTMMtE6EtX6WU2EB2cpLSkWOsfO0rRP0+Xr1GkkDQbCCkJDszg5XL069VNQElMZBZbSdrGnpfG3hcx2GfOAx08zrN+dD2termXedWnSNxaxbtlne/q09ujE3YcRdPZ2KAboZlKhO4lQmCdpuo36PfbG4we1O1XRJrAtaoLaaZySKFIEoZuMnoACxdi7XNsW6JGLZNcf7QjvLz7sbW414ZZm+HRFNfuDjOErxPcK9cd3eD0WvVyuVxy5UNpaBlkQBBq0Vn+TpGeRrY+G12ri9x5rd+HYRg4sSpYR5wbmaO7PTs0EaodOgwmUpl6MyQnZ0jaLWIw4AYdD4niWb432CRl6hY93J0QBugTZTU0F0khdD9BmlbRL14M0F2l007hGUNA7a1clIrMkmSm/tFhnbAGL7HRA82lNcn8Po7e+IkQcWhJjJv9Vw3vVD0nmCamJkspUNHsHJ5rFye6dMPs9Trojwfv17DnZikcOAgXq2KCgLCMCJRsa6HhcBwbLKzs7o3tLJMv1Zl4sET2KXS0MWjuXCJs7/9MfxGg+L+/biFPF67c9O5/sZ9Izs9w6u/9h9vGt4licKdmCTstEEKglYL5fg3DS7uR3upneANZ2yM8Y2F7soy66+8TL+6RhLH6aKgFyqvVkUYBuuvvHzHA9Bo006HNxuoMESYeiMxLItISuxsLg1fm+DED/0oQkqqZ89w8ff+G+UHjiMNg87SNernz9FbXSHy+qnMWOcfWG6WyO/je30Cz8MQAsuyEcPFVedpxGFI0G4TBwEqDMjvO4BdLBF7HpnpaexmEafyCMtf/qJmgNo2QkqiXndj2DBo6iml12y5sYkJQ2IXi9riJQxRQUAkYsJOB7tQQFgWlUOH8eo1wm4XBLSvXmH9lZcgUUSev3EQvwVjGsBwHG3TFEUbBd4dwn5vhJAGhusQ+wGm6wxf7/CxbgPpOPojSBl17sQUTrFAHIREXj9lPQRE3a5+uNvIB4UhEQqEaWEXy0jbSplzEHS7XPqjPyCJ482NoNfPar/FXJ7+2iqZ6Rk9tBJCywrT91eaP4SVzRP1uvozsyxUEBJ2u5iZDG65jIpjYt+nt7ZGcf4wmakpDNt5S1m7Y4wxwO1CKeFmG7Qb7yuEwC4UsAsFYt9ntdVEGCamY2PaDtJxifo9lp//chqcXCOJI4qHDhO0Goi+RWZigiRJtKXbqAXEVuuAECNMm91zMB8MjMeNq10MpfCbTb1X5wvEXh/Dssjt3U9/fQ2R2q9lJiaRpjksLA5+8FuHRbI0DHJzezY97EAV1VtbvauGznYaCDuxnPtGKk7GuHewVY5Acf4QQbejBxRKkZ2eIQFaC5coHzlCgqC1cOkmS4TK4SM88NE/x8X//rtcefbTGAULd3Jq2GQynNR6SugGEkDk9TEsfeaWhrHhoi0ESZq9l8SRHnRstzG01VBj5G8H9hJjvEMwTYw0tytRCqdYIg4C/GaD4sFDJHFMttumc/16qji1icOQsNUkjmNNjEr39tjziFPFuVkoYgTaejOOQu0UICVCakvjOPARps5rChqNHeXn7cTW414aZm+HRBPUq+MswfsA99J1dze48Vod1DkDqDjGq64TdnsY5Y2/E6mKK2y3Kc0fGu43w9tvUMGP5q8hBEGnTeR5ekCR2llrb+tkI1MjJWkGnY7OXXBczEwWp1igt7pKQoJK1QUCUHFE4t/Qn9llQw2E0AOFtP8lLQu7UCQKdDj7Tao6FW/xHu/yPSsFCAzb1s91p88uSZCui+W4FA4e3HTd5Pfuo3L4KO1rV5GWxeTxk2Rn5/AadernXqezdI1EaVWQmS9opxgEfr1G6PVRfoDfbGKXSux98puHw4nRc700DKxbnOtH943O9aXbDu9UktBfW+HY932E4sFDO8o3/kbAeLAxxo4Qdjp0lq6h4gi3MjE8+Bu2jbQqePUanaVrhJ3ObR/HdF2UiukuX8cuFHFKZfx6FatYTv3kNANMmObQ7ie/Z+/wx3vts59G+R5GLk9h337ye/cRtNu0r16hdvY1DMdh9vF3YbgOFz7zaW0tBSgpSRJF7HkIKbDyBZI44vqXv4AwDL14RKFmhhkWhf37oSop7t9PohLMTBYrl0+98a5vTOSFJBkNBU8Uw+orlSYmUYSSksj39MamKzdye/bhVddZfeGr2Pki7sQEceDTWVnR6gLT0k1LKYZ+4ZsX8I1wvezMnFaldPXnL217OAgZDBvuhMmTp8nOzrLy/JdRSYKVcwji1i0tszZehv4s1GAjMy3NRkildPm5vRi2xdorL21WnYwWomkhKwxTB0oKwb73vA/TcbXnuWUhMxmuPPNJSBL2vPs9mOn9RhtBlQePa9VNtYq0LQzb1jLVdofM5CTF+UP6+4gikAZ2NqdzCKKIzNQUVi5PohT9WpXc5AQnf/QvsOddT941a3eMMXaKnYZS3njfJEkIOx0i36d1+RKZiSlmn3hSK6D6PRoLF3XjSCn69Sr99bW0cdACEqxcQYe3Oi6G7aTWe7cJ8EwSbR93O//qewibfNPH2P1QMf3VFYJGAyufRylF89JFDNtKWb4tVKxwShv7xLXPf4bI88jewkrwRlXUTrDdBsJOLOe+kYuVMd45bJUjYBeKlA4dofb6GVCJtmpot4aED7i9JcLep57m6mef1UzLKCIxNdkoDgI93IhjojAgMzFF1OsS+R4qiPWAcnoau1ShvXgJFcU6d820dNNksP/sdG2XEmGaw/wp0HvEeLTxDkAIUJqBa5fKSMOgOH+I7vUlIs/DnaiQmZwm6veIuj2CThszkyWJO7qBGcVa7Z3WGAOnCWEYJGn9JS1LK8hTZXmiFEkYYlg2husSdbtIS/vv1y+cf1PP/PfaMHtbJBpnnCW423GvXXd3g20TvnI3X6s7UcEP8te+8ku/QHvxEl4QEscxRmo9JYYE0xEHilQJoIIAM5vV7Pp2m5lvepLG62fo16oYmQz96jphq7VpbdoVkDLtW0mdH5LumcIwScKQJI70YKnZuDWh9k16vyIdekdeH9PN4JRc/FZbk2VH1TFJ+v+EQNo2xf0HiXpdyoePbTpvD8gafruFX6+jYm1xaVg2mckp3EqFsNMlv3cfhm2x8sLX6Fy7MrQuFI4eoEemSb+6xsrXvnLX5/rtDO/8mklmamZcE2yB8WBjjB0h7HWJvD5WvrDlj9VwHMJOh7DXveVjNBcucfnZZ+hcX8Kv17GLRUzXBSHxG3XMbI6w28EpluitrZKpVDbZ/WzV8BNC4BSLkE7YszMzZGdn+crzz3Fu6RpHLQtHSizDhPRQW9i3D7tYZv2Vl+ivr28wxQyTOPDBTAi6XXrra2SnpxFodpidzxOHofb5HYRIJSMh5sZmmbOZyyHQaoawnQYUGaktlSUoHz5CU0rCxQWi0Cfs9fBb2pvRzGTT51A6zEhKlHejh71uKGYnJhFoKy8vVZAkSiENUxdstxpsjA4WhCD0+rjlCnaxqHM94hgrm9WZJjfef9PLSDaKQiGxs1lMx6a47yDuxCRmLsf6Sy9iF4paBTJ4HyOSzcEEXlqS2PdxikU6165SnD9EZmICr1Gn+tXn8Wo1kkSx/PyXyE5ND/0NAaxcDq/R4MEf/HPUL5ynfeXycKNTYcjU6UdwyxWCdhtpmvqpldIqocHnJQQqjpGGSWZyitL8PNI0x5vIGG8bdhpKOXpfw3XprSzj1avatsHzyO/dD4nCqVRoXVlE+f7Q1qG7tIRSMVYmSxwGqDAm9j16a2s4pZJeFy1Lr4GJ0qo4ITekvaAPeI5LIvyhF+29inEY7P0LpWKCdgtp2ZAo8nv3a59cwxhaTg4Ki+7KdYBtq6K2i500EHZSbO9WX+wxdj9u5Qd9+Nu+k8mTp3EnJm+6Jm9nieBOTJLfuw8VBATtFmFP/0Zz0zMU9+1n/bVXiPt97YM9NU3YbuM3G7jTMzz+0z9Dfs9ePvOz/0+6169huA7CNAk7HW0DO1BNC25mjN7q/KoUURDohhWpNdFOP6RdaCPytuN2n1HKqhaGmdr+2jiFIgihVd5p9pFh2sPg2NLRoyx/6Yt0e0taoVosEnk+Qbu16XEN28F0HVQYEft+Glxva0thoe02zUwWM5eFBDrL1zEdh3Mf/x1UOmx7s+x67rVh9nZINHMPPTTOEtzluNeuu7vBdglf+bk99L3NJKvBUGRgXT4gS1r5vM6CuuG8t+/p93L29z/B2vUlSIcalmEgDUNnscGG5Z2Uad6UgZkpYdgOVi6Ladv4tXXy+w8QBT5htze0vh4oPICt18U3uJ9I09KDEyn0IOIuYOX1uTgOQpxKGcO06a2vkaAfz7RtEJJoQHx9O3JghcB0HDBMhNTXrVuq0LyySFCvIx2HJAyJozC1yNJ/Ztg25aPH0n6ffdPDuuUKpcNHqYVn6FfXCFot7GKRyRMnKR06wsIf/QGZqSntCpLN4Bum7itFkW79OQ5TDz1CEiuufv4zRL5H1t05aWqnbg1jbMZ4sDHGjmBmc5iuqwOWMxk9pU2DOIWlg39MN4OZzW3596MsxsrRYzQuXiDq9fB9H8O2dGB3tYo0DZxSmckTJ4de2J3rS8MCaf97P7Blw6+/vkpmchJp23zyj/+QCxfPkxUCq1hkct9+gnoNu1hi5pHHsQsF1l56ESuX0xkMUaRtiaTAKZX14uW6BO0WjQvnmTh+Um9oUUTse7pZkrLMBg15SCDe2IjM9DMSlo2dz6N8D9PNgGEQdbs45QpmLocKfPJ79xEHPsWDB2lcvKAHMLata7PAR8hUzeBquTSp3ZWVzTH3rqdwy2V9KFldSb2H9csRMvUSvs1AYhSdq1coHTpCdnpGT63jWC++YhAizob91iD8e2Qzk7ZDfv9+rGyO3vISKogoA0a3g9do4JTKkCSE3Q6JSvTBIN0cVBRi5/JUHniQ3toaVi5Lv7pO0O1Q3H+Q9tUr+K3WMMBJmtam2716bZiNIkiYOv0w+37oR4a+hOc+/juYrrbLsvJ5spPTBK0mUeDrqbsUQ9/msNtBSsn0ydO74kA/bnrdf9hJKOXgvuc+/ttc+8LniD0PK5cjOzOHV6sRBz7VV1/RrJRmAyuXJ/L69FaWtfc0gpCeVp+lQaxJFBE0WyQqxnRdpGES+Z5mLrkuhmnqw2MYYpVKWG6GOAjo16p6bRxhv94rGB1qjK1G7jMk6IEbib6mk4TI94n6PXKzc8MiDfTeLKRBZmqK7srKtlRR28VOGgjbLWK8WpVXPv+ZXemLPcb9gZ3mCNxoiZAoNTzHh532MAtqqyYThknt7KtEnkfU7yNNk8oDD3L8z/4I+9/7fgAe/2t/g+f+2T/BbzaRpkkSa9KSPupqxr+C1Kpq1Mc8zY1j43+rRA2HGvJu94XxYOPOuM3nIwwdyjrI9BJC1zpuZYIwtY0dENMAvEadztWrmLkcsedh2LZu5AXhMDNPpgqMwVBbWjZRoPeE0uEj2nLW87ByeQzXxW/Uted7HGFOz+KWy2+6Xc9O89PeamyHRDP/oQ+N64ldjnvtursb7JTwNYrc7Bx2scj15780zOMZ5MNmpqbxajUmHnyQ7PQMAF999hk+8+ynqHt9iq7LU48/QSGfp7e6SuvK4nBfEZaFYelGs2E7CMvEr1bJTj7A4e/8XhoXz9NaXCBTmSDqdrW1eJLo9c60kIYxtDUfWIlL29L7UjBisbQTRXyqppADl5JBrsU29yjpONoeXhrYpZImDUgDr15DBQHSdTFsW/fD+t07P6Zh6PyNLSwgh7mw24SQkigIMF1JYf9hnGIJKQVJEGK4DiQgXRdCiRAy/Qx0rqTfqOO3Giw/92WmH3ucTGVi+Lj9eo3G62cxTAtp2iAl7sQk+9/7AcxMhiuf/lNir0+iEmLfJ79vHyT6XDNQeGQnp0CIN0Sa2qlbwxibMR5sjLEj2Pk8+b37aS0u0F5c2CSjE0JgFYrkD+zDzt/8Q96KxWhmsmlQd4Ow08Iuljn4rd/GzCOPUTn2ALnZOVqXF3nlP/37mwr6fU+/b7hhbDT8TnLku7+f3/j//BzN60u4UvKuJ58iV28QdTq4lQkmTz2EUyoRpAww03EJLRN3chrLdbWPr22jwpCw38Mtl+mtrlJ58EQamFjV+RnpJjFs4A19AsXwdtNxiPseyveIfX84E4h7PUzHYerkaYh02JSdz6KiUDNNB48kZRo2LnHKFWKvT+h5JEmCYVm4lQq52T1kp6YxMxlKR46hlB68ZKZmCLtd/EZdD0K2EegrLItExay9+BUqD57EzucJu7qgUHGElS8Q9/s6VDvRORhGJovyPOLAxy4UyUxOMXX6IR3gtXSNztJV+tV1rEKBsN3CzOZxS0WmTj2EV6/RW19DhRFBt4M0JLNPPEl2cgq/UUek79ur11h/9WUM28Yplwi7HRBgOg7SLtBbW2Xlxa9iZfMYjo1dKOBUKtReP0t3dYUTP/SjTD/8KKtff2GzT/ShQ+lrWCVst7EKBVSS4FfXSeKYqZOnOPSt33rPH+h3cxjcGLfHTppJxYPzOOUKhX37yc3twbB0ob/6wleQtkPU69G6vEjY76OiGK9WJfK9NJTV0lLiRB/QVOBjZnPEvo+KIux8EWmZ+KmEOu73iIUO3HTKZfY++c1I2yFoNlh7+evYlTL9FW3ddkcbu7cJ46HG/Y5E700wHLZ3rl3RPselkmZ8p8q+qN/HdBz2v+f9XP70n+64SL4ddtJAKB8+csciJjszy+Kn/oSg2dyVvthj3D+4W//mG88o0rY1EaVeZ+r0Q9g3XPeGaXL6z/0olZMP4zUbZCoVpk4/jDQ3ytYD7/sAJAkv/sr/Sb+6rlW2ponpugjDRBqSOAhwJyfxm036qytpBgcbg40kIUzUkKBlSXlrG42tMLTiCMAwQW2/QTPGZiRhSGIYoNL6SQpNQJqZpX7+HEQR2akZrHyeJEloLS5oK8GZWfxWU4e3ZnP01te4/tyXMLNZpCFJohiVqkESpTQhI44xTJPy0QeG6la/0cB0HZxKBdPNMPXQw2+JXc+9yMi9E4mmcvgIvd742t7NuBevu7vBTghfo2hdXqRfXSdO7bGtvM4fbFw4R/XMq9j5Aqbr8uqv/UfE4aP8v/4ff4snpSBfmeC7vvf7KRSKgA4bj/o9hGES9bqY2Sx+s4FXrwEgTROnVOHY93+UPU++m31Pv1fXb50Or37sP+N/7jNAohvoaT5EhNjwPZTaMQKZaGVHqjqUtoNKkptViAOMDi3SjCi7WNS5VGFIomLiQOcQ3QmGaek6L/Dxmw1Kh47onNROB8N1KRw4QBJFtK9e2d5eecvXrEmqQwXLxg1s2a8yDBIEInXXKB8+SthpM/XQI7SvXdU5S502KgwwTAvDdfWgyLIQhkF2Zg6nUmHtxRdY+vxnKR97kNzsHEGvw/rXXwQB0yceIzczR+z16V5f4uxvf4zjP/jDw3O6XSqjohgrZw2JsFGjQWZySu9NSmnS1OTdkabeyPBujPFgY4wdIjc7R37vXu2rC8PspIELU+x75Pfu3fLHuhWLccDYCjsd4l4br9PlwR/4sxT27Qfu7FN9/Ad/GPPbvvOmht/7On+DX/u5/41vffwJyoUC7V4PFUkmTp4eNjbiMCQOI51jYZg46QYwgEw9/PJ79xN2OrQvL5CZniHotFMfeoaF1MBKaRAqrqIYIQWGk0GaekFVYaiHG4aJU6kwdfI0xYPz2hLJMIh8X2+2rjss3hKlhs04IQVOZQIrDAg7HQoH5zn5w/8DtdfPDDf3OAiQpo2dy9G9fp04CpFSkJma1kOOdOO9CSOLrlOZxLTMdAGtkCQ6W8R0XVQQUDz2INnpaZIooruygt9q0m21MLNZSvOHKM4fAqB19bK2GANU4OuQdj9AGh6F/Q9RPDhP4cBBwk4Hv9lg7ZWXkKZJNt0cBkMkp1zGsB28WpXc3F6kZevrR+hBDIAKQ6JeH6dYJux2yUxMkpmaITsthoXI6T//E+x/7wdoXLrA2ktfJzc7izs5ReX4iTQ8Xjds/VTVM/vY4zzwkR+85w/0uz0Mbow7Y7vNpO7KMu3Li5TmD2lLvzRwzMxk8Fvaeq1zfQkVBqlCKoZEYTguVjarLQTjmEQIVKz9S1UYYbmuPtRWO1oFZttD+XUSRtruyvcpzs7hN2qUDh/BcDOUDx2j+trL9NZWUWGkPdCHb+rtZ7cKIBlbT92fGB1UjRRIIrUZ8eoN1l99malTD+GUysPCYu6JJ8lOz+y4SL4ddtJAuFMR45RKQELQbO5aX+wx7i/sVB3auHiBV3713+LV62Rn5sjvn8Gr1Yh6PbxmHZKE0uEjNxXvhz/8YZzZ/bd9LQfe/0EK+/Zz4Q8+wdLnP0vQaWPlC2QqFTJT0zQunNMqxDRPzbBtTMtCJYqo3ycJI0wgkBLb0uzZJEkgivQQ5E4MWaVIkjBVG8DbYMRxf8IwGQ3gJW1CTR4/hYpCYs/DLuQpzs8jhBgS06xcjiQdUrilMnahQNjrDi3JnInJjYyWUNdRVjaPtGwmjj1AFEY4qfVubmaWiROnuP7lL+KWy2+ZXc+9ysjdqSJrjN2Fe/W6uxvs9FodEGuTWLHn3U/TvrxIb20Vr14nSRSGaZGZ0vaItbNncJaX+dZvfhp74RLf/KEPk0uHGgB2oUB2aprWtStEvR7SNMjP7SFRWiHsN+pY2SyZySlgo37rXF8i6nWx83mCTmfYv9B3gmEQd5oxRBxpkuzgPfjauSNRG0N5YVq6DzdQJKbNOCufp3hwnsykfk/tK1fI791Lv15n7etfw2s2SW6Tuxr5PnZBZ9CqtE8Wttvk9+7Fbzbx63VNehu1uLqrmk4rK7f6960ghECaFmYmg53Pk8QRhm0zefwEtbPHEaaBCkJ99nZdukvXCbttzKx2RjEdRzvClMu0L19m7cWvUctmSVIr5rl3PTVUcYyesa9+7tmhU0xv5TqgiINAB9J3u5iuO9ybwgFp6r2bSVNGUX/v2xlO3O3wbozxYGOMu4S0TAw3g5laNw0W9CQOuVXc3q1YjINgHKNUILh4iSjNXtiOT/XVzz3L6T//EwgpqVar5NNF4t3f+T08+oEPETXqhL0eXq3K5U/9CX69jmHZmJkMKgy0fNl1sItFvbiODDYGAeZWNkvp8FEKBw7i12u45Qn9fr0+Ya+r72enKotU/i5IsLJ5hABpWTzxP/3PmI7LuY//Nv31VaYeeRwjfS4rn8cplmldWaRw4CCZmVkyy9cJmk0dRhT4SGnQr64jUsm8Uygy++jj7Hny3ex58t10V5apnz/H4jN/jDAMCqce4uqXvkjiRySYGzLuGzee1FJKSDm8LTs1xcSJk7SvLLL/fd9C+dAhMtMzNC9dZPGZPyb2A5xSGTOTwZmYTO0Cesw8+k0U9h8AYO3rLxB7HtnpGRKl8Go1yg88SH9tld7Kdfq1KoUDB4fffRQEqCAY2oUMgpy04qShrapiLfcLmg3cSgUQOhTesgj7feIwpHP9GtIwkYbB+ksvUpw/NCxElr/yHNUzrxL1+ni1Kp2lq5huhvzefRz+7u8lNzNL7HtI22Xm4Uco7Nt/zx/o74cwuDHePAzW2Mj3qZ8/h99soKKYRMXp8EHb8wylv1JArHMJAKxsjrCTZs9IoWW8hgGGQdhu6aaDaSGlkZJek3TtS1h/5euoKCRTmeDId38/177wWfxGg+KBeXprq3qfEIZmxWayWMUiVjZHa+GSllvfBYRlbXjHDuzx7uDxOh5q3OO4ibl1N9CDb+k42jrT8wl7HeIwYO2VlyjM7cUdye56sxs6O20g3K6ImTxxikt/+Pu72hd7jPsHO1WHNi5e4Cv/4p/TWlzEcF26K8tpfpmhvbl7Hp3r1zBsG8Nx7oolXj5ylG/6a3+TvU89zfmP/w6R1yN/YB7TzdBZukZ3eUnbjhgGViaj1didjmaRDjL6Brl0gFOukEQRYa93Z4Ysek+xXFf35cO0BtrCcmOMW0BKpGmgYgVKN+tyMzOUDh1O85IsivPzkKCty9Cfs4pjTMMgaDWHbFkAu1jCdB0iz0OYJtnZOVQQaNtbKfBbLZxKhcf/0l/GD5NNa37j0kWuffbZt9Su515m5N6tImuMex/38nV3N9jJtTpKrLVymji58vxzqDjGKeocwcjzCAOf0uEjNC9d5LueeBLxxJM0zp8jKW0MOoUQFA4cpHburM4gLZSQpjW0Jc/OzGDnC1z93LOUDh0efp5hT1v9uuUJ/GZTM/sNY0NJPjj3jvb01Wi/BqSUKClIhEQChusiDImKIt30tx1M2+aR//v/SOXB45qw1unw8n/4vzAzWTIJGI6LoAmpSn/YExo5eydxhHQcivuOoKKY/e/7ICtf+TKZ6Rmuff6z2jpLGptf62heyOj/3vSl3dCDShJUOLLH30IxKSybwv79aZavJv8GrRbdlRXmnngXU6cf5vKn/5Tl576sCXdKOw8E7TZuZYKo1yUzOYWKQtZfe4Wo38ednibu98nOztG+egVjQJrd9HI3ztjmt32nPqc/+wy9apX++pq2MZucojg/PyQC34o0FdSrYJjbHk6MB813hx0PNj75yU/y4Q9/+KZ/F0Lc8rZ6vX53r26Mew7dlWWCVovpRx6jv7qK32wQB4PQv2mtaGg1tyyydyqD3K5PdWf5Oh/7g9/jl3/5X/Pv/t1/5sSJkwC4mQxk0sPp0WM3sTI3DssJKta2LNKqaN/EJNHM/8lJgk6HqdMPcerHfpzemrZWMV2X9tUrfP3f/QqN8+d0sG6S6CC61APWzufJTE5h2DbZ6RkqR4/hViqc+a1fp724sOlQIQwDO59HmhZRr0fxwDydpSWC9VUADDejQ837fVQcoVxtOzUaqL7wyT9EBSHlI0dRXg9p25hKkcQxUd8jiWLMTEZLEodTdt281AG6AmmZ2Pk8zQsX6Fy/xtXkGaqvTA4L14f/4l+6qfky/dAjOMUymYmJG5hU+WEIt+k65KamyVQqRP0+nWvXyO/ZS2ZqWmejrF7HdDM3qXkmT50efscopRVBc3s2VCGLC7SvXSXq9bQ1VUYzKaRpDrM3Jo6fxKvXOPeJ3wGVUNi3j9KRo3jVKr3VZd30bdTpXLk8LNS96tqumIrfD2FwY7x5sLJZ4jBk7aUX9YE7l8fK6Rwgr1FHhVqSK00LkQCGDupM4kgPP217eOgPvT52vkCiYqRpEHY7aXh4gopCbSVo2WAaJLHCb7ZwShWOpwqhwr79XPnMp1h54SuQ6GA1081gZXOYmYxmxpJgOPZGIPk22D7aLi8N7Lvx7jf8/Yg54Bi7BTsdagwsRkY99NNGmZ0vaKVk4BN7fRACr15DCMGR7/n+Tev7m9nQuZsGwq2KmMali7veF3uM+wM7VYc2Fy7x8q/+W1qLC9hpY6i3ujI8Z2VnZzEcW5NXpODQt3/X0IJ2p8W7kJI9T7578zl/bQ3DcTEyWYJmEyOb1Zl+vS6CNEtj0EhRCqRBohR+rapzGRx7WLNs6QEuBIbtgJS6aWWaiGGz6I180rsQUmpi2E4ZvIPAcCkRqQrULuRRcYzhZtj/nvdROfYAUb/P2d/+2HA9xZAkKsGrVbHzeYrzh4ZnYLtQIDM5TefqFaJuB8M0kZZuPIbdDijF7GOPU9x/4JYBw2+1Xc+YkTvGO4Fv1OvuRmKtzrro4ZYrGLZN4Ptcu7LImUadb//IR8nOzNK9eoXD3/k99NfXbj7HrVzHzuWx8gWSMMD3+kjDGDa5pWndVHsP1hZ3apLO0lXCdgth2Zsb+1tBCOxCkdyevQTtph7A9PQ6JIVAxZHO+CgUMAyTuSef4vB3fvdwD21fu4pSMZ3rS0jDBJWgwlA7jBgS5Y9YqacEMWmYFPcfYPLYMfr1BlMnT1E/d5bmpYtaNYLOj9hyo0vY+t9hY5AzHOLcMMQQQuffIYjTYc0gLDyJFVY+jzRNwn6PqN8jM6EJSu2rV+hXq0SBhxASu1jUxGCvT291mezUNMWD87QuLxK0WzonI7VQByCOCb0+rcUFnbE70k8ZPWNXjh6jeHCeyZOnOfeJ3yHq9SgcmMfKZrdUY4ye600VEklrR+eb8aB559jxYKPX69G7RQF1u9vGftb3BwabQ+HgPPm5vdpCaiT0L1GK9pXLWxbZd2IxdleWKR59cMhi3I5PdXd1mX/+T/8Rv/knnwTgT//0k8PBxo3YqnEwOCx3lpYQhg5GMhxHewCblvbJS5md0jQ3LTADRv9X/9UvaQsXtH2VXdCSZtN1idOg8YEl060OFbPf9ATlI8eGmSGR72O4NmY2h5CCOAhQ/R4CgeG6qDDk7H/5DQzL0jZTnTbNhUvkZmfxmw3qr58haDVBGkiBDv41TexSCWlZeGtr2npJQCLAMAzMjN50e2urxEGgpXUHDiJNc1PhevrP/wSd60u0rlxBiIT83v1cfuaT1F4/S+lwjjgMU/9Bc2RANDVUYkw/9AhrL72I12gMi4Tphx+jcGCe3uqqDnkaGW7YxRLCNHErE9j5PBMnTiHTTcEulvDbLbxaFatQpLD/wPA2aVXwG3UaFy8Qex4ZIZg8eXr42NmZGeIwZPWF52lfvcLed78HczZ7U6GePXV8W7+NdwL3QxjcGG8estMzxIFP0GqR27uPJLW/U3Gkm72WiVMsMPXQo1RffZk4jIgDj7gfo4JAM3qmprQVR6xtqtzyhG7YsIiRzWolRwJxGGDn8jiVCVQY4NVq7HnyqWFhNFhvK8cepHPtGlEQIJIEr1GHRh1pGAjD0GutZSNdl7DdvuN7lIbJ1GOPEHW7xFFE88K5IUMoGdhYsDlPg/H5453HFiwuI19AqFgPpu/i8exikSSKUEoRp41JEqWznxydKRN5/Y0iKm1idpeXufRHf0Bh3/63rJC/mwbCVkXM/eKLPcbuxk7VoYP7e7X60Mq0v6bPd1ahQOx7BM0mmekZVDYk6ns0Fy6y/73vf0OMxOLBeea/9du5/vxzrL+sB/xOsYS3vk4cBIReH6kUSgh9VhzmbWhI09RBoFGEAJRSej8cbdILoa2OBr7oqVI7iWPMbJZI3ULhsRMYxq2VIvcArEJhaOVLHEOaUTL8JAff4a0GG0IgLU1qEFIiDXP4n9mpGcJel97yEktf+jzFAwcpHzm6aT2NfB/DsVGRpHLiFNIw8Wo1pGVh5nKaPasUqFjbvghQKkEoRfHAQfY9/b4tX9bbadczZuSO8U7gG/G6u/EcNVB8WaZJr9fj4utnSeKI9bBGs9mkVCzSX1/DnZjc8hxX2H+QJE6onDipCadhiEz7YANC5421d9Tv49VruicRBsRhCLeygxo9L6dZhobjYKk8sR+QmZwgMzFNbm5Oq016XfxGk9zcLMe+7weG32Vz4RJXnn2G5uIl+mtr2io9Xa9VmnWl7a40yTUR+vmUimlfvYJfqzL7xJNMnX6YK599luXnn0PFUZrLqPfKm3GLoYZpYReLGI6j9+RalbDbIfJ9/SdC77+G7WBkXGTfg0TbCSZhiFMsEPX7BN2IuO9RnD/E6b/wkxQPzvPKf/r3JHHMnqe0zZgmXYfDobmZzSEMk97aKlG/r5WBaZ6umXEJO22SXleTlzsd7EJh0/c2esbeikThVddveb4fnOuzWfuetjW/X7CjwcZ/+A//4a16HWPsEoxuDlYuv+nHDxDepsi+E4sxPzW5icV4p4K+U6/xpeef44+uL2EYBn/37/59fuzH/sJtX/9WjYPBprX+yst0lq4RdjraomjPXqZOP3RbFsPcE08y/6EPs/bSC2Rm9mDaNioKaV1epLlYJ2i1cCoTLPzJH3HwAx+idOjwbQ8Ve9/9NOuvvETj0gXCXoe5d72boNWi9urLRGGIXShiZbP4rSa1117ly//7z1M4qNkB3evXKB06ot9Dt60tmSwLIfRgZPD3SRyR3bsPrgsM08QqlTAcl7DbJYn0Zi+kJDM5pYcKQmwqXPe/9wNc/dyzm6wI7GIRYRg0L13EyuUQhiTs91BBuMl7EHQOSX7/fg68/4NkJiYp7D9Ifs9eWpcXOfNbv77ltVHYs5e9T7+Pa1/4LK2FS8Pb++trBM0mdr6gJZkjRYgQAjObo7e8hJUv6II7vd1r1GkuXKK5cImo3yfs9aieeYXKA8dxy5VN73fuxAO3vabeSYybXmOMore2imE7mJkM7csLJEmiCTFxTOz7WJkMhu3glivk9+ylt75OdnpKe53Xa1rx4QdE/R65uT0gDWLfw7teRUUhSaejLUNcF9NxiQNfqyGEwHAcMhOTm17PgLFiF0v0LpzXTNb0oBmj7f6IY91AuoOV+QCG41A6eAi3VOLiH/2Blh3HMYZtp1YgAUopxDgk/O3BJlbuLQL/YMT/dwOGEGBamLk8iYpRYaiVO9t5WsNk8sRpeitLNK9cTYcXasg2A6GHGkmiBx6CoX++CgOqZ1/jyrPPvKU2fW9GA+F+8sUeY/dip+rQ4f3nZvEbNaJ+n8j3MNIzqWHZRL5H1O8jTYPc7BtXlw5sstZfeZnmxQuoOMYuFTU7M1H4noeRJCRSYhrGRoB4+n6M1PPctB09GPU9nQ0ldFMmCYMNhViSQKKI/XhjyEGCtB1EGN7CN/zOEKaFkELvjfcohGnq96fiDbUcjLznQUD7bdR3SaItKIUgEYJEKUzHxcrmEIaB6TgU5w/TX18bDsxuXE+9WpXzn/gd1l98AaXUcPuRUlI+coTjP/Qj1C+co3b2NbxanaDTQjoOCXDpD3+f1oWzzH3z+29qQr2ddj1jRu4Y7wS+0a67G89RMs1TqlerLFxZxE0SItvhez/yA5TLFYK01rGyWfJ79t50jkuU4qV/+8so37upDwY3197NhUuc/e2PEfX7xEFAohJM19VN9pHhr7AsbYkopFYUCjAzWVTg41WrGI6NUyxx7M98lKjXG/atIq+P6WaI+iWufu7Z4fp05rd+nc61ayRpI384pE/P7SrNiSBdg4Wh7aVEuj/Gvk9/fZ2Vr32F7PQ0ke+RRKFWbdw48B9F+vymm0mtxCOM1MnEzhd01tXefdpuvNUgUUmamRFTOnJUP34U0l1ZIfL6JElCaf4ISaLorq5guS5Hvuv7MDMZTbQdsRlzyxVNug4C6hfO4TfqRJ6H12wQtFokSYLhumlNnMUpVYj6Hn6rid9qEQUBqbn8bc/Y34gDwt2AHQ02nnrqqbfqdYyxS/BGi+zbsRgf+I5v3xQUeLvnqlbX+fzvf4KFTgeVy/Ov/vf/g/e8Z2sGzp2waXHqdAh7XcxsDjuf37RI3Sow8cAHPkR3dQW/0SB2XRoXzxP1egghcCcmKB85Sv31s/RWV4ZS/a0OFaPexf1aldblReIgRPk+wrTIT00jhG7WhO02Sin9f0FAZnKaxvnXWX3hqxiZDLmZGVQUa5srx0Hatn5NUiIMB7+6TnZmNg066qGCAGlZxBEkUXSTtHtQuK6/8jKNSxdQQbjJiqC7soIwJNmZGfxmExIImk0K+w9QnD80DGzv12usvfA1hGVy7fOfxXTcTf7Md2K4DuxtBrdHvo+Vy1M6dJjO0jX8hg4TlKa5ITsXEjtfwMzoA4bXqLP+6st6Qh/HQ/uefrVKHOpwWbdc2WR1ZpSn7+raeqsxbnqNMYqw19s4qI72bITQ508YslEHGTZRr4+0bdzJKUrzhwnabTITFSZPPsTZ3/x1hGVil8p4zYbOP4pCkl6MmdGH+ziO8Ot1SoePMHX64ZvWyaDdpre2qpmZlo1IEpSKN6ynpEQgdGNiOxCCK5/+U7Kze/TjpuyjOM1mihMQiUofd4y3GsI0h4zlYejhrTBaAEmJUkrbvRgStzKH32ri1WsQK27n5SIMA2lZNC5dSBujJpg6sypJi6g48NNhitS/gZRNbFhafh912qyfefUtt+l7ow2E+80Xe4zdiZ2qQwf3z88cxCmV6SxfR8UKw9LXqZASFSjCXpf83F7cySk6V68Q9nrDPcTbgXXDwCbLq9fxmw2EZWJmXLrXlwjDkE6/jwEYUmLA0OJCGDpsVBim/u9RiGHYZGdm8eo1rWwG7GKZ/uoyesohdA89XaeEZemg8SQhCUM9tBm1ZNoBtC2jtsYStq091eN421aNbzWEYWBYtm7ORdHNashBo2u7r3VwXyFQYYjhukM/dLtQQEi5aeA1up4205yWZNCnGzy9gARBYd9+9j39Xpa/8hznP/472PkshQOHtCWv16d65jUaV6/dZKH2Ru16blUrjjHGGO8MbjxHudPTVDsdGteu4Qqwszme+LbvoHhDTsKgdr7xHJcote3ae0PtWE9tyguQKMJuNx0ySPRQ3NbOJwOlgWGgoojczKy2QXrwuM6IiiL2v+f9RP0+zUsXyExOkp2Zw52cRPketbNn6Cxfx3QcHY4ex0hpkN+3n6DZJOz3Ub6fZg5JrFwepCTqdTWxFT1Mye/dR256iuq5c3z1X/9/da8k0H8niBGGBNMcsTYffNh6XzUzeijkNxv4zQagw9GludF6VmFIbnqOsN+DJMFvN2heOI8wTKRpaPWG4xB2Ojpn1jBSu3i49Mn/zsU/+n0MWzuNZGZm06cXw2GTMCRrL38dv14naDS02sQ0U1cWE6esybtuapMeex5Bq4lbLm/rjP2NNiDcDRiHh4+xI7wZRfatppy5vLtJpnWr51q/vsRn//D3aQch7clpfvVf/zJHjhx7w+/rdovTnQITB4FCi2lAuV0s4ZYrmwKFbhfkfKN3sZXL0Vtdobd8nbDXJTM9M8z+8BsNbf+VTu6Ddovy0QfITE/rvA/T1GGI5TJxGBJ7HkmiMDIZwl5X28eUymRnZkmiiCRtIJmOS6/fJzc7R+nwkeEwYgDDcWhdXsAqFJk6eVpL+4TYZEXglMoceP+HqJ9/neWvPqelfqaFimO6K8usff0FEDB94jFyM3Nb+jPfbgJ+4+1hp825j/8ObrmMUy7TWlzAbzYIezr3xSmWyM7MYGVzxF4fkc3p79DzsHIFgo4+WEjTwClXiHrdocfisFDv9jDKb+jyesswbnqNMQrTdek3aiRxTGH+EEkYDgMz+9UqQaulh52miVMs6gybhQXa165g5fJDW7zJ4ydZ+OQfEoc+mXIJ03HIzczSXrqGiiISKUn6PYQ06F6/jpXJMP3Qoyx/5TmqZ1+jfXlRHxxtWze0UtuqASNIH2IBUhaRimGbDNXY9wlaTbxGgyQKdVGQht4lSYJA/y6GZcZ2fL7HuHsIQRLpfAvpOHpPGX6XG1YtGEaqqkiDdZOEOAgQAux8EbtQ0N65va5WbqQDqy2fUkqKhw7TvryANC1Kh4+AUvTWVnRxMshgAZDp60ArNsw0dyvq9/GbzV1h0/eN6os9xr2DnapDB/dXvraM8Bp1gqY+u0rL0o3xMEBIQWZqavj3Xq3KK5//DK3FBYhDMKzbhpPDZpus7PQMnXQ/8+s1wjCi2++jANs0tUpMJXpfFCIdyIK0tHVqojSbU0iJkTZghDQw039LlCJRAyVguq+MqhOE0MrE7ew7N9hbcUNQeRIEqIE64l7Zw4TQ6s3B67whCFYYxl2pVYRtI4TEr9fIpoQdkfqtb2WnOvjOkzjmwAc+pK0pU1tkM5ejldZsp37sx6meeZUkSZg4sWFFK3N5MqUi66+f27Iuu1s27p1qxTHGGOOdweg56ot/8HssXblM2TAoFks88N73kZ+c2jInYSvspPYeKAqsXIH21Su4lQrSsjTxcoVhXoVp6/Oz4TjDTCchdd/HdLUivr++xsTxE2SnZ3j11/4jcRAy9dAjw3XNMHU/pvraK/RrVSYeOJ7uhzmtknAzqCDAb7fxautaPR8EOu/QdjClwM4XmXroYaxslvrZV/VrUQpn/wG9B0YRWBbSdkjCAGVauoYbOa9LwyBTmdCWw1Ji2DYkoGKlz/1SEna7mK5L+YEHqL9+hubiAolKyExPY2WyqCgi6LSJw4C5x9/Fvve8n8uf/hM9NMlm6C0v49Vr+K0WsecR9rpMP/TIpt6VW64Mbd6VikhUgvID3FIJp1zWihJ0oLqZqgVj36d95fL4jL1LMR5sjLFjvBlF9nannFs9l2uamHN78ByX//Nf/TLlGxrwbza2G5goLYvq2dcoHz6KUywNvRZha6n+AFt5FydJQmZySjcSw0h7/uULqCDQrGkSLDeDmc0StJp6qj+7h+alS4TdDmG3i+FmcMplvPV1VBQT9/uE7RZJHFNOA5BmHnmM8pGjALSuXOH8J36b3Owe7PzmwtVr1Fl75SV6a2s4YcjqC1/BKZUpzh/SQcOdDnEYcOmTf0j17GsYhgmJLnY7S9eQlkX76hWkaVA+dhwnX0SkTIGt/Jlvd22M3p4oxerXX0hZE0eYfuQxwk4HFYYIU/spThw/gQBqr58lMzU9DDYnzfKIA910NWwbIYQejHQ62l7HtrFy97aN07jpNcaNGOTUSMcZ/ptbmSDstFFBQNjrpsomC6tQYObRxzj4oW/HdF2qr73CuY//NrWzrxFHEd2lJbJze3BKZUDbXUWepxUShoFhWUSB5NzHf5uz/+XXsfNFph95hMLBefrr63SuXkGFkc608TzNyE3t7qSpg+RUqrbYDuJ+L5VNDxorulkubJswCDTbaKRhJNLm1E2sojHeFCQjobqJUhve8EmyMdTQBuf6TnrypPe5KCQWYGa0jaAYDKgGfu2DQcgN6g0Vx7QWF1CBT2HPXqw0wyo3O4fXaODVqhvev0mCMA2kZQ+tZlQc62G/Ze4am76x7H2MdxI7VYduvr8+m13/0hfwm01UGBCljMlEJdTPnwOlqBw/zuVP/Ul6RitgZzMEfkjt7GtbhpMPMGqTFfsBKo6RiSLyPexcjo7vkbNtKvv2019d3RisJ0rvD6lFXRLpxrhTmSDq9bAKRbxmgySOEIbEyucJ2u3UKmTk/ceRXveAOAp1I2g7g4gk0RZXUXjL+2/Xmu8tx2BtjqLb5qIPBkY3DWxuhYElShghbQuVKLKzs8Pzxq3sVLsryzQXLmHlcwSNBtKycCuVkQw9XW+tv/LSjizUNt2+QzbudmvFMcYY453B4BwVHTrC//vv/C1+7Ad+iEfn5mhdXtxxM3u7tfdAvWgVnGH+qBACK5fHynUIul2tYI5jBAZWLk+gmkS9HmY+Txz4OMUS/fVV3LLOfO2trd52XXNKZZoLl9KMRZ0lMrjNcBwylh5G2IUCvZUVlIpxS2Wy0zPDvs7a118g8jzciUmtXAwDpGGAZWtVtOchDKnJtEor7hBCB6rHEX6zjjAk+bm9GJkMvZVlVBjSX1/DLpaGQetOqaz33zhO82CtTe9FIDCzWVqLl1BBiDsxQfW1V1KCah6rUKR9eZHOtWuAYPqhh4fDjSTRIeHz3/Jhph9+jK//X/+Gfm0dENruSqmhu4eVzVA5cpRT/8OPY+UL4zP2LsV4sDHGXeHtLLJLhw6T2bOX3uoKSRBgZbM8msvjZjJYlnXnB3gD2ElgYuR5SGmQm9ujp9E3BKvfinm0lXexEGLIcvMbDcJel9j3iAMdBmxkXJxymSSKkGlzMTMxiTsxoVnZXp8o0JuQOzlJf32d2Pd1gLBtE7RaNC6cJ+r3KB44SOnQYfJ79lI/d4ba2TM6J2Mkj2LtlZfor65i2DaZySlIEvrVKl6thpnJEHTa9Gs1LSU3LaZOPYTpOnSWlzEcm+L+eZqXLoIwaF68QPvywnAwMmr7tFNbkC1ZE2kofG91hUylwsEPfEh/zqsrtBYvEXm+9qwcNN+SBLtU1I1g0yTsxURBQNBsMHH8BPm5PfS9e6S4vAXGTa8xAH0IrUzgCYHfqGPl8kNbttjrk52eRcWRZs56HoZtM3niJAfe/y0Aw6LcdDMYbgYzl6e/ukLn2hWys3PYhSKGm6G7skzQbmFlMjr3p6CD9uIgwG81qZ55TfuapwPGhISw2yO3Zw9Gp41aWRnm/wSdjm56p42TbWFgXyHTBrlSEMc4joM0DKK+Hv4CW9tljPHm4IamVRKkHvSmZj8Pv89BAKJlaWWHYSClQRxFJEmC12yCNFBhsGFzMvABBjDMzWxmpYh73aEv8ACmmyE362LYDu2lqxDHWsruuiRhOPTqVVGElJLczNyusukby97HeKewU3XoVvefe9e7uf7cl/Bq60jTJDe3B9N1CVotlIqpn3sdK5sbEmEG+4JdLBH2+rdUPI/aZCVKrzVxEGofc8dkamoaFYaYtkN2do7e6jLSsol9DxDEga/tWG2bzNS0tn8VAhWluT9JQm95GcNxtC+658NoQLiUmGmzR0XR9vcx2KzuGH1fg2HwvaDUEEL7t/e6d77vVq9XCAzHRVomUWo1BkC6HwzCx1UYImJF89Ilom6XwsF5/Hp9SzvV+vlz1M+dHe4B0jA21RSDeqtfr+/IQu1usZNacXwuH2OMtx/9fp9MJoOQksfe/0F+9Q/+hHK58oas47ZTew/Ui9qGSdtLDYiUTrlM5HkoKbU6I9aWg9J2MFLlsYoinFKZieMnhwOT+oXzt13XrJScGgU+0th4zgFUFGFlMpSPHMMplUjimNzcHrLTug8VtNtDEqiKtQOGkcnoxxARSIHyfRAm0hAIy05zpxIdaK4SIq9P8cA8dqlEb2WZA9/yrUydOMX53/tvRL0ehQPzWNksvdUVvGqN7PQMdqFA7PtE/Z5WfUxOk5me1g4mqyvkZvfQuHCO2PNwyhuD7Mz0NP3VVfrra9TPvc7M408Qe97G2eQDH6J4cJ49T72bla99FRWFBK3m0N3DnZhEmhZTDz3M9MOPjtfoXYzxYGOMu8bbVWQ3mw3+9t/+n9i//wD/y//yD97WMNidBCYONq/u6jL91VX8ZgMV6WBBK5vBLpaRppa0j+JW3sVuucLMI48R9vt41Spes4lhWRiuS6YygeG4+I06mcmp4SbmliuoIGDmkUfBsAl7XVa++jxxGIIhsTNZTMclaLeIAh9g02H7xkLUcF3q517Hr9VwKxOolFlm2LqI61y7pqWGlqVDrlyXqN+jdvY1Jk+dpnzkKOsvv8Tl8+cJux0y09MYlo2KIvrVdYJuh6lTD2GnjdG7KS62y5o48UM/yvnf+zjta1fxGnVMxyG/dz9Rv0fs+UjD1AVXouivXic3u2dX2TiNm15jWNksmcoE7sTEcA0aHNwyk1NkpmcgSXjgIx/dxEgBeOU//fthUR52OhimieG4GPsO0F25rr1a0/VMmibStHCKRdzJaVQQkMQRVr5A1O/TXb6O32xiZrJabp0kBJ0WmWASgT68R2GY+omnQ8MdNIMGCJXClBIp0lC8WBHFGyGipKF4d/PYY2wDWzWxlCIBzGye/NwsYbdLv7quB2C5HHahSH52jtDzqJ07i1+r4tdrRP0ebrmCOz1L0E2HXYM9d3SokfoRD567V11HphJ7GLDVSnjV9aHEPux2EAgwJEmsEIC0bEKvT+vy4phFO8YY28BO1aE33j/yfUzbxsrm9Jk1DS/Nzc7hTk6x8tXn8eo17EIJO5/HdGwiP8CrVRGGwforL29Jfhm1yWr0e5xZuMT+UgVTkPqBa0uPgfVU8cAhkBKvto5TLuPXGwSdNtIyQUjMbIag3SHutLBzeUh9vQeNfTObTa309ADEzOUxLCu1fU0I01yObWGwhkqDoTJNCD2w3/lXtDPswKYxDgMwzdQ35Qaiz40KDcCwHZRKzwuGiZXJ6M+mOzIciaI0kynN2Ih18Ldh23RXV+hcX2Lq5KmbzuHNhUtcfuaPCbs97FIJO59Ja4oqYbfL5KnTSNPSRKxKZUcWaneLndSK43P6vYFOp8O//Jf/kj/+4z9mfX2dAwcO8KM/+qP82I/9GHKX1H1jbA+f/eyz/P2//3f5pV/6Vzz66OMAQ7ePNyMH7XZ/v6FefA27WMKrVZFWJVVPuJjZLGYmS+T1h/uK5WYoHz5KaX6e6Ycfo3LsgU0DkztZQwppYBeLqMDHKZbp16pDMplehzu4E5NEvS6zj34TCVB//SykcaJxGOr+lWkS1htkJqdwimXsQlGrFpMEJSWmm9HKyzhGuhmUiom6XaTjELTbVM+eIYlCTNeleHCe7PQMD3z/R7n6uc/QW11GSIM4CLByOaYffhR3YmLouiFTUnCiFNXXXgUSVBTSW1/TFucpGUEIgZ3LExX6WNkc/eo6jXOv45RKN51NBj0uv1FPM5sMEhXrzyNVw+yWns8YW2M82BjjnsbCwiV++qf/CpcvL/LSSy/yl/7SX+HAgYNv2/PvJDCxfPgIdrHI1c89izR1QJQwIrx6jc71JUgUudk5Fv7kjzj4gQ8NF9rbbVBuZYKZhx9l7esvkJmaprD/AJ3rS5odHYZYmczQizZJEsxMFndykqjXw57I0bl6VW8SSiGE9qfvV9cwHBeRMtiaC5eGh+0bC1H/ymX61XVye/ZQPvoA7cuL9KvrSKtC0GzqQjFRJL6PFBIrm8OdnCJoNmktLjL1cInI6+O3mqkKRA79FqVVwW/UaS0uUDp67A0VF9thTZQOHebx//GnEQJqr79O6dBh7EIBv9mgtbiA12gQtJo4lQrTDz/GgZHvaIwxdgNG7T+mHn50S9/pieMnbmKkDDxgB0W5ldc5PP1qFadcJr93H2GnQ+XB40jD4PpzX8K07Q27CN/TVhIJ2l4oipFmiD1TQIVaxUGs6K0spx7lSjNrSVmq2/bkHkwsBCptbodK4VgWpPZCKKVVKoOchV2m1hCpLcquHsYkCYZtUTx0hM61q5DAzBNPYmcyWPm8XnOvXsG0LeTUDH67iZnNp+zoDlY2p1VGofb2HX6Po6oe00QAsR/gNRrkZt1hQ0lFEYbj4k5M4jfqhFEPlSTaekYI7EKR2W96F0kUj1m0Y4yxA+xUHTp6/+biorY7ndHD9KGiOZejfe2qZq7GEbm5PUNG6+Cs6NVrdJauaZvQEQz2E6tQ4OJXnuPZs2ew4piM0WYun9PWrVJgOhmifg/TzVA5fhyvVmPmkUc4/O3fjZnN0r56hWtf/BzdlWVtnxgEFA7Mk5mYpHX1MlHfwy6WiHpdrEIBp1RGoBvaUa+r15p6jaDT3v6HaZob2VICUEkaYi61rcct1A9vWMVhmFi5LCKBwOvDnWwakwRUguk4qRr9hvcoDW0rqbQXfByGZGfnEEDY76GieMgcHlVb6r1Zq3IGrOJEKWLf0wznJMGdnKZ4cH7jpaTKiDgIyO/bh1erQjabXicWfqNBc+ES0rIoHpzHnZyicHCe+utnt2WhdrfYSa04xjuPJEn4mZ/5GV566SX+5t/8mxw5coQvfOEL/MN/+A9pNBr89E//9Dv9Esd4E5AkCf/5P/9H/uk//TmUUvyH//Bv+YVfePxtfQ2jpNGw10cYBl69pvs+vo/pZnAnJshUKhz44Idxy+Xh8P9We+udrCH7a6vMPvZNxL5PZ2nppucckNPccoUDqatFb3VlSGrVz6nwquuY2TzF+XnsQoHs9Iy2chUC4Xup+i7BzGYRUg4zZduXF4nDEDufIzt3gOzcHM2FBb74j/9Bqo7Q7efM1BSTJ05x/ctfxHSdTcHfA4T9PmbGJez2WHvpRXprqwhp6My8bBa3XEZIAyuTYerhR+hdv86R7/0Ik+m6fmMfaBPZIh1sj6phxtjd2LWDjfGk/f7HF7/4Bf723/4btFot9uzZw7/4F//mtkONNyInvBV2GpioX4hm6ES+h1ev68mzaUAikZZN/fUz9FZXhn6rd9qgYt9n//u/Badcpn15EdN2EAiEYVA8dERP0NPAq8Levex9+ofpXrnE8ksv0V66qlUWhqHDoyybRCmifg8hJJ6U2PnCpsP2aCFaPXuGi7/73yg/eBwjDSUPup3hAV0OWGpxjJXL4ZRLSCmxcjn8Zp3+6gphr4vhuljZPGG3O2QNDDwmvUYd48oi0488/oaKi+2wLqRpcvR7PkLY+3X662sIKbELRUpHjiGvLFKan+fY93+UuSeeHDe6xth1GD1AtxYukZ2ZxSmViPp9WguXbhmId2NRPrDCC7tdbU2VyegmhBDD343MZUlUTH+lStjr6QZSkgZ4D+xIgMzkJHGa6xF6ng5qNS1i3yMRcpDrvM03qJs6caJVAUbqFyuFTD3PBSoJSdJ8kaEtyGgjaGBxNBr4eg/hboJX33YMrp9bDV+SBL/R4Nqzn9JZU4ZBe/ESlQceBKB25jV6K8spSzdGSkl2okJ+3wGiXoew06O7qu3OEFLbKJKqNtJAWWk7xJ6H6WhrRTtVIMVhSH9tldzsLEe/78/w+u/8lg4kjyKk1NaMlQceJFOZIOh0xizaMcbYIXbKcB3cP+z1kFI3I2SaSeE16qy99CKd5euasYrOccpOTWOn5+qBL3jY6RCO2CENgpqbi5e48NLXaVy5zBFAzczw6HveT+v869rSKkyQuTzuxCTZmVn8ep1MpcLR7/nIsJFR2LefPU++m7WXXuSV//wfU4vUGd1oKRY10afZQBgGYbvNnieeZM+T38zZ//Ix/GZDn6lTiz1p28Pw19t+Lqlln+m6CMMg6vU0+zUd0N90f0NnBak42ggU3+6QQ6SEItsCBPm5vagoQlTX8ZuNW/zNSFaVFJAG2QJgmsjBXpr6oCP1dy2ShPh/1QgAAIG6SURBVMLefRz7yA/y+m9/jMbFC7ruCIKNxxx57dpTXQ91DNuh/MBxclPTJAKCVnPT+ryhjJjDnZgk7HU32W4mKOqvn8EuFAF4+d/9CnaxiDDkTRZqndraHUOCt4u7qhXHeMfw6quv8pnPfIZf/MVf5Lu/+7sBePrpp2k2m/zKr/wKP/VTP/W2ukOM8eYjDEP+8T/+h3zsY78GwA/8wA/ysz/7D960x99Jz2m0ob7+ysvDIb3pZsjv2cvU6Yd21FjfjjXkAx/5QUC7cqy9/BLty4v49bq2bJ3by/RDD9/kanHlMxvqSmk7oGImTp4aZlYU5w8RdDrEvraCMiwbM5cbqjImHjxOc3EBw7EpHDjI1OmHhwTSRvMCfq2GMA1mHnsC5Xt0V1ZYC17AKZXorqzccvicnZlj5StfpnP9OnEYIo0YFQliX+c22vk8+bm9SMPEKZWYPH7ilmeUsXX3/Y1dOdgYT9rvf/zmb/46P/dz/xtRFPHoo4/xi7/4r5iamrrl/QcFTmtxQTfoHIfi/KE3PIHdSWBid2WZoNVi5tHH6K2s0li4qH3sHQfTzWDmspAoMlMz9NfXbmsBdfMG9dFNC7FXq1J97ZVbBl5l3A9x/plPUzt7Rssac/lhISkMA9PQjx+0Wjrs6YbD9mjheu2zn0b5HoaZxy1XmDr1ENUzr+E16ohET+sN18WtVIZ2IMOsCs8jDgJMx6F48KAuDhuNNLhYWz8FrTal+cNvmwTwVnYKM48+Pp7Yj7HrcTdh8lsV5W65wuSp07QWF+itrxP7nra+m5oh8j366+t0l5dRSmlrujTDAETanNcDDmnbWq1lmoSdDnahgOW6SMfFq1V1U2U7AaNSksQxYdrwMaTUJAaliJORYYBSJGGIWShg5wuoKESFmv0/CBA3szlir0+C3GDM3mtIBzX33PBFSgzXJe73b75t9HtUMcJ0NfvLMOguXycOAjJT07SvXSFJwHB04WS6WWLfp7t0jeKhw0jTxi4UqJ55VQf9Ci2tF6aJ6bjk9u4jaLX0ZWGaqDgm7PeIvD4qCMhOT/PQT/wlcnN7uP7lL+JOTkKshtL2wT4+ZtGOMcbbhxv3Ga9RZ/3Vl9Nzsos0dJhn5Hn01taQs7NI2xkSfEw3g5nNARtBzV6txosXznPm4gUKQnBicpKJQpGwWqV8+CgTDxxHRSGR5+k1BG65FwqpVcekFkphp4OV1+dep1Qm7HSIPI/++hqHvu076dd0fkP5gQeR0iCJIsJ+j/qFCzQvXdicw3EjDAPTNLErE1jZLP1qVQ9xvS3WVf3q9FBBCISUqW0qsB3DKtPEzOYwTFN/9gM72LUVHVx7q2c0DIRhAJqIJKWh12Mph6QggNjztCJDSn3ez+c5/kM/wt6nnqawdx8v/+q/pbN0Hb9Zp7N0TQetD62rZJpvZyFMgySOsTMZ7EIBFcd46+ub1udREoaVyzN16qHh0Mlr9AnbbZIESkeOUTn2ALHXp7uygjAMsjMzBK3m8Ew0deIUs9/8vjflzL+TWnGMewM/8iM/wtNPP73p344cOUKv16Nard625zDGvY1ms8lf+2t/lS996QsIIfiZn/mf+cmf/Mtv2rDqbnpOmxrq6ZDezOawb6PMuB22W+slSuG3WpDo3AvTzVA8OM/+935g02u9seHv1aosffYZutW6HmBkMqkFsSawGpksvZXrhO022ZkZSkeOEgcBnWvXcCsTTJ48hVMskiQJrcUFlO+TmZ4h6vWI+33sQmGYP5SdmcUulbbsgTmlEkG7SdBup8rAAYFOoJRCdTtIQ1I4cJD+2uq21tmxdff9i1052BhP2u9v/NIv/XN++Zf/NQDf+73fz//6v/4cjuPc8v6DAsdvNMjNzmK4GWKvT+3sGbory0NlxN1gJ4GJgwN34eA8Vq5Ar7qGrExgOg7StjWLtdVERdFNfqvDDerZZ6iefY2o38fMZJg8fnKTJdJwIT56jLknnrzlxFkXaFnNbs3mSMKQJA3aHcKQxL0+2empW24CWx3WB8ONoNMeblTStvFrVb3ZCKHZsYaB4bioIMAtV8jv3YeVyw2LkLAXk6gEp1Lh2Pf/wNs6UBhP7Me4n7HT6/tWRblbrmAXS6x87SskcaxZs70uYa+PV6uBALtY0o0J24ZUtUFqjadICBt1nEKBiQeOs/bSi0ydfpjc9AxJkrD0pc8TB1oWHfX72n5jC2sqw83QUTG9IMAVgoxtY5qWti4aMFdhgwFq20NrC2mYZCanUYFP+/oSJAlWNquD71Llxz2JBM2ANcyNHJJ3GkJ76m76zAcYNqs2hjFupYwKA8oHHyAOA/rVdXqpjaKZzaZh4RaZyck0M6qRFjJlDn/vRyjs38/lTz+jVX22rVUZ+bwOGw58DEdnOqlIh89mZ+eYPHmKI9/1fZSPHKVzfQnTdTFME6s0ZtGOMcY7idF9pngoq5tCaQho7Pt6fxISkUDk9enXajiViVTJYJHfsxc79dy+8plP4dVqfOrrL7C8sowQkkff935OnXqI+tlX+f+3d5/RcdRXA8afmdmm3dWqF1u23HvBpphOwLSQQCBAqDEtdBdMHBubGAKmGBswxSZAQkJIICGB5AUCJNhgek2IKTa4gHtTb9t3Z+b9MNIiWbKtstJK1v2dwzl4V9q9O5Lmzsyd/73p/YoZce4FTe70318urNm8iU0r/kXNls3UbtuGzeVsMpDakZ5uFRY0jc2vv0bdju3UbttCsKyEtJxcfAMGkl7UD5srjWhdDbFQiHjjeRuKgmq3W8WaeAybK41+xxxHwcGH8b9HHrRaNrZEVa2ijKpg6PHEsG3FZsOM72fVRn3LJyMawYzF0MMhFF1HqSwnFggmBrS3tELENAxsHq9V6FFVPIV9iNbWEY+EiQUDxEMhVLsNU1Gwu6xVdIqm0P+4yfQ59HAAMgcPYdwlP2Pbu29R+sXnhMrLAWu4rd3tJlxVZbVFqV/9bf2/NeS2pf3znsWxhqJTtK6O8jWrwTDQ0tyk9y1C1bQmw7tdmVmMOOd84uEwdrebvEHFhMLJya1tOVcUqTdmzBgWLFjQ7PHXX3+d7OxssrOzUxCVSIaKigquuOIiNm7cRFpaGosWLeGEE05M2ut35JpTsi+o7+9cr2bzJtb9429Eqqvx9e+fiDWwayfr/vG3ZrE2iW/IULKLi9iwfEWTwknBwYfQ7+jjsKWlUfXNBkq/+IxwZQWxujrikQh2j4fcMeMTqzxifn9iELl1rhe0zvX4bv5QtLaGQaf+gIq1XzUr0mQPH8mqx5dhc7lw5eRa81lrazDjcWtGhqZhxOIEdu/EW9izZqOK5OuRhQ2QSvuB7OCDD8Fms3HdddO46qrr9lmkajjBaRh62/C1jQ9mt73bsR7ara2KNz7gtna4Kg6vN/G+1vI5a/CuEY8TqqygduvmJkkocXpi0vTfLdhfgrS5PdjrW8gYmBiRCIrdnrjbSw+H0RwOsoaNpHrTxhZP+PZ2sI6qWCsu4nGyhg1HURTK65eE29weYgE/Tl8G0YCftOwcbGnWiUnjO9/0WJTA7l3kjZ9A4SGHteMn0zFSsRcHsrb8fu/rpLxm8yaitTW4c/NJ79M30a7Kv22rtYIiYC2ntm6fV6yWe/X7mHgggDs3D9+AgYm7mhxeD470dKswYoJqt6PZ7CiKSjTgRzHB1LBWaMTjKJqG0+dDNww2+f2MKR6Avf7OWZvTiWq3WUOidR3FZseIWf8fC4VweLwY8TjxYBC7Lx3NZsfEtN7T5bLujrXbEys5uherr3nDXbod7queBFqai7ScXAJlJc2fTMTZaK6Jaq2msKe5yRszjvI1q6nZsskqfMXj2NPcODMzEyv97B4PoYoKHOnpZA0dRr+jj6XvEUfzxZO/JbB7l9VeLBrFiEVRndZFx7jTieZy4fCmk5adnShqQNOhjWm5+dbsjfpVG4DcRStEF2qcZ6rWfUWoogxbmgcjFiNSW20dm+o6ejyGqRuEouWgKIkhn7ljxiZWR9du2Yy3Tx8KSkuorKrilFO+n2hVm95/INHaGqstUv3x7P5yYWIFSFUVaTm5RGprUB1O6yJKwE/u6LE4MzKtfOivRdE0PAV9iNbWEiwrJVRRnhhc3VCEVW02vPkFRPy1xOr8VmGjflWKotnIHjacYT86G9OwVpNpDicooEej3xX36wspDa1ko7W1GFhDXdOLiokF/YSrqzD31vqqfkaRaZr17RrBjESIRCJNv6b5Dws0DSMaQdWsfuz54w4ivXggm5f/i6oN6632kxFr1Zw93Yc9PZ2sQUMYfubZzfqa+4oHkD/+cz4LhwlXlltD190e9EiEWDBg5W/Nao2rORx7XeWwt5sw4sEAUX8tJiZpWVmJfby1CeuHd2/dgqKqZA0Zmvh9TKb2rJYVyRcMBnnxxRf3+nx+fj4nntj8QvdTTz3FJ598wty5c6WleQ+WlZXFsGHDCQbDLFv2OCNGjEzaa3fFNae22tu5XjJizRo0mDEXX7rXwom3T1/6HX1s4vmYv44NL/0fNtd3NyM3DCK3e2yJm15Vuz3xfMPKaVd2znfv1WhFS9U364jW1uDKysHmcmEr6kfU5yNaU4Mei2LoBkYshisrhxEduJFZHBh6ZGFDKu0HHr3RHbrHHHMcL73071YNCf+u32pBswJI4mA2CT20W3MHdOMD7rTcvMQdww0H6bGAH7vHS/WmbwlXlBEPR9jw0v9RuX4dmYOHsuPD94hUV+Mt7JOoqletX9dkHkdbOLxevH37Edi1kyigm1H0SCQxbFGzO7B5Pez6z0eUfPqfvS6l3NvBep9DDydUUUakqgp3fgHZI0ZRs/FbgqWlqDYNZ0YmuaNGk/nDH7Hjw/eaFkYUJfFZi487QarrQqRYS3/n1sGniTs3n9yx475byZGVjTMnh5i/DiMWJ17flkhzOFBt1goJPRohe8Qo0ov6AVCz6VvS+/UnWufHnVdfXHA60aIRa7+Eic3htIqmdmuFWywUxJ5mFYy9hsGR4yeQP2Ys1RvWEqmpQ49Grd7m9bOCHOk+guWlGJEoRjxOLOBHdbqs1WXxmHXhxOMlf9wE9GiE6k3fEvMHCFVVdE5LKlVtWx/0xhr3Iu9kqtOJ5nASD4esdiLxeJMLaygKis0GuoFp6GQNGUbF2q+tViuJliLN4w1XVeJMTycesVrNeIv6EywrxZlhreRIy81rkretPvMB3PkFifza9/Ajcefls+bpJwlVVVl3NdfPZ4oHgzjcbrJGjrYuOm7ayPb33yFj4KDERc3MwUPZ/u7bVHz9df3vnAO724MtzU16375yd5cQXaghz6x/4e9Ub9oEKJiGgRGNYfd4MWJRdF1HRbHaB5omKCrpRUWJv9WIvy7RjuiII45i7Njx+Hy+xHu0tcVc4wtAmYOHEMnJoeKrNcSDwcSNOlUb1pOWbeU8hyedzMFDUBSFjEGDrTZ4oRDRgJ+azZvIGDy0vlhgkjtuPIqiUFOfU/VYDDMWxTdoCBOunY6veAD/e3Qp8UDQuvgE6PE4oYpy9FAIXY9bq6CjMZzpGaAoxEMhMooH4Bs8lPIvPsOVmUXdzu3EA4FGM6TM7woWirWNVYcDV2YW4cpKTH0v+S6xPzZRFZX0on648wtRbRp9jzyabe+8RVpODq7sIwiUlBCursKIRFDtNvocMolhZ57d4rmKoqrkjhlHzshRlH/5OSbWioyGVlcooDmcpOXmYUL9Covmqxz2vAlDc7kIluwmULKLUEVFIo9FaqoTdwy353eivWQ1eOrV1tZy22237fX5SZMmNStsPP300yxcuJDTTjuNyy67rM3vmZbmaPP37Mlu13C7O/46vZWu62j1LbcfeuhhqqtrycvLS+p71O3cQWDHVjKK+uJwNL+EmlHUl8COrRi1FaT3LUrqe7dVMmK12zU8Xhce78B9vlfD86ZhUPX1l1Ss/Zq0DJ+Vu9xONIcNU4+jh6yb3dxZGYlj/2gkhMPtwpeTgcfrIlpmsOPTj6jevAk9EiFcU0MsEMCR7kNV0wCFtMxMXBkZ9eeAISK1tQw/7VT6jB7RkU3WqeTvu2t0u8KGVNp7n//977/cdtt8fve735OXZxUfWlPUgOZDb/eUzIPZ/d0B3fiAO1hWii3NTaS2pv4CTABFUYkFA0T9dWAYePsW4SkopHLd12x/922rX2yji4cdvQPAU1BI7pixRKqriYWCGNGwNSywoZ2IqWN3uPAUFGJLc+9zKeXeDtZrt275rs9kNIq3bxF54w4ib9xBZA0dljigTy/qJ3cxCZFEbRlc11p7/p033H3jysxscgFas9txuN04vV5i4TAZAwZiT3NjArVbNhMLBtDsNhzedGKBQH0rhiwGn3ZGosiZlpeP05dBzO+32mvUDx237lpVCNfWEIzGGDj+IOJ1dYQqK4iV7KYu3UufSUeRM2IUG176B3osTt3WzbhyclEUhXgwQCQeB11Bj0Ssu18Ng3gkbAUfDOIv2UXmwEEUHDSRnZ98hKIoyW9JVb+f1eOxvd9Nuy8N7UH2WtioXyGztwHebXgfm9OFaejYnE5QVetGg/pihuZKQ9M0YgE/etxqJ2XoOg6fj2hD6xTTWl2y5xrDeCBAPBhk+3tvW6v2FAUjFsOdk0vEX9tk6KsRjxOpqcbmctHvqGOb/C5nDh7C2Et+xjevvMS2t1ei1N9JnJaTS/aQwdi81kXNPW9kqNm8iR0fvofdYw0wjwUD1iB7vx9XTg59jzxvr/mnM/6+RGr4/X4eeeQRVqxYQXl5Of379+eCCy7gwgsvlPOFFMgYOIiRP7mAYFkJmtNFYOdOFFWtb0kVThyzKqqGGY+hqArDzz4P34CB/PGPT/Lh8n9z0fDh6OEQdo+3SVED2t5ibs8bpBrPl4rUVGMaBqGKcjIHD8bQddKLiqycYZqomo30ov7WjL26Wvw7d+BIT6fwsEmEKioSN/7kjhlHuKLcyoVZ2Yz56WWJdnm1W7dYRdf6FdWa04mqqQTLyiASQQFsaW7chYXUbt6MJz+frOEj6ldSWKvAff36EygtIVJdDYaVS02sNlOaw4nN48aMxTFNA3NfnZobZjsp4PD5yBs/kXBFOVnDR1C59uv6u3+tok7m4KHW3JFolFDpLlxZWfiKB7T4sg096eu2bSVcWYkej+PKyiJr+AhMw6B26xaI62h2B7G62n2eHzQUxza89A92fPh+/YwWB3aPF6fPRywQoPyr1eSOHpsobnRl20FZDZ5ahYWFrFu3rlVfaxgGixcv5sknn+T0009n0aJF7WplHgpFO3wPitvtIBhsx7FiL6frOvffv4iKinLuued+66ZWtxOPJyPp27O2ooZoIIQzJ59YrPkMJdPmIBoMU1tRg5aZ3KJKWyUj1vb8ThYecSzV23dQvn4D7vwCNJcLzZlGYPcuXDk5ePoVE49b5y2maVKzYyfZI0ai+nLY9dW6Jm2+nDn5KA4nfPUV/p07UDSb1YmknmKzE49U48zKwlnQr9v8/bR0/uDxurpNfD2Rx7P3kQSNdbvCRk+rtEsFrmP+/vfnmT9/HrFYnIceeoAlSx5q0/frORk4PGko8Sh2V/Me2o0rwV3xc3KPHoFryhQ2v7mS0i+/IFJVSaSqAk9+AUY8TrSu1lq27fGQM3QoaVmZaJpC5bqvsTns2O1as4Oq9twB0FBlLxg9ki0r/o0Zj+Gpn4VhRKP4S0tQTJOc4cPxZGVa3+RykJbho3rjt5R89B6FI4c1u5CzZ9XeM3oEhSOH4d+9i1ggiN3jxlvYp9n3uVv5dd2R/I2L7qY9g+taq/FJedW332BEo80Kx3avF2dGJuHKclRVw52Th6t+paTd46Hss1UodhvhqkpsTmeTixSNi5yaw4HmcOByZKOoKqHycuKRCLFwmEAkTMA02fXVV7htGvFIFEyDqN9v3dUajVrv3SePUOluzHgc1WENuAtVVWIa1sX5hgv/ZiyGYrOhKFC7aSPRGuvuXOvilIYe15M2qFtze1BUFT0UrG8lYksMVG81fR+DZ4GGVlUdpTldxCNhTMPAlZmNolp3+zbMSjKiERS7A9XuQHVYQ2QjVZVWq0O3xxrsG41gxnVQNYjXt/VqWK1iGMQCAfRIJDEotmbLZvLGH0Skuioxb6lh0HyfQw9vsTWhr3gABRMPpXzNatz5+Yme9w6HLXHS1vhGhsZ3YeeOHQdYvX6N+t+DYFkp1Ru/oejIo5vloc78+xJdyzRNZs6cyZdffsmMGTMYPHgwH374IXfeeSfV1dVMnTo11SH2St4+fckZOZrSz1dZK/M8Xqs9kSsNrcBFqLyMtMxMvMWDrNUFdju3334Lf//73wCY3L8fBdFoUgY1t3SDVJOB4ZEwobIyCg45nG1vvo7mSiNcXZUofBhxa9i4w+tF8WUw7Ec/ps9hRzS98SfRn/zQJvuRWDAIho7mdCRWeAPYXGm48/IIV1URqa3FNOJg6Di83kT/ctM0cWZkEqoox5mZhbegkHgohNOXiWLTCJaVoigKdq/XWkGuqETrapsXw+vvcm6Y3WENKNdwZWVbP4esLHJHjWHTa682WR2vKIq1DwZsTie1W7e0uDq+cU/69KIi0nJyqd74DcHSEqL+OjIHDWHwyd8nZ9QYXNk5rSok+4oH4MzMIr2oH57CPqg2OzUbvyVUWYEjI4NoTTW1WzbjzMgEpO2gaC4ajTJr1iyWL1/OFVdcwZw5c2Q+aw/j99cxZ87PeffdtwE477wLOaQTW1vvOeNnT60poHbVTTPJiLU99lz9r5eXWau09TgOTzqqzY6h683mDwEtts5y5xeSXjyAmo3f4t+9k/Sifmg2u3VNzV+HaRoUTDik2xST93b+MOyUk3EW9Et1eAe8blfY6GmVdqmwt49hGDz00P38/ve/BeCkk07hzjsXtnlbqr4cPEXF9f1WBzc7wWlcCe6qn5OzoB/Dz/spRd/bnRis5N+xncr1a63hR1m5+AYMwOb1EYvpRENRFM1OuK6OYFWNNaCwkfbcAeB2Owj4w5R8tRZXbj6OzCyitTXE61tRqQ4nNoeDQHkF7r79mmw3R3Ye5d98Q9mmra1OFFpmHlqm9f/7GsbX2q/rTuRvvONaW2kX+9eRwXVttbcDY0VR8A0YSLS2mkhtXX2fU+tANVJVRd74gyg+/sQWL1JkDBxEer/+lK/5klBVFXokTGDXTirWryUWCFBdV0d1OISGQna6D7dNwzRMNIcDIxYlVuenZNX/qN68ET0WQ9FsiYs7qj3LOlivHz5qNPQRV1QUhwNNU7F6XmhEqqsp/2qNterABM3lwtTjGO1ZXbEHFUBTMQ0T1aah2DWMmIIZb8csj70Mdm03zSqem/WFE0Wz+tqrqkbG4CH4t2/FiMWxud2g65jxOHHTxOlNx52Xb62mqanGnZuHt28R/p3bqVy3zirZ6PH6WStqoxZVKmDW95HXsHm9xIJ+Ktevpe8RR2HqBtGAn1htNe78Qob96Md7LTRUrP2KYOluorXViWG9jrzv5qk1PlFrqU1l49yqqGqLbSq78u9LdL6vvvqKd999lwcffJDTTjsNgCOPPJKamhqeeOIJrr/+ermYlQINK5wrN1j9szWnw2pJVd9C0OH1kjt6DGqah8qN33DL3Fm89cXnKIrCrFk3cfJxx7Pu739NyqDmfeW5hoHhzowM3Dk5aE4ngVKrDZIeDmP3eBO9wyM11YmigKKqrWpLZHe7cfgyiPr91o1P9qzE76PNlYYzyyow95l0OENO+xHfvPxCon95Ig8H/ESqq1AARVGxez3o4RCazW4tvmh4P9O09vuKCpryXfG8YYB4o1WCqs2OOy+fnJGj6H/s8Ri63q7V8Xv2ebceM8kcPJT0fsUEy0rwFRcz+qJLUG2tvyQRKNlN3dYt1mrR+p+Zb+BAa1V8TQ2qw0G4uopgaQmxQECGd4tm5s2bx4oVK5g3b167booVqbVjx3amT7+WDRvW43Q6ufPORZ1a1IC9z/iB1hXVu/KmmY7G2hEt5b54KMT299/Za+cO/66dLbaWVxSFnJGjiNbVWTcLV1ej2u0omCiaRu7Q4S2eN6TCvs4f1lSUMuSsva8SF8nR7QobrSWV9p4rEAhw882zWbnydQCuuupapk2bidvd9mVa+xp6254TnGRpuOu5YbDSzk8+Zu1fnyG9uBinL6PJ76pW3/dbj0YxWhhi296qesOFncxBg6w+wX4/eixGLBigav1aq1VWTRUxv7/JBZ+u6kUrhGibrh5ct68DY2dGJu7cPJxZORjxOHXbtraqxVxLB/bpxQMoOOEk3lu1Ct1fh11VGZCXh9vpJB4KorlcGJEIDl9Gfb9wnXg4gh6NECzdTXrxAKIBv7XfCgVRHQ5iYWvuR8PwVevyunWQbHM6reGudpt1d78SR7XZiIX01hcSGg/03uP/DUNHMzVQFGxpaRi6DmYMUGjTqg1FQbHZMWPRpi2pGvqo199da72k2fT/9/aSWK+JaaLaHWgOJ3okiqIq1G3bUv8+Jno4hB6LgaqhqhrOzCxsaWno0SgOtxtf/2JMXWfMxZfx9bNPozgc1G3ehM3jQQ9HCJTsanhD611tdjSHA09ePuGKCmKhIMGSElSbDc3hIG/8xBZ/b5qeKDQf1msbPx6b19fsRK1608Y2X4jrjoMhRcedf/75HHnkkU0eGzx4MMFgkIqKCnJzc/fynaIzZQwcxLAzfkzd9m3Eg0HiSghV0xJFy7SsLHZu3soHH33IqsoK3G43ixYt4fjjJwO0elDz/u6Qbe0FoNwx4yj9fBWbXn8NU9dxZWV/t4+w21FtNhRFpfzrNRQeclhizs++bhDyFBSSMXAQ4aoq4tFIk/Z8eixGuLwMT34+oy+YQsbAQZSt/rxJnK7MLHJHj6Vm8ybqtm21VtrFYrjzrRaz/p0764sZitWWsX6Fomma9bt6o8nKRlDQXC5GX/RTBn//9MS28u/a2a67fxsXmCP1qygiNdUYuo6qadjS3NRu3UqwrLRNd9zubZVNQwuxcHUV0bo6wtXV5I0dJ6vtRBOvv/46L7/8MpMnT2bChAl89tlnTZ4fPXo0Does1O+uVq36lJkzp1JZWUleXj4PPfRrxo0b3+nv25FrTsm8aaY1qz5SfX2spdyXMXDQXuOOBYPEw2HrHKKyEtVux+71JvJc4cGHUvblZ7iyclA0FVtaGjkjRtH/uBO6xb59f+cPgW2b5fyhC/TYwoZU2num8vJyrr32Z6xb9zV2u53bb7+bM844s0Ovubfh1t1lhoOiqmQMGEBaTg6azdasAGf3erHXFx6UPe5Y6khVvfGBf+LOM6xCSsOdUYauNyumdGUvWiFE67V0F3oDRVGazRhor8YHzTkjR+PfvavFA2NfUT8G/+gcbGlprVpWvbcD++2rPuWD3/+WL2tqGO9OY0R2Nh5fBuGaKhRVw4hEUGw2a9aHqhGpqcZT2IeIYaA5HESqqsgYOJiazZsIVVZg6mHrblRFQXU4UTRrBYEZ163hrW438VAQhyMTzeEgGg6jOZ1tqjkkihkNRQaw/l1/t24sFAJDJxoMWCtIVAVMpXn7qMZFkYaHNBuKTcOIxaxVHnsuKW14X1VFtdkBMAzdGoCuqlZLKMO0hnvv+bM1TYhFE3f2mnEdRVHQHA6cPh8oKrFAgHg4jKpq1koW0xr2bpomsYCftJxcXDm5+LdvQ7VpeAoKMU0Tv826QBn1++uLLiqKoqKoCnaPx7rAZpi4snMIVVbQ79jjyB4+aq+/Ny2dKOw5rLdq00Z8A4cQKittcqLWnmX4XfX3JbrOmDFjWLBgQbPHX3/9dbKzs8mub6EnUqPwkMMYcPyJlH35GWn5fbA5HImLGdu3b+ODf7/M9kgET0EhS5f9huHDvxsO2poVEa25Q7a1F4BUm42cUWPY+K9XABMjFkvMB4oFAthcafgGDqJuLy2ZWtL4vQHioWBiFpARjeHOy2fspT8jc/AQgBbjVG12nD4f6YceSlyHWF01WSNGE6mpJlReTqS2BqhfpWcaVjpRsFZ+KFbxxdT1+mKHSfEJJzLu0ivbVfzZ8zyl4TwkHo5Que5r4uEwdo8He8NcpdoawpUVVH2zoU371L3t3xtaiAVLS4hUVzH6oinkjTtILiSJJpYvXw7AypUrWblyZbPn33jjDfr1k7Yx3dG///0qN988m1gsxsiRo1i27HEKurDFXHuuOSXzppm2rProbtfH9lXoD1dWULdzOzWbN1rnbpqGMyMT34CBuDKz0JxOsoaNYNiPfozdm97tZt/t7/zBU1Ao5w9doEcWNqTS3nOlp6fjdDrIzs7h4Yd/zUEHTUzK67bmBCeV9nVSANZgQFdOjtUTV1WTUlXf24F/Q3/8QMluNKcL1W5PPNfZyxOFEO3X0l2KjSVjtVVLB80Onw9bfj7R2pomB8Zt6Rm6rwP7rCFDSVv1KUNzsvnRNdPY/c//Q4/GMCJRNKcTW5obZ2YGNlcapmFYMxk0Dc3hoPiEk6nZvJHaLZtxZWURqqzAiEaImyamgjUcuH7Qq6HHwTAIV1WCqll33WZkJmZANMyXaJW9reowDeLR2HdtmQzT6hHfeHUHfPdvTbOKMCbY3G4Uux1N0+ovbNWv1LDZrddrHFv9/5t63Bo4a7Ojo1hfh1XAVjQnRjyOaZjWzBHDAEwc6Rmk9ysmHgkT9VutxDRXGprThR4JozrsGAGrOGEYVpuqeCiIHg5hc7nwDRhoDWx1OEjvV4xvwEB2fPgB0bo662eqaVa7E1Wpn3WigWGgqIp1Ea1+hocrK5esIUP3uolbOlFouEO5dstmQhVl1G3fjs3tIWfk6CYnau25ENcVf18ieYLBIC+++OJen8/Pz282kw/gqaee4pNPPmHu3LkyPDzFFFWl/3EnJAZf2/ILrH18KIRZWUkIUIcM5c+//h05OTktfv/eLhK05Q7Z1l4AcmXn4O3TFz0WI1pXQyyoN1plMgBHuo+6bVvbtI9o/N41mzcRra0FVSVjwEAGf/+HiaLGvuMcxbBTTiYcirH2+Wep3bwJzeXC5k4jFghYuU9VURQbpm5QPyUDd0EBNoeDeCRKpLoKT0EBoy/4adLu/rW73agOB9UbvyEeDuPMzEzsizWHNfA7XFFB2Zef0+/oY1t9nrO/c6pYIEDu2PFS1BAtWrx4MYsXL051GKIdcnJyME2TE088mbvvvhd3Cm7CbOs1p2TdNNOeVR/d/foYWJ9r61tvWHP94nFc2TmYuk6oooJYIED2qNFEqqrIHjGy2+7TW3P+oEejcv7QyXpkYUMq7T2X0+nkwQd/TTQaoagouT+j/S35TqX9nRSk9+1L3yPPo3rjN0mrqu/twF9RFNKLB+DfvRMMAxNaHOTUHROHEL1ZZw+D29tBc6CkBGdGBoNO/UGTuRkeb+vbB+7rwN7t9nDESd9HjUYoHj6CyLAR6NEY1d+sQ3OlYfd8t/8y4nGrlYauozkcZA0dRr+jj7UO2v1+1v3fc+z44D20NDDjMQxdR0HFiMasVQz1F9YxdAzDAFXB4fESi4RQTBsQafuGayg42Gxodjt6OAyAw5tOPByyVsXtubpDsQZxm6aJ6nSi2WxkDh5KuLoKRbMRKitJtMVSMFEcDoxIlMSyEtP6LDa3J9FOxDR0DB0cbo9VsFawVqnErVZbRjSKocdRnU5CleVEqqsSraBUm0Y8HCZUXoYZj2P3eIn56zDjcQwNIlVVpPfrT/bIUTgzMqnZtJHsESPr2y0ex9a337SKLJpmtbpSle96t6NYQ22zslDsdiKVFTh8Gfj699/nZt3biULDXbmRmhqCu7YnhvU2zlntuRCXqmGLon1qa2u57bbb9vr8pEmTmhU2nn76aRYuXMhpp53WrtXeaWkdu2nKbtdwu+XGq8bco0fgmjKFzW+upHrzJqJVFWhOB4MnTaL/j89l7LHH4nS2bU6XaRis++hddH8tucOHfZdzXA7SMnxUb/yWko/eo3DksMQ+wD16BIUjh+HfvYtYIIjd48Zb2KfJPkLPycCTn4vTl0Fi1YbdjsObjqIoRP1+HG4XvpyMNv2cW/Pe+/tah9NOLKbjmjKFTSvfYNMbKzDjcdyFBZjRWP2qQdPar8Zi2NPSUBWIBwLosSi+vn2ZeNXV9B07aq8xtvRzKhw7lgEnnEBW/QyNxtIGFZNekE/ZF6tw5+bVz7n6jhEOkl5YQKymEqO2gvS+Ra3eZsNOOZk1FaUEtm3GU1CY2L8HSnbjzc1h2Ckn4/G69vr98rfYerKtRHdx2GGH88c/PsuYMWNTemNCW645JeOmmY6s+lBUFU9BYaK4ESjZ3W2KG4nPVVND/kETqfjamn1o93hx+HyEqyop+2wVeeMP6tbXpuT8oXvokYUNqbT3HKZp8thjjxCLRZkx4+cA5OW1bgD2gaY1d4QVHXl00qrq+7qwE6mqInfkGFw5OURrawlXlHer9l1CiOY6cxhcaw6aK9Z+xZiLL23XPqnxgb2u67zzzlsUFhYyatQYALILCqjbthWb20PGwEFUrvuatLx8wpUVgCfxGWOBAGk5OUT9fnJGjkrsIxtOMIqOPIbd//0EPR6rLyIo6JHId4UF08SMxVBsNhTNRtTvR3U4cGgqZv2F+Li/runqCE1DqV/hodo0VIeTuL8uMTfCNA2MWAxFVTHiOpgmit2O3efDxMTw++s3MvUzJ8Du8eLKtFbOYZoYutX+S49GMfU4JgqOdB96OIyqacQiYb7rlaWAas3vUFQFU1fQXGnWCg9FJR6NosbjVnsRw8DQdewej3XHUDiEVj+Q3WpJomBL86DabQR378IwDGwuF4phoNsdVh90txvNZkNzOlE0GzWbNjYpDNjS0nDn5mHqOsHS3eihEIqmYRoGiqJaBRbTahsWranG1HUKJkzc70nhvk4UFEVBtdlIy8nBVzywxd/Jti7DT+WwRdF2hYWFrFu3rlVfaxgGixcv5sknn+T0009n0aJF7ZrLFwpFW72oqyVut6PNs+R6A2dBP/qc9iN+M3smPzrtdMYfcRR5g4oJhePoOm3eZv5dO6n45lucOXnE481X1zmy8yj/5hvKNm1tth/SMvPQMq3/D4XjTZ5TfTl4iorr9xGDsbms36F43MA0TWp27CR7xEhUX067fs77eu/9fa2iqgSDUZwF/Sg67kRKVq/GN2AwTl8GNo+HeCCAEYsRCwWp27GdcGUFDl8mtjR3YnVIxsBBlH67ea/nIM6Cfgw/76ctnqfs7fNmjRoHb7xOuLbWmm2VaN/lx+Zy4R04mGhdHbUVNWiZrT8/dBb0Y8hZ5323wjQaRXM48A0ZTv9jj8dZ0G+fPwP5W2y9rtxWHk/bipjiwFZSspubb57DzTffwpAhwwC6ZJ5GMiXjondHVn105dDytmr8ueweb2JF9nezmFQUu43i409Meaz7sr/zh0DJbnxDhsv5QyfrkYUN0TOEw2FuuWUe//73KwBMnnwyY8eOS3FUqbW/JYHJXnWyvws7HVme2JrhVUKI5OnMYXCdPV+g4cA+UFPFynfeYeeuHWzYsJ7i4oF4PJ7Egb3D6018xljQukAerqq0TgoiEVSbHUXVSMvKavJZG/ZHqt2Bt28/IjXV9UWDhhZODfMtrJUOnoJCnBkZ1sFzLEr2iJH4d+3EiMfRbTbMWKx+eLcNa+S2ieZ04iksxATqwmFc2dnWzCK7g2B5KZpmIx6NoOvWSotoTQ3fDfU2rTtmVRVFUerv+CWxmkOx24mFQ2iqRjwasx53OTFNAz2qg26gaLbvVn2YBprdYcUbi1o909PSQI1ixGPocTOxOkTRVPRYDD0SIWPwEPLGjCNaW0PFuq+xuT3ooSCq3WHFhmkNmcXE7nGTO2oM8VCIUEUZ/l07saen4+tXTN64g9CczvrWYEE0u52+Rx5NsGQ3tVu3EqmpIlJdjRGPNVm1ododZAwcxNDTz9rv72lrCg2FY8fu80ShLcvwUz1sUXSOaDTKrFmzWL58OVdccQVz5sxpV1FDdJ5t27Yyffq1fPvtN3z27bf864c/6tDfWWe1lesp+4iGGUmewj5Wa0BIzNlzkY27oJDqDesZ/MMfkVNfrK3duoU1zzy134tfbT1PyRo6jMxBQ4jUVNfPENGbDIlXbXaMSKRdd7L2hDYrQoj2+fLLL7jhhuspKyvl1ltv5umn/9Yjc3cybpppb05L5tDyzrDn52pYkR3z+9HrbxgLV1Xiym7eirI72d+xgTc3p1scGxzopLAhOkVZWRkzZ17PF198js1mY/7823p9UaNBV7fM2t+Bf3ti6c7VfyEOZJ01DK6z5wt4CgqJp6fz3v/9nZ0BP3a7g5NPPhWPx9PswF5R1cRnLF+zmrod24lUV6M5HLjyCsifeDDFx52Q+KyN90fxcJhIbTWGHidv3Hhqt24hsHuXNTi1vsiguVzYvV7r9bJzCOzaSVpePhOvm4F/xzYq1n7N2uefJR4OW7MqsL7HlZ2DzeUisHsXtjQX2SNHEff7CZaXYRoGuhG1+pfXD/bWnE5M3RrOjaYlWksBhKur0MOhRNHF5nZjszvQY1EUm4YZixIPBq39tKKguZyoNjvxUKh+IYq1wsQ0zfqVGSZpBfkESnaj1H9OU7faUCmqihGLoqqqtaoD0NLcONMziPprsbk9xOpqsbvdONLTMQ1rSLinoJCsYdaw3khNDVUb1uHweglVlLN5+b/Y9vZKfAMGkjNyNJrTiREJk17UD2/fIqJ1dfh37iBQsptQVSXx+oG4qt2BHo2x7b23UVR1r4MWGw+vD+xleL0rM5MBJ5xgze3YR6G9LTm3uw1bFB03b948VqxYwbx589rVfkp0rk8//Q833jiNqqoq8vLyWbr0sQ7PSezMthA9YR+xv8+vh8M4MzLIqW8n2JkXvzwFheSOGWutwswdhRGPo9nt2L1WXA1tDdt7J2t3bkMshGif1177F7/85RwikQhDhw5j8eIHemRRA5JTEG9PTkvm0PLO0tLnUhQlUYiP+v3YnM4e0cJpX8cGbZlJKdpPChsi6datW8u0adewe/cufD4fS5Ys4/DDj0h1WL1aMg/8u3v1X4gDXWfcpdjZ/UE//OgDFv31L4yMx+jn8XD4iSeTW9iXqN/f4oG9r3gAAyafjMOXSfmXnxOqLMc0TexuN41PbRrvj9z5Bdg9HvRYjOpv1lO1fl19yynNGlitqqiahqpqhMrLUfLyUFQNm9tDqKwUVdPoe/hR9DnsCCLVVWx9500UVcPu8aLabeiRKOGqSkxdx9u3L5iQO+4g/Dt3Eg3+h2h1NWCdTDTEqNi0+tY1JqqiYKoqiqqiRyNWsUVVmxQ8NKcLIxBIdJ1yZudYQ7vT3GAY6BHr+1SnA9VuxzQNFFUD0ySwayeGrtfPn6jGiMetlk12O2bcmn9Rt30bsVAQm8OJaVizlfRo1Jr1odkwdAMjGsHh9eIbMDBxIhQLBghXV2H3eMgYMLDpfn/3Lhw+H4GSEjIGeYjUVCeWksfDIau1l6qiOZyoNhuh8lK2rHiN6m83MP7yq5vki70Nr3e3MLy+/7HHkzVoMLu+WpfUQrvcBXzgeP3113n55ZeZPHkyEyZM4LPPPmvy/OjRozt8EV2034sv/oPbb7+FWCzG6NFjWLr0cfLz8zv8up3dVq677yPa8vk7++JX44t6ofKyxEW9WCDQrVa5CCFSzzRNHn/8ER555GEAjj32eyxevASvNz3FkXVMRwvi7clpnb0SPxkOtBawezs2aMtMStF+UtgQSfXmm29w000/JxQKMWDAQB555DcMGDAw1WGJJOkJ1X8heoNk36XYmQeXzz77DPfccye6rlM8ZiwXnHAisbJS6rZtbfHAvuHidvma1dRs/BZD13Hn55M5ZCg2p5PK9esIlJYw4uzz2P7+O0Sqq3FmZVH97Yb6C/q6NaS6vBxUxWrZFIujORzYXGkomoYRiRCurkZzOEnLyUFRtcRqFEVVGXbmOYQqK6lY9zXh8lLiEavFE6aJ5nKhqDZCZaVEKiuJhYKoitVuyTQMVJsN0zSJ1NQkhnhjmBi6jsPrxZmRSaiiHN00wcSKy+3BiEYwYyaKoqCoCormtGZwq6pVBFEUFAUMwIjG0LUIqt2Bqtmwp6cTKitDj0WJ+v0omorTm13f01wjUFJCPBKGuI4eDidmYhh63FoFolmDz6M1NXiLisgYOAhXZhZgzSeoXL8WzWYne+ToxMDGxvt9d34BjowMyld/SaiyAiMeQ3M6idTWWEUTRcGIRbFlZ6FqNmIBPxVff8WGl/7BIdNuRFHVfQ6vd7QwvF5RVao2beyUQrvcBXxgWL58OQArV65k5cqVzZ5/44036NdP7qLraoZh8NBD9/P73/8WgFNO+T533rmItLSWVwy2VTJbRu1tNVhn7yM60u61LZ/fv2tnp1/86gmrXIQQqRWJRLj11nm8+urLAPz0p5fyi1/MRatvp9fTdaQg3p6c1tkr8ZOhp7R3bAs5f0gdKWyIpAoGg4RCIY444ijuv/8hfPV9xMWBoSdU/4UQbdeZB5fV1VXous6PfnQWv/rVndhttr0e2Ddc3A5XVRGpqUax23BlZhKtq6Vi7Vfkjh5LxqDB1GzayMZ/v0KoohwtzUXF12vQw2HsHi92j41YMEhIsaZjpBcXU7dlS31hQLFWU6gq0dpaPIWFuPMLUKDJapSMgYMYdMppBHbtwB8IACaqzYbd7alvuxRBS3MTKN2NqRv1KyhsKKqGWj+IPB4Oo0frB5ebJtS3jlLqiyANLatUm4207GxrkodhEI9E6ldBZODOy6Nu1w7iwaC1eiHdR6S2tn52hYYRj2FzulDrD6SDFWVgmHgKi7B7rAKVaZpg7gZdB5vNal0Vj6M5naTl5uPfsR1v3yJG/eQCtr3zJno0imKzEa6uJhrwEyotwYzFyBk7LlHUSPze1O/3o7U1DDz5+3z912eI+f1oaS7i4TBmXMfmdGLzeNEjEaI1tbgLCnBmZhGqKKfks1X4d+3E26dvm4fXm4bB5jdXSqFd7NXixYtZvHhxqsMQe1AUhYqKcgCuvvp6pk6d0Wzf0lHJuJieqraryXjf1n7+rrr41d1XuQghUktVVcrKyrDZbNx886385CcXpDqkpOvIRe+25rTOXomfLFL4FskihQ2RVD/84Rl4PB6OPvpY7HZ7qsPpdRru8AobMeKqPeknDT2h+i+EaJ/OOri85pqpDB8+khNOODFx8bmlA/vGK8Lcefn4d2zD4U1HczjQHA4i1VXUbtlM3vgJuPMLqNmyGVOPo0ciVs/wzKzvLm5rGjaH0xqEbZqkFw8gsHMHRjxuXehXrJUSvgGD0MPhZqtRjHicks/+h83twZWbRzzgx5mZhVbftiZSXY1W3y8qLS8XX/8BVK5fi93jRQFioRDhygrikbDVAstmR49GMKIxgmWlGIaeGExuLcMw0dJcAOjxOJgGDo+bjMFDcWXnULt1M0Y8brXwCIUAEyMSQbVp2Fwu0nLySC8upnz1F9Ru3Ypi0xLbwohGmwwdN/Q4etwajh4LBHBmZOJM95E9YhQZAwez4aV/UPLZ/4jW1gImimbDjMcx4np9YaZpUbthvw8mrqxs3HkFqHY7oYoywhUVaK40FEVBs9uJR0IY0ahVpPGmE66qpHbbNhRVbXPRPFCym+rNm6TQLkQPoygKt956B6ecchrHHXd8p71PRy6mp6rtajLftzWfvysvfsmdrEKIvbHb7SxZ8jDffLOBQw+dlOpwuqW25LSe1OZJCt8iGaSwITqkqqqSu+++g9mz5yX64h5//OQUR9U7Nb7DCz0Gmj3pd5b1lOq/EKJ9knFwuXXrFpYte5DbbrsLt9uNoihMnnzSfr+v8YowPRLF0HXsNuswRVEU7B4vkZpqYn4/Nrc1c8KIxQiUlmBzpWFEo6gOR30rp/p2STYbsUCAnJGjMXWdWMCP5nRBfWukeDCAt7BPk9UoNZs38e2rL7Ht7ZWYpmG9X5obTCNxYmD3eIjW1FhtrWIxnBmZuHPzCFVU4MjIQK+qBKziCfUzNpy+DFS7g0hNFZimNfjbMDDjMWIha0WGHosRKi9D0WxEamoo/XwVmt2G3eMBrCHeRiyG3e3B27cIT2Ef0rJzsHu9KIpCxsDB1O3YTriyEiUnF0yTcFUl8WDQaollmsTDYfw7d+D0ZeAp7IuvfzHRulpiwSCqphGPREjLzsGdn0+ksopQtbV6ZudH7+PrP4DskaMSbargu/2+aSoY0Siewj7W6wQDNB6IoqgqZsz6zI0pitmuonnD9zhzWu7JL4V2IbqPL7/8nOef/xu33roATdNwOBydWtRo0J6L6V3ddrXhpqSo38+m5f8iUl1FxqAhSXnf/X3+nnTxSwhxYHnrrZV8/vkqbrhhFgCZmVlS1NiP1ua0ntbmSQrfoqOksCHa7dtvNzBt2jVs376dmpoqfvObP6Q6pF5rzzu8XOlewnX+pN9ZJidAQhz4OnJw+d//fsKNN06juroany+D+fNva/X3Nr64bRomqqZhxOOJVRKqzUYsqKPHYhAKoagqkbo6whXlqE6ntUrD6cKZmYnqcFoFDk0DFGxpbnLHjKV2y2bC1VVEa2pxZmWRN34Cxced0GS+x9rnn6Vu+3YUTcOe5iUWsOIKlpXizsvH5kpLzNFQbRp6NIoRj+MbMJBYIEC4opxYKAiaiqKDaejWgG5dx4jFEoPMNYfD+jcQqqxAj0QwYjEUBbx9+4GhWysrVJWo34+q2XCk+zDicbJHjCJz8JBmKxWcmVl48gqIRyL4d+9ED4cxolFroLnNhoKCooIejRGursbm9hILh+rnj7jYsnIF0ZoaPH36Jtp7pWVlYeoG0boa6nZuR9fj5I0Zhyszq8l+39e/f5PCt8OXgeZwokcj1vYyDGt2iKpimibRulocPh/p/Yqt7dHGorkU2oXoGf71r1e45Za5RCIRBg0azGWX/SzVIe1TV7ZdbXxTUqS6mpqtm0nLycWVndOkgNxZq9B62sUvIUTPZ5omf/jD73jggXsxTZNx48YzefLJqQ7rgCNtnkRvIoUN0S7vvfcOs2fPxO/3069ff2666ZepDqnXaunOMlXTsHfCnWVyAiS6M7/fzyOPPMKKFSsoLy+nf//+XHDBBVx44YVJ798tmnvhhb+zYMGtxGIxxo4dx9VXX9+m7298odqeGLJdgWq3oygKRjyOqmmoNhs1mzcR9ddiS3NaA7pNE1CIBoPEw2FsbjeurGz0eNy6uB+LkpabR8aQoWjbtpAxYBBDzziLwkMOazKzYdu79fvSgYOIVFeCCapNQ9FsGLGo1YKqwGUVXJxOVJuNSHU1qs2G0+cjZ/QYKr7+mnBVFaZpoNkd9UUQw2rlBCg2m1XA0HVsaW5sHg/xYAjN4cSdX4DmdJE3dhyRmmrrYldNNYqiEgv4ceXmkjd2PMGy0mbbzzRNQmWlZI8aReXar9GjETSHA0VVMWJxazi5Ys30QAE9GqF26yaCJbsoOvoYAGq3bMadX0D1txuatPdKy87CiEbQo1GiNTXUbNoIQ4fh37YVu9tNzsjRzQrfjvR0vH36ULt1a2LVhN3jwQTCVZWYpkHBhEMSF+jaWjT3FBSSOXAQJavXSKFdiG7INE0efXQZjz66FIDvfe8Ezj33/BRHtX9d1XZ1z5uSVIeD2h3biNTWUP7VanJHj21S3OisVWhy8UsI0VVisRgLFtzKCy/8HYDzzruQY489PrVBHcCkzZPoLaSwIdrENE3+8penWbToLgzD4OCDD+XBB5eRlZWd6tB6ra4e6C0nQKI7Mk2TmTNn8uWXXzJjxgwGDx7Mhx9+yJ133kl1dTVTp05NdYgHLF3XefDB+/jDH34HwKmnnMa86TNR62rx6/FWH0A3vTA+OLECIlJdjc3tJhbw4/RlECorJeavw+FJJ2fMWMyYjn/nDqif/6BHo9jcbvIOmoh/x3ZQrJkZddu2ojkc5I2f2OK+qvG+1Ob21BdWytEcTuLhMKrdQTwSRo9EiIdCpOXkgKKiahqh8lIUVcWR7iNj0CCCZSXY0lzYnGnosRiqpuHftQMMFQwjsWLD26cvOaPHEqmrJVJdheZ0kt6nL4qi4MrMwpmRSczvR49FidTUoEfCZI8chR6NtFhcdmZkoDmduPMKsHvTqd2yCUXVgHiTGRuqw4GqquixGHosStWGDVR9swE9EsHU40Rqqq15IfU5xeZKw52fT7C0FBSV2m1bCVdXodrtmKbJptdepWLtV2QOHtqk8J01dASR2jrClRXWChpFJR70o2gauUOHM+xHP078brS1aK6oKgNPmEz19h1SaBeimwmHw8yfP5fXXnsVgEsvvYIbb5yNpmkpjmz/umI1WEs3JZmGic3pRHU4iQcD1G7ZjDMjM7Ef7sxVaHLxSwjR2aqqKrnxxul8+ul/UFWVOXNu5qKLpjS7fiGSS9o8id5AChui1WKxGPfccyd/+9tfADjrrLO55ZYFOOrbhIjUSMVAbzkBEt3NV199xbvvvsuDDz7IaaedBsCRRx5JTU0NTzzxBNdff70cOHcCv9/P3LmzePvtNwGYetEUjikqYt3Tf7D2S05nq2f9tLQiLHvEKKo3fkOwtATFZsOZkYm3qB+GrpNeVISqqtaFfj1OPOBHc1r7QT0WI7B7J+lFRQw/+zxr6PZ+9lWN96WKoiQKK3osZhVMIhFMw0gUWhRVI72oiL5HHkP1xm8ShV7Vbidz8BDikTAxfwCH14uh66gOa3WJHolgd6XhKcgnHg6jKArewj5EqirRQ+Em+3JFUTB0qygTrq4iWlcHikp6URHu/HyitTVNiss5I0ez6bVXyRw8mFg4QqS6CtXuIFxRTlwBIxYDrItqKAqazU5aXh4xfx07P/4A1eEg6vdjxHXsnqaHiKrNjis7B0+fvlStX4sj3UfOyNHY0poOty1qtD30aJSMAQPxFvapb8GlYEtLI2fEKPo3agEG7SuaZw0aLIV2IbqZ0tJSbrjhOlav/hKbzcYtt9zO2Wf/JNVhtVpXtF1t6aakxisVbW5PYqaUIz29S1ahycUvIURn2bjxG6ZOvYbt27fh8Xi4994HOfbY76U6LCHEAUIKG6LVIpEw//3vJyiKwsyZv+Dyy6+UC4XdQKr6jMsJkOhuzj//fI488sgmjw0ePJhgMEhFRQW5ubkpiuzAVVdXy5dffoHD4eD2mb8gr2QXlevX4SkoQHM1veDdmlk/e17c1qNRvH2LyBs3nrxxE8gaOoyo38+aP/4+UQBwZWaRN2Zcom2THrfaLqX3L2b4mee0+uL2nvtSV2YWOaPHULtlM8GyUmtwt66j2u14+/Qld8zYxMXzoiOPblLojYdCfPGH3xLYuRPNWT/QXAEzGsXmdJKWm4NmtxMNBDBiMeKhELa0+qJMo315uLqKiq/WWCtGHA4c6em4MrMIlJSgOuwUTjgEd0EffP374+3Tl+pNG5vMKbG5XJhm/fxyQHM4MQ2rBZaiqmCaODxeovgJlZfhGzCI2s3fomhqk/kmpmkSCwRwZecQqbZaY2UPH4nDa8XZeLht9cZvGH3hFIJlpYnt4c7Lb/LvvRWX2lM0l0K7EN1LaWkJGzasJyMjgyVLljFp0uGpDqlNuqLtaks3JTUuqMcCfkzDIB4Og6LIKjQhRI+2efNmtm/fRr9+/Vi69HGGDh2W6pCEEAcQKWyIVvN601m27HG+/fYbjj9+cqrDEfVkoLcQMGbMGBYsWNDs8ddff53s7Gyys6VdXmfo06cvDz/8a0zDwLb6CyobtdWAphe8t73bulk/+7tQ7d+1s1kxt3HbpnBtDXo4xMhzLyC9qF+rP0tL+9KG143W1VGzeSPevkUMP/McHD5fk5haKvQOO+PH1G3fRjwYBBoGmRuk5eZhc6VhxK0WVYrNRrC0hJwRozCBqvXryBjkAayZF/FwGEdGBtGaatJyclEddmJ1ddTt2EbNt9+SNWw4GQMH0f/Y41ucUxIo2W0FZJqggKKoqHYbRiyOPc0N9W2xMCF//ATiwQD+khIiNdW4snMwdZ1YIIDN5SItN5eyz1fhzi/AkZ7e5PM2bn0YLCtttj1aWwhvT9FcCu1CdB9jx47j/vsfZtCgwRQXD0h1OO3S2W1X93ZTUkNBvWrDekIV5YTKy3BmZMgqNCFEjzZ58kncc8/9HHnkUWRn56Q6HCHEAUYKG2KfPv74IzZt+pYLLrgYgP79i+nfvzjFUYnGWrqzTPN5ifr9coeXOCAEg0FefPHFvT6fn5/PiSee2Ozxp556ik8++YS5c+fK8PAkeuWVf5KWlsbpp/8AgIMOmoh/106+eOWlpM362deF6r0VcxVFwe71EiwrJWfk6HZdHN/bXbqh8jJ8/fozohWrThoUHnIYA44/kbIvPyMtvw96OETN5k3o4RCKqqKHgti96QTLSknLyqL/cScAECwtoWbTRuwejzXHwuEgWlONzeXClZVN5ddf1Rc7MjH1OKrNnlgVM+Ls85rNKYn6/UTrajF0HcU00ex29GgMzW7HkeEjHgziSE/H4fORNXQYvv7FaE4nOz58n8CundjcHtJycnDnFxAqL0ex2cgcMrTFFZudNdxWCNF9mabJk08+wWGHHc64ceMBa1B4d2Yaxn5XeXXmarB93ZTkzMjElZ1D3rjxDDr5NOxer6xCE0L0KLFYjEceeYjzzruQvn2LAPjhD89IcVRCiAOVFDbEXj3//F+5667b0XWdwYOH9ril5L3JnneWRasqQLPJHV7igFBbW8ttt9221+cnTZrUrLDx9NNPs3DhQk477TQuu+yyNr9nWprMDtqTYRg89NADPPLIMtLSXEyYMJZ+/axCd9iIgR7Dle5F3WM4rGmaxBWTaE0Vkd07yBtU3OELNMNOOZk1FaUEtm3GU1CYKEAESnbjzc1h2Ckn4/G62vy67tEjcE2ZwuY3V1K9eRPRqgo0p4PCsWMZcMIJZA0a3LY4Tz2FaGUZ4epqvAWFOL0eqr7ZQKC0BM1mw52dRcG4cU1eu+H9S7743BqS7vPhzc/HN2AgNVs2Y0TDpGVnARCprsaZ5iSjqA/VG7+l9JMPGHrSiXzVaNvkjx1LGQZVGzeCrqM4nTg8bhzedMxoBLs7DafXQ96wYYmfTeHIm9jxn0/Y8s5bBEpKUFQNm02lYPRonB43Lo8bu735EOBoJITD7cKXk4Hb3fl/Q3a71iXvcyCTbSg6IhqNsmDBLbz44v+Rl5fPiy++Snq6L9Vh7VPN5k3ftTvczyyozloNtr92V2lZWQz5wY/k+F0I0ePU1dXy85/P4KOPPuC9997l2Wf/js0mlx2FEJ1H9jCiGV3Xuf/+RfzpT38A4LTTfshBB01IaUxi/xrfWWYzYsRVu9zhJQ4IhYWFrFu3rlVfaxgGixcv5sknn+T0009n0aJF7ZoFFApFMc39f11vEQqFmD//JpYv/zcA559/MX379iMYjAIQV+2g2QnX+bE3aqsRrq6yWhOVl6NHwqx+/m/sWr26wwVXZ0E/hpx1XpNZHJrDgW/IcPofezzOgu9ia89rDz/vpy3epdvW12wpTndhX3LGjKffoYfg7j+o2Ws3vH/WqHGs+fOfcGVm4c7PJ+b3E6qsREvzYJqgR6OgqhiKRjxu4MjOo/ybb+j7vRObvadv4BDchUVUf7vBGliu2jB0HbsnHZsrDXdBHwqOOIZQOJ6IPXvcwWSNmdBkO7jz8vnqL39KrAjZs/VhzY6dZI8YierLaff2bwu329El73MgS9U29HicXf6eIrkqKyuYOXMaq1Z9iqZpXHXVtT2iqLH2+WeJVFe3exZUsnR2uyshhOhqW7duYerUq9m8eRMul4vrr58mRQ0hRKeTvYxowu+v46abZvHOO28BMHXqDK65ZqoMCe8hGu4sk4s9ojeKRqPMmjWL5cuXc8UVVzBnzhzZdyVBaWkpM2Zcy5o1q7Hb7dx66wLOOuucJu29Wmqr8d3g6xCmHsfbpy+egj7tvoC0Z+sQX/EAxlx8aae0CUnmXbp7a2fi8br2up9WVJW8cQeRN/YzKtetBfIxYjGrGGGz1Q/z9pOWk4u9foB34zZQWUOGtvieNZs3sfHfL1O7ZTOmYeLw+RLzOVr6WbS0HTp7qK4Qovv75psNTJ9+Ddu3byc9PZ377nuIo446JtVh7ZNpGGx79y0iSZgFlSyd2e5KCCG60ieffMzPfz6NmpoaCgoKWbbscUaOHJXqsIQQvYAUNkTCjh3bmT79WjZsWI/T6eTOOxfx/e//INVhCSFEq8ybN48VK1Ywb968drWfEs199dUapk27hrKyUjIzM3nwwUc45JDDmn3dnm010vLyqdm0iWjAj6KqOLxeMgYNxuH1Yve0/QJSW1qHdEftHYjdeJvaPR4UVSUWCmFEI9hcLnwDBiYuzsVDITSHA7vbvdf3zBw8hInXTu/QRTS5y1iI3u29995h9uyZ+P1++vcvZtmyxxg8eGiqw9qvQMluardsTtosqGTprHZXQgjRVf7xj+e4445fEY/HGTduPA8++Gvy8/NTHZYQopeQwoZIeO+9d9iwYT15efk89NCvEwMAhRCiu3v99dd5+eWXmTx5MhMmTOCzzz5r8vzo0aNxOKSPfFu9+uo/KSsrZciQoSxd+hj9+xfv9WsbX/CuWPsV/l07sLlcpOXk4hswEFemNReirReQulPrkK7WeJvWbN4EJkRravAWFZExcFBim5qmSbC0hOwRI/EUFO7zNZNxEU3uMhai93ruuWfx+/0ccshhPPjgMjLr90PdXSwYtArjrrQWn2+86k0IIUTrxGIx/vKXp4nH45x66g+48857cLnaPudOCCHaSwobIuG88y4kEAjwwx+eQcF+LowIIUR3snz5cgBWrlzJypUrmz3/xhtv0K9fv64Oq8ebOfMXuN0epky5tFW90xsueO/6z0d8/dc/k96vP4qqYcbjROvqsHu9KIrS6gtI3bF1SGvs2TZrz4v+pmFQt3MHtRU1+y0KNC4iVH2zga1vrkCPRlFtdgxdT1kbKLnLWIje6a67FvPHPz7JVVddi91uT3U4rWZ3u9GcTvRwCLXRLKgGe656E0IIsX92u51lyx7nlVf+yeWXXyltgIUQXU4KG72YYRj86U9/4OyzzyU93YeiKFxxxVWpDksIIdps8eLFLF68ONVh9HjRaJQ//ekPXHLJ5djtdmw2G9dfP71Nr6GoKr7igWgOJ1Ub1hMPBTF0HVXTcGZk4hswENVmb9UFpO7aOqQlDcWMqm82UPrFZ4QrKzCi0WZtsxraagV2bCUaCLWqrVZDEcHbpy++/sXSBkoI0WVqa2t44YV/MGXKZSiKgtfrbXNe6A5amgXVoC2r3lprfwVuIYToqXbu3MGHH77POeecB0BBQaFcRxJCpIwUNnqpYDDIL385h9dfX84HH7zLo4/+rskgWCGEEL1LRUUFM2dez2efrWLnzh3ccsvt7X6teChEuLKCYFkpaXn52O12jHicUEUFUb8fpy+DgoMP2e8FpJ7SOqShWFG+ZjU1G7/F0HXc+flkDhmKzelMtM0qOvIYdnz4nrUCpagvzpz8NrfVkjZQQoiusnnzJqZNu4YtWzZjGAaXXfazVIfUbnvOLXLnF2BLS+uUVW89fS6UEELszeefr2LGjOuprKwgMzOTE088JdUhCSF6OSls9EIlJbuZNu0a1q79Grvdzg9/+CMpagghRC+2fv06pk+/hp07d5Kens7JJ5/a7tcyDYPt77+D3ZuOU48TDwZQPF5Umw2b202orBRVU+l39HH7vYDUE1qHNMwACVdVEampRrHbcGVmEq2rpWLtV+SOHkvGoMHUbPqWdX//K7Y0N5mDh+Bw2IjF9Ha11ZI2UEKIzvbRRx8ya9Z0amtrKSzsw5FHHp3qkDqs8dyizlr11pvnQgkhDmwvv/wSt946j1gsxogRoxgzZlyqQxJCCCls9DZffvkFN9xwPWVlpWRlZfHgg49w8MGHpjosIYQQKfL2228yZ86NBINB+vcv5pFHfsOgQYPb/XoN7aMyBw1Cj/WjdstmIjXVxIJWOypPYR+cGZnY0lpehdFYV7cOaavGM0Dcefn4d2zD4U1HczjQHA4i1VXUbtlM3vgJ2D1eKtevo+DgQ7p9Wy0hRO/23HPPcvfdC4jH4xx00AQeeOAR8vLyUh1WUnTmqreeOhdKCCH2xTAMli17iN/+9lEAJk8+ibvvvhePx5PiyIQQQgobvcprr/2LX/5yDpFIhKFDh7F06WP069c/1WEJIYRIAdM0+dOf/sD99y/CMAwOO+xwlix5mMzMrA69buP2UXaPF2dGJjG/Hz0WQ7Pb0dLS8G/f1qr2UV3ZOqQ9Gs8A0SNRDF3HbrMOrRRFwe7xWkUdvx9F1TDicRRVa/G1uktbLSFE76XrOvfeu5BnnvkjAD/4weksWLAQp9OZ4siSq7NWvfWkuVBCCNEaoVCI+fNvYvnyfwNwxRVXccMNs6TjhxCi25DCRi8RDodZsmQRkUiEY4/9HosXL8HrTU91WEIIIVKktLSURx9dimEYnH32T5g//zbsdnuHX3fP9lGKouBI/y7fRP3+NrWP6orWIe3VuIhjGiaqZhUvNIcDANVmIxbU0WMxTENHtdkwDb3F1+oObbWEEL3b119/xbPPPgPAtGk3cPXV1ze7QC/2rqfMhRJCiNZ67723Wb7839jtdm69dQFnnXVOqkMSQogmpLDRS7hcLpYufZyXX36RG26Yhaa1fMeoEEKI3qGgoIB7732QjRu/ZcqUy5J28aoz2kd114HZjYs4dq+1OiVUUYFqt6MoCkY8jqppqDYbkepK0vv1J1rnx51nNnmd7tBWSwghxo4dx/z5t5Ge7uPUU09LdTg9Tk+YCyWEEG1x8snfZ+rUGRx22OEccshhqQ5HCCGakfVjB7Dy8nLeeeetxL+HDx/Bz38+R4oaQgjRS23atJFVqz5N/PuYY47jkksuT+oduQ3to5yZmdRs2kjU78fQdaJ+PzWbNra7fVRD65CsIUPx9umb8qIGfFfECZSUAOAbMBCby0Wkupp4JELUX4ctzU2ovBRXZhYjzjkfV1ZWUreLEEJ0xKpVn7Jp08bEv88993wparRT45xgmi0XsH0DBkoBWwjRrb311koqKysS/7722mlS1BBCdFty9nyAWr9+HRdeeA4zZ05tchFLCCFE7/TRRx9w8cU/Yfr0a9m6dUunvldD+6jsESOJ1tZQt20r0doaskeMZMS5F6S0fVQy7VnEUW12skeMwpGeTriiHCMex5mRSfaIUYw49wL6HX1sYruEa6oP2O0ihOgZ/vnPF/jZzy5h2rRrqKmpTnU4PV5nFfaFEKIrmKbJb37za6ZPv5aZM6cRjUZTHZIQQuyXtKI6AL311krmzLmRUCjEgAEDyc7OSXVIQgghUujZZ5/hnnvuRNd1JkyYiKeFFhnJ1l3bRyXbnjNA9GgUb98i8saNJ2/cBLKGDmvyuRu2i1FbQW1FzQG7XYQQ3ZdhGCxd+gBPPPE4YK3qttsdKY7qwNCd50IJIcTeRCIRfvWrm3nllX8CMHr0GBkQLoToEaSwcQAxTZM//OF3PPDAvZimyeGHH8mSJQ/j82WkOjQhhBApEI/Huffeu/nzn58G4PTTf8Rtt92F0+nskvdvaB91oGtrEUdRVdL7FqFl5nVxpEKI3i4YDHLzzbN5440VAFx11bVMmzZTLmAlUW8p7AshDgzl5eXMnHk9n3/+GZqmcfPNt3LeeRemOiwhhGgVKWwcIGKxGAsW3MoLL/wdgPPOu5C5c+djt9tTHJkQQohUqKurZfbsmbz//nsAzJhxI1deeW1S52mI7/SWIo4QoucqKdnNtGnXsHbt19jtdm6//W7OOOPMVId1QJKcIIToCdavX8e0aVeza9cu0tPTWbJkGUcccWSqwxJCiFaTwsYB4qWX/o8XXvg7qqoyZ87NXHTRFLl4JYQQvdgTTzzO+++/h9PpYuHCxZx88vdTHZIQQogUWrz4btau/Zrs7GweeujXTJhwcKpDEkIIkSKmafLLX85h165dFBcPYNmyxxk0aHCqwxJCiDaRwsYB4sc/PpfPPlvFKad8n2OP/V6qwxFCCJFi1103na1bt3DVVdcxevSYVIcjhBAixX75y18RiUSYN+8Wior6pTocIYQQKaQoCosWLeHhh5dw++13kZGRmeqQhBCizRTTNM1UB5Fq5eV1tHcruN0OgsFocgNqpf/977+MHj0Wl8uVkvdPtlRuywONbMvkkW3ZcXl56akOoc06khdS6aOPPmTSpMO7pFe6/G10jGy/jpNt2HGp2oa9MS+kYlubpsnHH3/IEUcc1aXv21Hyt902sr3aRrZX63XltuqNeQG6/vcxFouxatX/mDTp8C57z64if9vJIdsxeWRbdkxr84JMMOuh/vKXp7niiinMnz8XqU0JIUTvZhgGS5Ys5qqrLmXZsgdTHY4QQogUC4fD3HTTz7nqqsv4xz+eS3U4QgghUqy6uoqrr76cq6++jI8++jDV4QghRFJIK6oeJh6Ps2jRXTz77DMAuFxO4vG4DAkXQoheKhAIMG/eL3jzzTcA0DQbpmnKnCUhhOilysrKmDnzer744nNsNjndE0KI3m7jxm+ZNu0atm3bisfjIR6PpTokIYRICjnS7UHq6mqZNWsGH374AYqiMHPmL7j88ivl4pUQQvRSu3fvYurUa1i/fi0Oh4M77riHH/zg9FSHJYQQIkXWrVvLtGnXsHv3Lnw+H0uWLOPww49IdVhCCCFS5MMP32fWrBnU1dVRVFTEsmW/YejQYakOSwghkkIKGz3E1q1bmDbtGjZt2ojL5WLRovuZPPnkVIclhBAiRb744jNmzLieiopycnJyeeihRzjooImpDksIIUSKvPnmG9x0088JhUIMGDCQRx75DQMGDEx1WEIIIVLk2Wef4Z577kTXdSZOPJgHH3yE7OycVIclhBBJI4WNHkDXdaZOvZrNmzdRUFDIsmWPM3LkqFSHJYQQIkXq6mq59tqfUVdXx/DhI1i27HH69Omb6rCEEEKkyJYtm5k5cyqGYXDEEUdx//0P4fNlpDosIYQQKfLhh+9z1123A/CjH53Fr351Jw6HI8VRCSFEcklhowfQNI3bbruThx9+gPvue4i8vLxUhySEECKF0tN9/PKXt/Hvf7/CwoX34fV6Ux2SEEKIFBowYCDXXTeNiooK5sy5WebvCSFEL3fEEUdx1llnM3DgYK644ippYS6EOCAppmmaqQ4i1crL62jvVnC7HQSD0eQGhLVKY+PGbxk2bHjisQN9GGxnbcveSLZl8si27Li8vPRUh9BmHckLnSUcDlNSsrtJW5FU5QXTMDBqK6itqMHuduMpKERR1S6PoyeTfUvHyTbsuFRtw96YFzpjW1dVVRKLxcnPzwcOnHMF+dtuG9lebSPbq/W6clv1xrwAyd/G27ZtJSsrO3HT04GSF1pD/raTQ7Zj8si27JjW5gVZsdEN+f1+5s6dxX/+8zFPP/23RHGjtyQkIYQQTZWWlnLDDddRVlbGn//8fOIiViryQs3mTWx79y0CO7YSDYTQnE58AwbS/9jjyRg4qMvjEUKI3ujbbzcwbdo1pKf7+MMf/ozb7ZZzBSGE6MX++99PuPHGaRx00EQeeujXaJomeUEIccCT2yu7mZ07d3DppRfy9ttvous627ZtTXVIQgghUujrr7/iwgvPYfXqLwmHQ+zevTNlsdRs3sTa55+lct1aXBmZpBcPwJmRQeW6tax9/llqNm9KWWxCCNFbvPfeO/z0p+ezfft26urqqKgoT3VIQgghUuiFF/7O1VdfTnV1NeXlZfj9dakOSQghuoQUNrqRzz9fxYUXnsv69evIzc3jySefZvLkk1IdlhBCiBR5443lXHLJBZSWljBo0GD+/OfnGT9+QkpiMQ2Dbe++RaS6moxBg3F4vaiaht3jJWPQYCLV1Wx79y1Mw0hJfEII0Rv85S9PM3Xq1fj9fg4++FD+/Ofn6N+/ONVhCSGESAFd17n//kXccss8YrEYp576A5588hkyMjJTHZoQQnQJaUXVTbz88kv86lc3E41GGTFiFMuWPUZhYZ9UhyWEECIFTNPk97//DQ8+eD8ARx11NPfd9xDp6b6UxRQo2U3tls14CgqaLWtXFAV3fgG1WzYTKNmNt0/fFEUphBAHplgsxuLFd/Pss88AcNZZZ3PLLQtwOBwpjkwIIUQqBAIB5s6dxVtvrQTg2muncd1101Bl7p0QoheRwkY38NZbK5k37xcATJ58EnfffS8ejyfFUQkhhEiVZ575Y6KoceGFP2XOnJux2VKbsmPBIHokguZKa/F5W1oaofIyYsFgF0cmhBAHvnvvXcizzz6DoijMnPkLLr/8SumdLoQQvdgvfnED7733Dg6HgzvuuIcf/OD0VIckhBBdTgob3cDRRx/LEUccxejRY7jhhllSYRdCiF7uzDN/zP/93/P85CcXcMEFF6c6HADsbjea04keDqF6vM2ej4dCaA4Hdrc7BdEJIcSB7bLLfsZ7773D7NnzOOGEE1MdjhBCiBS7/voZbN68kUWLlqSsVa0QQqSaFDZSpLy8nMzMTGw2G3a7nV//+rfY7fZUhyWEECJFSkpKyM/PR1EU0tN9PPvsP7pVXvAUFOIbMJDKdWvJGNR0VaFpmgRLS8geMRJPQWGKIhRCiANLSUkJBQUFAPTtW8SLL/6rW+UFIYQQXatxXhg3bjwvvfSa5AUhRK8mSwNSYM2a1Zx33lksXnx34jFJRkII0Xu9++7bnHnm93n66acSj3W3vKCoKv2PPR5nZiY1mzYS9fsxdJ2o30/Npo24MjPpf+zxKLLqUAghOuzvf/8bp502mZUrVyQe6255QQghRNcwDINlyx7i9NNPZvXqLxOPS14QQvR2cvWhiy1f/i8uvfQiyspK+eSTj/D761IdkhBCiBQxTZM//ekPTJt2DYFAgLfffhNd11Md1l5lDBzEyHMvIHvESMI11dRt20q0tobsESMZce4FZAwclOoQhRCiR9N1ncWL7+a22+YTi8V46603Ux2SEEKIFAqFQsyefSOPP/4I4XCYjz56P9UhCSFEtyGtqLqIaZr89rePsnTpg4A1V+Peex/A601PbWBCCCFSIhaLcffdC3j++b8C8OMfn8stt9yOpmkpjmzfMgYOwlc8AKO2gtqKGuxuN56CQlmpIYQQHeT313HTTbN45523ALjuuulcd9201AYlhBAiZUpLS5kx41rWrFmN3W7n1lsXcNZZ56Q6LCGE6DaksNEFIpEIv/rVzbzyyj8BuPjiS/jFL+Zis8nmF0KI3qimpppZs27g448/RFEUfv7zOVx66RUoipLq0FpFUVXS+xahZealOhQhhDgg7NixnenTr2XDhvU4nU7uvHMR3//+D1IdlhBCiBT56qs1TJ9+LaWlJWRmZvLAA8s49NBJqQ5LCCG6Fbmy3slM02TGjGv54IP30TSNm2++lfPOuzDVYQkhhEiRaDTKJZdcyMaN3+J2u1m0aAnHHz851WEJIYRIkfLyci666FwqKyvJzc3j4Yd/zbhxB6U6LCGEECmybt1aLr30QsLhMIMHD2HZssfp37841WEJIUS3I30jOpmiKFx44RQyMzN57LHfS1FDCCF6OYfDwXnnXUifPn3405/+KkUNIYTo5XJzc/n+93/AiBGjePbZv0tRQwghuoDf72fy5MnMnTs31aE0M3ToMA4//EiOPvoYnn76r1LUEEKIvZAVG53E7/fj9XoBOP74yfzrX2/IPA0hhOjFGueFiy6awpln/ljyghBC9FKGYRAKhfB4PADMnn0z0WgUt9ud4siEEKJ3WLhwITt27Eh1GAnRaBSwboLSNI3Fix/A4XBIC3MhhNiHA2LFRneqtJumyVNP/Z4zzjiVHTu2Jx6Xi1dCCNE7xeNx7rnnTi666Fzq6moBazWf5AUhhOg63el8IRgM8otf3MCMGdcRi8UAsNlsUtQQQogu8vbbb/Ovf/2L9PTucTxeUVHBlVdewoIFt2CaJgBut1uKGkIIsR8HRGGju1TaY7EYt902n/vuu4fy8jJeffWfqQ5JCCFECtXV1TJ9+rU888wf2bRpI++9926qQxJCiF6pu5wvlJSUcNllF7FixWusWvUpa9Z8meqQhBCiV6mpqWH+/PnMnj0bn8+X6nDYsGE9F198LqtW/Y+VK19vcoOsEEKIfevxhY3uUmmvrq7immuu4B//eA5VVZkz52auvPLalMYkhBAidbZv38aUKRfw3nvv4HS6uP/+hzjttB+mOiwhhOh1usv5wurVX3Lhhefw9ddfkZWVxRNPPMWECQenNCYhhOht7rjjDoYMGcIFF1yQ6lB4882VTJlyPjt27KB//2Kefvpv9OvXP9VhCSFEj9Gj17U1rrT/9re/TVkcGzd+y7Rp17Bt21Y8Hg+LFz/Acccdn7J4hBBCpNb//vdfZs6cSlVVFXl5+Tz88KOMHTsu1WEJIUSv013OF/71r1eZNevnRCJhhg4dxtKlj8nFKyGESJJgMMiLL7641+fz8/M58cQTWbFiBW+88QYvv/wyiqJ0YYRNmabJn/70B5YsWYyu6xx22OEsWfIwmZlZKYtJCCF6oh5d2GhcaU/Vicrq1av56U8vpK6ujqKiIpYufZxhw4anJBYhhBCp99ZbK/n5z6cTi8UYNWo0S5c+TkFBQarDEkKIXqk7nC88++wz3H33AkzT5JhjjuPeex+QOUtCCJFEtbW13HbbbXt9ftKkSUycOJFbb72VOXPmUFRU1OH3TEtztPt7Fy68i9/97gkUBc4//wJuv/0O7HZ7h2Pqzex2Dbe7/T8TYZHtmDyyLbtGtyts9LRK+5AhQyguHoDdbufBB39NTk5OymIRQgiRemPGjCMnJ5exY8dx112LZRisEEIkWU87Xzj00El4vR7OPPMcZs26SYbBCiFEkhUWFrJu3bp9fs2MGTMYOnQo5557LvF4PPG4aZrE43E0TWtTrgiFotTP+W6zww8/mqee+gOzZ8/hggsuIRYzicWi7XsxAYDb7SAYlG3YUbIdk0e2Zcd4PM5WfV23O6ruCZX2xknPbtd48smn8Hq9OJ2t2+iiZVLNTB7Zlskj21K0RiwWS9xllZeXx9NP/428vDxUtcePshJCiG6nJ5wvNM4L48ePYcWKN8jLk9V7rSHHXm0j26ttZHu13oG2rV577TUAxo4d2+TxHTt28MILL/DHP/6Rww8/vNPev3FeOOKIo3j11dcZPHiAXPgUQogO6HaFje5eaa+rq2X27JmMHz+R66+fjtvtIC0tHV1HElIHSTUzeWRbJo9sy45rbaW9p9q9exfTp1/LJZdcwRlnnAkgraeEEKITdffzhfXr1zFz5lRuv/0uDjvMukiWl1cgxxOtJMdebSPbq21ke7VeV26rrjhfeP7555s9dt111zF27FimTp3KoEGDOu29P/roA26//RYeffQJBg603qewsE+nvZ8QQvQWimm2d/Fc6owYMWKfz7e10l5eXteqE5WtW7cwffq1bNz4LWlpabz88goGDuwnB0ZJIgeZySPbMnlkW3ZcXl7P6yPe2rzw5ZefM2PG9ZSXl1FY2IeXX17ea1bvyd9Gx8j26zjZhh2Xqm3YFXkhVecLb721kptu+jnBYJCDDprAn/70VxRFkd/XNpBt1TayvdpGtlfrdeW2StX5wuTJk5k0aRL33HNPm7+3tXnhr3/9MwsX3oGu65x++o9YuPC+xHPy+5g8si2TQ7Zj8si27JjW5oVut2KjNVJRaf/vfz/hxhunUV1dTX5+AcuWPU5+fn7S30cIIUTP8O9/v8r8+TcRiUQYPnwES5c+1muKGkII0d119fmCaZo89dTvWbJkMaZpcvjhR7JkycMpne0hhBAideLxOPfdt5BnnvkTAKef/iNuu+2uFEclhBAHlh5Z2Bg3blyzxxwOB5mZmS0+11EvvPB3Fiy4lVgsxpgxY3n44cekqCGEEL2UaZo8+ugyHn10KQDf+94J3HPP/Xi93hRHJoQQokFXni/EYjHuuONX/N//WcWUn/zkAubNuyXRS10IIUT3tHLlyk55XauF+Y28//67AMyYcSNXXnmtFLuFECLJemRhoys9/PASfvvbxwA49dQfcMcdC0lLS0txVEIIIVLBMAzmzp3Fv/71CgCXXnoFN944G03TUhyZEEKIVAgEAkybdg3//e8nqKrK7NnzuPjiS+TilRBC9FKlpaVcffVlfPvtNzidLhYuXMzJJ38/1WEJIcQB6YApbHRWpb24eAAA1103nWuvnYqqqp3yPkIIIbo/VVXp338ANpuNW265nbPP/kmqQxJCCNFKnXG+4Ha7ycvLw+PxcO+9D3Lssd9L+nsIIYToOTIzM/H5MsjPL2Dp0scYPXpMqkMSQogD1gFT2Egm0zQTd1mdddY5jBo1hhEjRqY4KiGEEKnSOC9MnTqDU089jeHD9z2YVgghxIGrIS8oisIdd9zDzp07GDRocKrDEkIIkSINecHhcPDgg8uIx3VpYS6EEJ1Mlh/s4fPPV/HTn55HRUVF4jEpagghRO+1cuXrXHXVZYTDYcBatSFFDSGE6L3+8penmT37RgzDAMDpdEpRQwgheinDMFiyZDFLlixOPJadnSNFDSGE6AJS2Gjk1Vdf5oorpvDFF5/z8MNLUh2OEEKIFDJNk9///rfMnDmVjz/+kGeeeSrVIQkhhEiheDzOXXfdzt13L+C1117l9ddfS3VIQgghUigQCDBz5lSefPIJ/vCH3/HVV2tSHZIQQvQq0ooKq8L+yCNLefzxRwA4/vjJzJlzc4qjEkIIkSrRaIwFC27hhRf+AcAFF1zMJZdckeKohBBCpEpdXR0///l0PvzwAxRF4YYbZskwWCGE6MVKSkq47rqrWL9+LQ6Hg9tvv1vmaQghRBeTwgYwf/48Xnrp/wC4/PIrueGGWWialuKohBBCpMr06dfy/vvvoqoqc+fO58ILf5rqkIQQQqTQlVdeypo1q3G5XCxadD+TJ5+c6pCEEEKk0BVXTGHLls1kZ+fw8MO/5qCDJqY6JCGE6HWksAGsXLkCu93Orbcu4Kyzzkl1OEIIIVLs889X4fV6ue++hzj66GNTHY4QQogU27JlMwUFhSxd+hijRo1OdThCCCFSrKKinOHDR7B06WP07VuU6nCEEKJXksIG0LdvX2655XYmTjykXd+vKEkOqBeTbZk8si2TR7Zl7zNs2HAWLLiLQYOGpDqUbk3+NjpGtl/HyTbsONmGrXPIIYdy2213kZeX1+7XkG3derKt2ka2V9vI9mo92VZ7d9JJpzB37i14vZ4OvY5s4+SRbZkcsh2TR7Zl51NM0zRTHYQQQgghhBBCCCGEEEIIIURrqKkOQAghhBBCCCGEEEIIIYQQorWksCGEEEIIIYQQQgghhBBCiB5DChtCCCGEEEIIIYQQQgghhOgxpLAhhBBCCCGEEEIIIYQQQogeQwobQgghhBBCCCGEEEIIIYToMaSwIYQQQgghhBBCCCGEEEKIHkMKG0IIIYQQQgghhBBCCCGE6DGksCGEEEIIIYQQQgghhBBCiB5DChtJ5vf7mTx5MnPnzk11KD2S3+9n0aJFnHTSSUyYMIEzzjiDZ555BsMwUh1aj/Dee+9xzjnncNBBBzF58mR+97vfYZpmqsPqcQzD4C9/+QtnnHEGEydO5MQTT+Tuu+/G7/enOjQhuhXZZ7ed7Kc7RvbPyTVt2jQmT56c6jB6JTln2D/JMfsm+aR1JG90jOSJrif5of0kb7Sf5JTkkJzT9WypDuBAs3DhQnbs2JHqMHok0zSZOXMmX375JTNmzGDw4MF8+OGH3HnnnVRXVzN16tRUh9itffbZZ1x77bWcdtpp3HDDDXz66afce++96LrO1VdfnerwepQnnniCBx98kJ/97GcceeSRbNq0iYcffpgNGzbw+9//HkVRUh2iECkn++y2k/10x8n+OXlefPFFVqxYQVFRUapD6ZXknGHfJMfsm+ST1pO80X6SJ1JD8kP7SN5oP8kpySM5JwVMkTRvvfWWOXHiRPOQQw4xb7rpplSH0+OsXr3aHD58uPnqq682efzWW281J0yYYBqGkaLIeoYrrrjCPPfcc5s8tnjxYnPixIlmKBRKUVQ9j67r5qGHHmredtttTR5/5ZVXzOHDh5tffPFFiiITonuRfXbbyX66Y2T/nDy7d+82DzvsMPO4444zTzjhhFSH0+vIOcP+SY7ZN8knrSN5o/0kT6SG5If2k7zRfpJTkkNyTmpIK6okqampYf78+cyePRufz5fqcHqs888/nyOPPLLJY4MHDyYYDFJRUZGiqLq/aDTKxx9/zMknn9zk8VNPPZVAIMCnn36aosh6Hr/fz5lnnsnpp5/e5PHBgwcDsG3btlSEJUS3JPvs1pP9dMfJ/jl55s+fz9FHH93s71d0PjlnaD3JMS2TfNJ6kjfaT/JE15P80HGSN9pOckrySM5JDSlsJMkdd9zBkCFDuOCCC1IdSo81ZswYFixYQGZmZpPHX3/9dbKzs8nOzk5NYD3Atm3biMViDBw4sMnjAwYMAGDTpk0piKpn8vl8zJ8/n0MOOaTJ46+//joAQ4cOTUVYQnQ7ss9uG9lPd5zsn5PjueeeY82aNdxyyy2pDqVXknOG1pEcs3eST1pP8kb7SJ5IDckPHSN5o30kpySP5JzUkBkb+xAMBnnxxRf3+nx+fj4nnngiK1as4I033uDll1+Wfml70dptuaennnqKTz75hLlz56KqUofbm7q6OgC8Xm+Txz0eD4AMKuqgzz//nN/85jeccMIJDB8+PNXhCNHpZJ+dfLKf7hyyf26bHTt2sHDhQhYuXCgn+Ekk5wxtIzmmYySfdIzkjX2TPJFckh+SQ/JG55Gc0rkk53Q+KWzsQ21tLbfddtten580aRITJ07k1ltvZc6cOTJUax9asy33TERPP/00Cxcu5LTTTuOyyy7r3AB7OMMw9vm8JPH2+/TTT7n22mvp168fCxcuTHU4QnQJ2Wcnn+ynk0/2z21jmiY333wz3/ve9zj11FNTHc4BRc4Z2kZyTMdIPmk/yRv7Jnki+SQ/JIfkjc4jOaXzSM7pGlLY2IfCwkLWrVu3z6+ZMWMGQ4cO5dxzzyUejyceN02TeDyOpmlScad127KBYRgsXryYJ598ktNPP51FixbJNtyP9PR0AAKBQJPHG6rre1bfReu8+uqrzJ07l4EDB/LEE0+QlZWV6pCE6BKyz04+2U8nl+yf2+6ZZ55h3bp1/POf/0wcs5qmCUA8HkdVVTl5bSc5Z2gbyTEdI/mkfSRv7J/kieST/JAckjc6j+SUziE5p+tIYaODXnvtNQDGjh3b5PEdO3bwwgsv8Mc//pHDDz88FaH1SNFolFmzZrF8+XKuuOIK5syZI0moFYqLi9E0jS1btjR5fOvWrQAMGTIkFWH1aL/73e+49957mTRpEo888kgi4QshviP77NaT/XTyyP65fV577TWqqqo45phjmj03ZswYpk2bxvTp01MQWe8g5wxtJzmmZZJP2k7yRutInkgNyQ/JI3mj7SSnJJ/knK4lhY0Oev7555s9dt111zF27FimTp3KoEGDUhBVzzVv3jxWrFjBvHnzZLlgGzidTg499FBWrFjBz372s0Tyfu2110hPT2f8+PEpjrBnefbZZ1m8eDE/+MEPWLRoEQ6HI9UhCdEtyT679WQ/nRyyf26/22+/vdndeI888girV6/m0UcfJT8/P0WR9Q5yztB2kmNaJvmkbSRvtJ7kidSQ/JA8kjfaTnJKcknO6XpS2OigcePGNXvM4XCQmZnZ4nNi715//XVefvllJk+ezIQJE/jss8+aPD969GjZKezDddddx+WXX84NN9zAOeecw6pVq/jd737HrFmzSEtLS3V4PUZZWRkLFy6kqKiIiy++mK+++qrJ88XFxTJITwhkn90esp/uGNk/d8zgwYObPZaZmYnD4ZBj1i4g5wxtIzlm3ySftI7kjbaRPJEakh+SQ/JG+0lOSQ7JOakhhQ3RbSxfvhyAlStXsnLlymbPv/HGG/Tr16+rw+oxjjzySJYuXcrDDz/M1KlTKSgoYM6cOVxxxRWpDq1HefvttwmHw+zYsYOLL7642fMLFy7k7LPPTkFkQnQvss9uO9lPd4zsn4XoPSTH7Jvkk9aRvCFE7yF5o/0kpySH5JzUUMyGaVBCCCGEEEIIIYQQQgghhBDdnJrqAIQQQgghhBBCCCGEEEIIIVpLChtCCCGEEEIIIYQQQgghhOgxpLAhhBBCCCGEEEIIIYQQQogeQwobQgghhBBCCCGEEEIIIYToMaSwIYQQQgghhBBCCCGEEEKIHkMKG0IIIYQQQgghhBBCCCGE6DGksCGEEEIIIYQQQgghhBBCiB5DChtCCABM0zyg3kcIIUTHSF4QQgjRmOQFIYQQDSQniO5AChvigGGaJh9++CHz5s3jjDPO4LDDDmP8+PEcf/zxzJgxg5dffhld11MdZqd77rnnGDFiBHPnzm3V12/atIkrr7ySrVu3dmpcJSUl/OIXv+Cjjz5q8viUKVMYMWIEH3zwQae+vxCi95G8YJG8IIQQFskLFskLQgghOaGB5ATRk9lSHYAQybB9+3ZuvPFGvvjiCwCGDBnCoYceit1uZ9u2bSxfvpzXXnuN3/72tzz22GP06dMnxRF3H1deeSXbt2/v9PeZPXs2H3/8MWeffXanv5cQQkheaD/JC0KIA5HkhfaTvCCEONBITmg/yQmiO5HChujxSkpKuOiiiygpKeGYY45h3rx5DB06tMnXbN++nTvvvJM333yTqVOn8re//Q2bTX79QZYPCiEOPJIXOkbyghDiQCN5oWMkLwghDiSSEzpGcoLoTqQVlejxbrvtNkpKSjj55JP5zW9+0ywhAfTr149HHnmEMWPGsGbNGpYvX56CSIUQQnQFyQtCCCEak7wghBCigeQEIQ4cUtgQPdrWrVtZuXIlbrebBQsWoGnaXr9W0zRmzpzJ+eefT2FhYeLxjz/+mBEjRnDXXXfxpz/9iaOOOoqDDjqIiy66CMMwAAiHwzz66KOcccYZjB8/noMPPpiLLrqIl156qdn7LF26lBEjRvDAAw80e2779u2MGDGC4447rsnjI0aM4Mwzz6Suro67776b448/nrFjx3LSSSfx4IMPEgqFmr1WXV0dS5Ys4eSTT2b8+PH88Ic/5Lnnnmv1tmv43Dt27ADglFNOYcSIEYklhZMnT+bQQw9l/fr1nH322YwdO5YTTjiB//73v236jA3//uSTTwC4/PLLGTFiBB9//HGT7zMMgz/+8Y+cfvrpjBs3LnHnRGlpaas/kxBCSF6QvCCEEI1JXpC8IIQQDSQnSE4QBxZZRyV6tH/+858AnHDCCWRnZ+/364877rhmCaHBO++8w5YtW5g0aRKKotC3b19UVaWqqopLLrmE9evXk5mZybHHHks4HOaTTz7h008/5f333+eee+5BUZQOfZZQKMTFF1/M1q1bmTBhAsOGDePDDz/k0UcfZe3atTz22GOJr62pqWHKlCmsW7eOgoICjj/+eHbs2MH8+fNbvNugJbm5uZxxxhm88cYbBINBTjzxRNxuN263O/E1sViMq6++GpvNxve+9z2+/vprRo4cyYcfftjqz+V2uznjjDP44IMPqKio4MgjjyQ3N5fc3NwmX3fXXXexceNGJk6cyNFHH82qVav4xz/+wSeffMJLL72Ex+Np9XsKIXovyQuSF4QQojHJC5IXhBCigeQEyQniwCKFDdGjffnllwAcfvjhHX6tzZs3M3v2bK688kqARKX91ltvZf369UyePJn77rsvsXPcsmULP/vZz3jhhRcYO3YsU6ZM6dD7b9myhWHDhvHKK69QVFQEwJo1azj//PN588032bBhA8OGDQPg4YcfZt26dZx44ok88MADOJ1OAJ577jnmz5/fqvcbMmQI9913H5MnTyYYDHLTTTcxYMCAJl8TDofJzs7m2WefxeFwYBgGqtq2hV7Z2dncd999TJkyhYqKCq6++mqOOuqoZl+3c+dOnnrqKY444ggAKisrOeuss9i+fTvLly/nxz/+cZveVwjRO0lekLwghBCNSV6QvCCEEA0kJ0hOEAcWKWyIHm3Xrl0AFBQUtPj83XffTWVlZbPHs7Ozufnmm5s8pmkaF110UeLfqqqyY8cOli9fTnp6Ovfee2+Tiu+AAQO4++67mTJlCk888USHkxLAjTfemEhIAGPGjOHggw/m448/TiSlaDTKP/7xD+x2O3feeWciIQH85Cc/4Y033uDNN9/scCwN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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 41 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "fee7afdd60d78883" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/TwoMoons_Diagnostics.ipynb b/examples/TwoMoons_Diagnostics.ipynb index 43abbdaa4..c3aeb3e04 100644 --- a/examples/TwoMoons_Diagnostics.ipynb +++ b/examples/TwoMoons_Diagnostics.ipynb @@ -1,13 +1,19 @@ { "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": "TwoMoons Diagnostics", + "id": "33598ea529988920" + }, { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2024-10-14T21:00:47.608845Z", - "start_time": "2024-10-14T21:00:47.596803Z" + "end_time": "2024-10-20T14:56:48.800425Z", + "start_time": "2024-10-20T14:56:03.774871Z" } }, "source": [ @@ -32,13 +38,13 @@ "from bayesflow.diagnostics.plot_recovery import plot_recovery" ], "outputs": [], - "execution_count": 29 + "execution_count": 1 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:27:46.593978Z", - "start_time": "2024-10-14T20:27:46.585246Z" + "end_time": "2024-10-18T20:35:41.543711Z", + "start_time": "2024-10-18T20:35:41.533024Z" } }, "cell_type": "code", @@ -62,26 +68,26 @@ ], "id": "2aa9c9710a36b980", "outputs": [], - "execution_count": 2 + "execution_count": 3 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:27:47.665818Z", - "start_time": "2024-10-14T20:27:47.650596Z" + "end_time": "2024-10-18T20:36:14.245177Z", + "start_time": "2024-10-18T20:36:13.012180Z" } }, "cell_type": "code", "source": "simulator = bf.simulators.CompositeLambdaSimulator([alpha_prior, r_prior, theta_prior, forward_model])", "id": "7db949c6bfecc86d", "outputs": [], - "execution_count": 3 + "execution_count": 6 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:27:48.154339Z", - "start_time": "2024-10-14T20:27:48.131066Z" + "end_time": "2024-10-18T20:36:16.748867Z", + "start_time": "2024-10-18T20:36:15.701865Z" } }, "cell_type": "code", @@ -91,13 +97,13 @@ ], "id": "b3a0fe5293beec1b", "outputs": [], - "execution_count": 4 + "execution_count": 7 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:27:48.809696Z", - "start_time": "2024-10-14T20:27:48.792150Z" + "end_time": "2024-10-18T20:36:18.513991Z", + "start_time": "2024-10-18T20:36:17.139756Z" } }, "cell_type": "code", @@ -124,13 +130,13 @@ ] } ], - "execution_count": 5 + "execution_count": 8 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:27:50.913110Z", - "start_time": "2024-10-14T20:27:50.887083Z" + "end_time": "2024-10-18T20:36:19.705829Z", + "start_time": "2024-10-18T20:36:19.677479Z" } }, "cell_type": "code", @@ -140,532 +146,532 @@ { "data": { "text/plain": [ - "{'alpha': array([[-0.32667086],\n", - " [ 0.4273289 ],\n", - " [-1.4049091 ],\n", - " [ 0.6495664 ],\n", - " [-1.2431567 ],\n", - " [ 0.00233715],\n", - " [ 0.8480671 ],\n", - " [ 0.3825317 ],\n", - " [ 0.51094717],\n", - " [-1.089614 ],\n", - " [-1.3354424 ],\n", - " [ 1.521167 ],\n", - " [-0.39602077],\n", - " [ 0.88564837],\n", - " [ 0.9123921 ],\n", - " [-0.8354839 ],\n", - " [ 0.4103786 ],\n", - " [-1.3677335 ],\n", - " [ 1.5597553 ],\n", - " [ 0.857706 ],\n", - " [ 1.3851596 ],\n", - " [ 0.08588123],\n", - " [-1.3278203 ],\n", - " [-1.4882586 ],\n", - " [-0.7284002 ],\n", - " [ 0.13790596],\n", - " [ 1.0051142 ],\n", - " [-1.2707354 ],\n", - " [-1.4755409 ],\n", - " [-0.03580285],\n", - " [-1.5595189 ],\n", - " [-0.67198914],\n", - " [-1.5414019 ],\n", - " [ 0.46680772],\n", - " [-0.49131817],\n", - " [ 1.3081697 ],\n", - " [ 1.3158842 ],\n", - " [ 0.5498999 ],\n", - " [ 0.28842863],\n", - " [ 1.5669599 ],\n", - " [ 1.1178267 ],\n", - " [-1.3773671 ],\n", - " [ 0.21009572],\n", - " [ 1.247244 ],\n", - " [-0.70116574],\n", - " [-1.3302704 ],\n", - " [-1.2457173 ],\n", - " [ 1.5158378 ],\n", - " [ 0.4760814 ],\n", - " [ 0.5130099 ],\n", - " [ 0.38356388],\n", - " [ 0.51667935],\n", - " [-1.3263792 ],\n", - " [ 1.1610556 ],\n", - " [-1.0892584 ],\n", - " [ 1.5635314 ],\n", - " [ 0.6141801 ],\n", - " [ 0.7341371 ],\n", - " [ 0.23875016],\n", - " [ 0.6227148 ],\n", - " [-0.4782562 ],\n", - " [ 0.3656121 ],\n", - " [ 0.6328574 ],\n", - " [-1.3631004 ],\n", - " [ 1.4811654 ],\n", - " [-1.373762 ],\n", - " [-0.24200128],\n", - " [ 0.00168619],\n", - " [ 1.0400674 ],\n", - " [ 0.18901351],\n", - " [ 0.9238482 ],\n", - " [ 0.02520916],\n", - " [ 1.4398099 ],\n", - " [-0.51892877],\n", - " [-1.1703858 ],\n", - " [-0.12021437],\n", - " [ 0.80984557],\n", - " [-0.9726958 ],\n", - " [-0.2244538 ],\n", - " [ 0.30686495],\n", - " [ 0.59431726],\n", - " [-1.322811 ],\n", - " [ 0.8136638 ],\n", - " [-1.5020558 ],\n", - " [-1.4799207 ],\n", - " [-1.3136892 ],\n", - " [ 0.06446969],\n", - " [ 1.3328581 ],\n", - " [ 0.66848814],\n", - " [ 0.7860198 ],\n", - " [ 1.315634 ],\n", - " [-0.23607427],\n", - " [-0.8002341 ],\n", - " [ 1.5251296 ],\n", - " [ 0.15763855],\n", - " [-1.5531527 ],\n", - " [ 0.56706136],\n", - " [ 1.047334 ],\n", - " [ 0.89252347],\n", - " [ 1.2277393 ],\n", - " [ 0.8999341 ],\n", - " [ 1.0635433 ],\n", - " [ 0.04854681],\n", - " [ 0.84339076],\n", - " [ 0.42572305],\n", - " [-0.13823606],\n", - " [ 0.36718416],\n", - " [-1.1577339 ],\n", - " [-0.5522179 ],\n", - " [ 0.7911456 ],\n", - " [ 0.8179233 ],\n", - " [-0.62356246],\n", - " [-0.33656436],\n", - " [ 0.17404567],\n", - " [ 0.4389914 ],\n", - " [-0.9474675 ],\n", - " [-1.1168886 ],\n", - " [-0.09231075],\n", - " [ 1.0462689 ],\n", - " [-0.90480804],\n", - " [-1.4208354 ],\n", - " [-0.16266003],\n", - " [ 0.58943385],\n", - " [ 0.9045791 ],\n", - " [ 0.42233914],\n", - " [-0.9887428 ],\n", - " [ 1.3377244 ],\n", - " [ 1.3765699 ]], dtype=float32),\n", - " 'r': array([[0.08992655],\n", - " [0.11262761],\n", - " [0.09988438],\n", - " [0.10757513],\n", - " [0.09842595],\n", - " [0.08780682],\n", - " [0.09458143],\n", - " [0.08305464],\n", - " [0.10684904],\n", - " [0.09243193],\n", - " [0.09636895],\n", - " [0.10226896],\n", - " [0.10459247],\n", - " [0.10921837],\n", - " [0.11026573],\n", - " [0.08566567],\n", - " [0.08520468],\n", - " [0.09628233],\n", - " [0.09432837],\n", - " [0.09125222],\n", - " [0.09802835],\n", - " [0.08590778],\n", - " [0.10220997],\n", - " [0.09208615],\n", - " [0.09563595],\n", - " [0.11774731],\n", - " [0.08680242],\n", - " [0.11012331],\n", - " [0.09633071],\n", - " [0.09756536],\n", - " [0.12378401],\n", - " [0.11334178],\n", - " [0.09062148],\n", - " [0.10854411],\n", - " [0.09699341],\n", - " [0.09652205],\n", - " [0.10683485],\n", - " [0.10969307],\n", - " [0.1108022 ],\n", - " [0.10317604],\n", - " [0.07496227],\n", - " [0.09012368],\n", - " [0.09105562],\n", - " [0.08200298],\n", - " [0.0828375 ],\n", - " [0.10398124],\n", - " [0.1007928 ],\n", - " [0.10111594],\n", - " [0.10167468],\n", - " [0.08223265],\n", - " [0.09048541],\n", - " [0.09253196],\n", - " [0.11334959],\n", - " [0.10842754],\n", - " [0.09764497],\n", - " [0.08462145],\n", - " [0.11413962],\n", - " [0.11527291],\n", - " [0.10542885],\n", - " [0.09038962],\n", - " [0.10374972],\n", - " [0.10187822],\n", - " [0.10547098],\n", - " [0.0985254 ],\n", - " [0.11656975],\n", - " [0.10378908],\n", - " [0.09430881],\n", - " [0.10135388],\n", - " [0.09672231],\n", - " [0.10255771],\n", - " [0.09387974],\n", - " [0.09308615],\n", - " [0.09995835],\n", - " [0.10125452],\n", - " [0.08677949],\n", - " [0.10938775],\n", - " [0.08700917],\n", - " [0.10388696],\n", - " [0.10093628],\n", - " [0.08200264],\n", - " [0.10838373],\n", - " [0.11670296],\n", - " [0.0975048 ],\n", - " [0.10851161],\n", - " [0.11573117],\n", - " [0.08443198],\n", - " [0.11458082],\n", - " [0.09952442],\n", - " [0.09616404],\n", - " [0.10941261],\n", - " [0.10953938],\n", - " [0.10442203],\n", - " [0.10339843],\n", - " [0.11485437],\n", - " [0.10533367],\n", - " [0.09481129],\n", - " [0.09040346],\n", - " [0.10173973],\n", - " [0.10177024],\n", - " [0.11780889],\n", - " [0.09570873],\n", - " [0.11882972],\n", - " [0.08545157],\n", - " [0.09944647],\n", - " [0.08443879],\n", - " [0.08220201],\n", - " [0.1000874 ],\n", - " [0.09128848],\n", - " [0.08286219],\n", - " [0.09595444],\n", - " [0.0979057 ],\n", - " [0.10283633],\n", - " [0.09927638],\n", - " [0.08226943],\n", - " [0.08991795],\n", - " [0.08759429],\n", - " [0.09739396],\n", - " [0.09011568],\n", - " [0.1022917 ],\n", - " [0.10698826],\n", - " [0.09153012],\n", - " [0.11289136],\n", - " [0.09984156],\n", - " [0.09630046],\n", - " [0.09598115],\n", - " [0.09263593],\n", - " [0.11081006],\n", - " [0.10720474]], dtype=float32),\n", - " 'theta': array([[-3.05581540e-02, 1.45420015e-01],\n", - " [ 2.11661726e-01, -8.16319406e-01],\n", - " [-2.41767168e-01, -8.90369564e-02],\n", - " [-9.58784044e-01, -6.43721148e-02],\n", - " [-8.37376893e-01, -3.60958546e-01],\n", - " [-5.58282018e-01, 9.12082434e-01],\n", - " [ 4.27646607e-01, 8.86675537e-01],\n", - " [ 1.40667871e-01, -2.22100895e-02],\n", - " [ 1.42964154e-01, -7.41437301e-02],\n", - " [-2.23557115e-01, 6.94955945e-01],\n", - " [ 1.82445496e-01, -8.65079284e-01],\n", - " [ 4.57260549e-01, -5.30316174e-01],\n", - " [-6.21315300e-01, 2.07263768e-01],\n", - " [ 6.10240161e-01, -8.74304950e-01],\n", - " [-2.59324551e-01, 4.74186003e-01],\n", - " [-3.78903113e-02, 9.00502682e-01],\n", - " [ 6.82602823e-01, -7.56820023e-01],\n", - " [ 5.94463050e-01, -1.21822745e-01],\n", - " [ 8.27706277e-01, 3.59144360e-01],\n", - " [-7.00999856e-01, 4.03989136e-01],\n", - " [-4.31024581e-01, -7.00606406e-01],\n", - " [ 9.86329079e-01, -8.04728150e-01],\n", - " [-5.38084447e-01, 3.05770040e-01],\n", - " [ 6.28210962e-01, 3.67884368e-01],\n", - " [ 1.20291792e-01, 5.00622094e-01],\n", - " [-7.59945214e-01, 4.06511813e-01],\n", - " [ 9.54336047e-01, -4.55123216e-01],\n", - " [-4.13251549e-01, 5.47428668e-01],\n", - " [-9.78350341e-01, 4.92099434e-01],\n", - " [ 6.58699691e-01, -5.58192194e-01],\n", - " [ 3.67015302e-01, 3.97362381e-01],\n", - " [-8.03872824e-01, -5.61456561e-01],\n", - " [-7.27509439e-01, -2.47731626e-01],\n", - " [-2.85620838e-01, -4.79526430e-01],\n", - " [-1.94825262e-01, -2.55926311e-01],\n", - " [ 1.67872280e-01, -9.53495979e-01],\n", - " [-1.38880566e-01, -6.23547696e-02],\n", - " [ 8.53347182e-01, -2.39163131e-01],\n", - " [ 6.25432789e-01, -7.36523867e-01],\n", - " [ 7.81854391e-01, 2.92491883e-01],\n", - " [-8.66746664e-01, -8.48121166e-01],\n", - " [-1.03085585e-01, -3.94162923e-01],\n", - " [-7.86425531e-01, 8.93066466e-01],\n", - " [ 4.55110759e-01, -3.10456127e-01],\n", - " [ 8.81353259e-01, 5.10756969e-01],\n", - " [-7.21052825e-01, -2.99451917e-01],\n", - " [-7.17009425e-01, 7.83575058e-01],\n", - " [ 3.48350137e-01, 7.37254381e-01],\n", - " [-7.80723929e-01, -8.84120941e-01],\n", - " [-1.95760652e-01, -2.31012523e-01],\n", - " [ 6.60519898e-01, -6.55787408e-01],\n", - " [-7.19074786e-01, -2.03196511e-01],\n", - " [ 6.15297891e-02, -5.67862332e-01],\n", - " [-6.49809659e-01, 5.80364406e-01],\n", - " [ 2.61088669e-01, 5.19194543e-01],\n", - " [ 3.60945612e-01, 3.35697114e-01],\n", - " [ 3.50850195e-01, -7.03177214e-01],\n", - " [ 7.74477005e-01, -2.59503335e-01],\n", - " [-7.42385924e-01, -8.22378099e-01],\n", - " [-2.85933644e-01, 6.74357533e-01],\n", - " [-8.53843629e-01, 4.06876981e-01],\n", - " [ 9.58840549e-01, 9.16405022e-01],\n", - " [ 7.74163187e-01, 7.48323083e-01],\n", - " [ 8.63941729e-01, -3.28039467e-01],\n", - " [-2.40420654e-01, 2.52833039e-01],\n", - " [-5.98286033e-01, 9.57714319e-01],\n", - " [-7.42678821e-01, -3.43333989e-01],\n", - " [ 9.68854368e-01, 3.85829717e-01],\n", - " [-2.75604427e-01, -7.95602053e-02],\n", - " [-2.03438953e-01, 9.11069755e-03],\n", - " [-1.43148184e-01, -1.46573469e-01],\n", - " [-9.49487031e-01, 3.15213263e-01],\n", - " [ 6.84628665e-01, 9.61936653e-01],\n", - " [-2.04393521e-01, 5.88398874e-01],\n", - " [-9.50749099e-01, 7.83227861e-01],\n", - " [ 2.88510352e-01, 9.24940228e-01],\n", - " [ 8.27838302e-01, -9.24422801e-01],\n", - " [ 6.05663717e-01, -7.59422839e-01],\n", - " [-9.75102127e-01, 1.72841713e-01],\n", - " [-2.73299128e-01, -2.70784408e-01],\n", - " [-4.23562735e-01, 1.31962135e-01],\n", - " [ 9.45790648e-01, -3.38832617e-01],\n", - " [ 1.88001692e-01, 2.13898122e-01],\n", - " [ 5.90824075e-02, -2.38077283e-01],\n", - " [-9.78379369e-01, -6.26421869e-01],\n", - " [-6.73744559e-01, 4.74431008e-01],\n", - " [ 5.22617698e-01, 8.93913805e-01],\n", - " [ 5.95449269e-01, 9.14583445e-01],\n", - " [ 3.90204303e-02, -2.39531472e-01],\n", - " [ 5.71989954e-01, -4.74963844e-01],\n", - " [ 6.58734083e-01, 5.09142876e-01],\n", - " [-2.53153235e-01, -3.53049845e-01],\n", - " [-4.54396307e-01, -6.79341435e-01],\n", - " [ 9.29932415e-01, 8.80713701e-01],\n", - " [ 2.17661366e-01, 6.54169917e-01],\n", - " [ 2.10923515e-02, -2.40477219e-01],\n", - " [-2.51346976e-01, -2.13967457e-01],\n", - " [ 5.17891407e-01, 2.40374476e-01],\n", - " [ 3.59319031e-01, -3.92084904e-02],\n", - " [-6.95064545e-01, 6.54330254e-01],\n", - " [ 4.39562589e-01, -7.08017647e-01],\n", - " [-2.80083835e-01, -2.79529452e-01],\n", - " [ 4.68703598e-01, -3.61453325e-01],\n", - " [ 1.75413545e-04, -6.19711876e-01],\n", - " [-4.56947744e-01, -5.46697043e-02],\n", - " [ 1.10423014e-01, 3.81866604e-01],\n", - " [ 4.95571673e-01, 6.30076528e-01],\n", - " [ 8.15737665e-01, 1.29877731e-01],\n", - " [-9.83589232e-01, -7.80846715e-01],\n", - " [-1.60895333e-01, -4.13245976e-01],\n", - " [-2.93852985e-01, 7.96879292e-01],\n", - " [-2.34337926e-01, 8.69962096e-01],\n", - " [ 8.72636318e-01, -3.94712389e-02],\n", - " [ 4.87689257e-01, -5.77459276e-01],\n", - " [-1.07371598e-01, -4.61379528e-01],\n", - " [-5.80118716e-01, 2.98643053e-01],\n", - " [ 3.65539849e-01, -8.42200577e-01],\n", - " [-5.28841615e-02, 4.88022923e-01],\n", - " [-9.50672925e-01, 2.79116750e-01],\n", - " [-6.66263402e-01, -8.50575149e-01],\n", - " [-2.95702636e-01, -7.57089794e-01],\n", - " [-4.11702067e-01, 9.68640268e-01],\n", - " [ 6.91891074e-01, 3.68866891e-01],\n", - " [-8.32779333e-03, 9.29424405e-01],\n", - " [ 5.37282348e-01, -9.28587794e-01],\n", - " [-5.35197616e-01, 4.34972018e-01],\n", - " [-8.97157609e-01, -2.00011898e-02],\n", - " [-2.74420083e-01, -9.79378104e-01]], dtype=float32),\n", - " 'x': array([[ 2.53951252e-01, 9.55786705e-02],\n", - " [-7.50578418e-02, -6.80214882e-01],\n", - " [ 3.25798206e-02, 9.48337466e-03],\n", - " [-3.87813628e-01, 6.97510600e-01],\n", - " [-5.65676749e-01, 2.43688509e-01],\n", - " [ 8.76319110e-02, 1.03990984e+00],\n", - " [-6.16806686e-01, 3.95518869e-01],\n", - " [ 2.43289366e-01, -8.41702744e-02],\n", - " [ 2.94539064e-01, -1.01268895e-01],\n", - " [-4.05492671e-02, 5.67550659e-01],\n", - " [-2.10222960e-01, -8.34424138e-01],\n", - " [ 2.03415319e-01, -5.96179128e-01],\n", - " [ 5.37187196e-02, 5.45547307e-01],\n", - " [ 1.32390037e-01, -9.65161324e-01],\n", - " [ 1.65536702e-01, 6.05887115e-01],\n", - " [-3.02492917e-01, 6.00012600e-01],\n", - " [ 2.75650620e-01, -9.83832717e-01],\n", - " [-6.47898912e-02, -6.00794613e-01],\n", - " [-5.88188708e-01, -2.37000689e-01],\n", - " [ 9.96765494e-02, 8.50363314e-01],\n", - " [-5.32090664e-01, -9.42790136e-02],\n", - " [ 2.07179919e-01, -1.25909996e+00],\n", - " [ 1.10319838e-01, 4.97487545e-01],\n", - " [-4.46753800e-01, -2.75851369e-01],\n", - " [-1.17684998e-01, 2.05271512e-01],\n", - " [ 1.16714276e-01, 8.40996325e-01],\n", - " [-5.64713925e-02, -9.23357546e-01],\n", - " [ 1.87672526e-01, 5.74100673e-01],\n", - " [-8.46691579e-02, 9.43871021e-01],\n", - " [ 2.76433289e-01, -8.63964856e-01],\n", - " [-2.89100736e-01, -1.02317505e-01],\n", - " [-6.26734078e-01, 1.00853950e-01],\n", - " [-4.36936170e-01, 2.48671815e-01],\n", - " [-1.94109902e-01, -8.82630050e-02],\n", - " [ 1.67907290e-02, -8.89653489e-02],\n", - " [-2.80460954e-01, -6.99714661e-01],\n", - " [ 1.34644642e-01, 1.57494441e-01],\n", - " [-9.07719210e-02, -7.15195656e-01],\n", - " [ 2.77671933e-01, -9.31531489e-01],\n", - " [-5.09281754e-01, -2.42856264e-01],\n", - " [-9.29788351e-01, 8.05726424e-02],\n", - " [-8.42837393e-02, -2.94265717e-01],\n", - " [ 2.63646871e-01, 1.20657015e+00],\n", - " [ 1.73785478e-01, -4.63589519e-01],\n", - " [-6.71075225e-01, -3.15490365e-01],\n", - " [-4.46836084e-01, 1.97128952e-01],\n", - " [ 2.35122561e-01, 9.65559661e-01],\n", - " [-5.12083948e-01, 3.75960112e-01],\n", - " [-8.36854875e-01, -2.65152324e-02],\n", - " [ 1.98727194e-02, 1.54331038e-02],\n", - " [ 3.30564082e-01, -8.96907687e-01],\n", - " [-3.21691066e-01, 4.10491407e-01],\n", - " [-8.06015953e-02, -5.55028141e-01],\n", - " [ 2.44089246e-01, 9.69316781e-01],\n", - " [-2.56520003e-01, 9.59672704e-02],\n", - " [-2.41986051e-01, 6.67658299e-02],\n", - " [ 9.41473544e-02, -6.79532588e-01],\n", - " [-2.85616964e-02, -6.53907835e-01],\n", - " [-7.54016936e-01, -3.16303074e-02],\n", - " [ 4.87661436e-02, 7.31747448e-01],\n", - " [ 2.60557346e-02, 8.43715191e-01],\n", - " [-9.80854273e-01, 6.41715247e-03],\n", - " [-7.41514742e-01, 4.41092215e-02],\n", - " [-1.08623601e-01, -9.39265966e-01],\n", - " [ 2.51657397e-01, 4.64884877e-01],\n", - " [ 1.61637682e-02, 9.98477459e-01],\n", - " [-4.26366359e-01, 2.59778708e-01],\n", - " [-6.06552601e-01, -4.12089765e-01],\n", - " [ 4.78178374e-02, 2.22041234e-01],\n", - " [ 2.13320345e-01, 1.69564873e-01],\n", - " [ 1.01722233e-01, 7.24871457e-02],\n", - " [-1.05442718e-01, 8.96624506e-01],\n", - " [-9.01241720e-01, 2.95188427e-01],\n", - " [ 6.63916618e-02, 5.10371685e-01],\n", - " [ 1.65370926e-01, 1.14619160e+00],\n", - " [-4.99440819e-01, 4.36905563e-01],\n", - " [ 2.41706863e-01, -1.17602539e+00],\n", - " [ 1.99771896e-01, -1.05111480e+00],\n", - " [-2.18879402e-01, 7.89253116e-01],\n", - " [-5.65532483e-02, 2.65488382e-02],\n", - " [ 1.33606523e-01, 4.53504145e-01],\n", - " [-1.50539234e-01, -1.02149868e+00],\n", - " [ 3.27841304e-02, 8.91788527e-02],\n", - " [ 1.30884781e-01, -3.18378985e-01],\n", - " [-8.74263108e-01, 1.33617908e-01],\n", - " [ 1.30533725e-01, 7.30226099e-01],\n", - " [-6.37296259e-01, 2.69927859e-01],\n", - " [-7.94296503e-01, 3.22382361e-01],\n", - " [ 1.83682933e-01, -1.37363449e-01],\n", - " [ 2.58710474e-01, -6.62893653e-01],\n", - " [-5.48165679e-01, 2.15799548e-04],\n", - " [-7.71245658e-02, -9.50605869e-02],\n", - " [-4.79652673e-01, -2.33250588e-01],\n", - " [-1.02507687e+00, 7.99317434e-02],\n", - " [-2.62450218e-01, 3.25194120e-01],\n", - " [ 9.65442061e-02, -2.79754162e-01],\n", - " [-2.77321483e-03, 7.49920383e-02],\n", - " [-2.35317081e-01, -1.08117975e-01],\n", - " [ 8.75033140e-02, -2.02557355e-01],\n", - " [ 2.60823607e-01, 1.06511045e+00],\n", - " [ 1.19672045e-01, -7.36494482e-01],\n", - " [-8.79814923e-02, 1.04258955e-01],\n", - " [ 2.59513497e-01, -5.82862794e-01],\n", - " [-1.21953085e-01, -3.64049733e-01],\n", - " [-3.48663330e-02, 3.19325000e-01],\n", - " [-1.66834649e-02, 1.80612490e-01],\n", - " [-4.52537745e-01, 1.31039545e-01],\n", - " [-3.82006407e-01, -5.68586946e-01],\n", - " [-9.27098870e-01, 9.98930261e-02],\n", - " [-8.85202736e-02, -1.10199966e-01],\n", - " [-3.87514569e-02, 8.42708707e-01],\n", - " [-1.15971282e-01, 7.20808744e-01],\n", - " [-2.45430186e-01, -6.77743077e-01],\n", - " [ 2.67549545e-01, -7.38927364e-01],\n", - " [-7.07757547e-02, -2.12103873e-01],\n", - " [ 1.02099039e-01, 5.50257146e-01],\n", - " [-4.43446413e-02, -9.41533327e-01],\n", - " [ 3.20424363e-02, 3.74172240e-01],\n", - " [-1.73633844e-01, 9.58132327e-01],\n", - " [-7.56465554e-01, -2.14453653e-01],\n", - " [-4.80762124e-01, -4.16752875e-01],\n", - " [-3.24135572e-02, 9.57767427e-01],\n", - " [-4.17075306e-01, -1.72911614e-01],\n", - " [-3.41798395e-01, 7.38798976e-01],\n", - " [ 6.08528070e-02, -9.97184515e-01],\n", - " [ 2.30055511e-01, 6.08631432e-01],\n", - " [-3.72935683e-01, 7.28057206e-01],\n", - " [-6.15877926e-01, -3.93291622e-01]], dtype=float32)}" + "{'alpha': array([[ 0.811846 ],\n", + " [ 1.1655375 ],\n", + " [ 0.690349 ],\n", + " [-1.3843633 ],\n", + " [-0.9577933 ],\n", + " [-1.2079015 ],\n", + " [ 1.5107541 ],\n", + " [ 0.96131116],\n", + " [ 0.09636723],\n", + " [ 0.02404731],\n", + " [-0.9631397 ],\n", + " [-1.5443141 ],\n", + " [ 0.3322162 ],\n", + " [-0.8289226 ],\n", + " [ 1.545839 ],\n", + " [ 1.3099878 ],\n", + " [-1.1293337 ],\n", + " [-1.1112677 ],\n", + " [-1.2859131 ],\n", + " [-0.00848705],\n", + " [-0.826562 ],\n", + " [-0.05401359],\n", + " [-0.5733626 ],\n", + " [ 1.441103 ],\n", + " [ 1.3535103 ],\n", + " [ 0.82197374],\n", + " [ 1.1405069 ],\n", + " [ 1.5078775 ],\n", + " [-0.24578635],\n", + " [-1.2971845 ],\n", + " [ 1.2200094 ],\n", + " [ 1.2412809 ],\n", + " [ 0.8568348 ],\n", + " [-0.14014174],\n", + " [ 1.2381922 ],\n", + " [-0.00458808],\n", + " [-0.29915315],\n", + " [-0.014065 ],\n", + " [-0.36981848],\n", + " [ 0.08939534],\n", + " [-1.298005 ],\n", + " [ 0.08107368],\n", + " [ 1.1527332 ],\n", + " [ 1.1010569 ],\n", + " [-0.97093356],\n", + " [-0.8327428 ],\n", + " [-1.2685784 ],\n", + " [ 0.38197798],\n", + " [ 0.66803664],\n", + " [ 0.32831058],\n", + " [ 0.7471112 ],\n", + " [-1.1261024 ],\n", + " [ 0.976383 ],\n", + " [ 1.2762269 ],\n", + " [-1.1819408 ],\n", + " [ 0.01273822],\n", + " [ 1.3222057 ],\n", + " [ 0.32145002],\n", + " [ 1.0546241 ],\n", + " [ 1.1236954 ],\n", + " [-0.86915904],\n", + " [-1.4725404 ],\n", + " [-0.57851046],\n", + " [-1.3111424 ],\n", + " [-1.5549136 ],\n", + " [-0.6562859 ],\n", + " [ 0.46044338],\n", + " [ 1.4144645 ],\n", + " [-0.80985373],\n", + " [ 0.67673105],\n", + " [ 0.00445595],\n", + " [ 0.9129677 ],\n", + " [ 0.73264116],\n", + " [ 0.9383897 ],\n", + " [ 1.4690843 ],\n", + " [ 0.44805676],\n", + " [-1.2438159 ],\n", + " [-1.0919781 ],\n", + " [ 0.10005943],\n", + " [-0.652468 ],\n", + " [ 1.3374164 ],\n", + " [ 1.5248041 ],\n", + " [ 0.9711219 ],\n", + " [ 1.5689381 ],\n", + " [ 0.6760715 ],\n", + " [ 0.23398188],\n", + " [-0.21398419],\n", + " [-1.2060331 ],\n", + " [ 0.79313487],\n", + " [ 0.930686 ],\n", + " [ 0.47900388],\n", + " [-0.33682647],\n", + " [ 1.5067643 ],\n", + " [ 1.3799299 ],\n", + " [-1.0610836 ],\n", + " [-0.19346415],\n", + " [ 0.6703556 ],\n", + " [ 0.55801785],\n", + " [-1.302337 ],\n", + " [ 0.8880511 ],\n", + " [ 1.4861475 ],\n", + " [ 1.5566795 ],\n", + " [ 0.6298603 ],\n", + " [-0.4204177 ],\n", + " [-0.9615261 ],\n", + " [ 0.93494344],\n", + " [ 0.03652098],\n", + " [-0.14426196],\n", + " [ 0.5074313 ],\n", + " [-1.4291117 ],\n", + " [-1.3903574 ],\n", + " [ 0.5471139 ],\n", + " [ 0.8714255 ],\n", + " [ 0.40494618],\n", + " [-0.6385578 ],\n", + " [ 0.6857702 ],\n", + " [ 1.2249589 ],\n", + " [-1.2018368 ],\n", + " [-0.99335515],\n", + " [ 0.5213185 ],\n", + " [ 0.653224 ],\n", + " [-1.5564892 ],\n", + " [ 0.29157606],\n", + " [-1.1314583 ],\n", + " [ 0.97327983],\n", + " [-1.3943021 ],\n", + " [-0.16822235],\n", + " [-0.5008124 ]], dtype=float32),\n", + " 'r': array([[0.09191831],\n", + " [0.09392393],\n", + " [0.09252372],\n", + " [0.0982731 ],\n", + " [0.10405302],\n", + " [0.10219509],\n", + " [0.08235917],\n", + " [0.10991579],\n", + " [0.09014853],\n", + " [0.11165598],\n", + " [0.10175227],\n", + " [0.10613288],\n", + " [0.09984934],\n", + " [0.10292789],\n", + " [0.09939721],\n", + " [0.09315164],\n", + " [0.08483255],\n", + " [0.09881789],\n", + " [0.08632301],\n", + " [0.11751007],\n", + " [0.11542765],\n", + " [0.08752786],\n", + " [0.09544735],\n", + " [0.09462399],\n", + " [0.10281887],\n", + " [0.09729108],\n", + " [0.09319801],\n", + " [0.07714061],\n", + " [0.10567886],\n", + " [0.09792958],\n", + " [0.09385688],\n", + " [0.09495461],\n", + " [0.1094628 ],\n", + " [0.09255824],\n", + " [0.09803515],\n", + " [0.10114206],\n", + " [0.12053802],\n", + " [0.10272378],\n", + " [0.09209541],\n", + " [0.09367829],\n", + " [0.09309962],\n", + " [0.0895135 ],\n", + " [0.10099211],\n", + " [0.07979899],\n", + " [0.09191797],\n", + " [0.10424455],\n", + " [0.10285137],\n", + " [0.10614532],\n", + " [0.09172467],\n", + " [0.11042022],\n", + " [0.1118973 ],\n", + " [0.10933825],\n", + " [0.0880883 ],\n", + " [0.09732444],\n", + " [0.09554953],\n", + " [0.0945937 ],\n", + " [0.09006199],\n", + " [0.10566922],\n", + " [0.11036118],\n", + " [0.09307823],\n", + " [0.10670979],\n", + " [0.09900924],\n", + " [0.09903299],\n", + " [0.08567982],\n", + " [0.10059226],\n", + " [0.10335171],\n", + " [0.11039949],\n", + " [0.10738601],\n", + " [0.07921619],\n", + " [0.09219779],\n", + " [0.09759328],\n", + " [0.11219482],\n", + " [0.09465504],\n", + " [0.0967709 ],\n", + " [0.09380519],\n", + " [0.07976504],\n", + " [0.10182797],\n", + " [0.09801979],\n", + " [0.09238707],\n", + " [0.10204466],\n", + " [0.09565485],\n", + " [0.09219388],\n", + " [0.0845885 ],\n", + " [0.09161578],\n", + " [0.10767981],\n", + " [0.10286254],\n", + " [0.09314913],\n", + " [0.09183365],\n", + " [0.11092991],\n", + " [0.09702247],\n", + " [0.10227211],\n", + " [0.09580602],\n", + " [0.10044043],\n", + " [0.09645868],\n", + " [0.10505722],\n", + " [0.09277388],\n", + " [0.10051655],\n", + " [0.10390085],\n", + " [0.09256679],\n", + " [0.09127223],\n", + " [0.09056184],\n", + " [0.10505585],\n", + " [0.0941221 ],\n", + " [0.08350186],\n", + " [0.0976114 ],\n", + " [0.09832696],\n", + " [0.08880883],\n", + " [0.11294892],\n", + " [0.11518918],\n", + " [0.0965459 ],\n", + " [0.08664226],\n", + " [0.1084713 ],\n", + " [0.08493465],\n", + " [0.10586594],\n", + " [0.09469504],\n", + " [0.10193761],\n", + " [0.09030203],\n", + " [0.10500195],\n", + " [0.09645825],\n", + " [0.11158349],\n", + " [0.10557099],\n", + " [0.11049099],\n", + " [0.10678031],\n", + " [0.08420987],\n", + " [0.11620536],\n", + " [0.10082643],\n", + " [0.09813577],\n", + " [0.11379081]], dtype=float32),\n", + " 'theta': array([[-0.31046662, -0.5192129 ],\n", + " [ 0.25899222, -0.2448592 ],\n", + " [-0.09939136, -0.9546972 ],\n", + " [-0.52233803, -0.00598578],\n", + " [ 0.3325237 , -0.14211619],\n", + " [ 0.31660682, -0.9715865 ],\n", + " [-0.0025572 , 0.01219535],\n", + " [ 0.0804862 , 0.3379917 ],\n", + " [ 0.8448752 , -0.15739872],\n", + " [ 0.67502624, 0.30911726],\n", + " [-0.5518989 , 0.38458768],\n", + " [-0.5097594 , -0.8797034 ],\n", + " [ 0.1299824 , -0.11516342],\n", + " [ 0.54469794, 0.45290363],\n", + " [-0.79390055, -0.5927222 ],\n", + " [-0.30554888, -0.70457566],\n", + " [ 0.12381205, 0.66449183],\n", + " [ 0.9896895 , 0.43069273],\n", + " [-0.5636638 , -0.37905496],\n", + " [-0.47466183, 0.8630436 ],\n", + " [-0.25352567, -0.6127405 ],\n", + " [ 0.8454494 , 0.20636818],\n", + " [ 0.05136211, -0.9957166 ],\n", + " [-0.87917453, -0.43837497],\n", + " [-0.9768608 , -0.45436805],\n", + " [ 0.45989057, 0.1390453 ],\n", + " [ 0.8821207 , -0.6721646 ],\n", + " [ 0.6098006 , 0.02059207],\n", + " [-0.149392 , 0.0668803 ],\n", + " [ 0.816167 , -0.7244783 ],\n", + " [-0.10582127, 0.52367836],\n", + " [ 0.04364904, -0.71592885],\n", + " [-0.661958 , -0.889716 ],\n", + " [-0.75828946, -0.5449933 ],\n", + " [-0.0180878 , 0.93717176],\n", + " [ 0.6192016 , -0.18021217],\n", + " [ 0.6736404 , -0.86073035],\n", + " [ 0.40462115, -0.79911304],\n", + " [-0.60797983, -0.39942083],\n", + " [-0.8760179 , -0.7573692 ],\n", + " [ 0.7658219 , -0.25693515],\n", + " [ 0.6227054 , 0.6554283 ],\n", + " [-0.07259648, 0.8712275 ],\n", + " [ 0.90728253, -0.5650344 ],\n", + " [ 0.79422444, 0.68135595],\n", + " [-0.13548942, 0.82118744],\n", + " [ 0.59628546, 0.31666732],\n", + " [ 0.44013777, 0.09197523],\n", + " [-0.46371552, 0.22121692],\n", + " [-0.09013044, 0.3197752 ],\n", + " [-0.05406016, -0.22707504],\n", + " [ 0.97624415, -0.86260617],\n", + " [ 0.8244347 , 0.08089861],\n", + " [-0.06575817, -0.15638828],\n", + " [-0.06798965, -0.5022756 ],\n", + " [ 0.815011 , -0.5965575 ],\n", + " [-0.09590898, -0.521891 ],\n", + " [ 0.7684214 , 0.455757 ],\n", + " [ 0.14870167, 0.07132804],\n", + " [-0.65875846, -0.8905175 ],\n", + " [-0.7458266 , 0.11753188],\n", + " [ 0.810346 , 0.25945064],\n", + " [ 0.9870774 , 0.54629356],\n", + " [-0.35242337, 0.6756984 ],\n", + " [-0.44706544, 0.41715237],\n", + " [-0.9747908 , 0.6067063 ],\n", + " [ 0.31205034, -0.90819144],\n", + " [-0.17396212, -0.7797098 ],\n", + " [-0.24114859, -0.52675587],\n", + " [-0.05354288, -0.21780755],\n", + " [-0.6323093 , 0.58807445],\n", + " [-0.8843161 , -0.5124541 ],\n", + " [-0.2678302 , 0.8521883 ],\n", + " [ 0.5850157 , -0.7819173 ],\n", + " [ 0.6423173 , -0.8578282 ],\n", + " [ 0.14295006, 0.85248995],\n", + " [-0.15930556, 0.8565224 ],\n", + " [ 0.03929539, -0.98305523],\n", + " [ 0.31724995, 0.5836652 ],\n", + " [-0.26811373, 0.73696667],\n", + " [ 0.9598292 , 0.7289081 ],\n", + " [ 0.93546367, -0.15821293],\n", + " [-0.16623883, -0.3217834 ],\n", + " [-0.41705012, 0.47349688],\n", + " [ 0.39159286, -0.37216726],\n", + " [-0.45079473, 0.602687 ],\n", + " [-0.65825534, -0.32123926],\n", + " [-0.44960454, -0.07970022],\n", + " [-0.4009049 , -0.6618951 ],\n", + " [-0.2572403 , -0.3288973 ],\n", + " [ 0.5176336 , 0.7126518 ],\n", + " [-0.760555 , -0.17923199],\n", + " [ 0.08348245, -0.54072154],\n", + " [-0.67218244, -0.81798273],\n", + " [-0.5323433 , -0.36760053],\n", + " [ 0.7281168 , 0.58143365],\n", + " [-0.11570914, -0.80179965],\n", + " [-0.27270266, -0.06209885],\n", + " [-0.08812815, -0.6612023 ],\n", + " [ 0.8177256 , 0.19989038],\n", + " [-0.35036862, 0.83757067],\n", + " [ 0.06185859, 0.42102838],\n", + " [ 0.13955897, -0.4102967 ],\n", + " [ 0.42227042, -0.32889032],\n", + " [-0.6494401 , 0.26140058],\n", + " [-0.78374976, 0.79485214],\n", + " [-0.4989267 , 0.22898036],\n", + " [ 0.5334011 , -0.7786707 ],\n", + " [ 0.772915 , 0.09377074],\n", + " [-0.03455243, -0.7146796 ],\n", + " [-0.31524613, -0.58907634],\n", + " [ 0.27913257, -0.39805576],\n", + " [-0.5170899 , 0.94988567],\n", + " [-0.6617844 , -0.7926895 ],\n", + " [ 0.30463684, -0.65223706],\n", + " [ 0.95110357, 0.01535923],\n", + " [ 0.2822953 , -0.58528644],\n", + " [-0.58930004, -0.2095232 ],\n", + " [ 0.6582694 , 0.2106661 ],\n", + " [-0.71783096, -0.15897161],\n", + " [ 0.5494588 , -0.41081655],\n", + " [ 0.81622076, 0.12805746],\n", + " [ 0.38824794, -0.9268966 ],\n", + " [ 0.8239423 , -0.38376778],\n", + " [ 0.8703679 , -0.9352464 ],\n", + " [ 0.89721346, -0.3582009 ],\n", + " [ 0.02263427, 0.9801298 ],\n", + " [ 0.895235 , -0.8068917 ]], dtype=float32),\n", + " 'x': array([[-2.73417473e-01, -8.09137672e-02],\n", + " [ 2.77036577e-01, -2.69960642e-01],\n", + " [-4.24015194e-01, -5.45872867e-01],\n", + " [-1.05365962e-01, 2.68545985e-01],\n", + " [ 1.75225988e-01, -4.20728564e-01],\n", + " [-1.76863164e-01, -1.00642967e+00],\n", + " [ 2.48126850e-01, 9.26423967e-02],\n", + " [ 1.70122087e-02, 2.72208542e-01],\n", + " [-1.46389037e-01, -7.00040758e-01],\n", + " [-3.34270835e-01, -2.56051958e-01],\n", + " [ 1.89788073e-01, 5.78658581e-01],\n", + " [-7.29688287e-01, -3.67685556e-01],\n", + " [ 3.33911151e-01, -1.40779510e-01],\n", + " [-3.85865510e-01, -1.40787229e-01],\n", + " [-7.28009880e-01, 2.41620854e-01],\n", + " [-4.40245688e-01, -1.92153111e-01],\n", + " [-2.71169245e-01, 3.05618912e-01],\n", + " [-7.10533679e-01, -4.83837098e-01],\n", + " [-3.92342120e-01, 4.76944335e-02],\n", + " [ 9.28784534e-02, 9.44903255e-01],\n", + " [-2.84350991e-01, -3.38912606e-01],\n", + " [-4.06347096e-01, -4.56624061e-01],\n", + " [-3.37575883e-01, -7.92172849e-01],\n", + " [-6.69410408e-01, 4.05521661e-01],\n", + " [-7.39865899e-01, 4.69859362e-01],\n", + " [-1.07278086e-01, -1.55607030e-01],\n", + " [ 1.40414655e-01, -1.01434314e+00],\n", + " [-1.90904528e-01, -3.39645326e-01],\n", + " [ 2.94158250e-01, 1.27213925e-01],\n", + " [ 2.11627930e-01, -1.18368745e+00],\n", + " [-1.32169081e-02, 5.33264697e-01],\n", + " [-1.94647789e-01, -4.47256684e-01],\n", + " [-7.75519371e-01, -7.83201531e-02],\n", + " [-5.79909265e-01, 1.37894318e-01],\n", + " [-3.67881477e-01, 7.68132865e-01],\n", + " [ 4.07285877e-02, -5.65734982e-01],\n", + " [ 2.32891902e-01, -1.12048781e+00],\n", + " [ 7.37657398e-02, -8.52613330e-01],\n", + " [-3.76470715e-01, 1.14185952e-01],\n", + " [-8.11674833e-01, 9.22605619e-02],\n", + " [-8.47542733e-02, -8.12855482e-01],\n", + " [-5.64557493e-01, 3.03878188e-02],\n", + " [-2.73715496e-01, 7.59678721e-01],\n", + " [ 4.41153459e-02, -9.69929636e-01],\n", + " [-7.41502583e-01, -1.55680373e-01],\n", + " [-1.64720863e-01, 5.99354684e-01],\n", + " [-3.64942580e-01, -2.95909882e-01],\n", + " [-2.77653802e-02, -2.06621721e-01],\n", + " [ 1.50535062e-01, 5.41138887e-01],\n", + " [ 1.92139149e-01, 3.25451434e-01],\n", + " [ 1.33301392e-01, -4.63032946e-02],\n", + " [ 2.16681108e-01, -1.39896774e+00],\n", + " [-3.40835840e-01, -4.52780277e-01],\n", + " [ 1.21174738e-01, 2.90472377e-02],\n", + " [-1.17012754e-01, -3.95502687e-01],\n", + " [ 1.90116048e-01, -9.96924758e-01],\n", + " [-1.64691880e-01, -2.13921264e-01],\n", + " [-5.15368223e-01, -1.87701717e-01],\n", + " [ 1.48884773e-01, 4.12713327e-02],\n", + " [-8.05260777e-01, -7.99493268e-02],\n", + " [-1.25393584e-01, 5.28983176e-01],\n", + " [-4.96747881e-01, -4.88073528e-01],\n", + " [-7.51338840e-01, -3.65830243e-01],\n", + " [ 4.34079915e-02, 6.44184113e-01],\n", + " [ 2.30445877e-01, 5.10514736e-01],\n", + " [ 7.16068000e-02, 1.05522442e+00],\n", + " [-7.26334229e-02, -8.13785732e-01],\n", + " [-4.07628328e-01, -3.22251856e-01],\n", + " [-2.38362625e-01, -2.59322137e-01],\n", + " [ 1.30005881e-01, -5.84139936e-02],\n", + " [ 3.16313535e-01, 8.63376498e-01],\n", + " [-6.69069767e-01, 3.51728320e-01],\n", + " [-9.28360224e-02, 8.55281293e-01],\n", + " [ 1.67969659e-01, -8.88511479e-01],\n", + " [ 1.07135452e-01, -9.67442632e-01],\n", + " [-3.81990910e-01, 5.36275864e-01],\n", + " [-2.10301131e-01, 6.21866047e-01],\n", + " [-3.72178257e-01, -8.09907556e-01],\n", + " [-2.95118243e-01, 1.97612807e-01],\n", + " [-4.45644546e-04, 6.48742855e-01],\n", + " [-9.21995819e-01, -7.02241957e-02],\n", + " [-2.95360595e-01, -6.81249738e-01],\n", + " [-4.73442897e-02, -4.01571728e-02],\n", + " [ 2.10256353e-01, 7.21327484e-01],\n", + " [ 3.20258260e-01, -4.72681075e-01],\n", + " [ 2.42655575e-01, 7.68773019e-01],\n", + " [-3.51582617e-01, 2.18525678e-01],\n", + " [-9.15153325e-02, 1.75770089e-01],\n", + " [-4.23682958e-01, -1.05504133e-01],\n", + " [-1.06511913e-01, 2.71457620e-02],\n", + " [-5.29181302e-01, 1.85035408e-01],\n", + " [-3.24107260e-01, 3.79394174e-01],\n", + " [-6.68898523e-02, -3.41144264e-01],\n", + " [-7.85406768e-01, -8.38936307e-03],\n", + " [-3.35096180e-01, 2.47879084e-02],\n", + " [-5.84948957e-01, -1.21557318e-01],\n", + " [-3.20011824e-01, -4.22691882e-01],\n", + " [ 1.01399325e-01, 2.03935474e-01],\n", + " [-2.55303651e-01, -4.94475722e-01],\n", + " [-4.11977261e-01, -3.66062492e-01],\n", + " [-8.68470743e-02, 9.30237532e-01],\n", + " [-8.99696425e-02, 3.59016776e-01],\n", + " [ 1.34620503e-01, -3.33365768e-01],\n", + " [ 2.60200709e-01, -5.65231442e-01],\n", + " [ 3.14746089e-02, 5.64013839e-01],\n", + " [ 3.00542265e-01, 1.19535053e+00],\n", + " [ 1.47868738e-01, 5.17950714e-01],\n", + " [ 1.88343808e-01, -9.44012642e-01],\n", + " [-2.62164533e-01, -4.24253196e-01],\n", + " [-2.66153723e-01, -5.76500952e-01],\n", + " [-3.73903632e-01, -2.78862804e-01],\n", + " [ 2.58546293e-01, -4.22415018e-01],\n", + " [-1.35729939e-03, 1.10230434e+00],\n", + " [-6.81164503e-01, -5.08559495e-02],\n", + " [ 8.02454948e-02, -7.33053863e-01],\n", + " [-3.54499668e-01, -5.97117186e-01],\n", + " [ 6.63639084e-02, -5.28517485e-01],\n", + " [-2.76984870e-01, 1.70607135e-01],\n", + " [-3.11775416e-01, -3.97322059e-01],\n", + " [-2.73231924e-01, 4.50744480e-01],\n", + " [ 2.35802069e-01, -6.14856482e-01],\n", + " [-4.16124791e-01, -5.97084582e-01],\n", + " [-2.86087506e-02, -8.99252355e-01],\n", + " [-2.54325196e-02, -9.30192709e-01],\n", + " [ 2.69500047e-01, -1.18069100e+00],\n", + " [-1.13436393e-01, -9.86972153e-01],\n", + " [-3.62310737e-01, 6.60620689e-01],\n", + " [ 2.87348330e-01, -1.25822067e+00]], dtype=float32)}" ] }, - "execution_count": 6, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 6 + "execution_count": 9 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T22:06:35.724356Z", - "start_time": "2024-10-14T22:06:35.716334Z" + "end_time": "2024-10-18T20:36:21.177448Z", + "start_time": "2024-10-18T20:36:21.163813Z" } }, "cell_type": "code", @@ -678,13 +684,13 @@ ], "id": "461e6dfcdf6944b", "outputs": [], - "execution_count": 57 + "execution_count": 10 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:27:53.903783Z", - "start_time": "2024-10-14T20:27:53.883195Z" + "end_time": "2024-10-18T20:36:23.287123Z", + "start_time": "2024-10-18T20:36:23.274401Z" } }, "cell_type": "code", @@ -695,13 +701,13 @@ ], "id": "ed2cec2c3fdedb22", "outputs": [], - "execution_count": 8 + "execution_count": 11 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:10.611306Z", - "start_time": "2024-10-14T20:27:54.318482Z" + "end_time": "2024-10-18T20:36:37.893513Z", + "start_time": "2024-10-18T20:36:23.887416Z" } }, "cell_type": "code", @@ -711,13 +717,13 @@ ], "id": "7d1bffc7f17b5aaa", "outputs": [], - "execution_count": 9 + "execution_count": 12 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:22.181678Z", - "start_time": "2024-10-14T20:28:22.155164Z" + "end_time": "2024-10-18T20:38:23.502875Z", + "start_time": "2024-10-18T20:38:23.474475Z" } }, "cell_type": "code", @@ -727,13 +733,13 @@ ], "id": "d7f545fd2ee536d8", "outputs": [], - "execution_count": 10 + "execution_count": 13 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:23.402981Z", - "start_time": "2024-10-14T20:28:23.353636Z" + "end_time": "2024-10-18T20:38:25.248748Z", + "start_time": "2024-10-18T20:38:25.153585Z" } }, "cell_type": "code", @@ -748,13 +754,13 @@ ], "id": "be6ed75d4d899021", "outputs": [], - "execution_count": 11 + "execution_count": 14 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:24.123891Z", - "start_time": "2024-10-14T20:28:24.106889Z" + "end_time": "2024-10-18T20:38:26.228405Z", + "start_time": "2024-10-18T20:38:26.217686Z" } }, "cell_type": "code", @@ -767,13 +773,13 @@ ], "id": "b1dc4f27eb17b270", "outputs": [], - "execution_count": 12 + "execution_count": 15 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:25.265638Z", - "start_time": "2024-10-14T20:28:25.223633Z" + "end_time": "2024-10-18T20:38:28.542989Z", + "start_time": "2024-10-18T20:38:28.513271Z" } }, "cell_type": "code", @@ -783,13 +789,13 @@ ], "id": "ad75c807a7617e0a", "outputs": [], - "execution_count": 13 + "execution_count": 16 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:26.705303Z", - "start_time": "2024-10-14T20:28:26.693791Z" + "end_time": "2024-10-18T21:08:38.953498Z", + "start_time": "2024-10-18T21:08:38.926729Z" } }, "cell_type": "code", @@ -797,59 +803,59 @@ "class BatchLossHistory(keras.callbacks.Callback):\n", " def __init__(self):\n", " super().__init__()\n", - " self.batch_losses = []\n", + " self.training_loss = []\n", + " self.validation_loss = []\n", "\n", " def on_train_batch_end(self, batch, logs=None):\n", " # 'logs' is a dictionary containing loss and other metrics\n", - " loss = logs.get('loss')\n", - " self.batch_losses.append(loss)" + " training_loss = logs.get('loss')\n", + " self.training_loss.append(training_loss)\n", + " \n", + " def on_test_batch_end(self, batch, logs=None):\n", + " validation_loss = logs.get('loss')\n", + " self.validation_loss.append(validation_loss)" ], "id": "9d08447b96c58cf4", "outputs": [], - "execution_count": 14 + "execution_count": 36 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:28.279798Z", - "start_time": "2024-10-14T20:28:28.258494Z" + "end_time": "2024-10-18T21:08:39.546893Z", + "start_time": "2024-10-18T21:08:39.522895Z" } }, "cell_type": "code", - "source": [ - "approximator.compile(\n", - " optimizer=optimizer,\n", - " loss=\"sparse_categorical_crossentropy\"\n", - ")" - ], + "source": "approximator.compile(optimizer=optimizer)", "id": "120d9b0fed8a8a01", "outputs": [], - "execution_count": 15 + "execution_count": 37 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:28:28.698900Z", - "start_time": "2024-10-14T20:28:28.690911Z" + "end_time": "2024-10-18T21:08:39.859389Z", + "start_time": "2024-10-18T21:08:39.852730Z" } }, "cell_type": "code", "source": "batch_loss_history = BatchLossHistory()", "id": "50d2d9f6d6419075", "outputs": [], - "execution_count": 16 + "execution_count": 38 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:38:09.636742Z", - "start_time": "2024-10-14T20:28:29.157027Z" + "end_time": "2024-10-18T21:11:12.394144Z", + "start_time": "2024-10-18T21:08:40.381171Z" } }, "cell_type": "code", "source": [ "history = approximator.fit(\n", - " epochs=30,\n", + " epochs=10,\n", " dataset=training_dataset,\n", " validation_data=validation_dataset,\n", " callbacks=[batch_loss_history]\n", @@ -861,112 +867,93 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:bayesflow:Fitting on dataset instance of OfflineDataset.\n", - "INFO:bayesflow:Building on a test batch.\n" + "INFO:bayesflow:Fitting on dataset instance of OfflineDataset.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 16ms/step - loss: 0.6919 - loss/inference_loss: 0.6919 - val_loss: 0.6134 - val_loss/inference_loss: 0.6134\n", - "Epoch 2/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m18s\u001B[0m 18ms/step - loss: 0.6234 - loss/inference_loss: 0.6234 - val_loss: 0.6321 - val_loss/inference_loss: 0.6321\n", - "Epoch 3/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m18s\u001B[0m 18ms/step - loss: 0.6018 - loss/inference_loss: 0.6018 - val_loss: 0.4567 - val_loss/inference_loss: 0.4567\n", - "Epoch 4/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m21s\u001B[0m 20ms/step - loss: 0.6079 - loss/inference_loss: 0.6079 - val_loss: 0.6692 - val_loss/inference_loss: 0.6692\n", - "Epoch 5/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m24s\u001B[0m 24ms/step - loss: 0.5956 - loss/inference_loss: 0.5956 - val_loss: 0.7312 - val_loss/inference_loss: 0.7312\n", - "Epoch 6/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m22s\u001B[0m 22ms/step - loss: 0.5911 - loss/inference_loss: 0.5911 - val_loss: 0.5461 - val_loss/inference_loss: 0.5461\n", - "Epoch 7/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m22s\u001B[0m 22ms/step - loss: 0.5907 - loss/inference_loss: 0.5907 - val_loss: 0.5829 - val_loss/inference_loss: 0.5829\n", - "Epoch 8/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m24s\u001B[0m 24ms/step - loss: 0.5820 - loss/inference_loss: 0.5820 - val_loss: 0.7137 - val_loss/inference_loss: 0.7137\n", - "Epoch 9/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m25s\u001B[0m 25ms/step - loss: 0.5801 - loss/inference_loss: 0.5801 - val_loss: 0.5453 - val_loss/inference_loss: 0.5453\n", - "Epoch 10/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m26s\u001B[0m 25ms/step - loss: 0.5841 - loss/inference_loss: 0.5841 - val_loss: 0.6155 - val_loss/inference_loss: 0.6155\n", - "Epoch 11/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 17ms/step - loss: 0.5748 - loss/inference_loss: 0.5748 - val_loss: 0.4574 - val_loss/inference_loss: 0.4574\n", - "Epoch 12/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 16ms/step - loss: 0.5714 - loss/inference_loss: 0.5714 - val_loss: 0.9205 - val_loss/inference_loss: 0.9205\n", - "Epoch 13/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m23s\u001B[0m 22ms/step - loss: 0.5804 - loss/inference_loss: 0.5804 - val_loss: 0.4696 - val_loss/inference_loss: 0.4696\n", - "Epoch 14/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m20s\u001B[0m 19ms/step - loss: 0.5691 - loss/inference_loss: 0.5691 - val_loss: 0.5795 - val_loss/inference_loss: 0.5795\n", - "Epoch 15/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m22s\u001B[0m 22ms/step - loss: 0.5663 - loss/inference_loss: 0.5663 - val_loss: 0.7035 - val_loss/inference_loss: 0.7035\n", - "Epoch 16/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m23s\u001B[0m 22ms/step - loss: 0.5692 - loss/inference_loss: 0.5692 - val_loss: 0.6051 - val_loss/inference_loss: 0.6051\n", - "Epoch 17/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 17ms/step - loss: 0.5635 - loss/inference_loss: 0.5635 - val_loss: 0.5303 - val_loss/inference_loss: 0.5303\n", - "Epoch 18/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 17ms/step - loss: 0.5730 - loss/inference_loss: 0.5730 - val_loss: 0.4921 - val_loss/inference_loss: 0.4921\n", - "Epoch 19/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m24s\u001B[0m 23ms/step - loss: 0.5641 - loss/inference_loss: 0.5641 - val_loss: 0.5474 - val_loss/inference_loss: 0.5474\n", - "Epoch 20/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 15ms/step - loss: 0.5669 - loss/inference_loss: 0.5669 - val_loss: 0.5979 - val_loss/inference_loss: 0.5979\n", - "Epoch 21/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5698 - loss/inference_loss: 0.5698 - val_loss: 0.6764 - val_loss/inference_loss: 0.6764\n", - "Epoch 22/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m15s\u001B[0m 15ms/step - loss: 0.5697 - loss/inference_loss: 0.5697 - val_loss: 0.5636 - val_loss/inference_loss: 0.5636\n", - "Epoch 23/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m19s\u001B[0m 19ms/step - loss: 0.5697 - loss/inference_loss: 0.5697 - val_loss: 0.5355 - val_loss/inference_loss: 0.5355\n", - "Epoch 24/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m18s\u001B[0m 17ms/step - loss: 0.5623 - loss/inference_loss: 0.5623 - val_loss: 0.4090 - val_loss/inference_loss: 0.4090\n", - "Epoch 25/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5686 - loss/inference_loss: 0.5686 - val_loss: 0.5841 - val_loss/inference_loss: 0.5841\n", - "Epoch 26/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5650 - loss/inference_loss: 0.5650 - val_loss: 0.5608 - val_loss/inference_loss: 0.5608\n", - "Epoch 27/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m17s\u001B[0m 16ms/step - loss: 0.5646 - loss/inference_loss: 0.5646 - val_loss: 0.5898 - val_loss/inference_loss: 0.5898\n", - "Epoch 28/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5608 - loss/inference_loss: 0.5608 - val_loss: 0.3862 - val_loss/inference_loss: 0.3862\n", - "Epoch 29/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5666 - loss/inference_loss: 0.5666 - val_loss: 0.5265 - val_loss/inference_loss: 0.5265\n", - "Epoch 30/30\n", - "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5673 - loss/inference_loss: 0.5673 - val_loss: 0.7562 - val_loss/inference_loss: 0.7562\n" + "Epoch 1/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m15s\u001B[0m 14ms/step - loss: 0.5526 - loss/inference_loss: 0.5526 - val_loss: 0.5321 - val_loss/inference_loss: 0.5321\n", + "Epoch 2/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m15s\u001B[0m 14ms/step - loss: 0.5567 - loss/inference_loss: 0.5567 - val_loss: 0.7145 - val_loss/inference_loss: 0.7145\n", + "Epoch 3/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m15s\u001B[0m 14ms/step - loss: 0.5549 - loss/inference_loss: 0.5549 - val_loss: 0.5232 - val_loss/inference_loss: 0.5232\n", + "Epoch 4/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m15s\u001B[0m 15ms/step - loss: 0.5476 - loss/inference_loss: 0.5476 - val_loss: 0.4488 - val_loss/inference_loss: 0.4488\n", + "Epoch 5/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 15ms/step - loss: 0.5523 - loss/inference_loss: 0.5523 - val_loss: 0.4283 - val_loss/inference_loss: 0.4283\n", + "Epoch 6/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 15ms/step - loss: 0.5580 - loss/inference_loss: 0.5580 - val_loss: 0.6679 - val_loss/inference_loss: 0.6679\n", + "Epoch 7/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 15ms/step - loss: 0.5506 - loss/inference_loss: 0.5506 - val_loss: 0.5052 - val_loss/inference_loss: 0.5052\n", + "Epoch 8/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m14s\u001B[0m 14ms/step - loss: 0.5521 - loss/inference_loss: 0.5521 - val_loss: 0.3337 - val_loss/inference_loss: 0.3337\n", + "Epoch 9/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m16s\u001B[0m 16ms/step - loss: 0.5533 - loss/inference_loss: 0.5533 - val_loss: 0.6080 - val_loss/inference_loss: 0.6080\n", + "Epoch 10/10\n", + "\u001B[1m1024/1024\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m\u001B[0m \u001B[1m15s\u001B[0m 15ms/step - loss: 0.5499 - loss/inference_loss: 0.5499 - val_loss: 0.4822 - val_loss/inference_loss: 0.4822\n" ] } ], - "execution_count": 17 + "execution_count": 39 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-14T20:38:43.704457Z", - "start_time": "2024-10-14T20:38:42.786411Z" + "end_time": "2024-10-18T21:11:18.353698Z", + "start_time": "2024-10-18T21:11:18.340415Z" } }, "cell_type": "code", - "source": "plt.plot(batch_loss_history.batch_losses)", - "id": "3bc7cb16f130a630", + "source": "type(batch_loss_history.validation_loss)", + "id": "a30166eb4abb1951", "outputs": [ { "data": { "text/plain": [ - "[]" + "list" ] }, - "execution_count": 18, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" - }, + } + ], + "execution_count": 40 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-18T21:11:30.079377Z", + "start_time": "2024-10-18T21:11:29.336090Z" + } + }, + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "\n", + "f = plot_losses(\n", + " train_losses=pd.DataFrame(batch_loss_history.training_loss), \n", + " val_losses=pd.DataFrame(batch_loss_history.validation_loss), \n", + " moving_average=True\n", + ")" + ], + "id": "3bc7cb16f130a630", + "outputs": [ { "data": { "text/plain": [ - "
" + "
" ], - "image/png": "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" + "image/png": "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6wwi0hXrDfOjzZoaMiOUg4iIiIiIyOyVpGcaOzYeEolEKbBhbemZ7OzszGYxcCIiIiIiXTD9FBERERER0d+YnomIiIiIyLwx/RTTT4k43YqIdMV6g4h0wTqDLImlpGeydqw3iEgXrDOISFesN8wP008RERERERFVANMzERERERGZJ6afIiIiIiIiIiIiIiIii8CgBhERERERERERERERWQQGNYiIiIiIiIiIiIiIyCIwqEFERERERERERERERBaBQQ0iIiIiIiIiIiIiIrIIDGoQEREREREREREREZFFkJm6AKYmkZi6BOaFnwcR6Yr1BhHpgnUGEemK9QYR6YJ1BhHpivWG5ZEIgiCYuhBERERERERERERERETlYfopIiIiIiIiIiIiIiKyCAxqEBERERERERERERGRRWBQg4iIiIiIiIiIiIiILAKDGkREREREREREREREZBEY1CAiIiIiIiIiIiIiIovAoAYREREREREREREREVkEBjWIiIiIiIiIiIiIiMgiMKhBREREREREREREREQWgUENQkFBARITExEWFoYOHTpg3bp1pi4SERnZ7du3MXXqVLRp0waRkZFISkpCQUEBAOD69esYM2YMWrZsiV69euHHH39UOvfo0aPo06cPgoODMWrUKFy/fl1p/4YNGxAZGYmQkBAkJiYiPz/faPdFRIY3fvx4zJgxQ3x9/vx5DBkyBMHBwRg0aBDOnj2rdHxaWhq6du2K4OBgTJo0Cbm5ueI+QRCwcOFCtGvXDm3atEFycjIUCoXR7oWIDKewsBDz5s1D69atER4ejsWLF0MQBACsN4hIVXZ2NiZMmIBWrVohOjoaGzZsEPexziCi0goLC9GnTx8cP35c3GbIfgz2o5oHBjUIycnJOHv2LDZu3Ig5c+YgJSUF+/fvN3WxiMhIBEHA1KlTkZ+fj88//xxLlizBd999h6VLl0IQBEyaNAnu7u746quv0L9/f0yePBk3b94EANy8eROTJk3CwIEDsX37dri6umLixIliJ8WBAweQkpKCd955Bxs3bkRGRgYWLFhgytslIj3au3cvjhw5Ir5+/Pgxxo8fj7CwMKSmpiIkJAQTJkzA48ePAQCZmZmYOXMmJk+ejC1btuDBgwdISEgQz1+/fj3S0tKQkpKC5cuXY8+ePVi/fr3R74uI9O/dd9/F0aNHsXbtWixatAhb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8APWrFmD4cOHs94gIhXR0dGoUqUKZs2ahStXruDw4cNYvXo14uPjWWcQUbkM2Y/BflTzIRFKwttks/Lz8zF37lwcPHgQVatWxdixYzFmzBhTF4uIjGTNmjVYtGiR2n0XL17EtWvXMHPmTGRkZMDHxweJiYkIDw8Xjzly5Ajef/993Lp1CyEhIZg/f7740FDy/hs2bEBhYSFiYmIwZ84cMU8lEVm+GTNmAAA++OADAEBmZibmzJmDS5cuwd/fH/PmzUNAQIB4fGpqKpYvX4779+8jIiIC8+fPh4uLCwCguLgYycnJSE1NhZ2dHQYPHoxp06ZBIpEY/8aISK8ePnyI+fPn45tvvoFcLkdcXBwmTZoEiUTCeoOIVJQELDIzM+Hq6ooRI0Zg9OjRrDOISC1/f398+umnYmDCkP0Y7Ec1DwxqEBERERERERERERGRRWD6KSIiIiIiIiIiIiIisggMahARERERERERERERkUVgUIOIiIiIiIiIiIiIiCwCgxpERERERERERERERGQRGNQgIiIiIiIiIiIiIiKLwKAGERERERERERERERFZBAY1iIiIiIiIiIiIiIjIIjCoQUREREREREREREREFoFBDSIiIiIiC7dixQr4+/tr9W/GjBl6ueaff/4Jf39/vPnmmxU6Pzo6Gh07dtRLWQypoKAAt27dMnUxMGzYMEybNk18vWfPHvj7+yM3N9eEpSIiIiIiMj6ZqQtARERERESV061bN9SvX19pW1JSEvLy8pCcnKy0/fnjKsrV1RXJycmoV69ehc5PTEyEIAh6KYuhnDlzBlOmTMHUqVMxcOBAk5WjqKgIv/32G7p3765UNm9vb7i6upqsXEREREREpsCgBhERERGRhWvatCmaNm2qtG3ZsmXIy8tD//79DXJNJyenSr13165d9Vgaw7hw4QKys7NNXQxkZWXhyZMnaN68ubjtzJkzSq+JiIiIiGwF008RERERERGZsTNnzkAqlSIgIAAAUFxcjN9++w1BQUEmLhkRERERkfExqEFEREREZGNK1uA4fPgwevXqhebNm2P48OEAAEEQsHXrVsTFxSEsLAyBgYHo0KED3njjDVy7dk18D3VrasTHx6NHjx64ePEixo8fj9DQUISEhGDMmDHIyMhQKsPza2qUlCkrKwuzZ89GREQEgoKC0K9fP+zcuVPlHi5duoSpU6eiXbt2CAkJwUsvvYRLly4hICBAq3VDPv/8cwwcOBCtWrVCSEgIYmNjkZqaKu6fMWMGZs2aBQBISEiAv7+/uE+hUGDTpk3o378/WrRogbCwMIwbNw7p6elqP+fz589j2rRpCA0NRevWrTFhwgScP39eY/lSU1PFdVD+/e9/Q6FQoFWrVvD390dAQADy8/OxcOFCpXIREREREdkCpp8iIiIiIrJRb775JgYNGoQRI0agSpUqAID33nsPmzZtQrdu3fDGG29AEASkp6dj3759+PXXX3Hw4EHxWHVyc3MxcuRIdOzYEdOnT8eff/6JDRs2YMyYMfjPf/6DGjVqaCzThAkT4OnpiQkTJqCwsBAbN27E22+/DU9PT4SHhwN4FtAYNmwYioqKEB8fD3d3d+zfvx9xcXFQKBTl3veGDRuQlJSE3r17IzY2Fk+fPsWOHTuQkJCAJ0+eIC4uDkOHDoWdnR22b9+OoUOHIjQ0VDx/2rRp2LdvH7p3747Y2Fjcv38fqampiI+Px+LFi9GjRw+l602ePBnOzs6YPHkyHjx4gE8//RRxcXHYtGlTmbMtWrduLa6HsmDBAvj5+Ynpvo4ePYpdu3YhKSkJUinHqRERERGRbWFQg4iIiIjIRnXt2hUzZ84UX+fl5eGLL75AVFQUUlJSxO0jRoxAcXEx9u/fjwsXLmhMe3T//n28/vrrePnll8Vtjo6OWLFiBQ4cOIDY2FiNZWrYsCE++eQTSCQSAECLFi0QHx+Pr776SgxqJCcn4+HDh9i6dStatGghlvHll1/G999/X+59b9++Hb6+vli8eLG4bdCgQYiNjcWFCxcAACEhIfjjjz+wfft2tGzZUgwo7Nu3D/v27cP06dMxbtw48fzRo0dj8ODBmDt3Ljp16gS5XC7uq1q1KrZs2SJu69q1KwYPHoykpCRs3rxZbRnr1auHevXqobCwEDNnzkSXLl3EMpw6dQoNGjTACy+8UO69EhERERFZGw7rISIiIiKyUSVBghIuLi44efIkFi5cqLT9wYMHYof8o0ePyn3ffv36Kb0uWdA6Jyen3HP79u0rBjRKn3v37l0AwMOHD/Hjjz8iIiJCDGgAgJ2dHV555ZVy3x8AatWqhStXrmDFihW4dOkSgGcLn6elpeGdd97ReO7evXsBAN27d0dubq74r6CgADExMcjLy8Mvv/yidM6ECROUghwlKb1OnTol3ldZLl68iKdPnyotCn727FkEBgZqda9ERERERNaGMzWIiIiIiGyUm5ubyjYHBwccPnwY3377La5evYobN27g9u3bYqBBEIRy39fd3V3ptb29PQBolRqqvHP/+9//oqioCA0bNlQ5t3HjxuW+PwAkJiZi4sSJSElJQUpKCry8vBAREYGYmBh07txZKajyvCtXrgB4NtuiLDdu3FB67efnp3JMo0aN8P333+P69esq9wwAhYWFePToEdLT0yGVSuHp6Ync3FwoFAr8/vvviIqKQm5uLgDA1dVVq/smIiIiIrIGDGoQEREREdkoOzs7pdeFhYUYO3YsTpw4gaCgIAQGBqJXr14ICAjAkSNH8PHHH2v1vpVZ56G8c58+fQoAatf1cHR01OoajRo1wr59+5Ceno7vv/8ex44dw65du5CamoqYmBisWLGizHMVCgXkcjk++uijMo95PuBSEpgprbi4GAAgk6l/JEtLS0NCQoL4unPnzkr7V6xYIZbz4sWLZZaFiIiIiMjaMKhBREREREQAgK+//honTpzA2LFj8dZbbynt27Fjh4lKpczHxwcSiUScMVHa5cuXyz2/qKgIv//+O2QyGVq3bo3WrVsDAP766y+8/PLLOHjwIH7//Xe1sysAoG7durhy5QqaNGkCDw8PpX2//fYb7ty5o5RqCgCuXr0KHx8flbLKZDLUr19f7XU6dOiA9evXIyEhAc2bN8eIESMAAAcPHsS2bduwevVqlaAUEREREZEt4JoaREREREQE4NlC4YBquqRr167hwIEDAJ4FBUzJxcUF7du3x48//oisrCxxuyAIWLduXbnnFxUVYeTIkXjzzTfFWR/As1RcJQGGkmBByayR0mmzunfvDgBYtmyZ0vs+evQIr732GiZNmoSCggKlfWvXrhVnZgDA6dOncfToUURGRqJGjRpqy+np6YkWLVrgzp07iI6ORnh4OMLDw5Gfnw9/f39ERkaK24iIiIiIbAlnahAREREREQAgMjISixYtwgcffIAbN27A09MTWVlZ+Oqrr8RgxsOHD01cSiAhIQHDhg3DsGHDMHLkSHh4eODbb7/FqVOnAEDjmhiOjo4YN24cli1bhhEjRqBXr16Qy+U4deoU0tLSEBUVBV9fXwD/rO+xe/duCIKAAQMGYODAgdi/fz+2bduG69evo0uXLigqKsK2bdtw9epVTJ8+HV5eXkrXPH36NOLj49GzZ0/cuXMHn332GWrWrInExESN93nmzBkoFAq0bNlS6b0iIiIq8rEREREREVkFBjWIiIiIiAgA4OvrizVr1mD58uXirIfatWtj5MiR6NGjBwYMGIAffvgBvXv3Nmk5/fz8sHnzZixevBibNm2CIAho27YtlixZgldeeUXtehulTZw4EZ6entiyZQtWrVqFx48fo379+nj11VcxduxY8bjw8HD06dMH3377Lc6cOYOwsDA0bNgQq1evxsaNG7Fr1y4sXLgQcrkcvr6+WLFiBWJiYlSul5SUhAMHDmDx4sVwcHBAt27d8Oqrr8Lb21tjOX/99VfUqFEDjRo1AgDcv38f165dw8SJEyvwqRERERERWQeJIAiCqQtBRERERESkrZycHLi7u6vMyDh16hSGDx+OyZMnY8qUKSYq3T9WrFiBlJQUrF+/nmmiiIiIiIj0hGtqEBERERGRRRk1ahR69OihtE4F8CxNFACldE1ERERERGRdmH6KiIiIiIgsyqBBg7BgwQKMHj0aPXv2hFQqxfHjx/H1118jKioKHTp0MHURiYiIiIjIQBjUICIiIiIiizJu3Dh4eHjgiy++wLJly1BYWIh69eph+vTpGDNmjMaFwomIiIiIyLJxTQ0iIiIiIiIiIiIiIrIIXFODiIiIiIiIiIiIiIgsAoMaRERERERERERERERkERjUICIiIiIiIiIiIiIii8CgBhERERERERERERERWQQGNYiIiIiIiIiIiIiIyCIwqEFERERERERERERERBaBQQ0iIiIiIiIiIiIiIrIIDGoQEREREREREREREZFFYFCDiIiIiIiIiIiIiIgswv8D4RDEtB9N3pQAAAAASUVORK5CYII=" }, "metadata": {}, "output_type": "display_data" } ], - "execution_count": 18 + "execution_count": 42 }, { "metadata": {}, From 24d45cd261344cb7b6cfe6f20a181c31c8aa46ad Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 27 Oct 2024 17:45:03 -0400 Subject: [PATCH 11/22] Update Quickstart notebook --- examples/Quickstart_Diagnostics.ipynb | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/examples/Quickstart_Diagnostics.ipynb b/examples/Quickstart_Diagnostics.ipynb index 6ceddd5bc..d2c92bcaf 100644 --- a/examples/Quickstart_Diagnostics.ipynb +++ b/examples/Quickstart_Diagnostics.ipynb @@ -3,7 +3,7 @@ { "metadata": {}, "cell_type": "markdown", - "source": "Quickstart Diagnostics", + "source": "# Quickstart: Amortized Posterior Estimation", "id": "ee8e90d08cdb035e" }, { @@ -39,6 +39,28 @@ "outputs": [], "execution_count": 24 }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "## Generative Model Definition\n", + "\n", + "The toy Gaussian model we will use for this tutorial takes a particularly simple form:\n", + "\n", + "\\begin{align}\n", + " \\mathbf{\\mu} &\\sim \\mathcal{N}_D(\\mathbf{0}, \\sigma_0 \\mathbb{I}),\\\\\n", + " \\mathbf{x}_n &\\sim \\mathcal{N}_D(\\mathbf{\\mu}, \\sigma_1 \\mathbb{I}) \\quad \\text{for } n = 1, ..., N,\n", + "\\end{align}\n", + "\n", + "where $\\mathcal{N}_D$\n", + "denotes a multivariate Gaussian (normal) density with $D$\n", + "dimensions, which we set at $D = 4$\n", + "for the current example. For simplicity, we will also set $\\sigma_0 = 1$\n", + "and $\\sigma_1 = 1$\n", + ". We will now implement this model using the latest numpy interface." + ], + "id": "90baf0445b69eb7d" + }, { "metadata": { "ExecuteTime": { From fa3d90c681a02c2c16c5e98007bc95a749341048 Mon Sep 17 00:00:00 2001 From: Jerry Date: Tue, 29 Oct 2024 13:40:21 -0400 Subject: [PATCH 12/22] Add SBC-related diagnostics and z-score --- bayesflow/diagnostics/__init__.py | 4 + bayesflow/diagnostics/plot_sbc_ecdf.py | 184 ++++++++ bayesflow/diagnostics/plot_sbc_histogram.py | 151 ++++++ .../diagnostics/plot_z_score_contraction.py | 154 ++++++ examples/Quickstart_Diagnostics.ipynb | 443 ++++++++++-------- 5 files changed, 735 insertions(+), 201 deletions(-) create mode 100644 bayesflow/diagnostics/plot_sbc_ecdf.py create mode 100644 bayesflow/diagnostics/plot_sbc_histogram.py create mode 100644 bayesflow/diagnostics/plot_z_score_contraction.py diff --git a/bayesflow/diagnostics/__init__.py b/bayesflow/diagnostics/__init__.py index 5e4fdbce2..0d77a37aa 100644 --- a/bayesflow/diagnostics/__init__.py +++ b/bayesflow/diagnostics/__init__.py @@ -1,2 +1,6 @@ from .plot_losses import plot_losses from .plot_recovery import plot_recovery +from .plot_sbc_ecdf import plot_sbc_ecdf +from .plot_sbc_histogram import plot_sbc_histograms +from .plot_distribution_2d import plot_distribution_2d +from .plot_z_score_contraction import plot_z_score_contraction \ No newline at end of file diff --git a/bayesflow/diagnostics/plot_sbc_ecdf.py b/bayesflow/diagnostics/plot_sbc_ecdf.py new file mode 100644 index 000000000..e4c860a5f --- /dev/null +++ b/bayesflow/diagnostics/plot_sbc_ecdf.py @@ -0,0 +1,184 @@ + +import matplotlib.pyplot as plt +import numpy as np +import seaborn as sns + +from ..utils.plot_utils import check_posterior_prior_shapes +from ..utils.ecdf import simultaneous_ecdf_bands + +def plot_sbc_ecdf( + post_samples, + prior_samples, + difference=False, + stacked=False, + fig_size=None, + param_names=None, + label_fontsize=16, + legend_fontsize=14, + title_fontsize=18, + tick_fontsize=12, + rank_ecdf_color="#a34f4f", + fill_color="grey", + n_row=None, + n_col=None, + **kwargs, +): + """Creates the empirical CDFs for each marginal rank distribution and plots it against + a uniform ECDF. ECDF simultaneous bands are drawn using simulations from the uniform, + as proposed by [1]. + + For models with many parameters, use `stacked=True` to obtain an idea of the overall calibration + of a posterior approximator. + + [1] Säilynoja, T., Bürkner, P. C., & Vehtari, A. (2022). Graphical test for discrete uniformity and + its applications in goodness-of-fit evaluation and multiple sample comparison. Statistics and Computing, + 32(2), 1-21. https://arxiv.org/abs/2103.10522 + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws obtained for generating n_data_sets + difference : bool, optional, default: False + If `True`, plots the ECDF difference. Enables a more dynamic visualization range. + stacked : bool, optional, default: False + If `True`, all ECDFs will be plotted on the same plot. If `False`, each ECDF will + have its own subplot, similar to the behavior of `plot_sbc_histograms`. + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None. Only relevant if `stacked=False`. + fig_size : tuple or None, optional, default: None + The figure size passed to the matplotlib constructor. Inferred if None. + label_fontsize : int, optional, default: 16 + The font size of the y-label and y-label texts + legend_fontsize : int, optional, default: 14 + The font size of the legend text + title_fontsize : int, optional, default: 18 + The font size of the title text. Only relevant if `stacked=False` + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + rank_ecdf_color : str, optional, default: '#a34f4f' + The color to use for the rank ECDFs + fill_color : str, optional, default: 'grey' + The color of the fill arguments. + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + **kwargs : dict, optional, default: {} + Keyword arguments can be passed to control the behavior of ECDF simultaneous band computation + through the ``ecdf_bands_kwargs`` dictionary. See `simultaneous_ecdf_bands` for keyword arguments + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. + """ + + # Sanity checks + check_posterior_prior_shapes(post_samples, prior_samples) + + # Store reference to number of parameters + n_params = post_samples.shape[-1] + + # Compute fractional ranks (using broadcasting) + ranks = np.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) / post_samples.shape[1] + + # Prepare figure + if stacked: + n_row, n_col = 1, 1 + f, ax = plt.subplots(1, 1, figsize=fig_size) + else: + # Determine number of rows and columns for subplots based on inputs + if n_row is None and n_col is None: + n_row = int(np.ceil(n_params / 6)) + n_col = int(np.ceil(n_params / n_row)) + elif n_row is None and n_col is not None: + n_row = int(np.ceil(n_params / n_col)) + elif n_row is not None and n_col is None: + n_col = int(np.ceil(n_params / n_row)) + + # Determine fig_size dynamically, if None + if fig_size is None: + fig_size = (int(5 * n_col), int(5 * n_row)) + + # Initialize figure + f, ax = plt.subplots(n_row, n_col, figsize=fig_size) + ax = np.atleast_1d(ax) + + # Plot individual ecdf of parameters + for j in range(ranks.shape[-1]): + ecdf_single = np.sort(ranks[:, j]) + xx = ecdf_single + yy = np.arange(1, xx.shape[-1] + 1) / float(xx.shape[-1]) + + # Difference, if specified + if difference: + yy -= xx + + if stacked: + if j == 0: + ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDFs") + else: + ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95) + else: + ax.flat[j].plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDF") + + # Compute uniform ECDF and bands + alpha, z, L, H = simultaneous_ecdf_bands(post_samples.shape[0], **kwargs.pop("ecdf_bands_kwargs", {})) + + # Difference, if specified + if difference: + L -= z + H -= z + ylab = "ECDF difference" + else: + ylab = "ECDF" + + # Add simultaneous bounds + if stacked: + titles = [None] + axes = [ax] + else: + axes = ax.flat + if param_names is None: + titles = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + else: + titles = param_names + + for _ax, title in zip(axes, titles): + _ax.fill_between(z, L, H, color=fill_color, alpha=0.2, label=rf"{int((1-alpha) * 100)}$\%$ Confidence Bands") + + # Prettify plot + sns.despine(ax=_ax) + _ax.grid(alpha=0.35) + _ax.legend(fontsize=legend_fontsize) + _ax.set_title(title, fontsize=title_fontsize) + _ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) + _ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + # Only add x-labels to the bottom row + if stacked: + bottom_row = [ax] + else: + bottom_row = ax if n_row == 1 else ax[-1, :] + for _ax in bottom_row: + _ax.set_xlabel("Fractional rank statistic", fontsize=label_fontsize) + + # Only add y-labels to right left-most row + if n_row == 1: # if there is only one row, the ax array is 1D + axes[0].set_ylabel(ylab, fontsize=label_fontsize) + else: # if there is more than one row, the ax array is 2D + for _ax in ax[:, 0]: + _ax.set_ylabel(ylab, fontsize=label_fontsize) + + # Remove unused axes entirely + for _ax in axes[n_params:]: + _ax.remove() + + f.tight_layout() + return f \ No newline at end of file diff --git a/bayesflow/diagnostics/plot_sbc_histogram.py b/bayesflow/diagnostics/plot_sbc_histogram.py new file mode 100644 index 000000000..100ec9704 --- /dev/null +++ b/bayesflow/diagnostics/plot_sbc_histogram.py @@ -0,0 +1,151 @@ + +import logging +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns + +from scipy.stats import binom +from ..utils.plot_utils import check_posterior_prior_shapes + +def plot_sbc_histograms( + post_samples, + prior_samples, + param_names=None, + fig_size=None, + num_bins=None, + binomial_interval=0.99, + label_fontsize=16, + title_fontsize=18, + tick_fontsize=12, + hist_color="#a34f4f", + n_row=None, + n_col=None, +): + """Creates and plots publication-ready histograms of rank statistics for simulation-based calibration + (SBC) checks according to [1]. + + Any deviation from uniformity indicates miscalibration and thus poor convergence + of the networks or poor combination between generative model / networks. + + [1] Talts, S., Betancourt, M., Simpson, D., Vehtari, A., & Gelman, A. (2018). + Validating Bayesian inference algorithms with simulation-based calibration. + arXiv preprint arXiv:1804.06788. + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws obtained for generating n_data_sets + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + fig_size : tuple or None, optional, default : None + The figure size passed to the matplotlib constructor. Inferred if None + num_bins : int, optional, default: 10 + The number of bins to use for each marginal histogram + binomial_interval : float in (0, 1), optional, default: 0.99 + The width of the confidence interval for the binomial distribution + label_fontsize : int, optional, default: 16 + The font size of the y-label text + title_fontsize : int, optional, default: 18 + The font size of the title text + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + hist_color : str, optional, default '#a34f4f' + The color to use for the histogram body + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. + """ + + # Sanity check + check_posterior_prior_shapes(post_samples, prior_samples) + + # Determine the ratio of simulations to prior draws + n_sim, n_draws, n_params = post_samples.shape + ratio = int(n_sim / n_draws) + + # Log a warning if N/B ratio recommended by Talts et al. (2018) < 20 + if ratio < 20: + logger = logging.getLogger() + logger.setLevel(logging.INFO) + logger.info( + f"The ratio of simulations / posterior draws should be > 20 " + + f"for reliable variance reduction, but your ratio is {ratio}.\ + Confidence intervals might be unreliable!" + ) + + # Set n_bins automatically, if nothing provided + if num_bins is None: + num_bins = int(ratio / 2) + # Attempt a fix if a single bin is determined so plot still makes sense + if num_bins == 1: + num_bins = 5 + + # Determine n params and param names if None given + if param_names is None: + param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + + # Determine number of rows and columns for subplots based on inputs + if n_row is None and n_col is None: + n_row = int(np.ceil(n_params / 6)) + n_col = int(np.ceil(n_params / n_row)) + elif n_row is None and n_col is not None: + n_row = int(np.ceil(n_params / n_col)) + elif n_row is not None and n_col is None: + n_col = int(np.ceil(n_params / n_row)) + + # Initialize figure + if fig_size is None: + fig_size = (int(5 * n_col), int(5 * n_row)) + f, axarr = plt.subplots(n_row, n_col, figsize=fig_size) + axarr = np.atleast_1d(axarr) + + # Compute ranks (using broadcasting) + ranks = np.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) + + # Compute confidence interval and mean + N = int(prior_samples.shape[0]) + # uniform distribution expected -> for all bins: equal probability + # p = 1 / num_bins that a rank lands in that bin + endpoints = binom.interval(binomial_interval, N, 1 / num_bins) + mean = N / num_bins # corresponds to binom.mean(N, 1 / num_bins) + + # Plot marginal histograms in a loop + if n_row > 1: + ax = axarr.flat + else: + ax = axarr + for j in range(len(param_names)): + ax[j].axhspan(endpoints[0], endpoints[1], facecolor="gray", alpha=0.3) + ax[j].axhline(mean, color="gray", zorder=0, alpha=0.9) + sns.histplot(ranks[:, j], kde=False, ax=ax[j], color=hist_color, bins=num_bins, alpha=0.95) + ax[j].set_title(param_names[j], fontsize=title_fontsize) + ax[j].spines["right"].set_visible(False) + ax[j].spines["top"].set_visible(False) + ax[j].get_yaxis().set_ticks([]) + ax[j].set_ylabel("") + ax[j].tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax[j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + # Only add x-labels to the bottom row + bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + for _ax in bottom_row: + _ax.set_xlabel("Rank statistic", fontsize=label_fontsize) + + # Remove unused axes entirely + for _ax in axarr[n_params:]: + _ax.remove() + + f.tight_layout() + return f diff --git a/bayesflow/diagnostics/plot_z_score_contraction.py b/bayesflow/diagnostics/plot_z_score_contraction.py new file mode 100644 index 000000000..77cc33922 --- /dev/null +++ b/bayesflow/diagnostics/plot_z_score_contraction.py @@ -0,0 +1,154 @@ + +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns + +from ..utils.plot_utils import check_posterior_prior_shapes + +def plot_z_score_contraction( + post_samples, + prior_samples, + param_names=None, + fig_size=None, + label_fontsize=16, + title_fontsize=18, + tick_fontsize=12, + color="#8f2727", + n_col=None, + n_row=None, +): + """Implements a graphical check for global model sensitivity by plotting the posterior + z-score over the posterior contraction for each set of posterior samples in ``post_samples`` + according to [1]. + + - The definition of the posterior z-score is: + + post_z_score = (posterior_mean - true_parameters) / posterior_std + + And the score is adequate if it centers around zero and spreads roughly in the interval [-3, 3] + + - The definition of posterior contraction is: + + post_contraction = 1 - (posterior_variance / prior_variance) + + In other words, the posterior contraction is a proxy for the reduction in uncertainty gained by + replacing the prior with the posterior. The ideal posterior contraction tends to 1. + Contraction near zero indicates that the posterior variance is almost identical to + the prior variance for the particular marginal parameter distribution. + + Note: Means and variances will be estimated via their sample-based estimators. + + [1] Schad, D. J., Betancourt, M., & Vasishth, S. (2021). + Toward a principled Bayesian workflow in cognitive science. + Psychological methods, 26(1), 103. + + Paper also available at https://arxiv.org/abs/1904.12765 + + Parameters + ---------- + post_samples : np.ndarray of shape (n_data_sets, n_post_draws, n_params) + The posterior draws obtained from n_data_sets + prior_samples : np.ndarray of shape (n_data_sets, n_params) + The prior draws (true parameters) obtained for generating the n_data_sets + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + fig_size : tuple or None, optional, default : None + The figure size passed to the matplotlib constructor. Inferred if None. + label_fontsize : int, optional, default: 16 + The font size of the y-label text + title_fontsize : int, optional, default: 18 + The font size of the title text + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + color : str, optional, default: '#8f2727' + The color for the true vs. estimated scatter points and error bars + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + ShapeError + If there is a deviation from the expected shapes of ``post_samples`` and ``prior_samples``. + """ + + # Sanity check for shape integrity + check_posterior_prior_shapes(post_samples, prior_samples) + + # Estimate posterior means and stds + post_means = post_samples.mean(axis=1) + post_stds = post_samples.std(axis=1, ddof=1) + post_vars = post_samples.var(axis=1, ddof=1) + + # Estimate prior variance + prior_vars = prior_samples.var(axis=0, keepdims=True, ddof=1) + + # Compute contraction + post_cont = 1 - (post_vars / prior_vars) + + # Compute posterior z score + z_score = (post_means - prior_samples) / post_stds + + # Determine number of params and param names if None given + n_params = prior_samples.shape[-1] + if param_names is None: + param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + + # Determine number of rows and columns for subplots based on inputs + if n_row is None and n_col is None: + n_row = int(np.ceil(n_params / 6)) + n_col = int(np.ceil(n_params / n_row)) + elif n_row is None and n_col is not None: + n_row = int(np.ceil(n_params / n_col)) + elif n_row is not None and n_col is None: + n_col = int(np.ceil(n_params / n_row)) + + # Initialize figure + if fig_size is None: + fig_size = (int(4 * n_col), int(4 * n_row)) + f, axarr = plt.subplots(n_row, n_col, figsize=fig_size) + + # turn axarr into 1D list + axarr = np.atleast_1d(axarr) + if n_col > 1 or n_row > 1: + axarr_it = axarr.flat + else: + axarr_it = axarr + + # Loop and plot + for i, ax in enumerate(axarr_it): + if i >= n_params: + break + + ax.scatter(post_cont[:, i], z_score[:, i], color=color, alpha=0.5) + ax.set_title(param_names[i], fontsize=title_fontsize) + sns.despine(ax=ax) + ax.grid(alpha=0.5) + ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) + ax.set_xlim([-0.05, 1.05]) + + # Only add x-labels to the bottom row + bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + for _ax in bottom_row: + _ax.set_xlabel("Posterior contraction", fontsize=label_fontsize) + + # Only add y-labels to right left-most row + if n_row == 1: # if there is only one row, the ax array is 1D + axarr[0].set_ylabel("Posterior z-score", fontsize=label_fontsize) + # If there is more than one row, the ax array is 2D + else: + for _ax in axarr[:, 0]: + _ax.set_ylabel("Posterior z-score", fontsize=label_fontsize) + + # Remove unused axes entirely + for _ax in axarr_it[n_params:]: + _ax.remove() + + f.tight_layout() + return f diff --git a/examples/Quickstart_Diagnostics.ipynb b/examples/Quickstart_Diagnostics.ipynb index d2c92bcaf..223af9849 100644 --- a/examples/Quickstart_Diagnostics.ipynb +++ b/examples/Quickstart_Diagnostics.ipynb @@ -9,8 +9,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:18:05.726356Z", - "start_time": "2024-10-22T16:18:05.710363Z" + "end_time": "2024-10-29T17:19:36.903584Z", + "start_time": "2024-10-29T17:19:36.887584Z" } }, "cell_type": "code", @@ -37,7 +37,7 @@ ], "id": "56c348ceefe0a66f", "outputs": [], - "execution_count": 24 + "execution_count": 69 }, { "metadata": {}, @@ -64,8 +64,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:24:23.691704Z", - "start_time": "2024-10-22T16:24:23.677134Z" + "end_time": "2024-10-29T17:19:41.043173Z", + "start_time": "2024-10-29T17:19:41.029441Z" } }, "cell_type": "code", @@ -80,39 +80,39 @@ ], "id": "214241c510d751f4", "outputs": [], - "execution_count": 38 + "execution_count": 70 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:24:24.077994Z", - "start_time": "2024-10-22T16:24:24.058994Z" + "end_time": "2024-10-29T17:19:44.441846Z", + "start_time": "2024-10-29T17:19:44.424298Z" } }, "cell_type": "code", - "source": "simulator = bf.simulators.CompositeLambdaSimulator([theta_prior, forward_model])", + "source": "simulator = bf.make_simulator([theta_prior, forward_model])", "id": "938dc70eb8ba4a54", "outputs": [], - "execution_count": 39 + "execution_count": 71 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:24:24.971064Z", - "start_time": "2024-10-22T16:24:24.948063Z" + "end_time": "2024-10-29T17:19:44.829362Z", + "start_time": "2024-10-29T17:19:44.810435Z" } }, "cell_type": "code", "source": "sample_data = simulator.sample((50,))", "id": "931b7f6a77c8401b", "outputs": [], - "execution_count": 40 + "execution_count": 72 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:24:27.263198Z", - "start_time": "2024-10-22T16:24:27.249771Z" + "end_time": "2024-10-29T17:19:45.641792Z", + "start_time": "2024-10-29T17:19:45.631779Z" } }, "cell_type": "code", @@ -139,13 +139,13 @@ ] } ], - "execution_count": 41 + "execution_count": 73 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:25:08.028115Z", - "start_time": "2024-10-22T16:25:08.013014Z" + "end_time": "2024-10-29T17:19:56.765935Z", + "start_time": "2024-10-29T17:19:56.742426Z" } }, "cell_type": "code", @@ -155,139 +155,174 @@ { "data": { "text/plain": [ - "{'theta': array([[ 0.34066415, -0.5138845 , 1.4528089 , -0.49958685],\n", - " [ 0.86015004, 0.48635587, 0.2364767 , -0.53709507],\n", - " [-0.6582664 , -0.1106401 , -0.5822995 , 0.29959023],\n", - " [ 0.17613287, 0.40979308, -1.1803418 , 0.7906092 ],\n", - " [-2.5815134 , -0.5926008 , -1.442977 , -1.1212678 ],\n", - " [ 0.15085632, 0.8538437 , -0.71999 , -0.6779198 ],\n", - " [-0.04969181, 0.45948943, 0.6696255 , 0.9931811 ],\n", - " [ 1.015672 , 0.28774238, 0.18076487, -0.11111598],\n", - " [-0.7719207 , -1.3176122 , 0.5294132 , 0.4176514 ],\n", - " [ 0.03191099, -0.6768063 , 0.5141813 , -1.592261 ],\n", - " [-0.99575025, -1.8044442 , 0.56740063, -1.9281672 ],\n", - " [ 0.81070745, -0.60243636, -0.10667904, -0.3417887 ],\n", - " [ 1.0685011 , -1.3776896 , 1.8168131 , -0.8139481 ],\n", - " [ 0.01134184, 0.02382061, 1.6661643 , -0.46634912],\n", - " [-1.8478132 , -0.08229433, -0.04664409, -0.11284911],\n", - " [ 1.4040706 , -0.67715555, -0.2592975 , -0.20792411],\n", - " [ 2.399644 , 0.89749336, 2.4230204 , 0.0970002 ],\n", - " [ 0.93040395, 0.25475293, 0.8398071 , 0.29117548],\n", - " [-0.16029291, -0.02478953, 0.29951358, 0.33260188],\n", - " [-0.86853355, -1.1873287 , 1.9413403 , 0.32616952],\n", - " [-0.67677224, 0.02859171, 0.5428518 , -1.5521122 ],\n", - " [ 2.3776774 , -0.6828046 , 0.5556347 , -1.4531173 ],\n", - " [ 0.17357443, -0.45678964, -0.12053017, -0.8963106 ],\n", - " [ 0.20243092, 0.4169088 , 0.4405855 , 0.06946267],\n", - " [-0.4409229 , 0.07481287, -0.82419586, 0.33597344],\n", - " [-1.0189365 , 1.2648267 , -0.84935266, 0.58711445],\n", - " [ 0.8026323 , -0.73901856, -0.3391541 , 0.5761913 ],\n", - " [-0.9766659 , -1.1858828 , -0.5103791 , 0.73724025],\n", - " [ 1.5424025 , 0.28468883, -0.05811996, -1.0388048 ],\n", - " [ 1.6943154 , -0.36717394, 0.37467596, -0.18305473],\n", - " [-1.4355195 , -1.1271007 , 0.98609 , -2.1474707 ],\n", - " [-0.24416563, -0.88949496, -0.83292514, 0.05820413],\n", - " [ 1.0845547 , 0.97108537, 0.18267912, 0.16928157],\n", - " [ 1.5283549 , -0.9298855 , -1.9587208 , 1.4929713 ],\n", - " [ 0.34513605, 0.904506 , 0.46237883, -1.4228871 ],\n", - " [-0.81769085, 0.7091762 , -0.54571545, 0.5346092 ],\n", - " [-1.221732 , -1.3575743 , -1.3833972 , 1.5352001 ],\n", - " [-1.1201226 , -0.11686669, -0.21259853, -0.01677035],\n", - " [-0.1394734 , -0.3124989 , -0.21038432, -0.2977672 ],\n", - " [ 0.41691035, 0.28065392, -0.38032046, 0.95429885],\n", - " [-1.771154 , -1.1321709 , -1.9100127 , 0.5539506 ],\n", - " [-1.447865 , 1.2216287 , 2.154635 , -0.3226352 ],\n", - " [ 0.68915546, 0.41079593, -0.05922764, -2.326437 ],\n", - " [-0.81387454, -1.0814589 , -0.6311428 , -0.16105291],\n", - " [-0.12934463, 0.26514062, -1.6791768 , -0.20046751],\n", - " [-0.19893628, -0.48227343, 0.38067642, -0.8310641 ],\n", - " [ 1.2004272 , 0.0041292 , -0.02631984, 1.3608695 ],\n", - " [ 2.2010703 , 1.2613806 , -1.1433984 , -0.1893912 ],\n", - " [ 0.38409767, -0.2333284 , 0.67292047, 1.7366157 ],\n", - " [-0.22914144, 1.6965197 , 1.2130772 , 0.39718068]],\n", - " dtype=float32),\n", - " 'x': array([[[ 3.6254582 , -1.2774805 , 1.829676 , -0.32256916],\n", - " [-1.256944 , 0.3428607 , 1.6378316 , -1.9851911 ],\n", - " [ 0.7485846 , 1.0144739 , 2.0964758 , -0.01522239],\n", + "{'theta': array([[-0.25933109, -0.29311586, -0.43468539, -0.75589758],\n", + " [-0.62746534, 0.26783042, -0.54751926, -0.33454591],\n", + " [ 0.48858301, -0.48960682, 0.41613236, 0.38619082],\n", + " [-1.26044397, 0.28186682, 0.16251423, 0.03970525],\n", + " [-0.81672093, -0.33752783, 0.59320318, 0.06854435],\n", + " [-0.8297982 , -0.89704741, 0.82610742, 0.79129585],\n", + " [-0.27320508, -1.24441094, 1.73280939, 2.74006395],\n", + " [-1.25845926, -0.67339622, -0.51586832, -0.64329048],\n", + " [-1.13386794, -0.46101155, 0.20951863, -0.00562751],\n", + " [-0.22513122, -1.57013183, -0.16388857, -0.43789601],\n", + " [-0.81567616, 1.14158432, -0.46095738, -1.04537264],\n", + " [ 0.27219349, 0.48780616, -0.61371472, -1.40612089],\n", + " [-1.27484604, 0.72096922, -0.08216321, 0.06403711],\n", + " [ 1.01779488, 0.971248 , -0.19348285, -0.5629501 ],\n", + " [ 0.11858625, -0.38555645, -0.35270227, -0.9507192 ],\n", + " [ 0.49935472, 0.52885169, -1.24047814, 0.25604984],\n", + " [ 0.04351305, 1.33752058, 1.34091618, -0.53722738],\n", + " [-1.33391022, -2.78228719, -0.58246235, -0.34395886],\n", + " [-0.85785128, 0.180416 , 1.22235207, 0.33605605],\n", + " [-1.38918174, -1.46010187, -0.09209822, -1.64827012],\n", + " [ 0.01536091, 0.1219928 , -2.29736111, 0.65614956],\n", + " [ 1.80411329, 2.02312911, -0.3190316 , 1.50478783],\n", + " [-0.32357835, -0.65384842, -1.10786669, -0.70311434],\n", + " [ 0.53677133, 0.27758978, -1.93671838, -0.54012384],\n", + " [-2.13069546, -0.12857099, -0.32827032, 0.63181261],\n", + " [ 1.1965332 , -1.15250211, -0.46760947, 2.16295808],\n", + " [ 0.47006833, -0.39309495, 1.53650972, -0.09418776],\n", + " [-0.52887427, 1.55835402, -0.47106973, -1.17590053],\n", + " [-0.38151978, 0.43464099, -0.00713016, -0.05979383],\n", + " [ 1.71986058, 1.38505429, -0.93926711, -2.06344947],\n", + " [-1.48315744, 0.44258625, -0.62879085, 0.92203648],\n", + " [ 1.19590277, -0.88942841, -0.95436464, 0.58319199],\n", + " [ 0.23751304, -0.33223209, 1.62014829, -1.00444741],\n", + " [ 1.02197763, 0.04611375, 1.60963096, 0.43521423],\n", + " [-0.42665146, 0.2669926 , -1.0226335 , -1.04550126],\n", + " [-0.23524817, -0.51315255, -0.88112403, -1.26276976],\n", + " [ 0.11218564, -0.53560355, -0.28893432, -0.55060254],\n", + " [-0.02889448, 0.87763176, -1.05474197, -1.8619115 ],\n", + " [-1.43372355, -0.96116922, -0.66400162, -1.89558178],\n", + " [-0.01243617, -1.14342978, -1.69764533, -0.62080292],\n", + " [-0.57908435, 1.94704634, -1.35626736, -0.48912263],\n", + " [ 0.33043446, -0.46925831, 0.3484858 , 1.06964219],\n", + " [ 0.44160495, -1.29482916, -2.42269311, -2.02783931],\n", + " [ 0.12393234, -0.35137249, -1.1411141 , 0.40853396],\n", + " [-0.71259773, 0.95532399, 1.26653677, -1.11252735],\n", + " [-0.68099989, 2.12920842, -0.76729667, -1.22271607],\n", + " [-0.09915802, -0.67623208, 0.44114305, -0.03945971],\n", + " [ 0.19181804, 0.65245839, 1.07749326, 0.86936139],\n", + " [-1.73115914, 0.10496796, 2.21345244, -1.98460671],\n", + " [ 0.52023042, 0.93434087, 0.65236837, 0.03921144]]),\n", + " 'x': array([[[-1.26781729e+00, -1.56848527e+00, -1.75007674e+00,\n", + " -1.93042184e-01],\n", + " [-9.37775092e-01, -2.20027558e+00, -7.95896880e-01,\n", + " -1.47081401e+00],\n", + " [-4.61856770e-01, -3.39117216e-01, -7.30478779e-01,\n", + " -3.47666937e-01],\n", " ...,\n", - " [ 0.08928863, -0.51128244, 1.1220746 , 0.7665733 ],\n", - " [ 0.3698297 , -3.188901 , 2.025168 , 0.01316792],\n", - " [-0.0478575 , -1.2997395 , 0.98696446, -1.16682 ]],\n", + " [ 5.80608803e-01, 1.39517252e+00, -1.22429003e+00,\n", + " -1.29332305e+00],\n", + " [ 8.34692166e-01, -7.89882484e-01, -3.93390701e-01,\n", + " 3.24383636e-01],\n", + " [ 1.24818014e+00, -1.05635872e-01, -1.17490469e+00,\n", + " -2.62252489e+00]],\n", " \n", - " [[ 2.8832037 , 0.8261143 , -1.1377803 , -1.1128289 ],\n", - " [ 0.9582984 , 0.79203564, -0.3229012 , -1.6079041 ],\n", - " [ 0.16740797, 1.4642444 , -0.06614214, 0.3791665 ],\n", + " [[-1.14491834e+00, 7.14058585e-01, -2.08920723e-01,\n", + " -1.05861866e+00],\n", + " [-1.03280203e-01, 7.35892999e-02, -1.32098640e+00,\n", + " -4.51334284e-01],\n", + " [ 5.55593604e-01, -2.41702128e+00, -1.49961133e+00,\n", + " 6.74848497e-01],\n", " ...,\n", - " [ 1.3970535 , 0.965935 , 0.5211107 , -0.23564771],\n", - " [ 0.92998844, -0.22871257, -1.2391579 , 0.9288718 ],\n", - " [ 0.23330195, -1.122806 , 0.29205167, -0.21602471]],\n", + " [ 2.72805116e-02, -2.43346329e-01, -1.62073085e-01,\n", + " -3.46627566e-01],\n", + " [-1.09300949e+00, -9.60072721e-01, -2.52253395e+00,\n", + " -5.34212639e-01],\n", + " [-3.27940871e-01, 5.38197735e-02, -1.64006570e+00,\n", + " -1.25524962e+00]],\n", " \n", - " [[-2.1422992 , 1.1895313 , -1.2813323 , 0.94614196],\n", - " [-0.6536977 , -1.7648559 , -2.6089973 , -0.25280094],\n", - " [-0.9758994 , -0.09433198, 0.5126696 , -0.4680349 ],\n", + " [[ 4.45699278e-02, -9.64632138e-01, 8.05963387e-01,\n", + " 1.32152877e+00],\n", + " [ 1.68230274e+00, -1.14377222e+00, 4.93747135e-01,\n", + " 6.33770351e-01],\n", + " [ 2.46336846e+00, -7.59719410e-01, 6.19234586e-01,\n", + " -1.06262060e+00],\n", " ...,\n", - " [ 0.6029331 , -0.5393456 , -3.4281068 , 1.9625674 ],\n", - " [-2.7362714 , 1.6726367 , -0.20103195, -0.2370804 ],\n", - " [ 1.6226304 , -0.20690091, 0.6907045 , -0.4412011 ]],\n", + " [-2.21330491e-01, -1.63664977e+00, -4.24202685e-01,\n", + " 2.21401046e+00],\n", + " [-5.92631178e-01, -1.18871354e+00, 1.05690079e+00,\n", + " 1.82679143e-02],\n", + " [-6.52295715e-01, -1.74524166e+00, -1.13048986e-01,\n", + " 2.76003369e-01]],\n", " \n", " ...,\n", " \n", - " [[ 2.5122259 , 2.7933333 , -1.8370881 , -0.21269593],\n", - " [ 0.08193951, 2.768969 , -1.8215785 , -1.3286033 ],\n", - " [ 1.3069335 , 1.077523 , -3.191183 , -0.19069603],\n", + " [[ 8.90274556e-01, 2.34647339e+00, -3.12386828e-01,\n", + " 5.98836989e-01],\n", + " [ 1.08533152e+00, -6.57631048e-01, 1.08294434e+00,\n", + " 1.43612378e+00],\n", + " [-5.44868476e-01, 5.08563546e-01, 1.72220536e+00,\n", + " 2.73708834e+00],\n", " ...,\n", - " [ 2.0579758 , 1.8073362 , -0.04059944, -0.1998354 ],\n", - " [ 1.7150037 , 1.5609382 , -1.7395236 , -1.3606325 ],\n", - " [ 2.9268007 , 0.23673572, -0.95533824, -1.3200113 ]],\n", + " [-1.26782912e+00, 1.03425503e+00, -7.61075824e-01,\n", + " 2.78565962e-01],\n", + " [-8.92495473e-01, 1.83013938e+00, 1.13817595e+00,\n", + " 1.29987144e+00],\n", + " [ 2.15594110e-01, 1.58127540e+00, 1.19747991e+00,\n", + " 7.24400265e-01]],\n", " \n", - " [[ 1.4436094 , -1.3594241 , 0.415787 , 2.261267 ],\n", - " [ 0.31457698, -0.8279396 , 1.7133617 , 1.7376964 ],\n", - " [-0.72784173, -1.3070168 , 1.0091938 , 2.5164726 ],\n", + " [[-1.14824916e+00, 1.89313212e+00, 8.44448110e-01,\n", + " -1.91060527e+00],\n", + " [-9.58832969e-01, 3.88623976e-01, 3.21674153e+00,\n", + " -2.67463490e+00],\n", + " [-2.29650363e+00, -1.91242140e+00, 1.58249382e+00,\n", + " -1.27508674e+00],\n", " ...,\n", - " [ 0.4194977 , -0.2666566 , 0.8669603 , 3.1416023 ],\n", - " [-0.5483485 , -0.539848 , -0.2195546 , 1.9718776 ],\n", - " [ 0.20176356, 1.069642 , -0.65165126, 2.8493927 ]],\n", + " [-1.73705189e+00, 1.63838962e-01, 1.43653118e+00,\n", + " -2.34070132e+00],\n", + " [-9.01991105e-01, 8.94754497e-01, 1.82770411e+00,\n", + " -2.53140932e-01],\n", + " [-2.30099046e+00, 2.96103008e-01, 9.80372984e-01,\n", + " -5.14524347e-01]],\n", " \n", - " [[-0.6640122 , 1.3560729 , 0.5739129 , -0.85077333],\n", - " [-1.5651604 , 2.4200397 , 1.7220724 , -2.3291683 ],\n", - " [ 0.12706083, 0.7526239 , 0.46398893, 0.5266859 ],\n", + " [[ 2.46427849e-01, 3.94032144e-01, 1.05723707e+00,\n", + " 1.06481307e+00],\n", + " [ 8.04469283e-01, 1.51746135e+00, 1.05348254e+00,\n", + " 1.54013789e+00],\n", + " [-2.61156347e-01, -5.98895418e-01, 1.47485751e+00,\n", + " 2.36642360e+00],\n", " ...,\n", - " [ 0.28359127, 1.544274 , 1.2267944 , -0.26292163],\n", - " [-0.24361266, 2.2830348 , -0.09784857, -0.17053986],\n", - " [-0.12756453, 0.9381281 , 1.8230177 , 0.8788254 ]]],\n", - " dtype=float32)}" + " [-1.18418617e-01, 1.20249872e-03, 2.39667469e+00,\n", + " 1.57961813e-01],\n", + " [ 2.27457411e+00, 8.33884636e-02, 7.01592201e-01,\n", + " 6.07449893e-01],\n", + " [ 1.51785989e+00, 8.85566442e-01, -1.75853019e-01,\n", + " -7.83206578e-01]]])}" ] }, - "execution_count": 43, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 43 + "execution_count": 74 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:25:14.230395Z", - "start_time": "2024-10-22T16:25:14.219237Z" + "end_time": "2024-10-29T17:38:01.874530Z", + "start_time": "2024-10-29T17:38:01.864368Z" } }, "cell_type": "code", "source": [ - "data_adapter = bf.ContinuousApproximator.build_data_adapter(\n", + "data_adapter = bf.ContinuousApproximator.build_adapter(\n", " inference_variables=[\"theta\"],\n", - " inference_conditions=[\"x\"]\n", + " inference_conditions=[\"x\"],\n", + " summary_variables=[\"x\"]\n", ")" ], "id": "b0f547fc9dfec62e", "outputs": [], - "execution_count": 44 + "execution_count": 98 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:25:14.901880Z", - "start_time": "2024-10-22T16:25:14.887223Z" + "end_time": "2024-10-29T17:38:02.624841Z", + "start_time": "2024-10-29T17:38:02.613736Z" } }, "cell_type": "code", @@ -299,13 +334,13 @@ ], "id": "d6a75322b3e87b16", "outputs": [], - "execution_count": 45 + "execution_count": 99 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:39:40.767333Z", - "start_time": "2024-10-22T17:39:27.893610Z" + "end_time": "2024-10-29T17:38:16.384568Z", + "start_time": "2024-10-29T17:38:03.076637Z" } }, "cell_type": "code", @@ -317,104 +352,105 @@ " simulator=simulator, \n", " batch_size=batch_size, \n", " num_batches=num_training_batches, \n", - " data_adapter=data_adapter\n", + " adapter=data_adapter\n", ")\n", "\n", "validation_dataset = bf.datasets.OnlineDataset(\n", " simulator=simulator,\n", " batch_size=batch_size,\n", " num_batches=num_validation_batches,\n", - " data_adapter=data_adapter\n", + " adapter=data_adapter\n", ")" ], "id": "f54a245984369b8b", "outputs": [], - "execution_count": 69 + "execution_count": 100 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-29T17:38:17.553107Z", + "start_time": "2024-10-29T17:38:17.521782Z" + } + }, "cell_type": "code", - "source": [ - "summary_network = bf.networks.DeepSet(summary_dim=10)\n", - "summary_network.build(input_shape=(training_samples['x'].shape))" - ], + "source": "summary_network = bf.networks.DeepSet(summary_dim=10)", "id": "6d219a2947a41c39", "outputs": [], - "execution_count": null + "execution_count": 101 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:33:25.157778Z", - "start_time": "2024-10-22T17:33:25.114152Z" + "end_time": "2024-10-29T17:38:18.051306Z", + "start_time": "2024-10-29T17:38:17.902383Z" + } + }, + "cell_type": "code", + "source": "summary_network.build(input_shape=(50, 100, 4))", + "id": "7969c4bd99a55111", + "outputs": [], + "execution_count": 102 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-29T17:38:18.238719Z", + "start_time": "2024-10-29T17:38:18.224166Z" } }, "cell_type": "code", "source": [ "inference_network = bf.networks.FlowMatching(\n", " subnet=\"mlp\",\n", - " subnet_kwargs=dict(\n", + " optimal_transport_kwargs=dict(\n", " depth=6,\n", " width=256,\n", " ),\n", ")\n", - "inference_network.build()" + "# inference_network.build()" ], "id": "ecc20e920b0dc330", "outputs": [], - "execution_count": 61 + "execution_count": 103 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T16:29:39.431488Z", - "start_time": "2024-10-22T16:29:39.361352Z" + "end_time": "2024-10-29T17:38:18.994085Z", + "start_time": "2024-10-29T17:38:18.975450Z" } }, "cell_type": "code", - "source": [ - "test_sim = simulator.sample((4,))\n", - "z, log_det_J = summary_network(test_sim['x'])" - ], + "source": "test_sim = simulator.sample((4,))", "id": "2d182d111fdacf3b", - "outputs": [ - { - "ename": "ValueError", - "evalue": "too many values to unpack (expected 2)", - "output_type": "error", - "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[1;32mIn[58], line 2\u001B[0m\n\u001B[0;32m 1\u001B[0m test_sim \u001B[38;5;241m=\u001B[39m simulator\u001B[38;5;241m.\u001B[39msample((\u001B[38;5;241m4\u001B[39m,))\n\u001B[1;32m----> 2\u001B[0m z, log_det_J \u001B[38;5;241m=\u001B[39m summary_network(test_sim[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mx\u001B[39m\u001B[38;5;124m'\u001B[39m])\n", - "\u001B[1;31mValueError\u001B[0m: too many values to unpack (expected 2)" - ] - } - ], - "execution_count": 58 + "outputs": [], + "execution_count": 104 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:33:32.494258Z", - "start_time": "2024-10-22T17:33:32.477712Z" + "end_time": "2024-10-29T17:38:19.521845Z", + "start_time": "2024-10-29T17:38:19.507238Z" } }, "cell_type": "code", "source": [ "approximator = bf.ContinuousApproximator(\n", " inference_network=inference_network,\n", - " data_adapter=data_adapter,\n", + " summary_network=summary_network,\n", + " adapter=data_adapter,\n", ")" ], "id": "a3b83230f640d6d9", "outputs": [], - "execution_count": 62 + "execution_count": 105 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:33:33.040002Z", - "start_time": "2024-10-22T17:33:33.017491Z" + "end_time": "2024-10-29T17:38:20.772249Z", + "start_time": "2024-10-29T17:38:20.752704Z" } }, "cell_type": "code", @@ -424,13 +460,13 @@ ], "id": "f0c0c672f6667945", "outputs": [], - "execution_count": 63 + "execution_count": 106 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:33:33.566726Z", - "start_time": "2024-10-22T17:33:33.550196Z" + "end_time": "2024-10-29T17:38:21.069937Z", + "start_time": "2024-10-29T17:38:21.056929Z" } }, "cell_type": "code", @@ -443,7 +479,6 @@ " \"validation_loss\": [],\n", " }\n", "\n", - "\n", " def on_train_batch_end(self, batch, logs=None):\n", " # 'logs' is a dictionary containing loss and other metrics\n", " training_loss = logs.get('loss')\n", @@ -456,39 +491,39 @@ ], "id": "359d6e9fe112d405", "outputs": [], - "execution_count": 64 + "execution_count": 107 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:33:34.490293Z", - "start_time": "2024-10-22T17:33:34.464277Z" + "end_time": "2024-10-29T17:38:21.975173Z", + "start_time": "2024-10-29T17:38:21.967175Z" } }, "cell_type": "code", "source": "approximator.compile(optimizer=optimizer)", "id": "7b96a6c3943dcf40", "outputs": [], - "execution_count": 65 + "execution_count": 108 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:33:34.834571Z", - "start_time": "2024-10-22T17:33:34.821630Z" + "end_time": "2024-10-29T17:38:22.848536Z", + "start_time": "2024-10-29T17:38:22.841418Z" } }, "cell_type": "code", "source": "batch_loss_history = BatchLossHistory()", "id": "e683fe5d365b279e", "outputs": [], - "execution_count": 66 + "execution_count": 109 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-22T17:33:36.209593Z", - "start_time": "2024-10-22T17:33:35.778861Z" + "end_time": "2024-10-29T17:38:23.600932Z", + "start_time": "2024-10-29T17:38:23.482465Z" } }, "cell_type": "code", @@ -497,7 +532,7 @@ " epochs=10,\n", " dataset=training_dataset,\n", " validation_data=validation_dataset,\n", - " callbacks=[batch_loss_history]\n", + " callbacks=[batch_loss_history],\n", ")" ], "id": "768ee6ac6ce0ef37", @@ -511,41 +546,31 @@ ] }, { - "ename": "TypeError", - "evalue": "Cannot concatenate arrays with different numbers of dimensions: got (128, 4), (128, 1), (128, 100, 4).", + "ename": "KeyError", + "evalue": "\"Missing keys: {'x'}\"", "output_type": "error", "traceback": [ "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[1;32mIn[67], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m history \u001B[38;5;241m=\u001B[39m \u001B[43mapproximator\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfit\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 2\u001B[0m \u001B[43m \u001B[49m\u001B[43mepochs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m10\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[0;32m 3\u001B[0m \u001B[43m \u001B[49m\u001B[43mdataset\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtraining_dataset\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 4\u001B[0m \u001B[43m \u001B[49m\u001B[43mvalidation_data\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mvalidation_dataset\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 5\u001B[0m \u001B[43m \u001B[49m\u001B[43mcallbacks\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m[\u001B[49m\u001B[43mbatch_loss_history\u001B[49m\u001B[43m]\u001B[49m\n\u001B[0;32m 6\u001B[0m \u001B[43m)\u001B[49m\n", - "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\continuous_approximator.py:109\u001B[0m, in \u001B[0;36mContinuousApproximator.fit\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 108\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mfit\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs):\n\u001B[1;32m--> 109\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39mfit(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs, data_adapter\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdata_adapter)\n", - "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\approximator.py:82\u001B[0m, in \u001B[0;36mApproximator.fit\u001B[1;34m(self, dataset, simulator, **kwargs)\u001B[0m\n\u001B[0;32m 80\u001B[0m mock_data \u001B[38;5;241m=\u001B[39m dataset[\u001B[38;5;241m0\u001B[39m]\n\u001B[0;32m 81\u001B[0m mock_data \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mtree\u001B[38;5;241m.\u001B[39mmap_structure(keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mconvert_to_tensor, mock_data)\n\u001B[1;32m---> 82\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbuild_from_data\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmock_data\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 84\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39mfit(dataset\u001B[38;5;241m=\u001B[39mdataset, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n", - "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\approximator.py:23\u001B[0m, in \u001B[0;36mApproximator.build_from_data\u001B[1;34m(self, data)\u001B[0m\n\u001B[0;32m 22\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mbuild_from_data\u001B[39m(\u001B[38;5;28mself\u001B[39m, data: \u001B[38;5;28mdict\u001B[39m[\u001B[38;5;28mstr\u001B[39m, \u001B[38;5;28many\u001B[39m]) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m---> 23\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcompute_metrics(\u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mdata, stage\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mtraining\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 24\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbuilt \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m\n", - "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\continuous_approximator.py:95\u001B[0m, in \u001B[0;36mContinuousApproximator.compute_metrics\u001B[1;34m(self, inference_variables, inference_conditions, summary_variables, stage)\u001B[0m\n\u001B[0;32m 92\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m 93\u001B[0m inference_conditions \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mconcatenate([inference_conditions, summary_outputs], axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m1\u001B[39m)\n\u001B[1;32m---> 95\u001B[0m inference_metrics \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43minference_network\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcompute_metrics\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 96\u001B[0m \u001B[43m \u001B[49m\u001B[43minference_variables\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconditions\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minference_conditions\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mstage\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mstage\u001B[49m\n\u001B[0;32m 97\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 99\u001B[0m loss \u001B[38;5;241m=\u001B[39m inference_metrics\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mloss\u001B[39m\u001B[38;5;124m\"\u001B[39m, keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mzeros(())) \u001B[38;5;241m+\u001B[39m summary_metrics\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mloss\u001B[39m\u001B[38;5;124m\"\u001B[39m, keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mzeros(()))\n\u001B[0;32m 101\u001B[0m inference_metrics \u001B[38;5;241m=\u001B[39m {\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mkey\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/inference_\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mkey\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m: value \u001B[38;5;28;01mfor\u001B[39;00m key, value \u001B[38;5;129;01min\u001B[39;00m inference_metrics\u001B[38;5;241m.\u001B[39mitems()}\n", - "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\networks\\flow_matching\\flow_matching.py:122\u001B[0m, in \u001B[0;36mFlowMatching.compute_metrics\u001B[1;34m(self, x, conditions, stage)\u001B[0m\n\u001B[0;32m 118\u001B[0m target_velocity \u001B[38;5;241m=\u001B[39m x1 \u001B[38;5;241m-\u001B[39m x0\n\u001B[0;32m 120\u001B[0m base_metrics \u001B[38;5;241m=\u001B[39m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39mcompute_metrics(x1, conditions, stage)\n\u001B[1;32m--> 122\u001B[0m predicted_velocity \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mintegrator\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mvelocity\u001B[49m\u001B[43m(\u001B[49m\u001B[43mx\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mt\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconditions\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 124\u001B[0m loss \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mlosses\u001B[38;5;241m.\u001B[39mmean_squared_error(target_velocity, predicted_velocity)\n\u001B[0;32m 125\u001B[0m loss \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mmean(loss)\n", - "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\networks\\flow_matching\\integrators\\euler.py:45\u001B[0m, in \u001B[0;36mEulerIntegrator.velocity\u001B[1;34m(self, x, t, conditions, **kwargs)\u001B[0m\n\u001B[0;32m 43\u001B[0m xtc \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mconcatenate([x, t], axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m1\u001B[39m)\n\u001B[0;32m 44\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m---> 45\u001B[0m xtc \u001B[38;5;241m=\u001B[39m \u001B[43mkeras\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mops\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43m[\u001B[49m\u001B[43mx\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mt\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconditions\u001B[49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m-\u001B[39;49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[0;32m 47\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39moutput_projector(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39msubnet(xtc, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs))\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\keras\\src\\ops\\numpy.py:1352\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(xs, axis)\u001B[0m\n\u001B[0;32m 1350\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m any_symbolic_tensors(xs):\n\u001B[0;32m 1351\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m Concatenate(axis\u001B[38;5;241m=\u001B[39maxis)\u001B[38;5;241m.\u001B[39msymbolic_call(xs)\n\u001B[1;32m-> 1352\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mbackend\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnumpy\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43mxs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43maxis\u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\keras\\src\\backend\\jax\\numpy.py:405\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(xs, axis)\u001B[0m\n\u001B[0;32m 400\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m 401\u001B[0m xs \u001B[38;5;241m=\u001B[39m [\n\u001B[0;32m 402\u001B[0m x\u001B[38;5;241m.\u001B[39mtodense() \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(x, jax_sparse\u001B[38;5;241m.\u001B[39mJAXSparse) \u001B[38;5;28;01melse\u001B[39;00m x\n\u001B[0;32m 403\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m x \u001B[38;5;129;01min\u001B[39;00m xs\n\u001B[0;32m 404\u001B[0m ]\n\u001B[1;32m--> 405\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mjnp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43mxs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43maxis\u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\numpy\\lax_numpy.py:4243\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(arrays, axis, dtype)\u001B[0m\n\u001B[0;32m 4241\u001B[0m k \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m16\u001B[39m\n\u001B[0;32m 4242\u001B[0m \u001B[38;5;28;01mwhile\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(arrays_out) \u001B[38;5;241m>\u001B[39m \u001B[38;5;241m1\u001B[39m:\n\u001B[1;32m-> 4243\u001B[0m arrays_out \u001B[38;5;241m=\u001B[39m [lax\u001B[38;5;241m.\u001B[39mconcatenate(arrays_out[i:i\u001B[38;5;241m+\u001B[39mk], axis)\n\u001B[0;32m 4244\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m i \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mrange\u001B[39m(\u001B[38;5;241m0\u001B[39m, \u001B[38;5;28mlen\u001B[39m(arrays_out), k)]\n\u001B[0;32m 4245\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m arrays_out[\u001B[38;5;241m0\u001B[39m]\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\numpy\\lax_numpy.py:4243\u001B[0m, in \u001B[0;36m\u001B[1;34m(.0)\u001B[0m\n\u001B[0;32m 4241\u001B[0m k \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m16\u001B[39m\n\u001B[0;32m 4242\u001B[0m \u001B[38;5;28;01mwhile\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(arrays_out) \u001B[38;5;241m>\u001B[39m \u001B[38;5;241m1\u001B[39m:\n\u001B[1;32m-> 4243\u001B[0m arrays_out \u001B[38;5;241m=\u001B[39m [\u001B[43mlax\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcatenate\u001B[49m\u001B[43m(\u001B[49m\u001B[43marrays_out\u001B[49m\u001B[43m[\u001B[49m\u001B[43mi\u001B[49m\u001B[43m:\u001B[49m\u001B[43mi\u001B[49m\u001B[38;5;241;43m+\u001B[39;49m\u001B[43mk\u001B[49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 4244\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m i \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mrange\u001B[39m(\u001B[38;5;241m0\u001B[39m, \u001B[38;5;28mlen\u001B[39m(arrays_out), k)]\n\u001B[0;32m 4245\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m arrays_out[\u001B[38;5;241m0\u001B[39m]\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\lax\\lax.py:650\u001B[0m, in \u001B[0;36mconcatenate\u001B[1;34m(operands, dimension)\u001B[0m\n\u001B[0;32m 648\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(op, Array):\n\u001B[0;32m 649\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m op\n\u001B[1;32m--> 650\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mconcatenate_p\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbind\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43moperands\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdimension\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdimension\u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\core.py:438\u001B[0m, in \u001B[0;36mPrimitive.bind\u001B[1;34m(self, *args, **params)\u001B[0m\n\u001B[0;32m 435\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mbind\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mparams):\n\u001B[0;32m 436\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m (\u001B[38;5;129;01mnot\u001B[39;00m config\u001B[38;5;241m.\u001B[39menable_checks\u001B[38;5;241m.\u001B[39mvalue \u001B[38;5;129;01mor\u001B[39;00m\n\u001B[0;32m 437\u001B[0m \u001B[38;5;28mall\u001B[39m(\u001B[38;5;28misinstance\u001B[39m(arg, Tracer) \u001B[38;5;129;01mor\u001B[39;00m valid_jaxtype(arg) \u001B[38;5;28;01mfor\u001B[39;00m arg \u001B[38;5;129;01min\u001B[39;00m args)), args\n\u001B[1;32m--> 438\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbind_with_trace\u001B[49m\u001B[43m(\u001B[49m\u001B[43mfind_top_trace\u001B[49m\u001B[43m(\u001B[49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mparams\u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\core.py:442\u001B[0m, in \u001B[0;36mPrimitive.bind_with_trace\u001B[1;34m(self, trace, args, params)\u001B[0m\n\u001B[0;32m 440\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mbind_with_trace\u001B[39m(\u001B[38;5;28mself\u001B[39m, trace, args, params):\n\u001B[0;32m 441\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m pop_level(trace\u001B[38;5;241m.\u001B[39mlevel):\n\u001B[1;32m--> 442\u001B[0m out \u001B[38;5;241m=\u001B[39m \u001B[43mtrace\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mprocess_primitive\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mmap\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mtrace\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfull_raise\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mparams\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 443\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mmap\u001B[39m(full_lower, out) \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmultiple_results \u001B[38;5;28;01melse\u001B[39;00m full_lower(out)\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\core.py:948\u001B[0m, in \u001B[0;36mEvalTrace.process_primitive\u001B[1;34m(self, primitive, tracers, params)\u001B[0m\n\u001B[0;32m 946\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m call_impl_with_key_reuse_checks(primitive, primitive\u001B[38;5;241m.\u001B[39mimpl, \u001B[38;5;241m*\u001B[39mtracers, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mparams)\n\u001B[0;32m 947\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m--> 948\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m primitive\u001B[38;5;241m.\u001B[39mimpl(\u001B[38;5;241m*\u001B[39mtracers, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mparams)\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\dispatch.py:90\u001B[0m, in \u001B[0;36mapply_primitive\u001B[1;34m(prim, *args, **params)\u001B[0m\n\u001B[0;32m 88\u001B[0m prev \u001B[38;5;241m=\u001B[39m lib\u001B[38;5;241m.\u001B[39mjax_jit\u001B[38;5;241m.\u001B[39mswap_thread_local_state_disable_jit(\u001B[38;5;28;01mFalse\u001B[39;00m)\n\u001B[0;32m 89\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m---> 90\u001B[0m outs \u001B[38;5;241m=\u001B[39m \u001B[43mfun\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 91\u001B[0m \u001B[38;5;28;01mfinally\u001B[39;00m:\n\u001B[0;32m 92\u001B[0m lib\u001B[38;5;241m.\u001B[39mjax_jit\u001B[38;5;241m.\u001B[39mswap_thread_local_state_disable_jit(prev)\n", - " \u001B[1;31m[... skipping hidden 18 frame]\u001B[0m\n", - "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\jax\\_src\\lax\\lax.py:3904\u001B[0m, in \u001B[0;36m_concatenate_shape_rule\u001B[1;34m(*operands, **kwargs)\u001B[0m\n\u001B[0;32m 3902\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mlen\u001B[39m({operand\u001B[38;5;241m.\u001B[39mndim \u001B[38;5;28;01mfor\u001B[39;00m operand \u001B[38;5;129;01min\u001B[39;00m operands}) \u001B[38;5;241m!=\u001B[39m \u001B[38;5;241m1\u001B[39m:\n\u001B[0;32m 3903\u001B[0m msg \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mCannot concatenate arrays with different numbers of dimensions: got \u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[38;5;124m.\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m-> 3904\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mTypeError\u001B[39;00m(msg\u001B[38;5;241m.\u001B[39mformat(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m, \u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;241m.\u001B[39mjoin(\u001B[38;5;28mstr\u001B[39m(o\u001B[38;5;241m.\u001B[39mshape) \u001B[38;5;28;01mfor\u001B[39;00m o \u001B[38;5;129;01min\u001B[39;00m operands)))\n\u001B[0;32m 3905\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;241m0\u001B[39m \u001B[38;5;241m<\u001B[39m\u001B[38;5;241m=\u001B[39m dimension \u001B[38;5;241m<\u001B[39m operands[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;241m.\u001B[39mndim:\n\u001B[0;32m 3906\u001B[0m msg \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mconcatenate dimension out of bounds: dimension \u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[38;5;124m for shapes \u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[38;5;124m.\u001B[39m\u001B[38;5;124m\"\u001B[39m\n", - "\u001B[1;31mTypeError\u001B[0m: Cannot concatenate arrays with different numbers of dimensions: got (128, 4), (128, 1), (128, 100, 4)." + "\u001B[1;31mKeyError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[1;32mIn[110], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m history \u001B[38;5;241m=\u001B[39m \u001B[43mapproximator\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfit\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 2\u001B[0m \u001B[43m \u001B[49m\u001B[43mepochs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m10\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[0;32m 3\u001B[0m \u001B[43m \u001B[49m\u001B[43mdataset\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtraining_dataset\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 4\u001B[0m \u001B[43m \u001B[49m\u001B[43mvalidation_data\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mvalidation_dataset\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 5\u001B[0m \u001B[43m \u001B[49m\u001B[43mcallbacks\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m[\u001B[49m\u001B[43mbatch_loss_history\u001B[49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 6\u001B[0m \u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\continuous_approximator.py:114\u001B[0m, in \u001B[0;36mContinuousApproximator.fit\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 113\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mfit\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs):\n\u001B[1;32m--> 114\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28msuper\u001B[39m()\u001B[38;5;241m.\u001B[39mfit(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs, adapter\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39madapter)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\approximators\\approximator.py:80\u001B[0m, in \u001B[0;36mApproximator.fit\u001B[1;34m(self, dataset, simulator, **kwargs)\u001B[0m\n\u001B[0;32m 78\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbuilt:\n\u001B[0;32m 79\u001B[0m logging\u001B[38;5;241m.\u001B[39minfo(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mBuilding on a test batch.\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[1;32m---> 80\u001B[0m mock_data \u001B[38;5;241m=\u001B[39m \u001B[43mdataset\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;241;43m0\u001B[39;49m\u001B[43m]\u001B[49m\n\u001B[0;32m 81\u001B[0m mock_data \u001B[38;5;241m=\u001B[39m keras\u001B[38;5;241m.\u001B[39mtree\u001B[38;5;241m.\u001B[39mmap_structure(keras\u001B[38;5;241m.\u001B[39mops\u001B[38;5;241m.\u001B[39mconvert_to_tensor, mock_data)\n\u001B[0;32m 82\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbuild_from_data(mock_data)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\datasets\\online_dataset.py:38\u001B[0m, in \u001B[0;36mOnlineDataset.__getitem__\u001B[1;34m(self, item)\u001B[0m\n\u001B[0;32m 35\u001B[0m batch \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39msimulator\u001B[38;5;241m.\u001B[39msample((\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mbatch_size,))\n\u001B[0;32m 37\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39madapter \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m---> 38\u001B[0m batch \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43madapter\u001B[49m\u001B[43m(\u001B[49m\u001B[43mbatch\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mbatch_size\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbatch_size\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 40\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m batch\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\adapters\\adapter.py:73\u001B[0m, in \u001B[0;36mAdapter.__call__\u001B[1;34m(self, data, inverse, **kwargs)\u001B[0m\n\u001B[0;32m 70\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m inverse:\n\u001B[0;32m 71\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39minverse(data, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[1;32m---> 73\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mforward(data, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\adapters\\adapter.py:57\u001B[0m, in \u001B[0;36mAdapter.forward\u001B[1;34m(self, data, **kwargs)\u001B[0m\n\u001B[0;32m 54\u001B[0m data \u001B[38;5;241m=\u001B[39m data\u001B[38;5;241m.\u001B[39mcopy()\n\u001B[0;32m 56\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m transform \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtransforms:\n\u001B[1;32m---> 57\u001B[0m data \u001B[38;5;241m=\u001B[39m transform(data, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[0;32m 59\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m data\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\adapters\\transforms\\transform.py:11\u001B[0m, in \u001B[0;36mTransform.__call__\u001B[1;34m(self, data, inverse, **kwargs)\u001B[0m\n\u001B[0;32m 8\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m inverse:\n\u001B[0;32m 9\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39minverse(data, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[1;32m---> 11\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mforward(data, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\adapters\\transforms\\map_transform.py:51\u001B[0m, in \u001B[0;36mMapTransform.forward\u001B[1;34m(self, data, strict, **kwargs)\u001B[0m\n\u001B[0;32m 48\u001B[0m missing_keys \u001B[38;5;241m=\u001B[39m required_keys \u001B[38;5;241m-\u001B[39m available_keys\n\u001B[0;32m 50\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m strict \u001B[38;5;129;01mand\u001B[39;00m missing_keys:\n\u001B[1;32m---> 51\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mKeyError\u001B[39;00m(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mMissing keys: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mmissing_keys\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 53\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m key, transform \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtransform_map\u001B[38;5;241m.\u001B[39mitems():\n\u001B[0;32m 54\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m key \u001B[38;5;129;01min\u001B[39;00m data:\n", + "\u001B[1;31mKeyError\u001B[0m: \"Missing keys: {'x'}\"" ] } ], - "execution_count": 67 + "execution_count": 110 }, { "metadata": { "ExecuteTime": { - "end_time": "2024-10-20T18:45:43.804570Z", - "start_time": "2024-10-20T18:45:42.197334Z" + "end_time": "2024-10-29T17:37:22.721463Z", + "start_time": "2024-10-29T17:37:22.075196Z" } }, "cell_type": "code", @@ -559,18 +584,34 @@ ], "id": "4aa8f4aa440e9925", "outputs": [ + { + "ename": "ValueError", + "evalue": "Number of rows must be a positive integer, not 0", + "output_type": "error", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[1;32mIn[97], line 3\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mpandas\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mpd\u001B[39;00m\n\u001B[1;32m----> 3\u001B[0m f \u001B[38;5;241m=\u001B[39m \u001B[43mplot_losses\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 4\u001B[0m \u001B[43m \u001B[49m\u001B[43mtrain_losses\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mpd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mDataFrame\u001B[49m\u001B[43m(\u001B[49m\u001B[43mbatch_loss_history\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mlosses\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mtraining_loss\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\n\u001B[0;32m 5\u001B[0m \u001B[43m \u001B[49m\u001B[43mval_losses\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mpd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mDataFrame\u001B[49m\u001B[43m(\u001B[49m\u001B[43mbatch_loss_history\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mlosses\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mvalidation_loss\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 6\u001B[0m \u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\Documents\\Native\\Development\\BayesFlow\\bayesflow\\diagnostics\\plot_losses.py:78\u001B[0m, in \u001B[0;36mplot_losses\u001B[1;34m(train_losses, val_losses, moving_average, ma_window_fraction, fig_size, train_color, val_color, lw_train, lw_val, grid_alpha, legend_fontsize, label_fontsize, title_fontsize)\u001B[0m\n\u001B[0;32m 76\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m fig_size \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m 77\u001B[0m fig_size \u001B[38;5;241m=\u001B[39m (\u001B[38;5;241m16\u001B[39m, \u001B[38;5;28mint\u001B[39m(\u001B[38;5;241m4\u001B[39m \u001B[38;5;241m*\u001B[39m n_row))\n\u001B[1;32m---> 78\u001B[0m f, axarr \u001B[38;5;241m=\u001B[39m \u001B[43mplt\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msubplots\u001B[49m\u001B[43m(\u001B[49m\u001B[43mn_row\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfigsize\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mfig_size\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 80\u001B[0m \u001B[38;5;66;03m# Get the number of steps as an array\u001B[39;00m\n\u001B[0;32m 81\u001B[0m train_step_index \u001B[38;5;241m=\u001B[39m np\u001B[38;5;241m.\u001B[39marange(\u001B[38;5;241m1\u001B[39m, \u001B[38;5;28mlen\u001B[39m(train_losses) \u001B[38;5;241m+\u001B[39m \u001B[38;5;241m1\u001B[39m)\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\matplotlib\\pyplot.py:1502\u001B[0m, in \u001B[0;36msubplots\u001B[1;34m(nrows, ncols, sharex, sharey, squeeze, width_ratios, height_ratios, subplot_kw, gridspec_kw, **fig_kw)\u001B[0m\n\u001B[0;32m 1358\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 1359\u001B[0m \u001B[38;5;124;03mCreate a figure and a set of subplots.\u001B[39;00m\n\u001B[0;32m 1360\u001B[0m \n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 1499\u001B[0m \n\u001B[0;32m 1500\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 1501\u001B[0m fig \u001B[38;5;241m=\u001B[39m figure(\u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mfig_kw)\n\u001B[1;32m-> 1502\u001B[0m axs \u001B[38;5;241m=\u001B[39m \u001B[43mfig\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msubplots\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnrows\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnrows\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mncols\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mncols\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msharex\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msharex\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msharey\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msharey\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1503\u001B[0m \u001B[43m \u001B[49m\u001B[43msqueeze\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msqueeze\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msubplot_kw\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msubplot_kw\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1504\u001B[0m \u001B[43m \u001B[49m\u001B[43mgridspec_kw\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mgridspec_kw\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mheight_ratios\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mheight_ratios\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1505\u001B[0m \u001B[43m \u001B[49m\u001B[43mwidth_ratios\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mwidth_ratios\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1506\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m fig, axs\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\matplotlib\\figure.py:905\u001B[0m, in \u001B[0;36mFigureBase.subplots\u001B[1;34m(self, nrows, ncols, sharex, sharey, squeeze, width_ratios, height_ratios, subplot_kw, gridspec_kw)\u001B[0m\n\u001B[0;32m 901\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mwidth_ratios\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m must not be defined both as \u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 902\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mparameter and as key in \u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgridspec_kw\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 903\u001B[0m gridspec_kw[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mwidth_ratios\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m width_ratios\n\u001B[1;32m--> 905\u001B[0m gs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39madd_gridspec(nrows, ncols, figure\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mgridspec_kw)\n\u001B[0;32m 906\u001B[0m axs \u001B[38;5;241m=\u001B[39m gs\u001B[38;5;241m.\u001B[39msubplots(sharex\u001B[38;5;241m=\u001B[39msharex, sharey\u001B[38;5;241m=\u001B[39msharey, squeeze\u001B[38;5;241m=\u001B[39msqueeze,\n\u001B[0;32m 907\u001B[0m subplot_kw\u001B[38;5;241m=\u001B[39msubplot_kw)\n\u001B[0;32m 908\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m axs\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\matplotlib\\figure.py:1527\u001B[0m, in \u001B[0;36mFigureBase.add_gridspec\u001B[1;34m(self, nrows, ncols, **kwargs)\u001B[0m\n\u001B[0;32m 1488\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 1489\u001B[0m \u001B[38;5;124;03mReturn a `.GridSpec` that has this figure as a parent. This allows\u001B[39;00m\n\u001B[0;32m 1490\u001B[0m \u001B[38;5;124;03mcomplex layout of Axes in the figure.\u001B[39;00m\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 1523\u001B[0m \n\u001B[0;32m 1524\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 1526\u001B[0m _ \u001B[38;5;241m=\u001B[39m kwargs\u001B[38;5;241m.\u001B[39mpop(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mfigure\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;28;01mNone\u001B[39;00m) \u001B[38;5;66;03m# pop in case user has added this...\u001B[39;00m\n\u001B[1;32m-> 1527\u001B[0m gs \u001B[38;5;241m=\u001B[39m GridSpec(nrows\u001B[38;5;241m=\u001B[39mnrows, ncols\u001B[38;5;241m=\u001B[39mncols, figure\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[0;32m 1528\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m gs\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\matplotlib\\gridspec.py:379\u001B[0m, in \u001B[0;36mGridSpec.__init__\u001B[1;34m(self, nrows, ncols, figure, left, bottom, right, top, wspace, hspace, width_ratios, height_ratios)\u001B[0m\n\u001B[0;32m 376\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mhspace \u001B[38;5;241m=\u001B[39m hspace\n\u001B[0;32m 377\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfigure \u001B[38;5;241m=\u001B[39m figure\n\u001B[1;32m--> 379\u001B[0m \u001B[38;5;28;43msuper\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[38;5;21;43m__init__\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mnrows\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mncols\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 380\u001B[0m \u001B[43m \u001B[49m\u001B[43mwidth_ratios\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mwidth_ratios\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 381\u001B[0m \u001B[43m \u001B[49m\u001B[43mheight_ratios\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mheight_ratios\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\matplotlib\\gridspec.py:49\u001B[0m, in \u001B[0;36mGridSpecBase.__init__\u001B[1;34m(self, nrows, ncols, height_ratios, width_ratios)\u001B[0m\n\u001B[0;32m 34\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 35\u001B[0m \u001B[38;5;124;03mParameters\u001B[39;00m\n\u001B[0;32m 36\u001B[0m \u001B[38;5;124;03m----------\u001B[39;00m\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 46\u001B[0m \u001B[38;5;124;03m If not given, all rows will have the same height.\u001B[39;00m\n\u001B[0;32m 47\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 48\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(nrows, Integral) \u001B[38;5;129;01mor\u001B[39;00m nrows \u001B[38;5;241m<\u001B[39m\u001B[38;5;241m=\u001B[39m \u001B[38;5;241m0\u001B[39m:\n\u001B[1;32m---> 49\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[0;32m 50\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mNumber of rows must be a positive integer, not \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mnrows\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 51\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(ncols, Integral) \u001B[38;5;129;01mor\u001B[39;00m ncols \u001B[38;5;241m<\u001B[39m\u001B[38;5;241m=\u001B[39m \u001B[38;5;241m0\u001B[39m:\n\u001B[0;32m 52\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[0;32m 53\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mNumber of columns must be a positive integer, not \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mncols\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m)\n", + "\u001B[1;31mValueError\u001B[0m: Number of rows must be a positive integer, not 0" + ] + }, { "data": { "text/plain": [ - "
" - ], - "image/png": "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" + "
" + ] }, "metadata": {}, "output_type": "display_data" } ], - "execution_count": 36 + "execution_count": 97 }, { "metadata": { From 35267fedee2392874d7158a554b16b9c1eb6d62b Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 30 Oct 2024 21:02:04 -0400 Subject: [PATCH 13/22] Fixed linting from plot_losses and plot_recovery --- bayesflow/diagnostics/plot_losses.py | 3 --- bayesflow/diagnostics/plot_recovery.py | 1 - 2 files changed, 4 deletions(-) diff --git a/bayesflow/diagnostics/plot_losses.py b/bayesflow/diagnostics/plot_losses.py index 3797b0257..d43815771 100644 --- a/bayesflow/diagnostics/plot_losses.py +++ b/bayesflow/diagnostics/plot_losses.py @@ -3,9 +3,6 @@ import seaborn as sns import matplotlib.pyplot as plt -from tensorflow.keras import ops -from ..utils.plot_utils import initialize_figure - def plot_losses( train_losses, diff --git a/bayesflow/diagnostics/plot_recovery.py b/bayesflow/diagnostics/plot_recovery.py index 4031a7542..ac7d32dcd 100644 --- a/bayesflow/diagnostics/plot_recovery.py +++ b/bayesflow/diagnostics/plot_recovery.py @@ -5,7 +5,6 @@ import matplotlib.pyplot as plt import seaborn as sns -from ..utils.plot_utils import preprocess, postprocess from ..utils.plot_utils import check_posterior_prior_shapes def plot_recovery( From e290506f141147f04d2cc74f3c0c6bb8a3e270a8 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 30 Oct 2024 21:05:52 -0400 Subject: [PATCH 14/22] Fixed linting from plot_utils --- bayesflow/utils/plot_utils.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bayesflow/utils/plot_utils.py b/bayesflow/utils/plot_utils.py index 402a61e05..08e75078f 100644 --- a/bayesflow/utils/plot_utils.py +++ b/bayesflow/utils/plot_utils.py @@ -25,28 +25,28 @@ def check_posterior_prior_shapes(post_samples, prior_samples): if len(post_samples.shape) != 3: raise ShapeError( - f"post_samples should be a 3-dimensional array, with the " - + f"first dimension being the number of (simulated) data sets, " - + f"the second dimension being the number of posterior draws per data set, " - + f"and the third dimension being the number of parameters (marginal distributions), " + "post_samples should be a 3-dimensional array, with the " + + "first dimension being the number of (simulated) data sets, " + + "the second dimension being the number of posterior draws per data set, " + + "and the third dimension being the number of parameters (marginal distributions), " + f"but your input has dimensions {len(post_samples.shape)}" ) elif len(prior_samples.shape) != 2: raise ShapeError( - f"prior_samples should be a 2-dimensional array, with the " - + f"first dimension being the number of (simulated) data sets / prior draws " - + f"and the second dimension being the number of parameters (marginal distributions), " + "prior_samples should be a 2-dimensional array, with the " + + "first dimension being the number of (simulated) data sets / prior draws " + + "and the second dimension being the number of parameters (marginal distributions), " + f"but your input has dimensions {len(prior_samples.shape)}" ) elif post_samples.shape[0] != prior_samples.shape[0]: raise ShapeError( - f"The number of elements over the first dimension of post_samples and prior_samples" + "The number of elements over the first dimension of post_samples and prior_samples" + f"should match, but post_samples has {post_samples.shape[0]} and prior_samples has " + f"{prior_samples.shape[0]} elements, respectively." ) elif post_samples.shape[-1] != prior_samples.shape[-1]: raise ShapeError( - f"The number of elements over the last dimension of post_samples and prior_samples" + "The number of elements over the last dimension of post_samples and prior_samples" + f"should match, but post_samples has {post_samples.shape[1]} and prior_samples has " + f"{prior_samples.shape[-1]} elements, respectively." ) From 95881af958151e6a1576b3f8cb652da7d0c2d5a4 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 30 Oct 2024 21:08:41 -0400 Subject: [PATCH 15/22] Fixed linting from plot_sbc_histogram --- bayesflow/diagnostics/plot_sbc_histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bayesflow/diagnostics/plot_sbc_histogram.py b/bayesflow/diagnostics/plot_sbc_histogram.py index 100ec9704..41542a046 100644 --- a/bayesflow/diagnostics/plot_sbc_histogram.py +++ b/bayesflow/diagnostics/plot_sbc_histogram.py @@ -80,7 +80,7 @@ def plot_sbc_histograms( logger = logging.getLogger() logger.setLevel(logging.INFO) logger.info( - f"The ratio of simulations / posterior draws should be > 20 " + "The ratio of simulations / posterior draws should be > 20 " + f"for reliable variance reduction, but your ratio is {ratio}.\ Confidence intervals might be unreliable!" ) From 6404b873e942da62c72bbda07e9d5a5037f8d0ba Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 30 Oct 2024 21:54:05 -0400 Subject: [PATCH 16/22] Reformatting --- bayesflow/diagnostics/__init__.py | 2 +- bayesflow/diagnostics/plot_distribution_2d.py | 28 +++++-- bayesflow/diagnostics/plot_losses.py | 35 ++++++--- bayesflow/diagnostics/plot_recovery.py | 44 +++++++---- bayesflow/diagnostics/plot_sbc_ecdf.py | 78 +++++++++++++------ .../diagnostics/plot_z_score_contraction.py | 28 ++++--- 6 files changed, 148 insertions(+), 67 deletions(-) diff --git a/bayesflow/diagnostics/__init__.py b/bayesflow/diagnostics/__init__.py index 0d77a37aa..d75daa681 100644 --- a/bayesflow/diagnostics/__init__.py +++ b/bayesflow/diagnostics/__init__.py @@ -3,4 +3,4 @@ from .plot_sbc_ecdf import plot_sbc_ecdf from .plot_sbc_histogram import plot_sbc_histograms from .plot_distribution_2d import plot_distribution_2d -from .plot_z_score_contraction import plot_z_score_contraction \ No newline at end of file +from .plot_z_score_contraction import plot_z_score_contraction diff --git a/bayesflow/diagnostics/plot_distribution_2d.py b/bayesflow/diagnostics/plot_distribution_2d.py index f03ba7907..e0a0b722b 100644 --- a/bayesflow/diagnostics/plot_distribution_2d.py +++ b/bayesflow/diagnostics/plot_distribution_2d.py @@ -5,6 +5,7 @@ from bayesflow.types import Tensor + def plot_distribution_2d( samples: dict[str, Tensor] = None, parameters: str = None, @@ -17,7 +18,8 @@ def plot_distribution_2d( **kwargs ): """ - A more flexible pair plot function for multiple distributions based upon collected samples. + A more flexible pair plot function for multiple distributions based upon + collected samples. Parameters ---------- @@ -43,7 +45,7 @@ def plot_distribution_2d( Additional keyword arguments passed to the sns.PairGrid constructor """ # Get latent dimensions - dim = samples.shape[-1] + dim = samples.values().shape[-1] # Get number of params if n_params is None: @@ -65,16 +67,28 @@ def plot_distribution_2d( # Generate plots artist = sns.PairGrid(data_to_plot, height=height, **kwargs) - artist.map_diag(sns.histplot, fill=True, color=color, alpha=alpha, kde=True) + artist.map_diag( + sns.histplot, fill=True, color=color, alpha=alpha, kde=True + ) # Incorporate exceptions for generating KDE plots try: - artist.map_lower(sns.kdeplot, fill=True, color=color, alpha=alpha) + artist.map_lower( + sns.kdeplot, fill=True, color=color, alpha=alpha + ) except Exception as e: - logging.warning("KDE failed due to the following exception:\n" + repr(e) + "\nSubstituting scatter plot.") - artist.map_lower(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) + logging.warning( + "KDE failed due to the following exception:\n" + + repr(e) + + "\nSubstituting scatter plot." + ) + artist.map_lower( + sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color + ) - artist.map_upper(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) + artist.map_upper( + sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color + ) if render: # Generate grids diff --git a/bayesflow/diagnostics/plot_losses.py b/bayesflow/diagnostics/plot_losses.py index d43815771..111ef63d6 100644 --- a/bayesflow/diagnostics/plot_losses.py +++ b/bayesflow/diagnostics/plot_losses.py @@ -19,25 +19,31 @@ def plot_losses( label_fontsize=14, title_fontsize=16, ): - """A generic helper function to plot the losses of a series of training epochs and runs. + """ + A generic helper function to plot the losses of a series of training epochs + and runs. Parameters ---------- train_losses : pd.DataFrame - The (plottable) history as returned by a train_[...] method of a ``Trainer`` instance. - Alternatively, you can just pass a data frame of validation losses instead of train losses, - if you only want to plot the validation loss. + The (plottable) history as returned by a train_[...] method of a + ``Trainer`` instance. + Alternatively, you can just pass a data frame of validation losses + instead of train losses, if you only want to plot the validation loss. val_losses : pd.DataFrame or None, optional, default: None - The (plottable) validation history as returned by a train_[...] method of a ``Trainer`` instance. - If left ``None``, only train losses are plotted. Should have the same number of columns - as ``train_losses``. + The (plottable) validation history as returned by a train_[...] method + of a ``Trainer`` instance. + If left ``None``, only train losses are plotted. Should have the same + number of columns as ``train_losses``. moving_average : bool, optional, default: False A flag for adding a moving average line of the train_losses. ma_window_fraction : int, optional, default: 0.01 - Window size for the moving average as a fraction of total training steps. + Window size for the moving average as a fraction of total + training steps. fig_size : tuple or None, optional, default: None - The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` + The figure size passed to the ``matplotlib`` constructor. + Inferred if ``None`` train_color : str, optional, default: '#8f2727' The color for the train loss trajectory val_color : str, optional, default: black @@ -88,11 +94,18 @@ def plot_losses( looper = [axarr] if n_row == 1 else axarr.flat for i, ax in enumerate(looper): # Plot train curve - ax.plot(train_step_index, train_losses.iloc[:, i], color=train_color, lw=lw_train, alpha=0.9, label="Training") + ax.plot( + train_step_index, train_losses.iloc[:, i], + color=train_color, lw=lw_train, alpha=0.9, label="Training" + ) if moving_average and train_losses.columns[i] == "Loss": moving_average_window = int(train_losses.shape[0] * ma_window_fraction) smoothed_loss = train_losses.iloc[:, i].rolling(window=moving_average_window).mean() - ax.plot(train_step_index, smoothed_loss, color="grey", lw=lw_train, label="Training (Moving Average)") + ax.plot( + train_step_index, smoothed_loss, + color="grey", lw=lw_train, + label="Training (Moving Average)" + ) # Plot optional val curve if val_losses is not None: diff --git a/bayesflow/diagnostics/plot_recovery.py b/bayesflow/diagnostics/plot_recovery.py index ac7d32dcd..b97eee1c8 100644 --- a/bayesflow/diagnostics/plot_recovery.py +++ b/bayesflow/diagnostics/plot_recovery.py @@ -27,18 +27,24 @@ def plot_recovery( ylabel="Estimated", **kwargs, ): - """Creates and plots publication-ready recovery plot with true vs. point estimate + uncertainty. - The point estimate can be controlled with the ``point_agg`` argument, and the uncertainty estimate - can be controlled with the ``uncertainty_agg`` argument. + """ + Creates and plots publication-ready recovery plot with true estimate + vs. point estimate + uncertainty. + The point estimate can be controlled with the ``point_agg`` argument, + and the uncertainty estimate can be controlled with the + ``uncertainty_agg`` argument. - This plot yields similar information as the "posterior z-score", but allows for generic - point and uncertainty estimates: + This plot yields similar information as the "posterior z-score", + but allows for generic point and uncertainty estimates: https://betanalpha.github.io/assets/case_studies/principled_bayesian_workflow.html - Important: Posterior aggregates play no special role in Bayesian inference and should only - be used heuristically. For instance, in the case of multi-modal posteriors, common point - estimates, such as mean, (geometric) median, or maximum a posteriori (MAP) mean nothing. + Important: + Posterior aggregates play no special role in Bayesian inference and + should only be used heuristically. + For instance, in the case of multi-modal posteriors, common point + estimates, such as mean, (geometric) median, or maximum a posteriori + (MAP) mean nothing. Parameters ---------- @@ -133,9 +139,13 @@ def plot_recovery( # Add scatter and error bars if uncertainty_agg is not None: - _ = ax.errorbar(prior_samples[:, i], est[:, i], yerr=u[:, i], fmt="o", alpha=0.5, color=color, **kwargs) + _ = ax.errorbar( + prior_samples[:, i], est[:, i], yerr=u[:, i], fmt="o", alpha=0.5, color=color, **kwargs + ) else: - _ = ax.scatter(prior_samples[:, i], est[:, i], alpha=0.5, color=color, **kwargs) + _ = ax.scatter( + prior_samples[:, i], est[:, i], alpha=0.5, color=color, **kwargs + ) # Make plots quadratic to avoid visual illusions lower = min(prior_samples[:, i].min(), est[:, i].min()) @@ -179,11 +189,17 @@ def plot_recovery( # Prettify sns.despine(ax=ax) ax.grid(alpha=0.5) - ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) - ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) + ax.tick_params( + axis="both", which="major", labelsize=tick_fontsize + ) + ax.tick_params( + axis="both", which="minor", labelsize=tick_fontsize + ) # Only add x-labels to the bottom row - bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + bottom_row = axarr if n_row == 1 else ( + axarr[0] if n_col == 1 else axarr[n_row - 1, :] + ) for _ax in bottom_row: _ax.set_xlabel(xlabel, fontsize=label_fontsize) @@ -200,4 +216,4 @@ def plot_recovery( _ax.remove() f.tight_layout() - return f \ No newline at end of file + return f diff --git a/bayesflow/diagnostics/plot_sbc_ecdf.py b/bayesflow/diagnostics/plot_sbc_ecdf.py index e4c860a5f..cc8614436 100644 --- a/bayesflow/diagnostics/plot_sbc_ecdf.py +++ b/bayesflow/diagnostics/plot_sbc_ecdf.py @@ -6,6 +6,7 @@ from ..utils.plot_utils import check_posterior_prior_shapes from ..utils.ecdf import simultaneous_ecdf_bands + def plot_sbc_ecdf( post_samples, prior_samples, @@ -23,16 +24,19 @@ def plot_sbc_ecdf( n_col=None, **kwargs, ): - """Creates the empirical CDFs for each marginal rank distribution and plots it against - a uniform ECDF. ECDF simultaneous bands are drawn using simulations from the uniform, + """ + Creates the empirical CDFs for each marginal rank distribution + and plots it against a uniform ECDF. + ECDF simultaneous bands are drawn using simulations from the uniform, as proposed by [1]. - For models with many parameters, use `stacked=True` to obtain an idea of the overall calibration - of a posterior approximator. + For models with many parameters, use `stacked=True` to obtain an idea + of the overall calibration of a posterior approximator. - [1] Säilynoja, T., Bürkner, P. C., & Vehtari, A. (2022). Graphical test for discrete uniformity and - its applications in goodness-of-fit evaluation and multiple sample comparison. Statistics and Computing, - 32(2), 1-21. https://arxiv.org/abs/2103.10522 + [1] Säilynoja, T., Bürkner, P. C., & Vehtari, A. (2022). Graphical test + for discrete uniformity and its applications in goodness-of-fit evaluation + and multiple sample comparison. Statistics and Computing, 32(2), 1-21. + https://arxiv.org/abs/2103.10522 Parameters ---------- @@ -41,20 +45,25 @@ def plot_sbc_ecdf( prior_samples : np.ndarray of shape (n_data_sets, n_params) The prior draws obtained for generating n_data_sets difference : bool, optional, default: False - If `True`, plots the ECDF difference. Enables a more dynamic visualization range. + If `True`, plots the ECDF difference. + Enables a more dynamic visualization range. stacked : bool, optional, default: False - If `True`, all ECDFs will be plotted on the same plot. If `False`, each ECDF will - have its own subplot, similar to the behavior of `plot_sbc_histograms`. + If `True`, all ECDFs will be plotted on the same plot. + If `False`, each ECDF will have its own subplot, + similar to the behavior of `plot_sbc_histograms`. param_names : list or None, optional, default: None - The parameter names for nice plot titles. Inferred if None. Only relevant if `stacked=False`. + The parameter names for nice plot titles. + Inferred if None. Only relevant if `stacked=False`. fig_size : tuple or None, optional, default: None - The figure size passed to the matplotlib constructor. Inferred if None. + The figure size passed to the matplotlib constructor. + Inferred if None. label_fontsize : int, optional, default: 16 The font size of the y-label and y-label texts legend_fontsize : int, optional, default: 14 The font size of the legend text title_fontsize : int, optional, default: 18 - The font size of the title text. Only relevant if `stacked=False` + The font size of the title text. + Only relevant if `stacked=False` tick_fontsize : int, optional, default: 12 The font size of the axis ticklabels rank_ecdf_color : str, optional, default: '#a34f4f' @@ -62,12 +71,15 @@ def plot_sbc_ecdf( fill_color : str, optional, default: 'grey' The color of the fill arguments. n_row : int, optional, default: None - The number of rows for the subplots. Dynamically determined if None. + The number of rows for the subplots. + Dynamically determined if None. n_col : int, optional, default: None - The number of columns for the subplots. Dynamically determined if None. + The number of columns for the subplots. + Dynamically determined if None. **kwargs : dict, optional, default: {} - Keyword arguments can be passed to control the behavior of ECDF simultaneous band computation - through the ``ecdf_bands_kwargs`` dictionary. See `simultaneous_ecdf_bands` for keyword arguments + Keyword arguments can be passed to control the behavior of + ECDF simultaneous band computation through the ``ecdf_bands_kwargs`` + dictionary. See `simultaneous_ecdf_bands` for keyword arguments Returns ------- @@ -76,7 +88,8 @@ def plot_sbc_ecdf( Raises ------ ShapeError - If there is a deviation form the expected shapes of `post_samples` and `prior_samples`. + If there is a deviation form the expected shapes of `post_samples` + and `prior_samples`. """ # Sanity checks @@ -86,7 +99,9 @@ def plot_sbc_ecdf( n_params = post_samples.shape[-1] # Compute fractional ranks (using broadcasting) - ranks = np.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) / post_samples.shape[1] + ranks = np.sum( + post_samples < prior_samples[:, np.newaxis, :], axis=1 + ) / post_samples.shape[1] # Prepare figure if stacked: @@ -122,14 +137,25 @@ def plot_sbc_ecdf( if stacked: if j == 0: - ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDFs") + ax.plot( + xx, yy, + color=rank_ecdf_color, alpha=0.95, + label="Rank ECDFs" + ) else: ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95) else: - ax.flat[j].plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDF") + ax.flat[j].plot( + xx, yy, + color=rank_ecdf_color, alpha=0.95, + label="Rank ECDF" + ) # Compute uniform ECDF and bands - alpha, z, L, H = simultaneous_ecdf_bands(post_samples.shape[0], **kwargs.pop("ecdf_bands_kwargs", {})) + alpha, z, L, H = simultaneous_ecdf_bands( + post_samples.shape[0], + **kwargs.pop("ecdf_bands_kwargs", {}) + ) # Difference, if specified if difference: @@ -151,7 +177,11 @@ def plot_sbc_ecdf( titles = param_names for _ax, title in zip(axes, titles): - _ax.fill_between(z, L, H, color=fill_color, alpha=0.2, label=rf"{int((1-alpha) * 100)}$\%$ Confidence Bands") + _ax.fill_between( + z, L, H, + color=fill_color, alpha=0.2, + label=rf"{int((1-alpha) * 100)}$\%$ Confidence Bands" + ) # Prettify plot sns.despine(ax=_ax) @@ -181,4 +211,4 @@ def plot_sbc_ecdf( _ax.remove() f.tight_layout() - return f \ No newline at end of file + return f diff --git a/bayesflow/diagnostics/plot_z_score_contraction.py b/bayesflow/diagnostics/plot_z_score_contraction.py index 77cc33922..d28ccfc5a 100644 --- a/bayesflow/diagnostics/plot_z_score_contraction.py +++ b/bayesflow/diagnostics/plot_z_score_contraction.py @@ -5,6 +5,7 @@ from ..utils.plot_utils import check_posterior_prior_shapes + def plot_z_score_contraction( post_samples, prior_samples, @@ -17,26 +18,31 @@ def plot_z_score_contraction( n_col=None, n_row=None, ): - """Implements a graphical check for global model sensitivity by plotting the posterior - z-score over the posterior contraction for each set of posterior samples in ``post_samples`` - according to [1]. + """ + Implements a graphical check for global model sensitivity by plotting the + posterior z-score over the posterior contraction for each set of posterior + samples in ``post_samples`` according to [1]. - The definition of the posterior z-score is: post_z_score = (posterior_mean - true_parameters) / posterior_std - And the score is adequate if it centers around zero and spreads roughly in the interval [-3, 3] + And the score is adequate if it centers around zero and spreads roughly + in the interval [-3, 3] - The definition of posterior contraction is: post_contraction = 1 - (posterior_variance / prior_variance) - In other words, the posterior contraction is a proxy for the reduction in uncertainty gained by - replacing the prior with the posterior. The ideal posterior contraction tends to 1. - Contraction near zero indicates that the posterior variance is almost identical to - the prior variance for the particular marginal parameter distribution. + In other words, the posterior contraction is a proxy for the reduction in + uncertainty gained by replacing the prior with the posterior. + The ideal posterior contraction tends to 1. + Contraction near zero indicates that the posterior variance is almost + identical to the prior variance for the particular marginal parameter + distribution. - Note: Means and variances will be estimated via their sample-based estimators. + Note: + Means and variances will be estimated via their sample-based estimators. [1] Schad, D. J., Betancourt, M., & Vasishth, S. (2021). Toward a principled Bayesian workflow in cognitive science. @@ -134,7 +140,9 @@ def plot_z_score_contraction( ax.set_xlim([-0.05, 1.05]) # Only add x-labels to the bottom row - bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + bottom_row = axarr if n_row == 1 else ( + axarr[0] if n_col == 1 else axarr[n_row - 1, :] + ) for _ax in bottom_row: _ax.set_xlabel("Posterior contraction", fontsize=label_fontsize) From 1281ccfa33c03162fdf7b619f2ecb709e4e62137 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 30 Oct 2024 22:04:49 -0400 Subject: [PATCH 17/22] Reformatting --- bayesflow/diagnostics/plot_losses.py | 27 +++++++++---------- bayesflow/diagnostics/plot_recovery.py | 2 +- .../diagnostics/plot_z_score_contraction.py | 21 +++++++-------- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/bayesflow/diagnostics/plot_losses.py b/bayesflow/diagnostics/plot_losses.py index 111ef63d6..7af710591 100644 --- a/bayesflow/diagnostics/plot_losses.py +++ b/bayesflow/diagnostics/plot_losses.py @@ -1,23 +1,22 @@ - import numpy as np import seaborn as sns import matplotlib.pyplot as plt def plot_losses( - train_losses, - val_losses=None, - moving_average=False, - ma_window_fraction=0.01, - fig_size=None, - train_color="#8f2727", - val_color="black", - lw_train=2, - lw_val=3, - grid_alpha=0.5, - legend_fontsize=14, - label_fontsize=14, - title_fontsize=16, + train_losses, + val_losses=None, + moving_average=False, + ma_window_fraction=0.01, + fig_size=None, + train_color="#8f2727", + val_color="black", + lw_train=2, + lw_val=3, + grid_alpha=0.5, + legend_fontsize=14, + label_fontsize=14, + title_fontsize=16, ): """ A generic helper function to plot the losses of a series of training epochs diff --git a/bayesflow/diagnostics/plot_recovery.py b/bayesflow/diagnostics/plot_recovery.py index b97eee1c8..c0dba065e 100644 --- a/bayesflow/diagnostics/plot_recovery.py +++ b/bayesflow/diagnostics/plot_recovery.py @@ -1,4 +1,3 @@ - import numpy as np from scipy.stats import median_abs_deviation from sklearn.metrics import r2_score @@ -7,6 +6,7 @@ from ..utils.plot_utils import check_posterior_prior_shapes + def plot_recovery( post_samples, prior_samples, diff --git a/bayesflow/diagnostics/plot_z_score_contraction.py b/bayesflow/diagnostics/plot_z_score_contraction.py index d28ccfc5a..40d3b7105 100644 --- a/bayesflow/diagnostics/plot_z_score_contraction.py +++ b/bayesflow/diagnostics/plot_z_score_contraction.py @@ -1,4 +1,3 @@ - import numpy as np import matplotlib.pyplot as plt import seaborn as sns @@ -7,16 +6,16 @@ def plot_z_score_contraction( - post_samples, - prior_samples, - param_names=None, - fig_size=None, - label_fontsize=16, - title_fontsize=18, - tick_fontsize=12, - color="#8f2727", - n_col=None, - n_row=None, + post_samples, + prior_samples, + param_names=None, + fig_size=None, + label_fontsize=16, + title_fontsize=18, + tick_fontsize=12, + color="#8f2727", + n_col=None, + n_row=None, ): """ Implements a graphical check for global model sensitivity by plotting the From 974d9d4d0bfbd75cf8f47ffffcb3646412de2324 Mon Sep 17 00:00:00 2001 From: Jerry Date: Thu, 31 Oct 2024 11:50:07 -0400 Subject: [PATCH 18/22] Testing pre-commit --- bayesflow/utils/plot_utils.py | 54 ++++++----------------------------- 1 file changed, 9 insertions(+), 45 deletions(-) diff --git a/bayesflow/utils/plot_utils.py b/bayesflow/utils/plot_utils.py index 08e75078f..027e8ae1f 100644 --- a/bayesflow/utils/plot_utils.py +++ b/bayesflow/utils/plot_utils.py @@ -1,4 +1,3 @@ - import numpy as np import matplotlib.pyplot as plt @@ -52,12 +51,7 @@ def check_posterior_prior_shapes(post_samples, prior_samples): ) -def get_count_and_names( - samples, - names: list = None, - symbol: str = None, - n_objects: int = None -): +def get_count_and_names(samples, names: list = None, symbol: str = None, n_objects: int = None): """ Determine the number of objects, such as parameters or models, and their respective names if None given. @@ -91,12 +85,7 @@ def get_count_and_names( return n_objects, names -def configure_layout( - n_total: int, - n_row: int = None, - n_col: int = None, - stacked: bool = False -): +def configure_layout(n_total: int, n_row: int = None, n_col: int = None, stacked: bool = False): """ Determine the number of rows and columns in diagnostics visualizations. @@ -133,9 +122,9 @@ def configure_layout( def initialize_figure( - n_row: int = None, - n_col: int = None, - fig_size: tuple = None, + n_row: int = None, + n_col: int = None, + fig_size: tuple = None, ): """ Initialize a set of figures @@ -146,8 +135,6 @@ def initialize_figure( Number of rows in a figure n_col : int Number of columns in a figure - stacked : bool - Whether subplots in a figure are stacked by rows fig_size : tuple Size of the figure adjusting to the display resolution or the designer's desire @@ -197,25 +184,14 @@ def collapse_axes(axarr, n_row: int = 1, n_col: int = 1): return ax -def add_xlabels( - axarr, - n_row: int = None, - n_col: int = None, - xlabel: str = None, - label_fontsize: int = None -): +def add_xlabels(axarr, n_row: int = None, n_col: int = None, xlabel: str = None, label_fontsize: int = None): # Only add x-labels to the bottom row bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] for _ax in bottom_row: _ax.set_xlabel(xlabel, fontsize=label_fontsize) -def add_ylabels( - axarr, - n_row: int = None, - ylabel: str = None, - label_fontsize: int = None -): +def add_ylabels(axarr, n_row: int = None, ylabel: str = None, label_fontsize: int = None): # Only add y-labels to right left-most row if n_row == 1: # if there is only one row, the ax array is 1D axarr[0].set_ylabel(ylabel, fontsize=label_fontsize) @@ -226,12 +202,7 @@ def add_ylabels( def add_labels( - axarr, - n_row: int = None, - n_col: int = None, - xlabel: str = None, - ylabel: str = None, - label_fontsize: int = None + axarr, n_row: int = None, n_col: int = None, xlabel: str = None, ylabel: str = None, label_fontsize: int = None ): """ Wrapper function for configuring labels for both axes. @@ -245,12 +216,7 @@ def remove_unused_axes(axarr_it, n_params: int = None): _ax.remove() -def preprocess( - post_samples, - prior_samples, - fig_size: tuple = None, - collapse: bool = True -): +def preprocess(post_samples, prior_samples, fig_size: tuple = None, collapse: bool = True): """ Procedural wrapper that encompasses all preprocessing steps, including shape-checking, parameter name generation, layout configuration, @@ -264,8 +230,6 @@ def preprocess( The prior draws obtained for generating n_data_sets fig_size : tuple, optional, default: None Size of the figure adjusting to the display resolution - stacked : bool, optional, default: False - Whether subplots in a figure are stacked by rows collapse : bool, optional, default: True Whether subplots in a figure are collapsed into rows """ From 4eabc60475917a9491ae7f4f6eca2cfdbe3d0423 Mon Sep 17 00:00:00 2001 From: Jerry Date: Fri, 1 Nov 2024 07:52:10 -0400 Subject: [PATCH 19/22] Reformat using pre-commit --- bayesflow/diagnostics/plot_distribution_2d.py | 41 +++++--------- bayesflow/diagnostics/plot_losses.py | 39 ++++++------- bayesflow/diagnostics/plot_recovery.py | 56 ++++++++----------- bayesflow/diagnostics/plot_sbc_ecdf.py | 28 ++-------- bayesflow/diagnostics/plot_sbc_histogram.py | 26 ++++----- .../diagnostics/plot_z_score_contraction.py | 24 ++++---- bayesflow/utils/exceptions/shape_error.py | 1 - examples/mm_gsn.stan | 4 +- 8 files changed, 84 insertions(+), 135 deletions(-) diff --git a/bayesflow/diagnostics/plot_distribution_2d.py b/bayesflow/diagnostics/plot_distribution_2d.py index e0a0b722b..6d24e19a7 100644 --- a/bayesflow/diagnostics/plot_distribution_2d.py +++ b/bayesflow/diagnostics/plot_distribution_2d.py @@ -1,4 +1,3 @@ - import logging import seaborn as sns import pandas as pd @@ -7,15 +6,15 @@ def plot_distribution_2d( - samples: dict[str, Tensor] = None, - parameters: str = None, - n_params: int = None, - param_names: list = None, - height: float = 2.5, - color: str | tuple = "#8f2727", - alpha: float = 0.9, - render: bool = True, - **kwargs + samples: dict[str, Tensor] = None, + parameters: str = None, + n_params: int = None, + param_names: list = None, + height: float = 2.5, + color: str | tuple = "#8f2727", + alpha: float = 0.9, + render: bool = True, + **kwargs, ): """ A more flexible pair plot function for multiple distributions based upon @@ -67,28 +66,16 @@ def plot_distribution_2d( # Generate plots artist = sns.PairGrid(data_to_plot, height=height, **kwargs) - artist.map_diag( - sns.histplot, fill=True, color=color, alpha=alpha, kde=True - ) + artist.map_diag(sns.histplot, fill=True, color=color, alpha=alpha, kde=True) # Incorporate exceptions for generating KDE plots try: - artist.map_lower( - sns.kdeplot, fill=True, color=color, alpha=alpha - ) + artist.map_lower(sns.kdeplot, fill=True, color=color, alpha=alpha) except Exception as e: - logging.warning( - "KDE failed due to the following exception:\n" - + repr(e) - + "\nSubstituting scatter plot." - ) - artist.map_lower( - sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color - ) + logging.warning("KDE failed due to the following exception:\n" + repr(e) + "\nSubstituting scatter plot.") + artist.map_lower(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) - artist.map_upper( - sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color - ) + artist.map_upper(sns.scatterplot, alpha=0.6, s=40, edgecolor="k", color=color) if render: # Generate grids diff --git a/bayesflow/diagnostics/plot_losses.py b/bayesflow/diagnostics/plot_losses.py index 7af710591..215e53179 100644 --- a/bayesflow/diagnostics/plot_losses.py +++ b/bayesflow/diagnostics/plot_losses.py @@ -4,19 +4,19 @@ def plot_losses( - train_losses, - val_losses=None, - moving_average=False, - ma_window_fraction=0.01, - fig_size=None, - train_color="#8f2727", - val_color="black", - lw_train=2, - lw_val=3, - grid_alpha=0.5, - legend_fontsize=14, - label_fontsize=14, - title_fontsize=16, + train_losses, + val_losses=None, + moving_average=False, + ma_window_fraction=0.01, + fig_size=None, + train_color="#8f2727", + val_color="black", + lw_train=2, + lw_val=3, + grid_alpha=0.5, + legend_fontsize=14, + label_fontsize=14, + title_fontsize=16, ): """ A generic helper function to plot the losses of a series of training epochs @@ -83,7 +83,7 @@ def plot_losses( train_step_index = np.arange(1, len(train_losses) + 1) if val_losses is not None: val_step = int(np.floor(len(train_losses) / len(val_losses))) - val_step_index = train_step_index[(val_step - 1)::val_step] + val_step_index = train_step_index[(val_step - 1) :: val_step] # If unequal length due to some reason, attempt a fix if val_step_index.shape[0] > val_losses.shape[0]: @@ -93,18 +93,11 @@ def plot_losses( looper = [axarr] if n_row == 1 else axarr.flat for i, ax in enumerate(looper): # Plot train curve - ax.plot( - train_step_index, train_losses.iloc[:, i], - color=train_color, lw=lw_train, alpha=0.9, label="Training" - ) + ax.plot(train_step_index, train_losses.iloc[:, i], color=train_color, lw=lw_train, alpha=0.9, label="Training") if moving_average and train_losses.columns[i] == "Loss": moving_average_window = int(train_losses.shape[0] * ma_window_fraction) smoothed_loss = train_losses.iloc[:, i].rolling(window=moving_average_window).mean() - ax.plot( - train_step_index, smoothed_loss, - color="grey", lw=lw_train, - label="Training (Moving Average)" - ) + ax.plot(train_step_index, smoothed_loss, color="grey", lw=lw_train, label="Training (Moving Average)") # Plot optional val curve if val_losses is not None: diff --git a/bayesflow/diagnostics/plot_recovery.py b/bayesflow/diagnostics/plot_recovery.py index c0dba065e..98d082b24 100644 --- a/bayesflow/diagnostics/plot_recovery.py +++ b/bayesflow/diagnostics/plot_recovery.py @@ -8,24 +8,24 @@ def plot_recovery( - post_samples, - prior_samples, - point_agg=np.median, - uncertainty_agg=median_abs_deviation, - param_names=None, - fig_size=None, - label_fontsize=16, - title_fontsize=18, - metric_fontsize=16, - tick_fontsize=12, - add_corr=True, - add_r2=True, - color="#8f2727", - n_col=None, - n_row=None, - xlabel="Ground truth", - ylabel="Estimated", - **kwargs, + post_samples, + prior_samples, + point_agg=np.median, + uncertainty_agg=median_abs_deviation, + param_names=None, + fig_size=None, + label_fontsize=16, + title_fontsize=18, + metric_fontsize=16, + tick_fontsize=12, + add_corr=True, + add_r2=True, + color="#8f2727", + n_col=None, + n_row=None, + xlabel="Ground truth", + ylabel="Estimated", + **kwargs, ): """ Creates and plots publication-ready recovery plot with true estimate @@ -139,13 +139,9 @@ def plot_recovery( # Add scatter and error bars if uncertainty_agg is not None: - _ = ax.errorbar( - prior_samples[:, i], est[:, i], yerr=u[:, i], fmt="o", alpha=0.5, color=color, **kwargs - ) + _ = ax.errorbar(prior_samples[:, i], est[:, i], yerr=u[:, i], fmt="o", alpha=0.5, color=color, **kwargs) else: - _ = ax.scatter( - prior_samples[:, i], est[:, i], alpha=0.5, color=color, **kwargs - ) + _ = ax.scatter(prior_samples[:, i], est[:, i], alpha=0.5, color=color, **kwargs) # Make plots quadratic to avoid visual illusions lower = min(prior_samples[:, i].min(), est[:, i].min()) @@ -189,17 +185,11 @@ def plot_recovery( # Prettify sns.despine(ax=ax) ax.grid(alpha=0.5) - ax.tick_params( - axis="both", which="major", labelsize=tick_fontsize - ) - ax.tick_params( - axis="both", which="minor", labelsize=tick_fontsize - ) + ax.tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax.tick_params(axis="both", which="minor", labelsize=tick_fontsize) # Only add x-labels to the bottom row - bottom_row = axarr if n_row == 1 else ( - axarr[0] if n_col == 1 else axarr[n_row - 1, :] - ) + bottom_row = axarr if n_row == 1 else (axarr[0] if n_col == 1 else axarr[n_row - 1, :]) for _ax in bottom_row: _ax.set_xlabel(xlabel, fontsize=label_fontsize) diff --git a/bayesflow/diagnostics/plot_sbc_ecdf.py b/bayesflow/diagnostics/plot_sbc_ecdf.py index cc8614436..cbe680b4c 100644 --- a/bayesflow/diagnostics/plot_sbc_ecdf.py +++ b/bayesflow/diagnostics/plot_sbc_ecdf.py @@ -1,4 +1,3 @@ - import matplotlib.pyplot as plt import numpy as np import seaborn as sns @@ -99,9 +98,7 @@ def plot_sbc_ecdf( n_params = post_samples.shape[-1] # Compute fractional ranks (using broadcasting) - ranks = np.sum( - post_samples < prior_samples[:, np.newaxis, :], axis=1 - ) / post_samples.shape[1] + ranks = np.sum(post_samples < prior_samples[:, np.newaxis, :], axis=1) / post_samples.shape[1] # Prepare figure if stacked: @@ -137,25 +134,14 @@ def plot_sbc_ecdf( if stacked: if j == 0: - ax.plot( - xx, yy, - color=rank_ecdf_color, alpha=0.95, - label="Rank ECDFs" - ) + ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDFs") else: ax.plot(xx, yy, color=rank_ecdf_color, alpha=0.95) else: - ax.flat[j].plot( - xx, yy, - color=rank_ecdf_color, alpha=0.95, - label="Rank ECDF" - ) + ax.flat[j].plot(xx, yy, color=rank_ecdf_color, alpha=0.95, label="Rank ECDF") # Compute uniform ECDF and bands - alpha, z, L, H = simultaneous_ecdf_bands( - post_samples.shape[0], - **kwargs.pop("ecdf_bands_kwargs", {}) - ) + alpha, z, L, H = simultaneous_ecdf_bands(post_samples.shape[0], **kwargs.pop("ecdf_bands_kwargs", {})) # Difference, if specified if difference: @@ -177,11 +163,7 @@ def plot_sbc_ecdf( titles = param_names for _ax, title in zip(axes, titles): - _ax.fill_between( - z, L, H, - color=fill_color, alpha=0.2, - label=rf"{int((1-alpha) * 100)}$\%$ Confidence Bands" - ) + _ax.fill_between(z, L, H, color=fill_color, alpha=0.2, label=rf"{int((1-alpha) * 100)}$\%$ Confidence Bands") # Prettify plot sns.despine(ax=_ax) diff --git a/bayesflow/diagnostics/plot_sbc_histogram.py b/bayesflow/diagnostics/plot_sbc_histogram.py index 41542a046..82e58342c 100644 --- a/bayesflow/diagnostics/plot_sbc_histogram.py +++ b/bayesflow/diagnostics/plot_sbc_histogram.py @@ -1,4 +1,3 @@ - import logging import numpy as np import matplotlib.pyplot as plt @@ -7,19 +6,20 @@ from scipy.stats import binom from ..utils.plot_utils import check_posterior_prior_shapes + def plot_sbc_histograms( - post_samples, - prior_samples, - param_names=None, - fig_size=None, - num_bins=None, - binomial_interval=0.99, - label_fontsize=16, - title_fontsize=18, - tick_fontsize=12, - hist_color="#a34f4f", - n_row=None, - n_col=None, + post_samples, + prior_samples, + param_names=None, + fig_size=None, + num_bins=None, + binomial_interval=0.99, + label_fontsize=16, + title_fontsize=18, + tick_fontsize=12, + hist_color="#a34f4f", + n_row=None, + n_col=None, ): """Creates and plots publication-ready histograms of rank statistics for simulation-based calibration (SBC) checks according to [1]. diff --git a/bayesflow/diagnostics/plot_z_score_contraction.py b/bayesflow/diagnostics/plot_z_score_contraction.py index 40d3b7105..151dddea7 100644 --- a/bayesflow/diagnostics/plot_z_score_contraction.py +++ b/bayesflow/diagnostics/plot_z_score_contraction.py @@ -6,16 +6,16 @@ def plot_z_score_contraction( - post_samples, - prior_samples, - param_names=None, - fig_size=None, - label_fontsize=16, - title_fontsize=18, - tick_fontsize=12, - color="#8f2727", - n_col=None, - n_row=None, + post_samples, + prior_samples, + param_names=None, + fig_size=None, + label_fontsize=16, + title_fontsize=18, + tick_fontsize=12, + color="#8f2727", + n_col=None, + n_row=None, ): """ Implements a graphical check for global model sensitivity by plotting the @@ -139,9 +139,7 @@ def plot_z_score_contraction( ax.set_xlim([-0.05, 1.05]) # Only add x-labels to the bottom row - bottom_row = axarr if n_row == 1 else ( - axarr[0] if n_col == 1 else axarr[n_row - 1, :] - ) + bottom_row = axarr if n_row == 1 else (axarr[0] if n_col == 1 else axarr[n_row - 1, :]) for _ax in bottom_row: _ax.set_xlabel("Posterior contraction", fontsize=label_fontsize) diff --git a/bayesflow/utils/exceptions/shape_error.py b/bayesflow/utils/exceptions/shape_error.py index c167bdab6..ebb28d156 100644 --- a/bayesflow/utils/exceptions/shape_error.py +++ b/bayesflow/utils/exceptions/shape_error.py @@ -1,4 +1,3 @@ - class ShapeError(Exception): """Class for error in expected shapes.""" diff --git a/examples/mm_gsn.stan b/examples/mm_gsn.stan index 0d0702ca1..7b33a8645 100644 --- a/examples/mm_gsn.stan +++ b/examples/mm_gsn.stan @@ -27,11 +27,11 @@ transformed parameters { model { vector[D] mu; - + // Priors theta1_centered ~ normal(0.0, 0.1); theta2_centered ~ normal(0.0, 0.1); - + // Likelihood for (i in 1:D) { mu[i] = theta1_scaled * design_s[i] / (theta2_scaled + design_s[i]); From afa8b9afb59b27584a71904d132b6eef63c1ad17 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sat, 2 Nov 2024 16:42:25 -0400 Subject: [PATCH 20/22] Add plot_calibration_curves --- .../diagnostics/plot_calibration_curves.py | 136 ++++++++++++++++++ bayesflow/utils/comp_utils.py | 0 2 files changed, 136 insertions(+) create mode 100644 bayesflow/diagnostics/plot_calibration_curves.py create mode 100644 bayesflow/utils/comp_utils.py diff --git a/bayesflow/diagnostics/plot_calibration_curves.py b/bayesflow/diagnostics/plot_calibration_curves.py new file mode 100644 index 000000000..c5071ae1f --- /dev/null +++ b/bayesflow/diagnostics/plot_calibration_curves.py @@ -0,0 +1,136 @@ +import numpy as np +import matplotlib.pyplot as plt + +from ..utils.comp_utils import expected_calibration_error + + +def plot_calibration_curves( + true_models, + pred_models, + model_names=None, + num_bins=10, + label_fontsize=16, + legend_fontsize=14, + title_fontsize=18, + tick_fontsize=12, + epsilon=0.02, + fig_size=None, + color="#8f2727", + n_row=None, + n_col=None, +): + """Plots the calibration curves, the ECEs and the marginal histograms of predicted posterior model probabilities + for a model comparison problem. The marginal histograms inform about the fraction of predictions in each bin. + Depends on the ``expected_calibration_error`` function for computing the ECE. + + Parameters + ---------- + true_models : np.ndarray of shape (num_data_sets, num_models) + The one-hot-encoded true model indices per data set. + pred_models : np.ndarray of shape (num_data_sets, num_models) + The predicted posterior model probabilities (PMPs) per data set. + model_names : list or None, optional, default: None + The model names for nice plot titles. Inferred if None. + num_bins : int, optional, default: 10 + The number of bins to use for the calibration curves (and marginal histograms). + label_fontsize : int, optional, default: 16 + The font size of the y-label and y-label texts + legend_fontsize : int, optional, default: 14 + The font size of the legend text (ECE value) + title_fontsize : int, optional, default: 18 + The font size of the title text. Only relevant if `stacked=False` + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + epsilon : float, optional, default: 0.02 + A small amount to pad the [0, 1]-bounded axes from both side. + fig_size : tuple or None, optional, default: None + The figure size passed to the ``matplotlib`` constructor. Inferred if ``None`` + color : str, optional, default: '#8f2727' + The color of the calibration curves + n_row : int, optional, default: None + The number of rows for the subplots. Dynamically determined if None. + n_col : int, optional, default: None + The number of columns for the subplots. Dynamically determined if None. + + Returns + ------- + fig : plt.Figure - the figure instance for optional saving + """ + + num_models = true_models.shape[-1] + if model_names is None: + model_names = [rf"$M_{{{m}}}$" for m in range(1, num_models + 1)] + + # Determine number of rows and columns for subplots based on inputs + if n_row is None and n_col is None: + n_row = int(np.ceil(num_models / 6)) + n_col = int(np.ceil(num_models / n_row)) + elif n_row is None and n_col is not None: + n_row = int(np.ceil(num_models / n_col)) + elif n_row is not None and n_col is None: + n_col = int(np.ceil(num_models / n_row)) + + # Compute calibration + cal_errs, probs_true, probs_pred = expected_calibration_error(true_models, pred_models, num_bins) + + # Initialize figure + if fig_size is None: + fig_size = (int(5 * n_col), int(5 * n_row)) + fig, ax_array = plt.subplots(n_row, n_col, figsize=fig_size) + if n_row > 1: + ax = ax_array.flat + + # Plot marginal calibration curves in a loop + if n_row > 1: + ax = ax_array.flat + else: + ax = ax_array + for j in range(num_models): + # Plot calibration curve + ax[j].plot(probs_pred[j], probs_true[j], "o-", color=color) + + # Plot PMP distribution over bins + uniform_bins = np.linspace(0.0, 1.0, num_bins + 1) + norm_weights = np.ones_like(pred_models) / len(pred_models) + ax[j].hist(pred_models[:, j], bins=uniform_bins, weights=norm_weights[:, j], color="grey", alpha=0.3) + + # Plot AB line + ax[j].plot((0, 1), (0, 1), "--", color="black", alpha=0.9) + + # Tweak plot + ax[j].tick_params(axis="both", which="major", labelsize=tick_fontsize) + ax[j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) + ax[j].set_title(model_names[j], fontsize=title_fontsize) + ax[j].spines["right"].set_visible(False) + ax[j].spines["top"].set_visible(False) + ax[j].set_xlim([0 - epsilon, 1 + epsilon]) + ax[j].set_ylim([0 - epsilon, 1 + epsilon]) + ax[j].set_xticks([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]) + ax[j].set_yticks([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]) + ax[j].grid(alpha=0.5) + + # Add ECE label + ax[j].text( + 0.1, + 0.9, + r"$\widehat{{\mathrm{{ECE}}}}$ = {0:.3f}".format(cal_errs[j]), + horizontalalignment="left", + verticalalignment="center", + transform=ax[j].transAxes, + size=legend_fontsize, + ) + + # Only add x-labels to the bottom row + bottom_row = ax_array if n_row == 1 else ax_array[0] if n_col == 1 else ax_array[n_row - 1, :] + for _ax in bottom_row: + _ax.set_xlabel("Predicted probability", fontsize=label_fontsize) + + # Only add y-labels to left-most row + if n_row == 1: # if there is only one row, the ax array is 1D + ax[0].set_ylabel("True probability", fontsize=label_fontsize) + else: # if there is more than one row, the ax array is 2D + for _ax in ax_array[:, 0]: + _ax.set_ylabel("True probability", fontsize=label_fontsize) + + fig.tight_layout() + return fig diff --git a/bayesflow/utils/comp_utils.py b/bayesflow/utils/comp_utils.py new file mode 100644 index 000000000..e69de29bb From 7e90e61a94ebc257b3785847fa5b8959b0fe7d76 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sat, 2 Nov 2024 17:00:16 -0400 Subject: [PATCH 21/22] Fixed E721 for plot_posterior_2d and plot_prior_2d --- bayesflow/diagnostics/__init__.py | 4 + bayesflow/diagnostics/plot_latent_space_2d.py | 31 +++++ bayesflow/diagnostics/plot_posterior_2d.py | 128 ++++++++++++++++++ bayesflow/diagnostics/plot_prior_2d.py | 43 ++++++ bayesflow/utils/__init__.py | 2 + bayesflow/utils/comp_utils.py | 63 +++++++++ bayesflow/utils/plot_utils.py | 68 +++++----- 7 files changed, 305 insertions(+), 34 deletions(-) create mode 100644 bayesflow/diagnostics/plot_latent_space_2d.py create mode 100644 bayesflow/diagnostics/plot_posterior_2d.py create mode 100644 bayesflow/diagnostics/plot_prior_2d.py diff --git a/bayesflow/diagnostics/__init__.py b/bayesflow/diagnostics/__init__.py index d75daa681..a4484dd06 100644 --- a/bayesflow/diagnostics/__init__.py +++ b/bayesflow/diagnostics/__init__.py @@ -4,3 +4,7 @@ from .plot_sbc_histogram import plot_sbc_histograms from .plot_distribution_2d import plot_distribution_2d from .plot_z_score_contraction import plot_z_score_contraction +from .plot_prior_2d import plot_prior_2d +from .plot_posterior_2d import plot_posterior_2d +from .plot_latent_space_2d import plot_latent_space_2d +from .plot_calibration_curves import plot_calibration_curves diff --git a/bayesflow/diagnostics/plot_latent_space_2d.py b/bayesflow/diagnostics/plot_latent_space_2d.py new file mode 100644 index 000000000..9fb56fbc4 --- /dev/null +++ b/bayesflow/diagnostics/plot_latent_space_2d.py @@ -0,0 +1,31 @@ +from .plot_distribution_2d import plot_distribution_2d + +from keras import backend as K + + +def plot_latent_space_2d(z_samples, height: float = 2.5, color="#8f2727", **kwargs): + """Creates pair plots for the latent space learned by the inference network. Enables + visual inspection of the latent space and whether its structure corresponds to the + one enforced by the optimization criterion. + + Parameters + ---------- + z_samples : np.ndarray or tf.Tensor of shape (n_sim, n_params) + The latent samples computed through a forward pass of the inference network. + height : float, optional, default: 2.5 + The height of the pair plot. + color : str, optional, default : '#8f2727' + The color of the plot + **kwargs : dict, optional + Additional keyword arguments passed to the sns.PairGrid constructor + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + """ + + # Try to convert z_samples, if eventually tf.Tensor is passed + if not isinstance(z_samples, K.tf.Tensor): + z_samples = K.constant(z_samples) + + plot_distribution_2d(z_samples, context="Latent Dim", height=height, color=color, render=True, **kwargs) diff --git a/bayesflow/diagnostics/plot_posterior_2d.py b/bayesflow/diagnostics/plot_posterior_2d.py new file mode 100644 index 000000000..a676539d2 --- /dev/null +++ b/bayesflow/diagnostics/plot_posterior_2d.py @@ -0,0 +1,128 @@ +import pandas as pd +import seaborn as sns + +from matplotlib.lines import Line2D +from .plot_distribution_2d import plot_distribution_2d + + +def plot_posterior_2d( + posterior_draws, + prior=None, + prior_draws=None, + param_names: list = None, + height: int = 3, + label_fontsize: int = 14, + legend_fontsize: int = 16, + tick_fontsize: int = 12, + post_color: str | tuple = "#8f2727", + prior_color: str | tuple = "gray", + post_alpha: float = 0.9, + prior_alpha: float = 0.7, + **kwargs, +): + """Generates a bivariate pairplot given posterior draws and optional prior or prior draws. + + posterior_draws : np.ndarray of shape (n_post_draws, n_params) + The posterior draws obtained for a SINGLE observed data set. + prior : bayesflow.forward_inference.Prior instance or None, optional, default: None + The optional prior object having an input-output signature as given by ayesflow.forward_inference.Prior + prior_draws : np.ndarray of shape (n_prior_draws, n_params) or None, optonal (default: None) + The optional prior draws obtained from the prior. If both prior and prior_draws are provided, prior_draws + will be used. + param_names : list or None, optional, default: None + The parameter names for nice plot titles. Inferred if None + height : float, optional, default: 3 + The height of the pairplot + label_fontsize : int, optional, default: 14 + The font size of the x and y-label texts (parameter names) + legend_fontsize : int, optional, default: 16 + The font size of the legend text + tick_fontsize : int, optional, default: 12 + The font size of the axis ticklabels + post_color : str, optional, default: '#8f2727' + The color for the posterior histograms and KDEs + priors_color : str, optional, default: gray + The color for the optional prior histograms and KDEs + post_alpha : float in [0, 1], optonal, default: 0.9 + The opacity of the posterior plots + prior_alpha : float in [0, 1], optonal, default: 0.7 + The opacity of the prior plots + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + + Raises + ------ + AssertionError + If the shape of posterior_draws is not 2-dimensional. + """ + + # Ensure correct shape + assert ( + len(posterior_draws.shape) + ) == 2, "Shape of `posterior_samples` for a single data set should be 2 dimensional!" + + # Plot posterior first + g = plot_distribution_2d(posterior_draws, context="\\theta", param_names=param_names, render=False, **kwargs) + + # Obtain n_draws and n_params + n_draws, n_params = posterior_draws.shape + + # If prior object is given and no draws, obtain draws + if prior is not None and prior_draws is None: + draws = prior(n_draws) + if isinstance(draws, dict): + prior_draws = draws["prior_draws"] + else: + prior_draws = draws + + # Attempt to determine parameter names + if param_names is None: + if hasattr(prior, "param_names"): + if prior.param_names is not None: + param_names = prior.param_names + else: + param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + else: + param_names = [f"$\\theta_{{{i}}}$" for i in range(1, n_params + 1)] + + # Add prior, if given + if prior_draws is not None: + prior_draws_df = pd.DataFrame(prior_draws, columns=param_names) + g.data = prior_draws_df + g.map_diag(sns.histplot, fill=True, color=prior_color, alpha=prior_alpha, kde=True, zorder=-1) + g.map_lower(sns.kdeplot, fill=True, color=prior_color, alpha=prior_alpha, zorder=-1) + + # Add legend, if prior also given + if prior_draws is not None or prior is not None: + handles = [ + Line2D(xdata=[], ydata=[], color=post_color, lw=3, alpha=post_alpha), + Line2D(xdata=[], ydata=[], color=prior_color, lw=3, alpha=prior_alpha), + ] + g.legend(handles, ["Posterior", "Prior"], fontsize=legend_fontsize, loc="center right") + + n_row, n_col = g.axes.shape + + for i in range(n_row): + # Remove upper axis + for j in range(i + 1, n_col): + g.axes[i, j].axis("off") + + # Modify tick sizes + for j in range(i + 1): + g.axes[i, j].tick_params(axis="both", which="major", labelsize=tick_fontsize) + g.axes[i, j].tick_params(axis="both", which="minor", labelsize=tick_fontsize) + + # Add nice labels + for i, param_name in enumerate(param_names): + g.axes[i, 0].set_ylabel(param_name, fontsize=label_fontsize) + g.axes[len(param_names) - 1, i].set_xlabel(param_name, fontsize=label_fontsize) + + # Add grids + for i in range(n_params): + for j in range(n_params): + g.axes[i, j].grid(alpha=0.5) + + g.tight_layout() + return g diff --git a/bayesflow/diagnostics/plot_prior_2d.py b/bayesflow/diagnostics/plot_prior_2d.py new file mode 100644 index 000000000..f695e508b --- /dev/null +++ b/bayesflow/diagnostics/plot_prior_2d.py @@ -0,0 +1,43 @@ +from .plot_distribution_2d import plot_distribution_2d + + +def plot_prior_2d( + prior, + param_names: list = None, + n_samples: int = 2000, + height: float = 2.5, + color: str | tuple = "#8f2727", + **kwargs, +): + """Creates pair-plots for a given joint prior. + + Parameters + ---------- + prior : callable + The prior object which takes a single integer argument and generates random draws. + param_names : list of str or None, optional, default None + An optional list of strings which + n_samples : int, optional, default: 1000 + The number of random draws from the joint prior + height : float, optional, default: 2.5 + The height of the pair plot + color : str, optional, default : '#8f2727' + The color of the plot + **kwargs : dict, optional + Additional keyword arguments passed to the sns.PairGrid constructor + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + """ + + # Generate prior draws + prior_samples = prior(n_samples) + + # Handle dict type + if isinstance(prior_samples, dict): + prior_samples = prior_samples["prior_draws"] + + plot_distribution_2d( + prior_samples, context="Prior", height=height, color=color, param_names=param_names, render=True, **kwargs + ) diff --git a/bayesflow/utils/__init__.py b/bayesflow/utils/__init__.py index 169a13128..68c9de275 100644 --- a/bayesflow/utils/__init__.py +++ b/bayesflow/utils/__init__.py @@ -39,3 +39,5 @@ tree_concatenate, tree_stack, ) +from .comp_utils import expected_calibration_error +from .plot_utils import check_posterior_prior_shapes diff --git a/bayesflow/utils/comp_utils.py b/bayesflow/utils/comp_utils.py index e69de29bb..b21b3f03c 100644 --- a/bayesflow/utils/comp_utils.py +++ b/bayesflow/utils/comp_utils.py @@ -0,0 +1,63 @@ +import numpy as np + +from sklearn.calibration import calibration_curve + + +def expected_calibration_error(m_true, m_pred, num_bins=10): + """Estimates the expected calibration error (ECE) of a model comparison network according to [1]. + + [1] Naeini, M. P., Cooper, G., & Hauskrecht, M. (2015). + Obtaining well calibrated probabilities using bayesian binning. + In Proceedings of the AAAI conference on artificial intelligence (Vol. 29, No. 1). + + Notes + ----- + Make sure that ``m_true`` are **one-hot encoded** classes! + + Parameters + ---------- + m_true : np.ndarray of shape (num_sim, num_models) + The one-hot-encoded true model indices. + m_pred : tf.tensor of shape (num_sim, num_models) + The predicted posterior model probabilities. + num_bins : int, optional, default: 10 + The number of bins to use for the calibration curves (and marginal histograms). + + Returns + ------- + cal_errs : list of length (num_models) + The ECEs for each model. + probs : list of length (num_models) + The bin information for constructing the calibration curves. + Each list contains two arrays of length (num_bins) with the predicted and true probabilities for each bin. + """ + + # Convert tf.Tensors to numpy, if passed + if type(m_true) is not np.ndarray: + m_true = m_true.numpy() + if type(m_pred) is not np.ndarray: + m_pred = m_pred.numpy() + + # Extract number of models and prepare containers + n_models = m_true.shape[1] + cal_errs = [] + probs_true = [] + probs_pred = [] + + # Loop for each model and compute calibration errs per bin + for k in range(n_models): + y_true = (m_true.argmax(axis=1) == k).astype(np.float32) + y_prob = m_pred[:, k] + prob_true, prob_pred = calibration_curve(y_true, y_prob, n_bins=num_bins) + + # Compute ECE by weighting bin errors by bin size + bins = np.linspace(0.0, 1.0, num_bins + 1) + binids = np.searchsorted(bins[1:-1], y_prob) + bin_total = np.bincount(binids, minlength=len(bins)) + nonzero = bin_total != 0 + cal_err = np.sum(np.abs(prob_true - prob_pred) * (bin_total[nonzero] / len(y_true))) + + cal_errs.append(cal_err) + probs_true.append(prob_true) + probs_pred.append(prob_pred) + return cal_errs, probs_true, probs_pred diff --git a/bayesflow/utils/plot_utils.py b/bayesflow/utils/plot_utils.py index 027e8ae1f..19170f7e7 100644 --- a/bayesflow/utils/plot_utils.py +++ b/bayesflow/utils/plot_utils.py @@ -85,7 +85,7 @@ def get_count_and_names(samples, names: list = None, symbol: str = None, n_objec return n_objects, names -def configure_layout(n_total: int, n_row: int = None, n_col: int = None, stacked: bool = False): +def set_layout(n_total: int, n_row: int = None, n_col: int = None, stacked: bool = False): """ Determine the number of rows and columns in diagnostics visualizations. @@ -121,7 +121,7 @@ def configure_layout(n_total: int, n_row: int = None, n_col: int = None, stacked return n_row, n_col -def initialize_figure( +def make_figure( n_row: int = None, n_col: int = None, fig_size: tuple = None, @@ -141,27 +141,27 @@ def initialize_figure( Returns ------- - f, axarr + f, ax_array Initialized figures """ if n_row == 1 and n_col == 1: - f, axarr = plt.subplots(1, 1, figsize=fig_size) + f, ax_array = plt.subplots(1, 1, figsize=fig_size) else: if fig_size is None: fig_size = (int(5 * n_col), int(5 * n_row)) - f, axarr = plt.subplots(n_row, n_col, figsize=fig_size) + f, ax_array = plt.subplots(n_row, n_col, figsize=fig_size) - return f, axarr + return f, ax_array -def collapse_axes(axarr, n_row: int = 1, n_col: int = 1): +def flatten_axes(ax_array, n_row: int = 1, n_col: int = 1): """ Collapse a 2D array of subplot Axes into a 1D array Parameters ---------- - axarr : 2D array of Axes + ax_array : 2D array of Axes An array of axes for subplots n_row : int, default: 1 Number of rows for the axes @@ -174,49 +174,49 @@ def collapse_axes(axarr, n_row: int = 1, n_col: int = 1): Collapsed axes for subplots """ - ax = np.atleast_1d(axarr) - # turn axarr into 1D list + ax = np.atleast_1d(ax_array) + # turn ax_array into 1D list if n_row > 1 or n_col > 1: - ax = axarr.flat + ax = ax_array.flat else: - ax = axarr + ax = ax_array return ax -def add_xlabels(axarr, n_row: int = None, n_col: int = None, xlabel: str = None, label_fontsize: int = None): +def add_x_labels(ax_array, n_row: int = None, n_col: int = None, x_label: str = None, label_fontsize: int = None): # Only add x-labels to the bottom row - bottom_row = axarr if n_row == 1 else axarr[0] if n_col == 1 else axarr[n_row - 1, :] + bottom_row = ax_array if n_row == 1 else ax_array[0] if n_col == 1 else ax_array[n_row - 1, :] for _ax in bottom_row: - _ax.set_xlabel(xlabel, fontsize=label_fontsize) + _ax.set_xlabel(x_label, fontsize=label_fontsize) -def add_ylabels(axarr, n_row: int = None, ylabel: str = None, label_fontsize: int = None): +def add_y_labels(ax_array, n_row: int = None, y_label: str = None, label_fontsize: int = None): # Only add y-labels to right left-most row if n_row == 1: # if there is only one row, the ax array is 1D - axarr[0].set_ylabel(ylabel, fontsize=label_fontsize) + ax_array[0].set_ylabel(y_label, fontsize=label_fontsize) # If there is more than one row, the ax array is 2D else: - for _ax in axarr[:, 0]: - _ax.set_ylabel(ylabel, fontsize=label_fontsize) + for _ax in ax_array[:, 0]: + _ax.set_ylabel(y_label, fontsize=label_fontsize) def add_labels( - axarr, n_row: int = None, n_col: int = None, xlabel: str = None, ylabel: str = None, label_fontsize: int = None + ax_array, n_row: int = None, n_col: int = None, x_label: str = None, y_label: str = None, label_fontsize: int = None ): """ Wrapper function for configuring labels for both axes. """ - add_xlabels(axarr, n_row, n_col, xlabel, label_fontsize) - add_ylabels(axarr, n_row, ylabel, label_fontsize) + add_x_labels(ax_array, n_row, n_col, x_label, label_fontsize) + add_y_labels(ax_array, n_row, y_label, label_fontsize) -def remove_unused_axes(axarr_it, n_params: int = None): - for _ax in axarr_it[n_params:]: - _ax.remove() +def remove_unused_axes(ax_array_it, n_params: int = None): + for ax in ax_array_it[n_params:]: + ax.remove() -def preprocess(post_samples, prior_samples, fig_size: tuple = None, collapse: bool = True): +def preprocess(post_samples, prior_samples, fig_size: tuple = None, flatten: bool = True): """ Procedural wrapper that encompasses all preprocessing steps, including shape-checking, parameter name generation, layout configuration, @@ -230,7 +230,7 @@ def preprocess(post_samples, prior_samples, fig_size: tuple = None, collapse: bo The prior draws obtained for generating n_data_sets fig_size : tuple, optional, default: None Size of the figure adjusting to the display resolution - collapse : bool, optional, default: True + flatten : bool, optional, default: True Whether subplots in a figure are collapsed into rows """ @@ -241,18 +241,18 @@ def preprocess(post_samples, prior_samples, fig_size: tuple = None, collapse: bo n_params, param_names = get_count_and_names(post_samples) # Configure layout - n_row, n_col = configure_layout(n_params) + n_row, n_col = set_layout(n_params) # Initialize figure - f, axarr = initialize_figure(n_row, n_col, fig_size=fig_size) + f, ax_array = make_figure(n_row, n_col, fig_size=fig_size) - # turn axarr into 1D list - if collapse: - axarr_it = collapse_axes(axarr, n_row, n_col) + # turn ax_array into 1D list + if flatten: + ax_array_it = flatten_axes(ax_array, n_row, n_col) else: - axarr_it = axarr + ax_array_it = ax_array - return f, axarr, axarr_it, n_row, n_col, n_params, param_names + return f, ax_array, ax_array_it, n_row, n_col, n_params, param_names def postprocess(*args): From 84a49d32febbf2d4a0701ab4606da14c9d14d6a9 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sat, 2 Nov 2024 17:02:27 -0400 Subject: [PATCH 22/22] Add plot_mmd_hypothesis_test --- .../diagnostics/plot_mmd_hypothesis_test.py | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 bayesflow/diagnostics/plot_mmd_hypothesis_test.py diff --git a/bayesflow/diagnostics/plot_mmd_hypothesis_test.py b/bayesflow/diagnostics/plot_mmd_hypothesis_test.py new file mode 100644 index 000000000..01b336094 --- /dev/null +++ b/bayesflow/diagnostics/plot_mmd_hypothesis_test.py @@ -0,0 +1,100 @@ +import matplotlib.pyplot as plt +import seaborn as sns + +from keras import ops + + +def plot_mmd_hypothesis_test( + mmd_null, + mmd_observed: float = None, + alpha_level: float = 0.05, + null_color: str | tuple = (0.16407, 0.020171, 0.577478), + observed_color: str | tuple = "red", + alpha_color: str | tuple = "orange", + truncate_v_lines_at_kde: bool = False, + x_min: float = None, + x_max: float = None, + bw_factor: float = 1.5, +): + """ + + Parameters + ---------- + mmd_null : np.ndarray + The samples from the MMD sampling distribution under the null hypothesis "the model is well-specified" + mmd_observed : float + The observed MMD value + alpha_level : float, optional, default: 0.05 + The rejection probability (type I error) + null_color : str or tuple, optional, default: (0.16407, 0.020171, 0.577478) + The color of the H0 sampling distribution + observed_color : str or tuple, optional, default: "red" + The color of the observed MMD + alpha_color : str or tuple, optional, default: "orange" + The color of the rejection area + truncate_v_lines_at_kde: bool, optional, default: False + true: cut off the vlines at the kde + false: continue kde lines across the plot + x_min : float, optional, default: None + The lower x-axis limit + x_max : float, optional, default: None + The upper x-axis limit + bw_factor : float, optional, default: 1.5 + bandwidth (aka. smoothing parameter) of the kernel density estimate + + Returns + ------- + f : plt.Figure - the figure instance for optional saving + """ + + def draw_v_line_to_kde(x, kde_object, color, label=None, **kwargs): + kde_x, kde_y = kde_object.lines[0].get_data() + idx = ops.argmin(ops.abs(kde_x - x)) + plt.vlines(x=x, ymin=0, ymax=kde_y[idx], color=color, linewidth=3, label=label, **kwargs) + + def fill_area_under_kde(kde_object, x_start, x_end=None, **kwargs): + kde_x, kde_y = kde_object.lines[0].get_data() + if x_end is not None: + plt.fill_between(kde_x, kde_y, where=(kde_x >= x_start) & (kde_x <= x_end), interpolate=True, **kwargs) + else: + plt.fill_between(kde_x, kde_y, where=(kde_x >= x_start), interpolate=True, **kwargs) + + f = plt.figure(figsize=(8, 4)) + + kde = sns.kdeplot(mmd_null, fill=False, linewidth=0, bw_adjust=bw_factor) + sns.kdeplot(mmd_null, fill=True, alpha=0.12, color=null_color, bw_adjust=bw_factor) + + if truncate_v_lines_at_kde: + draw_v_line_to_kde(x=mmd_observed, kde_object=kde, color=observed_color, label=r"Observed data") + else: + plt.vlines( + x=mmd_observed, + ymin=0, + ymax=plt.gca().get_ylim()[1], + color=observed_color, + linewidth=3, + label=r"Observed data", + ) + + mmd_critical = ops.quantile(mmd_null, 1 - alpha_level) + fill_area_under_kde( + kde, mmd_critical, color=alpha_color, alpha=0.5, label=rf"{int(alpha_level*100)}% rejection area" + ) + + if truncate_v_lines_at_kde: + draw_v_line_to_kde(x=mmd_critical, kde_object=kde, color=alpha_color) + else: + plt.vlines(x=mmd_critical, color=alpha_color, linewidth=3, ymin=0, ymax=plt.gca().get_ylim()[1]) + + sns.kdeplot(mmd_null, fill=False, linewidth=3, color=null_color, label=r"$H_0$", bw_adjust=bw_factor) + + plt.xlabel(r"MMD", fontsize=20) + plt.ylabel("") + plt.yticks([]) + plt.xlim(x_min, x_max) + plt.tick_params(axis="both", which="major", labelsize=16) + + plt.legend(fontsize=20) + sns.despine() + + return f