diff --git a/docs/tutorials/Introduction.ipynb b/docs/tutorials/Introduction.ipynb deleted file mode 100644 index acf362d98..000000000 --- a/docs/tutorials/Introduction.ipynb +++ /dev/null @@ -1,3046 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Introduction to AutoRA" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**[AutoRA](https://pypi.org/project/autora/)** (**Au**tomated **R**esearch **A**ssistant) is an open-source framework designed to automate various stages of empirical research, including model discovery, experimental design, and data collection.\n", - "\n", - "This notebook provides a comprehensive introduction to the capabilities of ``autora``. **It demonstrates the fundamental components of ``autora``, and how they can be combined to facilitate automated (closed-loop) empirical research through synthetic experiments.**\n", - "\n", - "**How to use this notebook**: *You can progress through the notebook section by section or directly navigate to specific sections. If you choose the latter, it is recommended to execute all cells in the notebook initially, allowing you to easily rerun the cells in each section later without issues.*\n", - "\n", - "## Overview\n", - "\n", - "1. Installation\n", - "2. Automated Empirical Research Components\n", - " - Experiment Runners\n", - " - Theorists\n", - " - Experimentalists\n", - "3. Automated Empirical Research With Basic Loop Constructs\n", - "4. Automated Empirical Research With AutoRA Workflow Logic\n", - " - Basic Workflows\n", - " - Advanced Workflows\n", - "5. Customizing Automated Empirical Research Components\n", - " - Custom Theorists\n", - " - Custom Experimentalists\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Installation\n", - "\n", - "The AutoRA ecosystem is a comprehensive collection of packages that together establish a framework for closed-loop empirical research. At the core of this framework is the ``autora`` package, which serves as the parent package and is essential for end users to install. It provides functionalities for automating workflows in empirical research and includes vetted modules with minimal dependencies.\n", - "\n", - "However, the flexibility of autora extends further with the inclusion of *optional* modules as additional dependencies. Users have the freedom to selectively install these modules based on their specific needs and preferences.\n", - "\n", - "\"AutoRA\n", - "\n", - "*Optional dependencies enable users to customize their autora environment without worrying about conflicts with other packages within the broader autora ecosystem. To install an optional module, simply use the command ``autora[dependency-name]``, where ``dependency-name`` corresponds to the name of the desired module (see example below).*\n", - "\n", - "To begin, we will install all the relevant optional dependencies. Our focus will be on two experimentalists: ``experimentalist-falsification`` and ``experimentalist-sampler-novelty``, along with a Bayesian Machine Scientist (BMS) implemented in the ``theorist-bms`` package. It's important to note that installing a module will automatically include the main autora package, as well as any required dependencies for workflow management and running synthetic experiments." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m110.5/110.5 kB\u001b[0m \u001b[31m13.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m237.5/237.5 kB\u001b[0m \u001b[31m27.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m51.1/51.1 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h" - ] - } - ], - "source": [ - "!pip install -q \"autora[experimentalist-falsification]\"\n", - "!pip install -q \"autora[experimentalist-sampler-novelty]\"\n", - "!pip install -q \"autora[experimentalist-sampler-model-disagreement]\"\n", - "!pip install -q \"autora[theorist-bms]\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To make all simulations in this notebook replicable, we will set some seeds." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import numpy as np\n", - "import torch\n", - "\n", - "np.random.seed(42)\n", - "torch.manual_seed(42)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Automated Empirical Research Components\n", - "\n", - "The goal of this section is to set up all ``autora`` components to enable a closed-loop discovery workflow with synthetic data. This involves specifying (1) the experiment environment, (2) a theorist for model discovery, (3) an experimentalist for identifying novel experiment conditions.\n", - "\n", - "\"AutoRA" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Experiments\n", - "\n", - "``autora`` provides support for experiment runners, which serve as interfaces for conducting both real-world and synthetic experiments. An experiment runner typically accepts experiment conditions as input (e.g., a 2-dimensional numpy array with columns representing different independent variables) and produces collected observations as output (e.g., a 2-dimensional numpy array with columns representing different dependent variables). These experiment runners can be combined with other ``autora`` components to facilitate closed-loop scientific discovery.\n", - "\n", - "\"AutoRA\n", - "\n", - "#### Types\n", - "\n", - "AutoRA offers two types of experiment runners: **real-world experiments** and **synthetic experiments**.\n", - "\n", - "For **real-world experiments**, experiment runners can include interfaces for various scenarios such as web-based experiments for behavioral data collection (e.g., using [Firebase and Prolific](https://autoresearch.github.io/autora/user-guide/experiment-runners/firebase-prolific/)) or experiments involving electrical circuits (e.g., using [Tinkerforge](https://en.wikipedia.org/wiki/Tinkerforge)). These runners often require external components such as databases to store collected observations or servers to host the experiments. You may refer to the respective tutorials for these interfaces on how to set up all required components.\n", - "\n", - "**Synthetic experiments** are conducted on synthetic experiment runners, which are functions that take experimental conditions as input and generate simulated observations as output. These experiments serve multiple purposes, including *testing autora components* before applying them to real-world experiments, *benchmarking methods for automated scientific discovery*, or *conducting computational metascientific experiments*.\n", - "\n", - "In this introductory tutorial, we primarily focus on simple synthetic experiments. For more complex synthetic experiments implementing various scientific models, you can utilize the[autora-synthetic](https://github.com/autoresearch/autora-synthetic/) module." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Usage\n", - "\n", - "To create a synthetic experiment runner, we begin with **defining a ground truth** from which to generate data. Here, we consider a simple sine function:\n", - "\n", - "$y = f(x) = \\sin(x)$\n", - "\n", - "In this case, $x$ corresponds to an *independent* variable (the variable we can manipulate in an experiment), $y$ corresponds to a *dependent* variable (the variable we can observe after conducting the experiment), and $f(x)$ is the *ground-truth function* (or \"mechanism\") that we seek to uncover via a combination of experimentation and model discovery.\n", - "\n", - "However, we assume that observations are obtained with a measurement error when running the experiment.\n", - "\n", - "$\\hat{y} = \\hat{f}(x) = f(x) + \\epsilon, \\quad \\epsilon \\sim \\mathcal{N}(0,0.01^{2})$\n", - "\n", - "where $\\epsilon$ is the measurement error sampled from a normal distribution with zero mean and a standard deviation of $0.01$.\n", - "\n", - "The following code block defines ground truth $f(x)$ and the experiment runner $\\hat{f}(x)$ as ``lambda`` functions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ground_truth = lambda x: np.sin(x)\n", - "run_experiment = lambda x: ground_truth(x) + np.random.normal(0, 0.1, size=x.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we generate a pool of all possible experimental conditions from the domain $[0, 2\\pi]$." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "condition_pool = np.linspace(0, 2 * np.pi, 100)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In order to run a simple synthetic experiment, we can first sample from the pool of possible experiment conditions (without replacement), and then pass these conditions to the synthetic experiment runner:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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pMLMt27dwsCBA2FtbQ1bW1v07dsXCQkJmteVSiUmT54Ma2trNGjQAFOnTn3iusItW7Zgw4YN+PXXX/G///0P7du3h6enJ/r27YsDBw6gW7duAACVSoUvvvgCDRs2hLGxMfz9/REeHq45zsNTY9u2bUO3bt1gZmYGPz8/REZGan291atXw93dHWZmZnjllVdKFaaPnoabOXMm1qxZgz/++AMSiQQSiQSHDh0q8zTc4cOH0aFDBxgbG8PZ2RnTpk1DcXGx5vWuXbtiwoQJmDp1KmxtbeHk5ISZM2dqXhcEATNnztTMMrq4uGDChAkVfnbPisUS1QnnEu9j8pYLAIC3g70wItjr2Q8qlal/UwZQumAqeR42Rz1Ox0mlEswd0BpdvdWNK99efRpx6TlP3pHoUSJd9PBwBmPHjh0oKCgod5xUKsWiRYtw+fJlrFmzBgcOHMDUqVO1xuTl5WHRokXYtGkTwsPDcejQIbzyyivYvXs3du/ejXXr1mHZsmXYunWr1n7ffPMN/Pz8cP78eUybNg0TJ07Evn37ysxRVFSE0NBQWFpa4ujRozh+/DgsLCwQFhaGwsJCAMD8+fOxevVqrFq1CseOHUNGRga2b99e4eewYcMGeHt7o2/fvqVek0gksLJS343g+++/x/z58/Htt9/in3/+QWhoKPr06YNr165p7fN///d/+PDDDxEdHY1mzZph8ODBmqLl1KlTGDlyJMaPH4/o6Gh069YNX331VbnZPvzwQwwcOBBhYWFISUlBSkoKOnYs/YtkUlISevXqhfbt2+PChQtYunQpVq5cWerYa9asgbm5OU6dOoV58+bhiy++0Hzev//+O7777jssW7YM165dw44dO9CqVasKP7tnJtAzy8rKEgAIWVlZYkeplxLv5Qptv9greHy8Sxi5OkooVqqq9wtc/kMQ5jcXhBny/x7zfdTb9UxuQZHQ54djgsfHu4Su3xwUMvMKxY5EtezBgwfClStXhAcPHlR95xtHtP8elPe4caTac2/dulWwsbERTExMhI4dOwrTp08XLly4UOE+v/32m9CgQQPN819++UUAIMTFxWm2vfvuu4KZmZmQnZ2t2RYaGiq8++67muceHh5CWFiY1rFff/11oWfPnprnAITt27cLgiAI69atE7y9vQWV6r9/iwoKCgRTU1Nhz549giAIgrOzszBv3jzN60VF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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "initial_conditions = np.random.choice(condition_pool, size=10, replace=False)\n", - "initial_observations = run_experiment(initial_conditions)\n", - "\n", - "# plot sampled conditions against ground-truth\n", - "import matplotlib.pyplot as plt\n", - "plt.plot(condition_pool, ground_truth(condition_pool), label='Ground Truth')\n", - "plt.plot(initial_conditions, initial_observations, 'o', label='Sampled Conditions')\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Sine Function')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Certain theorists and experimentalists may need to have knowledge about the experimental variables, such as the domain from which new experiment conditions are sampled. To provide this information, we can utilize a ``VariableCollection`` object. In the context of our synthetic experiment, we have a single *independent variable* (``IV``) denoted as $x$, and a single *dependent* variable (``DV``) denoted as $y$." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.variable import DV, IV, ValueType, VariableCollection\n", - "\n", - "# Specify independent variable\n", - "iv = IV(\n", - " name=\"x\", # name of the independent variable\n", - " value_range=(0, 2 * np.pi), # specify the domain\n", - " allowed_values=condition_pool, # alternatively, we can specify the pool of allowed conditions directly\n", - ")\n", - "\n", - "# specify dependent variable\n", - "dv = DV(\n", - " name=\"y\", # name of the dependent variable\n", - " type=ValueType.REAL, # specify the variable type (some theorists require this to optimize)\n", - ")\n", - "\n", - "# Variable collection with ivs and dvs\n", - "metadata = VariableCollection(\n", - " independent_variables=[iv],\n", - " dependent_variables=[dv],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Note**: *For expository reasons, we focus in this tutorial on simple synthetic experiments. In general, ``autora`` provides functionality for automating [more complex synthetic experiments](https://github.com/autoresearch/autora-synthetic/), as well as real-world experiments, such as [behavioral data collection via web-based experiments](https://autoresearch.github.io/autora/user-guide/experiment-runners/firebase-prolific/), experiments with electrical circuits via [Tinkerforge](https://en.wikipedia.org/wiki/Tinkerforge), and other automated experimentation platforms.*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Theorists\n", - "\n", - "The AutoRA framework includes and interfaces with different methods for scientific model discovery. These methods are referred to as *theorists* and are implemented as [sklearn estimators](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html). For general information about theorists, see the respective [AutoRA Documentation](https://autoresearch.github.io/autora/theorist/).\n", - "\n", - "\"Theorist\n", - "\n", - "\n", - "Theorists **take as input a set of conditions and observations**. Conditions and observations can typically be passed as *two-dimensional numpy arrays* (with columns corresponding to variables and rows corresponding to different instances of those variables). Theorists then **identify and fit a model** which may be used to predict observations based on experiment conditions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Types\n", - "\n", - "There are different types of theorists within the AutoRA framework, each with its own approach to scientific model discovery.\n", - "\n", - "Some theorists focus on *fitting the parameters of a pre-specified model* to the given data (see the scikit learn documentation for a [selection of basic regressors](https://scikit-learn.org/stable/supervised_learning.html)). The model architecture in such cases is typically fixed, while the parameters are adjusted to optimize the model's performance. Linear regression is an example of a parameter-fitting theorist.\n", - "\n", - "Other theorists are concerned with *identifying both the architecture of a model and its parameters*. The model architectures can take various forms, such as equations, causal models, or process models. Implemented as scikit-learn estimators, these theorists aim to discover a model architecture that accurately describes the data. They often operate within a user-defined search space, which specifies the allowable operations or components that can be included in the model. This approach provides more flexibility in exploring different model architectures." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Usage\n", - "\n", - "In this tutorial, we delve into two types of theorists: (1) a linear regression theorist, which focuses on fitting a linear model, and (2) a Bayesian Machine Scientist (Guimerà et al., 2020, in *Science Advances*), which specializes in identifying and fitting a non-linear equation.\n", - "\n", - "Theorists are commonly instantiated as regressors within the ``sklearn`` library:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn import linear_model\n", - "from autora.theorist.bms import BMSRegressor\n", - "\n", - "theorist_lr = linear_model.LinearRegression()\n", - "theorist_bms = BMSRegressor(epochs=100)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once instantiated, we can fit the theorist to link experimental conditions with observations. However, before doing so, we should convert both inputs into 2-dimensional numpy arrays." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.theorist.bms.regressor:BMS fitting started\n", - "100%|██████████| 100/100 [00:07<00:00, 13.91it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" - ] - }, - { - "data": { - "text/html": [ - "
BMSRegressor(epochs=100)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" - ], - "text/plain": [ - "BMSRegressor(epochs=100)" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# convert data to 2-dimensional numpy array\n", - "initial_conditions = initial_conditions.reshape((len(initial_conditions), 1))\n", - "initial_observations = initial_observations.reshape((len(initial_observations), 1))\n", - "\n", - "# fit theorists\n", - "theorist_lr.fit(initial_conditions, initial_observations)\n", - "theorist_bms.fit(initial_conditions, initial_observations)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For some theorists, we can inspect the resulting model architecture. For instance, in the BMS theorist, we can call obtain the model formula via ``theorist_bms.model_.__repr__()``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model of BMS theorist: sin(X0)\n" - ] - } - ], - "source": [ - "print(\"Model of BMS theorist: \" + theorist_bms.model_.__repr__())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We may now obtain predictions from both theorists for the entire pool of experiment conditions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# convert condition pool into 2-dimensional numpy array before generating respective predictions\n", - "condition_pool = condition_pool.reshape((len(condition_pool), 1))\n", - "\n", - "# obtain predictions\n", - "predicted_observations_lr = theorist_lr.predict(condition_pool)\n", - "predicted_observations_bms = theorist_bms.predict(condition_pool)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the next code segment, we plot the theorists' predictions against the ground truth. For the BMS theorist, we can obtain a latex expression of the model architecture using ``theorist_bms.model_.latex()``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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jtV+q994Ut6IR08wXzgLgLtN2lOsSpnMiCz+Q4qlnMygh53DgbSeWPln3c4RWXZJztzcHFdXVwoVKsRbb73F119/zebNm9mxY0eqv7x/+OEHKlasiLW1Ne7u7nz66adERUUBcODAAXr27ElERERKT9X48eMB+PXXX6levTq2tra4urrSuXNnQkMz55f277//TsWKFbG0tCRfvnw0atSI6Oj/z7r+yy+/ULZsWSwsLChTpgw///xzqu1PnTpF1apVsbCwoHr16pw79/InWho0aMD333/PoUOH0Gg0NGjQAIAnT57QrVs3HB0dsbKyokmTJty4cSNlu2e9blu2bKFcuXKYm5tz9+7dFx6ne/fuLF26NNW6pUuX0r179+faHjx4kJo1a2Jubo6bmxsjRoxIVeRGR0fTrVs3bGxscHNz4/vvv39uH/Hx8QwdOpRChQphbW2Nl5cXBw4ceOn34lXS8729fPkyTZo0wcbGBhcXFz766CMePfr/lBINGjRg4MCBfPXVVzg5OeHq6prycwXJPZAArVq1QqPRpLz+dy/P+PHjadGiBZD8WP2z4va/l+EMBgPTpk2jRIkSmJubU6RIESZNmpTy/vDhwylVqhRWVlYUK1aMMWPGkJiYPOjjsmXL+Oabb7hw4ULKz/+z/3f+2/N16dIl3nvvvZSf2X79+qX8f/TvXDNmzMDNzY18+fIxYMCAlGNllEajweKfm73NEmKJi8r+x9zzEo1Gg09xH3xb+vK229vE6eOYcmoK/Xb3Izj69S+FHhg+EcfYSELsCvD+t0MzMbH4NymWcrI7x57vUUpFgcjA5HbZ5L333qNy5cps3LgxZZ1Wq2XWrFlcuXKF5cuXs2/fPr766isAateuzcyZM7GzsyMoKIigoCCGDk3+HzoxMZFvv/2WCxcusGnTJgICAujRo8cbZwwKCqJTp0706tULPz8/Dhw4QOvWrVMek161ahVjx45l0qRJ+Pn5MXnyZMaMGcPy5csBiIqKonnz5pQrV44zZ84wfvz4lMwvsnHjRvr27UutWrUICgpK+f706NGDv/76iy1btnD8+HEURaFp06apPuBiYmL47rvv+OWXX7hy5QoFChR44XF8fHx48uQJR44cAeDIkSM8efIk5UP/mcDAQJo2bUqNGjW4cOEC8+bNY/HixUycODGlzbBhwzh48CCbN29m165dHDhw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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# obtain latex expression of BMS theorist\n", - "bms_model = theorist_bms.model_.latex()\n", - "\n", - "# plot model predictions against ground-truth\n", - "import matplotlib.pyplot as plt\n", - "plt.plot(condition_pool, ground_truth(condition_pool), label='Ground Truth')\n", - "plt.plot(initial_conditions, initial_observations, 'o', label='Data Used for Model Identification')\n", - "plt.plot(condition_pool, predicted_observations_lr, label='Linear Regression')\n", - "plt.plot(condition_pool, predicted_observations_bms, label='Bayesian Machine Scientist: $' + bms_model + '$')\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Model Predictions')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Note**: *There are various other types of theorists you can combine with AutoRA as long as they are implemented as ``sklearn`` estimators. This includes [autora modules](theorist/index.md), any [scikit learn estimators](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html), as well as third-party packages, such as [PySR](https://github.com/MilesCranmer/PySR) for symbolic regression.*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Experimentalists\n", - "\n", - "The primary goal of an experimentalist is to design experiments that yield scientific merit. The AutoRA framework offers various strategies for identifying informative new data points (e.g., by searching for experiment conditions that existing scientific models fail to explain, or by looking for novel conditions altogether).\n", - "\n", - "\"Experimentalist\n", - "\n", - "Experimentalists are implemented as functions that return a set of experiment conditions (e.g., in the form of a 2-dimensional numpy array in which columns correspond to independent variables), which can be subjected to an experiment. To determine these conditions, experimentalists may use information about candidate models obtained from a theorist, experimental conditions that have already been probed, or respective dependent measures. For more detailed information about experimentalists, please refer to the corresponding [AutoRA Documentation](https://autoresearch.github.io/autora/experimentalist/).\n", - "\n", - "#### Types\n", - "\n", - "There are generally three types of experimentalist functions: **poolers**, **samplers**, and **pipelines**.\n", - "\n", - "**Poolers** generate a novel set of experimental conditions \"from scratch\", e.g., by sampling from a grid. They usually require metadata describing independent variables of the experiment (e.g., their range or the set of allowed values).\n", - "\n", - "**Samplers** operate on an existing pool of experimental conditions. They require typically require experimental conditions to be represented as a 2-dimensional numpy array in which columns correspond to independent variables and rows to different conditions). They then select experiment conditions from this pool.\n", - "\n", - "**Pipelines** Pipelines connect multiple experimentalists into a unified workflow. This is beneficial when various steps are required to process experiment conditions. For example, apart from identifying novel experimental conditions, experimentalist functions may perform other operations on the set of conditions, such as rearranging the rows of a condition matrix or adding new experiment conditions as columns. Experiment pipelines may begin with a pooler that generates all possible experiment conditions, followed by a sampler that selects a subset of conditions from the pool, and then proceed to additional functions that arrange the selected conditions in a specific order necessary for conducting the experiment." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Usage: Poolers\n", - "\n", - "Experimentalist poolers are implemented as functions and can be called directly. For instance, the following **grid pooler** generates a grid based on the ``allowed_values`` of all independent variables in the ``metadata`` object that we defined above. We can simply add a list of allowed values to each independent variable. In this case, we only have one variable." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "allowed_values = np.linspace(0, 2 * np.pi, 100)\n", - "metadata.independent_variables[0].allowed_values = allowed_values" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can pass the grid pooler the list of independent variables from the ``metadata`` object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.experimentalist.pooler.grid import grid_pool\n", - "\n", - "new_conditions = grid_pool(ivs = metadata.independent_variables)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The resulting condition pool contains all experiment conditions from the grid:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(0.0,)\n", - "(0.06346651825433926,)\n", - "(0.12693303650867852,)\n", - "(0.1903995547630178,)\n", - "(0.25386607301735703,)\n", - "(0.3173325912716963,)\n", - "(0.3807991095260356,)\n", - "(0.4442656277803748,)\n", - "(0.5077321460347141,)\n", - "(0.5711986642890533,)\n", - "(0.6346651825433925,)\n" - ] - } - ], - "source": [ - "# return first 10 conditions\n", - "for idx, condition in enumerate(new_conditions):\n", - " print(condition)\n", - " if idx > 9:\n", - " break" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively, we may use the **random pooler** to randomly draw experimental conditions from the domains of each independent variable. The random pooler requires as input a list of discrete values from which to sample from. In this case, we can pass it ``metadata.independent_variables[0].allowed_values`` for the independent variable. We can also specify the input argument ``n`` to obtain 10 random samples." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(5.521587088127515,)\n", - "(0.9519977738150889,)\n", - "(1.0154642920694281,)\n", - "(4.6330558325667655,)\n", - "(3.681058058751677,)\n", - "(5.775453161144872,)\n", - "(5.013854942092801,)\n", - "(4.442656277803748,)\n", - "(3.998390650023373,)\n", - "(0.9519977738150889,)\n" - ] - } - ], - "source": [ - "from autora.experimentalist.pooler.random_pooler import random_pool\n", - "\n", - "# generate random pool of 10 conditions\n", - "num_samples = 10\n", - "new_conditions = random_pool(metadata.independent_variables[0].allowed_values,\n", - " n=num_samples)\n", - "\n", - "# print conditons\n", - "for idx, condition in enumerate(new_conditions):\n", - " print(condition)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Usage: Samplers\n", - "\n", - "An experiment sampler typically requires an existing pool of conditions as input along with additional arguments. For instance, the **[novelty sampler](https://autoresearch.github.io/autora/user-guide/experimentalists/samplers/novelty/)** requires, aside from a pool of conditions, a list of prior conditions. The user may also specify the number of samples ``num_samples`` to select from the pool.\n", - "\n", - "The novelty sampler will then select novel experiment conditions from the pool which are most dissimilar to some reference conditions, such as the ``initial_conditions`` obtained above:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[6.28318531]\n", - " [6.21971879]]\n" - ] - } - ], - "source": [ - "from autora.experimentalist.sampler.novelty import novelty_sample\n", - "\n", - "new_conditions_novelty = novelty_sample(condition_pool = condition_pool,\n", - " reference_conditions = initial_conditions,\n", - " num_samples = 2)\n", - "\n", - "print(new_conditions_novelty)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another example for an experiment sampler is the **[falsification sampler](https://autoresearch.github.io/autora/falsification/docs/sampler/)**. The falsification sampler identifies experiment conditions under which the loss of a candidate model (returned by the theorist) is predicted to be the highest. This loss is approximated with a neural network, which is trained to predict the loss of the candidate model, given some initial experimental conditions, respective initial observations, and the metadata.\n", - "\n", - "The following code segment calls on the falsification sampler to return novel conditions based on the candidate model of the linear regression theorist introduced above. As with the novelty sampler, we seek to select 10 conditions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0. ]\n", - " [0.06346652]]\n" - ] - } - ], - "source": [ - "from autora.experimentalist.sampler.falsification import falsification_sample\n", - "\n", - "new_conditions_falsification = falsification_sample(\n", - " condition_pool=condition_pool,\n", - " model=theorist_lr,\n", - " reference_conditions=initial_conditions,\n", - " reference_observations=initial_observations,\n", - " metadata=metadata,\n", - " num_samples=2\n", - " )\n", - "\n", - "print(new_conditions_falsification)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can plot the selected conditions for both samples relative to the selected samples. Since we don't have observations for those conditions, we plot them as vertical lines." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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7do17t69i7+//xOf39/fP83PHjL3fnySmdj9/f3ZuHEj9+7dM+td+vfff02PPw0fHx/efPNN3nzzTa5fv061atX47LPPJFnKg2TMksiXNm/enO5/uKnjMlIvA6T+h/nw5Y65c+dmW2zTp083fa+UYvr06dja2tKsWbN02+t0Ol566SV+//33dHsJbty4Yfq+devWXLlyhaVLl5rq4uLismXSwS+//JKdO3cya9YsPv30U+rVq8fAgQO5efNmmrYLFiwwuxy0dOlSIiMjTR861atXp1SpUkyZMoWYmJg0+z/4HHNSdsXl7OycbgKk0+nSvG+/+eYb9Hr9U51nxIgRODs7069fP65du5bm8TNnzvDVV18BxvcOwLRp08zafPnllwC0adPmic/funVrdu/ezd69e011N27cYNGiRY/d19nZGSBTiWLr1q3R6/Vmv1sAU6dORaPRPHFyo9fr01z29PT0xNfXN8un4RDWQXqWRL40ZMgQ4uLieOGFFyhfvjxJSUns3LmTxYsXExAQQO/evQFo0aIFdnZ2tGvXjtdff52YmBh++OEHPD09Tb1PWcnBwYG1a9fSs2dPateuzV9//cXq1av54IMPKFKkSIb7TZgwgc2bN1O7dm369+9PYGAgt2/f5uDBg2zcuJHbt28D0L9/f6ZPn06PHj04cOAAPj4+LFy4ECcnpyeK86+//jL9V/6gevXqUbJkSY4fP87HH39Mr169aNeuHWBcKqVKlSq8+eab/Pbbb2b7FSxYkOeee47evXtz7do1pk2bRunSpenfvz9gHMv1448/0qpVKypWrEjv3r0pWrQoly9fZvPmzbi5ufHnn38+0XPICtkVV/Xq1dm4cSNffvklvr6+lChRgtq1a9O2bVsWLlyIu7s7gYGB7Nq1i40bN1KoUKGnir9UqVL8/PPPdOnShQoVKpjN4L1z506WLFlimuMpODiYnj17MmvWLO7evUujRo3Yu3cv8+fPp2PHjjRp0uSJzz9ixAgWLlxIy5Ytefvtt3F2dmbWrFn4+/tz5MiRx8bu4eHBd999h6urK87OztSuXTvdsWrt2rWjSZMmfPjhh0RERBAcHMz69ev5448/GDp0qNlg7sy4d+8exYoVo1OnTgQHB+Pi4sLGjRvZt2+fWa+fyEMscAeeEBb3119/qT59+qjy5csrFxcXZWdnp0qXLq2GDBmirl27ZtZ25cqVqnLlysrBwUEFBASoiRMnqjlz5qS5tdnf31+1adMmzbmANLcYnzt3TgFq8uTJprqePXsqZ2dndebMGdWiRQvl5OSkvLy81OjRo83mY0o95oNTByil1LVr19SgQYOUn5+fsrW1Vd7e3qpZs2Zq1qxZZu3Onz+v2rdvr5ycnFThwoXV22+/bZoD6VmmDuD+bdwpKSmqZs2aqlixYuru3btm+3/11VcKUIsXL1ZK/XeL+y+//KJGjRqlPD09laOjo2rTpo3ZVAupDh06pF588UVVqFAhZW9vr/z9/VXnzp3Vpk2bTG1Sb9F/cKqFhx97+LXMzM/nwXiXLFmSZXGlvqYPvpf+/fdf1bBhQ+Xo6KgA0zQCd+7cUb1791aFCxdWLi4uKiQkRP3777/K39/fbKqBzM6zlOrkyZOqf//+KiAgQNnZ2SlXV1dVv3599c0336iEhARTu+TkZDV27FhVokQJZWtrq/z8/NSoUaPM2iiV8e/Cw7f/K6XUkSNHVKNGjZSDg4MqWrSo+vTTT9Xs2bMfO3WAUkr98ccfKjAwUNnY2JhNI/Dw1AFKKXXv3j31zjvvKF9fX2Vra6vKlCmjJk+ebDblg1Lpvx9Sn1Pqa5yYmKiGDx+ugoODlaurq3J2dlbBwcFq5syZ6by6Ii/QKJULRtsJkQ/06tWLpUuXpns5J6/asmULTZo0YcmSJWbTGQghhDWRMUtCCCGEEI8gyZIQQgghxCNIsiSEEEII8QgyZkkIIYQQ4hGkZ0kIIYQQ4hEkWRJCCCGEeASZlDILGAwGrly5gqur6xNNwS+EEEIIy1FKce/ePXx9fdFqM+4/kmQpC1y5ciXN6uRCCCGEyB0uXrxIsWLFMnxckqUskLow48WLF3Fzc7NwNEIIIYTIjOjoaPz8/MwWWE6PJEtZIPXSm5ubmyRLQgghRC7zuCE0MsBbCCGEEOIRJFkSQgghhHgESZaEEEIIIR5BkiUhhBBCiEeQZEkIIYQQ4hEkWRJCCCGEeARJloQQQgghHkGSJSGEEEKIR5BkSQghhBDiESRZEkIIIYR4hFyVLP3zzz+0a9cOX19fNBoNK1aseOw+W7ZsoVq1atjb21O6dGnmzZuXps2MGTMICAjAwcGB2rVrs3fv3qwPXgghhBC5Uq5KlmJjYwkODmbGjBmZan/u3DnatGlDkyZNCA0NZejQofTr149169aZ2ixevJhhw4YxevRoDh48SHBwMCEhIVy/fj27noYQQgghchGNUkpZOoinodFoWL58OR07dsywzfvvv8/q1asJDw831XXt2pW7d++ydu1aAGrXrk3NmjWZPn06AAaDAT8/P4YMGcLIkSMzFUt0dDTu7u5ERUXJQroCAKUUSXoDCckGEpL12Oq0FHCyfexijUIIIXJOZj+/bXIwphy3a9cumjdvblYXEhLC0KFDAUhKSuLAgQOMGjXK9LhWq6V58+bs2rUrw+MmJiaSmJho2o6Ojs7awEWuEZuYwrHIaI7fL8ci73H2egyxSSkYHvo3xM5Gi4+7A95uDhT1cKRyMXfqlS5MGU8XSaKEEMKK5elk6erVq3h5eZnVeXl5ER0dTXx8PHfu3EGv16fb5t9//83wuOPHj2fs2LHZErOwftEJyWw8do01YVf559QNklIMj2yv02rQGxRJKQbO34rj/K04AJYdugxAYRd76pYqRMMyhWkd5IOzfZ7+tRRCiFxH/io/hVGjRjFs2DDTdnR0NH5+fhaMSGQ3pRR//3udn/dcYNupmyTp/0uQvN0cCPR1o4KPKxV83Cjn5Yq7ky0OtjocbXXY6rQkpRi4Fp1AZFQCkVHxXLgVx96I2+yLuM3NmET+PHyFPw9fYeyfx+hQxZdXaxenoq+7BZ+xEEKIVHk6WfL29ubatWtmddeuXcPNzQ1HR0d0Oh06nS7dNt7e3hke197eHnt7+2yJWVgXvUGxOiySmZtP8+/Ve6b6UkWcaRPkQ+vKPpTzcn3sZTQ7Gy1+BZ3wK+hkVp+Yoif0wl12nLnFn4evcO5mLIv2XGDRngsE+3kwoEFJWgd5y2U6IYSwoDydLNWtW5c1a9aY1W3YsIG6desCYGdnR/Xq1dm0aZNpoLjBYGDTpk0MHjw4p8MVVkRvUPx+4BIzt5wm4v5lM2c7Hd3q+NOpejHKerlmyXnsbXTULlmI2iUL8U7zMuw6c4tFey+w/uhVDl+8y6CfD1LFz4MPWlegVomCWXJOIYQQTyZXJUsxMTGcPn3atH3u3DlCQ0MpWLAgxYsXZ9SoUVy+fJkFCxYA8MYbbzB9+nRGjBhBnz59+Pvvv/ntt99YvXq16RjDhg2jZ8+e1KhRg1q1ajFt2jRiY2Pp3bt3jj8/YR3CL0fx4fIwDl+KAqCAky2965egZ90A3J1ss+28Go2GeqULU690YW7cS2Th7vP8uO0soRfv0vn7XTwf6MX7LctT2tMl22IQQgiRVq6aOmDLli00adIkTX3Pnj2ZN28evXr1IiIigi1btpjt884773Ds2DGKFSvGxx9/TK9evcz2nz59OpMnT+bq1atUqVKFr7/+mtq1a2c6Lpk6IG+ISUzhy/UnmbfzHAYFrvY2vNWsDN3qFMfJzjL/V1yPTmDaplMs3ncRvUGh02oY3KQ0g5uWxlaXq6ZJE0IIq5PZz+9clSxZK0mWcr+//73GB8vCuRqdAEDbyj580jYQTzcHC0dmdPr6PSb89S8bjxsnS61czJ0vO1eRXiYhhHgGkizlIEmWcq8UvYHJ60/w/dazABQv6MSnHSvRqGwRC0eWvpWHr/DR8jCiE1Kwt9Hyfsvy9KoXgFYrA8CFEOJJSbKUgyRZyp2uRiXw1i+H2BtxG4Be9QIY2ao8DrY6C0f2aFejEhi+9DDbTt0EoGHZInzTtWq2jqcSQoi8SJKlHCTJUu6z/dRN3v71ELdik3Cxt2FSp8q0DvKxdFiZppTipz0X+Gz1MRKSDZQs7MyPPWtQsohclhNCiMzK7Oe3jBAV+c6CXRF0n7OHW7FJVPBxY9WQ53JVogTGO+e61/Hn94H18HV34OzNWDrO2MH2+71NQgghso4kSyLfUEoxed2/fPLHUZSCzjWKsfzNegQUdrZ0aE+toq87fwx+jmrFPYhOSKHn3L0s2BWBdBgLIUTWkWRJ5AvJegMjlh5hxuYzALzXoiwTX6qc+fFJBj2c2wZhS41fDfpsjPbJFHG155cBdXixWlH0BsUnfxxlwtp/JWESQogskqsmpRTiacQlpfDmooNsOXEDnVbD5y9UokvN4pk/wLGVsPZ9iL7yX52bL7ScCIHtsz7gp2Bvo+OLl4Mp6+XKhL/+5futZ0lMNvBJ20C5U04IIZ6R9CyJPC0mMYXus/ey5cQNHGy1zOpe/ckTpd96mCdKANGRxvpjK7M24Geg0Wh4o1EpPn8hCI0G5u2M4IPlYegN0sMkhBDPQpIlkWfFJaXQZ94+Dpy/g7ujLT/3r0OzCl6ZP4BBb+xRIr1k437d2pFWdUkO4NXaxZnSKRitBn7dd5H3lhwmRW+wdFhCCJFrSbIk8qSEZD39F+xn77nbuNrbsLBvLaoVL/BkBzm/M22PkhkF0ZeN7azMS9WL8VXXqui0GpYfuszbv4ZKD5MQQjwlSZZEnpOYomfgTwfYcfoWznY65vWpReViHk9+oJhrWdsuh7UL9uXbbtWw02lZHRbJRyvCZdC3EEI8BUmWrFRcchwVZ1ak4syKxCXHZVgnzCXrDQz5+RCb749RmtOrJtX9n7BHKZVLJi/ZZbadBbSo6M1XXaug0cAvey8wdcNJS4ckhBAZi4uDihWNJS4u7baFyN1wVkopxbEbx0zfZ1Qn/qOU4sPlYaw/dg07Gy0/9qhJ7ZKFnv6A/vWMd71FR5L+uCWN8XH/ek9/jhzQKsiH/3WsxIfLw/n679MUdLajV/0Slg5LCCHSUgqOHfvve0i7bQHSsyTyjJlbzvDb/ktoNfBtt2o8V6bwsx1QqzNODwDAw7ff399uOcHYzsp1q+3PsOfLAjB21TH+PPyosVhCCCEeJMmSyBNWHr7C5HUnABjbvuKT3fX2KIHtofMCcHtoORQ3X2O9lcyzlBlDmpamR11/lIJhv4Wy47QsjSKEEJkhl+FErrc/4jbvLTkMQN/nStC9bkDWniCwPZRvY7zrLeaacYySf71c0aP0II1Gw5h2Fbkdm8SqI5G8ueggfwyqn6uXexFCiJwgPUsiV4u4GUv/BftJSjHQItCLD1pXyJ4TaXVQogEEdTJ+zWWJUiqtVsOUl4Op4udBVHwy/Rfs515CsqXDEkIIqybJksi1ohOS6TNvH3fikqlczJ1pXaugk6U9HsvBVses7tXxcrPn1PUY3lkcikHmYBJCiAxJsmSlNBoNfo5+FHcqjkajMdX5u/vj7+5vqsuvlFIMX3KYszdj8XV34MeeNXCyk6vKmeXp5sCs7jWws9Gy8fh1vthwwtIhCSEEaDTg728sGk3abQuRZMlKOdk60eZcG1znu3Ii/ISpLmJoBBFDI3CydbJwhJY165+zrDt6DTudlpmvVcfT1cHSIeU6wX4eTHwpCIAZm8/IHXJCCMtzcoKICGNxckq7bSGSLFmp27dvs3z5co4ePUqtWrX43//+R0pKiqXDsgq7ztxi4tp/AfikXSBV/DwsG1Au9kLVYgxoWBKA4UsPc/LaPQtHJIQQ1keSJStVsGBBwsLCeOmll0hJSeHjjz+mfv36nDiRvy+XXI1KYMgvBzEoeLFaUbrVLm7pkHK991uWp0GZwiQkGxi06CDxSda1MLAQQliaJEtWKj45ntYrWhPRIoI58+bg7u7O3r17qRBUgeJdixObGGvpEHNcUoqBQT8f5GZMEuW9XfmsY1C+H7uVFXRaDVO7VKGIq3HA95iVRy0dkhAiv4qPh5o1jSU+Pu22hUiyZKUMysD+K/s5EHmAzq90Jjw8nKbNmqKSFRcXX6R1y9acP3/e0mHmqCnrT3Dg/B1cHWz4vnt1HO1y5+371qiwi71pDbnF+y+y4tBlS4ckhMiPDAbYv99YDIa02xYiyVIuUaxYMf5Y/Qe0AWzhny3/EBQUxNy5c/PFOnHbT91k1j9nAZjycjD+hWQixaxWr1Rh3mpaBoAPlodx9kaMhSMSQgjrIMlSLqLRaKAm8AbUqVuHe/fu0adPHzp27Mi1a9csHV62uRObxLtLQgHoVrs4IRW9LRtQHvZWszLUKVmQuCQ9g34+REKyjF8SQghJlnKjQrBu0zomTJiAnZ0dK1eupFKlSvz++++WjizLKaUYuewI16ITKVnEmY/aBFo6pDxNp9XwVdeqFHS243hkNBP++tfSIQkhhMVJspRL6XQ63n//ffbv309wcDA3b96kU6dOvPbaa9y5c8fS4WWZxfsusu7oNWx1Gr7uWlXGKeUALzcHvugcDMC8nRGy4K4QIt+TZCmXCwoKYu/evXz44YdotVoWLVpEUFAQ69evt3Roz+zsjRjG/nkMgPdalKNSUXcLR5R/NCnnaZqWYfiSw0TL+nFCiHxMkiUrVtipMIWdCj+2zs7Ojv/973/s3LmTsmXLcvnyZUJCQnjzzTeJicmdg3ST9QaGLg4lPllPvVKF6N+gpKVDync+aF2B4gWduBKVwLj7SasQQmS7woWNJaNtC8h1ydKMGTMICAjAwcGB2rVrs3fv3gzbNm7cGI1Gk6a0adPG1KZXr15pHm/ZsmVOPJVHcrZz5sbwG9wYfgNnO+cM6x5Uu3ZtDh06xJAhQwD49ttvqVKlCjt27MjR2LPC91vPcORSFO6OtnzRORitLJCb45ztbfiiczAaDSw9cIkNx/LuTQRCCCvh7Aw3bhiLs3PabQvJVcnS4sWLGTZsGKNHj+bgwYMEBwcTEhLC9evX022/bNkyIiMjTSU8PBydTsfLL79s1q5ly5Zm7X755ZeceDrZwsnJia+//pqNGzfi5+fHmTNnaNCgAe+//z6JiYnZH4BBD+e2QdhS41fDk99NdfLaPb7edBqAMe0D8XF3zOooRSbVDCjIgPu9eqOWHeFWTA68h4QQwsrkqmTpyy+/pH///vTu3ZvAwEC+++47nJycmDNnTrrtCxYsiLe3t6ls2LABJyenNMmSvb29WbsCBQrkxNPJVs2aNSMsLIyePXuilGLSpEnUqFGD0NDQ7DvpsZUwrRLMbwu/9zV+nVbJWJ9JeoNi+NIjJOkNNC3vSccqRbMvXpEp7zxflrJeLtyMSeKjFeH5Yl4vIYR4UK5JlpKSkjhw4ADNmzc31Wm1Wpo3b86uXbsydYzZs2fTtWtXnB/qytuyZQuenp6UK1eOgQMHcuvWrSyN/WnEJ8fTeF5jGs9rTHxyfIZ1j+Lu7s68efNYvnw5RYoUITw8nFq1avHZZ59l/aK8x1bCbz0g+qGV66MjjfWZTJhmbz/L4Yt3cbW34bMXKslyJlbAwVbHl52rYKPV8Ff4VdaEXbV0SEKIvCo+Hho3NpbU5U4e3LaQXJMs3bx5E71ej5eXl1m9l5cXV68+/o/33r17CQ8Pp1+/fmb1LVu2ZMGCBWzatImJEyeydetWWrVqhV6f8eWjxMREoqOjzUpWMygDW89vZev5rRiUIcO6zOjYsSPh4eG88MILJCcn89FHH/Hcc89x8uTJLApWD2vfB9Lrcbhft3bkYy/Jnb0RwxfrjTF91LaCXH6zIpWKuvNm41IAjPnzKFFxcnecECIbGAywdauxpC538uC2heSaZOlZzZ49m6CgIGrVqmVW37VrV9q3b09QUBAdO3Zk1apV7Nu3jy1btmR4rPHjx+Pu7m4qfn5+2Rz9s/P09OT3339n/vz5uLm5sWfPHqpUqcL06dMxPOsb8PzOtD1KZhREXza2y4DBoHj/9yMkphh4rnRhOtew/tc0v3mzSWlKFnHmxr1EJqyVySqFEPlHrkmWChcujE6nS7Osx7Vr1/D2fvTyF7Gxsfz666/07dv3secpWbIkhQsX5vTp0xm2GTVqFFFRUaZy8eLFzD0JC9NoNPTo0YPw8HCaN29OfHw8Q4YMoUWLFly4cOHpDxyTybukHtFu4e7z7Iu4g5OdjvEvBsnlNyvkYKtj/AtBAPyy9wJ7zlr+crUQQuSEXJMs2dnZUb16dTZt2mSqMxgMbNq0ibp16z5y3yVLlpCYmMhrr7322PNcunSJW7du4ePjk2Ebe3t73NzczEpu4ufnx7p165g+fTqOjo5s2rSJoKAg5s+f/3SDd128Ht/mEe2uRScwed0JAN5vWR6/gk5PHoPIEbVLFuKVWsZev1HLw0hMkbXjhBB5X65JlgCGDRvGDz/8wPz58zl+/DgDBw4kNjaW3r17A9CjRw9GjRqVZr/Zs2fTsWNHChUqZFYfExPD8OHD2b17NxEREWzatIkOHTpQunRpQkJCcuQ5WYpWq2XQoEGEhoZSp04doqOj6dWrFy+88EKGUzFkyL8euPkCGfUGacCtqLFdOj5ddYyYxBSC/Tx4rY7/k51b5LiRLStQ2MWeszdimbn5jKXDEUKIbJerkqUuXbowZcoUPvnkE6pUqUJoaChr1641Dfq+cOECkZGRZvucOHGC7du3p3sJTqfTceTIEdq3b0/ZsmXp27cv1atXZ9u2bdjb2+fIc7K0smXLsm3bNj7//HNsbW35448/qFixIsuWLcv8QbQ6aDnx/sbDCdP97ZYTjO0e8s/JG6w6EolWA591rIROJp+0eu5OtoxtXxGAmVtOc+raPQtHJIQQ2UujZNKUZxYdHY27uztRUVFZdkkuNikWzymeAFx/7zrOds7p1mWlw4cP06NHD44cOQLAa6+9xjfffIOHh0fmDnBspfGuuAcHe7sVNSZKge3TNE9I1tNy2j9E3IqjV70Axtz/ABbWTylFv/n72fTvdWoFFGTx63VknJkQ4tnFxoKn8XOO1KscD25n8Szemf38lmQpC2RHsmQpiYmJjB07lokTJ2IwGChWrBhz5szh+eefz9wBDHrjXW8x14xjlPzrpdujBDB1w0m+2nQKT1d7Nr3bCFcH2yx8JiK7Xb4bT/MvthKfrGdalyp0rCoTiAohcpfMfn7nqstwIvvZ29vz+eefs337dsqUKcOlS5do0aIFgwYNIjY29vEH0OqgRAMI6mT8mkGidO5mLN9uMY53+aRdoCRKuVBRD0cGNy0NwGdrjnMvIZ25l7Jg+RshhLA0SZZEuurWrcuhQ4cYNGgQADNnzqRKlSrs3JnxXEmZpZTikz/CSdIbaFCmMG2CMr7zUFi3fg1KEFDIiRv3Evl60ynzB7Ng+RshhLAGkixZqYSUBNr83IY2P7chISUhw7rs5OzszPTp01m/fj1Fixbl9OnTNGjQgFGjRj3Torxrw6+y7dRN7Gy0fNpBljTJzextdIy+P9Zs7o6I/wZ7Z9HyN0KIfCYhAdq0MZaEhLTbFiLJkpXSG/SsObWGNafWoL9/6SK9upzw/PPPEx4eTvfu3TEYDEyYMIFatWpx+PDhJz5WQrKez9YcB+D1hiUJKJy1g/VEzmtSzpPmFbxIMSjG/HkUpU/JkuVvhBD5kF4Pa9YYi16fdttCJFkSmeLh4cGCBQv4/fffKVy4MEeOHKFmzZqMHz/+iRblnb39HJfuxOPt5sDA+2uNidxvdLtA7Gy07Dh9i91bVj3z8jdCCGFNJFkST+TFF18kPDycDh06kJyczAcffECDBg04derUY/e9GpXAjM3GZWRGtS6Pk51NdocrcohfQScGNjImv3/tCs3cTpldJkcIISxMkiXxxLy8vFi+fDlz587Fzc2N3bt3ExwczIwZMx65KO+ktf8Sl6Snun8B2gf75mDEIicMbFyKYgUcORmXyUurmV0mRwghLEySJfFUNBoNvXr1IiwsjKZNmxIfH8/gwYNp2bJlugsLH7xwh2WHLgPGSzYyqDvvcbDV8UHrCuw1lCdSFUQ95fI3QghhbSRZEs+kePHibNiwga+++goHBwc2bNhAUFAQCxcuNC3KazAoxv55DICXqxejcjEPC0YsslOrSt5U8y/EmOQeGAdzP9nyN0IIYY0kWRLPTKvV8tZbbxEaGkrt2rWJioqiR48evPTSS9y4cYPlhy5z+OJdnO10DG9ZztLhimyk0Wj4qG0g6wy1eCNpKEnO3uYN3Hyh84J0l78RQghrJcudZIG8tNzJs0pJSWHixImMHTuW5ORkihQpgkeLwSQVq877LcvLHXD5xNBfD7Ei9Ap1Atz5JcSAJub6Y5e/EUKInCZrw+UgSZbSCg0NpXv37oSHhwNQpFoLwtb9glfhghaOTOSEy3fjaTplC4kpBr7vXp2Qit6P30kIIXKYrA0nLKpKlSqs27KDwvU6AxpuHFxPrepV+fvvvy0dmsgBRT0c6d+gJADj1xwnKSXjuySFEMLaSbJkpRJSEnh5ycu8vORls+VOHq6zZrN2XMS5QQ/qDp1OqVKluHDhAs2aNeOtt94iLi7O0uGJbPZG41IUdrEn4lYcC3eft3Q4QojcICEBXn7ZWFKXO3lw20IkWbJSeoOepceWsvTYUrPlTh6us1YRN2P56f4H5JRBnQkNDWXgwIEAfPPNN1StWpU9e/ZYMkSRzVzsbXi3RVkAvt50iqj4ZAtHJISweno9LF1qLKnLnTy4bSGSLIlsMXndCVIMisblilCvdGFcXFyYOXMma9euxdfXl5MnT1KvXj0++ugjkpKSLB2uyCada/hRxtOFqPhkvt96xtLhCCHEU5FkSWS5QxfusDosEo0GRrYqb/ZYSEgI4eHhdOvWDYPBwGeffUbt2rUJCwuzULQiO+m0GoaHGKeLmLPjHNeirf/ysRBCPEySJZGllFKMX/MvAJ2qFaO8d9q7CwoUKMBPP/3EkiVLKFSoEKGhodSoUYOJEyeit2A3q8gezwd6Ud2/AAnJBr7a9Pg1BIUQwtpIsiSy1Kbj19kbcRsHWy3D7o9XyUinTp0IDw+nbdu2JCUlMXLkSBo1asSZM3K5Ji/RaDS839LYw7h430XO3oixcERCCPFkJFkSWcZgUExZfwKAXvVK4OPu+Nh9vL29WblyJbNnz8bV1ZUdO3YQHBzMd999h0wBlnfUKlGQpuU90RsUX6w/aelwhBDiiUiyJLLMn0eu8O/Ve7g62PBGo5KZ3k+j0dCnTx+OHDlC48aNiY2NZeDAgbRq1YrLly9nY8QiJ41oWQ6NBlaHRXLk0l1LhyOEEJkmyZKVcrJ1ImZUDDGjYnCydcqwzlok6w1M3WDsMXi9YUk8nOye+BgBAQFs2rSJadOm4eDgwLp166hUqRKLFi2SXqY8oLy3Gy9UKQrAxLX/WjgaIYRVcnKCmBhjcXJKu20hkixZKY1Gg7OdM852zmg0mgzrrMXSA5eIuBVHIWc7etcv8dTH0Wq1vP322xw6dIiaNWty9+5dXnvtNTp37szNmzezMGJhCe88XxY7nZYdp2+x7dQNS4cjhLA2Gg04OxuLRpN220IkWRLPLCFZz1cbjXc5DWpSGmd7m2c+Zvny5dm5cyfjxo3DxsaGpUuXUqlSJf78889nPrawHL+CTrxauzgAX6w/KT2GQohcQZIlK5WYkkivFb3otaIXiSmJGdZZg592n+dqdAK+7g6mD8KsYGNjw8cff8yePXsIDAzk2rVrtG/fnj59+hAdHZ1l5xE5680mpXCw1RJ68S6bT1y3dDhCCGuSmAi9ehlLYmLabQuRZMlKpRhSmH94PvMPzyfFkJJhnaXFJKYwc4vxVv+3m5fBwVaX5eeoVq0aBw4c4L333kOj0TB37lwqV67M5s2bs/xcIvt5ujrQs24AIL1LQoiHpKTA/PnGkpKSdttCJFkSz2TO9nPcjk2iRGFnXqpWLNvO4+DgwOTJk9m6dSslSpTg/PnzNG3alKFDhxIfH59t5xXZ4/VGpXC203H0SjTrjl61dDhCCPFIkiyJpxYVn8wP284CMLR5GWx02f92atCgAUeOHGHAgAEAfPXVV1StWpW9e/dm+7lF1in4wI0AUzecwmCQ3iUhhPWSZEk8tTnbz3EvIYWyXi60q+ybY+d1cXHh+++/Z/Xq1fj4+HDixAnq1avHJ598Iovy5iL9G5TE1cGGE9fusSos0tLhCCFEhiRZEk8lKi6ZOdvPAfB2s7JotTl/S2fr1q0JDw+na9eu6PV6Pv30U+rUqcPRo0dzPBbx5NydbOn3nHHy0mkbT5KiN1g4IiGESF+uS5ZmzJhBQEAADg4O1K5d+5GXX+bNm4dGozErDg4OZm2UUnzyySf4+Pjg6OhI8+bNOXVKFvt8nNk7znEvMYVyXq60quRtsTgKFizIL7/8wuLFiylYsCCHDh2ievXqTJkyRRblzQX6PBeAh5MtZ2/E8kfoFUuHI4QQ6cpVydLixYsZNmwYo0eP5uDBgwQHBxMSEsL16xnffuzm5kZkZKSpnD9/3uzxSZMm8fXXX/Pdd9+xZ88enJ2dCQkJISEhIbufTq4VFZfM3NRepeZlLNKr9LDOnTsTHh5O69atSUxMZPjw4TRp0oSzZ89aOjTxCK4OtgxoaOxd+mrTKeldEkJYpVyVLH355Zf079+f3r17ExgYyHfffYeTkxNz5szJcB+NRoO3t7epeHl5mR5TSjFt2jQ++ugjOnToQOXKlVmwYAFXrlxhxYoVOfCMMuZk68T1965z/b3rZsudPFxnCbO3n+VeYgrlvV1pWdFyvUoP8/HxYdWqVfzwww+4uLiwbds2KleuzKxZs+T2dCvWq14ABZ3tuHA7jhXSuyRE/ubkBNevG0vqcicPbltIrkmWkpKSOHDgAM2bNzfVabVamjdvzq5duzLcLyYmBn9/f/z8/OjQoYPZeJZz585x9epVs2O6u7tTu3btRx4zMTGR6Ohos5LVNBoNRZyLUMS5iNlyJw/X5bS7cUnM2REBwNvNrKNX6UEajYZ+/fpx5MgRGjZsSGxsLK+//jpt2rThyhX5ILZGTnY29G9g7F2asfm09C4JkZ9pNFCkiLGkLnfy4LaF5Jpk6ebNm+j1erOeIQAvLy+uXk1/npZy5coxZ84c/vjjD3766ScMBgP16tXj0qVLAKb9nuSYAOPHj8fd3d1U/Pz8nuWp5Sqzt58j5n6vUogV9So9rESJEmzevJkvvvgCe3t7/vrrLypVqsSvv/5q6dBEOnrU9aeAky3nbsay6ojcGSeEsC65Jll6GnXr1qVHjx5UqVKFRo0asWzZMooUKcL333//TMcdNWoUUVFRpnLx4sUsivg/iSmJDFo9iEGrB5ktd/JwXU66G5fE3Pu9SkOtZKzSo2i1WoYNG8bBgwepXr06d+7c4ZVXXqFLly7cunXL0uGJBzjb29Dvfu/SN3+fQi/zLgmRPyUmwqBBxpK63MmD2xaSa5KlwoULo9PpuHbtmln9tWvX8PbOXA+Hra0tVatW5fTp0wCm/Z70mPb29ri5uZmVrJZiSGHm/pnM3D/TbLmTh+ty0pwHepVaBFpvr9LDAgMD2bVrF2PGjEGn0/Hbb79RqVIlVq9ebenQxAN61PXHzcGGMzdiWSPzLgmRP6WkwMyZxpK63MmD2xaSa5IlOzs7qlevzqZNm0x1BoOBTZs2Ubdu3UwdQ6/XExYWho+PD2C8VOPt7W12zOjoaPbs2ZPpY+YX0QnJzN0ZAVjnWKXHsbW1ZfTo0ezevZsKFSpw9epV2rZtS79+/WRRXivh6mBL3+f+612SWb2FENYi1yRLAMOGDeOHH35g/vz5HD9+nIEDBxIbG0vv3r0B6NGjB6NGjTK1HzduHOvXr+fs2bMcPHiQ1157jfPnz9OvXz/AOBh46NCh/O9//2PlypWEhYXRo0cPfH196dixoyWeotVauOs89xJSKO3pYtVjlR6nRo0aHDhwgGHDhqHRaJg9ezbBwcFs3brV0qEJoFf9AFztbTh5LUbWjBNCWI1clSx16dKFKVOm8Mknn1ClShVCQ0NZu3ataYD2hQsXiIz8r/v+zp079O/fnwoVKtC6dWuio6PZuXMngYGBpjYjRoxgyJAhDBgwgJo1axITE8PatWvTTF6Zn8UlpfDj/TXgBjcpnet6lR7m6OjIF198webNmwkICCAiIoImTZowbNgwWZTXwtwdbeldPwAwzrskvUtCCGugUTIBzTOLjo7G3d2dqKioLBu/FJsUi8t4FwBiRsXgbOecbl1O+HHbWf63+jj+hZzYNKxRjiyYm1Pu3bvHsGHD+PHHHwGoUKECCxYsoEaNGhaOLP+6G5fEcxM3E5OYwvfdq+fqnkwhxBOKjQUX4+ccMTHGrw9uO2ft515mP7/zzqeeyBYJyXq+/8fYq/Rm41J5KlECcHV15YcffmDVqlV4e3tz/Phx6tSpw5gxY0hOTrZ0ePmSh5MdPer6AzBz82mZUFQIYXF565NPZLkl+y9y414iRT0ceaFqMUuHk23atGlDeHg4nTt3Rq/XM3bsWOrWrcuxY8csHVq+1Pe5EjjYajl8KYodp2WaByGEZUmyZKUcbR059/Y5zr19DkdbxwzrslNSioHvthp7ld5oVBI7m7z9dilUqBCLFy/ml19+oUCBAhw4cIBq1arx5ZdfYjDIrNI5qZCLPa/UKg4YZ/UWQuQTjo5w7pyxODqm3baQvP3pl4tpNVoCPAII8AhAq9FmWJedVhy6zOW78RRxteflGvlnlvKuXbsSHh5Oq1atSExM5N1336VJkyacO3fO0qHlK/0blMRWp2HX2VscOH/n8TsY9HBuG4QtNX416LM/SCFE1tJqISDAWLTatNuWCstiZxZWLUVvYOYW43/0rzcsiYOtzsIR5SxfX19Wr17N999/j7OzM//88w+VK1fmxx9/lDE0OcTXw5EX71/6/XbLY3qXjq2EaZVgflv4va/x67RKxnohhHhGkixZqSR9EsPXD2f4+uEk6ZMyrMsuf4VfJeJWHAWcbE2XQ/IbjUbDgAEDOHLkCA0aNCAmJob+/fvTrl07sykqRPZ5o3EptBrYePw6xyMzmDz02Er4rQdEP7RQcnSksV4SJiFyj6QkGD7cWJKS0m5biEwdkAXy2tQBSinafL2dY5HRvNO8LG83L5Mt58lN9Ho9U6dO5cMPPyQpKYmCBQsyc+ZMunTpYunQ8rzBPx9k1ZFI2gX78s0rVc0fNOiNPUgPJ0omGnDzhaFhoM1fvaNC5EoydYDILf45dZNjkdE42elMt3Dndzqdjvfee4+DBw9SrVo1bt++TdeuXXnllVe4ffu2pcPL095sXBqA1UeucO5mrPmD53c+IlECUBB92dhOCCGekiRLIo2Z9+8+eqVWcQo421k4GutSsWJFdu/ezSeffIJOp+PXX3+lUqVK/PXXX5YOLc8K9HWjaXlPDAq+33rG/MGYa+nv9LDMthNCiHRIsiTMHDh/hz3nbmOr09CvQQlLh2OVbG1tGTt2LLt27aJ8+fJERkbSunVrXn/9dWJSu41FlhrUpBQAvx+8RGTUA0vSuHhl7gCZbSeEEOmQZEmY+e7+f+4vVC2Kj7vl5rTIDWrWrMnBgwcZOnQoALNmzaJy5cps27bNsoHlQdX9C1KrREGS9Yq5OyL+e8C/nnFMEhmtV6gBt6LGdkII8ZQkWRImJ6/dY8Oxa2g0MKBhKUuHkys4OjoydepU/v77b4oXL865c+do1KgRw4cPJyEhwdLh5SkDGxnfkz/vuUBUfLJxcPf5nRDYEUjvPpX7CVTLCTK4WwjxTCRZEiapvUohgd6U9nSxcDS5S5MmTQgLC6NPnz4opZgyZQo1atTg4MGDlg4tz2hcrgjlvV2JSUxh559z/5tXafdMY4OHJ2p184XOCyCwfc4HK4TIU2wsHYBIn6OtI+EDw03fZ1SXVS7diWNlqPGuooGNpVfpabi5uTF79mw6duxI//79OXr0KLVr1+aTTz5h1KhR2NjIr9uz0Gg0vN6oJGuX/EDIsWkoHrr4ljoLSp03oVxr46U36VESIndxdITw8P++h7TbFiDzLGWB7JhnKaeNWXmUeTsjqF+6EIv61bF0OLnezZs3GThwIEuXLgWM45sWLFhA+fLlLRxZ7pacnMztz8pRRN1Cm+4wJZlXSQiReTLPksi0O7FJLN53EYDXZaxSlihcuDC//fYbixYtwsPDg3379lG1alWmTZsmi/I+A9tLu/Eio0QJZF4lIUR2kGTJSiXpkxizZQxjtowxW+7k4bqs8NPu88Qn66ng40aDMoWz7Lj5nUaj4dVXXyU8PJyQkBASEhJ45513aNasGREREZYOL3eSeZWEyNuSkmDMGGNJXe7kwW0LkctwWSA3L3eSkKznuYl/czMmiWldqtCxatFnPqZISynF999/z7vvvktcXByurq5MmzaN3r17o9Fk2E0iHnZum3FQ9+P0XAUlGmR/PEKIrCXLnQhrtOzgZW7GJOHr7kCbyj6WDifP0mg0vPHGGxw5coT69etz7949+vbtS/v27bl69aqlw8s97s+rpGReJSFEDpJkKR/TGxQ/bDsLQN8GJbHVydshu5UqVYqtW7cyceJE7OzsWLVqFZUqVTINBBePodVBy4loSG9mJZlXSQiRPeTTMR/bcOwa527G4uZgQ9eafpYOJ9/Q6XSMGDGC/fv3U6VKFW7dusXLL79Mt27duHPnjqXDs36B7aHzAvQuD/WEyrxKQohsIslSPqWU4vt/jJNQvlbHH2d7mQMopwUFBbFnzx4++ugjtFotP//8M0FBQaxbt87SoVm/wPbYDDvKtKJTeStpMN8GfGWcLkASJSFENpBkKZ/af/4Ohy7cxU6npVf9AEuHk2/Z2dnx6aefsnPnTsqWLcvly5dp2bIlAwcOlEV5H0ero1HIC6w01OPLU55ci0m2dERCiDxKkqV86vutxrFKL1Yriqerg4WjEbVr1+bQoUMMGTIEgO+++44qVaqwY8cOC0dm3aoWL0CtAOMCu/N2Rlg6HCFEHiXJkpVysHFgb7+97O23FwcbhwzrnsaZGzFsPG6ch6Zfg5JZEq94dk5OTnz99dds3LgRPz8/zpw5Q4MGDXj//fdJTEy0dHhWq39D43t40e7zxCSmWDgaIcQzcXCAvXuNxcEh7baFSLJkpXRaHTWL1qRm0Zro7t/Zk17d05i9/RwAzSt4yoK5VqhZs2aEhYXRs2dPlFJMmjSJGjVqEBoaaunQrFKz8p6ULOxMdEIKv92fiV4IkUvpdFCzprHodGm3LUSSpXzmVkwivx+4BEivkjVzd3dn3rx5rFixAk9PT8LDw6lZsyafffYZKSnSe/IgrVZjei/P3n6OFL0sJyOEyFqSLFmpJH0Sk3dMZvKOyWbLnTxc96R+2n2BxBQDQUXdqV2iYFaGLLJBhw4dCA8P58UXXyQlJYWPPvqI5557jhMnTlg6NKvyYrWiFHK24/LdeP4Kl0k+hci1kpJg8mRjSV3u5MFtC5HlTrJAblnu5MGlTb7qWoUOVWRpk9xCKcWiRYsYPHgwUVFRODo6MmHCBAYPHoxWK//zAHy18RRTN54kqKg7KwfXl2VkhMiNZLkTYWkrDv23tEnrIFnaJDfRaDS89tprhIWF8fzzzxMfH8/bb7/N888/z4ULFywdnlXoXtcfexstYZej2HPutqXDEULkIZIs5RMGg+LH+wO7e9cvIUub5FJ+fn6sW7eOGTNm4OTkxN9//01QUBDz588nv3cSF3S2o1P1YgD8uO2chaMRQuQlue4Tc8aMGQQEBODg4EDt2rXZu3dvhm1/+OEHGjRoQIECBShQoADNmzdP075Xr15oNBqz0rJly+x+Gjlu68kbnL4eg4u9DV1qydImuZlGo+HNN98kNDSUunXrEh0dTa9evXjhhRe4fv26pcOzqD7PlQBg07/GpXyEECIr5KpkafHixQwbNozRo0dz8OBBgoODCQkJyfADYsuWLbzyyits3ryZXbt24efnR4sWLbh8+bJZu5YtWxIZGWkqv/zyS048nRyVumBu15p+uDnYWjgakRXKlCnDtm3bGD9+PLa2tvzxxx9UrFiRZcuWWTo0iylVxIVm5T1RCubukN4lIUTWyFXJ0pdffkn//v3p3bs3gYGBfPfddzg5OTFnzpx02y9atIg333yTKlWqUL58eX788UcMBgObNm0ya2dvb4+3t7epFChQICeeTo45eiWKnWduodNq6H3/P2+RN+h0OkaOHMn+/fupXLkyN2/e5KWXXqJ79+7cvXvX0uFZRN8Gxvf4kv2XuBtnubtnhBB5R65JlpKSkjhw4ADNmzc31Wm1Wpo3b86uXbsydYy4uDiSk5MpWND8lvktW7bg6elJuXLlGDhwILdu3XrkcRITE4mOjjYr1mz2/fEbrYN8KOrhaOFoRHaoXLkye/fuZdSoUWi1Wn766SeCgoLYsGGDpUPLcXVLFqKCjxvxyXp+3iuD34UQzy7XJEs3b95Er9fj5eVlVu/l5cXVq5mbV+X999/H19fXLOFq2bIlCxYsYNOmTUycOJGtW7fSqlUr9Hp9hscZP3487u7upuLnl/VjgBxsHNjcczObe242W+7k4brHuR6dwJ9HrgDQT3qV8jR7e3s+//xztm/fTunSpbl06RItWrRg0KBBxMbmn/E7Go3G9F6fvzOCpBSZpFKIXMPBATZvNpbU5U4e3LaQXDPP0pUrVyhatCg7d+6kbt26pvoRI0awdetW9uzZ88j9J0yYwKRJk9iyZQuVK1fOsN3Zs2cpVaoUGzdupFmzZum2SUxMNFurKzo6Gj8/vyydZymrTFl3gumbT1MzoABL3qhn6XBEDomNjeX9999nxowZAJQuXZr58+dTr17+eA8kpRh4buLfXL+XyNQuwbxQtZilQxJCWKE8N89S4cKF0el0XLt2zaz+2rVreHt7P3LfKVOmMGHCBNavX//IRAmgZMmSFC5cmNOnT2fYxt7eHjc3N7NijRKS9Szacx6AvtKrlK84Ozszffp0NmzYQLFixTh9+jQNGjRg1KhR+WJRXjsbLT3rBQDGaQRyyf+EQggrlWuSJTs7O6pXr242ODt1sPaDPU0PmzRpEp9++ilr166lRo0ajz3PpUuXuHXrFj4+lp20MVmfzIy9M5ixdwbJ+uQM6x5l2cHL3IlLxq+gI88HPjqhFHlT8+bNCQsLo0ePHhgMBiZMmECtWrU4fPiwpUPLdq/WKo6DrZajV6LZfVYmqRQiV0hOhhkzjCU5Oe22pahc5Ndff1X29vZq3rx56tixY2rAgAHKw8NDXb16VSmlVPfu3dXIkSNN7SdMmKDs7OzU0qVLVWRkpKncu3dPKaXUvXv31Hvvvad27dqlzp07pzZu3KiqVaumypQpoxISEjIdV1RUlAJUVFRUlj3XmMQYxRgUY1AxiTEZ1mXEYDCoZl9sUf7vr1I/bjubZXGJ3GvZsmWqSJEiClC2trbqs88+U8nJyZYOK1t9uPyI8n9/leo7b6+lQxFCZEZMjFJgLDExabezWGY/v3NNzxJAly5dmDJlCp988glVqlQhNDSUtWvXmgZ9X7hwgcjISFP7b7/9lqSkJDp16oSPj4+pTJkyBTDedn3kyBHat29P2bJl6du3L9WrV2fbtm3Y29tb5DlmlQcnoexcQ8ZrCHjhhRcIDw+nY8eOJCcn8+GHH9KgQQNOnTpl6dCyTZ/6qZNUXpdJKoUQTy3XDPC2Zta4kG732XvYduomfZ8rwcdtA7MkJpE3KKVYuHAhQ4YMITo6GkdHRyZPnszAgQPz5KK8febt4+9/r9Ozrj9jO1SydDhCiEeRhXRFTjl57R7bTt1Eq4Fe9we5CpFKo9HQo0cPwsLCaNasGfHx8QwePJiQkBAuXrxo6fCyXGrv0pIDl4iKt+CYByFEriXJUh405/6CuSEVvfEr6GThaIS1Kl68OOvXr+ebb77B0dGRjRs3EhQUxMKFC/PU3WP1SxeinJcrcUl6ftuX95JBIUT2k2Qpj7kVk8iyQ8a172S6APE4Wq2WwYMHExoaSu3atYmKiqJHjx689NJL3Lhxw9LhZQmNRkOf5wIAmLczghS9TFIphHgykizlMT/vuUBSioHKxdyp7p+31rgT2ads2bJs376dzz77DFtbW5YvX07FihVZsWKFpUPLEh2qFKWgsx2X78az/ti1x+8ghBAPkGTJStnb2LPqlVWsemUV9jb2GdY9KCnFwMLd/01CqdFocjRmkbvZ2NjwwQcfsHfvXoKCgrhx4wYvvPACvXr1IioqytLhPRMHWx3dahcH/rtMLYSwQvb2sGqVsdjbp922ELkbLgtkx91wT2PFocsMXRyKp6s9299vip2N5MLi6SQmJjJ69GgmT56MwWDAz8+PuXPnZrgEUG5wPTqB+hP/Jlmv+GNQfYL9PCwdkhDCwuRuuHxGKcWcHcb/mHvU9ZdESTwTe3t7JkyYwD///EOpUqW4ePEizZs3Z8iQIcTFxVk6vKfi6eZAu8q+AKbfFSGEyAz5RLVSyfpk5oXOY17oPLPlTh6uS3Xwwh2OXIrC3kbLK7WKWyJkkQfVr1+f0NBQBg4cCMD06dOpWrUqu3fvtnBkT6fP/ZseVh+J5GpUgoWjEUKkkZwM8+YZS+pyJw9uW4gkS1YqSZ9E7z960/uP3iTpkzKsSzVnewQAHasUpZBL7p59XFgXFxcXZs6cydq1a/H19eXkyZPUr1+fDz/8kKSkpMcfwIpUKupOrRIFSTEoFu6OsHQ4QoiHJSVB797GkpSUdttCJFnKAy7dieOvcOMyL73v3yItRFYLCQkhPDycbt26YTAY+Pzzz6lVqxZhYWGWDu2J9KkfABjvHE1I1ls2GCFEriDJUh6wcNd5DMo4+V55b8sNMBd5X4ECBfjpp59YsmQJhQoV4vDhw9SoUYOJEyei1+eOxOP5QG+KejhyJy6ZP0IvWzocIUQuIMlSLheXlMIvey8A0LueTEIpckanTp04evQo7dq1IykpiZEjR9KoUSNOnz5t6dAeS6fV0LOePwBzd0TkqdnKhRDZQ5KlXO73g5eJTkjBv5ATTct7WjockY94eXnxxx9/MGfOHFxdXdmxYwfBwcF8++23Vp+AdKlRHEdbHf9evceus7csHY4QwspJspSLGQyKufdvge5VLwCtViahFDlLo9HQu3dvwsLCaNKkCXFxcbz55pu0bNmSS5cuWTq8DLk72fJS9aLAfzdHCCFERiRZysW2nb7J2RuxuNjb0Kl6MUuHI/Ixf39/Nm7cyFdffYWDgwPr168nKCiIn376yWp7mXrdv2y96d9rnL8Va+FohBDWTJIlK2VvY89vnX7jt06/mS138mBdaq/SyzWK4epga8lwhUCr1fLWW29x6NAhatWqxd27d+nevTudOnWyykV5S3u60LBsEZSC+TvPWzocIQQYlzT57TdjSV3u5MFtC5HlTrKAJZY7OXMjhmZfbEWjgS3vNca/kHOOnFeIzEhJSWHChAmMHTuWlJQUPD09+eGHH2jfvr2lQzOz+cR1es/dh6u9Dbs+aIaLvY2lQxJC5CBZ7iSPW7AzAoBm5T0lURJWx8bGho8++oi9e/dSsWJFrl+/TocOHejTpw/R0dGWDs+kUZkilCzszL3EFJbuv2jpcIQQVkqSJSuVYkhhydElLDm6hBRDilndgkNLWHrAOHi2l0wXIKxY1apV2b9/P8OHD0ej0TB37lyCgoLYvHmzpUMDQKvV0Ov+JJXzdkZgMEhHuxAWlZICS5YYS0pK2m0LkctwWSA7LsPFJsXiMt4FgJhRMTjbOZvqXFM6UDC5P2W9XFg3tCEajdwFJ6zftm3b6NWrF2fPngXg7bffZvz48Tg6Olo0rtjEFOqM38S9hBTm9qpJE5mCQwjLiY0FF+NnHzExxq8Pbjtn7ZUUuQyXVyktrintAGOvkiRKIrdo0KABhw8f5vXXXwfgq6++omrVquzdu9eicTnb29Clhh8Ac+7fNCGEEA+SZCmXcTTUwFZ54+ZowwtVi1o6HCGeiIuLC9999x1r1qzBx8eHEydOUK9ePT755BOLLsrbo24AGg1sO3WT09fvWSwOIYR1kmQpl3FN6QBAp+o+ONrpLByNEE+nVatWhIeH88orr6DX6/n000+pU6cO4eHhFomneCEnmlfwAoxjl4QQ4kGSLOUip67F4GgIRqHnlVrSqyRyt4IFC/Lzzz/z22+/UahQIQ4dOkT16tWZPHmyRRbl7V0vAIDfD1wmKj45x88vhLBekizlIj/tNq6QHqfdja+Hg4WjESJrvPzyy4SHh9O2bVuSkpIYMWIEjRs35syZMzkaR91ShSjn5Up8sp7f9sk0AkKI/0iylEvciU1i1ZFrANyzWWnhaITIWt7e3qxcuZLZs2fj4uLC9u3bCQ4O5vvvv8+x5VI0mv+mEZi/KwK9TCMghLhPkiUrZaezY26HucztMBc7nR2/7rtIQrIBb49kvn3hPex0dpYOUYgspdFo6NOnD2FhYTRq1IjY2FjeeOMNWrduzeXLl3Mkho5ViuLhZMulO/FsPH4tR84phHiAnR3MnWssdnZpty1E5lnKAtm93EmK3kDDSZu5EpXA5E6Vefn+bc5C5FUGg4Gvv/6akSNHkpiYSIECBZgxYwZdu3bN9ukyJvz1L99tPUPdkoX4ZUCdbD2XEMKyZJ6lPGTDsWtciUqgoLMd7YJ9LR2OENlOq9UydOhQDh06RI0aNbhz5w6vvvoqXbp04datW9l67u51/dFpNew6e4vjkdazNIsQwnIkWbJSKYYUVp9czeqTq00T5XWtWYxN59ay+uRq0xIoQuRlFSpUYOfOnYwZMwYbGxuWLFlCpUqVWL16dbads6iHIyEVjdMIzJdpBITIWSkpsHq1saQud/LgtoXkumRpxowZBAQE4ODgQO3atR87+++SJUsoX748Dg4OBAUFsWbNGrPHlVJ88skn+Pj44OjoSPPmzTl16lR2PoVMSUxJpO0vbXlh0Vvsi7iDjVZDpxpetP2lLW1/aUtiSqKlQxQiR9ja2jJ69Gh2795NYGAgV69epW3btvTr1y/bFuXtXd+45uLyQ5e5E2u5yTKFyHcSE6FtW2NJTEy7bSG5KllavHgxw4YNY/To0Rw8eJDg4GBCQkK4fv16uu137tzJK6+8Qt++fTl06BAdO3akY8eOZhPfTZo0ia+//prvvvuOPXv24OzsTEhICAkJCTn1tB7J7f7SJq2CfPBys7dwNEJYTvXq1Tlw4ADvvvsuGo2G2bNnExwczNatW7P8XDX8C1DR143EFAO/yjQCQuR7uSpZ+vLLL+nfvz+9e/cmMDCQ7777DicnJ+bMmZNu+6+++oqWLVsyfPhwKlSowKeffkq1atWYPn06YOxVmjZtGh999BEdOnSgcuXKLFiwgCtXrrBixYocfGbp0yo3nPWNAOh1f8I8IfIzBwcHpkyZwpYtWwgICCAiIoLGjRvzzjvvEB8fn2Xn0Wg0pt+5hbsiSNEbsuzYQojc54mTpZ49e/LPP/9kRyyPlJSUxIEDB2jevLmpTqvV0rx5c3bt2pXuPrt27TJrDxASEmJqf+7cOa5evWrWxt3dndq1a2d4zJzkktISDXZUKupKteIelg5HCKvRsGFDjhw5Qv/+/QGYNm0a1apVY//+/Vl2jnbBvhRytuNKVALrj8k0AkJYyqxaL7AouCVxSTk/s3+qJ06WoqKiaN68OWXKlOHzzz/PsflPbt68iV6vx8vLy6zey8uLq1evprvP1atXH9k+9euTHBMgMTGR6Ohos5LVkvUGXFPaAPBanaLZfru0ELmNq6srs2bNYvXq1fj4+PDvv/9Sp04dRo8eTXLysy9X4mCr49XaxQGYtyPimY8nhHhy9xJT+KreK3zYcjAHLkVZLI4nTpZWrFjB5cuXGThwIIsXLyYgIIBWrVqxdOnSLPkDlRuMHz8ed3d3U/Hzy/p5j5SCKNufidceJqSiZ5YfX4i8onXr1oSFhdGlSxf0ej3jxo2jTp06HDt27JmP3a22PzZaDXsjbhN+2XJ/qIXIr5aEXiXW3onSNy/wXIkCFovjqcYsFSlShGHDhnH48GH27NlD6dKl6d69O76+vrzzzjvZcjdZ4cKF0el0XLtm3h1+7do1vL29093H29v7ke1Tvz7JMQFGjRpFVFSUqVy8mPUDQO1stMTYrOO6/YfY2eSqoWVC5LhChQrx66+/8uuvv1KwYEEOHjxItWrV+OKLL55pUV5vdwdaBfkAMo2AEDnNoBTz910CoNeBPy16heWZPoUjIyPZsGEDGzZsQKfTmf7DCwwMZOrUqVkVIwB2dnZUr16dTZs2meoMBgObNm2ibt266e5Tt25ds/YAGzZsMLUvUaIE3t7eZm2io6PZs2dPhscEsLe3x83NzaxkNTudHdNbTWd6q+mmpU3SqxNC/KdLly6EhYXRqlUrEhMTee+992jatCnnzp176mOmDvT+4/AVbsXIlB1CZCs7O5g+HaZPZ0tENOfvJOCm0fNin7YWXe4E9YSSkpLU0qVLVZs2bZStra2qXr26+vbbb1VUVJSpzbJly5SHh8eTHvqxfv31V2Vvb6/mzZunjh07pgYMGKA8PDzU1atXlVJKde/eXY0cOdLUfseOHcrGxkZNmTJFHT9+XI0ePVrZ2tqqsLAwU5sJEyYoDw8P9ccff6gjR46oDh06qBIlSqj4+PhMxxUVFaUAs9dACGE5BoNBzZo1S7m4uChAubi4qB9++EEZDIanOlb7b7Yp//dXqW82ncyGaIUQ6Xntx93K//1V6rPVx7LtHJn9/H7iZKlQoUKqQIEC6s0331SHDh1Kt82dO3dUQEDAkx46U7755htVvHhxZWdnp2rVqqV2795teqxRo0aqZ8+eZu1/++03VbZsWWVnZ6cqVqyoVq9ebfa4wWBQH3/8sfLy8lL29vaqWbNm6sSJE08UkyRLQlinM2fOqAYNGihAAapNmzbqypUrT3ycZQcvKv/3V6lan21QSSn6bIhUCPGgk1ejlf/7q1SJkavUhVux2XaezH5+P/FCugsXLuTll1/GwcEhy3u5cqvsWEhXb9Cz7cI2ABoUb4BOq0u3TgjxaHq9nqlTp/Lhhx+SlJREwYIFmTlzJl26dMn0MRJT9NSfsJmbMYl8/UpV2ssajUJkD70etm3jo6OJ/HQxhRYVPJnlH2t8rEED0GXt5162LaTbvXt3SZRyQEJKAk3mN6HJ/CYkpCRkWCeEeDSdTsd7771nGvR9+/ZtunbtSteuXTO9KK+9jY7X6qROI/D045+EEI+RkEBUy7b8fiYGgN41fKBJE2Ox4MoacpuVECJfqFixIrt37+aTTz5Bp9OxePFiKlWqlGa9yIy8Wrs4tjoNBy/c5fDFu9kbrBD52G+VWxBv50B5T2fq+HtYOhxAkiUhRD5ia2vL2LFj2bVrF+XLl+fq1au0adOGAQMGcO/evUfu6+nqQLvKxstv82QaASGyhd6gmF/NOCFzr1rWMyGzJEtCiHynZs2aHDx4kKFDhwLwww8/EBwc/NilnHrVDwBg1ZErXI+WS+FCZLVNp25xycMbj/hoOlTyevwOOUSSJSFEvuTo6MjUqVPZvHkz/v7+nDt3jsaNG/Puu++SkMHYiMrFPKjuX4BkvWLRngs5HLEQed/cvcZJKLseXoejrfXcxCTJkhAiX2vcuDFHjhyhT58+KKX48ssvqV69OgcOHEi3feoklYv2nCcxxXILewqR1xyPjGZXxF10Bj09Dq62dDhmJFkSQuR7bm5uzJ49m5UrV+Ll5cWxY8eoU6cOY8eOTbPmZctK3ni7OXAzJonVRyItFLEQeU/qkkItT+7E995NywbzEEmWrJStRssv1d5kZcUe2F3cCwY9tjpbJjWfxKTmk7DV2Vo6RCHynHbt2hEeHk6nTp1ISUlhzJgx1KtXj+PHj5va2Oq0dK/rD8DcHRE84VR1Qoh03I5NYvmhywD0rlUMJk0CW1tjmTTpv20LeeJJKUVaWT4p5bGVsPZ9iL7yX52bL7ScCIHtn/34QohHUkrxyy+/MGjQIO7evYuDgwPjx4/nrbfeQqvVcismkboT/iYpxcDSN+pSI6CgpUMWIlebsfk0k9edIKioOysH18+xu+CybVJKkc2OrYTfepgnSgDRkcb6YystE5cQ+YhGo+HVV18lPDyckJAQEhISeOedd2jWrBkREREUcrGnYxXjNAJzZRoBIZ5Jst7Awl3nAeOYQGuZLuBBkixZE4Pe2KNEep19CgUkrh7Gvou70RtkYKkQ2a1o0aL89ddffPvttzg5ObFlyxYqV67M7Nmz6Vk3AIC14Ve5cjfesoEKkYutDb/K1egECrvY07aSF+zbZyx6vbE8uG0hkixZk/M70/YoPUCDwj72BsNnPyfLnQiRQzQaDW+88QZHjhyhfv363Lt3j379+jHyjdcILqTQGxQL7v9XLIR4cqmTvHarXRz7lCSoVctYEhKM5cFtC5FkyZrEXMtUMx+sr4tSiLyuVKlSbN26lYkTJ2JnZ8eqVavY8nkPYv/dzi97LxCfJL29QjypI5fucuD8HWx1GrrdX3/RGkmyZE1cMjdbaWS6l+mEENlNp9MxYsQI9u/fT5UqVYi+e4ebf0zg9OLPWbjlqKXDEyLXmbsjAoC2lX3xdHWwbDCPIMmSNfGvZ7zrLYOeI4WGCxjYhvwHK4QlBQUFsWfPHj766CO0Oh1xx7fy1svN+OuvvywdmhC5xvV7Caw6Yhx60vv+UkLWSpIla6LVGacHwJgYmTNuDyUBg1yFE8Li7Ozs+PTTT9nw91bsChYlMfomrVu35o033iAmJsbS4Qlh9X7afYFkvaK6fwEqF/OwdDiPJMmStQlsD50XoFy9zevdfEl88QeWa1IsE5cQIl1NG9bn3W+X41q9HQDff/89wcHBbN++3cKRCWG9EpL1LNptvDGiT/0SFo7m8SRZskaB7YkftJfGxPIKccR3WwpDw9CXb23pyIQQ6ejXpAIFm7+OV9fP8C3mx9mzZ2nYsCEjRozIcFFeIfKzlYevcCs2CV93B0IqZm68riXZWDoAkT5bWwcaN/4IAF3JRqDVYauzZXSj0cbHZbkTIaxGySIuNClXhM0E07X9b1xb/z3z5s1j8uTJrFmzhoULF1K1alVLhymEVVBKmQZ296gXgI3ugX4bW1sYPfq/7yHttgXIcidZIMuXOxFC5Dr/nLxBjzl7cbbTseuDZmxet4YBAwZw/fp1bGxsGD16NCNHjsTGRv5HFfnbrjO3eOWH3Tja6tg1qikeTnYWi0WWOxFCiBzUoExhyni6EJukZ8n+S3To0IHw8HBefPFFUlJS+Pjjj6lfvz4nTpywdKhCWNScHecAeLFaUYsmSk9CkiUrZVAGjl4/ytHrRzEoQ4Z1QgjroNFo6H1/oOq8nefQGxRFihRh6dKlLFy4EHd3d/bu3UuVKlX4+uuvMRjkd1jkP+dvxbLxuHEC5nSnCzAY4OhRYzEY0m5biCRLVio+OZ5K31ai0reViE+Oz7BOCGE9XqhaFA8nWy7ejmfDMeMHgkaj4bXXXiMsLIznn3+ehIQE3n77bZo3b87587JMishf5u88j1LQsGwRSnu6pm0QHw+VKhlLfHzabQuRZEkIIbKIo52ObrWNSzakXmpI5efnx7p165gxYwZOTk5s3ryZoKAg5s6diwwdFfnBvYRkftt/EYA+Vj4J5cMkWRJCiCzUvU4ANloNe8/dJvxylNljGo2GN998k9DQUOrWrcu9e/fo06cPHTt25Nq1zK0NKURutWT/JWISUyhVxJmGZYpYOpwnIsmSEEJkIW93B9pU9gFgzvZz6bYpU6YM27ZtY/z48dja2rJy5UoqVarE77//npOhCpFj9AbF3J3G34de9Uug1eaupSgkWRJCiCzW9znjQO8/j1zhenT6k1LqdDpGjhzJ/v37qVy5Mjdv3qRTp050796du3fv5mC0QmS/DceucfF2PO6OtrxUrailw3likiwJIUQWq1zMgxr+BUjWK37a/ehB3JUrV2bfvn188MEHaLVafvrpJypVqsT69etzKFohsl9qL+urtYvjZJf75hqTZEkIIbJBn/u9Sz/tuUBCsv6Rbe3s7Pjss8/Yvn07ZcqU4fLly4SEhDBo0CBiY2NzIlwhsk3YpSj2RtzGRquhZ90AS4fzVHJfepdP2Opsea/ue6bvM6oTQlinFoFeFPVw5PLdeFYcukzXWsUfu0/dunU5dOgQ77//PjNmzGDmzJmsX7+e+fPnU69evRyIWoisN3v7WQDaVPbB293h0Y1tbeG99/77HtJuW4Asd5IFZLkTIUR6fvjnLJ+tOU5ZLxfWDW2IRpP5Qa0bN26kd+/eXLp0Ca1Wy/Dhwxk7diz29vbZGLEQWetqVALPTfybFINi5eD6VC7mYemQzOS55U5u375Nt27dcHNzw8PDg759+xITE/PI9kOGDKFcuXI4OjpSvHhx3nrrLaKi0t7K+3D59ddfs/vpCCHygc41/XC203HyWgzbTt18on2bN29OWFgYPXr0wGAwMHHiRGrWrEloaGj2BCtENliwK4IUg6JmQAGrS5SeRK5Jlrp168bRo0fZsGEDq1at4p9//mHAgAEZtr9y5QpXrlxhypQphIeHM2/ePNauXUvfvn3TtJ07dy6RkZGm0rFjx2x8JpljUAYi7kYQcTfCbLmTh+uEENbL3dGWzjX9APgxg2kEHsXDw4P58+ezbNkyihQpQlhYGLVq1eLzzz8nJSUlq8MVIkvFJ+n5ee8F4L87RB/LYICICGNJXe7kwW0LyRWX4Y4fP05gYCD79u2jRo0aAKxdu5bWrVtz6dIlfH19M3WcJUuW8NprrxEbG2ta+Vuj0bB8+fJnSpCy4zJcbFIsLuNdAIgZFYOznXO6dUII63bhVhyNp2zGoGDd0IaU805niYdMuH79Oq+//jorVqwAoE6dOsyfP5+yZctmYbRCZJ2fdp/noxXh+BV0ZMt7TdBlZm6l2FhwMX7OkXr16MFt56z93MtTl+F27dqFh4eHKVECYxe1Vqtlz549mT5O6ouRmiilGjRoEIULF6ZWrVrMmTPnsUsPJCYmEh0dbVaEECI9xQs5EVLRG8h4ksrM8PT0ZNmyZcyfPx83Nzd2795NlSpVmD59uizKK6yOwaCYe3/Jn971SmQuUbJiuSJZunr1Kp6enmZ1NjY2FCxYkKtXr2bqGDdv3uTTTz9Nc+lu3Lhx/Pbbb2zYsIGXXnqJN998k2+++eaRxxo/fjzu7u6m4ufn92RPSAiRr/RrYLwEsTz0MjdjEp/6OBqNhh49ehAWFkazZs2Ij49nyJAhtGjRgosXL2ZVuEI8s60nb3DmRiyu9jamS9G5mUWTpZEjR6Y7wPrB8u+//z7zeaKjo2nTpg2BgYGMGTPG7LGPP/6Y+vXrU7VqVd5//31GjBjB5MmTH3m8UaNGERUVZSryR0oI8SjVihegip8HSSmGx05SmRnFixdn/fr1fPPNNzg6OrJp0yaCgoJYsGCBLMorrMIP24zTBXSt5YeLfe6fpciiydK7777L8ePHH1lKliyJt7c3169fN9s3JSWF27dv4+3t/chz3Lt3j5YtW+Lq6sry5cuxfcw8DbVr1+bSpUskJmb835+9vT1ubm5mRQghMqLRaEy9Swt3nX/sJJWZodVqGTx4MKGhodSuXZuoqCh69uzJiy++mObvpRA56eiVKHaeuYVOq6FX/UwO7LZyFk2WihQpQvny5R9Z7OzsqFu3Lnfv3uXAgQOmff/++28MBgO1a9fO8PjR0dG0aNECOzs7Vq5ciYPDYybDAkJDQylQoIDMZSKEyFItK3pT1MORW7FJ/BF6OcuOW7ZsWbZv385nn32Gra0tK1asoFKlSixfvjzLziHEk/hxm3GsUpsgH4p6OFo4mqyRK8YsVahQgZYtW9K/f3/27t3Ljh07GDx4MF27djXdCXf58mXKly/P3r17gf8SpdjYWGbPnk10dDRXr17l6tWr6PXG/+r+/PNPfvzxR8LDwzl9+jTffvstn3/+OUOGDLHYcxVC5E02Oi296wcAxg+TrLxcZmNjwwcffMDevXupVKkSN27c4MUXX6Rnz56yKK/IUZFR8fx5+AoA/RuUtHA0WSfXXEhctGgRgwcPplmzZmi1Wl566SW+/vpr0+PJycmcOHGCuLg4AA4ePGi6U6506dJmxzp37hwBAQHY2toyY8YM3nnnHZRSlC5dmi+//JL+/fvn3BPLgI3WhjdrvGn6PqM6IYQVM+jh/E6IuQYuXnSuXpNpG09x6noMW07eoEk5z8cf4wlUqVKF/fv3M3r0aCZPnsyCBQv4+++/mTt3Ls2bN8/ScwmRnnk7jZNQ1i5RkKBi7k9+ABsbePPN/76HtNsWkCvmWbJ2styJECKNYyth7fsQfeW/OjdflhQZwvCj/tQvXYhF/epk2+l37NhBz549OXPmDACDBw9m4sSJODk5Zds5Rf4Wk5hC3fGbuJeQwo89atA80MvSIT1WnppnSQghcpVjK+G3HuaJEkB0JJ3OfEAr3T52nL5F+OWo9PfPAvXr1+fw4cO8ef+/8unTp1OlShV2796dbecU+dtv+y5yLyGFkkWcaVo+a3tNLU2SJSullOJG7A1uxN4wjW1Ir04IYWUMemOPEun9jio0wOeOi9Bi4Mf7t1dnF2dnZ2bMmMG6desoWrQop06don79+nzwwQckJSVl67lF/qI3KObcn4Sy73Ml0D7tJJRKwY0bxqJU2m0LkWTJSsUlx+E5xRPPKZ7EJcdlWCeEsDLnd6btUTKjKJBynVraf/nzSCRX7sZne0gtWrQgLCyM1157DYPBwPjx46lVqxZHjhzJ9nOL/GHd0atcuhNPQWc7XqpW7OkPFBcHnp7GEheXdttCJFkSQoisFHMtU83qe6Wgf2BJiOxWoEABFi5cyNKlSylUqBCHDx+mRo0aTJw40XSHsBBPQynFrH+MvaSv1fHHwVZn4YiyniRLQgiRlVwyN6j1uaqVAPhl70WiE5KzMyIzL730EkePHqV9+/YkJyczcuRIGjZsyOnTp3MsBpG37Iu4Q+jFu9jZaOlR19/S4WQLSZaEECIr+dcDN18gozEbGnArSpX6rSjj6UJMYgq/7r2QkxHi5eXFihUrmDt3Lq6uruzcuZPg4GBmzpwp4yHFE/t+q/GOy07Vi1HYJW9O6CzJkhBCZCWtDlpOvL/xcMJ0f7vlBDQ6G/o3NE7aN2d7BEkphhwLEYxLsPTq1YuwsDCaNGlCXFwcgwYNomXLlly6dClHYxG516lr99j073U0mrw1CeXDJFkSQoisFtgeOi8ANx/zejdfY31gewA6VPGliKs9V6MTWB32qEHh2cff35+NGzcybdo0HBwcWL9+PZUqVeKnn36SXibxWKkL5oYEelOisLOFo8k+kiwJIUR2CGwPQ8Oh5yp4abbx69AwU6IEYG+jo1e9AAC+33rWYsmJVqvl7bff5tChQ9SsWZOoqCi6d+9Op06duHHjhkViEtbvWnQCyw8Z1zkc0Cjv9ipBLlruJL+x0drQM7in6fuM6oQQVkyrgxINHtnktdr+zNx8mn+v3mPryRs0zuIlUJ5E+fLl2blzJ+PHj2fcuHEsW7aM7du388MPP9C+ffvHH0DkK3N3RJCsV9QKKEi14gWy5qA2NtCz53/fQ9ptC5DlTrKALHcihHgW/1t1jB+3n6NOyYL8OqCupcMBjOtr9ujRg6NHjwLQq1cvpk2bhrv7U6z3JfKcewnJ1Jvwd65a2iQ9styJEELkEn0blMBGq2H32duEXrxr6XAAqFatGvv372f48OFoNBrmzZtH5cqV+fvvvy0dmrACv+41Lm1SKg8ubZIeSZaslFKK2KRYYpNizZY7ebhOCJH7+bg70qFKUQC+23LGwtH8x8HBgUmTJvHPP/9QsmRJLly4QLNmzXj77beJs+BsysKykvUG09Imrzcs9fRLm6RHKYiNNZbU5U4e3LYQSZasVFxyHC7jXXAZ72K23MnDdUKIvOGN+wNk1x27ytkbMRaOxtxzzz3H4cOHef311wH4+uuvqVq1Knv27LFwZMISVoZeITIqgSKu9nSo6pu1B4+LAxcXY0ld7uTBbQuRZEkIIaxAGS9XmlfwRKn/bse2Ji4uLnz33XesWbMGHx8fTp48Sb169fjoo49kUd58xGBQfHt/Esq+z5XA3ibvLW2SHkmWhBDCSrzRqBQAvx+4zPXoBAtHk75WrVoRHh7OK6+8gsFg4LPPPqN27dqEh4dbOjSRAzYev8bp6zG4OtjQrXZxS4eTYyRZEkIIK1EjoCA1/AuQpDcwZ0eEpcPJUMGCBfn5559ZvHgxBQsWJDQ0lOrVqzN58mRZlDcPU0ox8/6Yuh51/XF1sLVwRDlHkiUhhLAir9/vXVq0+3yOLrD7NDp37kx4eDht2rQhKSmJESNG0KhRI86csZ5B6iLrpN6taW+jpVe9EpYOJ0dJsiSEEFakWXlPyni6cC8xhUW7c3aB3afh4+PDn3/+yY8//oiLiws7duwgODiY7777Tu7azWNSxyp1ruFHEde8uWBuRiRZEkIIK6LVakxjl2ZvP0tCsvVf1tJoNPTt25cjR47QqFEjYmNjGThwIK1bt+by5cuWDk9kgfDLUfxz8gY6rYYBDfP20ibpkWTJSum0OjoFdqJTYCd0Wl2GdUKIvKd9FV+KFXDkZkwSv+2/aOlwMq1EiRL8/ffffPnll9jb27N27VoqVarEzz//LL1MuVxqr1K7yj74FXTKvhPpdNCpk7HodGm3LUSWO8kCmZku3WAwyO21QohM+yP0Ml9vOoWnqwML+tbCVvfo/23t7OzQaq3n/9/jx4/To0cP9u/fD0CnTp349ttvKVy4sIUjE0/q3M1Ymn2xBYOCtUMbUN477yzrldnlTiRZygKPe7GTkpI4d+4cBoPBAtEJIXIjpRRXoxPRGxQFnW1xsnv0IqJarZYSJUpgZ2eXQxE+XnJyMp9//jn/+9//SElJwcvLix9//JG2bdtaOjTxBEYtO8Ivey/SrLwns3vVtHQ4WUqSpRz0qBdbKcWFCxdITk7G19fXqv7zE0JYt9uxidy4l4idTkdAYSc0mvSXlTAYDFy5cgVbW1uKFy+eYTtLOXDgAD169ODYsWMA9OnTh6lTp8rC47lAZFQ8DSdtJlmvWPpGXWoEFLR0SFkqs8nSo/9VEc8sJSWFuLg4fH19cXLK/HVevUHPoauHAKjqXRWdVpdunRAi7/Kys+dOYjTJBkWS0uHumHGvUZEiRbhy5QopKSnY2lrX/DfVq1fnwIEDfPTRR3z55ZfMmTOHTZs2MW/ePBo3bmzp8MQjfL/1LMl6RZ2SBXMmUYqNNS5tAhBzf9mfB7ednbM/hnRIN0c2S52gzZq6xoUQuYNOq6GQi/EW7ev3Eh85SDr1b4y1Tgrp4ODAlClT2LJlCyVKlOD8+fM0adKEd955h/j4eEuHJ9Jx414iv+w1Tl8xuEkZC0djWZIs5RBr6xYXQuQOhZ3t0Go0xCfriUlMybBdbvkb07BhQw4fPkz//v0BmDZtGtWqVWPfvn0Wjkw87MftZ0lMMVDFz4P6pQtZOhyLkmRJCCGsmI1OS0FnY6/R9ehH9y7lFq6ursyaNYvVq1fj7e3Nv//+S926dRk9ejTJydY9a3l+cSc2iZ92nQdgSNPSuSYZzy6SLAmr1rhxY4YOHWrpMLJMQEAA06ZNM21rNBpWrFjxyH169epFx44dszUuYd2KuNqj0WiITUohNtE6L7M9jdatWxMeHk6XLl3Q6/WMGzeOOnXqmAaCC8uZuzOC2CQ9FXzcaFre09LhWJwkSyJXeTjZyO0iIyNp1aoVABEREWg0GkJDQ83afPXVV8ybNy/ngxNWw1anpaDT/d6lewkWjiZrFSpUiF9//ZVffvmFAgUKcPDgQapVq8YXX3xhteOv8rrohGTm7TgHSK9SKkmWhLAgb29v7O0fvcaSu7s7Hh4eOROQsFqpvUsxiSnEPmLsUm7VtWtXwsPDadWqFYmJibz33ns0bdqUc+fOWTq0fGfhrvNEJ6RQ2tOFlhW9LR2OVcg1ydLt27fp1q0bbm5ueHh40LdvX2JSbyvMQOPGjdFoNGbljTfeMGtz4cIF2rRpg5OTE56engwfPpyUFMv/IdJoNLjbu+Nu727K6tOryy6NGzfmrbfeYsSIERQsWBBvb2/GjBlj1ubChQt06NABFxcX3Nzc6Ny5M9euXQPg5MmTaDQa/v33X7N9pk6dSqlSpUzbqX8cXVxc8PLyonv37ty8eTPDmM6fP88777xj+nnGxsbi5ubG0qVLzdquWLECZ2dn7t27l+6xDAYDkyZNonTp0tjb21O8eHE+++wz0+NhYWE0bdoUR0dHChUqxIABA8zeb6mXxqZMmYKPjw+FChVi0KBBZuMtrl+/Trt27XB0dKREiRIsWrQoTRwPXoYrUcK4infVqlXRaDSmW6ofvgyXmJjIW2+9haenJw4ODjz33HNmg2O3bNmCRqNh06ZN1KhRAycnJ+rVq8eJEydMbQ4fPkyTJk1wdXXFzc2N6tWrm2ZaFtbJzkZLASfjlADXovNW71IqX19fVq9ezaxZs3BxceGff/6hcuXK/PDDD3lirFZuEJeUwuztxgR1UJNSaLU53Kuk00Hr1saSutzJg9sWkmuSpW7dunH06FE2bNjAqlWr+OeffxgwYMBj9+vfvz+RkZGmMmnSJNNjer2eNm3akJSUxM6dO5k/fz7z5s3jk08+yc6nYhQbm3FJSECr0VKmUBnKFCqDNi4eYmPRxsVTxsGXMg6+pjoevuU2o2M+hfnz5+Ps7MyePXuYNGkS48aNY8OGDYAx2ejQoQO3b99m69atbNiwgbNnz9KlSxcAypYtS40aNdIkCIsWLeLVV18F4O7duzRt2pSqVauyf/9+1q5dy7Vr1+jcuXO68SxbtoxixYoxbtw408/T2dmZrl27MnfuXLO2c+fOpVOnTri6uqZ7rFGjRjFhwgQ+/vhjjh07xs8//4yXl9f9lzCWkJAQChQowL59+1iyZAkbN25k8ODBZsfYvHkzZ86cYfPmzab3zoOXy3r16sXFixfZvHkzS5cuZebMmVy/fj3D13vv3r0AbNy4kcjISJYtW5ZuuxEjRvD7778zf/58Dh48SOnSpQkJCeH27dtm7T788EO++OIL9u/fj42NDX369DE91q1bN4oVK8a+ffs4cOAAI0eOtLq5eURanq72aMi7vUtg/Aeif//+HDlyhIYNGxITE8OAAQNo27YtkZGRlg4vz1u0+wK3Y5MoXtCJdpV9cz4ABwdYvdpYHBzSbluKygWOHTumALVv3z5T3V9//aU0Go26fPlyhvs1atRIvf322xk+vmbNGqXVatXVq1dNdd9++61yc3NTiYmJmY4vKipKASoqKirNY/Hx8erYsWMqPj7e/AHIuLRubd7WySnjto0ambctXDj9dk+oUaNG6rnnnjOrq1mzpnr//feVUkqtX79e6XQ6deHCBdPjR48eVYDau3evUkqpqVOnqlKlSpkeP3HihALU8ePHlVJKffrpp6pFixZm57h48aIC1IkTJ0xxPPgz9Pf3V1OnTjXbZ8+ePUqn06krV64opZS6du2asrGxUVu2bEn3uUVHRyt7e3v1ww8/pPv4rFmzVIECBVRMTIypbvXq1WbvlZ49eyp/f3+VkpJiavPyyy+rLl26mD3X1NdCKaWOHz+uALP4AbV8+XKllFLnzp1TgDp06JBZPD179lQdOnRQSikVExOjbG1t1aJFi0yPJyUlKV9fXzVp0iSllFKbN29WgNq4caNZ/IDpfejq6qrmzZuX7vMX1u3irVh1+OIddfZGjFl9hn9rcjG9Xq+++OILZW9vrwBVsGBB9euvv1o6rDwrNjFZVRu3Xvm/v0ot3nvh8TvkAY/6/H5QruhZ2rVrFx4eHtSoUcNU17x5c7RaLXv27HnkvosWLaJw4cJUqlSJUaNGERcXZ3bcoKAgU48CQEhICNHR0Rw9ejTDYyYmJhIdHW1W8qLKlSubbfv4+Jh6Ro4fP46fnx9+fn6mxwMDA/Hw8OD48eOAcQxCREQEu3fvBow/i2rVqlG+fHnAeClo8+bNuLi4mErqY2fOnMl0nLVq1aJixYrMnz8fgJ9++gl/f38aNmyYbvvjx4+TmJhIs2bNMnw8ODgY5wdmiq1fvz4Gg8HsUlbFihXRPdAt/PDrY2NjQ/Xq1U2Ply9f/pnHHp05c4bk5GTq169vqrO1taVWrVqm1z3Vgz8/Hx8fAFN8w4YNo1+/fjRv3pwJEyY80estLKuIm7F36V5CMnFJebN3KZVWq2XYsGGmQd+3b9+ma9eudO3alVu3blk6vDznp93nuXW/V+mFakUtHY5VyRXJ0tWrV/H0NL910cbGhoIFC3L16tUM93v11Vf56aef2Lx5M6NGjWLhwoW89tprZsd9MFECTNuPOu748eNxd3c3lQcThkyLicm4/P47eoOeg5EHORh5EP3VSIiJQR8dRejp7YSe3o4+OsrY9q+/zI8bEZH+MZ/Cw5dlNBrNEy0G7O3tTdOmTfn5558B+Pnnn+nWrdsDL0EM7dq1IzQ01KycOnUqw0QnI/369TNdAps7dy69e/fOcFyXo6PjEx07I8/6+mS3B+NLfS1S4xszZgxHjx6lTZs2/P333wQGBrJ8+XKLxCmejL2NDo/7Y5euRydaOJqcERgYyO7du/nkk0/Q6XQsXryYSpUqsWbNGkuHlmfEJaXw/dazAAxuWhpbnYXSg9hY45Imzs7/DSN5cNtCLJosjRw5Ms0A7IfLwwOEn8SAAQMICQkhKCiIbt26sWDBApYvX/7M/0WPGjWKqKgoU7l48eKTHyT1h59euX9d1qAMGJTB7LEUR3tSHO3/q3v4gz+jY2axChUqcPHiRbPnfuzYMe7evUtgYKCprlu3bixevJhdu3Zx9uxZunbtanqsWrVqHD16lICAAEqXLm1WnDOI2c7OLt3biV977TXOnz/P119/zbFjx+jZs2eGsZcpUwZHR0c2bdqU4XM7fPgwsQ/8Yu7YsQOtVku5cuUyflEeUL58eVJSUjhw4ICp7sSJE9y9ezfDfTKzXEWpUqWws7Njx44dprrk5GT27dtn9rpnRtmyZXnnnXdYv349L774YppxX8J6GccuGW/xzuu9S6lsbW0ZO3Ysu3btonz58ly9epU2bdowYMCADG/kEJm3cJexV8m/kBMvVrVwr1JcnLFktG0BFk2W3n33XY4fP/7IUrJkSby9vdMMjE1JSeH27dt4e2f+tsbatWsDcPr0acDY85F691aq1O1HHdfe3h43Nzezkt80b97clIQePHiQvXv30qNHDxo1amR2ufTFF1/k3r17DBw4kCZNmuDr+9+AwUGDBnH79m1eeeUV9u3bx5kzZ1i3bh29e/fOMGEICAjgn3/+4fLly2Z3zRUoUIAXX3yR4cOH06JFC4oVK5Zh7A4ODrz//vuMGDGCBQsWcObMGXbv3s3s2bMBY4Ln4OBAz549CQ8PZ/PmzQwZMoTu3bun6YnMSLly5WjZsiWvv/46e/bs4cCBA/Tr1++RvVqenp44OjqaBrpHRUWlaePs7MzAgQMZPnw4a9eu5dixY/Tv35+4uDj69u2bqdji4+MZPHgwW7Zs4fz58+zYsYN9+/ZRoUKFTO0vLM/eVoeH03+zeucnNWvW5ODBg6bJan/44QeCg4PZtm2bZQPLxWITU/j+n/u9Sk1KY2OpXiUrZtFXpEiRIpQvX/6Rxc7Ojrp163L37l2z/9L//vtvDAaDKQHKjNTJ/lLHb9StW5ewsDCzRGzDhg24ubk98X/p+Y1Go+GPP/6gQIECNGzYkObNm1OyZEkWL15s1s7V1ZV27dpx+PBhs0twYLxNeMeOHej1elq0aEFQUBBDhw7Fw8MDrTb9t+a4ceOIiIigVKlSFClSxOyxvn37kpSUZHbXV0Y+/vhj3n33XT755BMqVKhAly5dTO8DJycn1q1bx+3bt6lZsyadOnWiWbNmTJ8+/UleIubOnYuvry+NGjXixRdfZMCAAWkuJz/IxsaGr7/+mu+//x5fX186dOiQbrsJEybw0ksv0b17d6pVq8bp06dZt24dBQoUyFRcOp2OW7du0aNHD8qWLUvnzp1p1aoVY8eOfaLnJywr9c646IRk4vLonXEZcXR0ZOrUqWzevBl/f3/OnTtHo0aNeO+990hIyJvTKmSnhbvPc/t+r9ILlu5VslY5NOD8mbVs2VJVrVpV7dmzR23fvl2VKVNGvfLKK6bHL126pMqVK6f27NmjlFLq9OnTaty4cWr//v3q3Llz6o8//lAlS5ZUDRs2NO2TkpKiKlWqpFq0aKFCQ0PV2rVrVZEiRdSoUaOeKLanuhvuMVL0KWrf5X1q3+V9KkWfkmGd+M+CBQtUoUKFnuhORiFyswv374w7c/1enrwbLjOioqJUnz59FKAAFRgYqPbv32/psHKNmIRkVfX+HXBL9l+0dDhKxcT8dxd3TEza7SyWp+6GA+OdVOXLl6dZs2a0bt2a5557jlmzZpkeT05O5sSJE6a73ezs7Ni4cSMtWrSgfPnyvPvuu7z00kv8+eefpn10Oh2rVq1Cp9NRt25dXnvtNXr06MG4ceNy/PmJpxcXF8eZM2eYMGECr7/+umnsjxB5nZfbf/Mu5ZexSw9zc3Nj9uzZ/Pnnn3h5eXHs2DHq1KnDuHHjZFHeTFiwy9irFFDIiY5VLDCvUi6hUUqmRX1W0dHRuLu7ExUVlWb8UkJCAufOnaNEiRI4PMGEWnqDnkNXDwFQ1bsqOq0u3TphvLPrs88+o2HDhvzxxx+4uLhYOiQhcsylO3Hcjk3CQatHH3X9if/W5CU3b97kzTffZMmSJQDUqFGDBQsWyHi8DNxLSKbhpM3ciUvmi5eDeal6xmM9c0xsLKT+DU+9k/vB7Sy+YelRn98PyjU9S/mNBg2udq642rmiQZNhnTAmS8nJyWzatEkSJZHveLo6oNFoiE/Sk5icvxeeLVy4MIsXL+bnn3+mQIEC7N+/n6pVqzJ16lSrmtbDWszefo47ccmULOJMB2vpVdJqoVEjY9Fq025biPQsZYHs6FkSQojMunI3nht37xF1/Qo1g8pl2VxiudmVK1fo27cva9euBYxrS86dO5eAgADLBmYlbscm0XDSZmISU5jxajXaVPaxdEgWIT1LQgiRTxRxtUej0ZCYYmBvxO3H75AP+Pr6smbNGr777jucnZ3ZsmULlStXZs6cObIoL/Dd1jPEJKZQ0deNVpUyPwVPfiXJkhBC5HK2Oi0ejsZZveftiJBk4D6NRsPrr7/O4cOHqV+/Pvfu3aNv3760b9/+kas05HVXoxKYvzMCgPdalEOrlWEdjyPJkpXSG/SEXg0l9GooeoM+wzohhAAo6GyHVgMnr91jTVj+TQTSU6pUKbZu3cqkSZOws7Nj1apVVKpUiaVLl1o6NIv45u9TJKYYqOFfgMblijx+h5wUGwtFihhL6nInD25biCRLVizFkEKKIeWxdUIIYaPT4mJvA8CU9SdI1suA5gfpdDqGDx/O/v37qVKlCrdu3eLll1+mW7du3Llzx9Lh5ZgLt+JYvM+4TNXwkHIZrqFpUTdvGktG2xYgyZIQQuQRLg42eDjacu5mLEv2X7J0OFYpKCiIPXv28NFHH6HT6fj555+pVKmSaSB4Xjdt40lSDIqGZYtQu2QhS4eTa0iyJNKllGLAgAEULFgQjUZjWirmUSIiIp6p7Y4dOwgKCsLW1paOHTuyZcsWNBrNIxefzQq9evWiY8eO2XoOS3n4NZw3bx4eHh6P3U+j0bBixYpsjU1kPa1GQ7c6/oDxQzE+SS7Xp8fOzo5PP/2UnTt3Uq5cOa5cuUKrVq0YOHAgMalz++RBJ6/dY3noZQDea1HWwtHkLpIsiXStXbuWefPmsWrVKiIjI6lUqVKWHt/Pzy/NcYcNG0aVKlU4d+4c8+bNo169ekRGRuLu7p4l58womfvqq6+YN29elpzD2nXp0oWTJ0+atseMGUOVKlXStIuMjKRVq1Y5GJnIKm0r+1CsgCPX7yUyd+c5S4dj1WrVqsXBgwd5++23Afjuu+8IDg5m+/btFo4se0xa+y9KQUhFLyoX87B0OLmKJEsiXWfOnMHHx4d69erh7e2NjY1Nlh5fp9OlOe6ZM2do2rQpxYoVw8PDAzs7O7y9vbP9mrq7u3umelvyAkdHx0cu5pvK29sbe3v7HIhIZDU7Gx3v3u81+HbLGe7GJVk4Iuvm5OTEtGnT2LRpE8WLF+fs2bM0bNiQESNG5KlFeXefvcXG49fRaTUMDylv6XByHUmWRBq9evViyJAhXLhwAY1GY5rEbe3atTz33HN4eHhQqFAh2rZty5kzZzI8zp07d+jWrRtFihTB0dGRMmXKMHfuXMC8lyf1+1u3btGnTx80Gg3z5s1L9zLcjh07aNy4MU5OThQoUICQkBDT4MzHxVeiRAkAqlatikajoXHjxqbn++BluMTERN566y08PT1xcHDgueeeY9++fabHU+PatGkTNWrUwMnJiXr16nHixIlHvq6XLl3ilVdeoWDBgjg7O1OjRg327Nljevzbb7+lVKlS2NnZUa5cORYuXGi2v0aj4ccff+SFF17AycmJMmXKsHLlSrM2a9asoWzZsjg6OtKkSRMiIiLMHn/wMty8efMYO3Yshw8fRqPRmF731HM9eBkuLCyMpk2b4ujoSKFChRgwYIDZ5YrU13DKlCn4+PhQqFAhBg0aZLY218yZMylTpgwODg54eXnRqVOnR75e4um1Dy5KeW9X7iWk8O2WjH9HxX+aNm3KkSNH6N27N0opJk+eTI0aNTh06JClQ3tmBoNi/JrjAHSt6UdpT1np4ElJsmQhsUmxGZaElAQ0aHCydcLJ1om4pDhik2KJS4oz7Z9aF58cn6njPomvvvqKcePGUaxYMSIjI02JQmxsLMOGDWP//v1s2rQJrVbLCy+8kOEyAh9//DHHjh3jr7/+4vjx43z77bcULlw4TbvUS3Jubm5MmzaNyMhIunTpkqZdaGgozZo1IzAwkF27drF9+3batWuHXq/PVHx79+4FYOPGjURGRrJs2bJ04x4xYgS///478+fP5+DBg5QuXZqQkBBu3zaf7O/DDz/kiy++YP/+/djY2NCnT58MX9OYmBgaNWrE5cuXWblyJYcPH2bEiBGm2JYvX87bb7/Nu+++S3h4OK+//jq9e/dm8+bNZscZO3YsnTt35siRI7Ru3Zpu3bqZ4rp48SIvvvgi7dq1IzQ0lH79+jFy5MgMY+rSpQvvvvsuFStWJDIyMsPXPTY2lpCQEAoUKMC+fftYsmQJGzduZPDgwWbtNm/ezJkzZ/h/e/cdFsXVNnD4t4XeURFQRAyKKEUUNYpdEktiJJpojLHF+Mbea2zERDFqYhc1r4X4WmLsYu8a7CgIgg1BjcGuICB15/uDsJ8rRURgF3Pu65pLZubMzLOzuPtwzplzjhw5QlBQEKtXr1YnX+fPn2fo0KFMmzaNq1evsnfvXpo1a5ZvbMLbUchljG3rAsDqk3HEJ7x4zRECZNcyr1y5ku3bt2NjY8Ply5dp0KABP/74I5mZZfcp5F0R8YT/lYCxvoLhvjreV0kuB2/v7CVnupOX17VFEt5aQkKCBEgJCQm59r148UKKioqSXrx4obEdf/Jd2q9tr1HWeLpxvmWbr2quUbb8rPJ5lntTc+fOlRwdHQss8/DhQwmQIiIiJEmSpNjYWAmQLl68KEmSJHXo0EHq06dPnse+WlaSJMnCwkJatWqVev3IkSMSID19+lSSJEnq1q2b5OPjU+jX8Lr4cvTq1Uvq2LGjJEmSlJSUJOnp6Ulr165V709PT5fs7e2lWbNmacR18OBBdZldu3ZJQK73OceyZcskMzMz6fHjx3nub9y4sdSvXz+NbZ9//rnUvv3//y4A0qRJk9TrSUlJEiDt2bNHkiRJmjBhglSrVi2Nc4wbN07jHq5atUqysLBQ7586dark6emZKx5A2rp1qyRJkrR8+XLJyspKSkpK0ni9crlcunfvniRJ2ffQ0dFRyszM1Ii/a9eukiRJ0ubNmyVzc3MpMTExz9cvvL1XP2tUKpX0eeBJyXFcsDRqY5iWoyt7Hjx4IHXq1EkCJEBq0KCBdOXKFW2H9cZSMzKlJj8dkhzHBUvzDlzTdjg6p6Dv75eJmiWh0K5fv063bt2oVq0a5ubm6ua527dv51l+wIABbNiwgTp16jB27FhOnjz5VtfPqVkqrvjyEhMTQ0ZGBj4+Puptenp6NGjQgOjoaI2yHh4e6p/t7LLnVXrw4EG+sXt5eWFtbZ3n/ujoaI1rAvj4+BR4TRMTE8zNzdXXjI6OpmHDhhrlGzVqlOf13kR0dDSenp6YvDTbt4+PDyqVSqPpsXbt2igUCvW6nZ2dOrYPPvgAR0dHqlWrRo8ePVi7di0pKf9fUyoUP5lMxoT22X1TNl/4i8i7CVqOqGypUKECmzZtYs2aNVhYWHD27Fm8vLxYsGBBmZqUd+3p29x58oIKZgZ809RJ2+GUWcXba1cotKQJ+T+eqpArNNYfjM77CxhALtPMd+OGxb1VXAXp0KEDjo6O/Prrr9jb26NSqXBzcyM9Pe8OpO3atePWrVvs3r2bAwcO0Lp1awYNGsScOXOKdP3XTQ76pvG9LT09PfXPOZ3Q8/sQLa6JTV++Zs51deWDu6DYzMzMuHDhAkePHmX//v1MmTIFf39/zp0796/pXK8NXlWs+MTTnh3hfzN9VzTr+jXUzUEIdZRMJuOrr76iRYsWfP311xw4cIBhw4axfft2Vq1aRZUqVbQdYoESXmSw4PB1AEZ+UAMTA/GVX1SiZklLTPRN8l0MlYZkqbK4dP8Sl+5fwlBpqN4e8zSGmKcx6m1GekaFOu/bevz4MVevXmXSpEm0bt0aV1fXQo16W6FCBXr16sX//vc/5s2bx/Lly4scg4eHB4cOHSpyfPr6+gDqPk55yelgHRISot6WkZHBuXPnqFWr1lvFHhYWlqvfUw5XV1eNa0J2Z/Y3uaarq6u6X1aO06dPF3iMvr5+gfcj57zh4eEkvzTVQEhICHK5HBcXl0LHp1Qq8fX1ZdasWVy6dIm4uDgOHz5c6OOFohnb1gV9pZxT/zwNJby5ypUrs2/fPpYsWYKxsTGHDx/G3d2d1atX6/Q8fNlPQ2bgbGPK5/UqazucwklJgapVs5eUlNzrWiKSJR2WnpVOelb6a7eVBisrK8qVK8fy5cu5ceMGhw8fZuTIkQUeM2XKFLZv386NGze4fPkywcHBuLq6FjmGCRMmcO7cOQYOHMilS5e4cuUKgYGBPHr0qFDx2djYYGRkxN69e7l//z4JCbmbJUxMTBgwYABjxoxh7969REVF0a9fP1JSUujbt2+RY+/WrRu2trb4+fkREhLCzZs32bx5M6dOnQJgzJgxrF69msDAQK5fv84vv/zCli1bGD16dKGv0b9/f65fv86YMWO4evUq69ate+34UVWrViU2NpawsDAePXpEWlparjLdu3fH0NCQXr16ERkZyZEjRxgyZAg9evSgYsWKhYotODiYBQsWEBYWxq1bt/jtt99QqVRvlGwJRVPZyphvmmQ3v8zYHU16pm7URJY1MpmMAQMGEB4eTuPGjUlMTKRPnz74+flx//59bYeXy50nKawMyR5na3zbmigVZeTrXpLg1q3sRZJyr2tJGbl7grbJ5XI2bNhAaGgobm5ujBgxgtmzZxd4jL6+PhMmTMDDw4NmzZqhUCjYsGFDkWOoUaMG+/fvJzw8nAYNGtCoUSO2b9+OUqksVHxKpZIFCxawbNky7O3t6dixY57XmTlzJp07d6ZHjx7UrVuXGzdusG/fPqysrIocu76+Pvv378fGxob27dvj7u7OzJkz1X18/Pz8mD9/PnPmzKF27dosW7aMVatWqYc3KIwqVaqwefNmtm3bhqenJ0uXLmXGjBkFHtO5c2fatm1Ly5YtqVChAuvXr89VxtjYmH379vHkyRPq16/PZ599RuvWrVm0aFGhY7O0tGTLli20atUKV1dXli5dyvr166ldu3ahzyEU3YAW71HeVJ/YR8msPXNL2+GUac7Ozhw/fpyZM2eir6/Pjh07cHNzY/PmzdoOTcPMPVdIz1TxfjVrWru+fmw1oWAySZfrEMuIxMRELCwsSEhIwNzcXGNfamoqsbGxODk5YWhoWOhzZqmyuHgve3wPL1svFHJFntsEQRDg9Z81687c5rutEVgY6XFsTAssjfW1EOW7JSIigh49ehAeHg5k18IuXLjwrf6wKg6nbz7mi+Wnkctg19CmuNqZv/4gXZGcDKb/jAOVM5bby+smb9+t5GUFfX+/TNQsCYIg/At08a6MS0UzEl5ksPDwDW2H805wd3fn7NmzfPfdd8jlctauXYu7uzv79+/XWkxZKonvd0YB8GXDKmUrUdJhIlkSBEH4F1Aq5Ez8KLvP4G+n4rjx4N2dMLY06evrM336dEJCQqhevTp3796lTZs2DBw4UOOhiNLy+7k7RMcnYm6oZOQHok9gcRHJkiAIwr9EsxoVaFXThowsie93XtbpJ7nKmvfff5+wsDD1yPaBgYF4enrmesq1JCW8yGDO/uyxz0Z8UANrE9HUWlxEsqTDDJWGGCoNX7tNEAShsKZ8XAt9hZwT1x+x77LuPcVVlhkbG7Nw4UIOHDhA5cqViYmJoVmzZowfPz7PJ02L28JD13mSnI6zjSlfve9Y4tcrETIZ1KqVvchkude1RCRLOkohV+Bm44abjZu6I3de2wRBEN5E1fImfNu8GgA/BEfxIr3gcbaEN+fr60tERAQ9e/ZEpVLx008/Ub9+fXVH8JIQ8zCJ1SfjAJj8cS30yspQAa8yNobLl7MXY+Pc61pSRu+mIAiCUFQDWzhTydKIu89eEHhUdPYuCZaWlgQFBbF161YqVKhAREQE9evXZ8aMGcU+Ka8kSfjvuEymSqJ1TRua16hQrOcXRLIkCILwr2Okr2DSP529lx6/ya3Hpd8R+d/Cz8+PyMhIPv30UzIyMpg4cSJNmzbl2rVrxXaN4EvxnLj+CH2lnMkfF32mASF/IlnSUVmqLCIfRBL5IJIsVVa+2wRBEIqirZstTauXJz1TxbR/HjUXSoaNjQ2bN28mKCgIc3NzTp8+TZ06dVi0aNFbz+34PDWDH4Kz379BLZypWr54xyEqdSkpULt29pIz3cnL61oikiUdlpqZSmpm6mu3CYIgvCmZTMbUDrXRU8g4dOUBh6JFZ++SJJPJ6NmzJ5GRkfj6+vLixQuGDBnChx9+yJ07d4p83p/3X+PB8zScypvQv0W1YoxYSyQJoqKyl5zpTl5e1xKRLAnvHH9/f+rUqaPtMABo0aIFw4cP13YYgpAnZxtTvv5n3rgp2y+Tkl68fWmE3BwcHNi3bx+LFi3CyMiIQ4cO4ebmRlBQ0BsP5RB5N4HfTsUB8ENHNwyU4sGfkiKSJSFf9+7dY9iwYTg7O2NoaEjFihXx8fEhMDCQFC1Wh74Nf39/ZDJZgUtRHD16FJlMxrNnz4o3YEEoYUNbVVd39v5lf/H1oxHyJ5fLGTRoEGFhYbz//vskJibSu3dvOnXqxIMHDwp1jiyVxMStEagk6OBpT5Pq5Us46n+3MpMsPXnyhO7du2Nubo6lpSV9+/YlKSn/EWjj4uLy/TL8448/1OXy2v82k72+K27evImXlxf79+9nxowZXLx4kVOnTjF27FiCg4M5ePBgvsdmZGSUYqRvZvTo0cTHx6uXypUrM23aNI1tL0tPT9dSpIJQOkwMlPz4qRsAK0NiufTXM+0G9C9So0YNTpw4wYwZM9DT02Pbtm24ubmxdevW1x677uxtwv9KwMxAyeR/OusLJafMJEvdu3fn8uXLHDhwgODgYI4fP85//vOffMs7ODhofAHGx8fz/fffY2pqSrt27TTKrlq1SqOcn59fib0OSZJISc8s1JKaIZGaIb12W2GXN6niHThwIEqlkvPnz9OlSxdcXV2pVq0aHTt2ZNeuXXTo0EFdViaTERgYyCeffIKJiQnTp08Hskewfe+999DX18fFxYU1a9aoj8lJZsPCwtTbnj17hkwm4+jRo8D/19YcOnQIb29vjI2Nady4MVevXtWIdebMmVSsWBEzMzP69u1Lamr+fbpMTU2xtbVVLwqFAjMzM/X6F198weDBgxk+fDjly5enTZs2r401Li6Oli1bAmBlZYVMJqN3797qsiqVirFjx2JtbY2trS3+/v6Ffh8EoTS0dLHhE097VBKM3xxBZtbbdToWCk+pVDJhwgTOnTuHu7s7Dx8+pFOnTvTs2TPfmuoHianM3nsFgFEf1sDGXAxUXNKU2g6gMKKjo9m7dy/nzp3D29sbgIULF9K+fXvmzJmDvb19rmMUCgW2trYa27Zu3UqXLl0wzZnB+B+Wlpa5ypaUFxlZ1Jqy7w2PyqsWJ/+anfxETWuDsf7r3/LHjx+ra5RM8pnh+dXmKn9/f2bOnMm8efNQKpVs3bqVYcOGMW/ePHx9fQkODqZPnz5UrlxZnVgU1sSJE/n555+pUKEC/fv35+uvv1ZPIbBx40b8/f1ZvHgxTZo0Yc2aNSxYsIBq1Yre0TEoKIgBAwYUepoCBwcHNm/eTOfOnbl69Srm5uYYGRlpnG/kyJGcOXOGU6dO0bt3b3x8fPjggw+KHKMgFLcpHWpx7NpDouITWfFnLN82f0/bIf2reHp6cu7cOfz9/Zk1axZr1qzhyJEjrFq1Cl9fX3U5SZKYtC2SxNRM3CtZ0KNRVe0F/S9SJmqWTp06haWlpTpRguwRUuVyOWfOnCnUOUJDQwkLC6Nv37659g0aNIjy5cvToEEDVq5c+a+fL+nGjRtIkoSLi+YkjOXLl8fU1BRTU1PGjRunse/LL7+kT58+VKtWjSpVqjBnzhx69+7NwIEDqVGjBiNHjqRTp07MmTPnjeOZPn06zZs3p1atWowfP56TJ0+qa4/mzZtH37596du3Ly4uLvz444/UqvV244xUr16dWbNm4eLikuse5EWhUGBtbQ1kPyJsa2uLhYWFer+HhwdTp06levXq9OzZE29vbw4dOvRWMQpCcStvaqCeaHfuwWvcflw2+yWWZQYGBgQEBPDnn3/i7OzMX3/9xQcffMCQIUPU/USDL8WzP+o+egoZsz7zQCHX3hQgJUImA0fH7CVnupOX17WkTNQs3bt3DxsbG41tSqUSa2tr7t27V6hzrFixAldXVxo3bqyxfdq0abRq1QpjY2P279/PwIEDSUpKYujQofmeKy0tTWOen8TExEK/FiM9BVHT2hS6fHEy0nu7JyXOnj2LSqWie/fuueY5ejmRhezawFebSX18fJg/f/4bX9fDw0P9s52dHQAPHjygSpUqREdH079/f43yjRo14siRI298nRz16tUr8rF5eTl+yH4Nhe3EKQil6fN6ldl64S6nbj5m4rYIfvu6QZEfehCKrlGjRoSFhTF27FiWLFnCokWL2LdvHwuX/pepIdmfvYNaOuNqZ67lSEuAsTHExWlue3VdC7RaszR+/PjXPpl05cqVt77OixcvWLduXZ61SpMnT8bHxwcvLy/GjRvH2LFjmT17doHnCwgIwMLCQr04ODgUOhaZTIaxvlIrS2E/9JydnZHJZLn6BlWrVg1nZ2eNJqYc+TXX5Ucuz/7Ve7kWL7+O4Xp6euqfc17D2w7kVpBXX8ubxJqXl+OH7NdQkvELQlHJZDJmdHJHX5k90e7G80Uf/0d4OyYmJixevJh9+/ZRqVIlrl+/TjvflsTs/pUa5Q0Z2MJZ2yH+q2g1WRo1ahTR0dEFLtWqVcPW1jbXX+KZmZk8efKkUH2NNm3aREpKCj179nxt2YYNG/LXX38VOEP0hAkTSEhIUC9vM6CYLipXrhwffPABixYtIjm5aNMguLq65urzExISom4iq1Ahe+6il58+e7kD9Ztc59Wm2NOnT7/xeQpSmFj19fUByMoSI6sLZZtTeRNGfVADgGk7o7jzRDTHlRhVFsSegIhN2f/mMTPDhx9+SEREBK0+7owkqUg8/Qe3Vw3nSlSkFgL+99JqM1yFChXUX0QFadSoEc+ePSM0NFTdRHL48GFUKhUNGzZ87fErVqzgk08+KdS1wsLCsLKywsDAIN8yBgYGBe4vDiqViiuPs2vVapariVwuz3NbSVmyZAk+Pj54e3vj7++Ph4cHcrmcc+fOceXKldc2VY0ZM4YuXbrg5eWFr68vO3fuZMuWLeohB4yMjHj//feZOXMmTk5OPHjwgEmTJr1xnMOGDaN37954e3vj4+PD2rVruXz58lt18H5VYWJ1dHREJpMRHBxM+/btMTIyyvUggSCUFd80rcbB6Puci3vK6D/CWd/vfeTvWt8YbYvaAXvHQeLf/7/N3B7a/gS1PtEoKjMwIaFhfyooXUg5HMjVqEi8vb2ZNm0aY8aMQaF4hwajfPECmjXL/vn48ex/X17Po2WjNJSJDt6urq60bduWfv36cfbsWUJCQhg8eDBffPGF+km4u3fvUrNmTc6ePatx7I0bNzh+/DjffPNNrvPu3LmT//73v0RGRnLjxg0CAwOZMWMGQ4YMKZXXVRAJiZSMFFIyUpCQ8t1WUt577z0uXryIr68vEyZMwNPTE29vbxYuXMjo0aP54YcfCjzez8+P+fPnM2fOHGrXrs2yZctYtWoVLVq0UJdZuXIlmZmZ1KtXj+HDh/Pjjz++cZxdu3Zl8uTJjB07lnr16nHr1i0GDBjwxud5ndfFWqlSJb7//nvGjx9PxYoVGTx4cLHHIAilRSGXMedzT4z1FZyJfcKqk3HaDundErUDNvbUTJQAEuOzt0ft0Njsv+Myj5LS8Gj6IZcvR9KxY0cyMjKYMGECTZs25fr166UYfAlTqeD8+exFpcq9riUyqYw8+vXkyRMGDx7Mzp07kcvldO7cmQULFqj/eo+Li8PJyYkjR45ofCF/9913/O9//yMuLi5XTczevXuZMGGC+ukvZ2dnBgwYQL9+/d6o1iYxMRELCwsSEhIwN9fscJeamkpsbCxOTk4YGhZ+LIwsVRYX710EwMvWC4Vckec2QRAEKPpnTUH+d/oWk7ZFYqCUs2toU5xtRG3pW1NlwTy33ImSmiy7hml4BMgVbA+7y7ANYSjkMv7o34i6VayQJImgoCCGDRtGYmIixsbGzJ49mwEDBpT9DvnJyZBTK58z8PTL62/YP/Z1Cvr+flmZSZZ0mUiWBEHQtpJIliRJoufKs5y4/ghPB0s292+EUlEmGiR0V+wJCPr49eV6BXPHoh7t55/geVomw32rM9y3hkaR27dv06dPHw4fPgzABx98wMqVK6lcuXJJRF46dDRZEr/1giAIQp5ksuyxfMwMlYTfecaSozHaDqnsS7pfqGKq5/cYuTGM52mZ1K1iyeCWuZ9+q1KlCgcOHGDBggUYGhpy4MAB3Nzc+N///vevHy+wuIlkSRAEQciXnYURP3TMnjtu3sFrnI19ouWIyjjTioUqtv1GJufinmJqoGReV698a/TkcjlDhgwhLCyMBg0akJCQQI8ePfjss894+PBhcUb+ryaSJUEQBKFAHevY08mrEioJhq6/yJNkMcF0kTk2zu6TRH59i2Skm9gx9rwZANM61qZKOePXntbFxYWQkBB+/PFHlEolW7Zswc3NjR07drz2WOH1RLKkw5RyJUq58rXbBEEQSpJMJuMHPzeqlTfhXmIqo/8IF808RSVXZA8PAOROmGRIwLTMnmSoZHTwtOdTr0qFPrVSqWTixImcPXsWNzc3Hjx4QMeOHenTpw8JCQnF9QpKXvny2Ut+61ogkiUdpZArqGNbhzq2ddQdufPaJgiCUBpMDJQs+rIu+ko5h688YMWfsdoOqeyq9Ql0+Q3M7TQ2S+b2LLedyv8SPLG3MORHP7ciPd3m5eXF+fPnGTNmDDKZjNWrV+Ph4aHuCK7TTEzg4cPsxcQk97qWiGRJEARBKJRa9uZM+Th7FP6Ze65w8fZTLUdUhtX6BIZHQq9g6LwCegWzot52AuJqoKeQsah7XSyM9F5/nnwYGBgwa9Ysjh8/TrVq1bh9+zatW7dm2LBh6kl5hcITyZIgCIJQaN0bVuEjdzsyVRKD113kWYrov1RkcgU4NQX3zzgj1SJgX/bgkpM/rkXdKlbFcokmTZoQHh6unnB8wYIFeHl55ZomSiiYSJZ0lEql4uqjq1x9dFU96Wpe23SJTCZj27ZtBZbp3bs3fn5+hT5nXFwcMpmsSPPGCYJQ/GQyGQGd3alibczdZy8Ysv4imVm693lUltxPTGXQuotkqST86tjT433HYj2/qakpgYGB7NmzB3t7e65du0bjxo2ZNGkS6ek6luy+eAEtWmQvL17kXtcSkSzpKAmJ5+nPeZ7+PHtqE1UWUtwJ9KK2Q9wJJFVmiV7/TZMayJ5otl27dkD+Sc78+fNZvXp18QT5jxYtWiCTyZDJZBgYGFCpUiU6dOjAli1b3vhc/v7+1KlTp1jjE4R3jbmhHku/qoeRnoIT1x8RsOeKtkMqszKyVAxae4FHSWm4VDRjRif3EhuFu23btkRGRvLll1+iUqmYPn06DRs2JCIiokSuVyQqFRw7lr3kTHfy8rqWiGSpLIjeCfPcUPz2CdUOT8cleBTyBZ655g/SNltb29dOMGxhYYGlpWWxX7tfv37Ex8cTExPD5s2bqVWrFl988QX/+c9/iv1agiBk91/6uYsnACv+jGVT6F9ajqhsmr4rmvO3nmJmoGRpj3oY65fs085WVlasXbuWP/74g3LlyhEWFoa3tzezZs0iKyurRK9dlolkScdZxp5A/kfvQk+4WFJatGjB0KFDGTt2LNbW1tja2uLv769R5uVmOCcnJyD7qQyZTKaer+/VGqu9e/fSpEkTLC0tKVeuHB9//DExMW8+SrCxsTG2trZUrlyZ999/n59++olly5bx66+/cvDgQXW5cePGUaNGDYyNjalWrRqTJ08mIyMDgNWrV/P9998THh6urqnKqQX75ZdfcHd3x8TEBAcHBwYOHEhSzlD8gvAv1d7djqGtskeW/m5LBBdEh+83EnQyjtX/TFI8p4snTuVL72mvzz77jMjISDp06EB6ejrjxo2jefPmRfr8/TcQyZIuU2VR5eRiIPd4JrKcbXvHZ0/MWAqCgoIwMTHhzJkzzJo1i2nTpnHgwIE8y549exaAgwcPEh8fn2+TWHJyMiNHjuT8+fMcOnQIuVzOp59+Wix9snr16oWVlZXGtc3MzFi9ejVRUVHMnz+fX3/9lblz5wLQtWtXRo0aRe3atYmPjyc+Pp6uXbsC2aPkLliwgMuXLxMUFMThw4cZO3bsW8coCGXdcN8afFirIulZKr5dE8q9hFRth1QmHL5yn+93XgZgTBsX2tS2LfUYbG1t2b59OytWrMDMzIyQkBA8PT1ZunSpGEfrFSJZ0mFm9yLQT36Y7zivIEHiXbh1slTi8fDwYOrUqVSvXp2ePXvi7e3NoUOH8ixboUIFAMqVK4etrS3W1tZ5luvcuTOdOnXC2dmZOnXqsHLlSiIiIoiKinrreOVyOTVq1CAuLk69bdKkSTRu3JiqVavSoUMHRo8ezcaNGwEwMjLC1NQUpVKJra0ttra2GBkZATB8+HBatmxJ1apVadWqFT/++KP6OEH4N5PLZcztWgeXimY8fJ5G36BzPE/N0HZYOi3ybgKD111EJUFXbwcGtnhPa7HIZDK+/vprLl26RPPmzUlOTmbAgAG0b9+eu3fvai0uXSOSJR2ml1LIOZgKOTHj2/Lw8NBYt7Oz48GDB291zuvXr9OtWzeqVauGubk5VatWBbJn0y4OkiRpdJb8/fff8fHxwdbWFlNTUyZNmlSoax08eJDWrVtTqVIlzMzM6NGjB48fPxbjlQgC2QNW/trTG2sTfS7/nci3a0JJyxT9X/ISn/CCvkHnSEnPwse5HD9+WrSBJ4tb1apVOXz4MHPnzsXQ0JC9e/fi5ubGunXrRC0TIlnSaZkmhRzevZATM74tPT3NAdJkMtlbN5d16NCBJ0+e8Ouvv3LmzBn12B/F8ThrVlYW169fV/efOnXqFN27d6d9+/YEBwdz8eJFJk6c+NprxcXF8fHHH+Ph4cHmzZsJDQ1l8eLFxRanILwLqpQzZnWf+pjoKzgZ85gRv4eRpRJfsi97nprB16vPcz8xjeo2pizpXg+9fCbI1Qa5XM7w4cO5cOEC3t7ePHv2jO7du9OlSxcePXpUeoEYG2cv+a1rge68S4IGhVxBDa9er51wEfNK2RMz6hh9fX2AAp+uePz4MVevXmXSpEm0bt0aV1dXnj4tvg6iQUFBPH36lM6dOwNw8uRJHB0dmThxIt7e3lSvXp1bt27livvVmENDQ1GpVPz888+8//771KhRg7//fqXDvSAIeFS2ZFkPb/QUMnZH3GPqjkhRK/GPlPRMvl59juj4RMqbGrCyd/23GqG7JLm6unLy5Em+//57lEolmzZtws3NjZ07d5b8xU1MIDk5e8mZ7uTldS0RyZIue82EiwC0nZldTsfY2NhgZGTE3r17uX//fp6TOFpZWVGuXDmWL1/OjRs3OHz4MCNHjizS9VJSUrh37x5//fUXp0+fZty4cfTv358BAwbQsmVLAKpXr87t27fZsGEDMTExLFiwgK1bt2qcp2rVqsTGxhIWFsajR49IS0vD2dmZjIwMFi5cyM2bN1mzZg1Lly4tUpyC8K5rUr08c7vWQSaD/52+zfxD19/sBKosiD0BEZuy/y2lB1hKUmpGFt8Enedc3FPMDJWs6l0fB2vt1pS8jp6eHlOmTOH06dPUqlWL+/fv88knn9C3b18SExO1HV6pE8mSrstnwkXM7bO31/pEO3G9hlKpZMGCBSxbtgx7e3s6duyYq4xcLmfDhg2Ehobi5ubGiBEjmD17dpGu9+uvv2JnZ8d7771Hp06diIqK4vfff2fJkiXqMp988gkjRoxg8ODB1KlTh5MnTzJ58mSN83Tu3Jm2bdvSsmVLKlSowPr16/H09OSXX37hp59+ws3NjbVr1xIQEFCkOAXh3+BjD3umfVIbgHkHr7P8eCEfR4/aAfPcIOhj2Nw3+995bjo3ptybSMvM4ts1oZyMeYyJvoKgrxvgXtlC22EVWr169QgNDWXUqFHIZDJWrlyJh4cHR48e1XZopUomiTrSt5aYmIiFhQUJCQmYm5tr7EtNTSU2NhYnJycMDQ0LfU6VpCLmSfYHzHvW7yGXJFS3Qrh/L5ws4/LYu32GXKGbVbiCIJS+on7WlKT5B68z9+A1AEZ+UIMhrZzz78wctSN77LhcQ6X8U16H/zjMT3qmioFrL3Aw+j5GetmJUgOnvJ8MLguOHz9O7969iY2NBbKfEp4xY4b6qeFikZoK/3SdYPPm7H9fXi/m3+2Cvr9fJmqWdJQkSSSkJZCQlpDd5i9XIDn6cNexEfcqVEeSibdOEATdNsy3OqM/rAHALweuMXvf1bz7MKmyYO848hpTDi2MKVccUjOyGLI+O1EyUMpZ0cu7TCdKAM2aNSM8PFw9M8K8efOoW7cu586dK76LZGXB7t3ZS1ZW7nUtEd+4giAIQokZ3Ko6kz5yBWDJ0Rh+CI7OnTDdOpl7lgINpTum3NtKeJFBr5Vn2Xf5PvoKOct61KOxcyGfbtZxZmZmLFu2jN27d2NnZ8eVK1do1KgRU6ZMUc+G8C4SyZIgCIJQor5pWo0fOmb3YVoZEst3WyPIyHpp2JHCjhVXSmPKFck/HdOfnVnH9EXLORf7CFMDJav71KeFi422oyt27dq1IzIyki+++IKsrCx++OEH3n//fS5fvqzt0EqESJYEQRCEEtejUVVmdfZAJoP1Z+/Qe9VZnqX8M05ZYceKK6Ux5d7YSx3TLfcMYFbyd5wyHMbuD5++MzVKebG2tmb9+vVs2LABa2trLly4QL169ZgzZ847NymvSJYEQRCEUtGlvgPLvqqHsb6CkBuP8Vscwo0HSdljxZXRMeVyOqZLrzQj2vCEKgf6l+kn+Qqra9euREZG0r59e9LS0hgzZgwtW7bk5s2b2g6t2IhkSRAEQSg1H9a2ZfOAxlSyNCLucQqfLgnh6PXHZXNMOVUW0t5xSEh5RF02O6YXlZ2dHcHBwSxfvhxTU1NOnDiBh4cHy5cvfycGJhXJkiAIglCqXO3M2T7Yh/pVrXiemj2y9by/a5L5WVCZGlMu8epxZIl/68xk59omk8no168fly5dolmzZiQnJ/Ptt9/y0UcflflZD0SypKMUcgXe9t5423uj+Oevqby2CYIglEXlTQ343zcN6eJdGZWUPXhl56PliOl+GnoFQ+cV2f8Oj9DJRCn01hPmbD5WuMK63DG9BDg5OXHkyBF+/vlnDAwM2LNnD25ubmzYsOH1B5uYgCRlLznTnby8riUiWRIEQRC0wkCp4KfOHsz/og7mhkrC/0rgo0UnCYp3QFW7Mzg11bmmt8TUDKZuj+Szpae4llLIL29d7ZheguRyOSNHjuTChQvUrVuXp0+f0q1bN7p27crjx4+1Hd4bE8mSoHW9e/fGz89Pvd6iRQuGDx/+VucsjnMURkhICO7u7ujp6Wm8Bl316r0WSkdcXBwymYywsDBth6JzZDIZHetUYt+IZjStXp7UDBVTd1ym+3/PEPW37sxBJkkSO8P/pvXPxwg6dQtJgsqerVGZldGO6aWkVq1anD59mqlTp6JQKNi4cSNubm7s3r1b26G9EZEsCXnq3bs3MpkMmUyGvr4+zs7OTJs2jczMzBK/9pYtW/jhhx8KVfbo0aPIZDKePXtW5HO8jZEjR1KnTh1iY2NZvXp1iV/vdfK7Hznmz5+vE3Hm5+XfOz09PZycnBg7diypqanaDu2tODg4EB8fj5ubm7ZD0Vl2FkYE9WnA95/UxlBPzqmbj/lo4QlGbgzj7rMXWo3t6r3n9Fp1jiHrL/LweRrVypuw7puGzOlaF3m7MtgxvZTp6enh7+/P6dOncXV15d69e3z00Uf069eP58+fazu8QhHJkpCvtm3bEh8fz/Xr1xk1ahT+/v75TnSbnp5ebNe1trbGzMxM6+cojJiYGFq1akXlypWxtLTMtV+SpFJJMAvLwsIizzhLW0G/Lzm/dzdv3mTu3LksW7aMqVOnlmg8WVlZqFSq1xcsIoVCga2tLUqlssSu8S6Qy2X0alyVAyOa84mnPZIEWy7cpeWcowTsieZxUlqpxnPh9lO+CTpPm3nHOX7tIfpKOSN8a7BneNP/Hz+pjE52rg3e3t6EhoYyYsQIZDIZ//3vf/Hw8ODYsUL2/dKiMpMsTZ8+ncaNG2NsbFzoD3tJkpgyZQp2dnYYGRnh6+vL9evXNco8efKE7t27Y25ujqWlJX379iUpKakEXkHZY2BggK2tLY6OjgwYMABfX1927MgeMySnOWf69OnY29vj4uICwJ07d+jSpQuWlpZYW1vTsWNH4uLi1OfMyspi5MiRWFpaUq5cOcaOHZvrsdJXm9DS0tIYN24cDg4OGBgY4OzszIoVK4iLi6Nly5YAWFlZIZPJ6N27d57nePr0KT179sTKygpjY2PatWun8buwevVqLC0t2bdvH66urpiamqq/tPOS06zy+PFjvv76a2QyGatXr1bX7OzZs4d69ephYGDAn3/+SVpaGkOHDsXGxgZDQ0OaNGmiMZ9SznH79u3Dy8sLIyMjWrVqxYMHD9izZw+urq6Ym5vz5ZdfkpKS8sbvZY68mjyHDh3K2LFjsba2xtbWFn9/f41jnj17xjfffEOFChUwNzenVatWhIeHq/fHxMTQsWNHKlasiKmpKfXr1+fgwYMa56hatSo//PADPXv2xNzcXD23VF5yfu8cHBzw8/PD19eXAwcOqPerVCoCAgJwcnLCyMgIT09PNm3apHGOHTt2UL16dQwNDWnZsiVBQUEaNW457/eOHTuoVasWBgYG3L59m7S0NEaPHk2lSpUwMTGhYcOGGrOr37p1iw4dOmBlZYWJiQm1a9dWNyc8ffqU7t27U6FCBYyMjKhevTqrVq0C8m6GO3bsGA0aNMDAwAA7OzvGjx+vkVgX5r15VzlYG7OgmxfbB/nQ0Mma9EwVy47d5P2AQwxZf5FTMY9L7HH0zCwVR64+oNvy03RacpKD0feRyeAjdzv2DW/GMN/qGChfqSmq9QkMjywTHdO1zcjIiF9++YUjR47g6Oio/hwfNWqUTtcgl5lkKT09nc8//5wBAwYU+phZs2axYMECli5dypkzZzAxMaFNmzYab0j37t25fPkyBw4cIDg4mOPHjxf4Qf62JEkiOTlZK8vbfrgYGRlp1AgcOnSIq1evqu9dRkYGbdq0wczMjBMnThASEqJOOnKO+/nnn1m9ejUrV67kzz//5MmTJ2zdurXA6/bs2ZP169ezYMECoqOjWbZsGaampjg4OLD5n1mpr169Snx8PPPnz8/zHL179+b8+fPs2LGDU6dOIUkS7du315jLKCUlhTlz5rBmzRqOHz/O7du3GT16dJ7ny2lWMTc3Z968ecTHx9O1a1f1/vHjxzNz5kyio6Px8PBg7NixbN68maCgIC5cuICzszNt2rThyZMnGuf19/dn0aJFnDx5Up14zps3j3Xr1rFr1y7279/PwoULC7xfbyooKAgTExPOnDnDrFmzmDZtmkZy8vnnn6uTttDQUOrWrUvr1q3VsSclJdG+fXsOHTrExYsXadu2LR06dOD27dsa15kzZw6enp5cvHiRyZMnFyq2yMhITp48ib6+vnpbQEAAv/32G0uXLuXy5cuMGDGCr776Sv3XaWxsLJ999hl+fn6Eh4fz7bffMnHixFznTklJ4aeffuK///0vly9fxsbGhsGDB3Pq1Ck2bNjApUuX+Pzzz2nbtq06sR40aBBpaWkcP36ciIgIfvrpJ0xNTQGYPHkyUVFR7Nmzh+joaAIDAylfPu/Rm+/evUv79u2pX78+4eHhBAYGsmLFCn788cc3em/edZ4Olmz4z/us7O2NZ2ULMrKy+w11+/U0rX85RuDRGCLvJqBSvd1nW0aWimPXHjJu0yXqTz9In1XnOHXzMUq5jC7elTk4sjmLu9fFqXwBHbrliuwO6e6f6WTHdF3TvHlzLl26RN++fZEkiV9++YW6desSGhqq7dDyJpUxq1atkiwsLF5bTqVSSba2ttLs2bPV2549eyYZGBhI69evlyRJkqKioiRAOnfunLrMnj17JJlMJt29e7fQMSUkJEiAlJCQkGvfixcvpKioKOnFixeSJElSUlKSRPY02qW+JCUlFfo19erVS+rYsaP6Xh44cEAyMDCQRo8erd5fsWJFKS0tTX3MmjVrJBcXF0mlUqm3paWlSUZGRtK+ffskSZIkOzs7adasWer9GRkZUuXKldXXkiRJat68uTRs2DBJkiTp6tWrEiAdOHAgzziPHDkiAdLTp081tr98jmvXrkmAFBISot7/6NEjycjISNq4caMkSdm/V4B048YNdZnFixdLFStWLPA+WVhYSKtWrcoVz7Zt29TbkpKSJD09PWnt2rXqbenp6ZK9vb36XuQcd/DgQXWZgIAACZBiYmLU27799lupTZs2+caT3/3I8fL7KknZ96lJkyYaZerXry+NGzdOkiRJOnHihGRubi6lpqZqlHnvvfekZcuW5RtH7dq1pYULF6rXHR0dJT8/v3zLvxyfQqGQTExMJAMDAwmQ5HK5tGnTJkmSJCk1NVUyNjaWTp48qXFc3759pW7dukmSJEnjxo2T3NzcNPZPnDhR477kvN9hYWHqMrdu3ZIUCkWu//utW7eWJkyYIEmSJLm7u0v+/v55xt6hQwepT58+ee6LjY2VAOnixYuSJEnSd999l+v/yuLFiyVTU1MpKytLkqTXvzevevWz5l0U8dczafzmS1KtyXskx3HB6sXz+33St7+dl1aHxEohNx5KNx8mSSlpmXmeIzNLJd148FzaGX5XmrU3Wuqz6qzk4b9P43xe0/ZL/jsipb+eppTyK/x32rlzp1SxYkUJkJRKpeTv7y+lp6eXyrUL+v5+2TvbgB4bG8u9e/fw9fVVb7OwsKBhw4acOnWKL774glOnTmFpaYm3t7e6jK+vL3K5nDNnzvDpp5/mee60tDTS0v6/7TwxUXee2ChOwcHBmJqakpGRgUql4ssvv9RoBnB3d9f4iz88PJwbN27k6iuUmppKTEwMCQkJxMfH07BhQ/U+pVKJt7d3vrVeYWFhKBQKmjdvXuTXER0djVKp1LhuuXLlcHFxITo6Wr3N2NiY9957T71uZ2fHgwcPinTNl3+nYmJiyMjIwMfHR71NT0+PBg0aaFwfwMPDQ/1zxYoVMTY2plq1ahrbzp49W6SY8vPyNUHzdYeHh5OUlES5cuU0yrx48YKYmBggu2bJ39+fXbt2ER8fT2ZmJi9evMhVs/TyPSlIy5YtCQwMJDk5mblz56JUKuncuTMAN27cICUlhQ8++EDjmPT0dLy8vIDsWsb69etr7G/QoEGu6+jr62u89oiICLKysqhRo4ZGubS0NPXrHzp0KAMGDGD//v34+vrSuXNn9TkGDBhA586duXDhAh9++CF+fn40bpz3U1DR0dE0atQImez/OwX7+PiQlJTEX3/9RZUqVYCC35t/I7dKFgR0cmfiR65sD7vLoegHnLn5mGcpGey9fI+9l+9plLcy1sPSWJ+0jCxeZGSRmqEiNTOLvD5uypvq09bNlvZudjRwskapKDMNL2Xexx9/TGRkJAMHDuSPP/7A39+f4OBgfvvtN1xdXbUdHgDvbLJ07172f5qKFTXHt6hYsaJ6371797Cx0ZwNWqlUYm1trS6Tl4CAAL7//vsixWVsbKy1PlHGxsZvVD7nS0tfXx97e/tcnVNNXhkgLCkpiXr16rF27dpc56pQocKbB0x2019p0dPT01iXyWRFbrp89d4UJYacJ8Jejam4OyIXdI2kpCTs7Ow0+u3kyOk7OHr0aA4cOMCcOXNwdnbGyMiIzz77LFcn7sLeExMTE5ydnQFYuXIlnp6erFixQqM/4a5du6hUqZLGcQYGBoU6fw4jIyONZCUpKQmFQkFoaCgKhWYTSk5T2zfffEObNm3UTaIBAQH8/PPPDBkyhHbt2nHr1i12797NgQMHaN26NYMGDWLOnDlvFNfLSuP9L4tMDZR0b+hI94aOZGSpiLibwKmYx5yNfcKdpynEP0vlRUYWT1MyeJqSket4Qz05Lrbm1LIzw9XOnNr2FtRxsEQhz38sbqFklS9fnt9//51PP/2UQYMGcf78eby8vAgICGDYsGHI5dpNXrWaLI0fP56ffvqpwDLR0dHUrFmzlCIqnAkTJjBy5Ej1emJiIg4ODoU6ViaTFfmLtLS9/KVVGHXr1uX333/HxsYGc3PzPMvY2dlx5swZmjVrBkBmZqa6H0xe3N3dUalUHDt2TKOWMEdOzVZBM1y7urqSmZnJmTNn1H/pP378mKtXr1KrVq1Cv76ieu+999DX1yckJARHR0cAMjIyOHfuXKmMBfU26taty71791AqlVStWjXPMiEhIfTu3VtdE5uUlKTRqf9tyOVyvvvuO0aOHMmXX36p0Rk7v9pGFxeXXGO4vNyZPj9eXl5kZWXx4MEDmjZtmm85BwcH+vfvT//+/ZkwYQK//vorQ4YMAbL/KOjVqxe9evWiadOmjBkzJs9kydXVlc2bNyNJkjphCwkJwczMjMqVK782VuH/6Snk1K1iRd0qVgzKft4DSZJITM3kXkIqCS8yMNSTY6inwEhPgYGenHImBiIx0kEymYxu3brRvHlz+vbty969exk5ciTbt29n9erV+X4GlQatpmqjRo0iOjq6wOXlJog3YWtrC8D9+5rDzN+/f1+9z9bWNleVdmZmJk+ePFGXyYuBgQHm5uYai5DdWb58+fJ07NiREydOEBsby9GjRxk6dCh//fUXAMOGDWPmzJls27aNK1euMHDgwHzHBILsp6h69erF119/zbZt29Tn3LhxIwCOjo7IZDKCg4N5+PBhnrV21atXp2PHjvTr148///yT8PBwvvrqKypVqkTHjh1L5F68zMTEhAEDBjBmzBj27t1LVFQU/fr1IyUlhb59+5bINSMiIggLC1MvLz+99iZ8fX1p1KgRfn5+7N+/n7i4OE6ePMnEiRM5f/48kH1/t2zZor7Ol19+Way1H59//jkKhYLFixdjZmbG6NGjGTFiBEFBQcTExHDhwgUWLlxIUFAQAN9++y1Xrlxh3LhxXLt2jY0bN6rHlnq5JulVNWrUoHv37vTs2ZMtW7YQGxvL2bNnCQgIYNeuXQAMHz6cffv2ERsby4ULFzhy5Ii6mWDKlCls376dGzducPnyZYKDg/NtQhg4cCB37txhyJAhXLlyhe3btzN16lRGjhyp9b+g3wUymQwLIz1cbM1o4GSNR2VLalQ0w8HaGBszQ5Eo6Th7e3t2797N0qVLMTEx4dixY7i7u3P48GGtxaTV/5UVKlSgZs2aBS4v94l5E05OTtja2nLo0CH1tsTERM6cOUOjRo0AaNSoEc+ePdPofX/48GFUKpVG/xahcIyNjTl+/DhVqlShU6dOuLq60rdvX1JTU9UJ5ahRo+jRowe9evWiUaNGmJmZ5ds3LEdgYCCfffYZAwcOpGbNmvTr14/k5GQAKlWqxPfff8/48eOpWLEigwcPzvMcq1atol69enz88cc0atQISZLYvXt3rmaOkjJz5kw6d+5Mjx49qFu3Ljdu3GDfvn1YWVmVyPWaNWuGl5eXeqlXr16RziOTydi9ezfNmjWjT58+1KhRgy+++IJbt26pm7h/+eUXrKysaNy4MR06dKBNmzb51hQWhVKpZPDgwcyaNYvk5GR++OEHJk+eTEBAAK6urrRt25Zdu3bh5OQEZP/f37RpE1u2bMHDw4PAwED103Cva6pbtWoVPXv2ZNSoUbi4uODn58e5c+fUfYiysrIYNGiQ+ro1atRgyZIlQHYt54QJE/Dw8KBZs2YoFIp858KqVKkSu3fv5uzZs3h6etK/f3/69u3LpEmTiuu2CUKZJpPJ+PbbbwkPD6dJkyaYmpri6empvXikonbKKGW3b9/myZMn7Nixg9mzZ3PixAkAnJ2d1f0JatasSUBAgPrL96effmLmzJkEBQXh5OTE5MmTuXTpElFRURgaGgLQrl077t+/z9KlS8nIyKBPnz54e3uzbt26QseWmJiIhYUFCQkJuWqZUlNTiY2NxcnJSX1NQRBK1/Tp01m6dCl37tzRdiglRnzWCO+qrKwsYmNj36hbSGEV9P39sjLTwXvKlCnqanZA/eTLkSNHaNGiBZD9FExCQoK6zNixY0lOTuY///kPz549o0mTJuzdu1fjg2Tt2rUMHjyY1q1bI5fL6dy5MwsWLCidFyUIQolYsmQJ9evXp1y5coSEhDB79ux8ax0FQdBtCoWiRBKlN1FmapZ0mahZEgTdMmLECH7//XeePHlClSpV6NGjBxMmTHinpxsRnzWC8ObeuZolQRCEwpo7dy5z587VdhiCILwjxGMXgiAIgiAIBRDJkiAIgiAIQgFEslRKRNcwQRBKkviMEYSSI5KlEpYzbcKrUz8IgiAUp5zPmFenahEE4e2JDt4lTKlUYmxszMOHD9HT0xOj8wqCUOxUKhUPHz7E2Nj4nX7iTxC0RfyvKmEymQw7OztiY2O5deuWtsMRBOEdJZfLqVKlSoFTugiCUDQiWSoF+vr6VK9eXTTFCYJQYvT19UXNtSCUEJEslRK5XC4GihMEQRCEMkj8GSIIgiAIglAAkSwJgiAIgiAUQCRLgiAIgiAIBRB9lopBzmBwiYmJWo5EEARBEITCyvneft2griJZKgbPnz8HwMHBQcuRCIIgCILwpp4/f46FhUW++2WSGCP/ralUKv7++2/MzMyKdYyTxMREHBwcuHPnDubm5sV23neFuD8FE/cnf+LeFEzcn4KJ+1OwsnR/JEni+fPn2NvbFzj0hqhZKgZyuZzKlSuX2PnNzc11/hdOm8T9KZi4P/kT96Zg4v4UTNyfgpWV+1NQjVIO0cFbEARBEAShACJZEgRBEARBKIBIlnSYgYEBU6dOxcDAQNuh6CRxfwom7k/+xL0pmLg/BRP3p2Dv4v0RHbwFQRAEQRAKIGqWBEEQBEEQCiCSJUEQBEEQhAKIZEkQBEEQBKEAIlkSBEEQBEEogEiWdNjixYupWrUqhoaGNGzYkLNnz2o7JJ1w/PhxOnTogL29PTKZjG3btmk7JJ0REBBA/fr1MTMzw8bGBj8/P65evartsHRGYGAgHh4e6sHyGjVqxJ49e7Qdls6aOXMmMpmM4cOHazsUneDv749MJtNYatasqe2wdMbdu3f56quvKFeuHEZGRri7u3P+/Hlth1UsRLKko37//XdGjhzJ1KlTuXDhAp6enrRp04YHDx5oOzStS05OxtPTk8WLF2s7FJ1z7NgxBg0axOnTpzlw4AAZGRl8+OGHJCcnazs0nVC5cmVmzpxJaGgo58+fp1WrVnTs2JHLly9rOzSdc+7cOZYtW4aHh4e2Q9EptWvXJj4+Xr38+eef2g5JJzx9+hQfHx/09PTYs2cPUVFR/Pzzz1hZWWk7tGIhhg7QUQ0bNqR+/fosWrQIyJ5/zsHBgSFDhjB+/HgtR6c7ZDIZW7duxc/PT9uh6KSHDx9iY2PDsWPHaNasmbbD0UnW1tbMnj2bvn37ajsUnZGUlETdunVZsmQJP/74I3Xq1GHevHnaDkvr/P392bZtG2FhYdoOReeMHz+ekJAQTpw4oe1QSoSoWdJB6enphIaG4uvrq94ml8vx9fXl1KlTWoxMKGsSEhKA7IRA0JSVlcWGDRtITk6mUaNG2g5HpwwaNIiPPvpI4zNIyHb9+nXs7e2pVq0a3bt35/bt29oOSSfs2LEDb29vPv/8c2xsbPDy8uLXX3/VdljFRiRLOujRo0dkZWVRsWJFje0VK1bk3r17WopKKGtUKhXDhw/Hx8cHNzc3bYejMyIiIjA1NcXAwID+/fuzdetWatWqpe2wdMaGDRu4cOECAQEB2g5F5zRs2JDVq1ezd+9eAgMDiY2NpWnTpjx//lzboWndzZs3CQwMpHr16uzbt48BAwYwdOhQgoKCtB1asVBqOwBBEErGoEGDiIyMFH0qXuHi4kJYWBgJCQls2rSJXr16cezYMZEwAXfu3GHYsGEcOHAAQ0NDbYejc9q1a6f+2cPDg4YNG+Lo6MjGjRv/9c24KpUKb29vZsyYAYCXlxeRkZEsXbqUXr16aTm6tydqlnRQ+fLlUSgU3L9/X2P7/fv3sbW11VJUQlkyePBggoODOXLkCJUrV9Z2ODpFX18fZ2dn6tWrR0BAAJ6ensyfP1/bYemE0NBQHjx4QN26dVEqlSiVSo4dO8aCBQtQKpVkZWVpO0SdYmlpSY0aNbhx44a2Q9E6Ozu7XH9wuLq6vjPNlCJZ0kH6+vrUq1ePQ4cOqbepVCoOHTok+lYIBZIkicGDB7N161YOHz6Mk5OTtkPSeSqVirS0NG2HoRNat25NREQEYWFh6sXb25vu3bsTFhaGQqHQdog6JSkpiZiYGOzs7LQditb5+PjkGqbk2rVrODo6aimi4iWa4XTUyJEj6dWrF97e3jRo0IB58+aRnJxMnz59tB2a1iUlJWn8JRcbG0tYWBjW1tZUqVJFi5Fp36BBg1i3bh3bt2/HzMxM3cfNwsICIyMjLUenfRMmTKBdu3ZUqVKF58+fs27dOo4ePcq+ffu0HZpOMDMzy9W/zcTEhHLlyol+b8Do0aPp0KEDjo6O/P3330ydOhWFQkG3bt20HZrWjRgxgsaNGzNjxgy6dOnC2bNnWb58OcuXL9d2aMVDEnTWwoULpSpVqkj6+vpSgwYNpNOnT2s7JJ1w5MgRCci19OrVS9uhaV1e9wWQVq1ape3QdMLXX38tOTo6Svr6+lKFChWk1q1bS/v379d2WDqtefPm0rBhw7Qdhk7o2rWrZGdnJ+nr60uVKlWSunbtKt24cUPbYemMnTt3Sm5ubpKBgYFUs2ZNafny5doOqdiIcZYEQRAEQRAKIPosCYIgCIIgFEAkS4IgCIIgCAUQyZIgCIIgCEIBRLIkCIIgCIJQAJEsCYIgCIIgFEAkS4IgCIIgCAUQyZIgCIIgCEIBRLIkCIIgCIJQAJEsCYIgCIIgFEAkS4IgCIIgCAUQyZIgCMIrHj58iK2tLTNmzFBvO3nyJPr6+hw6dEiLkQmCoA1ibjhBEIQ87N69Gz8/P06ePImLiwt16tShY8eO/PLLL9oOTRCEUiaSJUEQhHwMGjSIgwcP4u3tTUREBOfOncPAwEDbYQmCUMpEsiQIgpCPFy9e4Obmxp07dwgNDcXd3V3bIQmCoAWiz5IgCEI+YmJi+Pvvv1GpVMTFxWk7HEEQtETULAmCIOQhPT2dBg0aUKdOHVxcXJg3bx4RERHY2NhoOzRBEEqZSJYEQRDyMGbMGDZt2kR4eDimpqY0b94cCwsLgoODtR2aIAilTDTDCYIgvOLo0aPMmzePNWvWYG5ujlwuZ82aNZw4cYLAwEBthycIQikTNUuCIAiCIAgFEDVLgiAIgiAIBRDJkiAIgiAIQgFEsiQIgiAIglAAkSwJgiAIgiAUQCRLgiAIgiAIBRDJkiAIgiAIQgFEsiQIgiAIglAAkSwJgiAIgiAUQCRLgiAIgiAIBRDJkiAIgiAIQgFEsiQIgiAIglAAkSwJgiAIgiAU4P8AWz2yrqbA7K4AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# plot model predictions against ground-truth\n", - "import matplotlib.pyplot as plt\n", - "\n", - "y_min = np.min(initial_observations)\n", - "y_max = np.max(initial_observations)\n", - "\n", - "# plot conditions obtained by novelty sampler\n", - "for idx, condition in enumerate(new_conditions_novelty):\n", - " if idx == 0:\n", - " plt.plot([condition[0], condition[0]], [y_min, y_max], '--r', label='novelty conditions')\n", - " else: # we want to omit the label for all other conditions\n", - " plt.plot([condition[0], condition[0]], [y_min, y_max], '--r')\n", - "\n", - "# plot conditions obtained by falsification sampler\n", - "for idx, condition in enumerate(new_conditions_falsification):\n", - " if idx == 0:\n", - " plt.plot([condition[0], condition[0]], [y_min, y_max], '--g', label='falsification conditions')\n", - " else: # we want to omit the label for all other conditions\n", - " plt.plot([condition[0], condition[0]], [y_min, y_max], '--g')\n", - "\n", - "plt.plot(condition_pool, ground_truth(condition_pool), '-', label='Ground Truth')\n", - "plt.plot(initial_conditions, initial_observations, 'o', label='Initial Data')\n", - "plt.plot(condition_pool, predicted_observations_lr, '-k', label='Prediction from Linear Regression')\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Sampled Experimental Conditions')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Usage: Pipelines\n", - "\n", - "Experimentalists can be connected in a **[pipeline](https://autoresearch.github.io/autora/core/docs/pipeline/Experimentalist%20Pipeline%20Examples/)**, where each element passes its output to the next element, ensuring compatibility between the inputs and outputs. Pipelines offer a flexible and efficient way to orchestrate the workflow involving complex experimentalists (e.g., for processing of experimental conditions) and experiment runners (e.g., for preprocessing of collected observations). They allow for the integration of poolers, samplers, and other design manipulations into a cohesive stream of experimental conditions.\n", - "\n", - "Let's examine the following pipeline example:\n", - "\n", - "
    \n", - "
  1. Generate a grid of all possible experimental conditions.\n", - "
  2. Filter out conditions where the independent variable falls within the range -1 to 1.\n", - "
  3. Sample 10 conditions using the novelty sampler.\n", - "
  4. Select 5 conditions from the sampled set using the falsification sampler.\n", - "
\n", - "\n", - "Before creating the pipeline, let's define an additional function that removes experiment conditions falling within the range of -1 to 1, specifically $-1 \\leq x \\leq 1$. This function will be used in the second step of the pipeline." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Iterable\n", - "\n", - "def condition_exclusion(conditions):\n", - " # first we need to make sure that conditions is a 2-dimensional numpy array\n", - " if isinstance(conditions, Iterable):\n", - " conditions = np.array(list(conditions))\n", - "\n", - " if conditions.ndim == 1:\n", - " conditions = conditions.reshape(-1, 1)\n", - "\n", - " # now we can sub-select conditions\n", - " conditions_to_keep = conditions[(-1 > conditions) | (conditions > 1)]\n", - " conditions_to_keep = conditions_to_keep.reshape(-1, 1)\n", - " return conditions_to_keep" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A pipeline can be defined as a list of functions, such as ``[grid_pool, value_exclusion, novelty_sample, falsification_sample]``. However, to create a pipeline object, we need to specify the required parameters for each element in the pipeline. We can achieve this by providing nested dictionaries containing the additional parameters, as shown in the code block below.\n", - "\n", - "**Note**: *Each element of the pipeline passes its output to the next element as the first argument of the element's function. Thus, we need to make sure that the output of one pipeline element is compatible with the required first input argument for the next element. In our case, the first argument for each pipeline element (except for poolers) is assumed to be a 2-dimensional numpy array specifying a set of experimental conditions.*\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.experimentalist.pipeline import make_pipeline\n", - "\n", - "experimentalist_pipeline = make_pipeline([grid_pool,\n", - " condition_exclusion,\n", - " novelty_sample,\n", - " falsification_sample],\n", - " params={\"grid_pool\":\n", - " {\"ivs\": metadata.independent_variables},\n", - " \"novelty_sample\":\n", - " {\"reference_conditions\": initial_conditions,\n", - " \"num_samples\": 10},\n", - " \"falsification_sample\":\n", - " {\"model\": theorist_bms,\n", - " \"reference_conditions\": initial_conditions,\n", - " \"reference_observations\": initial_observations,\n", - " \"metadata\": metadata,\n", - " \"num_samples\": 5}})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the declaration of the ``params`` parameter, we first specify the name of the pipeline object we seek to parameterize as a dictionary key, e.g., ``\"grid_pool\"``, and then nest within it, another dictionary with the names of the input arguments as keys (e.g., ``\"ivs\"``) along with their values (e.g., ``metadata.independent_variables``).\n", - "\n", - "Once specified, we can run the pipeline object to obtain novel experimental conditions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1.96746207]\n", - " [6.28318531]\n", - " [6.21971879]\n", - " [6.15625227]\n", - " [6.09278575]]\n" - ] - } - ], - "source": [ - "new_conditions = experimentalist_pipeline.run()\n", - "\n", - "print(new_conditions)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Hint**: *A common error for running pipelines is that the output of one pipeline element is incompatible with the input of the next pipeline element (e.g., not providing a 2-dimensional numpy array to ``novelty_sample``). In such cases, it can be helpful to \"manually\" pass the inputs from one element to another element, to check if they are compatible.*\n", - "\n", - "**Note**: *Pipelines may be used for other purposes, such as linking an experiment runner with multiple pre-processing steps.*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Automated Empirical Research With Basic Loop Constructs\n", - "\n", - "After defining all the components required for the empirical research process, we can create an automated workflow using basic loop constructs in Python.\n", - "\n", - "The following code block demonstrates how to build such a workflow using the components introduced in the preceding sections, such as\n", - "\n", - "- ``metadata`` (object specifying variables of the experiment),
\n", - "- ``run_experiment`` (function for collecting data),
\n", - "- ``theorist_bms`` (scikit learn estimator for discoverying requations using the Bayesian Machine Scientist),
\n", - "- ``random_pool`` (function for generating a random pool of experimental conditions), and
\n", - "- ``falsification_sample`` (function for identifying novel experiment conditions using the falsification .sampler)
\n", - "\n", - "We begin with implementing the following workflow:\n", - "1. Generate 3 seed experimental conditions using ``random_pool``\n", - "2. Generate 3 seed observations using ``run_experiment``\n", - "3. Loop through the following steps 5 times\n", - " - Identify a model relating conditions to observations using ``theorist_bms``\n", - " - Identify 3 new experimental conditions using ``falsification_sample``\n", - " - Collect 3 new observations using ``run_experiment``\n", - " - Add new conditions and observations to the dataset\n", - "\n", - "We will iteratre through this workflow 5 times." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.theorist.bms.regressor:BMS fitting started\n", - "100%|██████████| 100/100 [00:08<00:00, 11.50it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 0: 0.0\n", - "Discovered Model: sin(X0)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 13.36it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 1: 0.0\n", - "Discovered Model: sin(X0)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 13.41it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 2: 0.5830078060480123\n", - "Discovered Model: _a0_\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 12.81it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 3: 0.0\n", - "Discovered Model: sin(X0)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 13.67it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 4: 0.0\n", - "Discovered Model: sin(X0)\n" - ] - } - ], - "source": [ - "num_cycles = 5 # number of empirical research cycles\n", - "measurements_per_cycle = 3 # number of data points to collect for each cycle\n", - "\n", - "# generate an initial set of experimental conditions\n", - "conditions = random_pool(metadata.independent_variables[0].allowed_values,\n", - " n=measurements_per_cycle)\n", - "# convert iterator into 2-dimensional numpy array\n", - "conditions = np.array(list(conditions)).reshape(-1, 1)\n", - "\n", - "# collect initial set of observations\n", - "observations = run_experiment(conditions)\n", - "\n", - "for cycle in range(num_cycles):\n", - "\n", - " # use BMS theorist to fit the model to the data\n", - " theorist_bms.fit(conditions, observations)\n", - "\n", - " # obtain new conditions\n", - " new_conditions = falsification_sample(\n", - " condition_pool=condition_pool,\n", - " model=theorist_bms,\n", - " reference_conditions=conditions,\n", - " reference_observations=observations,\n", - " metadata=metadata,\n", - " num_samples=measurements_per_cycle,\n", - " )\n", - "\n", - " # obtain new observations\n", - " new_observations = run_experiment(new_conditions)\n", - "\n", - " # combine old and new conditions and observations\n", - " conditions = np.concatenate((conditions, new_conditions))\n", - " observations = np.concatenate((observations, new_observations))\n", - "\n", - " # evaluate model of the theorist based on its ability to predict each observation from the ground truth, evaluated across the entire space of experimental conditions\n", - " loss = np.mean(np.square(theorist_bms.predict(condition_pool) - ground_truth(condition_pool)))\n", - " print(\"Loss in cycle {}: {}\".format(cycle, loss))\n", - " print(\"Discovered Model: \" + theorist_bms.model_.__repr__())\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can easily replace components in the workflow above. For instance, we could replace ``falsification_sample`` with the ``experimentalist_pipeline`` defined above.\n", - "\n", - "In the following code block, we add a linear regression theorist, to fit a linear model to the data. In addition, we replace ``falsification_sample`` with ``model_disagreement_sampler`` to sample experimental conditions that differentiate most between the linear model and the model discovered by the BMS theorist." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.theorist.bms.regressor:BMS fitting started\n", - "100%|██████████| 100/100 [00:07<00:00, 12.60it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 0: 0.7663165942701162\n", - "Discovered BMS Model: _a0_\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:08<00:00, 12.32it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 1: 0.0\n", - "Discovered BMS Model: sin(relu(X0))\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 14.84it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 2: 0.5278979868526005\n", - "Discovered BMS Model: _a0_\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 14.46it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 3: 0.5084168918123109\n", - "Discovered BMS Model: _a0_\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 15.53it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss in cycle 4: 0.0\n", - "Discovered BMS Model: sin(X0)\n" - ] - } - ], - "source": [ - "from autora.experimentalist.sampler.model_disagreement import model_disagreement_sampler\n", - "\n", - "num_cycles = 5 # number of empirical research cycles\n", - "measurements_per_cycle = 3 # number of data points to collect for each cycle\n", - "\n", - "# generate an initial set of experimental conditions\n", - "conditions = random_pool(metadata.independent_variables[0].allowed_values,\n", - " n=measurements_per_cycle)\n", - "# convert iterator into 2-dimensional numpy array\n", - "conditions = np.array(list(conditions)).reshape(-1, 1)\n", - "\n", - "# collect initial set of observations\n", - "observations = run_experiment(conditions)\n", - "\n", - "for cycle in range(num_cycles):\n", - "\n", - " # use BMS theorist to fit the model to the data\n", - " theorist_bms.fit(conditions, observations)\n", - " theorist_lr.fit(conditions, observations)\n", - "\n", - " # obtain new conditions\n", - " new_conditions = model_disagreement_sampler(\n", - " condition_pool,\n", - " models = [theorist_bms, theorist_lr],\n", - " num_samples = measurements_per_cycle\n", - " )\n", - "\n", - " # obtain new observations\n", - " new_observations = run_experiment(new_conditions)\n", - "\n", - " # combine old and new conditions and observations\n", - " conditions = np.concatenate((conditions, new_conditions))\n", - " observations = np.concatenate((observations, new_observations))\n", - "\n", - " # evaluate model of the theorist based on its ability to predict each observation from the ground truth, evaluated across the entire space of experimental conditions\n", - " loss = np.mean(np.square(theorist_bms.predict(condition_pool) - ground_truth(condition_pool)))\n", - " print(\"Loss in cycle {}: {}\".format(cycle, loss))\n", - " print(\"Discovered BMS Model: \" + theorist_bms.model_.__repr__())\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "While the workflow logic with basic loop constructs is flexible, there are more convenient ways to specify a research cycle in ``autora``. The next section illustrates the use of these constructs." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Automated Empirical Research With AutoRA Workflow Logic\n", - "\n", - "Workflows in ``autora`` implement the *autonomous empirical research paradigm*. This paradigm centers around the dynamic interplay between automated theorists and automated experimentalists. As outlined above, theorists rely–among other things–on existing data to construct computational models by linking experimental conditions to dependent measures. Experimentalist design follow-up experiments to refine and validate models generated by the theorist. Together, these agents enable a closed-loop scientific discovery process.\n", - "\n", - "The following sections introduce ways of specifying workflows directly in ``autora``. For more information on workflows, please refer to the [corresponding documentation](https://autoresearch.github.io/autora/user-guide/workflow/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Basic Workflows\n", - "\n", - "This section provides an introduction to handling workflows with the controller object. Here, we focus on workflows implementing the **default execution order**: (1) generate experiment conditions using the ``eperimentalist``, (2) collect observations using the ``experiment_runner``, and (3), generate a model that links experiment conditions to observations using the ``theorist``.\n", - "\n", - "At the end of this section, we will able to implement the following workflow:\n", - "\n", - "We begin with implementing the following workflow:\n", - "1. Generate seed experimental conditions\n", - "2. Iterate 5 times through the following steps\n", - " - Collect observations using ``run_experiment``\n", - " - Identify a model relating conditions to observations using ``theorist_bms``\n", - " - Identify 3 new experimental conditions using ``falsification_sample``\n", - "\n", - "#### Declaration\n", - "\n", - "We begin with defining a simple workflow. Workflows can be encapsulated in a ``Controller`` object. For instance, the following code block sets up a closed-loop cycle between (1) a grid pooler for sampling experimental conditions, (2) an experiment runner for obtaining respective observations, and (3) a BMS theorist for discoverying an equation relating experimental conditions to observations.\n", - "\n", - "As with pipelines, we can pass the ``Controller`` object static parameters for each component. In this case, we provide the grid experimentalist with information about the independent variables to sample.\n", - "\n", - "**Note**: *We haven't included the ``falsification_sample`` experimentalist into our workflow yet because it requires us to specify state-dependent input arguments (e.g., the model generated by the theorist), which we will cover at the end of this section.*" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.workflow import Controller\n", - "\n", - "controller = Controller(\n", - " variables=metadata,\n", - " experimentalist=grid_pool,\n", - " experiment_runner=run_experiment,\n", - " theorist=theorist_bms,\n", - " params={\n", - " \"experimentalist\":\n", - " {\"ivs\": metadata.independent_variables}\n", - " }\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the declaration of the ``params`` parameter, we first specify the type of the component we seek to parameterize as a dictionary key, e.g., ``\"experimentalist\"``. Then we nest within it, another dictionary with the input arguments to the respective component as keys (e.g., ``\"ivs\"`` is an input argument to the ``grid_pool`` experimentalist) along with their values (e.g., ``metadata.independent_variables``).\n", - "\n", - "#### Monitoring\n", - "\n", - "Before we execute the controller, lets also add a **monitor function** which is executed with every autonomous empirical research step. The following code block prints the last generated result of the workflow defined by the controller. All workflow results are stored in the ``state.history`` object. We can access the kind of the latest result using ``state.history[-1].kind``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define monitor function\n", - "def monitor(state):\n", - " print(f\"MONITOR: Generated new {state.history[-1].kind}\")\n", - "\n", - "# add monitor function to controller\n", - "controller.monitor = monitor" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Execution\n", - "\n", - "The controller is defined as an iterator. We can execute a single step in the workflow by passing the ``controller`` object to the ``next()`` method. The following code block executes three steps of the default research cycle." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x1494cea60>\n", - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14abcaf70>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14abcaf70>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new CONDITION\n", - "MONITOR: Generated new OBSERVATION\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:11<00:00, 8.50it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "next(controller)\n", - "next(controller)\n", - "next(controller)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As indicated by the monitor, the **default execution order** is as follows: (1) generate experiment conditions, (2) collect observations, and (3), generate a model. After executing step (3), the controller would then continue with step (1):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x1499671f0>\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new CONDITION\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "next(controller)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since ``controller`` is an iterator, we can use [itertools](https://docs.python.org/3/library/itertools.html) for efficient looping. The following example uses ``takewhile`` to define a loop that stops as soon as we obtained three models from the theorist.\n", - "\n", - "We begin with defining a lambda function which returns true whenever the controller has less then 5 models. As explained in the next subsection, we can obtain a list of generated models by accessing the controller's state via ``controller.state.models``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "continue_criterion = lambda controller: len(controller.state.models) < 5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can run a for-loop using the ``controller`` as an iterator, and ``takewhile`` as iterator logic that continues to execute steps of the controller as long as ``continue_criterion`` returns ``True``. In this way, we can execute 3 research cycles." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14ab130d0>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x1493d8f70>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 1\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:10<00:00, 9.47it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x149e84280>\n", - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x1493d8f70>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x149e84280>\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 2\n", - "MONITOR: Generated new CONDITION\n", - "Number of models: 2\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 2\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.theorist.bms.regressor:BMS fitting started\n", - "100%|██████████| 100/100 [00:09<00:00, 11.05it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14ab130d0>\n", - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x149e84280>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14ab130d0>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 3\n", - "MONITOR: Generated new CONDITION\n", - "Number of models: 3\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 3\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:10<00:00, 9.41it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x1493d8dc0>\n", - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x149967040>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x1493d89d0>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 4\n", - "MONITOR: Generated new CONDITION\n", - "Number of models: 4\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 4\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:10<00:00, 9.87it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n" - ] - } - ], - "source": [ - "from itertools import takewhile\n", - "\n", - "for step in takewhile(continue_criterion, controller):\n", - " print(f\"Number of models: {len(step.state.models)}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Result Inspection\n", - "\n", - "After each executed step, we can observe the result generated by the ``controller``. All results are stored in in ``controller.state.history``. Each result is composed of a value specifying its ``kind`` (``CONDITION``, ``OBSERVATION``, or ``MODEL``) and the respective ``data``.\n", - "\n", - "We can obtain the observations collected in the last step of the workflow as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ResultKind.MODEL\n", - "BMSRegressor(epochs=100)\n" - ] - } - ], - "source": [ - "result = controller.state.history[-1]\n", - "\n", - "print(result.kind)\n", - "print(result.data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also specify the kind of result we are looking for directly. For instance, we can obtain all models generated by the theorist using ``controller.state.models``. The following code block prints the last model discovered by the BMS theorist (note that ``model_.__repr__()`` is a function specific to the BMS theorist which returns its model as a string)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sin(X0)\n" - ] - } - ], - "source": [ - "print(controller.state.models[-1].model_.__repr__())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternatively, we can access probed experimental conditions via ``controller.state.conditions`` and observations via ``controller.state.observations``, respectively. The following code block requests the latest experimental conditions identified by the experimentalist." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0. ],\n", - " [0.06346652],\n", - " [0.12693304],\n", - " [0.19039955],\n", - " [0.25386607],\n", - " [0.31733259],\n", - " [0.38079911],\n", - " [0.44426563],\n", - " [0.50773215],\n", - " [0.57119866],\n", - " [0.63466518],\n", - " [0.6981317 ],\n", - " [0.76159822],\n", - " [0.82506474],\n", - " [0.88853126],\n", - " [0.95199777],\n", - " [1.01546429],\n", - " [1.07893081],\n", - " [1.14239733],\n", - " [1.20586385],\n", - " [1.26933037],\n", - " [1.33279688],\n", - " [1.3962634 ],\n", - " [1.45972992],\n", - " [1.52319644],\n", - " [1.58666296],\n", - " [1.65012947],\n", - " [1.71359599],\n", - " [1.77706251],\n", - " [1.84052903],\n", - " [1.90399555],\n", - " [1.96746207],\n", - " [2.03092858],\n", - " [2.0943951 ],\n", - " [2.15786162],\n", - " [2.22132814],\n", - " [2.28479466],\n", - " [2.34826118],\n", - " [2.41172769],\n", - " [2.47519421],\n", - " [2.53866073],\n", - " [2.60212725],\n", - " [2.66559377],\n", - " [2.72906028],\n", - " [2.7925268 ],\n", - " [2.85599332],\n", - " [2.91945984],\n", - " [2.98292636],\n", - " [3.04639288],\n", - " [3.10985939],\n", - " [3.17332591],\n", - " [3.23679243],\n", - " [3.30025895],\n", - " [3.36372547],\n", - " [3.42719199],\n", - " [3.4906585 ],\n", - " [3.55412502],\n", - " [3.61759154],\n", - " [3.68105806],\n", - " [3.74452458],\n", - " [3.8079911 ],\n", - " [3.87145761],\n", - " [3.93492413],\n", - " [3.99839065],\n", - " [4.06185717],\n", - " [4.12532369],\n", - " [4.1887902 ],\n", - " [4.25225672],\n", - " [4.31572324],\n", - " [4.37918976],\n", - " [4.44265628],\n", - " [4.5061228 ],\n", - " [4.56958931],\n", - " [4.63305583],\n", - " [4.69652235],\n", - " [4.75998887],\n", - " [4.82345539],\n", - " [4.88692191],\n", - " [4.95038842],\n", - " [5.01385494],\n", - " [5.07732146],\n", - " [5.14078798],\n", - " [5.2042545 ],\n", - " [5.26772102],\n", - " [5.33118753],\n", - " [5.39465405],\n", - " [5.45812057],\n", - " [5.52158709],\n", - " [5.58505361],\n", - " [5.64852012],\n", - " [5.71198664],\n", - " [5.77545316],\n", - " [5.83891968],\n", - " [5.9023862 ],\n", - " [5.96585272],\n", - " [6.02931923],\n", - " [6.09278575],\n", - " [6.15625227],\n", - " [6.21971879],\n", - " [6.28318531]])" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "controller.state.conditions[-1]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Seeding\n", - "\n", - "The default execution order always begins with an experimentalist. This is problematic if we want to use an experimentalist that depends on prior steps (e.g., the falsification experimentalist requires a model generated by the theorist). We can circumvent this problem by seeding the controller with experiment conditons.\n", - "\n", - "The following code block seeds the controller with 3 experiment conditions. We first generate the ``seed_conditions``, and then pass them, encapsulated in a list, to the ``seed`` function of the ``controller`` object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x149e84e50>\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new OBSERVATION\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# generate initial pool of 3 experimental conditions\n", - "seed_conditions = np.linspace(0,2*np.pi,3)\n", - "\n", - "# define controller\n", - "controller = Controller(\n", - " monitor=monitor,\n", - " variables=metadata,\n", - " experimentalist=grid_pool,\n", - " experiment_runner=run_experiment,\n", - " theorist=theorist_bms,\n", - " params={\n", - " \"experimentalist\":\n", - " {\"ivs\": metadata.independent_variables}\n", - " }\n", - ")\n", - "\n", - "# seed controller\n", - "controller.seed(conditions=[seed_conditions])\n", - "\n", - "next(controller)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that, since we seeded the controller with initial experimental conditions, the next step is to execute the ``experiment_runner``. This is why the first step of reported by the monitor involves the generation of observations (based on the seed experimental conditions)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Accessing State-Dependent Properties\n", - "\n", - "Some automated empirical research components require input arguments that depend on the result of the last step in the workflow. For instance, the ``falsification_sample`` experimentalist depends on the previously collected experimental conditions, observations, and the fitted model. For such cases, it is possible to use \"state-dependent properties\" in the ``params`` dictionary. These are the following strings, which will be replaced during execution by their respective current values:\n", - "\n", - "- ``\"%observations.ivs[-1]%\"``: the last observed independent variables
\n", - "- ``\"%observations.dvs[-1]%\"``: the last observed dependent variables
\n", - "- ``\"%observations.ivs%\"``: all the observed independent variables (observations), concatenated into a single array
\n", - "- ``\"%observations.dvs%\"``: all the observed dependent variables (experimental conditions), concatenated into a single array
\n", - "- ``\"%models[-1]%\"``: the last fitted theorist
\n", - "- ``\"%models%\"``: all the fitted theorists
\n", - "\n", - "In the following example, we use the ``\"%observations.ivs%\"``, ``\"%observations.dvs%\"``, and ``\"%models%\"`` properties for the ``falsification_sample`` experimentalist which seeks to identify experimental conditions that are predicted to maximize the loss of the fitted model.\n", - "\n", - "The code block below implements the following workflow:\n", - "1. Generate 3 seed experimental conditions\n", - "2. Iterate 5 times through the following steps\n", - " - Collect observations using ``run_experiment``\n", - " - Identify a model relating conditions to observations using ``theorist_bms``\n", - " - Identify 3 new experimental conditions using ``falsification_sample``\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# generate initial pool of 3 experimental conditions\n", - "seed_conditions = np.linspace(0,2*np.pi,3)\n", - "\n", - "\n", - "# define controller\n", - "controller = Controller(\n", - " monitor=monitor,\n", - " variables=metadata,\n", - " experimentalist=falsification_sample,\n", - " experiment_runner=run_experiment,\n", - " theorist=theorist_bms,\n", - " params={\n", - " \"experimentalist\":\n", - " {\"condition_pool\": condition_pool,\n", - " \"model\": \"%models[-1]%\", # access last model generated by theorist\n", - " \"reference_conditions\": \"%observations.ivs%\", # access all conditions probed so far\n", - " \"reference_observations\": \"%observations.dvs%\", # access all observations collected so far\n", - " \"metadata\": metadata,\n", - " \"num_samples\": 3}\n", - " }\n", - ")\n", - "\n", - "# seed controller\n", - "controller.seed(conditions=[seed_conditions])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using ``takewhile``, we can now specify a workflow logic that executes the automated research process 5 times. Accordingly, we stop execution of the ``controller`` as soon as it accumulated 5 models." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14a286160>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x149802940>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 13.76it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14ac66790>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 1\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14ba651f0>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14ba65a60>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new CONDITION\n", - "Number of models: 1\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 1\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 13.54it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x1493d8f70>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 2\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14c1aef70>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14ab13820>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new CONDITION\n", - "Number of models: 2\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 2\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 14.66it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14ab13550>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 3\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x149967d30>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x1496dd820>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new CONDITION\n", - "Number of models: 3\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 3\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 16.52it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x149967d30>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 4\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14ac66550>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14a875160>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new CONDITION\n", - "Number of models: 4\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 4\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 14.89it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x149967ca0>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n", - "Number of models: 5\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14a770e50>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14a770e50>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new CONDITION\n", - "Number of models: 5\n", - "MONITOR: Generated new OBSERVATION\n", - "Number of models: 5\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 14.08it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Generated new MODEL\n" - ] - } - ], - "source": [ - "from itertools import takewhile\n", - "\n", - "continue_criterion = lambda controller: len(controller.state.models) < 6\n", - "\n", - "for step in takewhile(continue_criterion, controller):\n", - " print(f\"Number of models: {len(step.state.models)}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Advanced Workflows\n", - "\n", - "In some cases, we may want to condition the sequence of steps taken in the empirical research process on the current state of the process. For instance, one might want to switch from a novelty sampling strategy to a falsification sampling strategy as soon as one has probed enough novel experiment conditions. This section provides a basic introduction to the``BaseController``, which enables the implementation of such arbitrary execution orders.\n", - "\n", - "In this section, we consider a scenario in which we switch experimentalists, depending on the amount of observations collected:\n", - "- If no observations are collected, we sample some seed experimental conditions\n", - "- If less than 7 observations are collected, we sample experimental conditions with ``novelty_sample``\n", - "- If 7 or more observations are collected, we sample experimental conditions with ``falsification_sample``\n", - "\n", - "#### Planner Declaration\n", - "\n", - "We begin with defining an ``experimentalist_planner`` function. Such planner function will be provided as input to the ``BaseController``, and will be used to determine the next step of the workflow, depending on the current state. The code block below implements a planner that selects the experimentalist to be executed depending on the amount of observations collected:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.workflow.planner import last_result_kind_planner\n", - "\n", - "def experimentalist_planner(state):\n", - " # We're going to reuse the \"last_result_kind_planner\" planner, and modify its output.\n", - " proposed_next_step = last_result_kind_planner(state)\n", - "\n", - " # Obtain a list of all observations collected so far\n", - " all_observations = [item for sublist in state.observations for item in sublist]\n", - " num_observations = len(all_observations)\n", - "\n", - " # Determine next experimentalist\n", - " if proposed_next_step == \"experimentalist\":\n", - " if num_observations < 1:\n", - " next_step = \"seed_experimentalist\"\n", - " elif num_observations > 0 and num_observations < 7:\n", - " next_step = \"novelty_experimentalist\"\n", - " else:\n", - " next_step = \"falsification_experimentalist\"\n", - " else:\n", - " next_step = proposed_next_step\n", - "\n", - " print(\"PLANNER: Next step: \" + next_step)\n", - " return next_step" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The ``experimentalist_planner`` function accepts a ``controller``'s state as input and returns the next step to be executed. Here, we call the ``last_result_kind_planner`` to obtain the default next step. For instance, according to the autonomous empirical research paradigm, if the last step involved executing the ``\"theorist\"``, the next step would be executing the ``experimentalist``.\n", - "\n", - "If the next default step is the ``experimentalist``, the ``experimentalist_planner`` will select the type of experimentalist based on the total number of collected observations." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Executor Collection Declaration\n", - "\n", - "In order for the ``BaseController`` to work with the ``experimentalist_planner``, we need to specify the experimentalists that it selects to be executed. In the next code block, we define all experimentalists by wrapping each of them into a ``Pipeline``. However, at this point, we don't need to provide the respective paramters for each experimentalist–we will provide these later, directly to the ``BaseController`` object." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.experimentalist.pipeline import make_pipeline\n", - "\n", - "seed_pipeline = make_pipeline([np.linspace(0, 2*np.pi, 3)])\n", - "novelty_pipeline = make_pipeline([novelty_sample])\n", - "falsification_pipeline = make_pipeline([falsification_sample])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now wrap all elements of our research process–this includes all experimentalists as well as the theorist and experiment runner–into a collection of executors. The following code block defines this collection using ``ChainedFunctionMapping``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.workflow.executor import (ChainedFunctionMapping, from_experimentalist_pipeline,\n", - " from_experiment_runner_callable, from_theorist_estimator)\n", - "\n", - "executor_collection = ChainedFunctionMapping(\n", - " seed_experimentalist=\n", - " [from_experimentalist_pipeline, seed_pipeline],\n", - " novelty_experimentalist=\n", - " [from_experimentalist_pipeline, novelty_pipeline],\n", - " falsification_experimentalist=\n", - " [from_experimentalist_pipeline, falsification_pipeline],\n", - " experiment_runner=[from_experiment_runner_callable, run_experiment],\n", - " theorist=[from_theorist_estimator, theorist_bms],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the ``ChainedFunctionMapping``, we specify each element by its type, followed by its function. For instance, the ``seed_experimentalist`` is defined as an experimentalist pipeline. Thus, we specify it as ``from_experimentalist_pipeline``, and chain it with its respectie function ``seed_experimentalist`` defined above." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Base Controller Declaration\n", - "\n", - "So far, we have defined a ``experimentalist_planner`` function which determines the next step in our workflow. We have also defined a ``executor_collection`` defining each step of the workflow. Both will be provided to a special ``Controller`` called ``BaseController``. The ``BaseController`` does not require us to specify a ``theorist``, ``experimentalist``, or ``experiment_runner``. Instead, we can provide it with an ``executor_collection`` specifying all the elements of the workflow we require.\n", - "\n", - "The ``BaseController`` also requires us to specify an intiial ``state``. Here, we can instantiate a state as a ``History`` object which entails all variables of the experiment (as declared in ``metadata``) along with the parameters provided to each element in the ``executor_collection``. Let's begin with defining the parameters for all elements in the ``executor_collection``. Here, only two of the elements (``novelty_experimentalist`` and ``falsification_experimentalist``) require us to specify additional parameters.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "params = {\"novelty_experimentalist\":\n", - " {\"novelty_sample\":\n", - " {\"condition_pool\": condition_pool,\n", - " \"reference_conditions\": \"%observations.ivs%\", # access all conditions probed so far\n", - " \"num_samples\": 3},\n", - " },\n", - " \"falsification_experimentalist\":\n", - " {\"falsification_sample\":\n", - " {\"condition_pool\": condition_pool,\n", - " \"model\": \"%models[-1]%\", # access last model generated by theorist\n", - " \"reference_conditions\": \"%observations.ivs%\", # access all conditions probed so far\n", - " \"reference_observations\": \"%observations.dvs%\", # access all observations collected so far\n", - " \"metadata\": metadata,\n", - " \"num_samples\": 3}\n", - " }\n", - " }" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the ``metadata`` and ``params``, we can instantiate an initial ``state`` for the workflow." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.workflow.state import History\n", - "\n", - "state = History(variables=metadata, params=params)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For convenience, let us also define a monitor function which can print the current total number of observations. We will provide this monitor to the ``BaseController``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def monitor(state):\n", - " all_observations = [item for sublist in state.observations for item in sublist]\n", - " num_observations = len(all_observations)\n", - " print(f\"MONITOR: Number of observations {num_observations}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now have all the required input arguments for the ``BaseController``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from autora.workflow.base import BaseController\n", - "\n", - "# define controller\n", - "controller = BaseController(\n", - " state=state,\n", - " monitor=monitor,\n", - " planner=experimentalist_planner,\n", - " executor_collection=executor_collection,\n", - ")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, let's execute the controller for 5 research cycles, measured in terms of the number of generated models." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='seed_experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14a875280>\n", - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14c1ae5e0>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14c1ae5e0>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PLANNER: Next step: seed_experimentalist\n", - "MONITOR: Number of observations 0\n", - "MONITOR: Number of models: 0\n", - "PLANNER: Next step: experiment_runner\n", - "MONITOR: Number of observations 3\n", - "MONITOR: Number of models: 0\n", - "PLANNER: Next step: theorist\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 14.96it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='novelty_experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14c1ae790>\n", - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14a875940>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14b6a05e0>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 3\n", - "MONITOR: Number of models: 1\n", - "PLANNER: Next step: novelty_experimentalist\n", - "MONITOR: Number of observations 3\n", - "MONITOR: Number of models: 1\n", - "PLANNER: Next step: experiment_runner\n", - "MONITOR: Number of observations 6\n", - "MONITOR: Number of models: 1\n", - "PLANNER: Next step: theorist\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 14.48it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='novelty_experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x1497e4430>\n", - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14995df70>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14995df70>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 6\n", - "MONITOR: Number of models: 2\n", - "PLANNER: Next step: novelty_experimentalist\n", - "MONITOR: Number of observations 6\n", - "MONITOR: Number of models: 2\n", - "PLANNER: Next step: experiment_runner\n", - "MONITOR: Number of observations 9\n", - "MONITOR: Number of models: 2\n", - "PLANNER: Next step: theorist\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:07<00:00, 13.28it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='falsification_experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14937e700>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 9\n", - "MONITOR: Number of models: 3\n", - "PLANNER: Next step: falsification_experimentalist\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x1496dd040>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14937e700>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 9\n", - "MONITOR: Number of models: 3\n", - "PLANNER: Next step: experiment_runner\n", - "MONITOR: Number of observations 12\n", - "MONITOR: Number of models: 3\n", - "PLANNER: Next step: theorist\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 15.86it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", - "INFO:autora.workflow.base:getting step_name='falsification_experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14a286040>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 12\n", - "MONITOR: Number of models: 4\n", - "PLANNER: Next step: falsification_experimentalist\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experiment_runner'\n", - "INFO:autora.workflow.base:running next_function=._executor_experiment_runner at 0x14937e700>\n", - "INFO:autora.workflow.base:getting step_name='theorist'\n", - "INFO:autora.workflow.base:running next_function=._executor_theorist at 0x14937e700>\n", - "INFO:autora.theorist.bms.regressor:BMS fitting started\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 12\n", - "MONITOR: Number of models: 4\n", - "PLANNER: Next step: experiment_runner\n", - "MONITOR: Number of observations 15\n", - "MONITOR: Number of models: 4\n", - "PLANNER: Next step: theorist\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:06<00:00, 14.46it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 15\n" - ] - } - ], - "source": [ - "from itertools import takewhile\n", - "\n", - "continue_criterion = lambda controller: len(controller.state.models) < 5\n", - "\n", - "for step in takewhile(continue_criterion, controller):\n", - " print(f\"MONITOR: Number of models: {len(step.state.models)}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can observe that the controller begins with sampling experiment condition using the ``seed_experimentalist``. It then proceeds to sample condition using the ``novelty_experimentalist`` until it has collected 7 or more observations, at which it switches to the ``falsification_experimentalist``." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Customizing Automated Empirical Research Components\n", - "\n", - "``autora`` is a flexible framework in which users can integrate their own theorists, experimentalists, and experiment_runners in a automated empirical research workflow. This section illustrates the integration of custom theorists and experimentalists. For more information on how to contribute your own modules to the ``autora`` ecosystem, please refer to the [Contributor Documentation](https://autoresearch.github.io/autora/contribute/modules/).\n", - "\n", - "To illustrate the use of custom theorists and experimentalists, we consider a simple workflow introduced above:\n", - "1. Generate 3 seed experimental conditions\n", - "2. Iterate through the following steps\n", - " - Collect observations using ``run_experiment``\n", - " - Identify a model relating conditions to observations using ``theorist_bms``\n", - " - Identify 3 new experimental conditions using ``falsification_sample``" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# generate initial pool of 3 experimental conditions\n", - "seed_conditions = np.linspace(0,2*np.pi,3)\n", - "\n", - "params = {\n", - " \"experimentalist\":\n", - " {\"condition_pool\": condition_pool,\n", - " \"model\": \"%models[-1]%\", # access last model generated by theorist\n", - " \"reference_conditions\": \"%observations.ivs%\", # access all conditions probed so far\n", - " \"reference_observations\": \"%observations.dvs%\", # access all observations collected so far\n", - " \"metadata\": metadata,\n", - " \"num_samples\": 3}\n", - " }\n", - "\n", - "# define controller\n", - "controller = Controller(\n", - " monitor=monitor,\n", - " variables=metadata,\n", - " experimentalist=falsification_sample,\n", - " experiment_runner=run_experiment,\n", - " theorist=theorist_bms,\n", - " params=params,\n", - ")\n", - "\n", - "# seed controller\n", - "controller.seed(conditions=[seed_conditions])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Custom Theorists\n", - "\n", - "What if we wanted to replace the ``theorist_bms`` with a custom theorist?\n", - "\n", - "We can implement our theorist as a class that inherits from `sklearn.base.BaseEstimator`. The class must implement the following methods:\n", - "\n", - "- `fit(self, conditions, observations)`\n", - "- `predict(self, conditions)`\n", - "\n", - "The follwing code block implements such a theorist that fits a polynomial of a specified degree." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"\n", - "Example Theorist\n", - "\"\"\"\n", - "\n", - "import numpy as np\n", - "from sklearn.base import BaseEstimator\n", - "\n", - "\n", - "class PolynomialRegressor(BaseEstimator):\n", - " \"\"\"\n", - " This theorist fits a polynomial function to the data.\n", - " \"\"\"\n", - "\n", - " def __init__(self, degree: int = 3):\n", - " self.degree = degree\n", - "\n", - " def fit(self, conditions, observations):\n", - "\n", - " # polyfit expects a 1D array\n", - " if conditions.ndim > 1:\n", - " conditions = conditions.flatten()\n", - "\n", - " if observations.ndim > 1:\n", - " observations = observations.flatten()\n", - "\n", - " # fit polynomial\n", - " self.coeff = np.polyfit(conditions, observations, 2)\n", - " self.polynomial = np.poly1d(self.coeff)\n", - " pass\n", - "\n", - " def predict(self, conditions):\n", - " return self.polynomial(conditions)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now assign the theorist to a new controller." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "theorist_poly = PolynomialRegressor(degree = 3)\n", - "\n", - "# define controller\n", - "controller_with_polynomial_theorist = Controller(\n", - " monitor=monitor,\n", - " variables=metadata,\n", - " experimentalist=falsification_sample,\n", - " experiment_runner=run_experiment,\n", - " theorist=theorist_poly,\n", - " params=params,\n", - ")\n", - "\n", - "# seed controller\n", - "controller_with_polynomial_theorist.seed(conditions=[seed_conditions])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's run the controller with the new theorist for 3 research cycles, defined by the number of models generated." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.workflow.base:getting step_name='experimentalist'\n", - "INFO:autora.workflow.base:running next_function=._executor_experimentalist at 0x14a875550>\n", - "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MONITOR: Number of observations 15\n" - ] - } - ], - "source": [ - "from itertools import takewhile\n", - "\n", - "continue_criterion = lambda controller: len(controller.state.models) < 5\n", - "\n", - "for step in takewhile(continue_criterion, controller_with_polynomial_theorist):\n", - " print(f\"MONITOR: Number of models: {len(step.state.models)}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can plot the last model identified by our custom theorist against the ground truth." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "last_polynomial_model = controller_with_polynomial_theorist.state.models[-1]\n", - "\n", - "predicted_observations_polynomial = last_polynomial_model.predict(condition_pool)\n", - "\n", - "# plot model predictions against ground-truth\n", - "import matplotlib.pyplot as plt\n", - "plt.plot(condition_pool, ground_truth(condition_pool), label='Ground Truth')\n", - "plt.plot(condition_pool, predicted_observations_polynomial, label='Polynomial Fit')\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Model Predictions')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Custom Experimentalists\n", - "\n", - "We can also implement custom experimentalists. Experimentalists are generally implemented as functions that can be integrated into an\n", - "[Experimentalist Pipeline](https://autoresearch.github.io/autora/core/docs/pipeline/Experimentalist%20Pipeline%20Examples/). For instance, an experimentalist sampler function expects a pool of experimental conditions–typically passed as a 2D numpy array named ``condition_pool``–and returns a modified set of experimental conditions.\n", - "\n", - "The following code block implements a basic experimentalist that considers two models, and identifies experimental conditions for which the two models differ most in their predictions. This is a special case of the [Model Disagreement Sampler](https://autoresearch.github.io/autora/user-guide/experimentalists/samplers/model-disagreement/)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def model_disagreement_sample(condition_pool, model_a, model_b, num_samples = 1):\n", - "\n", - " # get predictions from both models\n", - " prediction_a = model_a.predict(condition_pool)\n", - " prediction_b = model_b.predict(condition_pool)\n", - "\n", - " # compute mean squared distance between predictions\n", - " disagreement = np.mean((prediction_a - prediction_b) ** 2, axis=1)\n", - "\n", - " # sort the summed disagreements and select the top n\n", - " selected_conditions_idx = (-disagreement).argsort()[:num_samples]\n", - "\n", - " return condition_pool[selected_conditions_idx]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can illustrate our new experimentalist sampler by fitting two different theorists to an initial set of conditions and observations. Here, we consider the BMS theorist and our custom polynomial theorist from above. We then sample 3 experimental conditions using our new experimentalist ``model_disagreement_sample``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:autora.theorist.bms.regressor:BMS fitting started\n", - "100%|██████████| 100/100 [00:10<00:00, 9.61it/s]\n", - "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" - ] - } - ], - "source": [ - "# fit two theorists\n", - "theorist_bms.fit(initial_conditions, initial_observations)\n", - "theorist_poly.fit(initial_conditions, initial_observations)\n", - "\n", - "# sample experimental conditions with our custom experimentalist sampler function\n", - "selected_conditions = model_disagreement_sample(condition_pool,\n", - " theorist_bms,\n", - " theorist_poly,\n", - " num_samples = 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "After fitting both theorists, we can compare their predictions across the entire pool of experimental conditions. We will add the sampled experimental conditions to the plot." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# plot model predictions against ground-truth\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# obtain predictions for both theorists\n", - "predicted_observations_bms = theorist_bms.predict(condition_pool)\n", - "predicted_observations_poly = theorist_poly.predict(condition_pool)\n", - "\n", - "plt.plot(condition_pool, ground_truth(condition_pool), label='Ground Truth')\n", - "plt.plot(condition_pool, predicted_observations_bms, label='Predictions of BMS Theorist')\n", - "plt.plot(condition_pool, predicted_observations_poly, label='Predictions of Polynomial Theorist')\n", - "\n", - "y_min = -2.5\n", - "y_max = 1\n", - "\n", - "# plot conditions obtained by novelty sampler\n", - "for idx, condition in enumerate(selected_conditions):\n", - " if idx == 0:\n", - " plt.plot([condition[0], condition[0]],\n", - " [y_min, y_max],\n", - " '--r', label='selected conditions')\n", - " else: # we want to omit the label for all other conditions\n", - " plt.plot()\n", - "\n", - "\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Model Disagreement')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, we can integrate our custom experimentalist and theorist into a closed-loop empirical research workflow, e.g., using basic loop constructs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:10<00:00, 9.89it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss of BMS theorist in cycle 0: 1.2163627818326361\n", - "Loss of polynomial theorist in cycle 0: 20.625978925891836\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:10<00:00, 9.87it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss of BMS theorist in cycle 1: 0.0\n", - "Loss of polynomial theorist in cycle 1: 0.5257924709018393\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:08<00:00, 12.09it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss of BMS theorist in cycle 2: 0.0\n", - "Loss of polynomial theorist in cycle 2: 0.8453161612839792\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:09<00:00, 10.20it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss of BMS theorist in cycle 3: 0.0\n", - "Loss of polynomial theorist in cycle 3: 0.2918752703795088\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:10<00:00, 9.57it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss of BMS theorist in cycle 4: 0.5358783173609328\n", - "Loss of polynomial theorist in cycle 4: 0.2796160348658682\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "num_cycles = 5 # number of empirical research cycles\n", - "measurements_per_cycle = 3 # number of data points to collect for each cycle\n", - "\n", - "# generate an initial set experimental conditions\n", - "conditions = random_pool(metadata.independent_variables[0].allowed_values,\n", - " n=measurements_per_cycle)\n", - "# convert iterator into 2-dimensional numpy array\n", - "conditions = np.array(list(conditions)).reshape(-1, 1)\n", - "\n", - "# collect initial set of observations\n", - "observations = run_experiment(conditions)\n", - "\n", - "for cycle in range(num_cycles):\n", - "\n", - " # use BMS theorist and custom polynomial theorist to fit the model to the data\n", - " theorist_bms.fit(conditions, observations)\n", - " theorist_poly.fit(conditions, observations)\n", - "\n", - " # obtain new conditions from custrom experimentalist sampler\n", - " new_conditions = model_disagreement_sample(condition_pool,\n", - " theorist_bms,\n", - " theorist_poly,\n", - " num_samples = 3)\n", - "\n", - " # obtain new observations\n", - " new_observations = run_experiment(new_conditions)\n", - "\n", - " # combine old and new conditions and observations\n", - " conditions = np.concatenate((conditions, new_conditions))\n", - " observations = np.concatenate((observations, new_observations))\n", - "\n", - " # evaluate model of the theorist based on its ability to predict each observation from the ground truth, evaluated across the entire space of experimental conditions\n", - " loss_bms = np.mean(np.square(theorist_bms.predict(condition_pool) - ground_truth(condition_pool)))\n", - " loss_poly = np.mean(np.square(theorist_poly.predict(condition_pool) - ground_truth(condition_pool)))\n", - " print(\"Loss of BMS theorist in cycle {}: {}\".format(cycle, loss_bms))\n", - " print(\"Loss of polynomial theorist in cycle {}: {}\".format(cycle, loss_poly))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Help\n", - "We hope that this tutorial helped demonstrate the fundamental components of ``autora``, and how they can be combined to facilitate automated (closed-loop) empirical research through synthetic experiments. We encourage you to explore other [tutorials](https://autoresearch.github.io/autora/tutorials/) and check out the [documentation](https://autoresearch.github.io/).\n", - "\n", - "If you encounter any issues, bugs, or questions, please reach out to us through the [AutoRA Forum](https://github.com/orgs/AutoResearch/discussions). Feel free to report any bugs by [creating an issue in the AutoRA repository](https://github.com/AutoResearch/autora/issues).\n", - "\n", - "You may also post questions directly into the [User Q&A Section](https://github.com/orgs/AutoResearch/discussions/categories/using-autora).\n" - ] - } - ], - "metadata": { - "colab": { - "provenance": [], - "toc_visible": true - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/docs/tutorials/basic/Tutorial-I-Components.ipynb b/docs/tutorials/basic/Tutorial-I-Components.ipynb new file mode 100644 index 000000000..ab2d332e7 --- /dev/null +++ b/docs/tutorials/basic/Tutorial-I-Components.ipynb @@ -0,0 +1,876 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction to AutoRA\n", + "## Basic Tutorial I: Components" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**[AutoRA](https://pypi.org/project/autora/)** (**Au**tomated **R**esearch **A**ssistant) is an open-source framework designed to automate various stages of empirical research, including model discovery, experimental design, and data collection.\n", + "\n", + "This notebook is the first of four notebooks within the basic tutorials of ``autora``. We suggest that you go through these notebooks in order as each builds upon the last. However, each notebook is self-contained and so there is no need to *run* the content of the last notebook for your current notebook. We will here provide a link to each notebook, but we will also provide a link at the end of each notebook to navigate you to the next notebook.\n", + "\n", + "[AutoRA Basic Tutorial I: Components](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-I-Components/)
\n", + "[AutoRA Basic Tutorial II: Loop Constructs](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-II-Loop-Constructs/)
\n", + "[AutoRA Basic Tutorial III: Functional Workflow](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-III-Functional-Workflow/)
\n", + "[AutoRA Basic Tutorial IV: Customization](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-IV-Customization/)
\n", + "\n", + "These notebooks provide a comprehensive introduction to the capabilities of ``autora``. **It demonstrates the fundamental components of ``autora``, and how they can be combined to facilitate automated (closed-loop) empirical research through synthetic experiments.**\n", + "\n", + "**How to use this notebook** *You can progress through the notebook section by section or directly navigate to specific sections. If you choose the latter, it is recommended to execute all cells in the notebook initially, allowing you to easily rerun the cells in each section later without issues.*" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installation\n", + "\n", + "The AutoRA ecosystem is a comprehensive collection of packages that together establish a framework for closed-loop empirical research. At the core of this framework is the ``autora`` package, which serves as the parent package and is essential for end users to install. It provides functionalities for automating workflows in empirical research and includes vetted modules with minimal dependencies.\n", + "\n", + "However, the flexibility of autora extends further with the inclusion of *optional* modules as additional dependencies. Users have the freedom to selectively install these modules based on their specific needs and preferences.\n", + "\n", + "\"AutoRA\n", + "\n", + "*Optional dependencies enable users to customize their autora environment without worrying about conflicts with other packages within the broader autora ecosystem. To install an optional module, simply use the command ``pip install autora[dependency-name]``, where ``dependency-name`` corresponds to the name of the desired module (see example below).*\n", + "\n", + "To begin, we will install all the relevant optional dependencies. Our main focus will be on two experimentalists: ``experimentalist-falsification`` and ``experimentalist-sampler-novelty``, along with a Bayesian Machine Scientist (BMS) implemented in the ``theorist-bms`` package. It's important to note that installing a module will automatically include the main autora package, as well as any required dependencies for workflow management and running synthetic experiments.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install -q \"autora[experimentalist-falsification]\"\n", + "!pip install -q \"autora[experimentalist-sampler-novelty]\"\n", + "!pip install -q \"autora[experimentalist-sampler-model-disagreement]\"\n", + "!pip install -q \"autora[theorist-bms]\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make all simulations in this notebook replicable, we will set some seeds." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import torch\n", + "\n", + "np.random.seed(42)\n", + "torch.manual_seed(42)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Automated Empirical Research Components\n", + "\n", + "The goal of this section is to set up all ``autora`` components to enable a closed-loop discovery workflow with synthetic data. This involves specifying (1) the experiment runner, (2) a theorist for model discovery, (3) an experimentalist for identifying novel experiment conditions.\n", + "\n", + "\n", + "* **Experiment Runner:** The experiment runner collects observations reflecting experimental conditions.\n", + "* **Theorist:** The theorist automates the construction of models from data. These can take many forms, for example linear regression and the bayesian machine scientist.\n", + "* **Experimentalist:** Each experimentalist identifies experimental conditions that yield scientific merit.\n", + "\n", + "\"AutoRA\n", + "\n", + "Each of these components automates a process of the scientific method that is generally conducted manually. The experiment runner parallels a *research assistant* that collects data from participants. The theorist takes the place of a *computational scientist* that applies modelling techniques to discover how to best describe the data. The experimentalist acts as a *research design expert* to determine the next iteration of experimentation. Each of these steps in the scientific method can be arduous and time consuming to conduct manually, and so ``autora`` allows for the automation of these steps and thus quickens the scientific method by leveraging data-driven techniques." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Toy Example of the Components\n", + "Before jumping into each component in detail, we will present a toy example to provide you with an overview on how these components work together within a closed-loop. After some setup, you will see steps 1-3, which uses the three componens - namely, the EXPERIMENTALIST to propose new conditions, the EXPERIMENT RUNNER to retrieve new observations from those conditions, and the THEORIST to model the new data. We then finish this example by plotting our data and findings.\n", + "\n", + "*Do not stop with this toy example! At this point, it may be tempting to start working on your own project, but we urge you to continue through the tutorials. ``autora`` has a lot of embedded functionality that you are going to want to use, and this toy example has stripped those away. So, keep going and see how much ``autora`` has to offer!*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:03<00:00, 26.52it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACSdklEQVR4nOzdd3wT9R/H8ddd0j0pFNpCadm0FCh7CwgIoiwHiIqCuCeioqg/wb33Fge4ERVERGTL3pTVssum7C46k9zvj2srpRvSXpJ+no9HH5DL5fJOCsnnvvcdiqZpGkIIIYQQ1ZBqdAAhhBBCCKNIISSEEEKIaksKISGEEEJUW1IICSGEEKLakkJICCGEENWWFEJCCCGEqLakEBJCCCFEtSWFkBBCCCGqLSmEhBBCCFFtSSEkhLCryMhIRo8ebXQMp6EoCpMnTzY6hhDVlhRCQohy2bZtGzfccAMRERF4enpSt25d+vXrx4cffmh0NACWLl2KoijF/tx0002GZps7d64UO0I4KEXWGhNClGXVqlX07t2b+vXrc/vttxMSEsLhw4dZs2YN+/btY+/evQX7Zmdno6oqbm5uVZpx6dKl9O7dm4cffpgOHToUui8yMpLu3btXaZ4LPfjgg3z88ccU93GblZWF2WzGbDYbkEwIIf/zhBBlevnllwkICGD9+vUEBgYWuu/kyZOFbnt4eFRhsqJ69OjBDTfcYGiGivD09DQ6ghDVmlwaE0KUad++fbRo0aJIEQRQu3btQrcv7iM0depUFEVh5cqVjB8/nuDgYHx8fBg2bBinTp0qcry///6bHj164OPjg5+fH9dccw07duywy+soqf9Sr1696NWrV8Ht/Mtsv/zyCy+//DL16tXD09OTPn36FGr9yrd27VoGDhxIjRo18PHxoVWrVrz//vsAjB49mo8//hig0OW6fMX1Edq8eTNXX301/v7++Pr60qdPH9asWVNon4q+r0KI4kmLkBCiTBEREaxevZrt27cTExNzScd46KGHqFGjBpMmTeLAgQO89957PPjgg0yfPr1gn++++47bb7+d/v378/rrr5ORkcGnn35K9+7d2bx5M5GRkWU+T1paGqdPny60LSgoCFWt+Hnfa6+9hqqqPP7446SkpPDGG29wyy23sHbt2oJ9FixYwLXXXktoaCiPPPIIISEhJCQkMGfOHB555BHuuecejh07xoIFC/juu+/KfM4dO3bQo0cP/P39mTBhAm5ubnz++ef06tWLf//9l06dOhXavzzvqxCiZFIICSHK9Pjjj3P11VcTGxtLx44d6dGjB3369KF3797l7gtUs2ZN5s+fX9AaYrPZ+OCDD0hJSSEgIID09HQefvhh7rzzTr744ouCx91+++00a9aMV155pdD2ktxxxx1FtiUmJpariLpYVlYWcXFxuLu7A1CjRg0eeeSRgoLQarVyzz33EBoaSlxcXKEWs/z+QF26dKFp06YsWLCAW2+9tcznfPbZZ8nNzWXFihU0bNgQgNtuu41mzZoxYcIE/v3330L7l/W+CiFKJ5fGhBBl6tevH6tXr2bw4MFs2bKFN954g/79+1O3bl1mz55drmPcfffdhS4J9ejRA6vVysGDBwG9ZSU5OZmRI0dy+vTpgh+TyUSnTp1YsmRJuZ7nueeeY8GCBYV+QkJCKv6igTFjxhQUQfmZAfbv3w/ol7ASExMZN25ckcuGF77W8rJarcyfP5+hQ4cWFEEAoaGh3HzzzaxYsYLU1NRCjynrfRVClE5ahIQQ5dKhQwd+//13cnJy2LJlCzNnzuTdd9/lhhtuIC4ujujo6FIfX79+/UK3a9SoAcC5c+cA2LNnDwBXXnllsY/39/cvV86WLVvSt2/fcu1blrIy79u3D+CSLxde7NSpU2RkZNCsWbMi90VFRWGz2Th8+DAtWrQod0YhROmkEBJCVIi7uzsdOnSgQ4cONG3alDFjxjBjxgwmTZpU6uNMJlOx2/MvIdlsNkDvJ1RcC449hpeX1EpjtVqLzVdWZkfgDBmFcGRSCAkhLln79u0BOH78+GUfq1GjRoA+Cs1eLToXq1GjBsnJyUW2Hzx4sNClqPLKz7x9+/ZSM5f3MllwcDDe3t7s2rWryH07d+5EVVXCw8MrnFMIUTLpIySEKNOSJUuKbWGYO3cuQLGXciqqf//++Pv788orr5Cbm1vkfnsMCW/UqBFr1qwhJyenYNucOXM4fPjwJR2vbdu2NGjQgPfee69IgXXh++Xj4wNQbBF2IZPJxFVXXcUff/zBgQMHCrafOHGCH3/8ke7du5f7EqEQonykRUgIUaaHHnqIjIwMhg0bRvPmzcnJyWHVqlVMnz6dyMhIxowZc9nP4e/vz6effsqoUaNo27YtN910E8HBwRw6dIi//vqLbt268dFHH13Wc9x55538+uuvDBgwgOHDh7Nv3z6+//77gpadilJVlU8//ZRBgwYRGxvLmDFjCA0NZefOnezYsYN//vkHgHbt2gHw8MMP079/f0wmU4nLfrz00kssWLCA7t27c//992M2m/n888/Jzs7mjTfeuLQXLoQokRRCQogyvfXWW8yYMYO5c+fyxRdfkJOTQ/369bn//vt59tlni51o8VLcfPPNhIWF8dprr/Hmm2+SnZ1N3bp16dGjh12Krf79+/P222/zzjvvMG7cONq3b8+cOXN47LHHLuuYS5Ys4fnnn+ftt9/GZrPRqFEj7rrrroJ9rrvuOh566CF+/vlnvv/+ezRNK7EQatGiBcuXL2fixIm8+uqr2Gw2OnXqxPfff19kDiEhxOWTtcaEEEIIUW1JHyEhhBBCVFtSCAkhhBCi2pJCSAghhBDVlhRCQgghhKi2pBASQgghRLUlhZAQQgghqi2ZR6gMNpuNY8eO4efnd0mrSQshhBCi6mmaRlpaGmFhYahqye0+UgiV4dixY7K2jxBCCOGkDh8+TL169Uq8XwqhMvj5+QH6Gylr/AghhBDOITU1lfDw8ILv8ZJIIVSG/Mth/v7+UggJIYQQTqasbi3SWVoIIYQQ1ZYUQkIIIYSotqQQEkIIIUS1JYWQEEIIIaotKYSEEEIIUW1JISSEEEKIaksKISGEEEJUW1IICSGEEKLakkJICCGEENWWzCwt7MNmhYOrIP0E+NaBiK6gmoxOJYQQQpRKCiFx+eJnw7wnIfXYf9v8w2DA6xA92LhcQgghRBnk0pi4PPGz4ZfbChdBAKnH9e3xs43JJYQQQpSDFELi0tmseksQWjF35m2b95S+nxBCCOGApBASl+7gqqItQYVokHpU308IIYRwQFIIiUuXfsK++wkhhBBVTAohcel869h3PyGEEKKKSSEkLl1EV310GEoJOyjgX1ffTwghhHBAUgiJS6ea9CHyQNFiKO/2gNdkPiEhhBAOSwohcXmiB8Pwb8E/tPB2/zB9u8wjJIQQwoHJhIri8kUPhubXyMzSQgghnI4UQsI+VBM06GF0CiGEEKJC5NKYEEIIIaotKYSEEEIIUW1JISSEEEKIaksKISGEEEJUW1IICSGEEKLakkJICCGEENWWFEJCCCGEqLakEBJCCCFEtSWFkBBCCCGqLSmEhBBCCFFtyRIbQgjh7GxWWetPiEskhZAQQjiz+Nkw70lIPfbfNv8wGPC6viCyEKJUcmlMCCGcVfxs+OW2wkUQQOpxfXv8bGNyCeFEpBASQghnZLPqLUFoxdyZt23eU/p+QogSSSEkhBDO6OCqoi1BhWiQelTfTwhRIimEhBDCGaWfsO9+QlRTUggJIYQz8q1j3/2EqKakEBJCCGcU0VUfHYZSwg4K+NfV9xNClMipCqFly5YxaNAgwsLCUBSFWbNmlfmYpUuX0rZtWzw8PGjcuDFTp06t9JxCCFHpVJM+RB4oWgzl3R7wmswnJEQZnKoQOn/+PK1bt+bjjz8u1/6JiYlcc8019O7dm7i4OMaNG8edd97JP//8U8lJhRCiCkQPhuHfgn9o4e3+Yfp2mUdIiDIpmqYVN/bS4SmKwsyZMxk6dGiJ+zz55JP89ddfbN++vWDbTTfdRHJyMvPmzSvX86SmphIQEEBKSgr+/v6XG7vasNlsHEg+hYpCZFBto+MI4dqKmVnahsKh5NO4m80EePjg4+FhdEohqlR5v79dembp1atX07dv30Lb+vfvz7hx40p8THZ2NtnZ2QW3U1NTKyuey9l4dB8fr/+FzWeWkKueRFHz5i+x+uKn1GdA5CAe63qjfCALYW+qCRr0ICs3hzdW/MLiZV9zxroLTGkFu5gtYUQFdOKO2Ovp27i1gWGFcCwuXQglJSVRp07hERN16tQhNTWVzMxMvLy8ijzm1Vdf5fnnn6+qiC7hWOpZ7p7zAgdyFqMoGpgv6rFgSieNeGYciufXxM+4NnwML/UZg6o61ZVZIRyWzWbj1WU/M2PfV1jNJ/WNF3UNspiPse38TMatmEX9tT1556onaR5cr+rDCuFgXLoQuhQTJ05k/PjxBbdTU1MJDw83MJFj+3zdXD7e/gqaKQVFAR9bM/qGX8OwqCtoXqseWdYclh/Ywaxdi9h47i80Uwp/HnuPFd8tY+qgN2gYJEN7hbgcZzLSuOm3J0iyrdQ/0a3etA4YyNWNe3JN0w6YVJWjqWf4edtiFh1eQLISx2HLUm6cs4a7mj3Lw12HGP0ShDCUSxdCISEhnDhReDKxEydO4O/vX2xrEICHhwcecummXJ5e8BWzj36AYrKhWoIZFzuRMe36FdrHBw+GRndmaHRnzmc/zrh5H7D63A+cUzYxdOaNfNb3C7pGNDfoFQjh3DYe3ced8+7DYj6Opqm08buBt/o/TB3fgEL7NQ+ux+Qrb2Myt/Hz1mW8ueENckwH+WL3/9hxeg+fXjteWmhFteXS//K7dOnCokWLCm1bsGABXbp0MSiR67jrjzf589h7KIqNUFN3/r35zyJF0MV8PDyYMuQJXu00BdUSjGY+xz2LxrJk/7YqSi2E64g7foA75o3FYj4OVj+ebP0u313/vyJF0MVuanUFy0f9RoRbHxRFY9W5adz02/+qKLUQjsepCqH09HTi4uKIi4sD9OHxcXFxHDp0CNAva912220F+997773s37+fCRMmsHPnTj755BN++eUXHn30USPiu4wJ/3zBmuRvAWjhPZR5N39MoJdPuR8/KKoD0wd/i9kSCqZUHl56N+uP7K2suEK4nISTR7h97h3YzGdQLbX4aeDPjGpzZbkf7+3mweyb3qFnzTv142XM5t4/366suEI4NKcqhDZs2ECbNm1o06YNAOPHj6dNmzY899xzABw/frygKAJo0KABf/31FwsWLKB169a8/fbbfPnll/Tv39+Q/K7g83VzmXtcn8cp1vdGfr7xxUtqUm8eXI/fhn2Hm6UemNK5+58HOJGeYu+4QriclKwMbp1zLzbzKRRLEFOv/pqYkPoVPo6qqnx07SN0rXE7ACvPTmXSomn2jiuEw3PaeYSqiswj9J/lifHct/Q2FDWbULUb82755LL7FWxPOsTIuTeBKY0atGXxrV9jNslMuEKU5JofH+FQ7mKwejOl77d0rt/sso954y9PszPzTzSbmbe7f03/Jm3skFQIY5X3+9upWoSEcTJysxm3ZAKKmo2XtQm/DX/XLp0rY0Lq878Ob6DZTJxjE/f/9Y4d0grhmp5Z8DWHchejaQoPxkyySxEE8NP1LxKgtURRLTy57AnOZKSV/SAhXIQUQqJc7vzjZXJMB8HqxZcD38HPo/hRd5dieMvuXBP2AACrzvzAgj1xdju2EK5i7aE9/HHkIwDaB4zgno4D7XZss8nEtEHvoFgDsJpPcPPvT9rt2EI4OimERJl+2LKUremzALil8WO0Com0+3O82m8sgVprFNXKU8ufJiM3u+wHCVFN2Gw2xi16BkXNxdvWlC8HP2X352hUM4THYp9H0xSOWZfz0Zo/7f4cQjgiKYREqTJys3lrw8soikaYqQdPXTGiUp5HVVW+GPgaWL3IMR3m/jlvVcrzCOGMnl34DelqAprNjXevfLnS+tHd3rYPzbz0lqYvdrzFuYz0SnkeIRyJFEKiVI/N+xiLOQmsPnx57YuV+lxRtetxY4OHAdiQ/Csbj+6r1OcTwhnsOnWMP498BkCPWrdW+gSkn13zNIolEM18lnv/eq1Sn0sIRyCFkCjRjhOHWX76RwAGhd9FeGDNSn/OZ3vejLetKYpq4YlFr1T68wnh6MYveB1MWbhb6/PugAcr/fmCff25I+oxAHac/5OFe7dU+nMKYSQphESJxs1/CUXNxsPagBeuHF0lz6mqKpO6Po2mKZzS1jFt06KyHySEi1qwJ46DOUsAeLzdBDzd3Kvkecd1HUoN2qIoNp5f8WaVPKcQRpFCSBRr7q6NJNlWATCpy7NVOrfPwGbtiHTXZ8l9f/NbWKzWKntuIRzJpJWvoygaNWnPyNY9q/S5X77iSTRNJVnZwnebF1fpcwtRlaQQEsV6dfW7ANRWOzMoqmOVP/8HAyaCzZNc8xHeXPFrlT+/EEb7fN1c0pTtaJqJ13rbf5RYWXo0iKaBR/4JyXvYbLYqzyBEVZBCSBTx89ZlJCtb0DSVF64Yb0iGhkF1aBMwBIBf9n5JjsViSA4hjGCz2ZiyXe8g3cxrgN0mTqyoN/s+hmZzI9uUyFtyQiJclBRCohCbzca7G98HIMK9J90iogzL8lrf+8HqhcWcxGvLfzYshxBVbcqGeWSbEtFsbrxy5cOG5WgeXI9Yf/2E5Kc9X0urkHBJUgiJQn7c+i8Z6m40m4mXexvTGpQvzD+IDkHDAPh9/zdk5eYYmkeIqmCz2fhy+xcANPO+imbBYYbmebXPg2g2Dyzmo3ywZrahWYSoDFIIiUI+i5sCQKRHL2JDI40NA7za936wemM1n+StldI0L1zfN5sWkGXah2Yz81Lvyh8uX5bwwJpE+/YH4Pud0iokXI8UQqLAvN2bSFG2oWkKT3e71+g4ANTxDaBt4GAAZu7/Xj6Ehcubsk0/GWns1Zeo2vUMTqN7sdcDaDYz2aZEpm5aaHQcIexKCiFR4O21nwMQrLav9NlrK2JSrzvRbG7kmA4zbbPMKyRc11+7NnBe3YWmqUzu+YDRcQo0Cw6jkac+gmzKti8NTiOEfUkhJADYeHQfx61rABjX/h6D0xTWMKgODT17AfDVtm+MDSNEJXp//VcA1DF1dIhL0xea3PNBNE0lXU3gnz2bjY4jhN1IISQAeH3l1yiKDV9bFEOiOxkdp4inut6NpimkKNtkyn/hkhJOHuGYZTUA97cdY3CaotqENSBYbQvAB+vlhES4DimEBOcy0klIXwDAiGY3G5ymeF0jmlNL0T+E3133lcFphLC/F5d9iaJY8bI24voWXY2OU6w7W98OwMHs5Rw4e9LgNELYhxRCgjdXTAdTJooliPs7Xmt0nBKNaTkKgIPZKziWetbgNELYT3Lmebal/g3ADY0d82QEYGTLK3CzhqOoFl5ePs3oOELYhRRC1ZzNZmPeYX1YepfgQbibzQYnKtmo2N6YLSEoai6vLf/B6DhC2M27q34FUwaKJZBxXa8zOk6JVFVlYP0bAVh7erbM7SVcghRC1dwv21eQaz6CZjMzsfttRscplaqq9AwbCsCypNkylF64jL8PzgSgbdAAhz4ZAXii+wiw+qKZk/luwbuw7VdIXA42WRxZOCcphKq5r7boLSvh7t2IDKptcJqyPdX9ZjSbO1ZzEt/KitjCBSzcu4VM0z40TeWJro59MgIQ4OlNV3MjALYcnAK/jYVp18J7MRAvM08L5yOFUDV2JOUsxy3rALgz1nH7JVwoxK8GkR49APh2x08GpxHi8n204XsAaiqxtKgTbnCacoifzZOH5wGw3MuTJJNJ3556HH65TYoh4XSkEKrG3ln1E4pqwWwJY1hUZ6PjlNt97W4F4KR1o4xcEU7tXEY6+zKWAnBT1Ahjw5SHzQrznqRhbi7tMrOwKQqz/Hzy7tT0P+Y9JZfJhFORQqga+/f4XwB0rXM1quo8/xSuadYeN0s9FNXKu2t+MTqOEJfsvdW/gSkL1VKTu9r1NzpO2Q6ugtRjAFyflg7ATF9f/uutp0HqUX0/IZyE83z7Cbv6a9cGckyH0TQTj3UdaXScCusWcjUAK5LmGpxEiEs3/5B+MhJbox/m/EtMjiz9RMFf+2Vk4me1cczNzGovzxL3E8LRSSFUTU3ZPB2AYLUtDYPqGJym4h7tMgJNM5FjOsy83ZuMjiNEhcUdP0CashOAhzo6wWUxAN//Pis8NY1rzp8HYLavT4n7CeHopBCqhs5nZ7MvYxkANzZz3DlLStMwqA61lDYAfLFpusFphCiFzaoPL79omPmHa39GUTS8bU1pX6+xwSHLKaIr+IcBCgCD0/RCaLG3F+cVRd/uX1ffTwgnIYVQNfTFhrlgygCrH3e2G2B0nEt2fdOhAOzJ+Jfz2dnGhhGiOPGz9WHl064tNMzctmMWG8/oy9r0qTfQ4JAVoJpgwOt5NxRicnKIzMklS1VZ4OOtbx7wmr6fEE5CCqFq6M99cwBo6nOFw0/eVpq72l8NVj8wnefrTfOMjiNEYfGz9eHkeZ2LC6QeZ+vsu7GaT6LZ3Hikyw3G5LtU0YNh+LfgH4oCXJt3eex3v0B9e/RgQ+MJUVFSCFUzSWnnOGnV+9SMbuWcl8Xyebq509i7OwB/7P3L4DRCXCBvmHnBkPJCNOb46q0nYeb21PENqNJodhE9GMZth9vn0K3tUwBs8jCzNaiVwcGEqDgphKqZD9fMRFEtmCx1uKZZe6PjXLZbWgwBIMmygTMZaQanESLPBcPML2aBgstIt9ZuVoWh7Ew1QYMexFzxAN62JiiKxodrZxidSogKk0Komll8RL+E1LZmH6eaO6gk17XogmqpiaLm8tPfz8uaR8IxlDJ8fJ2XJ2dNJmpYrdxYJ6wKQ1WenmF6X8ONZ2TZG+F8nP+bUJRbwskjBcN172t/o8Fp7EPdOYfbMvQvnZ0nZ8maR8IxlDJ8/O+81qB+5zPwCqhXVYkq1YOdhqFpKrmmIyxL3GF0HCEqRAqhauSzDbNQFA0PawM6OMtw3dLkdUYdmqovs7HSy5NkVZU1j4TxLhpmni8HWOStF0J9LV4uM8y8fmAwAbQA4KvNs4wNI0QFSSFUjaxO0putOwb3NjiJHVzQGbVRroXm2TlYFIWFPl7ImkfCcBcNM8+3wtuLNJNKbYuFDv1ecalh5r3r9QNg67mlxgYRooKkEKomdpw4TIa6F4C72w8zOI0dXNQZtf/5DAAW5p1ty5pHwnAXDDPPNy/vslgDc1vMMS7w//AC93YYgmYzYTEnsWBPnNFxhCg3KYSqic/zLot5WhsRGxppdJzLd1Fn1L55hdBaL09SLuwELmseCSNdMMw8dfAn/OOtD5Uf0PZ+g4PZX72AIGqoLQGYunWWsWGEqAAphKqJNSfyLovV7mVsEHu5qDNqpMVC07zLY4u9vUrcT4gqlzfM/MsML2yqBcUSyHUtuhidqlL0Db8KgO3Jy7DZbGXsLYRjkEKoGtiedIgMdR8A97QfamwYeynojPqffhl6q5A+R4useSQcy7zE+QA08uniElNXFOfejoPRbGZs5lMs2rfV6DhClItr/m8UhXyx8Y+Cy2KtQiKNjmMfO/+C3MxCm67Kuzy22suTFFWRNY+Ewzifnc3x3I0AXN/8aoPTVJ46vgHUUPTRYz9sl9nehXOQQqgaWHdSX2m+Q3BPg5PYSf4aTpnnCm1umGuhcY5+eezrFnfKmkfCYUyLWwCmLLD6MTymh9FxKlWPuvqo1K1nVxicRIjykULIxR04e5J0ZTcAt7e+1uA0dlDqGk7Q57zeSjQzPakKQwlRujl7/wEg0quTUy90XB53trsWTVPINR9h7aE9RscRokxSCLm4Lzf9haLYMFvq0ql+E6PjXL5S1nAC6JvXTyjZto1zGelVlUqIEmXl5nA4ez0AQ5sMMDhN5WsYVAdfrSkAU7f8aXAaIcomhZCLW3Z0KQAxgd2MDWIvZQyHb5aTS1iuBU21MnXzgioKJUTJft2xEkznwerFLa1dYDLTcuhUpxcAG08tMzaIEOUghZALO5eRzlnbNgBGxgw0OI2dlDEcXgF6Z+iXx/5JXFgFgYQo3ew9+r/DELc2eLq5G5ymaoxtq1+Gz1D3k3DyiMFphCidFEIu7MuN81DUXBRLEAOatDE6jn2UsIbTfxS6W/V5hI7mbCTHYqmyaEIUZ0/qOgB6hrvIYIVyaBUSiYc1AkXRmBb3t9FxhCiVFEIubMHBRQA08XWheUtKWMPpwtvt+r4MVi8wneeX7curNJ4QF1p7aA8WcxKapjK6jev3D7pQdGBnAFYfl9FjwrG5yLejuFiOxcLxnM0ADGrc1+A0dlbMGk6A3lI0/Fu8Wl5HiFtbAGbtnm9AQCF032/TW0N8tMbUCwgyOE3Vur65vgjrGdt20rIzy9hbCOO49jjOauz3+FUFHTSHt3LBeUuiB0Pza/RRZOkn9L5DEV0LJlDsF3El3yWuZE/aWoODiupsw8kVoEK7Wt2NjlLlrmnWnv+t8QdTKnPnv8aImL6F/o8K4SikRchF/bFL76BZ26013m4eBqepJHlrONHyBv3PCz5gb2/bH00zYTOfYuXBBANDiuoqKe0caXlzeI2M6W9wmqpn3vUXAzPPApCYOA2mXQvvxegTogrhQKQQclE7U/WWkJ71qk8HzQvV8Q3AV9PnTfppm1weE1Vv6ub5KIoVk6U2PRpEGx2nauXN/t7vvD77+7/envoUqKnH9VnhpRgSDkQKIRe04cheLOZjaJrC6DbV70w0X5ta+grfm06vMTiJqI6WHPoXgEa+HQxOUsUumP29S2YWbprGETc3Et3MFMwIP+8pfT8hHIAUQi7ou63zAPC2NaZ+YLDBaYwzvIXeWTNV28mZjDSD04jqJMdi4VjOJsAFByuU5YLZ3701jQ6ZWQAs9/LK20GD1KP6fkI4ACmEXND6kysBaFOrq8FJjNUzsgWKJQhFtfBD3GKj44hqZGb86rzBCp6uOVihNBfN/n5Fpj5i7F9vr1L3E8IoUgi5mDMZaaRqeufgES2uMjiNsVRVJcJbH0a/4OBSY8OIamXWLn15l2CzCw9WKMlFs79fkaG3CG329CBVVUrcTwijSCHkYn7auhRFtaJYatCrQYzRcQzXL6IXAAczNmGz2YwNI6qNaj1Y4aLZ38MtFhrk5GJRFFZ5eenb/evq+wnhAKQQcjELD+iLHIZ7tXGd2aQvwy2xV6LZzGjms/x7YIfRcUQ1sPHovoLBCrfHVsPBCsXM/t4zb/2/ZV6e+uYBr8l8QsJhyDelM7JZIXE5bPtV//OC0RcHzusdNHuFV78J3IpT09sPf6U5AL/skNXoReW7cLBCZFBtg9MY5KLZ3/P7CS3z9iHnhm/0+4VwEDKztLOJn60PTc0blQHozdADXme9fzRW80k0TeWW1n2My+hg2tbqzL9ntrP59Gqjo4hqYMOJVaBA65pdjI5irAtmf49JOYJp01ukmHKYpQUz3OhsQlxAWoScSd4kZYWKICiYpOyflR8C4G1rSJh/9VrXqDQjW+qdxtOVPZxITzE4jXBladmZJOcNVhjW/EqD0ziAvNnfvWJHEmSOBWBW3qz3QjgKKYScxQWTlBWlbzt6Vr/0ExPUsepyOYFuEVGolmAUxcr3cfIhLCrPr9tXoKi5YPXjqsaxRsdxKN3C9GkEdqWuMziJEIVJIeQsLpikrDi5aGz21DsmDm7au6pSOY2GecPo4/b8WKRflRD28s9+fbBCiFsrzCbpDHyhm1vpE0tmq0fYf1bmEBKOQwohZ1HG5GNbPD04r6q4W925tlk1m9K/LPGzefjEHACO2eLRZPFHUUn2pG0EoFtdGRp+saja9TBbwlAUjZ+2LjI6jhAFpBByFmVMPrYyb1hqfaWhnIleKK9fVZeU43jabJw0m9nt5iaLPwq723cmiRzTYQBuain9g4rTyE9vmV1xVJbXEI7D6Qqhjz/+mMjISDw9PenUqRPr1pV8vXnq1KkoilLox9PTswrT2tFFk5RdbGXeOj6twgdWYSgHd0G/Kk8NOmZlA7DS2xNZ/FHY2w9b9f5nbtZ6NA+uZ3Aax9QnUu8ndDRri0xwKhyGUxVC06dPZ/z48UyaNIlNmzbRunVr+vfvz8mTJ0t8jL+/P8ePHy/4OXjwYBUmtqNiJinLd1o1keDhDsDNravhBG4luahfVZe8xR/X5E/qJos/CjtamdfK0di3rcFJHNdNMVfkTXCazLID8UbHEQJwskLonXfe4a677mLMmDFER0fz2Wef4e3tzddff13iYxRFISQkpOCnTh0nXt/moknK8v0boL8mN2s4zYLDjEjmmC7qV9Ulb1K3TR4eZCsl7ydERdlsNo7nbAWgX4MrDE7juGp4++JHEwB+T1hicBohdE5TCOXk5LBx40b69u1bsE1VVfr27cvq1SVPlJeenk5ERATh4eEMGTKEHTtKX2YhOzub1NTUQj8OJXowjNsOt8+B67+C2+fwWZA+i3Qzv/YGh3MwF/WraphrIdhiIVtVifPwKHE/ISpq8f5taKYUNJsbw1tWs9XmK6hlTX0wx+ZTaw1OIoTOaQqh06dPY7Vai7To1KlTh6SkpGIf06xZM77++mv++OMPvv/+e2w2G127duXIkSMlPs+rr75KQEBAwU94eLhdX4dd5E1SRssbsNTvSlLudgAGNKqGCzyW5qJ+VQrQOVPvJ7TayxNZ/FHYy+8JiwEIUJoR4OltcBrHNqhJLwDOaTs5n51tbBghcKJC6FJ06dKF2267jdjYWHr27Mnvv/9OcHAwn3/+eYmPmThxIikpKQU/hw8frsLEFffXrg1gSkezeXBDC1lfrJBi+lV1zrqon5As/ijsIO6MPmijdU2ZzLQsVzdtC1ZfFDWb3+NXGh1HCOcphGrVqoXJZOLEicL9OU6cOEFISEi5juHm5kabNm3Yu3dvift4eHjg7+9f6MeRzd69FIAgNRqfCy/3CN1F/ao653WYjnd359i1H8nij+KypWRlkKrtBOC6KBk2XxazyURttxgA/t63zOA0QjhRIeTu7k67du1YtOi/ibhsNhuLFi2iS5fyLW5otVrZtm0boaGhZe/sJOLP6RO4ta3dyeAkDuyCflW1h36Bj6UGmqLwbYab0cmEC/hl23IU1YJiDeDKhi2NjuMUOofon9m7UzcanEQIJyqEAMaPH8+UKVOYNm0aCQkJ3HfffZw/f54xY8YAcNtttzFx4sSC/V944QXmz5/P/v372bRpE7feeisHDx7kzjvvNOol2FVKVgZp7AFgSDMZqVKqC/pVhfjoReOKI7Iavbh8CxL1Vo1Q91aoqlN9pBpmZEt90EuWepBDyacMTiOqO7PRASpixIgRnDp1iueee46kpCRiY2OZN29eQQfqQ4cOFfogOnfuHHfddRdJSUnUqFGDdu3asWrVKqKjo416CXb12/YVKKoFrP70jGxhdByncWX97uzbM4/DmVuMjiJcwN70TWCSZTUqIiakPmZLCBZzEj9uXcxTV4wwOpKoxhRN04pbzlzkSU1NJSAggJSUFIfrL3Tzr5PZdv43QtRuLBj1mdFxnMaJ9BT6/HoFimLj6z4z6VCvsdGRhJPadeoYN8ztj6YpzB68gIZBMhVDeQ37eQJ7s/+mvltv/rr5A6PjCBdU3u9vacd1YrtTNwHQIUQWWa2IOr4BeNsaADBjx2KD0whnNmPHUgDcrXWlCKqg/OU2DmfKchvCWFIIOamktHNkqfpyITe2kJEqFdUsoB0AG07IpG7i0q0+tgaAhn6xxgZxQiNb9ULTTGjms6w+vMvoOKIak0LISf2ybRmKYkO1BNMmrIHRcZzOwMZ65/JTlu1YrMUsumqzQuJy2Par/qcszCqKcSRzGwA9wzsbnMT51PT2w0drBMDMhH8NTiOqMymEnNTSQ/oCj/W8ZLjupRgS3RnN5gGmDP7efdEQ3vjZ8F4MTLsWfhur//lejL5diDybjyViM59G01RujJFRm5eiWUAbADad3GBwElGdSSHkpBLPxwHQra6ciV4KbzcPaijNAfhzzwVno/Gz4ZfbCq1aD0DqcX27FEMiz2/xSwHwtEUQ4lfD2DBOql8DfaTdKcsO6SckDCOFkBPac/o4FrP+RT0iprfBaZxXbLC+HMK2M+v1DTYrzHsSKG4gZd62eU/JZTIBwLokfVmNpv6xxgZxYkOju6DZ3MCUzuL924yOI6opKYSc0C/blwBgttSlUc3yLS8iihrWvBcAaewhLTsTDq4q2hJUiAapR/X9RLVms9lIytEXO+4d0c3gNM7Lz8MLP/TpK/7cvdzgNKK6kkLICa3KH6niG2tsECfXq0FM3uKPFmbFr4b0E2U/CMq/n3BZqw/vQjMlo9lM3NBCCqHLEV2jLQBxp9YbnERUV1IIOaH/RqqUb401UTxVVQk267OML0xcDb7lnAemvPsJlzVrp76shg+NqOHta3Aa59a/UXcAzlp3Fj+CU4hKJoWQk9l4dF/BSJXhLWWkyuVqU7s9ADtTNkFEV/APA5QS9lbAv66+n6jWNp7QWy/yRz2JS3dt8w4FIzj/2bvZ6DiiGpJCyMn8ljeTrZctUkaq2MGgpvrstufZT0pONgx4Pe+ei4uhvNsDXtMXcBXVls1m45RlBwBXNZTLYpfL282DAKUpAH9JPyFhACmEnMz6E/pIlSb+ciZqD1dERoPVD0W1MHPHKogeDMO/Bf/Qwjv6h+nbowcbE1Q4jMX7t4EpHc3mxrAoaR20h5ggvZ/QtjMby9hTCPtzqtXnqzubzUZS7nYwQb8GciZqD6qqUtutBSdta1h0YDWj2/XVi53m1+ijw9JP6H2CIrpKS5AAYPYuvX+QP03x8fAwOI1rGNi4B6vWTyNZ20VWbg6ebu5GRxLViLQIOZEVBxPAlIpmM3OdjFSxm7Z5/YR2p17QP0E1QYMe0PIG/U8pgkSeuNP6LMjRQdIqay9XN20HVi9Qs5h78UzvQlQyKYScyOxd+vVzHxoS4OltcBrXMfiCfkLJmecNTiMcWY7FwjlrAgBXN+5hcBrX4W42E2hqBsDKbT/LGn+iSkkh5EQ2n9LPlGQmW/vqFtEcxRqAolr5fcdKo+MIB/bPnk1gygSbJ9c0bW90HJfSy8MfgPPn/pI1/kSVkkLISdhsNk7mxgNwZaSsL2ZPej8hfT6hxQdXG5xGOLK/9uqtsoFKM+nHYk/xs7l13y8AbPL0IDd/u6zxJ6qAFEJOYvXhXXn9g0wMi5aRKvbWrnYHAHanxBkbRDi07XmjmlrWbGdwEheSt8Zf49wcAq1WMlWVHR75Raas8ScqnxRCTmL2zhUAeGsNCfTyMTiNi7FZGR6ov6dZ6n7OpacYHEg4ohyLhRRtDwBXN5bBCnaTt8afCeiQlQ3AWi/PC3aQNf5E5ZJCyElsOqmPVGka0NrgJC4mfja8F0Pbv++jjsWCptjY9mUnaYoXRfy9eyOoWWD1pH+TtkbHcR0XrN3XITMLgPWenqXuJ4Q9SSHkBGw2Gyfy+gf1jpD+QXYTP1vvf5B6DIX/zkbjlAzplyCK+Gef3iIRoDbF3SxTsNnNBWv3dczSC6EtHu7/9RMqZj8h7En+NzuBdUf26Ctdayaui5YmebvI65dQ0AcB6JiZxRxfn7yz0VS9X0Lza6rVHEJWq5Xc3CJfQQI4kZ5IqHsosQHdyMr7whZ2UKct1GkH508RhkYzc21SVRPba7gTlZsLKOBTW99P3ndxATc3N0ymy/98lkLICRT0D7JFykrX9pLXL+FC7fM+ZLd7uJOhgHd+v4QGrj9fjKZpJCUlkZycbHQUh6RpGvc3HgpoBLrXJDEx0ehIrqXbm3D+NACPmkxkKQqWhjYSbTb9fp9acPCQgQGFowoMDCQkJARFKWmx7LJJIeQENuT1D2rs38rgJC6kmP4G9SxWQi0WjpvNxHl60DUzq9r0S8gvgmrXro23t/dlfai4orTsDKwZVkChYUBDTKr0KrC7rFRISyIQG6fNJrxtGnVtgF8IePobnU44GE3TyMjI4OTJkwCEhoaW8YiSSSHkBJKyd4AZekV0MTqK6yimv4GC3llztp8v6/MLoWrQL8FqtRYUQTVr1jQ6jkM6mZWC6qai4omPt8zqXik8PSEgGJ/005zNPkkWCu5BzVGl6BQl8PLyAuDkyZPUrl37ki+Tyb8wB7fhyF408zk0TeX6Ft2NjuM6IrrqK8pTuOWjXV6H6Y2eHuBfV9/PxeX3CfKWL/gSZVoyAPAyyXtUqRQFX99a6P8vNVKzM41OJBxc/ufW5fRtlELIwc1M0Fe69rJFUtPbz+A0LkQ1wYDX8278VwzlF0LbPTxI6/N8teooLZfDiqdpGhb0/mN+HtJHr7KpioIJffh8ana6wWmEo7PH55YUQg5uwwm9f1AjP+kfZHfRg2H4t+D/37Xl+hYLQRYbuYrCLJtcJhKQlpMJ2ACFQE+ZzLQqeJr1Sx75LXFCVCYphBzc8ewdAPSU/kGVI3owjNsOt8+B679CuX0OJreOACw5uNbgcMIRpGTprRIqHnbtJD158mRiY2PtdrzL0atXL8aNG2d0jAL+7nrLm4UsNE0rY28hLo8UQg5s87FENPNZNE2V+YMqk2rSh8i3vAEa9KBlLX0dqZ3nthgcTJRHUlISjzzyCI0bN8bT05M6derQrVs3Pv30UzIyLr9FISOvVcLT5HXZxyqvyZMnoyhKqT+XYunSpSiK4vDTJAR4+qBfsrbltcgJUXmkEHJgs/L6B3naIqjjG2BwmuqjfyO99S2VvWTl5hicRpRm//79tGnThvnz5/PKK6+wefNmVq9ezYQJE5gzZw4LFy4s8bHl6VypaRoWLa9/kHvV9Q96/PHHOX78eMFPvXr1eOGFFwptu1BOjmv9OzWpKioewH8tckJUFimEHNi6JL1/UEPflgYnqV76NmoNVi8UNZt5ezYZHUeU4v7778dsNrNhwwaGDx9OVFQUDRs2ZMiQIfz1118MGjSoYF9FUfj0008ZPHgwPj4+vPzyywB8+umnNGrUCHd3d5o1a8Z3331X8Jj43buICY5i57adBYsdJycnoygKS5cuBf5rZVm0aBHt27fH29ubrl27smvXrkJZX3vtNerUqYOfnx9jx44tdXZqX19fQkJCCn5MJhN+fn4Ft2+66SYefPBBxo0bR61atejfvz8HDhxAURTi4uIKjnNh1gMHDtC7d28AatSogaIojB49umBfm83GhAkTCAoKIiQkhMmTJ1/Kr8RuPPJa4DKkn5CoZFIIObDjWfr6Yt3rdTQ4SfXibjYToDYBYP6+1QanMYamaWTkWKr8pyL9Qc6cOcP8+fN54IEH8PEpvhPzxZeQJk+ezLBhw9i2bRt33HEHM2fO5JFHHuGxxx5j+/bt3HPPPYwZM4YlS5YAkJp9Xj8ObpjLGEH4zDPP8Pbbb7NhwwbMZjN33HFHwX2//PILkydP5pVXXmHDhg2EhobyySeflPu1FmfatGm4u7uzcuVKPvvsszL3Dw8P57fffgNg165dHD9+nPfff7/Q8Xx8fFi7di1vvPEGL7zwAgsWLLisjJfD313/nVo06SckKpdMqOigdp06htV8Ek1TGBYt8wdVteigWFaf28r2s3FGRzFEZq6V6Of+qfLnjX+hP97u5ftY2rt3L5qm0axZs0Lba9WqVdDa8sADD/D6668X3HfzzTczZsyYgtsjR45k9OjR3H///QCMHz+eNWvW8NZbb9G7d28yrXr/FHe1mNXQL/Lyyy/Ts2dPAJ566imuueYasrKy8PT05L333mPs2LGMHTsWgJdeeomFCxde1pplTZo04Y033ii4feDAgVL3N5lMBAUFAVC7dm0CAwML3d+qVSsmTZpUcOyPPvqIRYsW0a9fv0vOeDkCPX05kQlgJSM3Gx/3sn8HQlwKaRFyULN3rgTAzRpKeKAM465qfRvo/YTOWXdisVoNTiMqYt26dcTFxdGiRQuys7ML3de+fftCtxMSEujWrfBAhG7dupGQkACAxaY/3tu97I7SrVr9N8VF/nT/+dP/JyQk0KlTp0L7d+lyeSNB27Vrd1mPv9iF+UF/Dfn5jWA2mVDy+gklSz8hUYmkRchBrT6q9w+q5x1tcJLq6ZqmHXhhgxuKKYNlB3ZwZaPqNY+Tl5uJ+Bf6G/K85dW4cWMURSnSF6dhw4b6sbyKFi8lXUIrzvmcLFSTfknG1+2/Y5XUydrNza3g7/mX5Gz5i4ZWgotfS/5SFBdeRqrIbLsX5gf9NVRm/vLwUL3IsmVzPlf6CYnKIy1CDupgxnYAOoTY96xPlI+Phwe+NALgrz0rDU5T9RRFwdvdXOU/FRkWXrNmTfr168dHH33E+fPnL+l1RkVFsXJl4d/vypUriY6OJjkrnRo1awBw+oKWkQs7I1fkedauLTwv1Zo1ayoeuBTBwcEAhUaUXZzV3d0d0NeXcwZ+ef2Ecm0yhF5UHmkRckAn0lPIVg+jAEOjpH+QUZr4tyIufSdxp2TkmKP65JNP6NatG+3bt2fy5Mm0atUKVVVZv349O3fuLPPy0RNPPMHw4cNp06YNffv25c8//+T3339n4cKFZORm4OnlSWz7trz22ms0aNCAkydP8uyzz1Y45yOPPMLo0aNp37493bp144cffmDHjh0FrVf24OXlRefOnUvNGhERgaIozJkzh4EDB+Ll5YWvr+MuGxLo5cupLECxkJmbg5ebu9GRhAuSFiEHNCt+JYqioViCaBUSaXScaqt3hN6n41RuguGXCETxGjVqxObNm+nbty8TJ06kdevWtG/fng8//JDHH3+cF198sdTHDx06lPfff5+33nqLFi1a8Pnnn/PNN9/Qq1cvcvJaId7/9GMsFgvt2rVj3LhxvPTSSxXOOWLECP73v/8xYcIE2rVrx8GDB7nvvvsu6TWX5uuvvy41a926dXn++ed56qmnqFOnDg8++KDdM9iTu8mMgl78JGelGZxGuCpFk3GJpUpNTSUgIICUlBT8/f2r5Dlv+W0yW9N/I1TtxvxRZQ+LFZXjXEY6PX7phqLY+LrPTDrUa2x0pEqRlZVFYmIiDRo0wNNTRuYAZFly2Ze8G4DGgU3xMLuV8QhRWfaePUK2LQV3xZ8mNcONjiMcTGmfX+X9/pYWIQe0N3UbALG12xqcpHqr4e2Lpy0CgNk7VxicRlSl5Ex9lJKiuUkRZDBfN29A+gmJyiOFkIM5n53NefYDMLBJV4PTiIZ++qzeG05sNDiJqErpuXrna7dyzB8kKleglx8AmpJLtqX8o+CEKC8phBzMnF3rUFQLWH25IlKGzhute119Vu9jWTsMTiKqUn7/IJ+81ghhHE+zG4qmt8qdy5T5hIT9SSHkYBYd0IfUBpmaFswLIowzLLo7mqZgM59i56kjRscRVSDXakVDX8Q0wNNxR1RVJ/ktc/ktdULYk3zTOpiEs1sAaBEUa2wQAUB4YE3crGEAzIyvfvMJVUcFsxhrJlnWwUH4uOnzCeVIPyFRCaQQciAWq5Vkmz5SpW/DzganEfnqe7cAYO3xDQYnEVUhLUdvdTBL/yCHEeilt8xp5JBrtRicRrgaKYQcyKL9W8GUiWZzZ2BTmVHaUXQO0/sJHcqb7Vu4tuy8hVa9zdI/yFF4u3mAps//K/2EhL1JIeRA/tm7CgA/GuEpM6g6jGHR+qKcOepRjqScNTiNqExWmw0b+kKrAR7SP8iRFPQTypF+QsK+pBByIFtOxwHQNKC1sUFEIc2D66FaglEUjZnxy42OIypRanYGoAEqfh5lrzgvqk5+C1229BMSdiaFkIOw2Wycyk0AoFdER4PTiIuFeepTGSw/ss7gJKIypWbrl11MeFRoAdiSKIrCrFmzLusYo0ePZujQoZedpbJMnTqVwMDAgtuTJ08mNja21MccOHAARVEqtIBtYN4IPhvZWGzOsWiscA5SCDmITcf2o5lS0DQTQ6O6GB1HXKRdHb3PVmKa9BMqlc0Kicth26/6n5X8hXXq1Cnuu+8+6tevj4eHByEhIfTv37/IivLllWnRWxu8nKx/kKZpfPHFF3Tq1AlfX18CAwNp37497733HhkZGVWa5fHHH2fRokUFt4sr5MLDwzl+/DgxMTHlPq4+gk//ykrJkstjwn5k9XkH8ecu/YPb01afGt7SN8HRDGnegz+OvkOmeoBzGenyOypO/GyY9ySkHvtvm38YDHgdogdXylNef/315OTkMG3aNBo2bMiJEydYtGgRZ86cqfCxNE3DShYAfu4+9o5aqUaNGsXvv//Os88+y0cffURwcDBbtmzhvffeIzIyskpblHx9fctc0d5kMhESElKh4yqKghlPLGSQln2emt5Vs/ajcH3SIuQg8pdwaOBb/jMkUXXahTVEsQagKDZmxq8yOo7jiZ8Nv9xWuAgCSD2ub4+fbfenTE5OZvny5bz++uv07t2biIgIOnbsyMSJExk8+L/C65133qFly5b4+PgQHh7O/fffT3r6fyOP8i/tzJj5O9d2Hkj7+u25a9RoMjIymDZtGpGRkdSoUYOHH34Yq/W/Fq7IyEhefPFFRo4ciY+PD3Xr1uXjjz8uNfPhw4cZPnw4gYGBBAUFMWTIEA4cOFBwv9VqZfz48QQGBlKzZk0mTJhAWeti//LLL/zwww/89NNPPP3003To0IHIyEiGDBnC4sWL6d27N6Bffn/hhReoV68eHh4exMbGMm/evILj5F+u+v333+nduzfe3t60bt2a1atXF3q+qVOnUr9+fby9vRk2bFiRovPCS2OTJ09m2rRp/PHHHyiKgqIoLF26tNhLY//++y8dO3bEw8OD0NBQnnrqKSyW/4bK9+rVi9eeeZm3n3+b2IZRhISEMHny5IL7NU1j8uTJBa2DYWFhPPzww6W+d0LAJRRCt99+O8uWLauMLNXa0cx4ALrW7WBwElEcVVUJdosC4N9D6w1O42BsVr0liOK+sPO2zXvK7pfJ8lseZs2aRXZ2don7qarKBx98wI4dO5g2bRqLFy9mwoQJhfbJyMjgo48+5M0v3uSLn7/i33//ZdiwYcydO5e5c+fy3Xff8fnnn/Prr78Wetybb75J69at2bx5M0899RSPPPIICxYsKDZHbm4u/fv3x8/Pj+XLl7Ny5Up8fX0ZMGAAOTn6TNZvv/02U6dO5euvv2bFihWcPXuWmTNnlvo+/PDDDzRr1owhQ4YUuU9RFAICAgB4//33efvtt3nrrbfYunUr/fv3Z/DgwezZs6fQY5555hkef/xx4uLiaNq0KSNHjiwoSNauXcvYsWN58MEHiYuLo3fv3rz00kslZnv88ccZPnw4AwYM4Pjx4xw/fpyuXYuuoXj06FEGDhxIhw4d2LJlC59++ilfffVVkWP/9vMMvLy9+HHeT7z2+uu88MILBe/3b7/9xrvvvsvnn3/Onj17mDVrFi1btiz1vRMCAK2ChgwZorm5uWmNGzfWXn75Ze3IkSMVPYRTSUlJ0QAtJSWl0p5j7+njWszUGC1maoyWeOZEpT2PuDyPzv1Ii5kao3X++kajo9hVZmamFh8fr2VmZl7aAfYv07RJ/mX/7F9m3+Capv36669ajRo1NE9PT61r167axIkTtS1btpT6mBkzZmg1a9YsuP3NN99ogLZg/b/a9lPbtX1nj2r33HOP5u3traWlpRXs179/f+2ee+4puB0REaENGDCg0LFHjBihXX311QW3AW3mzJmapmnad999pzVr1kyz2WwF92dnZ2teXl7aP//8o2mapoWGhmpvvPFGwf25ublavXr1tCFDhpT4eqKiorTBgweX+po1TdPCwsK0l19+udC2Dh06aPfff7+maZqWmJioAdqXX35ZcP+OHTs0QEtISNA0TdNGjhypDRw4sMhrDggIKLg9adIkrXXr1gW3b7/99iL5859r8+bNmqZp2tNPP13kvfn44481X19fzWq1apqmaT179tS6d++ubT+1Q9t+art2LiNd69Chg/bkk09qmqZpb7/9tta0aVMtJyenzPdCuI7SPr/K+/1d4RahWbNmcfToUe677z6mT59OZGQkV199Nb/++iu5ubIy8KX4PX4FAGZLKJFBtQ1OI0rSv7F+JpvGPrJycwxO40DST9h3vwq4/vrrOXbsGLNnz2bAgAEsXbqUtm3bMnXq1IJ9Fi5cSJ8+fahbty5+fn6MGjWKM2fOFOpE7O3tTWiE/n/Pz92HOnXqEBkZWaivS506dTh58mSh5+/SpUuR2wkJCcVm3bJlC3v37sXPz6+gNSsoKIisrCz27dtHSkoKx48fp1OnTgWPMZvNtG/fvtT3QCvj0hlAamoqx44do1u3boW2d+vWrUjeVq1aFfw9NDQUoOB1JyQkFMoHRd+DS5GQkECXLl0KjdTr1q0b6enpHDny3xp/rVq1woQ+n1BqdjqhoaEF2W688UYyMzNp2LAhd911FzNnzix0aU2IklxSH6Hg4GDGjx/Pli1bWLt2LY0bN2bUqFGEhYXx6KOPFmlqFaVbc0xfuqGul6w278j6NGwFVi8UNYe5uzcaHcdx+Nax734V5OnpSb9+/fjf//7HqlWrGD16NJMmTQL0fi/XXnstrVq14rfffmPjxo0F/XjyL0cBuLm5gaJfugv09EVRFH3bBRRFwWazXXLO9PR02rVrR1xcXKGf3bt3c/PNN1/ycZs2bcrOnTsv+fEXu/B15xcml/O67cnNzQ1Pkz6/U6Ylo9DvJDw8nF27dvHJJ5/g5eXF/fffzxVXXCEn6KJMl9VZ+vjx4yxYsIAFCxZgMpkYOHAg27ZtIzo6mnfffddeGV3ewfP6kOyOoaWf+QljmU0mAtQmACzcv8bgNA4koqs+OoyS5t1RwL+uvl8ViI6O5vx5fXj1xo0bsdlsvP3223Tu3JmmTZty7NixIo/R8voyKbjjZjKV+7nWrFlT5HZUVFSx+7Zt25Y9e/ZQu3ZtGjduXOgnICCAgIAAQkNDWbt2bcFjLBYLGzeWXnTffPPN7N69mz/++KPo69I0UlJS8Pf3JywsrMi0AitXriQ6uvwnYFFRUYXyQdH34GLu7u6FOpmXdNzVq1cXat1auXIlfn5+1KtXr9C+fh76iD5L3gi/C3l5eTFo0CA++OADli5dyurVq9m2bVupzy1EhQuh3NxcfvvtN6699loiIiKYMWMG48aN49ixY0ybNo2FCxfyyy+/8MILL1RGXpdzKj2VLPUwAIObdzc4jShLVI1YAHacjTM0h0NRTfoQeaBoMZR3e8Br+n52dObMGa688kq+//57tm7dSmJiIjNmzOCNN94o6DjcuHFjcnNz+fDDD9m/fz/fffcdn332WZFj5X//uqsVm0165cqVvPHGG+zevZuPP/6YGTNm8MgjjxS77y233EKtWrUYMmQIy5cvJzExkaVLl/Lwww8XXP555JFHeO2115g1axY7d+7k/vvvJzk5udQMw4cPZ8SIEYwcOZJXXnmFDRs2cPDgQebMmUPfvn1ZsmQJAE888QSvv/4606dPZ9euXTz11FPExcWVmLc4Dz/8MPPmzeOtt95iz549fPTRR4VGnhUnMjKSrVu3smvXLk6fPl1sC83999/P4cOHeeihh9i5cyd//PEHkyZNYvz48ahq4a+pAM/8qQ1shSZWnDp1Kl999RXbt29n//79fP/993h5eREREVHu1yeqpwoXQqGhodx1111ERESwbt06NmzYwL333ou//39zOvTu3bvQTKOiZLMSVqMoNhRLELGhkUbHEWXo00DvH3HWutthLhc4hOjBMPxb8A8tvN0/TN9eCfMI+fr60qlTJ959912uuOIKYmJi+N///sddd93FRx99BEDr1q155513eP3114mJieGHH37g1VdfLeZoeiXk61axiRQfe+wxNmzYQJs2bXjppZd455136N+/f7H7ent7s2zZMurXr891111HVFQUY8eOJSsrq+Dz87HHHmPUqFHcfvvtdOnSBT8/P4YNG1ZqBkVR+PHHH3nnnXeYNWsW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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Setup: Import modules\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from autora.theorist.bms import BMSRegressor\n", + "from autora.experimentalist.random import random_sample #Note that this sampler is embedded within the autora-core module and so does not need to be explicitly installed\n", + "\n", + "#Step 0: Defining variables\n", + "ground_truth = lambda x: np.sin(x) #Define a ground truth model that we will attempt to recover - here a sine wave\n", + "initial_X = np.linspace(0, 4 * np.pi, 200) #Define initial data\n", + "\n", + "#Step 1: EXPERIMENTALIST: Sample using the experimentalist\n", + "new_conditions = random_sample(initial_X, num_samples = 20)\n", + "new_conditions = np.array(new_conditions).reshape(-1,1) #Turn variable into a 2D array\n", + "\n", + "#Step 2: EXPERIMENT RUNNER: Define and then obtain observations using the experiment runner\n", + "run_experiment = lambda x: ground_truth(x) + np.random.normal(0, 0.1, size=x.shape) #Define the runner, which here is simply the ground truth with noise\n", + "new_observations = run_experiment(new_conditions) #Obtain observations from the runner for the conditions proposed by the experimentalist\n", + "new_observations = new_observations.reshape(-1,1) #Turn variable into a 2D array\n", + "\n", + "#Step 3: THEORIST: Initiate and fit a model using the theorist\n", + "theorist_bms = BMSRegressor(epochs=100) #Initiate the BMS theorist\n", + "theorist_bms.fit(new_conditions, new_observations) #Fit a model to the data\n", + "\n", + "#Wrap-Up: Plot data and model\n", + "sort_index = np.argsort(new_conditions, axis=0)[:,0] #We will first sort our data\n", + "new_conditions = new_conditions[sort_index,:]\n", + "new_observations = new_observations[sort_index,:]\n", + "\n", + "plt.plot(initial_X, ground_truth(initial_X), label='Ground Truth')\n", + "plt.plot(new_conditions, new_observations, 'o', label='Sampled Conditions')\n", + "plt.plot(initial_X, theorist_bms.predict(initial_X.reshape(-1,1)), label=f'Bayesian Machine Scientist ({theorist_bms.repr()})')\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Sine Function')\n", + "plt.legend()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Experiment Runners\n", + "\n", + "``autora`` provides support for experiment runners, which serve as interfaces for conducting both real-world and synthetic experiments. An experiment runner typically accepts experiment conditions as input (e.g., a 2-dimensional numpy array with columns representing different independent variables) and produces collected observations as output (e.g., a 2-dimensional numpy array with columns representing different dependent variables). These experiment runners can be combined with other ``autora`` components to facilitate closed-loop scientific discovery.\n", + "\n", + "\"AutoRA\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Types\n", + "\n", + "AutoRA offers two types of experiment runners: **real-world experiments** and **synthetic experiments**.\n", + "\n", + "For **real-world experiments**, experiment runners can include interfaces for various scenarios such as web-based experiments for behavioral data collection (e.g., using [Firebase and Prolific](https://autoresearch.github.io/autora/user-guide/experiment-runners/firebase-prolific/)) or experiments involving electrical circuits (e.g., using [Tinkerforge](https://en.wikipedia.org/wiki/Tinkerforge)). These runners often require external components such as databases to store collected observations or servers to host the experiments. You may refer to the respective tutorials for these interfaces on how to set up all required components.\n", + "\n", + "**Synthetic experiments** are conducted on synthetic experiment runners, which are functions that take experimental conditions as input and generate simulated observations as output. These experiments serve multiple purposes, including *testing autora components* before applying them to real-world experiments, *benchmarking methods for automated scientific discovery*, or *conducting computational metascientific experiments*.\n", + "\n", + "In this introductory tutorial, we primarily focus on simple synthetic experiments. For more complex synthetic experiments implementing various scientific models, you can utilize the [autora-synthetic](https://github.com/autoresearch/autora-synthetic/) module." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage\n", + "\n", + "To create a synthetic experiment runner, we begin with **defining a ground truth** from which to generate data. Here, we consider a simple sine function:\n", + "\n", + "$y = f(x) = \\sin(x)$\n", + "\n", + "In this case, $x$ corresponds to an *independent* variable (the variable we can manipulate in an experiment), $y$ corresponds to a *dependent* variable (the variable we can observe after conducting the experiment), and $f(x)$ is the *ground-truth function* (or \"mechanism\") that we seek to uncover via a combination of experimentation and model discovery.\n", + "\n", + "However, we assume that observations are obtained with a measurement error when running the experiment.\n", + "\n", + "$\\hat{y} = \\hat{f}(x) = f(x) + \\epsilon, \\quad \\epsilon \\sim \\mathcal{N}(0,0.1)$\n", + "\n", + "where $\\epsilon$ is the measurement error sampled from a normal distribution with zero mean and a standard deviation of $0.1$.\n", + "\n", + "The following code block defines the ground truth $f(x)$ and the experiment runner $\\hat{f}(x)$ as ``lambda`` functions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ground_truth = lambda x: np.sin(x)\n", + "run_experiment = lambda x: ground_truth(x) + np.random.normal(0, 0.1, size=x.shape)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we generate a pool of all possible experimental conditions from the domain $[0, 2\\pi]$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "condition_pool = np.linspace(0, 2 * np.pi, 100)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to run a simple synthetic experiment, we can first sample from the pool of possible experiment conditions (without replacement), and then pass these conditions to the synthetic experiment runner:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "initial_conditions = np.random.choice(condition_pool, size=10, replace=False)\n", + "initial_observations = run_experiment(initial_conditions)\n", + "\n", + "# plot sampled conditions against ground-truth\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(condition_pool, ground_truth(condition_pool), label='Ground Truth')\n", + "plt.plot(initial_conditions, initial_observations, 'o', label='Sampled Conditions')\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Sine Function')\n", + "plt.legend()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Certain theorists and experimentalists may need to have knowledge about the experimental variables, such as the domain from which new experiment conditions are sampled. To provide this information, we can utilize a ``VariableCollection`` object. In the context of our synthetic experiment, we have a single *independent variable* (``iv``) denoted as $x$, and a single *dependent* variable (``dv``) denoted as $y$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.variable import Variable, ValueType, VariableCollection\n", + "\n", + "# Specify independent variable\n", + "iv = Variable(\n", + " name=\"x\", # name of the independent variable\n", + " value_range=(0, 2 * np.pi), # specify the domain\n", + " allowed_values=condition_pool, # alternatively, we can specify the pool of allowed conditions directly\n", + ")\n", + "\n", + "# specify dependent variable\n", + "dv = Variable(\n", + " name=\"y\", # name of the dependent variable\n", + " type=ValueType.REAL, # specify the variable type (some theorists require this to optimize)\n", + ")\n", + "\n", + "# Variable collection with ivs and dvs\n", + "variables = VariableCollection(\n", + " independent_variables=[iv],\n", + " dependent_variables=[dv],\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: *For expository reasons, we focus in this tutorial on simple synthetic experiments. In general, ``autora`` provides functionality for automating [more complex synthetic experiments](https://github.com/autoresearch/autora-synthetic/), as well as real-world experiments, such as [behavioral data collection via web-based experiments](https://autoresearch.github.io/autora/user-guide/experiment-runners/firebase-prolific/), experiments with electrical circuits via [Tinkerforge](https://en.wikipedia.org/wiki/Tinkerforge), and other automated experimentation platforms.*" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Theorists\n", + "\n", + "The AutoRA framework includes and interfaces with different methods for scientific model discovery. These methods are referred to as *theorists* and are implemented as [sklearn estimators](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html). For general information about theorists, see the respective [AutoRA Documentation](https://autoresearch.github.io/autora/theorist/).\n", + "\n", + "\"Theorist\n", + "\n", + "\n", + "Theorists **take as input a set of conditions and observations**. Conditions and observations can typically be passed as *two-dimensional numpy arrays* (with columns corresponding to variables and rows corresponding to different instances of those variables). Theorists then **identify and fit a model** which may be used to predict observations based on experiment conditions." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Types\n", + "\n", + "There are different types of theorists within the AutoRA framework, each with its own approach to scientific model discovery.\n", + "\n", + "Some theorists focus on *fitting the parameters of a pre-specified model* to the given data (see the scikit learn documentation for a [selection of basic regressors](https://scikit-learn.org/stable/supervised_learning.html)). The model architecture in such cases is typically fixed, while the parameters are adjusted to optimize the model's performance. Linear regression is an example of a parameter-fitting theorist.\n", + "\n", + "Other theorists are concerned with *identifying both the architecture of a model and its parameters*. The model architectures can take various forms, such as equations, causal models, or process models. Implemented as scikit-learn estimators, these theorists aim to discover a model architecture that accurately describes the data. They often operate within a user-defined search space, which specifies the allowable operations or components that can be included in the model. This approach provides more flexibility in exploring different model architectures." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage\n", + "\n", + "In this tutorial, we delve into two types of theorists: (1) a linear regression theorist, which focuses on fitting a linear model, and (2) a Bayesian Machine Scientist (Guimerà et al., 2020, in *Science Advances*), which specializes in identifying and fitting a non-linear equation.\n", + "\n", + "Theorists are commonly instantiated as regressors within the ``sklearn`` library:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import linear_model\n", + "from autora.theorist.bms import BMSRegressor\n", + "\n", + "theorist_lr = linear_model.LinearRegression()\n", + "theorist_bms = BMSRegressor(epochs=100)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once instantiated, we can fit the theorist to link experimental conditions with observations. However, before doing so, we should convert both inputs into 2-dimensional numpy arrays." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Size of the initial conditions: (10, 1),\n", + "Size of the initial observations: (10, 1)\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:04<00:00, 24.69it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "text/html": [ + "
0.03
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "0.03" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# convert data to 2-dimensional numpy array\n", + "initial_conditions = initial_conditions.reshape(-1, 1)\n", + "initial_observations = initial_observations.reshape(-1, 1)\n", + "print(f\"Size of the initial conditions: {initial_conditions.shape},\\nSize of the initial observations: {initial_observations.shape}\\n\")\n", + "\n", + "# fit theorists\n", + "theorist_lr.fit(initial_conditions, initial_observations)\n", + "theorist_bms.fit(initial_conditions, initial_observations)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For some theorists, we can inspect the resulting model architecture. For instance, in the BMS theorist, we can obtain the model formula via ``theorist_bms.repr()``.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model of BMS theorist: 0.03\n" + ] + } + ], + "source": [ + "print(\"Model of BMS theorist: \" + theorist_bms.repr())" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We may now obtain predictions from both theorists for the entire pool of experiment conditions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# convert condition pool into 2-dimensional numpy array before generating respective predictions\n", + "condition_pool = condition_pool.reshape(-1, 1)\n", + "\n", + "# obtain predictions\n", + "predicted_observations_lr = theorist_lr.predict(condition_pool)\n", + "predicted_observations_bms = theorist_bms.predict(condition_pool)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the next code segment, we plot the theorists' predictions against the ground truth. For the BMS theorist, we can obtain a latex expression of the model architecture using ``theorist_bms.latex()``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACjRklEQVR4nOzdd1xV9R/H8de5ly1LUAEVwb33Xjky0VTQTE1zm2ZmZmaOrBy5Kk3TzFG5szQnau699xY3oCKIypIN957fHyg/yYUGHC58no8HD7rnfs8573sl7ofv+Z7vV1FVVUUIIYQQIhfSaR1ACCGEEEIrUggJIYQQIteSQkgIIYQQuZYUQkIIIYTItaQQEkIIIUSuJYWQEEIIIXItKYSEEEIIkWtJISSEEEKIXEsKISGEEELkWlIICSEyjaIojBkz5pX3CwgIQFEUFi5cmOGZMlrjxo1p3Lhx6uPMyO7p6UnPnj0z7HhCiP+TQkiIHG7hwoUoioKiKOzfv/+p51VVxd3dHUVRaN26tQYJX9/u3btTX5uiKJibm1OsWDG6d+/OjRs3tI73Sg4ePMiYMWOIiIjQOooQuYqZ1gGEEFnDysqKZcuW0aBBgzTb9+zZw+3bt7G0tNQo2X83aNAgatasSVJSEidPnmTevHls3LiRc+fOUbBgwSzN4uHhQVxcHObm5q+038GDBxk7diw9e/bE0dExzXOXL19Gp5O/W4XIDPJ/lhC5xNtvv83ff/9NcnJymu3Lli2jevXquLq6apTsv2vYsCFdu3alV69ezJw5kylTphAWFsaiRYueu09MTEymZFEUBSsrK/R6fYYd09LS8pULKyFE+kghJEQu0blzZx48eMC2bdtStyUmJrJy5Uq6dOnyzH1iYmL4/PPPcXd3x9LSktKlSzNlyhRUVU3TLiEhgc8++4z8+fNjZ2eHt7c3t2/ffuYxg4KC6N27Ny4uLlhaWlK+fHnmz5+fcS8UaNq0KQD+/v4AjBkzBkVRuHjxIl26dCFv3rxpesaWLl1K9erVsba2xsnJiffee49bt249ddx58+ZRvHhxrK2tqVWrFvv27XuqzfPGCF26dImOHTuSP39+rK2tKV26NKNGjUrN98UXXwBQtGjR1Et9AQEBwLPHCN24cYMOHTrg5OSEjY0NderUYePGjWnaPL50uGLFCiZMmEDhwoWxsrLizTff5Nq1a2naXr16lfbt2+Pq6oqVlRWFCxfmvffeIzIy8iXvthCmTS6NCZFLeHp6UrduXf78809atmwJwKZNm4iMjOS9995jxowZadqrqoq3tze7du2iT58+VKlShS1btvDFF18QFBTEtGnTUtt+8MEHLF26lC5dulCvXj127txJq1atnspw9+5d6tSpg6IoDBw4kPz587Np0yb69OlDVFQUgwcPzpDXev36dQCcnZ3TbO/QoQMlS5Zk4sSJqcXchAkT+Prrr+nYsSMffPAB9+7dY+bMmbzxxhucOnUq9TLV77//zocffki9evUYPHgwN27cwNvbGycnJ9zd3V+Y5+zZszRs2BBzc3P69euHp6cn169fZ/369UyYMIF33nmHK1eu8OeffzJt2jTy5csHQP78+Z95vLt371KvXj1iY2MZNGgQzs7OLFq0CG9vb1auXEm7du3StJ88eTI6nY6hQ4cSGRnJ999/z/vvv8+RI0eAlILYy8uLhIQEPvnkE1xdXQkKCmLDhg1ERETg4ODwav8AQpgSVQiRoy1YsEAF1GPHjqk///yzamdnp8bGxqqqqqodOnRQmzRpoqqqqnp4eKitWrVK3W/t2rUqoI4fPz7N8d59911VURT12rVrqqqq6unTp1VAHTBgQJp2Xbp0UQF19OjRqdv69Omjurm5qffv30/T9r333lMdHBxSc/n7+6uAumDBghe+tl27dqmAOn/+fPXevXvqnTt31I0bN6qenp6qoijqsWPHVFVV1dGjR6uA2rlz5zT7BwQEqHq9Xp0wYUKa7efOnVPNzMxStycmJqoFChRQq1SpoiYkJKS2mzdvngqojRo1St32rOxvvPGGamdnpwYGBqY5j9FoTP3vH374QQVUf3//p16nh4eH2qNHj9THgwcPVgF13759qdsePnyoFi1aVPX09FQNBkOa96ds2bJpcv/0008qoJ47d05VVVU9deqUCqh///33U+cWIqeTS2NC5CIdO3YkLi6ODRs28PDhQzZs2PDcy2L//PMPer2eQYMGpdn++eefo6oqmzZtSm0HPNXu3707qqqyatUq2rRpg6qq3L9/P/XLy8uLyMhITp48+Vqvq3fv3uTPn5+CBQvSqlUrYmJiWLRoETVq1EjTrn///mker169GqPRSMeOHdPkcXV1pWTJkuzatQuA48ePExoaSv/+/bGwsEjdv2fPni/t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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# obtain latex expression of BMS theorist\n", + "bms_model = theorist_bms.latex()\n", + "\n", + "# plot model predictions against ground-truth\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(condition_pool, ground_truth(condition_pool), label='Ground Truth')\n", + "plt.plot(initial_conditions, initial_observations, 'o', label='Data Used for Model Identification')\n", + "plt.plot(condition_pool, predicted_observations_lr, label='Linear Regression')\n", + "plt.plot(condition_pool, predicted_observations_bms, label='Bayesian Machine Scientist: $' + bms_model + '$')\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Model Predictions')\n", + "plt.legend()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: *There are various other types of theorists you can combine with AutoRA as long as they are implemented as ``sklearn`` estimators. This includes [autora modules](theorist/index.md), any [scikit learn estimators](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html), as well as third-party packages, such as [PySR](https://github.com/MilesCranmer/PySR) for symbolic regression.*" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Experimentalists\n", + "\n", + "The primary goal of an experimentalist is to design experiments that yield scientific merit. The AutoRA framework offers various strategies for identifying informative new data points (e.g., by searching for experiment conditions that existing scientific models fail to explain, or by looking for novel conditions altogether).\n", + "\n", + "\"Experimentalist\n", + "\n", + "Experimentalists are implemented as functions that return a set of experiment conditions (e.g., in the form of a 2-dimensional numpy array in which columns correspond to independent variables), which can be subjected to an experiment. To determine these conditions, experimentalists may use information about candidate models obtained from a theorist, experimental conditions that have already been probed, or respective dependent measures. For more detailed information about experimentalists, please refer to the corresponding [AutoRA Documentation](https://autoresearch.github.io/autora/experimentalist/).\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Types\n", + "\n", + "There are generally two types of experimentalist functions: **poolers** and **samplers**.\n", + "\n", + "**Poolers** generate a novel set of experimental conditions \"from scratch\", e.g., by sampling from a grid. They usually require metadata describing independent variables of the experiment (e.g., their range or the set of allowed values).\n", + "\n", + "**Samplers** operate on an existing pool of experimental conditions. They typically require experimental conditions to be represented as a 2-dimensional numpy array in which columns correspond to independent variables and rows to different conditions. They then select experiment conditions from this pool." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage: Poolers\n", + "\n", + "Experimentalist poolers are implemented as functions and can be called directly. For instance, the following **grid pooler** generates a grid based on the ``allowed_values`` of all independent variables in the ``metadata`` object that we defined above. We can simply add a list of allowed values to each independent variable. In this case, we only have one variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "allowed_values = np.linspace(0, 2 * np.pi, 100)\n", + "variables.independent_variables[0].allowed_values = allowed_values" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can pass the grid pooler the list of independent variables from the ``variables`` object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.experimentalist.grid import grid_pool\n", + "\n", + "new_conditions = grid_pool(variables=variables)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The resulting condition pool contains all experiment conditions from the grid:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.]\n", + "[0.06346652]\n", + "[0.12693304]\n", + "[0.19039955]\n", + "[0.25386607]\n", + "[0.31733259]\n", + "[0.38079911]\n", + "[0.44426563]\n", + "[0.50773215]\n", + "[0.57119866]\n", + "[0.63466518]\n" + ] + } + ], + "source": [ + "# return first 10 conditions\n", + "for idx, condition in enumerate(new_conditions.values):\n", + " print(condition)\n", + " if idx > 9:\n", + " break" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, we may use the **random pooler** to randomly draw experimental conditions from the domains of each independent variable. The random pooler requires as input a list of discrete values from which to sample from. In this case, we can pass it ``variables.independent_variables[0].allowed_values`` for the independent variable. We can also specify the input argument ``n`` to obtain 10 random samples." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2.91945984]\n", + "[0.]\n", + "[2.15786162]\n", + "[1.07893081]\n", + "[2.53866073]\n", + "[3.99839065]\n", + "[1.96746207]\n", + "[5.2042545]\n", + "[1.96746207]\n", + "[0.50773215]\n" + ] + } + ], + "source": [ + "from autora.experimentalist.random import random_pool\n", + "\n", + "# generate random pool of 10 conditions\n", + "num_samples = 10\n", + "new_conditions = random_pool(variables=variables,\n", + " num_samples=num_samples)\n", + "\n", + "# print conditons\n", + "for idx, condition in enumerate(new_conditions.values):\n", + " print(condition)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage: Samplers\n", + "\n", + "An experiment sampler typically requires an existing pool of conditions as input along with additional arguments. For instance, the **[novelty sampler](https://autoresearch.github.io/autora/user-guide/experimentalists/samplers/novelty/)** requires, aside from a pool of conditions, a list of prior conditions. The user may also specify the number of samples ``num_samples`` to select from the pool.\n", + "\n", + "The novelty sampler will then select novel experiment conditions from the pool which are most dissimilar to some reference conditions, such as the ``initial_conditions`` obtained above:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'autora.experimentalist.novelty'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[39], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mautora\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mexperimentalist\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mnovelty\u001b[39;00m \u001b[39mimport\u001b[39;00m novelty_sample\n\u001b[0;32m 3\u001b[0m new_conditions_novelty \u001b[39m=\u001b[39m novelty_sample(condition_pool \u001b[39m=\u001b[39m condition_pool,\n\u001b[0;32m 4\u001b[0m reference_conditions \u001b[39m=\u001b[39m initial_conditions,\n\u001b[0;32m 5\u001b[0m num_samples \u001b[39m=\u001b[39m \u001b[39m2\u001b[39m)\n\u001b[0;32m 7\u001b[0m \u001b[39mprint\u001b[39m(new_conditions_novelty)\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'autora.experimentalist.novelty'" + ] + } + ], + "source": [ + "from autora.experimentalist.novelty import novelty_sample\n", + "\n", + "new_conditions_novelty = novelty_sample(condition_pool = condition_pool,\n", + " reference_conditions = initial_conditions,\n", + " num_samples = 2)\n", + "\n", + "print(new_conditions_novelty)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another example for an experiment sampler is the **[falsification sampler](https://autoresearch.github.io/autora/falsification/docs/sampler/)**. The falsification sampler identifies experiment conditions under which the loss of a candidate model (returned by the theorist) is predicted to be the highest. This loss is approximated with a neural network, which is trained to predict the loss of the candidate model, given some initial experimental conditions, respective initial observations, and the variables.\n", + "\n", + "The following code segment calls on the falsification sampler to return novel conditions based on the candidate model of the linear regression theorist introduced above. As with the novelty sampler, we seek to select 2 conditions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.experimentalist.sampler.falsification import falsification_sample\n", + "\n", + "new_conditions_falsification = falsification_sample(\n", + " condition_pool=condition_pool,\n", + " model=theorist_lr,\n", + " reference_conditions=initial_conditions,\n", + " reference_observations=initial_observations,\n", + " metadata=variables,\n", + " num_samples=2\n", + " )\n", + "\n", + "print(new_conditions_falsification)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can plot the selected conditions for both samples relative to the selected samples. Since we don't have observations for those conditions, we plot them as vertical lines." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot model predictions against ground-truth\n", + "import matplotlib.pyplot as plt\n", + "\n", + "y_min = np.min(initial_observations)\n", + "y_max = np.max(initial_observations)\n", + "\n", + "# plot conditions obtained by novelty sampler\n", + "for idx, condition in enumerate(new_conditions_novelty):\n", + " if idx == 0:\n", + " plt.plot([condition[0], condition[0]], [y_min, y_max], '--r', label='novelty conditions')\n", + " else: # we want to omit the label for all other conditions\n", + " plt.plot([condition[0], condition[0]], [y_min, y_max], '--r')\n", + "\n", + "# plot conditions obtained by falsification sampler\n", + "for idx, condition in enumerate(new_conditions_falsification):\n", + " if idx == 0:\n", + " plt.plot([condition[0], condition[0]], [y_min, y_max], '--g', label='falsification conditions')\n", + " else: # we want to omit the label for all other conditions\n", + " plt.plot([condition[0], condition[0]], [y_min, y_max], '--g')\n", + "\n", + "plt.plot(condition_pool, ground_truth(condition_pool), '-', label='Ground Truth')\n", + "plt.plot(initial_conditions, initial_observations, 'o', label='Initial Data')\n", + "plt.plot(condition_pool, predicted_observations_lr, '-k', label='Prediction from Linear Regression')\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Sampled Experimental Conditions')\n", + "plt.legend()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Next Notebook\n", + "After defining all the components required for the empirical research process, we can create an automated workflow using basic loop constructs. The next notebook illustrates the use of these loop constructs.\n", + "\n", + "Follow this link for the next notebook tutorial:\n", + "[AutoRA Basic Tutorial II: Loop Constructs](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-II-Loop-Constructs/)
" + ] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "autoraKernel", + "language": "python", + "name": "autorakernel" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/tutorials/basic/Tutorial-II-Loop-Constructs.ipynb b/docs/tutorials/basic/Tutorial-II-Loop-Constructs.ipynb new file mode 100644 index 000000000..4de2d769f --- /dev/null +++ b/docs/tutorials/basic/Tutorial-II-Loop-Constructs.ipynb @@ -0,0 +1,410 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction\n", + "## Basic Tutorial II: Loop Constructs" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**[AutoRA](https://pypi.org/project/autora/)** (**Au**tomated **R**esearch **A**ssistant) is an open-source framework designed to automate various stages of empirical research, including model discovery, experimental design, and data collection.\n", + "\n", + "This notebook is the second of four notebooks within the basic tutorials of ``autora``. We suggest that you go through these notebooks in order as each builds upon the last. However, each notebook is self-contained and so there is no need to *run* the content of the last notebook for your current notebook. We will here provide a link to each notebook, but we will also provide a link at the end of each notebook to navigate you to the next notebook.\n", + "\n", + "[AutoRA Basic Tutorial I: Components](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-I-Components/)
\n", + "[AutoRA Basic Tutorial II: Loop Constructs](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-II-Loop-Constructs/)
\n", + "[AutoRA Basic Tutorial III: Functional Workflow](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-III-Functional-Workflow/)
\n", + "[AutoRA Basic Tutorial IV: Customization](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-IV-Customization/)
\n", + "\n", + "These notebooks provide a comprehensive introduction to the capabilities of ``autora``. **It demonstrates the fundamental components of ``autora``, and how they can be combined to facilitate automated (closed-loop) empirical research through synthetic experiments.**\n", + "\n", + "**How to use this notebook** *You can progress through the notebook section by section or directly navigate to specific sections. If you choose the latter, it is recommended to execute all cells in the notebook initially, allowing you to easily rerun the cells in each section later without issues.*" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorial Setup\n", + "This tutorial is self-contained so that you do not need to run the previous notebook to begin. However, the four notebooks are continuous so that what we define in a previous notebook should still exist within this notebook. As such, we will here re-run relevant code from past tutorials. We will not again walk you through these, but if you need a reminder what they are then go see the descriptions in previous notebooks." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "[notice] A new release of pip is available: 23.2 -> 23.2.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n", + "\n", + "[notice] A new release of pip is available: 23.2 -> 23.2.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n", + "\n", + "[notice] A new release of pip is available: 23.2 -> 23.2.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "#### Installation ####\n", + "!pip install -q \"autora[experimentalist-falsification]\"\n", + "!pip install -q \"autora[experimentalist-sampler-model-disagreement]\"\n", + "!pip install -q \"autora[theorist-bms]\"\n", + "\n", + "#### Import modules ####\n", + "import numpy as np\n", + "import torch\n", + "from autora.variable import Variable, ValueType, VariableCollection\n", + "from autora.experimentalist.random import random_pool\n", + "from autora.experimentalist.sampler.falsification import falsification_sample\n", + "from autora.experimentalist.sampler.model_disagreement import model_disagreement_sample\n", + "from autora.theorist.bms import BMSRegressor\n", + "from sklearn import linear_model\n", + "\n", + "#### Set seeds ####\n", + "np.random.seed(42)\n", + "torch.manual_seed(42)\n", + "\n", + "#### Define ground truth and experiment runner ####\n", + "ground_truth = lambda x: np.sin(x)\n", + "run_experiment = lambda x: ground_truth(x) + np.random.normal(0, 0.1, size=x.shape)\n", + "\n", + "#### Define condition pool ####\n", + "condition_pool = np.linspace(0, 2 * np.pi, 100)\n", + "\n", + "#### Define variables ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=condition_pool)\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "#### Define theorists ####\n", + "theorist_lr = linear_model.LinearRegression()\n", + "theorist_bms = BMSRegressor(epochs=100)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Loop Constructs\n", + "After defining all the components required for the empirical research process, we can create an automated workflow using basic loop constructs in Python.\n", + "\n", + "The following code block demonstrates how to build such a workflow using the components introduced in the preceding notebook, such as\n", + "\n", + "- ``variables`` (object specifying variables of the experiment)
\n", + "- ``run_experiment`` (function for collecting data)
\n", + "- ``theorist_bms`` (scikit learn estimator for discovering equations using the Bayesian Machine Scientist)
\n", + "- ``random_pool`` (function for generating a random pool of experimental conditions)
\n", + "- ``falsification_sample`` (function for identifying novel experiment conditions using the falsification sampler)
\n", + "\n", + "We begin with implementing the following workflow:\n", + "1. Generate 3 seed experimental conditions using ``random_pool``\n", + "2. Generate 3 seed observations using ``run_experiment``\n", + "3. Loop through the following steps 5 times\n", + " - Identify a model relating conditions to observations using ``theorist_bms``\n", + " - Identify 3 new experimental conditions using ``falsification_sample``\n", + " - Collect 3 new observations using ``run_experiment``\n", + " - Add new conditions and observations to the dataset\n", + "\n", + "We will here begin using the naming convention ``cycle`` to refer to an entire AutoRA loop where the loop encounters all AutoRA components - experiment runner, theorist, experimentalist. Within the scientific method, a cycle would then be running a single iteration of the experiment. This requires the collection of data, the modelling of that data, and the conceptualization of the next iteration of this experiment. For example, if our research concerns how much information a person acquires from a photo (dependent variable) dependent on how bright the photo is (independent variable), we may first collect data with conditions of (let's say) 10%, 50%, and 90% brightness, then model our collected data to determine the relationship between brightness and photo perception, and finally determine which other brightness conditions may help us understand the true relationship. Probing other conditions - such as a brightness of 25% and of 75% would then be the next iteration of the experiment and thus, for us, the next cycle. The following code block will iterate through five of these cycles." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1: Falsification Sampler" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:04<00:00, 23.40it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", + "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0. ]\n", + " [0.06346652]\n", + " [0.12693304]]\n", + "Loss in cycle 0: 0.4950015317483731\n", + "Discovered Model: -0.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:04<00:00, 24.71it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", + "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[6.28318531]\n", + " [6.21971879]\n", + " [6.15625227]]\n", + "Loss in cycle 1: 0.99\n", + "Discovered Model: sin(X0)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:04<00:00, 23.75it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", + "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[5.07732146]\n", + " [5.01385494]\n", + " [5.14078798]]\n", + "Loss in cycle 2: 0.99\n", + "Discovered Model: sin(X0)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:04<00:00, 24.73it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", + "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n", + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0. ]\n", + " [0.06346652]\n", + " [0.12693304]]\n", + "Loss in cycle 3: 0.99\n", + "Discovered Model: sin(X0)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:03<00:00, 25.01it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n", + "WARNING:autora.utils.deprecation:Use `falsification_score_sample_from_predictions` instead. `falsification_score_sampler_from_predictions` is deprecated.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.38079911]\n", + " [0.44426563]\n", + " [0.31733259]]\n", + "Loss in cycle 4: 0.99\n", + "Discovered Model: sin(X0)\n" + ] + } + ], + "source": [ + "num_cycles = 5 # number of empirical research cycles\n", + "measurements_per_cycle = 3 # number of data points to collect for each cycle\n", + "\n", + "# generate an initial set of experimental conditions\n", + "conditions = random_pool(variables=variables,\n", + " num_samples=measurements_per_cycle)\n", + "\n", + "# convert iterator into 2-dimensional numpy array\n", + "conditions = np.array(list(conditions.values)).reshape(-1, 1)\n", + "\n", + "# collect initial set of observations\n", + "observations = run_experiment(conditions)\n", + "\n", + "for cycle in range(num_cycles):\n", + "\n", + " # use BMS theorist to fit the model to the data\n", + " theorist_bms.fit(conditions, observations)\n", + "\n", + " # obtain new conditions\n", + " new_conditions = falsification_sample(\n", + " condition_pool=condition_pool,\n", + " model=theorist_bms,\n", + " reference_conditions=conditions,\n", + " reference_observations=observations,\n", + " metadata=variables,\n", + " num_samples=measurements_per_cycle,\n", + " )\n", + "\n", + " # obtain new observations\n", + " print(new_conditions)\n", + " new_observations = run_experiment(new_conditions)\n", + "\n", + " # combine old and new conditions and observations\n", + " conditions = np.concatenate((conditions, new_conditions))\n", + " observations = np.concatenate((observations, new_observations))\n", + "\n", + " # evaluate model of the theorist based on its ability to predict each observation from the ground truth, evaluated across the entire space of experimental conditions\n", + " loss = np.mean(np.square(theorist_bms.predict(condition_pool.reshape(-1,1)) - ground_truth(condition_pool)))\n", + " print(\"Loss in cycle {}: {}\".format(cycle, loss))\n", + " print(\"Discovered Model: \" + theorist_bms.repr())\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2: Model Disagreement Sampler\n", + "We can easily replace components in the workflow above.\n", + "\n", + "In the following code block, we add a linear regression theorist, to fit a linear model to the data. In addition, we replace ``falsification_sample`` with ``model_disagreement_sample`` to sample experimental conditions that differentiate most between the linear model and the model discovered by the BMS theorist." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:03<00:00, 25.54it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0. 0.06346652 0.12693304]\n" + ] + }, + { + "ename": "ValueError", + "evalue": "all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[27], line 33\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[39m# combine old and new conditions and observations\u001b[39;00m\n\u001b[0;32m 32\u001b[0m conditions \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39mconcatenate((conditions, new_conditions\u001b[39m.\u001b[39mreshape(\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m,\u001b[39m1\u001b[39m)))\n\u001b[1;32m---> 33\u001b[0m observations \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39;49mconcatenate((observations, new_observations))\n\u001b[0;32m 35\u001b[0m \u001b[39m# evaluate model of the theorist based on its ability to predict each observation from the ground truth, evaluated across the entire space of experimental conditions\u001b[39;00m\n\u001b[0;32m 36\u001b[0m loss \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39mmean(np\u001b[39m.\u001b[39msquare(theorist_bms\u001b[39m.\u001b[39mpredict(condition_pool\u001b[39m.\u001b[39mreshape(\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m,\u001b[39m1\u001b[39m)) \u001b[39m-\u001b[39m ground_truth(condition_pool)))\n", + "\u001b[1;31mValueError\u001b[0m: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)" + ] + } + ], + "source": [ + "num_cycles = 5 # number of empirical research cycles\n", + "measurements_per_cycle = 3 # number of data points to collect for each cycle\n", + "\n", + "# generate an initial set of experimental conditions\n", + "conditions = random_pool(variables=variables,\n", + " num_samples=measurements_per_cycle)\n", + "\n", + "# convert iterator into 2-dimensional numpy array\n", + "conditions = np.array(list(conditions.values)).reshape(-1, 1)\n", + "\n", + "# collect initial set of observations\n", + "observations = run_experiment(conditions)\n", + "\n", + "for cycle in range(num_cycles):\n", + "\n", + " # use BMS theorist to fit the model to the data\n", + " theorist_bms.fit(conditions, observations)\n", + " theorist_lr.fit(conditions, observations)\n", + "\n", + " # obtain new conditions\n", + " new_conditions = model_disagreement_sample(\n", + " condition_pool,\n", + " models = [theorist_bms, theorist_lr],\n", + " num_samples = measurements_per_cycle\n", + " )\n", + "\n", + " # obtain new observations\n", + " print(new_conditions)\n", + " new_observations = run_experiment(new_conditions)\n", + "\n", + " # combine old and new conditions and observations\n", + " conditions = np.concatenate((conditions, new_conditions.reshape(-1,1)))\n", + " observations = np.concatenate((observations, new_observations.reshape(-1,1)))\n", + "\n", + " # evaluate model of the theorist based on its ability to predict each observation from the ground truth, evaluated across the entire space of experimental conditions\n", + " loss = np.mean(np.square(theorist_bms.predict(condition_pool.reshape(-1,1)) - ground_truth(condition_pool)))\n", + " print(\"Loss in cycle {}: {}\".format(cycle, loss))\n", + " print(\"Discovered BMS Model: \" + theorist_bms.repr())\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Next Notebook\n", + "While the basic loop construct is flexible, there are more convenient ways to specify a research cycle in ``autora``. The next notebook illustrates the use of these constructs.\n", + "\n", + "Follow this link for the next notebook tutorial:\n", + "[AutoRA Basic Tutorial III: Functional Workflow](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-III-Workflow-Logic/)
" + ] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "autoraKernel", + "language": "python", + "name": "autorakernel" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/tutorials/basic/Tutorial-III-Functional-Workflow.ipynb b/docs/tutorials/basic/Tutorial-III-Functional-Workflow.ipynb new file mode 100644 index 000000000..b392084bb --- /dev/null +++ b/docs/tutorials/basic/Tutorial-III-Functional-Workflow.ipynb @@ -0,0 +1,684 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction\n", + "## Basic Tutorial III: Functional Workflow" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**[AutoRA](https://pypi.org/project/autora/)** (**Au**tomated **R**esearch **A**ssistant) is an open-source framework designed to automate various stages of empirical research, including model discovery, experimental design, and data collection.\n", + "\n", + "This notebook is the third of four notebooks within the basic tutorials of ``autora``. We suggest that you go through these notebooks in order as each builds upon the last. However, each notebook is self-contained and so there is no need to *run* the content of the last notebook for your current notebook. We will here provide a link to each notebook, but we will also provide a link at the end of each notebook to navigate you to the next notebook.\n", + "\n", + "[AutoRA Basic Tutorial I: Components](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-I-Components/)
\n", + "[AutoRA Basic Tutorial II: Loop Constructs](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-II-Loop-Constructs/)
\n", + "[AutoRA Basic Tutorial III: Functional Workflow](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-III-Functional-Workflow/)
\n", + "[AutoRA Basic Tutorial IV: Customization](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-IV-Customization/)
\n", + "\n", + "These notebooks provide a comprehensive introduction to the capabilities of ``autora``. **It demonstrates the fundamental components of ``autora``, and how they can be combined to facilitate automated (closed-loop) empirical research through synthetic experiments.**\n", + "\n", + "**How to use this notebook** *You can progress through the notebook section by section or directly navigate to specific sections. If you choose the latter, it is recommended to execute all cells in the notebook initially, allowing you to easily rerun the cells in each section later without issues.*" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorial Setup\n", + "\n", + "We will here import some standard python packages, set seeds for replicability, and define a plotting function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "[notice] A new release of pip is available: 23.2 -> 23.2.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "#### Installation ####\n", + "!pip install -q \"autora[theorist-bms]\"\n", + "\n", + "#### Import modules ####\n", + "from typing import Optional\n", + "import numpy as np\n", + "import pandas as pd\n", + "import torch\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from autora.state.bundled import StandardState\n", + "\n", + "#### Set seeds ####\n", + "np.random.seed(42)\n", + "torch.manual_seed(42)\n", + "\n", + "#### Define plot function ####\n", + "def plot_from_state(s: StandardState, expr: str): \n", + " \n", + " \"\"\"\n", + " Plots the data, the ground truth model, and the current predicted model\n", + " \"\"\"\n", + " \n", + " #Determine labels and variables\n", + " model_label = f\"Model: {s.model.repr()}\" if s.model.repr() else \"Model\"\n", + " experiment_data = s.experiment_data.sort_values(by=[\"x\"])\n", + " ground_x = np.linspace(s.variables.independent_variables[0].value_range[0],s.variables.independent_variables[0].value_range[1],100)\n", + " \n", + " #Determine predicted ground truth\n", + " equation = sp.simplify(expr)\n", + " ground_predicted_y = [equation.evalf(subs={'x':x}) for x in ground_x]\n", + " model_predicted_y = s.model.predict(ground_x.reshape(-1, 1))\n", + "\n", + " #Plot the data and models\n", + " f = plt.figure(figsize=(4,3))\n", + " plt.plot(experiment_data[\"x\"], experiment_data[\"y\"], 'o', label = None)\n", + " plt.plot(ground_x, model_predicted_y, alpha=.8, label=model_label)\n", + " plt.plot(ground_x, ground_predicted_y, alpha=.8, label=f'Ground Truth: {expr}')\n", + " plt.xlabel('x')\n", + " plt.ylabel('y')\n", + " plt.legend()\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## States\n", + "\n", + "Using the functions and objects in `autora.state`, we can build flexible pipelines and cycles which operate on state\n", + "objects. State objects are containers with specialized functionality that will hold our variables, data, and models. This state can be acted upon by experimentalists, experiment runners, and theorists. \n", + "\n", + "In tutorial I, we had experimentalists define new conditions, experiment runners collect new observations, and theorists model the data. To do this, we used the output of one as the input of the other, such as: \n", + "\n", + "`conditions = experimentalist(...)` $\\rightarrow$
\n", + "`observations = experiment_runner(conditions,...)` $\\rightarrow$
\n", + "`model = theorist(conditions, observations)`
\n", + "\n", + "This chaining is embedded within the `State` functionality. To act on a state, we must wrap each of our experimentalist(s), experiment_runner(s), and theorist(s) so that they:\n", + "- operate on the `State`, and\n", + "- return a modified object of the **same type** `State`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Defining The State\n", + "\n", + "We use the `StandardState` object bundled with `autora`: `StandardState`. Let's begin by populating the state with *variable information* (`variables`), *seed condition data* (`conditions`), and a *dataframe* (`pd.DataFrame(columns=[\"x\",\"y\"])`) that will hold our conditions (`x`) and observations (`y`).\n", + "\n", + "*Note: Some `AutoRA` components have a `random_state` parameter that sets the seed for random number generators. Using this parameter ensures reproducibility of your code, but is optional.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.variable import Variable, ValueType, VariableCollection\n", + "from autora.experimentalist.random_ import random_pool\n", + "from autora.state.bundled import StandardState\n", + "\n", + "#### Define variable data ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "#### Define seed condition data ####\n", + "conditions = random_pool(variables, num_samples=10, random_state=0)\n", + "\n", + "#### Initialize State ####\n", + "s = StandardState(\n", + " variables = variables,\n", + " conditions=conditions,\n", + " experiment_data = pd.DataFrame(columns=[\"x\",\"y\"])\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Viewing the State\n", + "\n", + "Now, let's view the contents of the state we just initialized." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can view all of the content we provided the state more directly if we choose." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\033[1mThe variables we provided:\\033[0m\")\n", + "print(s.variables)\n", + "\n", + "print(\"\\n\\033[1mThe conditions we provided:\\033[0m\")\n", + "print(s.conditions)\n", + "\n", + "print(\"\\n\\033[1mThe dataframe we provided:\\033[0m\")\n", + "print(s.experiment_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## AutoRA Components and the State\n", + "\n", + "Now that we have initialized the state, we need to start preparing components of `AutoRA` to work with the state - namely, experimentalists, experiment runners, and theorists. \n", + "\n", + "These components are defined in the same way as past tutorials. All we need to do so that these can function within the state is to wrap them in specialized state functions. The wrappers are:\n", + "- `on_state()` for experiment runners and experimentalists\n", + "- `state_fn_from_estimator()` for theorists (specifically, scikit-learn estimators)\n", + "\n", + "The first argument for each wrapper should be your corresponding function (i.e., the experiment runner, the experimentalist, and the theorist). The `on_state` wrapper takes a second argument, `output`, to determine where in the state the component is acting on. For the experimentalist this will be `output=[\"conditions\"]`, and for the experiment runner this will be `output=[\"experiment_data\"]`.\n", + "\n", + "Once the components are wrapped, their functionality changes to act on the state, meaning that they now expect a state as the first input and will return a modified version of that state." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wrapping Components to Work with State" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Experimentalist Defined and Wrapped with State\n", + "\n", + "We will use autora's `random_pool` pooler for our experimentalist. We import this and then wrap it so that it functions with the state." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.experimentalist.random_ import random_pool\n", + "from autora.state.delta import on_state\n", + "\n", + "experimentalist = on_state(random_pool, output=[\"conditions\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Experiment Runner Defined and Wrapped with State\n", + "We define a sine experiment runner and then wrap it so that it functions with the state.\n", + "\n", + "To create our experiment runner, we will use an `AutoRA` function called `equation_experiment()`. This function takes in an equation wrapped as a `sympy` object using `sp.simplify()` and then allows us to solve for any input (`x`) given. Further, we constrain the values that this function can output by passing it the `variable` information." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "import sympy as sp\n", + "from autora.experiment_runner.synthetic.abstract.equation import equation_experiment\n", + "from autora.state.delta import on_state\n", + "\n", + "#### Define variable data ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "#### Equation Experiment Method ####\n", + "sin_experiment = equation_experiment(sp.simplify('sin(x)'), variables.independent_variables, variables.dependent_variables[0])\n", + "sin_runner = sin_experiment.experiment_runner\n", + "\n", + "experiment_runner = on_state(sin_runner, output=[\"experiment_data\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Theorist Defined and Wrapped with State\n", + "\n", + "We will use autora's `BMSRegressor` theorist. We import this and then wrap it so that if functions with the state." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.theorist.bms import BMSRegressor\n", + "from autora.state.wrapper import state_fn_from_estimator\n", + "\n", + "theorist = state_fn_from_estimator(BMSRegressor(epochs=100))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running Each Component with the State" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the Experimentalist\n", + "\n", + "Let's run the experimentalist with the state and see how the state changes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('\\033[1mPrevious Conditions:\\033[0m')\n", + "print(s.conditions)\n", + "\n", + "s = experimentalist(s, num_samples=10, random_state=42)\n", + "\n", + "print('\\n\\033[1mUpdated Conditions:\\033[0m')\n", + "print(s.conditions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the Experiment Runner\n", + "\n", + "Let's run the experiment runner and see how the state changes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\033[1mPrevious Data:\\033[0m\")\n", + "print(s.experiment_data)\n", + "\n", + "s = experiment_runner(s, added_noise=1.0, random_state=42)\n", + "\n", + "print(\"\\n\\033[1mUpdated Data:\\033[0m\")\n", + "print(s.experiment_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the Theorist\n", + "\n", + "Let's run the theorist and see how the state changes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\033[1mPrevious Model:\\033[0m\")\n", + "print(f\"{s.model}\\n\")\n", + "\n", + "s = theorist(s, seed=42)\n", + "\n", + "print(\"\\n\\033[1mUpdated Model:\\033[0m\")\n", + "print(s.model)\n", + "\n", + "plot_from_state(s,'sin(x)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Component Chaining\n", + "\n", + "As such, we have our `AutoRA` components wrapped to work with the state. Remember, this means that they take the state as an input and returns the updated state as an output. As the components all act on the state, they can easily be chained." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "s = theorist(s)\n", + "s = experiment_runner(s, added_noise=1.0, random_state=42)\n", + "s = experimentalist(s, num_samples=10, random_state=42)\n", + "\n", + "print(s)\n", + "plot_from_state(s,'sin(x)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Cycle\n", + "\n", + "Moreover, we can use these chained components within a loop to run multiple cycles." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cycle using Number of Cycles" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=42)\n", + "\n", + "s = StandardState(\n", + " variables = variables,\n", + " conditions = conditions,\n", + " experiment_data = pd.DataFrame(columns=[\"x\",\"y\"])\n", + ")\n", + "\n", + "### Then we cycle through the pipeline we built three more times ###\n", + "num_cycles = 3 # number of empirical research cycles\n", + "for cycle in range(num_cycles):\n", + " #Run pipeline\n", + " s = experimentalist(s, num_samples=10, random_state=42+cycle)\n", + " s = experiment_runner(s, added_noise=1.0, random_state=42+cycle)\n", + " s = theorist(s)\n", + " \n", + " #Report metrics\n", + " print(f\"\\n\\033[1mRunning Cycle {cycle+1}:\\033[0m\")\n", + " print(f\"\\033[1mCycle {cycle+1} model: {s.model}\\033[0m\")\n", + " plot_from_state(s,'sin(x)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cycle using Stopping Criteria\n", + "\n", + "Alternatively, we can run the chain until we reach a stopping criterion. For example, here we will loop until we get 50 datapoints." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=42)\n", + "\n", + "s = StandardState(\n", + " variables = variables,\n", + " conditions = conditions,\n", + " experiment_data = pd.DataFrame(columns=[\"x\",\"y\"])\n", + ")\n", + "\n", + "\n", + "### Then we cycle through the pipeline we built until we reach our stopping criterion ###\n", + "cycle = 0\n", + "while len(s.experiment_data) < 50: #Run until we have at least 50 datapoints\n", + " #Run pipeline\n", + " s = experimentalist(s, num_samples=10, random_state=42+cycle)\n", + " s = experiment_runner(s, added_noise=1.0, random_state=42+cycle)\n", + " s = theorist(s)\n", + " \n", + " #Report metrics\n", + " print(f\"\\n\\033[1mRunning Cycle {cycle+1}, number of datapoints: {len(s.experiment_data)}\\033[0m\")\n", + " print(f\"\\033[1mCycle {cycle+1} model: {s.model}\\033[0m\")\n", + " plot_from_state(s,'sin(x)')\n", + " \n", + " #Increase count\n", + " cycle += 1\n", + "\n", + "print(f\"\\n\\033[1mNumber of datapoints: {len(s.experiment_data)}\\033[0m\")\n", + "print(f\"\\033[1mDetermined Model: {s.model}\\033[0m\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Conditional Cycle \n", + "\n", + "Because `AutoRA` components (theorist, experiment runner, experimentalist) act on the state, building a pipeline can have a lot of flexibility. Above, we demonstrated using a single set of components in different loops, but the components can also change respective to your criteria. In other words, you can use `if-else` statements to control which component is acting on the state." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For example, we can choose a different experimentalist depending on the number of datapoints we have collected." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#### We will first define a new experimentalist\n", + "def uniform_sample(variables: VariableCollection, conditions: pd.DataFrame, num_samples: int = 1, random_state: Optional[int] = None):\n", + "\n", + " \"\"\"\n", + " An experimentalist that selects the least represented datapoints\n", + " \"\"\"\n", + "\n", + " #Set random state\n", + " rng = np.random.default_rng(random_state)\n", + " \n", + " #Retrieve the possible values\n", + " allowed_values = variables.independent_variables[0].allowed_values\n", + " \n", + " #Determine the representation of each value\n", + " conditions_count = np.array([conditions[\"x\"].isin([value]).sum(axis=0) for value in allowed_values])\n", + " \n", + " #Sort to determine the least represented values\n", + " conditions_sort = conditions_count.argsort()\n", + " \n", + " conditions_count = conditions_count[conditions_sort]\n", + " values_count = allowed_values[conditions_sort]\n", + " \n", + " #Sample from values with the smallest frequency\n", + " x = values_count[conditions_count<=conditions_count[num_samples-1]]\n", + " x = rng.choice(x,num_samples)\n", + " \n", + " return pd.DataFrame({\"x\": x})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.experimentalist.random_ import random_pool\n", + "\n", + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=42)\n", + "\n", + "s = StandardState(\n", + " variables = variables,\n", + " conditions = conditions,\n", + " experiment_data = pd.DataFrame(columns=[\"x\",\"y\"])\n", + ")\n", + "\n", + "#### Initiate both experimentalists ####\n", + "uniform_experimentalist = on_state(uniform_sample, output=[\"conditions\"])\n", + "random_experimentalist = on_state(random_pool, output=['conditions'])\n", + "\n", + "### Then we cycle through the pipeline we built until we reach our stopping criteria ###\n", + "cycle = 0\n", + "while len(s.experiment_data) < 40:\n", + " \n", + " #Run pipeline\n", + " if len(s.experiment_data) < 20: #Conditional experimentalist: random for first half of cyles\n", + " print('\\n#==================================================#')\n", + " print('\\033[1mUsing random pooler experimentalist...\\033[0m')\n", + " s = random_experimentalist(s, num_samples=10, random_state=42+cycle)\n", + " else: #Conditional experimentalist: uniform for last half of cycles\n", + " print('\\n#==================================================#')\n", + " print('\\033[1mUsing uniform sampler experimentalist...\\033[0m')\n", + " s = uniform_experimentalist(s, num_samples=10, random_state=42+cycle)\n", + " \n", + " s = experiment_runner(s, added_noise=1.0, random_state=42+cycle)\n", + " s = theorist(s)\n", + " \n", + " #Report metrics\n", + " print(f\"\\n\\033[1mRunning Cycle {cycle+1}:\\033[0m\")\n", + " print(f\"\\033[1mCycle {cycle+1} model: {s.model}\\033[0m\")\n", + " plot_from_state(s,'sin(x)')\n", + " \n", + " #Increase count\n", + " cycle += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition, we can dynamically change parameters across cycles." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from autora.experimentalist.random_ import random_pool\n", + "\n", + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=42)\n", + "\n", + "s = StandardState(\n", + " variables = variables,\n", + " conditions = conditions,\n", + " experiment_data = pd.DataFrame(columns=[\"x\",\"y\"])\n", + ")\n", + "\n", + "#### Initiate both experimentalists ####\n", + "random_experimentalist = on_state(random_pool, output=['conditions'])\n", + "\n", + "### Then we cycle through the pipeline we built until we reach our stopping criteria ###\n", + "for cycle, num_samples in enumerate([5, 10, 20, 50, 100]):\n", + " \n", + " #Run pipeline\n", + " s = random_experimentalist(s, num_samples=num_samples, random_state=42+cycle)\n", + " s = experiment_runner(s, added_noise=1.0, random_state=42+cycle)\n", + " s = theorist(s)\n", + " \n", + " #Report metrics\n", + " print(f\"\\n\\033[1mRunning Cycle {cycle+1}:\\033[0m\")\n", + " print(f\"\\033[1mCycle {cycle+1} model: {s.model}\\033[0m\")\n", + " plot_from_state(s,'sin(x)')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Next Notebook\n", + "This concludes the tutorial on ``autora`` functionality. However, ``autora`` is a flexible framework in which users can integrate their own theorists, experimentalists, and experiment_runners in an automated empirical research workflow. The next notebook illustrates how to add your own custom theorists and experimentalists to use with ``autora``.\n", + "\n", + "Follow this link for the next notebook tutorial:\n", + "[AutoRA Basic Tutorial IV: Customization](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-IV-Customization/)
" + ] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "autoraKernel", + "language": "python", + "name": "autorakernel" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/tutorials/basic/Tutorial-IV-Customization.ipynb b/docs/tutorials/basic/Tutorial-IV-Customization.ipynb new file mode 100644 index 000000000..b4f0c739d --- /dev/null +++ b/docs/tutorials/basic/Tutorial-IV-Customization.ipynb @@ -0,0 +1,1136 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**[AutoRA](https://pypi.org/project/autora/)** (**Au**tomated **R**esearch **A**ssistant) is an open-source framework designed to automate various stages of empirical research, including model discovery, experimental design, and data collection.\n", + "\n", + "This notebook is the fourth of four notebooks within the basic tutorials of ``autora``. We suggest that you go through these notebooks in order as each builds upon the last. However, each notebook is self-contained and so there is no need to *run* the content of the last notebook for your current notebook. We will here provide a link to each notebook, but we will also provide a link at the end of each notebook to navigate you to the next notebook.\n", + "\n", + "[AutoRA Basic Tutorial I: Components](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-I-Components/)
\n", + "[AutoRA Basic Tutorial II: Loop Constructs](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-II-Loop-Constructs/)
\n", + "[AutoRA Basic Tutorial III: Functional Workflow](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-III-Functional-Workflow/)
\n", + "[AutoRA Basic Tutorial IV: Customization](https://autoresearch.github.io/autora/tutorials/basic/Tutorial-IV-Customization/)
\n", + "\n", + "These notebooks provide a comprehensive introduction to the capabilities of ``autora``. **It demonstrates the fundamental components of ``autora``, and how they can be combined to facilitate automated (closed-loop) empirical research through synthetic experiments.**\n", + "\n", + "**How to use this notebook** *You can progress through the notebook section by section or directly navigate to specific sections. If you choose the latter, it is recommended to execute all cells in the notebook initially, allowing you to easily rerun the cells in each section later without issues.*" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorial Setup\n", + "\n", + "We will here import some standard python packages, set seeds for replicability, and define a plotting function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "[notice] A new release of pip is available: 23.2 -> 23.2.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "#### Installation ####\n", + "!pip install -q \"autora[theorist-bms]\"\n", + "\n", + "#### Import modules ####\n", + "from typing import Optional\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import sympy as sp\n", + "import torch\n", + "\n", + "from autora.variable import Variable, ValueType, VariableCollection\n", + "from autora.state import StandardState, on_state, estimator_on_state\n", + "from autora.experimentalist.random import random_pool\n", + "from autora.theorist.bms import BMSRegressor\n", + "from autora.experiment_runner.synthetic.abstract.equation import equation_experiment\n", + "\n", + "#### Set seeds ####\n", + "np.random.seed(42)\n", + "torch.manual_seed(42)\n", + "\n", + "#### Define plot function ####\n", + "def plot_from_state(s: StandardState, expr: str): \n", + " \n", + " \"\"\"\n", + " Plots the data, the ground truth model, and the current predicted model\n", + " \"\"\"\n", + " \n", + " #Determine labels and variables\n", + " model_label = f\"Model: {s.model.repr()}\" if hasattr(s.model,'.repr') else \"Model\"\n", + " experiment_data = s.experiment_data.sort_values(by=[\"x\"])\n", + " ground_x = np.linspace(s.variables.independent_variables[0].value_range[0],s.variables.independent_variables[0].value_range[1],100)\n", + " \n", + " #Determine predicted ground truth\n", + " equation = sp.simplify(expr)\n", + " ground_predicted_y = [equation.evalf(subs={'x':x}) for x in ground_x]\n", + " model_predicted_y = s.model.predict(ground_x.reshape(-1, 1))\n", + "\n", + " #Plot the data and models\n", + " f = plt.figure(figsize=(4,3))\n", + " plt.plot(experiment_data[\"x\"], experiment_data[\"y\"], 'o', label = None)\n", + " plt.plot(ground_x, model_predicted_y, alpha=.8, label=model_label)\n", + " plt.plot(ground_x, ground_predicted_y, alpha=.8, label=f'Ground Truth: {expr}')\n", + " plt.xlabel('x')\n", + " plt.ylabel('y')\n", + " plt.legend()\n", + " plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Customizing Automated Empirical Research Components\n", + "\n", + "``AutoRA`` is a flexible framework in which users can integrate their own experimentalists, experiment_runners, and theorists in an automated empirical research workflow. This section illustrates the integration of custom `AutoRA`. For more information on how to contribute your own modules to the ``AutoRA`` ecosystem, please refer to the [Contributor Documentation](https://autoresearch.github.io/autora/contribute/modules/).\n", + "\n", + "To illustrate the use of custom experimentalists, experiment runners, and theorists, we consider a simple workflow:\n", + "1. Generate 10 seed experimental conditions using `random_pool`\n", + "2. Iterate through the following steps\n", + " - Identify 3 new experimental conditions using an ``experimentalist``\n", + " - Collect observations using the ``experiment_runner``\n", + " - Identify a model relating conditions to observations using a ``theorist``\n", + "\n", + "Once this workflow is setup, we will replace each component with a custom function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#### Define metadata ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "#### Define condition pool ####\n", + "conditions = random_pool(variables, num_samples=10, random_state=0)\n", + "\n", + "#### Define state ####\n", + "s = StandardState(\n", + " variables = variables,\n", + " conditions = conditions,\n", + " experiment_data = pd.DataFrame(columns=[\"x\",\"y\"])\n", + ")\n", + "\n", + "#### Define experimentalist and wrap with state functionality ####\n", + "experimentalist = on_state(random_pool, output=[\"conditions\"])\n", + "\n", + "#### Define experiment runner and wrap with state functionality ####\n", + "sin_experiment = equation_experiment(sp.simplify('sin(x)'), variables.independent_variables, variables.dependent_variables[0])\n", + "sin_runner = sin_experiment.experiment_runner\n", + "\n", + "experiment_runner = on_state(sin_runner, output=[\"experiment_data\"])\n", + "\n", + "#### Define theorist and wrap with state functionality ####\n", + "theorist = estimator_on_state(BMSRegressor(epochs=100))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We should quickly test to make sure everything works as expected." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1mPrevious State:\u001b[0m\n", + "StandardState(variables=VariableCollection(independent_variables=[Variable(name='x', value_range=(0, 6.283185307179586), allowed_values=array([0. , 0.21666156, 0.43332312, 0.64998469, 0.86664625,\n", + " 1.08330781, 1.29996937, 1.51663094, 1.7332925 , 1.94995406,\n", + " 2.16661562, 2.38327719, 2.59993875, 2.81660031, 3.03326187,\n", + " 3.24992343, 3.466585 , 3.68324656, 3.89990812, 4.11656968,\n", + " 4.33323125, 4.54989281, 4.76655437, 4.98321593, 5.1998775 ,\n", + " 5.41653906, 5.63320062, 5.84986218, 6.06652374, 6.28318531]), units='', type=, variable_label='', rescale=1, is_covariate=False)], dependent_variables=[Variable(name='y', value_range=None, allowed_values=None, units='', type=, variable_label='', rescale=1, is_covariate=False)], covariates=[]), conditions= x\n", + "0 5.416539\n", + "1 4.116570\n", + "2 3.249923\n", + "3 1.733292\n", + "4 1.949954\n", + "5 0.216662\n", + "6 0.433323\n", + "7 0.000000\n", + "8 1.083308\n", + "9 5.199877, experiment_data=Empty DataFrame\n", + "Columns: [x, y]\n", + "Index: [], models=[])\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:04<00:00, 20.11it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:04<00:00, 24.51it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1mUpdated State:\u001b[0m\n", + "StandardState(variables=VariableCollection(independent_variables=[Variable(name='x', value_range=(0, 6.283185307179586), allowed_values=array([0. , 0.21666156, 0.43332312, 0.64998469, 0.86664625,\n", + " 1.08330781, 1.29996937, 1.51663094, 1.7332925 , 1.94995406,\n", + " 2.16661562, 2.38327719, 2.59993875, 2.81660031, 3.03326187,\n", + " 3.24992343, 3.466585 , 3.68324656, 3.89990812, 4.11656968,\n", + " 4.33323125, 4.54989281, 4.76655437, 4.98321593, 5.1998775 ,\n", + " 5.41653906, 5.63320062, 5.84986218, 6.06652374, 6.28318531]), units='', type=, variable_label='', rescale=1, is_covariate=False)], dependent_variables=[Variable(name='y', value_range=None, allowed_values=None, units='', type=, variable_label='', rescale=1, is_covariate=False)], covariates=[]), conditions= x\n", + "0 3.249923\n", + "1 4.116570\n", + "2 2.599939\n", + "3 0.216662\n", + "4 3.683247\n", + "5 0.000000\n", + "6 1.733292\n", + "7 5.416539\n", + "8 2.816600\n", + "9 3.683247, experiment_data= x y\n", + "0 0.433323 0.572248\n", + "1 4.983216 -1.483542\n", + "2 4.116570 -0.452463\n", + "3 2.816600 0.789584\n", + "4 2.599939 -0.459964\n", + "5 5.416539 -1.413252\n", + "6 0.433323 0.483809\n", + "7 4.333231 -1.087098\n", + "8 1.299969 0.955149\n", + "9 0.433323 -0.006633\n", + "10 3.249923 0.013996\n", + "11 4.116570 -0.488600\n", + "12 2.599939 0.222789\n", + "13 0.216662 -0.239366\n", + "14 3.683247 -1.511473\n", + "15 0.000000 0.485811\n", + "16 1.733292 0.995155\n", + "17 5.416539 -0.659296\n", + "18 2.816600 -0.072496\n", + "19 3.683247 0.097695, models=[sin(x), sin(x)])\n" + ] + } + ], + "source": [ + "print('\\033[1mPrevious State:\\033[0m')\n", + "print(s)\n", + "\n", + "for cycle in range(2):\n", + " s = experimentalist(s, num_samples=10, random_state=42+cycle)\n", + " s = experiment_runner(s, added_noise=0.5, random_state=42+cycle)\n", + " s = theorist(s)\n", + " \n", + " plot_from_state(s, 'sin(x)')\n", + "\n", + "print('\\n\\033[1mUpdated State:\\033[0m')\n", + "print(s)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Custom Experimentalists\n", + "\n", + "Experimentalists must be implemented as functions. For instance, an experimentalist sampler function expects a pool of experimental conditions and returns a modified set of experimental conditions. \n", + "\n", + "**Requirements for working with the state:**\n", + "- The function has a `variables` argument that accepts the `VariableCollection` type\n", + "- The function has a `conditions` argument that accepts a `pandas.DataFrame`\n", + "- The function returns a `pandas.DataFrame`\n", + "\n", + "The custom `uniform_sampler` below will select conditions that are the least represented in the data. \n", + "\n", + "*Note that when building custom experimentalists, we can either wrap the function with `on_state(output=['conditions'])` as we did in tutorial III, or else we can use the `@on_state(output=['conditions'])` decorator.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#==================================================================#\n", + "# Option 1 - Wrapping our Component #\n", + "#==================================================================#\n", + "\n", + "def uniform_sample(variables: VariableCollection, conditions: pd.DataFrame, num_samples: int = 1, random_state: Optional [int] = None):\n", + "\n", + " \"\"\"\n", + " An experimentalist that selects the least represented datapoints\n", + " \"\"\"\n", + " #Set rng seed\n", + " rng = np.random.default_rng(random_state)\n", + "\n", + " #Retrieve the possible values\n", + " allowed_values = variables.independent_variables[0].allowed_values\n", + " \n", + " #Determine the representation of each value\n", + " conditions_count = np.array([conditions[\"x\"].isin([value]).sum(axis=0) for value in allowed_values])\n", + " \n", + " #Sort to determine the least represented values\n", + " conditions_sort = conditions_count.argsort()\n", + " \n", + " conditions_count = conditions_count[conditions_sort]\n", + " values_count = allowed_values[conditions_sort]\n", + " \n", + " #Sample from values with the smallest frequency\n", + " x = values_count[conditions_count<=conditions_count[num_samples-1]]\n", + " x = rng.choice(x,num_samples)\n", + " \n", + " return pd.DataFrame({\"x\": x})\n", + "\n", + "custom_experimentalist = on_state(uniform_sample, output=[\"conditions\"])\n", + "\n", + "#==================================================================#\n", + "# Option 2 - Using a Decorator #\n", + "#==================================================================#\n", + "\n", + "@on_state(output=[\"conditions\"])\n", + "def custom_experimentalist(variables: VariableCollection, conditions: pd.DataFrame, num_samples: int = 1, random_state: Optional [int] = None):\n", + "\n", + " \"\"\"\n", + " An experimentalist that selects the least represented datapoints\n", + " \"\"\"\n", + " #Set rng seed\n", + " rng = np.random.default_rng(random_state)\n", + "\n", + " #Retrieve the possible values\n", + " allowed_values = variables.independent_variables[0].allowed_values\n", + " \n", + " #Determine the representation of each value\n", + " conditions_count = np.array([conditions[\"x\"].isin([value]).sum(axis=0) for value in allowed_values])\n", + " \n", + " #Sort to determine the least represented values\n", + " conditions_sort = conditions_count.argsort()\n", + " \n", + " conditions_count = conditions_count[conditions_sort]\n", + " values_count = allowed_values[conditions_sort]\n", + " \n", + " #Sample from values with the smallest frequency\n", + " x = values_count[conditions_count<=conditions_count[num_samples-1]]\n", + " x = rng.choice(x,num_samples)\n", + " \n", + " return pd.DataFrame({\"x\": x})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1mPrevious State:\u001b[0m\n", + "StandardState(variables=VariableCollection(independent_variables=[Variable(name='x', value_range=(0, 6.283185307179586), allowed_values=array([0. , 0.21666156, 0.43332312, 0.64998469, 0.86664625,\n", + " 1.08330781, 1.29996937, 1.51663094, 1.7332925 , 1.94995406,\n", + " 2.16661562, 2.38327719, 2.59993875, 2.81660031, 3.03326187,\n", + " 3.24992343, 3.466585 , 3.68324656, 3.89990812, 4.11656968,\n", + " 4.33323125, 4.54989281, 4.76655437, 4.98321593, 5.1998775 ,\n", + " 5.41653906, 5.63320062, 5.84986218, 6.06652374, 6.28318531]), units='', type=, variable_label='', rescale=1, is_covariate=False)], dependent_variables=[Variable(name='y', value_range=None, allowed_values=None, units='', type=, variable_label='', rescale=1, is_covariate=False)], covariates=[]), conditions= x\n", + "0 5.416539\n", + "1 4.116570\n", + "2 3.249923\n", + "3 1.733292\n", + "4 1.949954\n", + "5 0.216662\n", + "6 0.433323\n", + "7 0.000000\n", + "8 1.083308\n", + "9 5.199877, experiment_data=Empty DataFrame\n", + "Columns: [x, y]\n", + "Index: [], models=[])\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:03<00:00, 26.85it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:03<00:00, 26.97it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEmCAYAAAB4VQe4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABJAklEQVR4nO3dd3hTddvA8W+Sbroo3dJC2ZRVhtQCPiBUliL48CIiyBQFQcEiy8FQocgQHAgiKktEEZGhoqwyy7YIlFnLEDqEQhd0JXn/qOSxkLZJaXuS9v5c17kucnLGnaTkzm+r9Hq9HiGEEOIeaqUDEEIIYZkkQQghhDBKEoQQQgijJEEIIYQwShKEEEIIoyRBCCGEMEoShBBCCKMkQQghhDDKRukALJ1Op+PatWu4uLigUqmUDkcIIR6YXq8nPT0df39/1OrCywmSIIpx7do1AgIClA5DCCFK3ZUrV6hevXqhz0uCKIaLiwuQ/0a6uroqHI0QQjy4tLQ0AgICDN9vhbGqBLF7927mzJnD0aNHSUhIYP369fTq1avQ46Oionjsscfu25+QkICvr69J97xbreTq6ioJQghRoRRXbW5VjdSZmZk0a9aMhQsXmnXe2bNnSUhIMGze3t5lFKEQQlQcVlWC6NatG926dTP7PG9vb9zd3Us/ICGEqMCsqgRRUiEhIfj5+fH444+zb9++Io/Nzs4mLS2twCasj1anJzruBhtirhIddwOtTma1F8JcVlWCMJefnx+LFy+mVatWZGdns3TpUjp06MDBgwdp0aKF0XMiIyOZPn16OUcqStOWkwlM3xRLQmqWYZ+fmwNTewTTpZEveXl5aLVaBSMUomxpNBpsbGweuGu+yloXDFKpVMU2UhvTvn17AgMDWblypdHns7Ozyc7ONjy+29qfmpoqjdRWYMvJBEauOsa9f9QqwMNBzUe9auJhr0RkQpQvJycn/Pz8sLOzu++5tLQ03Nzciv1eq9AlCGNat27N3r17C33e3t4ee3v5BrFGWp2e6Zti70sOABoVTGzngY1Kj7//Q9jZ2cnAR1Eh6fV6cnJy+Pvvv4mPj6du3bpFDoYrSqVLEDExMfj5+SkdhigDh+JTClQr/ZtXFQ1VnWxwcK2Gxr4Kjg6V7k9fVCKOjo7Y2tpy6dIlcnJycHBwKNF1rOp/SUZGBhcuXDA8jo+PJyYmBg8PDwIDA5k8eTJXr15lxYoVACxYsICgoCAaNWpEVlYWS5cuZceOHfz2229KvQRRhpLTjScHALUKQAUqFXk6XbnFJIRSSlpq+DerShBHjhwpMPAtIiICgEGDBrFs2TISEhK4fPmy4fmcnBzGjRvH1atXcXJyomnTpmzbts3o4Dlh/bxdTPuVZFMK/3GEqAystpG6vJjamCOUp9Xpaff+DhJTs+5rh3jIRcP0x7zxqx5IcEA1aX8QFV5WVhbx8fEEBQXdV8Vk6vea/JQSFYZGrWJqj2Agv9eSMd6u0jh9r6ioKFQqFbdu3TL5nJo1a7JgwYIyi0lYBkkQokLp2tiPRQNa4OtW8BeTl7M9HlXscHG4v8ufpRs8eDAqlYoRI0bc99yoUaNQqVQMHjy4/AMTFZ5VtUEIYYqujf14PNiXQ/EpJKdn4e3iQFM/Jy5fuqh0aCUWEBDAmjVrmD9/Po6OjkB+FcLq1asJDAxUODpRUUkJQlRIGrWKsNrV6BnyEGG1q6FRG6lW0ush944ym5lNfy1atCAgIIAffvjBsO+HH34gMDCQ5s2bG/ZlZ2fz6quv4u3tjYODA+3atePw4cMFrvXzzz9Tr149HB0deeyxx7h48eJ999u7dy+PPvoojo6OBAQE8Oqrr5KZmWlWzML6SQlCVF55WfBlV2XuPXQL2Dqad8rQoXz11Vf0798fgC+//JIhQ4YQFRVlOGbChAmsW7eO5cuXU6NGDWbPnk2XLl24cOECHh4eXLlyhf/+97+MGjWKF198kSNHjjBu3LgC94mLi6Nr16689957fPnll/z999+MHj2a0aNH89VXXz3wSxfWQ0oQwqpU5kn4BgwYwN69e7l06RKXLl1i3759DBgwwPB8ZmYmixYtYs6cOXTr1o3g4GA+//xzHB0d+eKLLwBYtGgRtWvXZt68edSvX5/+/fvf134RGRlJ//79GTt2LHXr1qVNmzZ89NFHrFixgqyswseaiIpHShDCahQ1CV/XxiUYHW/jkP9LXgk25o9s9fLy4oknnmDZsmXo9XqeeOIJPD09Dc/HxcWRm5tL27ZtDftsbW1p3bo1p0+fBuD06dOEhoYWuG5YWFiBx8ePH+ePP/7g66+/NuzT6/XodDri4+Np2LCh2bEL6yQJQliFwibhS0zNYuSqYywa0ML8JKFSmV3No7ShQ4cyevRoALMXzjJVRkYGL730Eq+++up9z0mDeOUiVUzC4hU1Cd/dfdM3xVaK6qauXbuSk5NDbm4uXbp0KfBc7dq1sbOzK7DmSW5uLocPHyY4OH98SMOGDTl06FCB8w4cOFDgcYsWLYiNjaVOnTr3bcZmBhUVlyQIYfGKmoQP8pNEQmoWh+JTyi8ohWg0Gk6fPk1sbCwajabAc1WqVGHkyJGMHz+eLVu2EBsby/Dhw7l9+zbDhg0DYMSIEZw/f57x48dz9uxZVq9ezbJlywpcZ+LEiezfv5/Ro0cTExPD+fPn2bBhg6HkIioPSRDC4hU1CV9JjrN2rq6uhU6PMGvWLHr37s3zzz9PixYtuHDhAr/++itVq1YF8quI1q1bx48//kizZs1YvHgxM2fOLHCNpk2bsmvXLs6dO8ejjz5K8+bNmTJlCv7+/mX+2oRlkbmYiiFzMSkvOu4G/T4/UOxx3wx/hLDa1Yw+V9S8NEJURDIXk6gUWgd54OfmUOj8SiryezO1DvIoz7CEqPAkQQiLV9QkfHcfT+0RbHy0tBCixCRBCKtQ2CR8vm4OJeviKoQoloyDEFbD2CR8rYM8pOQgRBmRBCGsyt1J+IQQZU+qmIQQQhglCUIIIYRRUsUkKjW9Xk9mtpY8nQ4btZoq9hpZklSIf0iCEJVW6p0crt3KIlerM+yz1ajxd3fAzVHmHBJCqphEpZR6J4dLN24XSA4AuVodl27cJvVOjkKRVSzTpk0jJCRE6TAA6NChA2PHji3Te9SsWZMFCxaYfd7bb7/Niy++aPLxixcvpkePHmbfx1ySIESlo9fruXar6Hmbrt3KwpJmoUlMTGTMmDHUqVMHBwcHfHx8aNu2LYsWLeL27dtKh1ci06ZNQ6VSFbmVRFRUFCqVilu3bpVuwCY4fPiwWV/0kP/Zfvjhh7z55psmnzN06FCOHTvGnj17zA3RLJIgRKWTma29r+Rwr1ytjsxsbTlFVLQ///yT5s2b89tvvzFz5kx+//13oqOjmTBhAps3b2bbtm2Fnpubm1uOkZrn9ddfJyEhwbBVr16dd955p8C+f8vJsfxSnZeXF05OTmads3TpUtq0aUONGjVMPsfOzo7nnnuOjz76yNwQzSIJQlQ6ebr85KDX68nRZhe6ZebeJisvq0w2c0onL7/8MjY2Nhw5coRnnnmGhg0bUqtWLXr27MlPP/1UoKpBpVKxaNEinnrqKapUqcKMGTOA/y01amdnR/369Vm5cqXhnIsXL6JSqYiJiTHsu3XrFiqVyrDe9d1f5du3b6dVq1Y4OTnRpk0bzp49WyDWWbNm4ePjg4uLC8OGDStyiVJnZ2d8fX0Nm0ajwcXFxfD42WefZfTo0YwdOxZPT0+6dOlSbKwXL17kscceA6Bq1aqoVKoCS6rqdDomTJiAh4cHvr6+TJs2zeTPAfL/ZqZNm0ZgYCD29vb4+/sXWFjp3iomlUrF0qVLefrpp3FycqJu3bps3LixwDXXrFlT4DP8+++/8fX1LTDL7v79+7Gzs2P79u2GfT169GDjxo3cuXPHrNdgDqtqpN69ezdz5szh6NGjJCQksH79enr16lXkOVFRUURERHDq1CkCAgJ466237luDV1QuNur830W5uhzeOTqq0OPsbdSoy2iU9vKuy3EwYdnRGzduGEoOVapUMXrMvVUx06ZNY9asWSxYsAAbGxvWr1/PmDFjWLBgAeHh4WzevJkhQ4ZQvXp1w5epqd58803mzZuHl5cXI0aMYOjQoYYFir777jumTZvGwoULadeuHStXruSjjz6iVq1aZt3j35YvX87IkSMLLIJUlICAANatW0fv3r05e/Ysrq6uODr+b9XA5cuXExERwcGDB4mOjmbw4MG0bduWxx9/HIDBgwdz8eJFQ2K817p165g/fz5r1qyhUaNGJCYmcvz48SJjmj59OrNnz2bOnDl8/PHH9O/fn0uXLuHh4UFKSgqxsbG0atXKcLyXlxdffvklvXr1onPnztSvX5/nn3+e0aNH06lTJ8NxrVq1Ii8vj4MHD9KhQweT3h9zWVUJIjMzk2bNmpm81GJ8fDxPPPEEjz32GDExMYwdO5YXXniBX3/9tYwjFZasir0GW03Rf/oqFWWWHMxx4cIF9Ho99evXL7Df09MTZ2dnnJ2dmThxYoHnnnvuOYYMGUKtWrUIDAxk7ty5DB48mJdffpl69eoRERHBf//7X+bOnWt2PDNmzKB9+/YEBwczadIk9u/fbyglLFiwgGHDhjFs2DDq16/Pe++9Z1jJrqTq1q3L7NmzqV+//n3vgTEajQYPj/xZfb29vfH19cXNzc3wfNOmTZk6dSp169Zl4MCBtGrVqsCvcj8/vyKXVb18+TK+vr6Eh4cTGBhI69atGT58eJExDR48mH79+lGnTh1mzpxJRkaGYVW/y5cvo9fr71tro3v37gwfPpz+/fszYsQIqlSpQmRkZIFjnJyccHNz49KlS8W+LyVlVSWIbt260a1bN5OPX7x4MUFBQcybNw/IX25x7969zJ8//77lGkXZykhP4FbqJXLzssjNu4NGZYOzsw8uVXxxdPJEpS6/3yoqlQp/dwcuXtcypaXxHxuBHo64lmFXV3uN/QOdf+jQIXQ6Hf379yc7O7vAc//+NQpw+vTp+xpO27Zty4cffmj2fZs2bWr4t59f/gSJycnJBAYGcvr0aUaMGFHg+LCwMHbu3Gn2fe5q2bJlic815t/xQ/5rSE5ONjy+90v4Xn369GHBggXUqlWLrl270r17d3r06IGNTeFfpf++Z5UqVXB1dTXc8271kLE1SubOnUvjxo1Zu3YtR48exd7+/r8ZR0fHMu2kYFUJwlzR0dGEh4cX2NelS5ciu7plZ2cX+A+XlpZWVuFVSHqdjsTE3zlzaSfnko8Tl36Zv/Myua3PK/QcR5UNgfbuBFZ5iDreTWlaryceHnXKNE43RztqesK1WxqLHgdRp04dVCrVfXX9d6tt/l19cldhVVGFUf+TnP/dLlJY47atra3h33ertnS6ohv8H8S9r8WcWI35d/yQ/xrMiT8gIICzZ8+ybds2tm7dyssvv8ycOXPYtWvXfdc25Z6enp4A3Lx5Ey8vrwLHxcXFce3aNXQ6HRcvXqRJkyb3XTslJeW+80pThU4QiYmJ+Pj4FNjn4+NDWload+7cMfqfKzIykunTp5dXiBXGpUt7OHBmLQeTj3E1L8PoMVVUNtipNNiqNGjRkaHLJVuv5Y4+j7NZ1zmbdZ2tN47D6ZUE2roS6tOK9s2G4eXdqExidnO0w9XB1qJHUlerVo3HH3+cTz75hFdeecXsL3/ILznv27ePQYMGGfbt27fPUP1z9wsmISGB5s2bAxRoBDbnPgcPHmTgwIGGfQcOFL8SoDlMidXOLj+5a7Vl0wvN0dGRHj160KNHD0aNGkWDBg04ceIELVq0MPtatWvXxtXVldjYWOrVq2fYn5OTw4ABA+jbty/169fnhRde4MSJE3h7exuOiYuLIysry/A+lIUKnSBKYvLkyURERBgep6WlERAQoGBElis39zaHYr5ky/kfOZd93bDfBjV1HKpRz70u9Xxb4usZjJdnAxwcq953jZzsdJKS/+BSwjEu3YjlVMpZ/sxJ4XJuGpf/2sHav3bQ2NGXrg2eoWWTgag1pfsnq1KpcHaw7P8Gn376KW3btqVVq1ZMmzaNpk2bolarOXz4MGfOnCm2Gmb8+PE888wzNG/enPDwcDZt2sQPP/xg6B7r6OjII488wqxZswgKCiI5OZm33nrL7DjHjBnD4MGDadWqFW3btuXrr7/m1KlTD9RIfS9TYq1RowYqlYrNmzfTvXt3HB0dcXZ2Nun6kydP5urVq6xYscLo88uWLUOr1RIaGoqTkxOrVq3C0dHRrC6q/6ZWqwkPD2fv3r0FOty8+eabpKam8tFHH+Hs7MzPP//M0KFD2bx5s+GYPXv2UKtWLWrXrl2ie5vCsv9nPCBfX1+SkpIK7EtKSrqvZ8O/2dvbG63rE/+Tl5tF1MH5rIvbQIouv4HSBhXNnWvwSI1OtAjui5OzdzFXyWdn70JAQFsCAtrS7p99qamXOX5mHbvjf+PknQRO3knk5O8fUf3kV/Ss+3+0azWq1BOFJatduza///47M2fOZPLkyfz111/Y29sTHBzM66+/zssvv1zk+b169eLDDz9k7ty5jBkzhqCgIL766qsCPV++/PJLhg0bRsuWLalfvz6zZ8+mc+fOZsXZt29f4uLimDBhAllZWfTu3ZuRI0eWeqeQ4mJ96KGHmD59OpMmTWLIkCEMHDiQZcuWmXTthIQELl++XOjz7u7uzJo1i4iICLRaLU2aNGHTpk1Uq1byKehfeOEFhg8fzuzZs1Gr1URFRbFgwQJ27txpWC965cqVNGvWjEWLFjFy5EgAvvnmm2IbyB+USm9Jw0XNoFKpiu3mOnHiRH7++WdOnDhh2Pfcc8+RkpLCli1bTLqPqYt7VwZ6nY7oo4tYc3o1SdpMANzVdoT7teXxh1/FvWpQqd/z7+RTbDu2iF8TD3Dnn3aMGrZuDGwxmsbBfUy+TlELuAuhJL1eT2hoKK+99hr9+vUz6ZxTp07RsWNHzp07V6CX1r8V9Tdv6veaVf0My8jI4MKFC4bH8fHxxMTE4OHhQWBg4H3FwxEjRvDJJ58wYcIEhg4dyo4dO/juu+/46aeflHoJVivh2lG+2P0WJ+7kj251U9vxdM3uhD8yHlt78+vFTeXl3Yh+XT+hZ0Yyvx6Yw6a/dnIpN5V3D86g1alVDH1sDtU86xV/ISEslEqlYsmSJQV+yBYnISGBFStWFJocSotVlSCioqKMDuwZNGgQy5YtMzrIJSoqitdee43Y2FiqV6/O22+/bdZAucpegtDm5bAx6k2+v7KdPHTYoqZX9Q482e5to20KZS097Sprd73N1uu/o0OPo8qGgfWe4bFHXi+yq6yUIERlUxolCKtKEEqozAkiOekkn+wYy9ms/AbokCrVGfKf9/D1DVE2MODKlWg+2/M25/9pHG/m9BCjuizEzb2m0eMlQYjKpjQShFWNpBblJ/roYib8MpizWddxUGkYFTyISf+30SKSA0BAQBjv9N3CgJpPYIua47evMnFDX2LP/Kh0aEJUGJIgRAE6bR5f/zKSBX8s5o4+j/oOnszptpz/hL5WrqOdTaHW2NDjsRlEhi+kuq0LN3XZvBs9nfXbJ6AvZPCTFJhFZVEaf+uW9T9eKCojPYGZ3z/FxsRoAJ7ybcPUPj/j7dNY4ciKFhAQxozeG2nv3hAdetZc/o1PNvQjNzvTcMzd0azWunaCEOa6+7de2AhvU0gbRDEqSxtEctJJZv02gqt5GdirNIxoPIw2rYruX2+Jtu2N5Mvz36FFTz17T17vvtTQLpGQkMCtW7fw9vbGycnJokZMC1Fa9Ho9t2/fJjk5GXd3d8OcWf8mjdSlpDIkiPiLUczaNYFbuhw81A5M6jCHGjUeVTqsEjtxai3zD79Ppj4Pb40Tb3VZjI9PU/R6PYmJiYqsNCZEeXN3d8fX19foDyFJEKWkoieIU2d+YPaBGWTptQTaujKp69IKMa7g2rUjRG57lWTtbaqq7XnjsXkEBuaP1dZqtRa90poQD8rW1haNRlPo85IgSklFThAxJ1cz9/BcctHR2NGXcU+uMHmKDGtwMyWOmT8P4XJuGlVUNkxq9y716pg+XbwQFZV0cxVFOhKzjDn/JIeWzjWY9PS6CpUcAKp61GZqz2+pZ+9Jpj6PGXvf4tyFX5QOSwirIQmiEjp6fDkf/P4heegIdQnitV7flOl0GUpydvHjzafX0sjRlyy9lpl73+b8BdPm4RKispMEUUFodXqi426wIeYq0XE30OqM1xyeOLWWD459iBY9bVzrMKbXt9jaOpVztOXLwbEqE3p+Q0MHb+78U5KIi9uqdFhCWDxpgyiGNbRBbDmZwPRNsSSkZhn2+bk5MLVHMF0b/6+L25mzG5kZPZ1svZbWLkGM7fUtGhvLWDmtPGTducmsH/tyOisZF7Ut0zp9TPXqjygdlhDlTtogKoktJxMYuepYgeQAkJiaxchVx9hyMn/21UuX9jAr+h2y9VpCqlTn1R6rKlVygPySxMSea6ht50G6LpcZ28dy/e/TSoclhMWSBGHFtDo90zfFYqwIeHff9E2xJCadJDLqde7o82jo4E3EU19X2DaH4jg6eTDpyeU8ZONMii6LGVuGk5Z6RemwhLBIkiCs2KH4lPtKDv+mB9LTE3jvl5e4qcumuq0Lrz+5HHuHsp1D3tK5ugXwRrelVNM4cC0vgzk/DSkwLYcQIp8kCCuWnF54cgCwJYvmvp+SqM3AQ+3AG12/wNnl/mH3lZGnZwPe6LiAKiobzmVfZ+HmQei0eUqHJYRFkQRhxbxdilrXQEeY92ek2qfjqLLhjY7zKsQI6dJUvfojjAudjA0qotMu8M1vryodkhAWRRKEFWsd5IGfmwPGppwLq/oNt6okoFapGPfweAIC2pZ7fNagUcPevBQ8EICNifuJOjBP4YiEsBySIKyYRq1iao9ggAJJokmV7WS6569v2837CUKaPKtAdNbjP6Gv0du/PQCfn/6as+dlzXIhQBKE1eva2I9FA1rg65Zf3eRvdxZbr+2oVCraujblpV6RCkdoHf4vfB6tXYLIQ8cH+6dz4/o5pUMSQnGSICqAro392DuxI8ufr0WTmt+hsYWWrv683ucrpUOzGmqNDS93/4JAW1du6XKY9+sI6dkkKj1JEBWESq8l+tQEbqmy8LF1Ymy3zyvdQLgH5ejkwfjHP8VFbUtcTgpf/TpC6ZCEUJQkiApi3fbx/J55BVvURDw6A1e3AKVDsgr3zmFVzasRr7QchwrYfuMEO6PnKh2iEIqxUToA8eCOn1zDuqs7AXgx+HlqBXVUOCLrUPgcVu15JuAI317ZxhdnVlPDt4W8p6JSkhKElbtx/RwfH52HHgiv1pT/hL6mdEhWobg5rBy8x9DCOZBcdMzf8xaZGYkKRSqEcqwuQSxcuJCaNWvi4OBAaGgohw4dKvTYZcuWoVKpCmwODkUNLrMueblZLPjtZdJ1udSwdWNwl0VKh2QVTJnD6t2fzjGyy2d4a5xI1t7msy0j0et05RmmEIqzqgTx7bffEhERwdSpUzl27BjNmjWjS5cuJCcnF3qOq6srCQkJhu3SpUtlHqepazM8qG+3RXAu+zqOKhsiwj+02An4yuv9MJUpc1glpGZx6m87xradjg0qDqbH89u+GeUXpBAWwKraID744AOGDx/OkCFDAFi8eDE//fQTX375JZMmTTJ6jkqlwtfXt9xiNHVthgf1x6lv2Zi4H4ARTYbj6xtSatcuTeX1fpijuDms/n1cWMjjPHelByviN7LiwnrqBTxKUM0OZRugEBbCakoQOTk5HD16lPDwcMM+tVpNeHg40dHRhZ6XkZFBjRo1CAgIoGfPnpw6darMYjR1bYYHlXrrIp8cyZ8SIrxaUx5p+VKpXLe0ldf7Ya6i57C6/7ju/5lGS+ca5KHjwz1vknXnZlmGJ4TFsJoEcf36dbRaLT4+PgX2+/j4kJhovAGxfv36fPnll2zYsIFVq1ah0+lo06YNf/31V6H3yc7OJi0trcBmClPXZnjQ6hWdNo9PfxtNqi6H6rYuDOqy8IGuV1bK6/0oiaLmsIL8aUv83BxoHeSR/1itZmSXT/FQO5CQl8nyQib1s7SqNCEelNUkiJIICwtj4MCBhISE0L59e3744Qe8vLz47LPPCj0nMjISNzc3wxYQYNp4AlPrtQ/Fp5j7MgrYsvddYjL/whY1Y9vPxs7e5YGuV1bK6/0oicLmsPr346k9gtGo//esi+tDjG49HhWwI+UEB48tKXDelpMJtHt/B/0+P8CYNTH0+/wA7d7foVgpSYjSYDUJwtPTE41GQ1JSUoH9SUlJJrcx2Nra0rx5cy5cuFDoMZMnTyY1NdWwXbli2mpj5tRrl9Tly3tZ/ecmAAbW+S8BAWElvlZZK4/340HcO4fVXb5uDiwa0MJo+0ijhr3p6dcOgCV/LOH69TOA5ValCfGgrCZB2NnZ0bJlS7Zv327Yp9Pp2L59O2Fhpn1RarVaTpw4gZ9f4Y2j9vb2uLq6FthMYW69trlyszP5ePcb5KKjRZUAHm/7RomuU17K+v0oDXfnsPpm+CN8+GwI3wx/hL0TOxbZeN6n01xq23mQoc/j021jyc3LtdiqNCEelNUkCICIiAg+//xzli9fzunTpxk5ciSZmZmGXk0DBw5k8uTJhuPfeecdfvvtN/7880+OHTvGgAEDuHTpEi+88EKpx2Zuvba51myP4HJuGq5qO0Z0/hiV2rI/urJ+P0qLRq0irHY1eoY8RFjtagWqlYyxsXXglcfmYK/ScOpOIit+ftNiq9KEeFCW/S1zj759+zJ37lymTJlCSEgIMTExbNmyxdBwffnyZRIS/lecv3nzJsOHD6dhw4Z0796dtLQ09u/fT3BwcKnHVpJ6bVOdOr2OzUkHARgRMgo395olD7SclOX7oTQ//5Y8X6c3AFv/3oq/3dliz1GqKk2IB6HS6/VS9i1CWloabm5upKammlTdVNr9/m/fvs6E73vwt/YO4dWaMvypFWZfQ0mWOA6iNOh1OmZ9/xTH0q9gd8eeg39NIg/7Qo//ZvgjhNWuVo4RClE4U7/XJEEUw9wEAfndHQ/Fp5CcnoW3S341Skl/KS/6sT9RN0/hrXFi9v9txtFJ2SqZkijN98OS3EyJ4/WNz3I9JxvnW/XYlzLkvmNU5Dd8753YsUK8ZlExmPq9ZlUjqa3F3XrtB3UkZhlRN0+hAl4OnWiVyQFK7/2wNFU9avNCk2HMi1lEhttZgjL/ID67qeF5a69KE8Kq2iAqk/S0qyw5/ikAT/iE0rB+T4UjEsaEtRzBo+51sbVRU93nB2z5X1VaUV1mhbAGUoKwUF9te41UXQ4P2bjwbKcPlA5HFGHo4x9yav3TpKpzeKXlz9So+06FqkoTlZeUICzQ4d+/YF/qOdSoeLnN2xY7S6vI5+L6EC82exmA/RlHaVAlxqQus0JYOkkQFiY97Sqf/5E/FciTvmHUqd1Z4YiEKVqFDOY/7g3RA58diCQ3O1PpkIR4YJIgLMyy7RGGqqVnOs5ROhxhhkHhH+CutuNqXgZrd05QOhwhHpgkCAty9Phy9t46ixoVI8PelKolK+Ps4scLzUYAsClhP3FxWxWOSIgHIwnCQtzOSGZpTP6SoU/4hlK3TleFIxIl8XDIUNq61UWHnkXR75Kbe1vpkIQoMUkQFmLVjnGk6LLwtalCn8feVzoc8QAGd/oAV7UdV3LT+HHnm0qHI0SJSYKwACdj17L9xgkAXnp4PPYObgpHJB6Eq1sAQ4IHAfDj1SiuXCl8xUMhLJkkCIVlZ6Xy2ZH5AHT2bE5wg17KBiRKRVjLkf8sU6pn8Z630GnzlA5JCLNJglDY9zsnkay9jYfagX6dpNdSRaFSqxn22BwcVTZcyL7BL3veUTokIcwmCUJBf8ZvZ3PiAQCGh7yMk5OnwhGJ0lTNsx4D/pkW/NuLP5GcdFLhiIQwjyQIheTlZrF43zvo0NPWrS4tmg1UOiRRBjqGjaehgzfZei1Loyai1+mUDkkIk0mCUMhPe6ZxKTcVZ5UNg2RAXIWl1tjwYvuZ2KLm+O2r7D3yidIhCWEySRAKSEz4nbWXfgNgYIPnrGKFOFFy/v6t6B3QCYDlp1eSlnpF4YiEMI0kiHKm1+lYuusNctHRxNGP/7Qeq3RIohw82X46AbaupOtyWbFjvNLhCGESSRDlbPehBZy4k4Atal7oEIlKLR9BZWBr68RLj7yBCthz6wwnTq1VOiQhiiXfTuUoNfUyK86sBqBPjc74+oYoG5AoV3XrdKWLV0sAlhydT3ZWqsIRCVE0SRDlaOWOCWTo86hh68YTj05TOhyhgL4d38dD7UCy9jbrot5QOhwhiiQJopz8cepb9tw6gwp4MexNbGwdlA5JKMDJyZOhzV4E8md8vXRpj8IRCVE4SRDlICc7naVHPwKgi1dLWQSokns4ZCihLkHo0LNk3zSZhkNYLEkQ5WDdzskkaTPxUDvQt6PM1CpgUIf3cVBpuJB9g9/2zVQ6HCGMkgRRxq5c2cemhH0ADG06XKbTEED+NBz9avUE4Js/N5CSckHhiIS4n9UliIULF1KzZk0cHBwIDQ3l0KFDRR6/du1aGjRogIODA02aNOHnn38up0hBp81jyZ6paNHzsHNNHm4+rNzuLSxf57ZvUMe+Gll6LctkbISwQFaVIL799lsiIiKYOnUqx44do1mzZnTp0oXk5GSjx+/fv59+/foxbNgwfv/9d3r16kWvXr04ebJ8Jk3bET2Hc9nXcVBpGPLY7HK5p7Aeao0NL7adhhoVB9PjORKzTOmQhChApdfr9UoHYarQ0FAefvhhPvkkfz4bnU5HQEAAr7zyCpMmTbrv+L59+5KZmcnmzZsN+x555BFCQkJYvHixSfdMS0vDzc2N1NRUXF1dTY71ZkocERv7clufx+BavejWfprJ54rK5etfRrIxMRpPjSNz/+8nHJ08lA5JWAm9Tleiwbamfq9ZTQkiJyeHo0ePEh4ebtinVqsJDw8nOtr4il3R0dEFjgfo0qVLoccDZGdnk5aWVmAriRU7J3Jbn0dtOw+6tHurRNcQlUPvDjPx1jhxXXuHtVH3/9ApDVqdnui4G2yIuUp03A20Oqv5XSgKkZebxbvfdWfXgQ/KbJZgsxPEoEGD2L17d1nEUqTr16+j1Wrx8fEpsN/Hx4fExESj5yQmJpp1PEBkZCRubm6GLSAgwOxYz134hf1pF1CjYnjbKag1NmZfQ1QeDo5VGdZ8FAC/JB0m/mJUqV5/y8kE2r2/g36fH2DMmhj6fX6Adu/vYMvJhFK9jyhfm3dP5dSdRFae/YbMzKQyuYfZCSI1NZXw8HDq1q3LzJkzuXr1alnEpZjJkyeTmppq2K5cMX/mzbq1uvBq4xd4JiCcoJodSj9IUeGENOlPG9c66NDz+b53Sm1sxJaTCYxcdYyE1KwC+xNTsxi56pgkCSuVlPQH31/eCuTPCO3s4lcm9zE7Qfz4449cvXqVkSNH8u2331KzZk26devG999/T25ublnECICnpycajYakpIKZMikpCV9fX6Pn+Pr6mnU8gL29Pa6urgU2c6nUato+PJqnw2WdB2G6QR3n4KSyIS4nhV/3vvfA19Pq9EzfFIuxyqS7+6ZvipXqJiuj1+lYGjWJXHQ0dvTl0YfHlNm9StQG4eXlRUREBMePH+fgwYPUqVOH559/Hn9/f1577TXOnz9f2nFiZ2dHy5Yt2b59u2GfTqdj+/bthIWFGT0nLCyswPEAW7duLfR4IZTkXjWI/v8sUbomfhPXr595oOsdik+5r+Twb3ogITWLQ/EpD3QfUb72H/2UP25fy58R+j8zynRG6Ae6ckJCAlu3bmXr1q1oNBq6d+/OiRMnCA4OZv78+aUVo0FERASff/45y5cv5/Tp04wcOZLMzEyGDBkCwMCBA5k8ebLh+DFjxrBlyxbmzZvHmTNnmDZtGkeOHGH06NGlHpsQpaFj2Hjq2XuSpdfy1c6JD3St5PTCk0NJjhPKy0hPYHnsCgCerv4Yfv4ty/R+ZieI3Nxc1q1bx5NPPkmNGjVYu3YtY8eO5dq1ayxfvpxt27bx3Xff8c4775R6sH379mXu3LlMmTKFkJAQYmJi2LJli6Eh+vLlyyQk/K9OtU2bNqxevZolS5bQrFkzvv/+e3788UcaN25c6rGJiq28egGpNTa8+Oh0NKg4knGJw79/UeJrebuYNiGkqccJ5X29YwKpuhwesnHmqf+U/nfsvcweB+Hp6YlOp6Nfv34MHz6ckJCQ+465desWzZs3Jz4+vrTiVExJx0GIimPLyQSmb4otUF3j5+bA1B7BdG1cNo2Da7a8wvqEPXioHZjXZ3OJpmjR6vS0e38HialZRtshVICvmwN7J3ZEo1Y9cMyibJ0+u4Fp+6cCMK3NdBrW71nia5XZOIj58+dz7do1Fi5caDQ5ALi7u1eI5CCEUr2A/vvYTHw0VUjRZfHtjpJVNWnUKqb2CAbyk8G/3X08tUewJAcrkJudyeeH8ju9dPRo8kDJwRxmJ4jnn38eBwcpkoqKT8leQHb2LgxvORaAX/8+yvkLW0p0na6N/Vg0oAW+bgX/z/q6ObBoQIsyKwGJ0rVh99tczcvATW1H/47lN22PjOASohDm9AIKq12t1O/fpFEf/nPuB3bfOs2SAzOJrNGhRAtNdW3sx+PBvhyKTyE5PQtvFwdaB3lIycFKXLt2hPV/RQEwKHhgmY15MMZqptoQorxZQi+g5zvOxkVty+XcNH7aM63E19GoVYTVrkbPkIcIq11NkoOV0GnzWLLrDfLQEVKlOm1avlyu95cEIUQhLKEXkKtbAAMbPAfA2ku/kZjwe5ndS1ienQfncTorGXuVhmHtZ5XpmAdjJEEIUYjWQR74uTnc18B7l4r83kytg8p29tVHHx5DE0c/ctGxdNcbZTYxm7Ast27G8/W5tQA8U7M73j7l3z1fEoQQhbCUXkAqtZoXOkRip1Jz4k4Cuw6V/iBUYXmW7RhPpj6PWnZV6dbubUVikAQhRBEspReQr28IfQK7ArDyzDek3rpYLvcVyjgSs4zof2aEfrHtVDQ2dorEYVULBilBBsoJyO/yqnQvIG1eDpPXPM6l3FTauNZhTO/vy/X+4sGY+jd0OyOZceueIkWXxVO+bejf7dNSj8XU7zXp5iqECe72AlI0Bhs7RrSdwptRr7M/7QLtji+nZbNBisYkTGPOaPzVOyeQosvCR1OFPh3fL+9QC5AqJiGsSK2gTjzhGwrA0phF3L59XeGIRHHMGY1/5uxGtl6PAeClhyOws3cpz1DvIwlCCCvT57H3DdNwrN42TulwRBHMGY2fk53O4kP5JYbHPBrTqGHvcouzMJIghLAy9g5uvPRwBABbbxwn9syPygYkCmXOaPy1OyaSkJdJVbU9z3eaW35BFkEShBBWqFHD3nSq1gSAzw7PITsrVeGIhDGmjrL/8+J2NidGAzCs2UtUcS581cvyJAlCCCs1oOM8PNQOJOZl8u2O8UqHI4wwZZS9DdkcuvIROvS0ca3DwyFDyyEy00iCEMJKOTl7Mzwkf26en5MOcfb8TwpHJO51dzR+Udr7fE+iPgMXtS2Dwz8op8hMIwlCCCvWotlAHnVvgB747EAkudmZSock/kWjVvFUs8IHUwbaxZLqcgqAIcGDcHMLLK/QTCIJQggrNzh8Pu5qO67mZfCdVDVZFK1Oz8bjxheV0pBDgPdacnV6HnYOKveZWk0hCUIIK+fs4scLzUYAsDkxmnMXflE4InFXUb2YQj3WkG57B1utmpb1p5b7TK2msLyIhBBmezhkKI+6N0CHnkXRM8jJTlc6JEHhvZgC7WLJdDsNQN6NR0nTeZVnWCaTBCFEBTE4fD5V1fZcy8vgGxlAZxGM9WKyJYvq3t+hR4/7HU9iMjqX6ZoiD0IShBAVhLOLHy81fwWAX5IPyQA6C2BsTZHW1b4mwzYLe52G48mD8HNzKvM1RUpKEoQQFUjzpgPoULURemDRodkyV5PC7l1TpLbDMTJczwOQdb0jaTqvcllTpKQkQQhRwQzq/CHeGieStbdZ/tsYpcOp9O6uKRLomoe31wb0gHumH9dtnijXNUVKQhKEEBWMk5MnL4dORAVE3TzF4d+/UDqkSq9rYz/6N1pHnkMuXrYODOvyIXsndrTo5ABWlCBSUlLo378/rq6uuLu7M2zYMDIyMoo8p0OHDqhUqgLbiBEjyiliIZTTsH5PeviGAfDZH4u5dTNe4YgqtyMxy9ie8gdqtYrXHplA+0YNLbZa6d+sJkH079+fU6dOsXXrVjZv3szu3bt58cUXiz1v+PDhJCQkGLbZs2eXQ7RCKO+ZjnOpYetGui6XRVtfQafNUzqkSunWzXgWH18IwJM+oTQO7qNwRKazigRx+vRptmzZwtKlSwkNDaVdu3Z8/PHHrFmzhmvXrhV5rpOTE76+voZNlg0VlYWtfRVeaT8TW9TEZP7Flr3vKh1SpaPX6Vi89VXSdbnUsHXj2U6WNddScawiQURHR+Pu7k6rVq0M+8LDw1Gr1Rw8eLDIc7/++ms8PT1p3LgxkydP5vbt20Uen52dTVpaWoFNCGsVENCWAbV7AfD1n5u4dGmPsgFVMj/vnsbvmVewRZ2frO2rKB2SWawiQSQmJuLt7V1gn42NDR4eHiQmJhZ63nPPPceqVavYuXMnkydPZuXKlQwYMKDIe0VGRuLm5mbYAgICSuU1CKGULu3eooVzIHno+GjPG7J2RDn5M34Hq+M3AfB8nacJCGircETmUzRBTJo06b5G5Hu3M2fOlPj6L774Il26dKFJkyb079+fFStWsH79euLi4go9Z/LkyaSmphq2K1eulPj+QlgClVrNiM6f4K6246/cdJb9OlrpkCq8O7dT+Gjv2+Sh52HnmnRu+6bSIZWIjZI3HzduHIMHDy7ymFq1auHr60tycnKB/Xl5eaSkpODra/rKS6Gh+Yu9X7hwgdq1axs9xt7eHnt7e5OvKYQ1cHML5JWHx/PewRnsSDlBo0Mf0671K0qHVSHpdTq++PVlEvIy8VA7MKLrIouciM8UiiYILy8vvLyKn6QqLCyMW7ducfToUVq2bAnAjh070Ol0hi99U8TExADg52fZfY+FMJVWp+dQfArJ6Vl4uzjQOsij0O6TjYP78N+/9rHuahSfxy6jdvU2+Pm3LOeIK76dB+ay59YZ1Kh4JXQSzi7mfd+Y85mWNZVer9crcmczdevWjaSkJBYvXkxubi5DhgyhVatWrF69GoCrV6/SqVMnVqxYQevWrYmLi2P16tV0796datWq8ccff/Daa69RvXp1du3aZfJ909LScHNzIzU1VXpACYuy5WQC0zfFFphO2s/Ngak9ggsdgKXT5vHu2ieIvZNEDVs33uuzGTt7l/IKucK7eHEXb+18jVx0PBvYmac7mdetviSfaUmY+r1mNeWer7/+mgYNGtCpUye6d+9Ou3btWLJkieH53Nxczp49a+ilZGdnx7Zt2+jcuTMNGjRg3Lhx9O7dm02bNin1EoQoNVtOJjBy1bH71hpITM1i5KpjbDlpfJEatcaGVzovxFVtx6XcVL745SX0Ol15hFzh3b59nfl73iAXHc2rBNCzw0yzzi/pZ1qWrKYEoRQpQQhLo9Xpaff+jkIXolEBvm4O7J3YsdCqiZOxa5lxcCY69Ayv25fwdpPLMOKKT6/TMf+H3hxMj8dT48isXt/j4vqQyeeXxmdqjgpXghBC5CtqlTIAPZCQmsWh+JRCj2kc3Idna3QB4Kvza4mL21raYVYqP+6cxMH0eGxQMbbNVLOSA5TOZ1oWJEEIYWUKW6XM3OOe6jCTh51rkoeOuXvfJvXWxVKIrvKJOfE1317+DYCh9fpSt05Xs69RWp9paZMEIYSVMXX1seKOU6nVvNxtCf42zqTospj78wvkZmeWRoiVRmJiDB8dnY8eCK/WlE5tJ5XoOqX1mZY2SRBCWBljq5T9m4r8ni+mrFLm5OzN+E4LcFLZcC77Ol9skUZrU2VmJDJ76ytk6vOoa+/J4C6LSnyt0vxMS5MkCCGszL2rlP3b3cfmrFLm79+KMS1fQ42KnSkn+WXP9NILtoLS5uWw4KehXM1Lx0PtQETXxQ80z1Jpf6alRRKEEFbo7iplvm4Fqxx83RxKtEpZSJP+PFfzCQBW/LmBIzHLSivUCmn5LyP44/Y17FUaJrSfhYdHnQe+Zml/pqVBurkWQ7q5CktWmqNu9Todn28exPYbJ7BXaZjWfja1gjqVcsTW7+ddU1n+5wYAxoWMpnXzF0r1+uUxktrU7zVJEMWQBCEqk7zcLGb/0Jvjt6/irrbjvW5f4eXdSOmwLMb+I5/y0Ykl6IHnanSlZ8dZSodUIjIOQghhNhtbB8b2WE6grSu3dDnM+PVF6f76j1On17HwxFL0QBfPFjxl5khpayQJQghRgJOTJ5O6LsVT40hCXiaRPw3h9u3rSoelqPiLUcw5GEkeOkJdghjcfYnVztBqjor/CoUQZqvmWY+3wj/BVW1HfM5N5mzsT052utJhKeLKlWhm7BrPHX0eDR28eaXHKtQaRSfCLjeSIIQQRvn5t2TyfyJxUGmIvZPEvA39Kt1AusSE35mxYyzpulxq23kwoccqq1s29EFIghBCFKpWUCcmPvI29ioNMZl/MXdD30qTJBITY3h368vc1GUTYOvK5B4rcXL2Lv7ECkQShBCiSMENejHxkTexU6mJyfyLeRuerfBJ4tq1I0z79SWua+/gZ1OFt59cYfYEfPfS6vREx91gQ8xVouNuoNVZfgdS6eZaDOnmKkS+U6fXMevgDHL0OoIdfRj/1Nc4OXkqHVapu3JlH+/ueI1UXQ7VbV14+4kVuFcNeqBrltdCQKaSbq5CiFLVqGFvJj8yxdAm8e76PqSmXlY6rFJ15uxGpm0fQ6ouhxq2bkzp8XWpJAdLWwjIVJIghChn1ljVcFdwg15MbT8bF7Utf+bcZOrGfiQm/K50WKXi4LElvLd/Ghn6POrYV2NKzzW4uQU+0DW1Oj3TN8Vi7BO+u2/6pliL/RuoHH21hLAQllbVUBK1gjrxjv0iZmx7hYS8TN78dTjjHnmL4Aa9lA6tRPQ6HT/tnsqq+E3ogZbONRjTYwX2Dm4PfG1zFgIKq13tge9X2qQEIUQ5seaqhnv5+7fivSdXUdvOgwx9HjOip7N9//sFjrGGklJ2ViqfbOjHyn+Sw+OeIYx7em2pJAew3IWATCUlCCHKQXFVDSryqxoeD/Yt9ymdS6qqR22m/d8GPt08hOi0Cyw5+w1nk2IY2vVTouKyLL6klJx0krlbR3EpNxU1KgYE9aD7f6aV6ghpS10IyFRSghCiHFjqmsMPys7ehVd7reHZgMdRo2LXrdOMW/Mk7373jcWWlPQ6HbsPfsj4XwZxKTcVV7Udb4W9zRMd3in16TMsdSEgU0mCEKIcWHtVQ1HUGhueDp/DW2Fv466246/cdLweWkZY1a9Rk2c4zhIaZdPTrvLR+mdYGPsVWXot9R08iey+nEYN/lsm97PUhYBMJQlCiHJg7VUNpmjU4L8823wJbrfd0aEn0/0EYQ/NJND+lOEYpUpKep2OqAPzeG19L/anXUCNir4B4Uzt8zOeXg3L9N6WuBCQqaQNQohycLeqITE1y2g7hIr8LwxLrWowVZrOi92J42nu8gtqj/2k293G3X8lNTMe4njKM6RqfYDyLSnFxW1l5aE5nM5KBqC6rQsjHnmTunW6llsMXRv78Xiwb5kvBFTaJEEIUQ7uVjWMXHUMFRRIEtZQ1WCq/BKQmt/Tn6Dq7RY08fyGW07J3HK+Su0qH+KYXpsTN58ql5LSlSv7+O7gXA6lxwNgr9Lwf4Fd6P7oFGxsy7+kplGrLLIra1GspoppxowZtGnTBicnJ9zd3U06R6/XM2XKFPz8/HB0dCQ8PJzz58+XbaBCFMKaqxpM9e9G2ZtaP3YnRZCZ8AyuOVXIU+lIdz1PnRrzOXlqHBcv7jLr2qZ0m9Vp8zgSs4z31nTj9W2jOJQejxoV7d0bMq/7Cp7qOFOR5GCtrGYupqlTp+Lu7s5ff/3FF198wa1bt4o95/333ycyMpLly5cTFBTE22+/zYkTJ4iNjcXBwbQ/EpmLSZS28lhzWEl3x3vA/0pKKvJo5LQH96p7yXK6Y3i9NWzdePShdoTUeZLqD4UW2ouoqAGGnRt6cfbCTxw8v4mDN06Soss/Ro2K1q616BM6nurVHym7F2yFKuya1MuWLWPs2LHFJgi9Xo+/vz/jxo3j9ddfByA1NRUfHx+WLVvGs88+a9L9JEEIYb7CvtCnPNGAQNsD/Ba7miNp8eShMzzvoXagoUsgNdxrEejZGM+qtXFx9mX/ZT1jvolBo8rBXn2bqjaJuNkm4WyXgMY+Aa1zJnnq/13HWWVDR5+HebzFKLx9Gpfr67YWpn6vVdg2iPj4eBITEwkPDzfsc3NzIzQ0lOjo6EITRHZ2NtnZ2YbHaWlpZR6rEBVN0Y2yvWnUsDcZ6Qnsi1nKkWvRnL6dSIoui32p59iXeg4ubTFcKytXR8Oggr9j9cDd9e1UWhXVNHa0dKtLaFAXmjXsU+6L+lTUUmGFTRCJiYkA+Pj4FNjv4+NjeM6YyMhIpk+fXqaxCVEZFNco6+ziR5dH36YLkJOdzunzP/Fn4lEup8Zz+U4Sqdos0rS53FvJ4ai1wTbPEXWeM3eyAkjKasCE5wfStq6P8RuVsYowv1ZhFE0QkyZN4v333y/ymNOnT9OgQYNyiggmT55MRESE4XFaWhoBAQHldn8hKiM7exeaNX6WZo0LluzXH7vE29/vQadXk4cduXpb9Ea+tq5n5t23rzzcbW+5t57+7qhxa+98oGiCGDduHIMHDy7ymFq1apXo2r6+vgAkJSXh5/e/DygpKYmQkJBCz7O3t8fe3r5E9xRClC5fN2cydFWLPU6JAYYVcX6teymaILy8vPDy8iqTawcFBeHr68v27dsNCSEtLY2DBw8ycuTIMrmnEKJ0WfIAQ2ufytsUVjMO4vLly8TExHD58mW0Wi0xMTHExMSQkZFhOKZBgwasX78eAJVKxdixY3nvvffYuHEjJ06cYODAgfj7+9OrVy+FXoUQwhyWPJdRRZ5f6y6raaSeMmUKy5cvNzxu3rw5ADt37qRDhw4AnD17ltTUVMMxEyZMIDMzkxdffJFbt27Rrl07tmzZYvIYCCGE8u4OMLy3IdhX4YbgyjC/ltWNgyhvMg5CCMtgaV1JtTo97d7fUWz1196JHS2uDaLSj4MQQlQsljaXUWWYX8tq2iCEEMLSVPT5taQEIYQQD8Bap/I2hSQIIYR4QJZW/VVapIpJCCGEUZIghBBCGCUJQgghhFGSIIQQQhglCUIIIYRRkiCEEEIYJQlCCCGEUZIghBBCGCUJQgghhFGSIIQQQhglCUIIIYRRkiCEEEIYJQlCCCGEUZIghBBCGCUJQgghhFGSIIQQQhglCUIIIYRRkiCEEEIYJQlCCCGEUbImtRCVgFan51B8CsnpWXi7ONA6yAONWqV0WMLCSYIQooLbcjKB6ZtiSUjNMuzzc3Ngao9gujb2UzAyYemspoppxowZtGnTBicnJ9zd3U06Z/DgwahUqgJb165dyzZQISzIlpMJjFx1rEByAEhMzWLkqmNsOZmgUGTCGlhNgsjJyaFPnz6MHDnSrPO6du1KQkKCYfvmm2/KKEIhLItWp2f6plj0Rp67u2/6pli0OmNHCGFFVUzTp08HYNmyZWadZ29vj6+vbxlEJIRlOxSfcl/J4d/0QEJqFofiUwirXa38AhNWw2pKECUVFRWFt7c39evXZ+TIkdy4caPI47Ozs0lLSyuwCWGNktMLTw4lOU5UPhU6QXTt2pUVK1awfft23n//fXbt2kW3bt3QarWFnhMZGYmbm5thCwgIKMeIhSg93i4OpXqcqHwUTRCTJk26rxH53u3MmTMlvv6zzz7LU089RZMmTejVqxebN2/m8OHDREVFFXrO5MmTSU1NNWxXrlwp8f2FUFLrIA/83BworDOrivzeTK2DPMozLGFFFG2DGDduHIMHDy7ymFq1apXa/WrVqoWnpycXLlygU6dORo+xt7fH3t6+1O4phFI0ahVTewQzctUxVFCgsfpu0pjaI1jGQ4hCKZogvLy88PLyKrf7/fXXX9y4cQM/P+n7LSqHro39WDSgxX3jIHxlHIQwgdX0Yrp8+TIpKSlcvnwZrVZLTEwMAHXq1MHZ2RmABg0aEBkZydNPP01GRgbTp0+nd+/e+Pr6EhcXx4QJE6hTpw5dunRR8JUIUb66Nvbj8WBfGUktzGY1CWLKlCksX77c8Lh58+YA7Ny5kw4dOgBw9uxZUlNTAdBoNPzxxx8sX76cW7du4e/vT+fOnXn33XelCklUOhq1SrqyCrOp9Hq9jJIpQlpaGm5ubqSmpuLq6qp0OEII8cBM/V6r0N1chRBClJwkCCGEEEZZTRuEUu7WwMmIaiFERXH3+6y4FgZJEMVIT08HkBHVQogKJz09HTc3t0Kfl0bqYuh0Oq5du4aLiwsqlendAtPS0ggICODKlStW07gtMZcPa4vZ2uIFibk4er2e9PR0/P39UasLb2mQEkQx1Go11atXL/H5rq6uVvMHepfEXD6sLWZrixck5qIUVXK4SxqphRBCGCUJQgghhFGSIMqIvb09U6dOtapR2xJz+bC2mK0tXpCYS4s0UgshhDBKShBCCCGMkgQhhBDCKEkQQgghjJIEIYQQwihJEGVg4cKF1KxZEwcHB0JDQzl06JDSIRVp9+7d9OjRA39/f1QqFT/++KPSIRUpMjKShx9+GBcXF7y9venVqxdnz55VOqwiLVq0iKZNmxoGQYWFhfHLL78oHZZZZs2ahUqlYuzYsUqHUqhp06bdt659gwYNlA6rWFevXmXAgAFUq1YNR0dHmjRpwpEjR5QOSxJEafv222+JiIhg6tSpHDt2jGbNmtGlSxeSk5OVDq1QmZmZNGvWjIULFyodikl27drFqFGjOHDgAFu3biU3N5fOnTuTmZmpdGiFql69OrNmzeLo0aMcOXKEjh070rNnT06dOqV0aCY5fPgwn332GU2bNlU6lGI1atSIhIQEw7Z3716lQyrSzZs3adu2Lba2tvzyyy/ExsYyb948qlatqnRooBelqnXr1vpRo0YZHmu1Wr2/v78+MjJSwahMB+jXr1+vdBhmSU5O1gP6Xbt2KR2KWapWrapfunSp0mEUKz09XV+3bl391q1b9e3bt9ePGTNG6ZAKNXXqVH2zZs2UDsMsEydO1Ldr107pMIySEkQpysnJ4ejRo4SHhxv2qdVqwsPDiY6OVjCyiu3uMrMeHh4KR2IarVbLmjVryMzMJCwsTOlwijVq1CieeOKJAn/Xluz8+fP4+/tTq1Yt+vfvz+XLl5UOqUgbN26kVatW9OnTB29vb5o3b87nn3+udFiAVDGVquvXr6PVavHx8Smw38fHh8TERIWiqth0Oh1jx46lbdu2NG7cWOlwinTixAmcnZ2xt7dnxIgRrF+/nuDgYKXDKtKaNWs4duwYkZGRSodiktDQUJYtW8aWLVtYtGgR8fHxPProo4Zp+y3Rn3/+yaJFi6hbty6//vorI0eO5NVXX2X58uVKhyazuQrrNmrUKE6ePGnx9cwA9evXJyYmhtTUVL7//nsGDRrErl27LDZJXLlyhTFjxrB161YcHByUDsck3bp1M/y7adOmhIaGUqNGDb777juGDRumYGSF0+l0tGrVipkzZwLQvHlzTp48yeLFixk0aJCisUkJohR5enqi0WhISkoqsD8pKQlfX1+Foqq4Ro8ezebNm9m5c+cDTcleXuzs7KhTpw4tW7YkMjKSZs2a8eGHHyodVqGOHj1KcnIyLVq0wMbGBhsbG3bt2sVHH32EjY0NWq1W6RCL5e7uTr169bhw4YLSoRTKz8/vvh8JDRs2tIiqMUkQpcjOzo6WLVuyfft2wz6dTsf27dutoq7ZWuj1ekaPHs369evZsWMHQUFBSodUIjqdjuzsbKXDKFSnTp04ceIEMTExhq1Vq1b079+fmJgYNBqN0iEWKyMjg7i4OPz8/JQOpVBt27a9r5v2uXPnqFGjhkIR/Y9UMZWyiIgIBg0aRKtWrWjdujULFiwgMzOTIUOGKB1aoTIyMgr8woqPjycmJgYPDw8CAwMVjMy4UaNGsXr1ajZs2ICLi4uhfcfNzQ1HR0eFozNu8uTJdOvWjcDAQNLT01m9ejVRUVH8+uuvSodWKBcXl/vadapUqUK1atUstr3n9ddfp0ePHtSoUYNr164xdepUNBoN/fr1Uzq0Qr322mu0adOGmTNn8swzz3Do0CGWLFnCkiVLlA5NurmWhY8//lgfGBiot7Oz07du3Vp/4MABpUMq0s6dO/XAfdugQYOUDs0oY7EC+q+++krp0Ao1dOhQfY0aNfR2dnZ6Ly8vfadOnfS//fab0mGZzdK7ufbt21fv5+ent7Oz0z/00EP6vn376i9cuKB0WMXatGmTvnHjxnp7e3t9gwYN9EuWLFE6JL1er9fLdN9CCCGMkjYIIYQQRkmCEEIIYZQkCCGEEEZJghBCCGGUJAghhBBGSYIQQghhlCQIIYQQRkmCEEIIYZQkCCGEEEZJghBCCGGUJAghFPT333/j6+trWAsAYP/+/djZ2RWYFVgIJchcTEIo7Oeff6ZXr17s37+f+vXrExISQs+ePfnggw+UDk1UcpIghLAAo0aNYtu2bbRq1YoTJ05w+PBh7O3tlQ5LVHKSIISwAHfu3KFx48ZcuXKFo0eP0qRJE6VDEkLaIISwBHFxcVy7dg2dTsfFixeVDkcIQEoQQiguJyeH1q1bExISQv369VmwYAEnTpzA29tb6dBEJScJQgiFjR8/nu+//57jx4/j7OxM+/btcXNzY/PmzUqHJio5qWISQkFRUVEsWLCAlStX4urqilqtZuXKlezZs4dFixYpHZ6o5KQEIYQQwigpQQghhDBKEoQQQgijJEEIIYQwShKEEEIIoyRBCCGEMEoShBBCCKMkQQghhDBKEoQQQgijJEEIIYQwShKEEEIIoyRBCCGEMEoShBBCCKP+H+6Xn1m2HwMzAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:03<00:00, 28.09it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:03<00:00, 25.75it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEmCAYAAAB4VQe4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABK2klEQVR4nO3dd3jTZdfA8W+SbuiglC4oqyAbChRqKSqjTB+G+ioiKoiiICgIqKCyHpWCskQRBERQQFQEZSiyl5RtlSVKZdPB6qYr+b1/9GmkkLZJm1nO57pyXSb5jROBnNzr3CpFURSEEEKIO6htHYAQQgj7JAlCCCGEQZIghBBCGCQJQgghhEGSIIQQQhgkCUIIIYRBkiCEEEIYJAlCCCGEQU62DsDe6XQ6rly5gqenJyqVytbhCCFEuSmKQnp6OsHBwajVxbcTJEGU4sqVK4SEhNg6DCGEMLuLFy9So0aNYt+XBFEKT09PoOB/pJeXl42jEUKI8ktLSyMkJET//VYcSRClKOxW8vLykgQhhKhQSus2l0FqIYQQBkmCEEIIYZB0MYky0+oUDp69QXJ6Nv6ebrSt44tGLTO9hKgoJEGIMtl0PIEp60+SkJqtfy3I241JvRrTvWmQDSMrmaIo5Ofno9VqbR2KEBaj0WhwcnIq99R8SRDCZJuOJzBs+VHu3GkqMTWbYcuPMv/pVnaZJHJzc0lISCArK8vWoQhhcR4eHgQFBeHi4lLma0iCECbR6hSmrD95V3IAUAAVMGX9Sbo0DrSr7iadTsfZs2fRaDQEBwfj4uIiCx9FhaQoCrm5uVy9epWzZ89Sv379EhfDlUQShDDJwbM3inQr3UkBElKzOXj2BpGhVa0XWClyc3PR6XSEhITg4eFh63CEsCh3d3ecnZ05f/48ubm5uLm5lek6MotJmCQ5vfjkUJbjrK2sv6SEcDTm+Lsu/1qESfw9jfslYuxxQgj7JQlCmKRtHV+CvN0orvdeRcFsprZ1fK0ZlhDCAiRBCJNo1Com9WoMcFeSKHw+qVdjuxqgFiXbuXMnKpWKlJQUo8+pXbs2c+bMsVhMwj5IghAm6940iPlPtyLQu2g3UqC3m91OcXVkgwYNQqVSMXTo0LveGz58OCqVikGDBlk/MFHhySwmUSbdmwbRpXGgrKS2kpCQEFatWsXs2bNxd3cHIDs7m5UrV1KzZk0bRycqKmlBiDLTqFVEhlalT1h1IkOrOl5yUBTIu2Wbh2JoJUnxWrVqRUhICGvWrNG/tmbNGmrWrEnLli31r+Xk5PDqq6/i7++Pm5sb7du359ChQ0Wu9dNPP3Hffffh7u5Ox44dOXfu3F3327t3Lw888ADu7u6EhITw6quvkpmZadr/X+HwpAUh7l352bCku23uPXgTOLubdsrgwXzxxRcMGDAAgCVLlvDcc8+xc+dO/TFvvPEG33//PcuWLaNWrVp88MEHdOvWjTNnzuDr68vFixd59NFHGT58OC+++CKHDx9mzJgxRe4THx9P9+7dee+991iyZAlXr15lxIgRjBgxgi+++KLcH104DodqQezevZtevXoRHByMSqXihx9+KPH4wsG3Ox+JiYnWCVgIM3r66afZu3cv58+f5/z58/z66688/fTT+vczMzOZP38+H374IT169KBx48YsWrQId3d3Pv/8cwDmz59PaGgoM2fOpEGDBgwYMOCu8YuYmBgGDBjAqFGjqF+/Pu3atWPu3Ll8+eWXZGfb5/oWYRkO1YLIzMykRYsWDB48mEcffdTo806fPl1ksx9/f39LhCccjZNbwS95W93bRNWqVePhhx9m6dKlKIrCww8/jJ+fn/79+Ph48vLyiIqK0r/m7OxM27ZtOXXqFACnTp0iIiKiyHUjIyOLPP/999/5448/WLFihf41RVH05UoaNWpkcuzCMTlUgujRowc9evQw+Tx/f398fHzMH5BwbCqVyd08tjZ48GBGjBgBwLx58yxyj4yMDF566SVeffXVu96TAfF7i0N1MZVVWFgYQUFBdOnShV9//dXW4Qgr0OoUYuOv82PcZWLjr6PVmTYobK+6d+9Obm4ueXl5dOvWrch7oaGhuLi4FPk7npeXx6FDh2jcuGDtSqNGjTh48GCR8/bv31/keatWrTh58iT16tW761GeyqDC8ThUC8JUQUFBLFiwgPDwcHJycli8eDEdOnTgwIEDtGrVyuA5OTk55OTk6J+npaVZK1xhJob2qggL8mBih2o2jMo8NBqNvrtIo9EUea9SpUoMGzaM119/HV9fX2rWrMkHH3xAVlYWzz//PABDhw5l5syZvP7667zwwgscOXKEpUuXFrnOm2++yf3338+IESN44YUXqFSpEidPnmTLli188sknVvmcwj5U6ATRoEEDGjRooH/erl074uPj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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:04<00:00, 23.64it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEmCAYAAAB4VQe4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABMu0lEQVR4nO3dd3iTZffA8W+SbroopQvKKsiGAoVSCopQ9oui/hQRFURREBQEB6isV6WgIogiiIggoKi4GIrsadlWWaIgmw6gdNOVPL8/+jbSkrZJm9mez3Xlumz6jBOBnOde51YpiqIghBBClKC2dQBCCCHskyQIIYQQBkmCEEIIYZAkCCGEEAZJghBCCGGQJAghhBAGSYIQQghhkCQIIYQQBjnZOgB7p9PpuHLlCl5eXqhUKluHI4QQlaYoChkZGYSEhKBWl95OkARRjitXrhAaGmrrMIQQwuwuXrxI3bp1S/29JIhyeHl5AYX/I729vW0cjRBCVF56ejqhoaH677fSSIIoR1G3kre3tyQIIUSVUl63uQxSCyGEMEgShBBCCIOki0lUmFancOBsCskZOQR4udGpoR8atcz0EqKqkAQhKmTjsQRmrDtBQlqO/r1gHzemDWxB31bBNoysbIqiUFBQgFartXUoQliMRqPBycmp0lPzJUEIk208lsDolUcoudNUYloOo1ceYeGj7e0ySeTl5ZGQkEB2dratQxHC4jw8PAgODsbFxaXC15AEIUyi1SnMWHfituQAoAAqYMa6E/RqEWRX3U06nY6zZ8+i0WgICQnBxcVFFj6KKklRFPLy8rh69Spnz56lSZMmZS6GK4skCGGSA2dTinUrlaQACWk5HDibQlRYLesFVo68vDx0Oh2hoaF4eHjYOhwhLMrd3R1nZ2fOnz9PXl4ebm5uFbqOzGISJknOKD05VOQ4a6vok5QQjsYcf9flX4swSYCXcU8ixh4nhLBfkiCESTo19CPYx43Seu9VFM5m6tTQz5phCSEsQBKEMIlGrWLawBYAtyWJop+nDWxhVwPUomw7duxApVKRmppq9DkNGjRg3rx5FotJ2AdJEMJkfVsFs/DR9gT5FO9GCvJxs9spro5s+PDhqFQqRo0addvvxowZg0qlYvjw4dYPTFR5MotJVEjfVsH0ahEkK6mtJDQ0lNWrVzN37lzc3d0ByMnJ4YsvvqBevXo2jk5UVdKCEBWmUauICqvFveF1iAqr5XjJQVEg/6ZtXoqhlSSla9++PaGhoXz33Xf697777jvq1atHu3bt9O/l5uby/PPPExAQgJubG127duXgwYPFrvXTTz9xxx134O7uzt133825c+duu9+ePXvo1q0b7u7uhIaG8vzzz5OVlWXa/1/h8KQFIaqvghxY2tc29x6xEZzdTTtlxAg+++wzhg4dCsDSpUt54okn2LFjh/6Yl19+mW+//Zbly5dTv3593n77bfr06cPp06fx8/Pj4sWL3H///YwZM4ann36aQ4cOMXHixGL3OXPmDH379uXNN99k6dKlXL16lbFjxzJ27Fg+++yzSn904TgcqgWxa9cuBg4cSEhICCqVih9++KHM44sG30q+EhMTrROwEGb06KOPsmfPHs6fP8/58+fZu3cvjz76qP73WVlZLFy4kHfeeYd+/frRokULPvnkE9zd3fn0008BWLhwIWFhYcyZM4emTZsydOjQ28YvYmNjGTp0KOPHj6dJkyZ06dKF+fPn8/nnn5OTY5/rW4RlOFQLIisri7Zt2zJixAjuv/9+o887depUsc1+AgICLBGecDROboVP8ra6t4lq167NgAEDWLZsGYqiMGDAAPz9/fW/P3PmDPn5+URHR+vfc3Z2plOnTpw8eRKAkydPEhkZWey6UVFRxX7+/fff+eOPP1i1apX+PUVR9OVKmjdvbnLswjE5VILo168f/fr1M/m8gIAAfH19zR+QcGwqlcndPLY2YsQIxo4dC8CCBQssco/MzEyeeeYZnn/++dt+JwPi1YtDdTFVVHh4OMHBwfTq1Yu9e/faOhxhBVqdQtyZ6/wYf5m4M9fR6kwbFLZXffv2JS8vj/z8fPr06VPsd2FhYbi4uBT7O56fn8/Bgwdp0aJw7Urz5s05cOBAsfP27dtX7Of27dtz4sQJGjdufNurMpVBheNxqBaEqYKDg1m0aBERERHk5uayZMkSunfvzv79+2nfvr3Bc3Jzc8nNzdX/nJ6ebq1whZkY2qsiPNiDqd1r2zAq89BoNPruIo1GU+x3NWrUYPTo0bz00kv4+flRr1493n77bbKzs3nyyScBGDVqFHPmzOGll17iqaee4vDhwyxbtqzYdV555RU6d+7M2LFjeeqpp6hRowYnTpxg8+bNfPjhh1b5nMI+VOkE0bRpU5o2bar/uUuXLpw5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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1mUpdated State:\u001b[0m\n", + "StandardState(variables=VariableCollection(independent_variables=[Variable(name='x', value_range=(0, 6.283185307179586), allowed_values=array([0. , 0.21666156, 0.43332312, 0.64998469, 0.86664625,\n", + " 1.08330781, 1.29996937, 1.51663094, 1.7332925 , 1.94995406,\n", + " 2.16661562, 2.38327719, 2.59993875, 2.81660031, 3.03326187,\n", + " 3.24992343, 3.466585 , 3.68324656, 3.89990812, 4.11656968,\n", + " 4.33323125, 4.54989281, 4.76655437, 4.98321593, 5.1998775 ,\n", + " 5.41653906, 5.63320062, 5.84986218, 6.06652374, 6.28318531]), units='', type=, variable_label='', rescale=1, is_covariate=False)], dependent_variables=[Variable(name='y', value_range=None, allowed_values=None, units='', type=, variable_label='', rescale=1, is_covariate=False)], covariates=[]), conditions= x\n", + "0 4.983216\n", + "1 5.849862\n", + "2 3.466585\n", + "3 4.116570\n", + "4 1.733292\n", + "5 3.249923\n", + "6 3.249923\n", + "7 5.199877\n", + "8 3.683247\n", + "9 4.333231, experiment_data= x y\n", + "0 5.849862 -0.267531\n", + "1 1.516631 0.478541\n", + "2 2.383277 1.062925\n", + "3 3.683247 -0.045271\n", + "4 3.683247 -1.491071\n", + "5 2.599939 -0.135536\n", + "6 5.849862 -0.355969\n", + "7 2.383277 0.529578\n", + "8 4.766554 -1.006934\n", + "9 5.849862 -0.846411\n", + "10 2.816600 0.441416\n", + "11 1.949954 1.268066\n", + "12 3.466585 -0.612066\n", + "13 5.633201 -1.059511\n", + "14 3.033262 -0.887800\n", + "15 0.000000 0.485811\n", + "16 4.333231 -0.920648\n", + "17 0.649985 0.708040\n", + "18 6.066524 -0.606768\n", + "19 2.166616 1.440938\n", + "20 1.299969 1.686531\n", + "21 3.683247 -0.464401\n", + "22 5.849862 -0.256513\n", + "23 4.983216 -0.395319\n", + "24 1.299969 1.375672\n", + "25 2.383277 0.977178\n", + "26 3.899908 -0.877285\n", + "27 4.549893 -1.496263\n", + "28 5.416539 -0.574078\n", + "29 4.766554 -1.254513\n", + "30 1.949954 0.700044\n", + "31 0.216662 -0.096459\n", + "32 0.866646 0.829807\n", + "33 0.649985 1.027126\n", + "34 0.649985 0.530925\n", + "35 6.283185 0.131242\n", + "36 2.166616 1.093523\n", + "37 1.516631 1.343437\n", + "38 0.649985 0.159225\n", + "39 3.033262 0.342529\n", + "40 4.983216 -1.215008\n", + "41 5.849862 0.189056\n", + "42 3.466585 -0.454861\n", + "43 4.116570 -0.462597\n", + "44 1.733292 0.402174\n", + "45 3.249923 -0.822852\n", + "46 3.249923 -0.119755\n", + "47 5.199877 -1.107408\n", + "48 3.683247 -0.471516\n", + "49 4.333231 -0.666329, models=[sin(x), sin(x), sin(x), sin(x), sin(x)])\n" + ] + } + ], + "source": [ + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=0)\n", + "\n", + "s = StandardState(variables = variables, conditions = conditions, experiment_data = pd.DataFrame(columns=[\"x\",\"y\"]))\n", + "\n", + "#Report previous state\n", + "print('\\033[1mPrevious State:\\033[0m')\n", + "print(s)\n", + "\n", + "#Cycle\n", + "for cycle in range(5):\n", + " s = custom_experimentalist(s, num_samples = 10, random_state=42+cycle)\n", + " s = experiment_runner(s, added_noise=0.5, random_state=42+cycle)\n", + " s = theorist(s)\n", + " \n", + " plot_from_state(s,'sin(x)')\n", + "\n", + "#Report updated state\n", + "print('\\n\\033[1mUpdated State:\\033[0m')\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Custom Experiment Runner\n", + "\n", + "Experiment runners must be implemented as functions. \n", + "\n", + "**Requirements for working with the state:**\n", + "- The function has a `conditions` argument that accepts a `pandas.DataFrame`\n", + "- The function returns a `pandas.DataFrame`\n", + "\n", + "The custom `quadratic_experiment` below will apply a quadratic transform (`x + x**2`) to the conditions.\n", + "\n", + "*Note that when building custom experiment runners, we can either wrap the function with `on_state(output=['experiment_data'])` as we did in tutorial III, or else we can use the `@on_state(output=['experiment_data'])` decorator.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#==================================================================#\n", + "# Option 1 - Wrapping our Component #\n", + "#==================================================================#\n", + "\n", + "def quadratic_experiment(conditions: pd.DataFrame, added_noise: int = 0.01, random_state: Optional[int] = None):\n", + " \n", + " #Set rng seed\n", + " rng = np.random.default_rng(random_state)\n", + " \n", + " #Extract conditions\n", + " x = conditions[\"x\"]\n", + " \n", + " #Compute data\n", + " y = (x + x**2) + rng.normal(0, added_noise, size=x.shape)\n", + " \n", + " #Assign to dataframe\n", + " observations = conditions.assign(y = y)\n", + " \n", + " return observations\n", + "\n", + "custom_experiment_runner = on_state(quadratic_experiment, output=[\"experiment_data\"])\n", + "\n", + "#==================================================================#\n", + "# Option 2 - Using a Decorator #\n", + "#==================================================================#\n", + "\n", + "@on_state(output=[\"experiment_data\"])\n", + "def quadratic_experiment(conditions: pd.DataFrame, added_noise: int = 0.01, random_state: Optional[int] = None):\n", + " \n", + " #Set rng seed\n", + " rng = np.random.default_rng(random_state)\n", + " \n", + " #Extract conditions\n", + " x = conditions[\"x\"]\n", + " \n", + " #Compute data\n", + " y = (x + x**2) + rng.normal(0, added_noise, size=x.shape)\n", + " \n", + " #Assign to dataframe\n", + " observations = conditions.assign(y = y)\n", + " \n", + " return observations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1mPrevious State:\u001b[0m\n", + "StandardState(variables=VariableCollection(independent_variables=[Variable(name='x', value_range=(0, 6.283185307179586), allowed_values=array([0. , 0.21666156, 0.43332312, 0.64998469, 0.86664625,\n", + " 1.08330781, 1.29996937, 1.51663094, 1.7332925 , 1.94995406,\n", + " 2.16661562, 2.38327719, 2.59993875, 2.81660031, 3.03326187,\n", + " 3.24992343, 3.466585 , 3.68324656, 3.89990812, 4.11656968,\n", + " 4.33323125, 4.54989281, 4.76655437, 4.98321593, 5.1998775 ,\n", + " 5.41653906, 5.63320062, 5.84986218, 6.06652374, 6.28318531]), units='', type=, variable_label='', rescale=1, is_covariate=False)], dependent_variables=[Variable(name='y', value_range=None, allowed_values=None, units='', type=, variable_label='', rescale=1, is_covariate=False)], covariates=[]), conditions= x\n", + "0 5.416539\n", + "1 4.116570\n", + "2 3.249923\n", + "3 1.733292\n", + "4 1.949954\n", + "5 0.216662\n", + "6 0.433323\n", + "7 0.000000\n", + "8 1.083308\n", + "9 5.199877, experiment_data=Empty DataFrame\n", + "Columns: [x, y]\n", + "Index: [], models=[])\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:05<00:00, 18.61it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:05<00:00, 19.14it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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yCj3nFarlby8vDIPT/Pvf/8bLy8vtm/fzl133UWbNm1o2rQpQ4cO5bvvvmPIkCGuYxVFYeHChdx6663UqVOH5557Dvh7FSez2UyrVq344IMPXK85cuQIiqKQmJjo2pabm4uiKK6lAE+3itesWUP37t3x8/Pj6quvJjk5uUytc+bMITw8nICAAMaMGXPB1Z/8/f2JiIhwPYxGIwEBAa7n//znPxk/fjwTJ06kXr16DBgw4KK1HjlyhH79+gFQt25dFEUps1qVqqpMnTqVkJAQIiIiym3xlmfdunWYzWZ++eUX17a5c+cSFhZWbdeLHnjgATp27IjVagVKQ7pLly7cd999QOli7LfeeivLli1j7969XH/99UDp98KF9g0cOJDFixdz00030bRpU2699VYee+yxMmv+1mYplhTe2VO6CtpdLW6nQ8JSKMgsvYnphhlgMF7kDDrQdHL06FEtLCxM27Vrl2tb3759tUceeUTTNE376KOPNLPZfM7revTooU2dOrXc886YMUMDznlYLJZzji0uLtaSkpK04uJiTdM0TVVVrdherMtDVdUKfd1OnjypKYqixcfHV+h4QAsLC9Peffdd7dChQ1pqaqr21VdfaSaTSVuwYIGWnJysvfjii5rRaNR+/vlnTdM0LSUlRQO0nTt3us5z6tQpDdDWrl2raZqmrV27VgO0Xr16aevWrdP27t2r9enTR7v66qtdr/n00081b29v7e2339b279+vPfnkk1pAQIDWqVOnCtUeExOjvfzyy67nffv21fz9/bUpU6Zo+/fv1/bv33/RWh0Oh/bll19qgJacnKylp6drubm5rvMFBgZqM2fO1P744w9tyZIlmqIo2o8//ug616hRo7S+fftesM4pU6ZoMTExWm5urrZjxw7NbDZry5cvr9Bn1DRNW7x48UXf40z5+fla06ZNtYkTJ2qapmmPPfaY1rhx4zLf47m5uVrr1q01Pz8/bceOHWVef6F9Z3vyySe1bt26lbv/7J8hT5VvzdfG/zReu2vFXdqcLfGa8+fZmrboWk1792ZNO5V6xeuxWCzl5tqZdLvRKSEhgaysLLp27era5nQ62bBhA6+99hqrVq3CZrORm5tbphWfmZlJREREueedNm0akydPdj3Py8ujUaOKzb1sdVoZtXJU5T9MFVgycAk+FVi27+DBg2iaRqtWrcpsr1ev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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:05<00:00, 18.50it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:05<00:00, 19.57it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autora.theorist.bms.regressor:BMS fitting started\n", + "100%|██████████| 100/100 [00:05<00:00, 16.83it/s]\n", + "INFO:autora.theorist.bms.regressor:BMS fitting finished\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1mUpdated State:\u001b[0m\n", + "StandardState(variables=VariableCollection(independent_variables=[Variable(name='x', value_range=(0, 6.283185307179586), allowed_values=array([0. , 0.21666156, 0.43332312, 0.64998469, 0.86664625,\n", + " 1.08330781, 1.29996937, 1.51663094, 1.7332925 , 1.94995406,\n", + " 2.16661562, 2.38327719, 2.59993875, 2.81660031, 3.03326187,\n", + " 3.24992343, 3.466585 , 3.68324656, 3.89990812, 4.11656968,\n", + " 4.33323125, 4.54989281, 4.76655437, 4.98321593, 5.1998775 ,\n", + " 5.41653906, 5.63320062, 5.84986218, 6.06652374, 6.28318531]), units='', type=, variable_label='', rescale=1, is_covariate=False)], dependent_variables=[Variable(name='y', value_range=None, allowed_values=None, units='', type=, variable_label='', rescale=1, is_covariate=False)], covariates=[]), conditions= x\n", + "0 3.249923\n", + "1 5.849862\n", + "2 1.299969\n", + "3 0.433323\n", + "4 3.466585\n", + "5 1.733292\n", + "6 1.516631\n", + "7 3.899908\n", + "8 0.866646\n", + "9 6.066524, experiment_data= x y\n", + "0 0.433323 0.773451\n", + "1 4.983216 29.295665\n", + "2 4.116570 21.437941\n", + "3 2.816600 11.220120\n", + "4 2.599939 8.384103\n", + "5 5.416539 34.104345\n", + "6 0.433323 0.685012\n", + "7 4.333231 22.952003\n", + "8 1.299969 2.981489\n", + "9 0.433323 0.194570\n", + "10 3.249923 13.934041\n", + "11 4.116570 21.401805\n", + "12 2.599939 9.066856\n", + "13 0.216662 -0.190733\n", + "14 3.683247 16.253633\n", + "15 0.000000 0.485811\n", + "16 1.733292 4.745924\n", + "17 5.416539 34.858300\n", + "18 2.816600 10.358040\n", + "19 3.683247 17.862801\n", + "20 4.333231 23.833106\n", + "21 0.649985 1.123617\n", + "22 5.199877 32.401980\n", + "23 1.516631 4.385032\n", + "24 4.116570 21.474838\n", + "25 2.599939 9.649098\n", + "26 0.433323 0.431507\n", + "27 6.283185 45.252166\n", + "28 3.466585 15.671881\n", + "29 0.866646 1.361742\n", + "30 5.849862 39.841817\n", + "31 3.683247 16.938122\n", + "32 4.549893 25.319062\n", + "33 3.249923 14.233877\n", + "34 3.249923 13.737676\n", + "35 4.766554 27.617837\n", + "36 4.549893 25.517251\n", + "37 5.199877 32.583507\n", + "38 3.466585 15.037847\n", + "39 3.249923 14.046336\n", + "40 3.249923 13.560468\n", + "41 5.849862 40.679695\n", + "42 1.299969 2.854330\n", + "43 0.433323 0.986184\n", + "44 3.466585 14.899144\n", + "45 1.733292 4.022862\n", + "46 1.516631 3.805164\n", + "47 3.899908 18.885295\n", + "48 0.866646 1.661760\n", + "49 6.066524 43.131882, models=[((x * x) + x), ((x * x) + x), ((x * x) + x), ((x * x) + x), ((x * x) + x)])\n" + ] + } + ], + "source": [ + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=0)\n", + "\n", + "s = StandardState(variables = variables, conditions = conditions, experiment_data = pd.DataFrame(columns=[\"x\",\"y\"]))\n", + "\n", + "#Report previous state\n", + "print('\\033[1mPrevious State:\\033[0m')\n", + "print(s)\n", + "\n", + "#Cycle\n", + "for cycle in range(5):\n", + " s = experimentalist(s, num_samples = 10, random_state=42+cycle)\n", + " s = custom_experiment_runner(s, added_noise=0.5, random_state=42+cycle)\n", + " s = theorist(s)\n", + " \n", + " plot_from_state(s, 'x + x**2')\n", + "\n", + "#Report updated state\n", + "print('\\n\\033[1mUpdated State:\\033[0m')\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Custom Theorists\n", + "\n", + "Theorists must be implemented as classes that inherit from `sklearn.base.BaseEstimator`. The class must implement the following methods:\n", + "\n", + "- `fit(self, conditions, observations)`\n", + "- `predict(self, conditions)`\n", + "\n", + "**Requirements for working with the state:**\n", + "- The fit module function has a `conditions` argument that accepts a `pandas.DataFrame`\n", + "- The fit module function has an `observations` argument that accepts a `pandas.DataFrame`\n", + "- the fit function returns `self` (i.e., the model itself)\n", + "\n", + "The custom `PolynomialRegressor` below fits a polynomial of a specified degree." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from sklearn.base import BaseEstimator\n", + "\n", + "class PolynomialRegressor(BaseEstimator):\n", + "\n", + " def __init__(self, degree: int = 3):\n", + " self.degree = degree\n", + "\n", + " def fit(self, conditions: pd.DataFrame, observations: pd.DataFrame):\n", + " c = np.array(conditions)\n", + " o = np.array(observations)\n", + "\n", + " # polyfit expects a 1D array\n", + " if c.ndim > 1:\n", + " c = c.flatten()\n", + "\n", + " if o.ndim > 1:\n", + " o = o.flatten()\n", + "\n", + " # fit polynomial\n", + " self.coeff = np.polyfit(c, o, self.degree)\n", + " self.polynomial = np.poly1d(self.coeff)\n", + " return self\n", + "\n", + " def predict(self, conditions: pd.DataFrame):\n", + " c = np.array(conditions)\n", + " return self.polynomial(c)\n", + " \n", + "custom_theorist = estimator_on_state(PolynomialRegressor())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1mPrevious State:\u001b[0m\n", + "StandardState(variables=VariableCollection(independent_variables=[Variable(name='x', value_range=(0, 6.283185307179586), allowed_values=array([0. , 0.21666156, 0.43332312, 0.64998469, 0.86664625,\n", + " 1.08330781, 1.29996937, 1.51663094, 1.7332925 , 1.94995406,\n", + " 2.16661562, 2.38327719, 2.59993875, 2.81660031, 3.03326187,\n", + " 3.24992343, 3.466585 , 3.68324656, 3.89990812, 4.11656968,\n", + " 4.33323125, 4.54989281, 4.76655437, 4.98321593, 5.1998775 ,\n", + " 5.41653906, 5.63320062, 5.84986218, 6.06652374, 6.28318531]), units='', type=, variable_label='', rescale=1, is_covariate=False)], dependent_variables=[Variable(name='y', value_range=None, allowed_values=None, units='', type=, variable_label='', rescale=1, is_covariate=False)], covariates=[]), conditions= x\n", + "0 5.416539\n", + "1 4.116570\n", + "2 3.249923\n", + "3 1.733292\n", + "4 1.949954\n", + "5 0.216662\n", + "6 0.433323\n", + "7 0.000000\n", + "8 1.083308\n", + "9 5.199877, experiment_data=Empty DataFrame\n", + "Columns: [x, y]\n", + "Index: [], models=[])\n" + ] + }, + { + "ename": "TypeError", + "evalue": "BaseEstimator.set_params() missing 1 required positional argument: 'self'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[19], line 18\u001b[0m\n\u001b[0;32m 16\u001b[0m s \u001b[39m=\u001b[39m experimentalist(s, num_samples\u001b[39m=\u001b[39m\u001b[39m10\u001b[39m, random_state\u001b[39m=\u001b[39m\u001b[39m42\u001b[39m\u001b[39m+\u001b[39mcycle)\n\u001b[0;32m 17\u001b[0m s \u001b[39m=\u001b[39m experiment_runner(s, added_noise\u001b[39m=\u001b[39m\u001b[39m0.5\u001b[39m, random_state\u001b[39m=\u001b[39m\u001b[39m42\u001b[39m\u001b[39m+\u001b[39mcycle)\n\u001b[1;32m---> 18\u001b[0m s \u001b[39m=\u001b[39m custom_theorist(s)\n\u001b[0;32m 20\u001b[0m \u001b[39mprint\u001b[39m(s\u001b[39m.\u001b[39mmodel)\n\u001b[0;32m 21\u001b[0m plot_from_state(s, \u001b[39m'\u001b[39m\u001b[39msin(x)\u001b[39m\u001b[39m'\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\cwill\\GitHub\\virtualEnvs\\autoraEnv\\lib\\site-packages\\autora\\state.py:1014\u001b[0m, in \u001b[0;36mdelta_to_state.._f\u001b[1;34m(state_, **kwargs)\u001b[0m\n\u001b[0;32m 1012\u001b[0m \u001b[39m@wraps\u001b[39m(f)\n\u001b[0;32m 1013\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_f\u001b[39m(state_: S, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m S:\n\u001b[1;32m-> 1014\u001b[0m delta \u001b[39m=\u001b[39m f(state_, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 1015\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39misinstance\u001b[39m(delta, Mapping), (\n\u001b[0;32m 1016\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mOutput of \u001b[39m\u001b[39m%s\u001b[39;00m\u001b[39m must be a `Delta`, `UserDict`, \u001b[39m\u001b[39m\"\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mor `dict`.\u001b[39m\u001b[39m\"\u001b[39m \u001b[39m%\u001b[39m f\n\u001b[0;32m 1017\u001b[0m )\n\u001b[0;32m 1018\u001b[0m new_state \u001b[39m=\u001b[39m state_ \u001b[39m+\u001b[39m delta\n", + "File \u001b[1;32mc:\\Users\\cwill\\GitHub\\virtualEnvs\\autoraEnv\\lib\\site-packages\\autora\\state.py:750\u001b[0m, in \u001b[0;36minputs_from_state.._f\u001b[1;34m(state_, **kwargs)\u001b[0m\n\u001b[0;32m 748\u001b[0m arguments_from_state[\u001b[39m\"\u001b[39m\u001b[39mstate\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m state_\n\u001b[0;32m 749\u001b[0m arguments \u001b[39m=\u001b[39m \u001b[39mdict\u001b[39m(arguments_from_state, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[1;32m--> 750\u001b[0m result \u001b[39m=\u001b[39m f(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39marguments)\n\u001b[0;32m 751\u001b[0m \u001b[39mreturn\u001b[39;00m result\n", + "File \u001b[1;32mc:\\Users\\cwill\\GitHub\\virtualEnvs\\autoraEnv\\lib\\site-packages\\autora\\state.py:1316\u001b[0m, in \u001b[0;36mestimator_on_state..theorist\u001b[1;34m(experiment_data, variables, **kwargs)\u001b[0m\n\u001b[0;32m 1314\u001b[0m dvs \u001b[39m=\u001b[39m [v\u001b[39m.\u001b[39mname \u001b[39mfor\u001b[39;00m v \u001b[39min\u001b[39;00m variables\u001b[39m.\u001b[39mdependent_variables]\n\u001b[0;32m 1315\u001b[0m X, y \u001b[39m=\u001b[39m experiment_data[ivs], experiment_data[dvs]\n\u001b[1;32m-> 1316\u001b[0m new_model \u001b[39m=\u001b[39m estimator\u001b[39m.\u001b[39mset_params(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\u001b[39m.\u001b[39mfit(X, y)\n\u001b[0;32m 1317\u001b[0m \u001b[39mreturn\u001b[39;00m Delta(model\u001b[39m=\u001b[39mnew_model)\n", + "\u001b[1;31mTypeError\u001b[0m: BaseEstimator.set_params() missing 1 required positional argument: 'self'" + ] + } + ], + "source": [ + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=0)\n", + "\n", + "s = StandardState(variables = variables, conditions = conditions, experiment_data = pd.DataFrame(columns=[\"x\",\"y\"]))\n", + "\n", + "#Report previous state\n", + "print('\\033[1mPrevious State:\\033[0m')\n", + "print(s)\n", + "\n", + "#Cycle\n", + "for cycle in range(5):\n", + " s = experimentalist(s, num_samples=10, random_state=42+cycle)\n", + " s = experiment_runner(s, added_noise=0.5, random_state=42+cycle)\n", + " s = custom_theorist(s)\n", + " \n", + " print(s.model)\n", + " plot_from_state(s, 'sin(x)')\n", + "\n", + "#Report updated state\n", + "print('\\n\\033[1mUpdated State:\\033[0m')\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Altogether Now\n", + "\n", + "We have now created custom experimentalists, experiment runners, and theorists. Let's add them all to the same workflow to see our first fully customized `AutoRA` workflow." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#### First, let's reinitialize the state object to get a clean state ####\n", + "iv = Variable(name=\"x\", value_range=(0, 2 * np.pi), allowed_values=np.linspace(0, 2 * np.pi, 30))\n", + "dv = Variable(name=\"y\", type=ValueType.REAL)\n", + "variables = VariableCollection(independent_variables=[iv],dependent_variables=[dv])\n", + "\n", + "conditions = random_pool(variables, num_samples=10, random_state=0)\n", + "\n", + "s = StandardState(variables = variables, conditions = conditions, experiment_data = pd.DataFrame(columns=[\"x\",\"y\"]))\n", + "\n", + "#Report previous state\n", + "print('\\033[1mPrevious State:\\033[0m')\n", + "print(s)\n", + "\n", + "#Cycle\n", + "for cycle in range(5):\n", + " s = custom_experimentalist(s, num_samples=10, random_state=42+cycle)\n", + " s = custom_experiment_runner(s, added_noise=0.5, random_state=42+cycle)\n", + " s = custom_theorist(s)\n", + " \n", + " plot_from_state(s, 'x + x**2')\n", + "\n", + "#Report updated state\n", + "print('\\n\\033[1mUpdated State:\\033[0m')\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's run the controller with the new theorist for 3 research cycles, defined by the number of models generated." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Help\n", + "We hope that this tutorial helped demonstrate the fundamental components of ``autora``, and how they can be combined to facilitate automated (closed-loop) empirical research through synthetic experiments. We encourage you to explore other [tutorials](https://autoresearch.github.io/autora/tutorials/) and check out the [documentation](https://autoresearch.github.io/).\n", + "\n", + "If you encounter any issues, bugs, or questions, please reach out to us through the [AutoRA Forum](https://github.com/orgs/AutoResearch/discussions). Feel free to report any bugs by [creating an issue in the AutoRA repository](https://github.com/AutoResearch/autora/issues).\n", + "\n", + "You may also post questions directly into the [User Q&A Section](https://github.com/orgs/AutoResearch/discussions/categories/using-autora).\n" + ] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "autoraKernel", + "language": "python", + "name": "autorakernel" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/mkdocs.yml b/mkdocs.yml index abe11a8b3..0e9c66057 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -162,12 +162,17 @@ nav: - Introduction: 'index.md' - Tutorials: - Home: 'tutorials/index.md' - - Introduction to AutoRA: 'tutorials/Introduction.ipynb' - - Theorists: 'tutorials/Theorist.ipynb' - - Experimentalists: 'tutorials/Experimentalist.ipynb' - - Functional Workflow: 'core/docs/cycle/Linear and Cyclical Workflows using Functions and States.ipynb' - - Closed-Loop Discovery: 'workflow-tutorial/docs/interactive/Basic Usage.ipynb' - - Online Closed-Loop Discovery: 'user-cookiecutter/docs/index.md' + - Basic: + - I - Components: 'tutorials/basic/Tutorial-I-Components.ipynb' + - II - Loop Constructs: 'tutorials/basic/Tutorial-II-Loop-Constructs.ipynb' + - III - Functional Workflow: 'tutorials/basic/Tutorial-III-Functional-Workflow.ipynb' + - IV - Customization: 'tutorials/basic/Tutorial-IV-Customization.ipynb' + - Advanced: + - Equation Discovery: 'tutorials/Theorist.ipynb' + - Experimentalists: 'tutorials/Experimentalist.ipynb' + #- Functional Workflow: 'core/docs/cycle/Linear and Cyclical Workflows using Functions and States.ipynb' + - Closed-Loop Discovery: 'workflow-tutorial/docs/interactive/Basic Usage.ipynb' + - Online Closed-Loop Discovery: 'user-cookiecutter/docs/index.md' - User Guide: - Installation: 'installation.md' - Theorists: