From 9942c22edba06535eef348a96b792397707760d2 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Tue, 12 Dec 2023 11:19:28 +0100 Subject: [PATCH 01/17] * Distributed run --- .../phantom_bias_tradeoff.ipynb | 822 ++++++++++++++++++ 1 file changed, 822 insertions(+) create mode 100644 docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb diff --git a/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb b/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb new file mode 100644 index 00000000..4eadab82 --- /dev/null +++ b/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb @@ -0,0 +1,822 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "4a0e405b3a5beae1", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-12T10:05:53.846446139Z", + "start_time": "2023-12-12T10:05:52.615542858Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-12-12 11:05:53,023\tINFO worker.py:1489 -- Connecting to existing Ray cluster at address: 192.168.178.154:6379...\n", + "2023-12-12 11:05:53,032\tINFO worker.py:1664 -- Connected to Ray cluster. View the dashboard at \u001B[1m\u001B[32mhttp://127.0.0.1:8265 \u001B[39m\u001B[22m\n" + ] + }, + { + "data": { + "text/plain": "RayContext(dashboard_url='127.0.0.1:8265', python_version='3.11.5', ray_version='2.8.1', ray_commit='82a8df138fe7fcc5c42536ebf26e8c3665704fee', protocol_version=None)", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "d4e70014ce1749d2a2475a4c72f3c9cb" + }, + "text/html": "
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n
Python version:3.11.5
Ray version:2.8.1
Dashboard:http://127.0.0.1:8265
\n\n
\n
\n" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import time\n", + "\n", + "# Make JAX 64bit\n", + "# from jax.config import config\n", + "# \n", + "# config.update(\"jax_enable_x64\", True)\n", + "import numpy as np\n", + "import ray\n", + "ray.init('auto')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "886f317463b6cc88", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-12T10:05:56.630270892Z", + "start_time": "2023-12-12T10:05:56.612779454Z" + } + }, + "outputs": [], + "source": [ + "\n", + "ndims = 8\n", + "\n", + "k_array = np.asarray([0, 1, 2, 3, 4, 5, 7])\n", + "s_array = np.asarray([1, 2, 3, 4, 5, 6, 7])\n", + "c_array = np.asarray([16, 32, 64, 128, 256]) * ndims\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [], + "source": [ + "try:\n", + " import ray\n", + " from ray.util.queue import Queue\n", + "except ImportError:\n", + " print(\"Install ray first with `pip install ray`\")\n", + " raise\n", + "\n", + "\n", + "@ray.remote(num_cpus=1, num_gpus=0)\n", + "def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue):\n", + " # from jax.config import config\n", + " # config.update(\"jax_enable_x64\", True)\n", + " from jaxns import Prior, Model\n", + " import jax\n", + " from jax import random, numpy as jnp\n", + " import numpy as np\n", + " import tensorflow_probability.substrates.jax as tfp\n", + " tfpd = tfp.distributions\n", + " \n", + " prior_mu = jnp.zeros(ndims)\n", + " prior_cov = jnp.eye(ndims)\n", + "\n", + " data_mu = 15 * jnp.ones(ndims)\n", + " data_cov = jnp.eye(ndims)\n", + " data_cov = jnp.where(data_cov == 0., 0.99, data_cov)\n", + "\n", + " def prior_model():\n", + " x = yield Prior(\n", + " tfpd.MultivariateNormalTriL(\n", + " loc=prior_mu,\n", + " scale_tril=jnp.linalg.cholesky(prior_cov)\n", + " )\n", + " )\n", + " return x\n", + "\n", + " def log_likelihood(x):\n", + " return tfpd.MultivariateNormalTriL(\n", + " loc=data_mu,\n", + " scale_tril=jnp.linalg.cholesky(data_cov)\n", + " ).log_prob(x)\n", + "\n", + " model = Model(prior_model=prior_model, log_likelihood=log_likelihood)\n", + "\n", + " true_logZ = tfpd.MultivariateNormalTriL(\n", + " loc=prior_mu,\n", + " scale_tril=jnp.linalg.cholesky(prior_cov + data_cov)\n", + " ).log_prob(data_mu)\n", + "\n", + " # not super happy with this being 1.58 and being off by like 0.1. Probably related to the ESS.\n", + " post_mu = prior_cov @ jnp.linalg.inv(prior_cov + data_cov) @ data_mu + data_cov @ jnp.linalg.inv(\n", + " prior_cov + data_cov) @ prior_mu\n", + "\n", + " print(f\"True post mu:{post_mu}\")\n", + " print(f\"True log Z: {true_logZ}\")\n", + "\n", + " while True:\n", + " input_data = input_queue.get()\n", + " if input_data is None: # poison pill\n", + " break\n", + " (s, k, c, store_indices) = input_data\n", + " nested_sampler = StandardStaticNestedSampler(\n", + " model=model,\n", + " num_live_points=c,\n", + " max_samples=50000,\n", + " sampler=UniDimSliceSampler(\n", + " model=model,\n", + " num_slices=model.U_ndims * s,\n", + " num_phantom_save=k,\n", + " midpoint_shrink=True,\n", + " perfect=True\n", + " ),\n", + " init_efficiency_threshold=0.1,\n", + " num_parallel_workers=1\n", + " )\n", + "\n", + " @jax.jit\n", + " def ns_run(key):\n", + " termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition())\n", + " results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False)\n", + " return results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples\n", + "\n", + " run_compiled = ns_run.lower(random.PRNGKey(0)).compile()\n", + "\n", + " dt = []\n", + " results = []\n", + " for _ in range(ensemble_size):\n", + " t0 = time.time()\n", + " results.append(run_compiled(random.PRNGKey(i)))\n", + " results[-1][0].block_until_ready()\n", + " dt.append(time.time() - t0)\n", + " dt = np.asarray(dt) # [m]\n", + " print(f\"Time taken s={s} k={k} c={c}: {sum(dt)}\")\n", + " log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples = np.asarray(\n", + " results).T # [:, m]\n", + " output_data = (\n", + " (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ),\n", + " store_indices)\n", + " output_queue.put(output_data)\n", + " # Poison pill\n", + " output_queue.put(None)\n", + "\n", + "\n", + "num_workers = 10\n", + "input_queue = Queue()\n", + "output_queue = Queue()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-12T10:06:11.797190485Z", + "start_time": "2023-12-12T10:06:11.731343091Z" + } + }, + "id": "253ddb6e7a327d61" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "initial_id", + "metadata": { + "collapsed": false, + "is_executing": true, + "ExecuteTime": { + "start_time": "2023-12-12T10:06:30.688573266Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO[2023-12-12 11:06:31,743]: Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "INFO[2023-12-12 11:06:31,744]: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "INFO[2023-12-12 11:06:31,745]: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\n", + "WARNING[2023-12-12 11:06:31,746]: An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n", + "\u001B[36m(pid=543061)\u001B[0m INFO[2023-12-12 11:06:34,009]: Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "\u001B[36m(pid=543061)\u001B[0m INFO[2023-12-12 11:06:34,009]: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "\u001B[36m(pid=543061)\u001B[0m INFO[2023-12-12 11:06:34,010]: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\n", + "\u001B[36m(pid=543061)\u001B[0m WARNING[2023-12-12 11:06:34,010]: An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001B[36m(run pid=543055)\u001B[0m True post mu:[1.6797328 1.6797304 1.6797318 1.6797323 1.6797304 1.6797314 1.6797304\n", + "\u001B[36m(run pid=543055)\u001B[0m 1.6797304]\n", + "\u001B[36m(run pid=543055)\u001B[0m True log Z: -109.26490783691406\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001B[36m(run pid=543056)\u001B[0m /home/albert/miniconda3/envs/jaxns_py/lib/python3.11/site-packages/jax/_src/ops/scatter.py:94: FutureWarning: scatter inputs have incompatible types: cannot safely cast value from dtype=float32 to dtype=int32 with jax_numpy_dtype_promotion='standard'. In future JAX releases this will result in an error.\n", + "\u001B[36m(run pid=543056)\u001B[0m warnings.warn(\"scatter inputs have incompatible types: cannot safely cast \"\n" + ] + } + ], + "source": [ + "from jaxns import TerminationCondition\n", + "from jaxns.samplers import UniDimSliceSampler\n", + "from jaxns.nested_sampler import StandardStaticNestedSampler\n", + "\n", + "m = 100\n", + "Ns = len(s_array)\n", + "Nk = len(k_array)\n", + "Nc = len(c_array)\n", + "\n", + "log_Z_mean_array = np.zeros((Ns, Nk, Nc, m))\n", + "log_Z_uncert_array = np.zeros((Ns, Nk, Nc, m))\n", + "num_likelihood_evals_array = np.zeros((Ns, Nk, Nc, m))\n", + "run_time_array = np.zeros((Ns, Nk, Nc, m))\n", + "total_num_samples_array = np.zeros((Ns, Nk, Nc, m))\n", + "total_num_phantom_samples_array = np.zeros((Ns, Nk, Nc, m))\n", + "\n", + "for i, s in enumerate(s_array):\n", + " for j, k in enumerate(k_array):\n", + " for l, c in enumerate(c_array):\n", + " store_indices = (i, j, l)\n", + " input_data = (s, k, c, store_indices)\n", + " input_queue.put(input_data)\n", + "\n", + "# Poison pills\n", + "for _ in range(num_workers):\n", + " input_queue.put(None)\n", + "\n", + "workers = []\n", + "for _ in range(num_workers):\n", + " workers.append(run.remote(ndims, m, input_queue, output_queue))\n", + "\n", + "num_poison_pills = 0\n", + "true_logZ = None\n", + "while num_poison_pills < num_workers:\n", + " output_data = output_queue.get()\n", + " if output_data is None:\n", + " num_poison_pills += 1\n", + " continue\n", + " (\n", + " (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ),\n", + " store_indices\n", + " ) = output_data\n", + " i, j, l = store_indices\n", + " run_time_array[i, j, l, :] = dt\n", + " log_Z_mean_array[i, j, l, :] = log_Z_mean\n", + " log_Z_uncert_array[i, j, l, :] = log_Z_uncert\n", + " num_likelihood_evals_array[i, j, l, :] = num_likelihood_evals\n", + " total_num_samples_array[i, j, l, :] = total_num_samples\n", + " total_num_phantom_samples_array[i, j, l, :] = total_phantom_samples\n", + "\n", + "# Save the result arrays and axes into npz file\n", + "save_file = \"bias_experiment_results.npz\"\n", + "np.savez(\n", + " save_file,\n", + " run_time_array=np.asarray(run_time_array),\n", + " log_Z_mean_array=np.asarray(log_Z_mean_array),\n", + " log_Z_uncert_array=np.asarray(log_Z_uncert_array),\n", + " num_likelihood_evals_array=np.asarray(num_likelihood_evals_array),\n", + " total_num_samples_array=np.asarray(total_num_samples_array),\n", + " total_num_phantom_samples_array=np.asarray(total_num_phantom_samples_array),\n", + " s_array=np.asarray(s_array),\n", + " k_array=np.asarray(k_array),\n", + " c_array=np.asarray(c_array),\n", + " true_logZ=true_logZ\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c710500be5f5b973", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-12T09:40:31.541246181Z", + "start_time": "2023-12-12T09:40:31.539470418Z" + } + }, + "outputs": [], + "source": [ + "# Load results into arrays of same names\n", + "save_file = \"bias_experiment_results.npz\"\n", + "\n", + "npzfile = np.load(save_file)\n", + "run_time_array = npzfile['run_time_array'].mean(-1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(\n", + " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "log_Z_uncert_array = np.sqrt(\n", + " np.sqrt(npzfile['log_Z_uncert_array']).mean(-1)) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(\n", + " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "total_num_samples_array = npzfile['total_num_samples_array'].mean(\n", + " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(\n", + " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "s_array = npzfile['s_array'] # (len(s_array),)\n", + "k_array = npzfile['k_array'] # (len(k_array),)\n", + "true_logZ = npzfile['true_logZ'] # ()\n", + "\n", + "# bias_array = np.mean(npzfile['log_Z_mean_array'] - true_logZ, axis=-1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "# rms_array = np.sqrt(np.mean(np.square(npzfile['log_Z_mean_array'] - true_logZ), axis=-1)) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "# bias_uncert_array = np.sqrt(rms_array**2 + np.mean(npzfile['log_Z_uncert_array']**2, axis=-1)) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11cb95333adf8477", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.539594359Z" + } + }, + "outputs": [], + "source": [ + "sample_efficiency_array = (npzfile['total_num_samples_array'] / npzfile['num_likelihood_evals_array']).mean(\n", + " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", + "run_time_speed_up_array = run_time_array[:, 0:1] / run_time_array # (len(s_array), len(k_array))\n", + "efficiency_improvement_array = sample_efficiency_array / sample_efficiency_array[:, 0:1] # (len(s_array), len(k_array))" + ] + }, + { + "cell_type": "markdown", + "id": "b5dfdc0711ef0b55", + "metadata": { + "collapsed": false + }, + "source": [ + "# After a threshold number of slices, the bias is independent of the number of phantom samples\n", + "A crucial component of nested sampling is generating i.i.d. uniform samples from the likelihood constrained prior distribution. When using Markov chain likelihood samplers, such as slice sampling, this is accomplished by sequentially drawing samples from an ergodic Markov chain. A well known problem is that if the number of proposals between acceptance is too low the samples with exhibit auto-correlation.\n", + "\n", + "We directly observed this below by looking at bias in the resulting uncertainty estimate as a function of the number of proposal steps between acceptance. Crucially this property is independent of the number of phantom samples, which forms the crux of our discovery. Each point below corresponds to a particular fraction of phantom samples, and number of slices. In general, the bias decreases with increasing number of slices, and increasing phantom fraction. However, after a threshold number of slices, the bias is independent of the phantom fraction. This is a crucial result, as it means that we can use a smaller number of likelihood evaluations to generate a larger number of i.i.d. samples from the likelihood constrained prior distribution, and thus achieve a high sample efficiency." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a748191c0d7db5f", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.539655976Z" + } + }, + "outputs": [], + "source": [ + "import pylab as plt\n", + "\n", + "cm = plt.cm.get_cmap('PuOr')\n", + "\n", + "\n", + "def color(c, unique_c):\n", + " return cm(plt.Normalize(np.min(unique_c), np.max(unique_c))(c))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8cf4960a5144a213", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.539712515Z" + } + }, + "outputs": [], + "source": [ + "# Plot log_Z (with error bars) vs num slices, color coded by phantom fraction\n", + "plt.figure()\n", + "unique_c = np.unique(k_array / (k_array + 1))\n", + "for i, k in enumerate(k_array):\n", + " phantom_fraction = k / (k + 1)\n", + " plt.errorbar(s_array, log_Z_mean_array[:, i], yerr=log_Z_uncert_array[:, i], fmt='o',\n", + " c=color(phantom_fraction, unique_c),\n", + " label=f\"Phantom Fraction: {phantom_fraction * 100:.0f}%\")\n", + "plt.xlabel(\"Num Slices\")\n", + "plt.ylabel(\"Bias (nats)\")\n", + "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", + "\n", + "# \n", + "# \n", + "# # put a red box around the region of interest (All points with slice factor >= 3)\n", + "# # Make the box a little bigger than the y error bars\n", + "# \n", + "num_slice_factor_threshold = 4\n", + "\n", + "mask = (s_array >= num_slice_factor_threshold)\n", + "x = s_array[mask]\n", + "y = log_Z_mean_array[mask]\n", + "yerr = log_Z_uncert_array[mask]\n", + "\n", + "lower_left = [0.97 * np.min(x), np.min(y - 1.2 * yerr)]\n", + "upper_right = [1.01 * np.max(x), np.max(y + 1.2 * yerr)]\n", + "plt.gca().add_patch(plt.Rectangle(lower_left, upper_right[0] - lower_left[0], upper_right[1] - lower_left[1],\n", + " fill=False, edgecolor='r', lw=2))\n", + "\n", + "plt.legend(loc='lower right')\n", + "# plt.savefig(\"bias_vs_num_slices.png\", dpi=300)\n", + "# plt.savefig(\"bias_vs_num_slices.pdf\", dpi=300)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9d360caeb5284f9", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.539793287Z" + } + }, + "outputs": [], + "source": [ + "import pylab as plt\n", + "\n", + "num_slice_factor_threshold = 4\n", + "\n", + "# For all runs in consistent region (red box), plot bias vs num likelihood evals, color coded by number of slices\n", + "plt.figure()\n", + "colors = s_array\n", + "unique_c = np.unique(colors)\n", + "for j, s in enumerate(s_array):\n", + " plt.errorbar(num_likelihood_evals_array[j, :], log_Z_mean_array[j, :], yerr=log_Z_uncert_array[j, :], fmt='o',\n", + " c=color(s, unique_c),\n", + " label=f\"Num Slices: {s}\")\n", + "plt.xlabel(\"Num Likelihood Evaluations\")\n", + "plt.ylabel(\"Bias (nats)\")\n", + "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "884cf1c8fc7dd01f", + "metadata": { + "collapsed": false + }, + "source": [ + "# Using phantom samples to improve sample efficiency\n", + "Using the above result, the sample efficiency can be significantly boosted by using a large enough number of slices, and larger phantom fraction. We can easily see this looking at bias vs run time speed up. The run time speed is defined as the ratio of the run time with no phantom samples to the run time with phantom samples. We see a speed up of almost 4x with a phantom fraction of 0.8, and slice factor >= 3. This is a significant improvement in sample efficiency, and is the key to achieving high sample efficiency with nested sampling in high dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba0058ae30e40b3e", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.539865192Z" + } + }, + "outputs": [], + "source": [ + "# So imshow of bias over k and s.\n", + "\n", + "plt.figure()\n", + "plt.imshow(log_Z_mean_array - true_logZ, origin='lower',\n", + " extent=[np.min(k_array), np.max(k_array), np.min(s_array), np.max(s_array)],\n", + " aspect='auto', cmap='PuOr')\n", + "plt.xlabel(\"Num Phantom Samples\")\n", + "plt.ylabel(\"Num Slices\")\n", + "plt.colorbar(label=\"Bias (nats)\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "96793a5eacbc33bf", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.539957390Z" + } + }, + "outputs": [], + "source": [ + "# Plot log_Z with y error bars vs phantom fraction\n", + "plt.figure()\n", + "unique_c = np.unique(s_array)\n", + "phantom_fraction = k_array / (k_array + 1)\n", + "for i, s in enumerate(s_array):\n", + " plt.errorbar(phantom_fraction, log_Z_mean_array[i, :], yerr=log_Z_uncert_array[i, :], fmt='o', c=color(s, unique_c),\n", + " label=f\"Num Slices: {s}\")\n", + "plt.xlabel(\"Phantom Fraction\")\n", + "plt.ylabel(r\" $\\log Z$ (nats)\")\n", + "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", + "plt.legend(loc='lower right')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "80c8ac3e67aea119", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540004413Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b27324b500ed488", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540038487Z" + } + }, + "outputs": [], + "source": [ + "# Plot log Z vs sample efficiency, color coded by number of slices\n", + "plt.figure()\n", + "colors = s_array\n", + "unique_c = np.unique(colors)\n", + "for j, s in enumerate(s_array):\n", + " plt.errorbar(sample_efficiency_array[j, :], log_Z_mean_array[j, :], yerr=log_Z_uncert_array[j, :], fmt='o',\n", + " c=color(s, unique_c),\n", + " label=f\"Num Slices: {s}\")\n", + "plt.xlabel(\"Sample Efficiency\")\n", + "plt.ylabel(r\" $\\log Z$ (nats)\")\n", + "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3748e53d20fa6218", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540078585Z" + } + }, + "outputs": [], + "source": [ + "# Plot log_Z vs run time, color coded by number of phantom samples\n", + "plt.figure()\n", + "colors = k_array\n", + "unique_c = np.unique(colors)\n", + "for i, k in enumerate(k_array):\n", + " plt.errorbar(run_time_array[:, i], log_Z_mean_array[:, i], yerr=log_Z_uncert_array[:, i], fmt='o',\n", + " c=color(k, unique_c),\n", + " label=f\"Num Phantom Samples: {k}\")\n", + "plt.xlabel(\"Run Time (s)\")\n", + "plt.ylabel(r\" $\\log Z$ (nats)\")\n", + "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ba3c8b3f147923d", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540106118Z" + } + }, + "outputs": [], + "source": [ + "# Plot speed up vs phantom fraction, plotting only those with slice factor >= 3\n", + "\n", + "plt.figure()\n", + "colors = s_array\n", + "unique_c = np.unique(colors)\n", + "phantom_fraction = k_array / (k_array + 1)\n", + "for j, s in enumerate(s_array):\n", + " plt.errorbar(phantom_fraction, run_time_speed_up_array[j, :], fmt='o', c=color(s, unique_c),\n", + " label=f\"Num Slices: {s}\")\n", + "plt.xlabel(\"Phantom Fraction\")\n", + "plt.ylabel(\"Run Time Speed Up\")\n", + "plt.gca().axhline(1, color='k', linestyle='--')\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "25a9558122c84d47", + "metadata": { + "collapsed": false + }, + "source": [ + "# Ablation study, large values of phantom fraction should introduce autocorrelation\n", + "\n", + "We explore the impact of large values of phantom fraction on the resulting bias. We see that for large values of phantom fraction, the bias increases significantly. This is due to the fact that the phantom samples are no longer i.i.d. and thus the resulting log-evidence estimate is biased.\n", + "\n", + "We restrict ourselves to `slice_factor=6` as this is the largest value of slice factor we consider, and thus the bias is independent of the number of slices. We explore `num_phantom` from `{s, 2*s, ..., s * (D-1) - 1, s * D - 1}`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ecb05060a7ff544", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540131372Z" + } + }, + "outputs": [], + "source": [ + "bias_array = []\n", + "rms_array = []\n", + "num_likelihood_evals_array = []\n", + "num_slice_factor_array = []\n", + "phantom_fraction_array = []\n", + "run_time_array = []\n", + "total_num_samples_array = []\n", + "total_num_phantom_samples_array = []\n", + "m = 100\n", + "num_slice_factor = 6\n", + "num_phantom_save_array = list(range(num_slice_factor)) + [num_slice_factor * i for i in range(1, ndims)] + [\n", + " num_slice_factor * ndims - 1]\n", + "for num_phantom_save in num_phantom_save_array:\n", + " samples_per_iter = (1 + num_phantom_save)\n", + " num_live_points_effective = ndims * 64 # lcm is not valid anymore.\n", + " num_live_points = int(num_live_points_effective / samples_per_iter) + 1\n", + "\n", + " nested_sampler = StandardStaticNestedSampler(\n", + " model=model,\n", + " num_live_points=num_live_points,\n", + " max_samples=100000,\n", + " sampler=UniDimSliceSampler(\n", + " model=model,\n", + " num_slices=model.U_ndims * num_slice_factor,\n", + " num_phantom_save=num_phantom_save,\n", + " midpoint_shrink=True,\n", + " perfect=True\n", + " ),\n", + " init_efficiency_threshold=0.1,\n", + " num_parallel_workers=1\n", + " )\n", + "\n", + "\n", + " @jax.jit\n", + " def run(key):\n", + " termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition())\n", + " results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False)\n", + " return results.log_Z_mean, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples\n", + "\n", + "\n", + " run_compiled = run.lower(random.PRNGKey(0)).compile()\n", + "\n", + " t0 = time.time()\n", + " results = []\n", + " for i in range(m):\n", + " results.append(run(random.PRNGKey(i)))\n", + "\n", + " print(f\"Time taken n={num_live_points} k={num_phantom_save}: {time.time() - t0}\")\n", + " log_Z, num_likelihood_evals, total_num_samples, total_phantom_samples = jnp.mean(jnp.asarray(results), axis=0)\n", + " run_time_array.append((time.time() - t0) / m)\n", + " bias_array.append(jnp.mean(jnp.asarray(log_Z) - true_logZ))\n", + " rms_array.append(jnp.sqrt(jnp.mean(jnp.square(jnp.asarray(log_Z) - true_logZ))))\n", + " num_likelihood_evals_array.append(jnp.mean(jnp.asarray(num_likelihood_evals)))\n", + " num_slice_factor_array.append(num_slice_factor)\n", + " phantom_fraction_array.append(num_phantom_save / samples_per_iter)\n", + " total_num_samples_array.append(total_num_samples)\n", + " total_num_phantom_samples_array.append(total_phantom_samples)\n", + "\n", + "# Save the results into npz file\n", + "save_file = \"bias_experiment_results_ablation.npz\"\n", + "np.savez(\n", + " save_file,\n", + " bias_array=np.asarray(bias_array),\n", + " rms_array=np.asarray(rms_array),\n", + " num_likelihood_evals_array=np.asarray(num_likelihood_evals_array),\n", + " num_slice_factor_array=np.asarray(num_slice_factor_array),\n", + " phantom_fraction_array=np.asarray(phantom_fraction_array),\n", + " run_time_array=np.asarray(run_time_array),\n", + " total_num_samples_array=np.asarray(total_num_samples_array),\n", + " total_num_phantom_samples_array=np.asarray(total_num_phantom_samples_array)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "172cff74f38e06ed", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540155454Z" + } + }, + "outputs": [], + "source": [ + "# Load results into arrays of same names\n", + "save_file = \"bias_experiment_results_ablation.npz\"\n", + "\n", + "npzfile = np.load(save_file)\n", + "bias_array = npzfile['bias_array']\n", + "rms_array = npzfile['rms_array']\n", + "num_likelihood_evals_array = npzfile['num_likelihood_evals_array']\n", + "num_slice_factor_array = npzfile['num_slice_factor_array']\n", + "phantom_fraction_array = npzfile['phantom_fraction_array']\n", + "run_time_array = npzfile['run_time_array']\n", + "total_num_samples_array = npzfile['total_num_samples_array']\n", + "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array']\n", + "\n", + "# log_Z_mean = bias_array + true_logZ\n", + "# new_log_Z_mean = -109.15\n", + "# bias_array = bias_array - (new_log_Z_mean - true_logZ)\n", + "# rms_array = jnp.sqrt(rms_array**2 - (true_logZ - log_Z_mean)**2 + (new_log_Z_mean - log_Z_mean)**2)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "85b6bdc54eff4c73", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540181211Z" + } + }, + "outputs": [], + "source": [ + "# Plot bias with rms y error bars vs phantom fraction, colored by number of likelihood evals (with color bar not labels)\n", + "plt.figure()\n", + "colors = num_likelihood_evals_array\n", + "k = 1 / (1 / phantom_fraction_array - 1)\n", + "for _k, _b, _rms, _c in zip(k, bias_array, rms_array, colors):\n", + " plt.errorbar(_k, _b, yerr=_rms, fmt='o', c=color(_c, np.unique(colors)))\n", + "plt.xlabel(\"Num Phantom Samples Retained\")\n", + "plt.ylabel(\"Bias (nats)\")\n", + "plt.gca().axhline(0, color='k', linestyle='--')\n", + "plt.gca().axvline(model.U_ndims, color='r', linestyle='--')\n", + "# Create custom mappable for colorbar (errorbar() doesn't make a mappable like scatter)\n", + "sm = plt.cm.ScalarMappable(cmap=cm, norm=plt.Normalize(np.min(colors), np.max(colors)))\n", + "sm.set_array([])\n", + "plt.colorbar(sm, label=\"Num Likelihood Evaluations\", ax=plt.gca())\n", + "plt.savefig(\"bias_vs_phantom_fraction_ablation.png\", dpi=300)\n", + "plt.savefig(\"bias_vs_phantom_fraction_ablation.pdf\", dpi=300)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1fd9c0f4bb7b5d0", + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-12-12T09:40:31.540220921Z" + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 554e5fe61bc9dc2c2f64a0f0d30035d8c77fcd01 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Tue, 12 Dec 2023 11:37:12 +0100 Subject: [PATCH 02/17] * Separate into scripts --- .../phantom_bias_tradeoff.ipynb | 455 ++---------------- .../run_ablation.py | 182 +++++++ .../run_experiment.py | 182 +++++++ 3 files changed, 403 insertions(+), 416 deletions(-) create mode 100644 docs/papers/phantom-powered-nested-sampling/run_ablation.py create mode 100644 docs/papers/phantom-powered-nested-sampling/run_experiment.py diff --git a/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb b/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb index 4eadab82..88cde637 100644 --- a/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb +++ b/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb @@ -37,266 +37,16 @@ "source": [ "import time\n", "\n", - "# Make JAX 64bit\n", - "# from jax.config import config\n", - "# \n", - "# config.update(\"jax_enable_x64\", True)\n", "import numpy as np\n", - "import ray\n", - "ray.init('auto')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "886f317463b6cc88", - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-12-12T10:05:56.630270892Z", - "start_time": "2023-12-12T10:05:56.612779454Z" - } - }, - "outputs": [], - "source": [ - "\n", - "ndims = 8\n", - "\n", - "k_array = np.asarray([0, 1, 2, 3, 4, 5, 7])\n", - "s_array = np.asarray([1, 2, 3, 4, 5, 6, 7])\n", - "c_array = np.asarray([16, 32, 64, 128, 256]) * ndims\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "outputs": [], - "source": [ - "try:\n", - " import ray\n", - " from ray.util.queue import Queue\n", - "except ImportError:\n", - " print(\"Install ray first with `pip install ray`\")\n", - " raise\n", - "\n", - "\n", - "@ray.remote(num_cpus=1, num_gpus=0)\n", - "def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue):\n", - " # from jax.config import config\n", - " # config.update(\"jax_enable_x64\", True)\n", - " from jaxns import Prior, Model\n", - " import jax\n", - " from jax import random, numpy as jnp\n", - " import numpy as np\n", - " import tensorflow_probability.substrates.jax as tfp\n", - " tfpd = tfp.distributions\n", - " \n", - " prior_mu = jnp.zeros(ndims)\n", - " prior_cov = jnp.eye(ndims)\n", - "\n", - " data_mu = 15 * jnp.ones(ndims)\n", - " data_cov = jnp.eye(ndims)\n", - " data_cov = jnp.where(data_cov == 0., 0.99, data_cov)\n", - "\n", - " def prior_model():\n", - " x = yield Prior(\n", - " tfpd.MultivariateNormalTriL(\n", - " loc=prior_mu,\n", - " scale_tril=jnp.linalg.cholesky(prior_cov)\n", - " )\n", - " )\n", - " return x\n", - "\n", - " def log_likelihood(x):\n", - " return tfpd.MultivariateNormalTriL(\n", - " loc=data_mu,\n", - " scale_tril=jnp.linalg.cholesky(data_cov)\n", - " ).log_prob(x)\n", - "\n", - " model = Model(prior_model=prior_model, log_likelihood=log_likelihood)\n", - "\n", - " true_logZ = tfpd.MultivariateNormalTriL(\n", - " loc=prior_mu,\n", - " scale_tril=jnp.linalg.cholesky(prior_cov + data_cov)\n", - " ).log_prob(data_mu)\n", - "\n", - " # not super happy with this being 1.58 and being off by like 0.1. Probably related to the ESS.\n", - " post_mu = prior_cov @ jnp.linalg.inv(prior_cov + data_cov) @ data_mu + data_cov @ jnp.linalg.inv(\n", - " prior_cov + data_cov) @ prior_mu\n", - "\n", - " print(f\"True post mu:{post_mu}\")\n", - " print(f\"True log Z: {true_logZ}\")\n", - "\n", - " while True:\n", - " input_data = input_queue.get()\n", - " if input_data is None: # poison pill\n", - " break\n", - " (s, k, c, store_indices) = input_data\n", - " nested_sampler = StandardStaticNestedSampler(\n", - " model=model,\n", - " num_live_points=c,\n", - " max_samples=50000,\n", - " sampler=UniDimSliceSampler(\n", - " model=model,\n", - " num_slices=model.U_ndims * s,\n", - " num_phantom_save=k,\n", - " midpoint_shrink=True,\n", - " perfect=True\n", - " ),\n", - " init_efficiency_threshold=0.1,\n", - " num_parallel_workers=1\n", - " )\n", - "\n", - " @jax.jit\n", - " def ns_run(key):\n", - " termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition())\n", - " results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False)\n", - " return results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples\n", "\n", - " run_compiled = ns_run.lower(random.PRNGKey(0)).compile()\n", - "\n", - " dt = []\n", - " results = []\n", - " for _ in range(ensemble_size):\n", - " t0 = time.time()\n", - " results.append(run_compiled(random.PRNGKey(i)))\n", - " results[-1][0].block_until_ready()\n", - " dt.append(time.time() - t0)\n", - " dt = np.asarray(dt) # [m]\n", - " print(f\"Time taken s={s} k={k} c={c}: {sum(dt)}\")\n", - " log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples = np.asarray(\n", - " results).T # [:, m]\n", - " output_data = (\n", - " (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ),\n", - " store_indices)\n", - " output_queue.put(output_data)\n", - " # Poison pill\n", - " output_queue.put(None)\n", - "\n", - "\n", - "num_workers = 10\n", - "input_queue = Queue()\n", - "output_queue = Queue()" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-12-12T10:06:11.797190485Z", - "start_time": "2023-12-12T10:06:11.731343091Z" - } - }, - "id": "253ddb6e7a327d61" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "initial_id", - "metadata": { - "collapsed": false, - "is_executing": true, - "ExecuteTime": { - "start_time": "2023-12-12T10:06:30.688573266Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO[2023-12-12 11:06:31,743]: Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "INFO[2023-12-12 11:06:31,744]: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "INFO[2023-12-12 11:06:31,745]: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\n", - "WARNING[2023-12-12 11:06:31,746]: An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n", - "\u001B[36m(pid=543061)\u001B[0m INFO[2023-12-12 11:06:34,009]: Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "\u001B[36m(pid=543061)\u001B[0m INFO[2023-12-12 11:06:34,009]: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "\u001B[36m(pid=543061)\u001B[0m INFO[2023-12-12 11:06:34,010]: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\n", - "\u001B[36m(pid=543061)\u001B[0m WARNING[2023-12-12 11:06:34,010]: An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001B[36m(run pid=543055)\u001B[0m True post mu:[1.6797328 1.6797304 1.6797318 1.6797323 1.6797304 1.6797314 1.6797304\n", - "\u001B[36m(run pid=543055)\u001B[0m 1.6797304]\n", - "\u001B[36m(run pid=543055)\u001B[0m True log Z: -109.26490783691406\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001B[36m(run pid=543056)\u001B[0m /home/albert/miniconda3/envs/jaxns_py/lib/python3.11/site-packages/jax/_src/ops/scatter.py:94: FutureWarning: scatter inputs have incompatible types: cannot safely cast value from dtype=float32 to dtype=int32 with jax_numpy_dtype_promotion='standard'. In future JAX releases this will result in an error.\n", - "\u001B[36m(run pid=543056)\u001B[0m warnings.warn(\"scatter inputs have incompatible types: cannot safely cast \"\n" - ] - } - ], - "source": [ - "from jaxns import TerminationCondition\n", - "from jaxns.samplers import UniDimSliceSampler\n", - "from jaxns.nested_sampler import StandardStaticNestedSampler\n", - "\n", - "m = 100\n", - "Ns = len(s_array)\n", - "Nk = len(k_array)\n", - "Nc = len(c_array)\n", - "\n", - "log_Z_mean_array = np.zeros((Ns, Nk, Nc, m))\n", - "log_Z_uncert_array = np.zeros((Ns, Nk, Nc, m))\n", - "num_likelihood_evals_array = np.zeros((Ns, Nk, Nc, m))\n", - "run_time_array = np.zeros((Ns, Nk, Nc, m))\n", - "total_num_samples_array = np.zeros((Ns, Nk, Nc, m))\n", - "total_num_phantom_samples_array = np.zeros((Ns, Nk, Nc, m))\n", - "\n", - "for i, s in enumerate(s_array):\n", - " for j, k in enumerate(k_array):\n", - " for l, c in enumerate(c_array):\n", - " store_indices = (i, j, l)\n", - " input_data = (s, k, c, store_indices)\n", - " input_queue.put(input_data)\n", - "\n", - "# Poison pills\n", - "for _ in range(num_workers):\n", - " input_queue.put(None)\n", + "import pylab as plt\n", "\n", - "workers = []\n", - "for _ in range(num_workers):\n", - " workers.append(run.remote(ndims, m, input_queue, output_queue))\n", + "cm = plt.cm.get_cmap('PuOr')\n", "\n", - "num_poison_pills = 0\n", - "true_logZ = None\n", - "while num_poison_pills < num_workers:\n", - " output_data = output_queue.get()\n", - " if output_data is None:\n", - " num_poison_pills += 1\n", - " continue\n", - " (\n", - " (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ),\n", - " store_indices\n", - " ) = output_data\n", - " i, j, l = store_indices\n", - " run_time_array[i, j, l, :] = dt\n", - " log_Z_mean_array[i, j, l, :] = log_Z_mean\n", - " log_Z_uncert_array[i, j, l, :] = log_Z_uncert\n", - " num_likelihood_evals_array[i, j, l, :] = num_likelihood_evals\n", - " total_num_samples_array[i, j, l, :] = total_num_samples\n", - " total_num_phantom_samples_array[i, j, l, :] = total_phantom_samples\n", "\n", - "# Save the result arrays and axes into npz file\n", - "save_file = \"bias_experiment_results.npz\"\n", - "np.savez(\n", - " save_file,\n", - " run_time_array=np.asarray(run_time_array),\n", - " log_Z_mean_array=np.asarray(log_Z_mean_array),\n", - " log_Z_uncert_array=np.asarray(log_Z_uncert_array),\n", - " num_likelihood_evals_array=np.asarray(num_likelihood_evals_array),\n", - " total_num_samples_array=np.asarray(total_num_samples_array),\n", - " total_num_phantom_samples_array=np.asarray(total_num_phantom_samples_array),\n", - " s_array=np.asarray(s_array),\n", - " k_array=np.asarray(k_array),\n", - " c_array=np.asarray(c_array),\n", - " true_logZ=true_logZ\n", - ")" + "def color(c, unique_c):\n", + " return cm(plt.Normalize(np.min(unique_c), np.max(unique_c))(c))\n", + "\n" ] }, { @@ -313,45 +63,24 @@ "outputs": [], "source": [ "# Load results into arrays of same names\n", - "save_file = \"bias_experiment_results.npz\"\n", + "save_file = \"experiment_results.npz\"\n", "\n", "npzfile = np.load(save_file)\n", - "run_time_array = npzfile['run_time_array'].mean(-1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(\n", - " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "log_Z_uncert_array = np.sqrt(\n", - " np.sqrt(npzfile['log_Z_uncert_array']).mean(-1)) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(\n", - " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "total_num_samples_array = npzfile['total_num_samples_array'].mean(\n", - " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(\n", - " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "s_array = npzfile['s_array'] # (len(s_array),)\n", - "k_array = npzfile['k_array'] # (len(k_array),)\n", - "true_logZ = npzfile['true_logZ'] # ()\n", - "\n", - "# bias_array = np.mean(npzfile['log_Z_mean_array'] - true_logZ, axis=-1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "# rms_array = np.sqrt(np.mean(np.square(npzfile['log_Z_mean_array'] - true_logZ), axis=-1)) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "# bias_uncert_array = np.sqrt(rms_array**2 + np.mean(npzfile['log_Z_uncert_array']**2, axis=-1)) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "11cb95333adf8477", - "metadata": { - "collapsed": false, - "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.539594359Z" - } - }, - "outputs": [], - "source": [ - "sample_efficiency_array = (npzfile['total_num_samples_array'] / npzfile['num_likelihood_evals_array']).mean(\n", - " -1) # (len(s_array), len(k_array), m) -> (len(s_array), len(k_array))\n", - "run_time_speed_up_array = run_time_array[:, 0:1] / run_time_array # (len(s_array), len(k_array))\n", - "efficiency_improvement_array = sample_efficiency_array / sample_efficiency_array[:, 0:1] # (len(s_array), len(k_array))" + "run_time_array = npzfile['run_time_array'].mean(-1)\n", + "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(-1)\n", + "log_Z_uncert_array = np.sqrt(np.sqrt(npzfile['log_Z_uncert_array']).mean(-1))\n", + "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(-1)\n", + "total_num_samples_array = npzfile['total_num_samples_array'].mean(-1)\n", + "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(-1)\n", + "s_array = npzfile['s_array']\n", + "k_array = npzfile['k_array']\n", + "c_array = npzfile['c_array']\n", + "true_logZ = npzfile['true_logZ']\n", + "\n", + "\n", + "sample_efficiency_array = (npzfile['total_num_samples_array'] / npzfile['num_likelihood_evals_array']).mean(-1)\n", + "run_time_speed_up_array = run_time_array[:, 0:1] / run_time_array\n", + "efficiency_improvement_array = sample_efficiency_array / sample_efficiency_array[:, 0:1]\n" ] }, { @@ -379,13 +108,7 @@ }, "outputs": [], "source": [ - "import pylab as plt\n", - "\n", - "cm = plt.cm.get_cmap('PuOr')\n", - "\n", - "\n", - "def color(c, unique_c):\n", - " return cm(plt.Normalize(np.min(unique_c), np.max(unique_c))(c))\n" + "\n" ] }, { @@ -647,110 +370,26 @@ } }, "outputs": [], - "source": [ - "bias_array = []\n", - "rms_array = []\n", - "num_likelihood_evals_array = []\n", - "num_slice_factor_array = []\n", - "phantom_fraction_array = []\n", - "run_time_array = []\n", - "total_num_samples_array = []\n", - "total_num_phantom_samples_array = []\n", - "m = 100\n", - "num_slice_factor = 6\n", - "num_phantom_save_array = list(range(num_slice_factor)) + [num_slice_factor * i for i in range(1, ndims)] + [\n", - " num_slice_factor * ndims - 1]\n", - "for num_phantom_save in num_phantom_save_array:\n", - " samples_per_iter = (1 + num_phantom_save)\n", - " num_live_points_effective = ndims * 64 # lcm is not valid anymore.\n", - " num_live_points = int(num_live_points_effective / samples_per_iter) + 1\n", - "\n", - " nested_sampler = StandardStaticNestedSampler(\n", - " model=model,\n", - " num_live_points=num_live_points,\n", - " max_samples=100000,\n", - " sampler=UniDimSliceSampler(\n", - " model=model,\n", - " num_slices=model.U_ndims * num_slice_factor,\n", - " num_phantom_save=num_phantom_save,\n", - " midpoint_shrink=True,\n", - " perfect=True\n", - " ),\n", - " init_efficiency_threshold=0.1,\n", - " num_parallel_workers=1\n", - " )\n", - "\n", - "\n", - " @jax.jit\n", - " def run(key):\n", - " termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition())\n", - " results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False)\n", - " return results.log_Z_mean, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples\n", - "\n", - "\n", - " run_compiled = run.lower(random.PRNGKey(0)).compile()\n", - "\n", - " t0 = time.time()\n", - " results = []\n", - " for i in range(m):\n", - " results.append(run(random.PRNGKey(i)))\n", - "\n", - " print(f\"Time taken n={num_live_points} k={num_phantom_save}: {time.time() - t0}\")\n", - " log_Z, num_likelihood_evals, total_num_samples, total_phantom_samples = jnp.mean(jnp.asarray(results), axis=0)\n", - " run_time_array.append((time.time() - t0) / m)\n", - " bias_array.append(jnp.mean(jnp.asarray(log_Z) - true_logZ))\n", - " rms_array.append(jnp.sqrt(jnp.mean(jnp.square(jnp.asarray(log_Z) - true_logZ))))\n", - " num_likelihood_evals_array.append(jnp.mean(jnp.asarray(num_likelihood_evals)))\n", - " num_slice_factor_array.append(num_slice_factor)\n", - " phantom_fraction_array.append(num_phantom_save / samples_per_iter)\n", - " total_num_samples_array.append(total_num_samples)\n", - " total_num_phantom_samples_array.append(total_phantom_samples)\n", - "\n", - "# Save the results into npz file\n", - "save_file = \"bias_experiment_results_ablation.npz\"\n", - "np.savez(\n", - " save_file,\n", - " bias_array=np.asarray(bias_array),\n", - " rms_array=np.asarray(rms_array),\n", - " num_likelihood_evals_array=np.asarray(num_likelihood_evals_array),\n", - " num_slice_factor_array=np.asarray(num_slice_factor_array),\n", - " phantom_fraction_array=np.asarray(phantom_fraction_array),\n", - " run_time_array=np.asarray(run_time_array),\n", - " total_num_samples_array=np.asarray(total_num_samples_array),\n", - " total_num_phantom_samples_array=np.asarray(total_num_phantom_samples_array)\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "172cff74f38e06ed", - "metadata": { - "collapsed": false, - "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540155454Z" - } - }, - "outputs": [], "source": [ "# Load results into arrays of same names\n", - "save_file = \"bias_experiment_results_ablation.npz\"\n", + "save_file = \"ablation_results.npz\"\n", "\n", "npzfile = np.load(save_file)\n", - "bias_array = npzfile['bias_array']\n", - "rms_array = npzfile['rms_array']\n", - "num_likelihood_evals_array = npzfile['num_likelihood_evals_array']\n", - "num_slice_factor_array = npzfile['num_slice_factor_array']\n", - "phantom_fraction_array = npzfile['phantom_fraction_array']\n", - "run_time_array = npzfile['run_time_array']\n", - "total_num_samples_array = npzfile['total_num_samples_array']\n", - "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array']\n", - "\n", - "# log_Z_mean = bias_array + true_logZ\n", - "# new_log_Z_mean = -109.15\n", - "# bias_array = bias_array - (new_log_Z_mean - true_logZ)\n", - "# rms_array = jnp.sqrt(rms_array**2 - (true_logZ - log_Z_mean)**2 + (new_log_Z_mean - log_Z_mean)**2)\n", - "\n" + "run_time_array = npzfile['run_time_array'].mean(-1)\n", + "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(-1)\n", + "log_Z_uncert_array = np.sqrt(np.sqrt(npzfile['log_Z_uncert_array']).mean(-1))\n", + "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(-1)\n", + "total_num_samples_array = npzfile['total_num_samples_array'].mean(-1)\n", + "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(-1)\n", + "s_array = npzfile['s_array']\n", + "k_array = npzfile['k_array']\n", + "c_array = npzfile['c_array']\n", + "true_logZ = npzfile['true_logZ']\n", + "\n", + "\n", + "sample_efficiency_array = (npzfile['total_num_samples_array'] / npzfile['num_likelihood_evals_array']).mean(-1)\n", + "run_time_speed_up_array = run_time_array[:, 0:1] / run_time_array\n", + "efficiency_improvement_array = sample_efficiency_array / sample_efficiency_array[:, 0:1]\n" ] }, { @@ -765,23 +404,7 @@ }, "outputs": [], "source": [ - "# Plot bias with rms y error bars vs phantom fraction, colored by number of likelihood evals (with color bar not labels)\n", - "plt.figure()\n", - "colors = num_likelihood_evals_array\n", - "k = 1 / (1 / phantom_fraction_array - 1)\n", - "for _k, _b, _rms, _c in zip(k, bias_array, rms_array, colors):\n", - " plt.errorbar(_k, _b, yerr=_rms, fmt='o', c=color(_c, np.unique(colors)))\n", - "plt.xlabel(\"Num Phantom Samples Retained\")\n", - "plt.ylabel(\"Bias (nats)\")\n", - "plt.gca().axhline(0, color='k', linestyle='--')\n", - "plt.gca().axvline(model.U_ndims, color='r', linestyle='--')\n", - "# Create custom mappable for colorbar (errorbar() doesn't make a mappable like scatter)\n", - "sm = plt.cm.ScalarMappable(cmap=cm, norm=plt.Normalize(np.min(colors), np.max(colors)))\n", - "sm.set_array([])\n", - "plt.colorbar(sm, label=\"Num Likelihood Evaluations\", ax=plt.gca())\n", - "plt.savefig(\"bias_vs_phantom_fraction_ablation.png\", dpi=300)\n", - "plt.savefig(\"bias_vs_phantom_fraction_ablation.pdf\", dpi=300)\n", - "plt.show()" + "# Plot bias with rms y error bars vs phantom fraction, colored by number of likelihood evals (with color bar not labels)\n" ] }, { diff --git a/docs/papers/phantom-powered-nested-sampling/run_ablation.py b/docs/papers/phantom-powered-nested-sampling/run_ablation.py new file mode 100644 index 00000000..b3db623f --- /dev/null +++ b/docs/papers/phantom-powered-nested-sampling/run_ablation.py @@ -0,0 +1,182 @@ +import time + +import numpy as np + +try: + import ray + from ray.util.queue import Queue +except ImportError: + print("Install ray first with `pip install ray`") + raise + + +@ray.remote(num_cpus=1, num_gpus=0) +def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue): + from jax.config import config + config.update("jax_enable_x64", True) + from jaxns import Prior, Model + from jaxns import TerminationCondition + from jaxns.samplers import UniDimSliceSampler + from jaxns.nested_sampler import StandardStaticNestedSampler + import jax + from jax import random, numpy as jnp + import numpy as np + import tensorflow_probability.substrates.jax as tfp + tfpd = tfp.distributions + + prior_mu = jnp.zeros(ndims) + prior_cov = jnp.eye(ndims) + + data_mu = 15 * jnp.ones(ndims) + data_cov = jnp.eye(ndims) + data_cov = jnp.where(data_cov == 0., 0.99, data_cov) + + def prior_model(): + x = yield Prior( + tfpd.MultivariateNormalTriL( + loc=prior_mu, + scale_tril=jnp.linalg.cholesky(prior_cov) + ) + ) + return x + + def log_likelihood(x): + return tfpd.MultivariateNormalTriL( + loc=data_mu, + scale_tril=jnp.linalg.cholesky(data_cov) + ).log_prob(x) + + model = Model(prior_model=prior_model, log_likelihood=log_likelihood) + + true_logZ = tfpd.MultivariateNormalTriL( + loc=prior_mu, + scale_tril=jnp.linalg.cholesky(prior_cov + data_cov) + ).log_prob(data_mu) + + # not super happy with this being 1.58 and being off by like 0.1. Probably related to the ESS. + post_mu = prior_cov @ jnp.linalg.inv(prior_cov + data_cov) @ data_mu + data_cov @ jnp.linalg.inv( + prior_cov + data_cov) @ prior_mu + + print(f"True post mu:{post_mu}") + print(f"True log Z: {true_logZ}") + + while True: + input_data = input_queue.get() + if input_data is None: # poison pill + break + (s, k, c, store_indices) = input_data + nested_sampler = StandardStaticNestedSampler( + model=model, + num_live_points=c, + max_samples=100000, + sampler=UniDimSliceSampler( + model=model, + num_slices=model.U_ndims * s, + num_phantom_save=k, + midpoint_shrink=True, + perfect=True + ), + init_efficiency_threshold=0.1, + num_parallel_workers=1 + ) + + @jax.jit + def ns_run(key): + termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition()) + results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False) + return results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples + + run_compiled = ns_run.lower(random.PRNGKey(0)).compile() + + dt = [] + results = [] + for _ in range(ensemble_size): + t0 = time.time() + results.append(run_compiled(random.PRNGKey(i))) + results[-1][0].block_until_ready() + dt.append(time.time() - t0) + dt = np.asarray(dt) # [m] + print(f"Time taken s={s} k={k} c={c}: {sum(dt)}") + log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples = np.asarray( + results).T # [:, m] + output_data = ( + (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ), + store_indices) + output_queue.put(output_data) + # Poison pill + output_queue.put(None) + + +if __name__ == '__main__': + ray.init('auto') + save_file = "ablation_results.npz" + ndims = 8 + num_workers = 10 + ensemble_size = 100 + input_queue = Queue() + output_queue = Queue() + + s_array = np.asarray([7]) + k_array = np.sort(np.concatenate([np.arange(ndims + 1), np.arange(1, ndims + 1) * 7, np.asarray([7 * ndims - 1])])) + c_array = np.asarray([256]) * ndims + + Ns = len(s_array) + Nk = len(k_array) + Nc = len(c_array) + + log_Z_mean_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + log_Z_uncert_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + num_likelihood_evals_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + run_time_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + total_num_samples_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + total_num_phantom_samples_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + + for i, s in enumerate(s_array): + for j, k in enumerate(k_array): + for l, c in enumerate(c_array): + store_indices = (i, j, l) + input_data = (s, k, c, store_indices) + input_queue.put(input_data) + + # Poison pills + for _ in range(num_workers): + input_queue.put(None) + + workers = [] + for _ in range(num_workers): + workers.append(run.remote(ndims, ensemble_size, input_queue, output_queue)) + + num_poison_pills = 0 + true_logZ = None + while num_poison_pills < num_workers: + output_data = output_queue.get() + if output_data is None: + num_poison_pills += 1 + continue + ( + (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ), + store_indices + ) = output_data + i, j, l = store_indices + run_time_array[i, j, l, :] = dt + log_Z_mean_array[i, j, l, :] = log_Z_mean + log_Z_uncert_array[i, j, l, :] = log_Z_uncert + num_likelihood_evals_array[i, j, l, :] = num_likelihood_evals + total_num_samples_array[i, j, l, :] = total_num_samples + total_num_phantom_samples_array[i, j, l, :] = total_phantom_samples + + # Save the result arrays and axes into npz file + + np.savez( + save_file, + run_time_array=np.asarray(run_time_array), + log_Z_mean_array=np.asarray(log_Z_mean_array), + log_Z_uncert_array=np.asarray(log_Z_uncert_array), + num_likelihood_evals_array=np.asarray(num_likelihood_evals_array), + total_num_samples_array=np.asarray(total_num_samples_array), + total_num_phantom_samples_array=np.asarray(total_num_phantom_samples_array), + s_array=np.asarray(s_array), + k_array=np.asarray(k_array), + c_array=np.asarray(c_array), + true_logZ=true_logZ + ) diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py new file mode 100644 index 00000000..0f19fc6c --- /dev/null +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -0,0 +1,182 @@ +import time + +import numpy as np + +try: + import ray + from ray.util.queue import Queue +except ImportError: + print("Install ray first with `pip install ray`") + raise + + +@ray.remote(num_cpus=1, num_gpus=0) +def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue): + from jax.config import config + config.update("jax_enable_x64", True) + from jaxns import Prior, Model + from jaxns import TerminationCondition + from jaxns.samplers import UniDimSliceSampler + from jaxns.nested_sampler import StandardStaticNestedSampler + import jax + from jax import random, numpy as jnp + import numpy as np + import tensorflow_probability.substrates.jax as tfp + tfpd = tfp.distributions + + prior_mu = jnp.zeros(ndims) + prior_cov = jnp.eye(ndims) + + data_mu = 15 * jnp.ones(ndims) + data_cov = jnp.eye(ndims) + data_cov = jnp.where(data_cov == 0., 0.99, data_cov) + + def prior_model(): + x = yield Prior( + tfpd.MultivariateNormalTriL( + loc=prior_mu, + scale_tril=jnp.linalg.cholesky(prior_cov) + ) + ) + return x + + def log_likelihood(x): + return tfpd.MultivariateNormalTriL( + loc=data_mu, + scale_tril=jnp.linalg.cholesky(data_cov) + ).log_prob(x) + + model = Model(prior_model=prior_model, log_likelihood=log_likelihood) + + true_logZ = tfpd.MultivariateNormalTriL( + loc=prior_mu, + scale_tril=jnp.linalg.cholesky(prior_cov + data_cov) + ).log_prob(data_mu) + + # not super happy with this being 1.58 and being off by like 0.1. Probably related to the ESS. + post_mu = prior_cov @ jnp.linalg.inv(prior_cov + data_cov) @ data_mu + data_cov @ jnp.linalg.inv( + prior_cov + data_cov) @ prior_mu + + print(f"True post mu:{post_mu}") + print(f"True log Z: {true_logZ}") + + while True: + input_data = input_queue.get() + if input_data is None: # poison pill + break + (s, k, c, store_indices) = input_data + nested_sampler = StandardStaticNestedSampler( + model=model, + num_live_points=c, + max_samples=100000, + sampler=UniDimSliceSampler( + model=model, + num_slices=model.U_ndims * s, + num_phantom_save=k, + midpoint_shrink=True, + perfect=True + ), + init_efficiency_threshold=0.1, + num_parallel_workers=1 + ) + + @jax.jit + def ns_run(key): + termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition()) + results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False) + return results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples + + run_compiled = ns_run.lower(random.PRNGKey(0)).compile() + + dt = [] + results = [] + for _ in range(ensemble_size): + t0 = time.time() + results.append(run_compiled(random.PRNGKey(i))) + results[-1][0].block_until_ready() + dt.append(time.time() - t0) + dt = np.asarray(dt) # [m] + print(f"Time taken s={s} k={k} c={c}: {sum(dt)}") + log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples = np.asarray( + results).T # [:, m] + output_data = ( + (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ), + store_indices) + output_queue.put(output_data) + # Poison pill + output_queue.put(None) + + +if __name__ == '__main__': + ray.init('auto') + save_file = "experiment_results.npz" + ndims = 8 + num_workers = 10 + ensemble_size = 100 + input_queue = Queue() + output_queue = Queue() + + k_array = np.asarray([0, 1, 2, 3, 4, 5, 7]) + s_array = np.asarray([1, 2, 3, 4, 5, 6, 7]) + c_array = np.asarray([16, 32, 64, 128, 256]) * ndims + + Ns = len(s_array) + Nk = len(k_array) + Nc = len(c_array) + + log_Z_mean_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + log_Z_uncert_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + num_likelihood_evals_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + run_time_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + total_num_samples_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + total_num_phantom_samples_array = np.zeros((Ns, Nk, Nc, ensemble_size)) + + for i, s in enumerate(s_array): + for j, k in enumerate(k_array): + for l, c in enumerate(c_array): + store_indices = (i, j, l) + input_data = (s, k, c, store_indices) + input_queue.put(input_data) + + # Poison pills + for _ in range(num_workers): + input_queue.put(None) + + workers = [] + for _ in range(num_workers): + workers.append(run.remote(ndims, ensemble_size, input_queue, output_queue)) + + num_poison_pills = 0 + true_logZ = None + while num_poison_pills < num_workers: + output_data = output_queue.get() + if output_data is None: + num_poison_pills += 1 + continue + ( + (dt, log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples, true_logZ), + store_indices + ) = output_data + i, j, l = store_indices + run_time_array[i, j, l, :] = dt + log_Z_mean_array[i, j, l, :] = log_Z_mean + log_Z_uncert_array[i, j, l, :] = log_Z_uncert + num_likelihood_evals_array[i, j, l, :] = num_likelihood_evals + total_num_samples_array[i, j, l, :] = total_num_samples + total_num_phantom_samples_array[i, j, l, :] = total_phantom_samples + + # Save the result arrays and axes into npz file + + np.savez( + save_file, + run_time_array=np.asarray(run_time_array), + log_Z_mean_array=np.asarray(log_Z_mean_array), + log_Z_uncert_array=np.asarray(log_Z_uncert_array), + num_likelihood_evals_array=np.asarray(num_likelihood_evals_array), + total_num_samples_array=np.asarray(total_num_samples_array), + total_num_phantom_samples_array=np.asarray(total_num_phantom_samples_array), + s_array=np.asarray(s_array), + k_array=np.asarray(k_array), + c_array=np.asarray(c_array), + true_logZ=true_logZ + ) From 26978127b2afcb7be918304e8115ef8006af5573 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Wed, 13 Dec 2023 12:38:40 +0100 Subject: [PATCH 03/17] * Speed up by removing all-gather for copies, only final contour standardisation. --- jaxns/nested_sampler/standard_static.py | 34 ++++++++++++------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/jaxns/nested_sampler/standard_static.py b/jaxns/nested_sampler/standard_static.py index fce3284c..56808657 100644 --- a/jaxns/nested_sampler/standard_static.py +++ b/jaxns/nested_sampler/standard_static.py @@ -33,7 +33,7 @@ def _inter_sync_shrinkage_process( sampler: BaseAbstractSampler, num_samples: int) -> StaticStandardNestedSamplerState: """ - Run nested sampling to replace an entire live point reservoir via shrinkage. + Run nested sampling until `num_samples` samples are collected. Args: init_state: the state of the nested sampler at the start @@ -41,13 +41,15 @@ def _inter_sync_shrinkage_process( num_samples: number of samples to take, i.e. work to do Returns: - dead point reservoir, live points, the final log-L contour of live points + sampler state with samples added """ class CarryType(NamedTuple): state: StaticStandardNestedSamplerState sampler_state: SamplerState + # TODO(Joshuaalbert): Could make much faster by passing just the front, rather than whole state. Would need to + # recombine later, and handle sender_idx correctly. def body(carry: CarryType, unused_X: IntArray) -> Tuple[CarryType, Any]: state = carry.state @@ -139,10 +141,8 @@ def _single_thread_ns(init_state: StaticStandardNestedSamplerState, sampler: BaseAbstractSampler, num_samples_per_sync: int) -> StaticStandardNestedSamplerState: """ - Runs a single thread of static nested sampling, using all-gather to compute stopping after each live-point - set shrinkage, which is approximately equivalent to one e-fold decrease in enclosed prior volume. This - continues until a stopping condition is reached. Due to the all-gather this stopping condition is based on - all the data across all devices, and is the same on all devices. + Runs a single thread of static nested sampling until a stopping condition is reached. Runs `num_samples_per_sync` + between updating samples to limit memory ops. Args: init_state: the state of the nested sampler at the start @@ -167,13 +167,7 @@ class CarryType(NamedTuple): state: StaticStandardNestedSamplerState def cond(carry: CarryType) -> BoolArray: - # Synchronise - batched_all_state: StaticStandardNestedSamplerState = parallel.all_gather(carry.state, 'i') - all_state = unbatch_state(batched_state=batched_all_state) - - # Use synchronised state to determine termination ==> same stopping time on all devices - done, termination_reason = compute_termination(state=all_state, termination_cond=termination_cond) - + done, termination_reason = compute_termination(state=carry.state, termination_cond=termination_cond) return jnp.bitwise_not(done) def body(carry: CarryType) -> CarryType: @@ -640,7 +634,7 @@ def thread(key: PRNGKey) -> StaticStandardNestedSamplerState: num_samples_per_sync=self.num_live_points ) - # Continue sampling with provided sampler until user-defined termination condition is met + # Continue sampling with provided sampler until user-defined termination condition is met. state = _single_thread_ns( init_state=state, termination_cond=term_cond, @@ -666,11 +660,15 @@ def thread(key: PRNGKey) -> StaticStandardNestedSamplerState: return state - parallel_ns = pmap(thread, axis_name='i') + if self.num_parallel_workers > 1: + parallel_ns = pmap(thread, axis_name='i') + + keys = random.split(key, self.num_parallel_workers) + batched_state = parallel_ns(keys) + state = unbatch_state(batched_state=batched_state) + else: + state = thread(key) - keys = random.split(key, self.num_parallel_workers) - batched_state = parallel_ns(keys) - state = unbatch_state(batched_state=batched_state) _, termination_reason = compute_termination(state=state, termination_cond=term_cond) return termination_reason, state From ae9fc60870d356150e6e791dc97ea3a5bc2a9f30 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Wed, 13 Dec 2023 12:38:56 +0100 Subject: [PATCH 04/17] * Fix round off error in likelihood counts --- jaxns/samplers/uni_slice_sampler.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/jaxns/samplers/uni_slice_sampler.py b/jaxns/samplers/uni_slice_sampler.py index 39e79aa4..134f5a6b 100644 --- a/jaxns/samplers/uni_slice_sampler.py +++ b/jaxns/samplers/uni_slice_sampler.py @@ -4,11 +4,12 @@ from jax import numpy as jnp, random, lax, tree_map from jaxns.framework.bases import BaseAbstractModel -from jaxns.samplers.abc import SamplerState -from jaxns.samplers.bases import SeedPoint, BaseAbstractMarkovSampler from jaxns.internals.shrinkage_statistics import _cumulative_op_static -from jaxns.internals.types import PRNGKey, FloatArray, BoolArray, Sample, float_type, int_type, StaticStandardNestedSamplerState, \ +from jaxns.internals.types import PRNGKey, FloatArray, BoolArray, Sample, float_type, int_type, \ + StaticStandardNestedSamplerState, \ IntArray, UType +from jaxns.samplers.abc import SamplerState +from jaxns.samplers.bases import SeedPoint, BaseAbstractMarkovSampler __all__ = [ 'UniDimSliceSampler' @@ -331,14 +332,19 @@ def propose_op(sample: Sample, key: PRNGKey) -> Sample: # Due to the cumulative nature of the sampler, the final number of likelihood evaluations should be divided # equally among the accepted sample and retained phantom samples. - num_likelihood_evaluations_per_sample = final_sample.num_likelihood_evaluations / (self.num_phantom_save + 1) + num_likelihood_evaluations_per_phantom_sample = ( + final_sample.num_likelihood_evaluations / (self.num_phantom_save + 1) + ).astype(int_type) + num_likelihood_evaluations_per_accepted_sample = ( + final_sample.num_likelihood_evaluations - num_likelihood_evaluations_per_phantom_sample * self.num_phantom_save + ) final_sample = final_sample._replace( - num_likelihood_evaluations=num_likelihood_evaluations_per_sample + num_likelihood_evaluations=num_likelihood_evaluations_per_accepted_sample ) phantom_samples = phantom_samples._replace( num_likelihood_evaluations=jnp.full( phantom_samples.num_likelihood_evaluations.shape, - num_likelihood_evaluations_per_sample, + num_likelihood_evaluations_per_phantom_sample, phantom_samples.num_likelihood_evaluations.dtype ) ) From 44ce27358f91962707bd6bd4523f9a93149dd602 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Wed, 13 Dec 2023 14:34:06 +0100 Subject: [PATCH 05/17] * Update experiments --- README.md | 29 +++++++++++--- .../run_ablation.py | 36 ++++++++++------- .../run_experiment.py | 40 +++++++++++-------- 3 files changed, 68 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index bf751970..8f5df5a2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ [![PyPI](https://badge.fury.io/py/jaxns.svg)](https://badge.fury.io/py/jaxns) [![Documentation Status](https://readthedocs.org/projects/jaxns/badge/?version=latest)](https://jaxns.readthedocs.io/en/latest/?badge=latest) - Main Status: ![Workflow name](https://github.com/JoshuaAlbert/jaxns/actions/workflows/unittests.yml/badge.svg?branch=main) @@ -83,10 +82,29 @@ If you're unfamiliar, take a quick tour of JAX (https://jax.readthedocs.io/en/la JAXNS is really fast because it uses JAX. JAXNS is much faster than PolyChord, MultiNEST, and dynesty, typically achieving two to three orders of magnitude -improvement in speed on cheap likelihood evaluations. -This is shown in (https://arxiv.org/abs/2012.15286). With regards to how efficiently JAXNS used likelihood evaluations, -JAXNS prizes exactness over efficiency, however since it employs an adaptive strategy, users can control efficiency by -controlling some precision parameters. +improvement in run time, for models with cheap likelihood evaluations. +This is shown in (https://arxiv.org/abs/2012.15286). + +Recently JAXNS has implemented Phantom-Powered Nested Sampling, which significantly reduces the number of required +likelihood evaluations. This is shown in (https://arxiv.org/abs/). + +# Note on performance with parallelisation + +__Note, that this is an experimental feature.__ + +If you set `num_parallel_workers > 1` you will use `jax.pmap` under the hood for parallelisation. +This is a very powerful feature, but it is important to understand how it works. +It runs identical copies of the nested sampling algorithm on multiple devices. +There is a two-part stopping condition. +First, each copy goes until the user defined stopping condition is met __per device__. +Then, it performs an all-gather and finds at the highest likelihood contour among all copies, and continues all copies +hit this likelihood contour. +This ensures consistency of depth across all copies. +We then merge the copies and compute the final results. + +The algorithm is fairly memory bound, so running parallelisation over multiple CPUs on the same machine may not yield +the expected speed up, and depends how expensive the likelihood evaluations are. Running over separate physical devices +is the best way to achieve speed up. # Change Log @@ -139,7 +157,6 @@ released. 1 January, 2021 -- Paper submitted - ## Star History diff --git a/docs/papers/phantom-powered-nested-sampling/run_ablation.py b/docs/papers/phantom-powered-nested-sampling/run_ablation.py index b3db623f..d941a624 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_ablation.py +++ b/docs/papers/phantom-powered-nested-sampling/run_ablation.py @@ -1,3 +1,4 @@ +import os import time import numpy as np @@ -12,10 +13,13 @@ @ray.remote(num_cpus=1, num_gpus=0) def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue): - from jax.config import config - config.update("jax_enable_x64", True) + # from jax.config import config + # config.update("jax_enable_x64", True) + from jaxns import Prior, Model from jaxns import TerminationCondition + from jaxns import summary + from jaxns import plot_diagnostics from jaxns.samplers import UniDimSliceSampler from jaxns.nested_sampler import StandardStaticNestedSampler import jax @@ -53,7 +57,6 @@ def log_likelihood(x): scale_tril=jnp.linalg.cholesky(prior_cov + data_cov) ).log_prob(data_mu) - # not super happy with this being 1.58 and being off by like 0.1. Probably related to the ESS. post_mu = prior_cov @ jnp.linalg.inv(prior_cov + data_cov) @ data_mu + data_cov @ jnp.linalg.inv( prior_cov + data_cov) @ prior_mu @@ -65,10 +68,11 @@ def log_likelihood(x): if input_data is None: # poison pill break (s, k, c, store_indices) = input_data + nested_sampler = StandardStaticNestedSampler( model=model, num_live_points=c, - max_samples=100000, + max_samples=150000, sampler=UniDimSliceSampler( model=model, num_slices=model.U_ndims * s, @@ -80,21 +84,24 @@ def log_likelihood(x): num_parallel_workers=1 ) - @jax.jit def ns_run(key): termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition()) results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False) - return results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples - - run_compiled = ns_run.lower(random.PRNGKey(0)).compile() + # summary(results) + # plot_diagnostics(results) + return (results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, + results.total_num_samples, results.total_phantom_samples) + run_compiled = jax.jit(ns_run).lower(random.PRNGKey(0)).compile() dt = [] results = [] - for _ in range(ensemble_size): + print(f"Running s={s} k={k} c={c}") + for i in range(ensemble_size): t0 = time.time() results.append(run_compiled(random.PRNGKey(i))) results[-1][0].block_until_ready() dt.append(time.time() - t0) + print(dt[-1]) dt = np.asarray(dt) # [m] print(f"Time taken s={s} k={k} c={c}: {sum(dt)}") log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples = np.asarray( @@ -106,19 +113,18 @@ def ns_run(key): # Poison pill output_queue.put(None) - if __name__ == '__main__': ray.init('auto') save_file = "ablation_results.npz" ndims = 8 - num_workers = 10 - ensemble_size = 100 + num_workers = 2 + ensemble_size = 30 input_queue = Queue() output_queue = Queue() - s_array = np.asarray([7]) - k_array = np.sort(np.concatenate([np.arange(ndims + 1), np.arange(1, ndims + 1) * 7, np.asarray([7 * ndims - 1])])) - c_array = np.asarray([256]) * ndims + s_array = np.asarray([6]) + k_array = np.asarray(list(range(ndims)) + list(range(ndims, ndims * 6, ndims)) + [6 * ndims - 1]) + c_array = np.asarray([40]) * ndims Ns = len(s_array) Nk = len(k_array) diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py index 0f19fc6c..cb8c14bd 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_experiment.py +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -1,3 +1,4 @@ +import os import time import numpy as np @@ -12,10 +13,13 @@ @ray.remote(num_cpus=1, num_gpus=0) def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue): - from jax.config import config - config.update("jax_enable_x64", True) + # from jax.config import config + # config.update("jax_enable_x64", True) + from jaxns import Prior, Model from jaxns import TerminationCondition + from jaxns import summary + from jaxns import plot_diagnostics from jaxns.samplers import UniDimSliceSampler from jaxns.nested_sampler import StandardStaticNestedSampler import jax @@ -53,7 +57,6 @@ def log_likelihood(x): scale_tril=jnp.linalg.cholesky(prior_cov + data_cov) ).log_prob(data_mu) - # not super happy with this being 1.58 and being off by like 0.1. Probably related to the ESS. post_mu = prior_cov @ jnp.linalg.inv(prior_cov + data_cov) @ data_mu + data_cov @ jnp.linalg.inv( prior_cov + data_cov) @ prior_mu @@ -65,10 +68,11 @@ def log_likelihood(x): if input_data is None: # poison pill break (s, k, c, store_indices) = input_data + nested_sampler = StandardStaticNestedSampler( model=model, num_live_points=c, - max_samples=100000, + max_samples=500000, sampler=UniDimSliceSampler( model=model, num_slices=model.U_ndims * s, @@ -80,21 +84,24 @@ def log_likelihood(x): num_parallel_workers=1 ) - @jax.jit def ns_run(key): termination_reason, state = nested_sampler._run(key=key, term_cond=TerminationCondition()) results = nested_sampler._to_results(termination_reason=termination_reason, state=state, trim=False) - return results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, results.total_num_samples, results.total_phantom_samples - - run_compiled = ns_run.lower(random.PRNGKey(0)).compile() + # summary(results) + # plot_diagnostics(results) + return (results.log_Z_mean, results.log_Z_uncert, results.total_num_likelihood_evaluations, + results.total_num_samples, results.total_phantom_samples) + run_compiled = jax.jit(ns_run).lower(random.PRNGKey(0)).compile() dt = [] results = [] - for _ in range(ensemble_size): + print(f"Running s={s} k={k} c={c}") + for i in range(ensemble_size): t0 = time.time() results.append(run_compiled(random.PRNGKey(i))) results[-1][0].block_until_ready() dt.append(time.time() - t0) + print(dt[-1]) dt = np.asarray(dt) # [m] print(f"Time taken s={s} k={k} c={c}: {sum(dt)}") log_Z_mean, log_Z_uncert, num_likelihood_evals, total_num_samples, total_phantom_samples = np.asarray( @@ -108,17 +115,18 @@ def ns_run(key): if __name__ == '__main__': + ray.init('auto') - save_file = "experiment_results.npz" - ndims = 8 - num_workers = 10 - ensemble_size = 100 + save_file = "experiment_results_16D.npz" + ndims = 16 + num_workers = 2 + ensemble_size = 30 input_queue = Queue() output_queue = Queue() - k_array = np.asarray([0, 1, 2, 3, 4, 5, 7]) - s_array = np.asarray([1, 2, 3, 4, 5, 6, 7]) - c_array = np.asarray([16, 32, 64, 128, 256]) * ndims + k_array = np.asarray([0, 1, 2, 3, 4, 5]) + s_array = np.asarray([1, 2, 3, 4, 5, 6]) + c_array = np.asarray([10, 20, 30, 40]) * ndims Ns = len(s_array) Nk = len(k_array) From 3d2985f09af48af64a90bea4fd735c62d88950ed Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Wed, 13 Dec 2023 16:40:28 +0100 Subject: [PATCH 06/17] * Update key to be different per s,k,c --- .../papers/phantom-powered-nested-sampling/run_experiment.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py index cb8c14bd..b2c56bcb 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_experiment.py +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -97,8 +97,9 @@ def ns_run(key): results = [] print(f"Running s={s} k={k} c={c}") for i in range(ensemble_size): + key = 2**i * 3**c * 5**k * 7**s t0 = time.time() - results.append(run_compiled(random.PRNGKey(i))) + results.append(run_compiled(random.PRNGKey(key))) results[-1][0].block_until_ready() dt.append(time.time() - t0) print(dt[-1]) @@ -117,8 +118,8 @@ def ns_run(key): if __name__ == '__main__': ray.init('auto') - save_file = "experiment_results_16D.npz" ndims = 16 + save_file = f"experiment_results_{ndims}D.npz" num_workers = 2 ensemble_size = 30 input_queue = Queue() From 4a234c2f1841641c894a8f0bc02b49a4fc137c93 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Wed, 13 Dec 2023 16:47:21 +0100 Subject: [PATCH 07/17] * Fix overflow --- .../phantom-powered-nested-sampling/run_experiment.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py index b2c56bcb..0368ae22 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_experiment.py +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -97,7 +97,12 @@ def ns_run(key): results = [] print(f"Running s={s} k={k} c={c}") for i in range(ensemble_size): - key = 2**i * 3**c * 5**k * 7**s + modulus = 2 ** 32 - 1 + key = 1 + key = (key * pow(2, i, modulus)) % modulus + key = (key * pow(3, c, modulus)) % modulus + key = (key * pow(5, k, modulus)) % modulus + key = (key * pow(7, s, modulus)) % modulus t0 = time.time() results.append(run_compiled(random.PRNGKey(key))) results[-1][0].block_until_ready() From ce1179159cd9c964a8c97bd00fe7f08471144cd1 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Thu, 14 Dec 2023 00:29:14 +0100 Subject: [PATCH 08/17] * Don't use Ray to distribute work... It's too slow. --- .../run_ablation.py | 19 ++++++------------- .../run_experiment.py | 18 +++++------------- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/docs/papers/phantom-powered-nested-sampling/run_ablation.py b/docs/papers/phantom-powered-nested-sampling/run_ablation.py index d941a624..270391a1 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_ablation.py +++ b/docs/papers/phantom-powered-nested-sampling/run_ablation.py @@ -1,25 +1,16 @@ -import os +import threading import time +from queue import Queue import numpy as np -try: - import ray - from ray.util.queue import Queue -except ImportError: - print("Install ray first with `pip install ray`") - raise - -@ray.remote(num_cpus=1, num_gpus=0) def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue): # from jax.config import config # config.update("jax_enable_x64", True) from jaxns import Prior, Model from jaxns import TerminationCondition - from jaxns import summary - from jaxns import plot_diagnostics from jaxns.samplers import UniDimSliceSampler from jaxns.nested_sampler import StandardStaticNestedSampler import jax @@ -113,8 +104,8 @@ def ns_run(key): # Poison pill output_queue.put(None) + if __name__ == '__main__': - ray.init('auto') save_file = "ablation_results.npz" ndims = 8 num_workers = 2 @@ -150,7 +141,9 @@ def ns_run(key): workers = [] for _ in range(num_workers): - workers.append(run.remote(ndims, ensemble_size, input_queue, output_queue)) + worker = threading.Thread(target=run, args=(ndims, ensemble_size, input_queue, output_queue)) + worker.start() + workers.append(worker) num_poison_pills = 0 true_logZ = None diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py index 0368ae22..49659778 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_experiment.py +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -1,25 +1,16 @@ -import os +import threading import time +from queue import Queue import numpy as np -try: - import ray - from ray.util.queue import Queue -except ImportError: - print("Install ray first with `pip install ray`") - raise - -@ray.remote(num_cpus=1, num_gpus=0) def run(ndims, ensemble_size, input_queue: Queue, output_queue: Queue): # from jax.config import config # config.update("jax_enable_x64", True) from jaxns import Prior, Model from jaxns import TerminationCondition - from jaxns import summary - from jaxns import plot_diagnostics from jaxns.samplers import UniDimSliceSampler from jaxns.nested_sampler import StandardStaticNestedSampler import jax @@ -122,7 +113,6 @@ def ns_run(key): if __name__ == '__main__': - ray.init('auto') ndims = 16 save_file = f"experiment_results_{ndims}D.npz" num_workers = 2 @@ -158,7 +148,9 @@ def ns_run(key): workers = [] for _ in range(num_workers): - workers.append(run.remote(ndims, ensemble_size, input_queue, output_queue)) + worker_thread = threading.Thread(target=run, args=(ndims, ensemble_size, input_queue, output_queue)) + worker_thread.start() + workers.append(worker_thread) num_poison_pills = 0 true_logZ = None From 0e342cc536f5719189d2fe3a8b1e29dcee180fcc Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Thu, 14 Dec 2023 00:34:30 +0100 Subject: [PATCH 09/17] * fix key mod --- .../phantom-powered-nested-sampling/run_experiment.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py index 49659778..51bd88f3 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_experiment.py +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -90,10 +90,10 @@ def ns_run(key): for i in range(ensemble_size): modulus = 2 ** 32 - 1 key = 1 - key = (key * pow(2, i, modulus)) % modulus - key = (key * pow(3, c, modulus)) % modulus - key = (key * pow(5, k, modulus)) % modulus - key = (key * pow(7, s, modulus)) % modulus + key = (key * pow(2, int(i), modulus)) % modulus + key = (key * pow(3, int(c), modulus)) % modulus + key = (key * pow(5, int(k), modulus)) % modulus + key = (key * pow(7, int(s), modulus)) % modulus t0 = time.time() results.append(run_compiled(random.PRNGKey(key))) results[-1][0].block_until_ready() @@ -113,7 +113,7 @@ def ns_run(key): if __name__ == '__main__': - ndims = 16 + ndims = 8 save_file = f"experiment_results_{ndims}D.npz" num_workers = 2 ensemble_size = 30 From 4aee59850ebc4856212d3164c4da797e3944d72a Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Thu, 14 Dec 2023 00:39:59 +0100 Subject: [PATCH 10/17] * Add thread joins --- .../phantom-powered-nested-sampling/run_ablation.py | 11 ++++++++++- .../phantom-powered-nested-sampling/run_experiment.py | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/papers/phantom-powered-nested-sampling/run_ablation.py b/docs/papers/phantom-powered-nested-sampling/run_ablation.py index 270391a1..e8955256 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_ablation.py +++ b/docs/papers/phantom-powered-nested-sampling/run_ablation.py @@ -88,8 +88,14 @@ def ns_run(key): results = [] print(f"Running s={s} k={k} c={c}") for i in range(ensemble_size): + modulus = 2 ** 32 - 1 + key = 1 + key = (key * pow(2, int(i), modulus)) % modulus + key = (key * pow(3, int(c), modulus)) % modulus + key = (key * pow(5, int(k), modulus)) % modulus + key = (key * pow(7, int(s), modulus)) % modulus t0 = time.time() - results.append(run_compiled(random.PRNGKey(i))) + results.append(run_compiled(random.PRNGKey(key))) results[-1][0].block_until_ready() dt.append(time.time() - t0) print(dt[-1]) @@ -179,3 +185,6 @@ def ns_run(key): c_array=np.asarray(c_array), true_logZ=true_logZ ) + + for worker in workers: + worker.join() diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py index 51bd88f3..e782b036 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_experiment.py +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -186,3 +186,6 @@ def ns_run(key): c_array=np.asarray(c_array), true_logZ=true_logZ ) + + for worker in workers: + worker.join() From b82f09e290e4350c5a4d6d789e8cbe5e0076541b Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Mon, 18 Dec 2023 17:45:52 +0100 Subject: [PATCH 11/17] * Paper results --- .../ablation_results_8D.npz | Bin 0 -> 69990 bytes .../experiment_results_16D.npz | Bin 0 -> 693990 bytes .../experiment_results_8D.npz | Bin 0 -> 693990 bytes .../phantom_bias_tradeoff.ipynb | 771 ++++++++++++------ .../run_ablation.py | 4 +- .../run_experiment.py | 2 +- 6 files changed, 547 insertions(+), 230 deletions(-) create mode 100644 docs/papers/phantom-powered-nested-sampling/ablation_results_8D.npz create mode 100644 docs/papers/phantom-powered-nested-sampling/experiment_results_16D.npz create mode 100644 docs/papers/phantom-powered-nested-sampling/experiment_results_8D.npz diff --git a/docs/papers/phantom-powered-nested-sampling/ablation_results_8D.npz b/docs/papers/phantom-powered-nested-sampling/ablation_results_8D.npz new file mode 100644 index 0000000000000000000000000000000000000000..3a706d58e8032d97f0d15d40049128de299a92fe GIT binary patch literal 69990 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 literal 0 HcmV?d00001 diff --git a/docs/papers/phantom-powered-nested-sampling/experiment_results_16D.npz b/docs/papers/phantom-powered-nested-sampling/experiment_results_16D.npz new file mode 100644 index 0000000000000000000000000000000000000000..acf051e39850e5d427e35e6603c3818b7f3475e3 GIT binary patch literal 693990 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 B+fo1k literal 0 HcmV?d00001 diff --git a/docs/papers/phantom-powered-nested-sampling/experiment_results_8D.npz b/docs/papers/phantom-powered-nested-sampling/experiment_results_8D.npz new file mode 100644 index 0000000000000000000000000000000000000000..0b0549d16be30e6730a7d704fd88ef9a7ef4fb34 GIT binary patch literal 693990 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 P;)UO-|MKo@FR=eVna9c0 literal 0 HcmV?d00001 diff --git a/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb b/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb index 88cde637..1d0f8f40 100644 --- a/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb +++ b/docs/papers/phantom-powered-nested-sampling/phantom_bias_tradeoff.ipynb @@ -6,88 +6,105 @@ "id": "4a0e405b3a5beae1", "metadata": { "ExecuteTime": { - "end_time": "2023-12-12T10:05:53.846446139Z", - "start_time": "2023-12-12T10:05:52.615542858Z" + "start_time": "2023-12-18T16:43:35.432741343Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-12-12 11:05:53,023\tINFO worker.py:1489 -- Connecting to existing Ray cluster at address: 192.168.178.154:6379...\n", - "2023-12-12 11:05:53,032\tINFO worker.py:1664 -- Connected to Ray cluster. View the dashboard at \u001B[1m\u001B[32mhttp://127.0.0.1:8265 \u001B[39m\u001B[22m\n" - ] - }, - { - "data": { - "text/plain": "RayContext(dashboard_url='127.0.0.1:8265', python_version='3.11.5', ray_version='2.8.1', ray_commit='82a8df138fe7fcc5c42536ebf26e8c3665704fee', protocol_version=None)", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "d4e70014ce1749d2a2475a4c72f3c9cb" - }, - "text/html": "

\n" - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "import time\n", "\n", + "\n", + "\n", + "import matplotlib.colors as mcolors\n", + "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", - "import pylab as plt\n", "\n", - "cm = plt.cm.get_cmap('PuOr')\n", + "def create_stretched_colormap(cmap, levels):\n", + " \"\"\"\n", + " Create a stretched colormap.\n", + "\n", + " cmap: Original colormap instance\n", + " levels: List or array of levels where the colormap should be stretched\n", + " \"\"\"\n", + " # Normalize the levels to the range [0, 1]\n", + " levels = np.array(levels)\n", + " norm_levels = (levels - levels.min()) / (levels.max() - levels.min())\n", + "\n", + " # Create a new colormap using LinearSegmentedColormap\n", + " cdict = {'red': [], 'green': [], 'blue': []}\n", + "\n", + " for i, level in enumerate(norm_levels):\n", + " r, g, b, _ = cmap(level)\n", + " cdict['red'].append((level, r, r))\n", + " cdict['green'].append((level, g, g))\n", + " cdict['blue'].append((level, b, b))\n", + "\n", + " return mcolors.LinearSegmentedColormap('StretchedCMap', cdict)\n", "\n", "\n", "def color(c, unique_c):\n", - " return cm(plt.Normalize(np.min(unique_c), np.max(unique_c))(c))\n", - "\n" + " cm = plt.cm.get_cmap('PuOr')\n", + " return cm(plt.Normalize(np.min(unique_c), np.max(unique_c))(c))\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "c710500be5f5b973", "metadata": { - "collapsed": false, "ExecuteTime": { - "end_time": "2023-12-12T09:40:31.541246181Z", - "start_time": "2023-12-12T09:40:31.539470418Z" + "start_time": "2023-12-18T16:43:35.432794117Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, "outputs": [], "source": [ "# Load results into arrays of same names\n", - "save_file = \"experiment_results.npz\"\n", + "ndims = 8\n", + "save_file = f\"experiment_results_{ndims}D.npz\"\n", "\n", "npzfile = np.load(save_file)\n", - "run_time_array = npzfile['run_time_array'].mean(-1)\n", - "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(-1)\n", - "log_Z_uncert_array = np.sqrt(np.sqrt(npzfile['log_Z_uncert_array']).mean(-1))\n", - "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(-1)\n", - "total_num_samples_array = npzfile['total_num_samples_array'].mean(-1)\n", - "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(-1)\n", + "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(-1) # (num_s, num_k, num_c)\n", + "log_Z_uncert_array = npzfile['log_Z_uncert_array'].mean(-1) # (num_s, num_k, num_c)\n", + "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(-1) # (num_s, num_k, num_c)\n", + "total_num_samples_array = npzfile['total_num_samples_array'].mean(-1) # (num_s, num_k, num_c)\n", + "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(-1) # (num_s, num_k, num_c)\n", "s_array = npzfile['s_array']\n", "k_array = npzfile['k_array']\n", "c_array = npzfile['c_array']\n", - "true_logZ = npzfile['true_logZ']\n", "\n", + "num_s, num_k, num_c, ensemble_size = npzfile['log_Z_mean_array'].shape\n", + "\n", + "# Sample log_Z to propagate uncertainty into ensemble averages\n", + "num_samples = 1000\n", + "log_Z_samples = npzfile['log_Z_mean_array'][..., None] + npzfile['log_Z_uncert_array'][..., None] * np.random.normal(\n", + " size=(num_samples,)) # (num_s, num_k, num_c, ensemble_size, num_samples)\n", + "log_Z_samples = np.reshape(log_Z_samples, (\n", + "num_s, num_k, num_c, ensemble_size * num_samples)) # (num_s, num_k, num_c, ensemble_size * num_samples)\n", "\n", - "sample_efficiency_array = (npzfile['total_num_samples_array'] / npzfile['num_likelihood_evals_array']).mean(-1)\n", - "run_time_speed_up_array = run_time_array[:, 0:1] / run_time_array\n", - "efficiency_improvement_array = sample_efficiency_array / sample_efficiency_array[:, 0:1]\n" + "# Determine bias relative to asymptote at s=s_max, c=c_max, and k=0 (standard nested sampling)\n", + "log_Z_asymptote = np.mean(log_Z_samples[-1, 0, -1, :]) # (ensemble_size*num_samples)\n", + "bias_samples = log_Z_samples - log_Z_asymptote # (num_s, num_k, num_c, ensemble_size*num_samples)\n", + "bias = np.mean(bias_samples, axis=-1) # (num_s, num_k, num_c)\n", + "bias_uncert = np.std(bias_samples, axis=-1) # (num_s, num_k, num_c)\n", + "\n", + "# Determine efficiency improvement relative to standard nested sampling (k=0)\n", + "sample_efficiency_array = (npzfile['total_num_samples_array'] / npzfile['num_likelihood_evals_array']).mean(\n", + " -1) # (num_s, num_k, num_c)\n", + "efficiency_improvement_array = sample_efficiency_array / sample_efficiency_array[:, 0:1, :] # (num_s, num_k, num_c)\n" ] }, { "cell_type": "markdown", "id": "b5dfdc0711ef0b55", "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "source": [ "# After a threshold number of slices, the bias is independent of the number of phantom samples\n", @@ -98,166 +115,361 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "5a748191c0d7db5f", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.539655976Z" + "start_time": "2023-12-18T16:43:35.432850981Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_104572/1306734269.py:30: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n", + " cm = plt.cm.get_cmap('PuOr')\n" + ] + }, + { + "data": { + "image/png": "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yMSYTCEklUrRvXt3pKamqvYplUqkpqaqtfpoolAocP78efj6+uorTSIi/VHcr/s5EWnNpLrGEhMTERcXh/DwcPTs2ROrV69GeXm5ahbZ+PHj0aJFCyQnJwMA3n//ffTq1QtBQUG4e/cuPvjgA2RnZ+Mf//iHMd8GERGRxVMoBBz9a0X6CIVgtDxMqhAaO3YsiouLsXDhQhQUFKBLly5ISUlRDaDOycmBWPzfRq47d+5g0qRJKCgogKurK7p3746jR48iJCTEWG+BiIiIAFSWy/HmgJkAgIO5X8DW2Th5mFQhBAAJCQlISEio89jBgwfVtletWoVVq1YZICt6UlWWV+Hp3qcBAIcLqiB1MHJCRET0RDGZMUJE2lAo6n5OREQEmGCLEBERkT49KWNXyDDYIkREREQWi4WQEdRUltf5nMhU1VRW1PmciOhJx0KIiIiILBYLISIiIrJYLISIiIjIYrEQIiIiIovF6fNE1GxPygqxRERNxRYhIiIislgshIiIiMhisRAiIiIii8UxQkRERI/gmDfLwhYhIiIislgshIiIiMhisRAiIiIii8VCyAgUCmWdz4mIiMiwWAgRERGRxWIhRERERBaLhRARERFZLBZCREREZLFYCBEREZHFYiFEREREFouFEBEREVksFkJERERksVgIERERkcViIUREREQWi4UQERERWSwWQkRERGRwSqUCHk530NKjAH9cPA6lQmGUPFgIERERkUFdStuFTdOexjOdz6Bn+4vYseglrB7VHpfSdhk8FxZCREREZDCX0nZh+9sv4d6tAhSXuOBmsTeKS1xQUpSH7W+/ZPBiyOQKoTVr1qB169awsbFBREQETp48qTH+m2++QXBwMGxsbNC5c2f8+OOPBsqUiIiIHqVUKJCyejZyb3sg5XRvHL7QHad+64TDF7oj5XQUcm97IuXjOQbtJjOpQujrr79GYmIikpKScObMGYSFhWHQoEEoKiqqM/7o0aMYN24cJk6ciLNnz2L48OEYPnw4Lly4YODMiYiIKPvXX3D5SjVOXAlFZbWN2rHKahucuNIZly/Lkf3rLwbLycpgr6QDH330ESZNmoT4+HgAwLp16/DDDz/gyy+/xLx582rFf/zxx4iNjcWcOXMAAIsXL8a+ffvw2WefYd26dU167fLyckgkklr7JRIJbGxs1OLqIxaLYWtrq9pW4j7K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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "\n" + "# Plot bias (with error bars) vs s, color coded by c, for k=0\n", + "\n", + "plt.figure()\n", + "unique_c = np.unique(c_array)\n", + "for i, c in enumerate(c_array):\n", + " plt.errorbar(s_array, bias[:, 0, i], yerr=bias_uncert[:, 0, i], fmt='o', c=color(c, unique_c),\n", + " label=rf\"$c={c}$\")\n", + "plt.xlabel(r\"Slice Factor, $s$\")\n", + "plt.ylabel(\"Bias (nats)\")\n", + "plt.gca().axhline(0, color='k', linestyle='--')\n", + "plt.legend(loc='lower right')\n", + "\n", + "# Put a red box around s>=3\n", + "\n", + "x = s_array[s_array >= 3]\n", + "y = bias[s_array >= 3, 0, :]\n", + "y_uncert = bias_uncert[s_array >= 3, 0, :]\n", + "x_range = (x.min() * 0.97, x.max() * 1.02)\n", + "y_range = ((y - y_uncert).min() * 0.97, (y + y_uncert).max() * 1.02)\n", + "\n", + "plt.gca().add_patch(plt.Rectangle((x_range[0], y_range[0]), x_range[1] - x_range[0], y_range[1] - y_range[0],\n", + " fill=False, edgecolor='r', lw=2, zorder=0))\n", + "plt.show()\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "8cf4960a5144a213", + "execution_count": 4, + "id": "94f4f7b3c97ea13c", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.539712515Z" + "start_time": "2023-12-18T16:43:35.432902976Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_104572/1306734269.py:30: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n", + " cm = plt.cm.get_cmap('PuOr')\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAG1CAYAAADpzbD2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZVElEQVR4nO3de1wU9f4/8Nfswi53ELksKAJeUlEB84KYZSdIUDM9ZmZZGnnwaFIpmuYpNbtIaqdjdiy7afo7kbdTZpYUkpfT8Rq23iK/qSQoLOAFlvtld35/cFxdgXFXdlkWXs/HYx7tzrz3M+8Zh91385n5jCCKoggiIiIiapTM1gkQERERtWYsloiIiIgksFgiIiIiksBiiYiIiEgCiyUiIiIiCSyWiIiIiCSwWCIiIiKSwGKJiIiISAKLJSIiIiIJLJaIiIiIJNhVsbR//36MGTMGgYGBEAQB27dvv+1n9u7di7vvvhtKpRLdu3fHZ5991iBmzZo1CAkJgZOTE6KionDkyBHLJ09ERER2ycHWCZijvLwcEREReOaZZzB+/PjbxmdnZ2P06NGYMWMGPv/8c2RkZOAvf/kLAgICEBcXBwDYvHkzkpOTsXbtWkRFRWHVqlWIi4vDmTNn4OfnZ1Jeer0eeXl5cHd3hyAIzdpGIiIiahmiKKK0tBSBgYGQySTOH4l2CoD41VdfScbMnz9f7NOnj9G8xx57TIyLizO8Hzx4sDhr1izDe51OJwYGBoopKSkm55KbmysC4MSJEydOnDjZ4ZSbmyv5O29XZ5bMdfDgQcTGxhrNi4uLw+zZswEANTU1yMzMxMKFCw3LZTIZYmNjcfDgwSbbra6uRnV1teF9fe0G5ObmwsPDw4JbQERERNai1WoRFBQEd3d3ybg2XSxpNBr4+/sbzfP394dWq0VlZSWuXbsGnU7XaMxvv/3WZLspKSlYunRpg/keHh4sloiIiOzM7S6hsasLvFuLhQsXoqSkxDDl5ubaOiUiIiKykjZ9ZkmlUqGgoMBoXkFBATw8PODs7Ay5XA65XN5ojEqlarJdpVIJpVJplZyJiIiodWnTZ5aio6ORkZFhNC89PR3R0dEAAIVCgQEDBhjF6PV6ZGRkGGKIiIiofbOrYqmsrAxqtRpqtRpA/dAAarUaOTk5AOq7x6ZMmWKInzFjBs6fP4/58+fjt99+w/vvv48tW7Zgzpw5hpjk5GR8/PHH2LBhA7KysjBz5kyUl5cjISGhRbeNiIiIWie76ob7+eef8ac//cnwPjk5GQAwdepUfPbZZ8jPzzcUTgAQGhqKb7/9FnPmzMG7776Lzp0745NPPjGMsQQAjz32GIqKirB48WJoNBpERkYiLS2twUXfRERE1D4J4vX73umOabVaeHp6oqSkhHfDERER2QlTf7/tqhuOiIiIqKWxWCIiIiKSwGKJiIiISAKLJSIiIiIJLJaIiIiIJLBYIiIiIpLAYomIiIhIAoslIiIiIgksllqpmspyvDrMGa8Oc0ZNZbmt0yEiImq3WCwRERERSbCrZ8O1J3q9iMfX5xpeExERkW3wzBIRERGRBBZLRERERBJYLBERERFJYLFEREREJIHFEhEREZEEFktEREREElgsEREREUlgsUREREQkgcUSERERkQQWS0REREQSWCwRERERSWCxRERERCSBxRIRERGRBBZLRERERBIcbJ0ANa6yvAqP3vU0AGBfwWdwcnWzbUJERETtFM8sEREREUlgsUREREQkgcUSERERkQQWS0REREQSWCwRERERSWCxRERERCTB7oqlNWvWICQkBE5OToiKisKRI0eajL3//vshCEKDafTo0YaYp59+usHy+Pj4ltgUIiIisgN2Nc7S5s2bkZycjLVr1yIqKgqrVq1CXFwczpw5Az8/vwbxX375JWpqagzvr1y5goiICDz66KNGcfHx8Vi/fr3hvVKptN5GEBERkV2xqzNL77zzDhITE5GQkICwsDCsXbsWLi4uWLduXaPx3t7eUKlUhik9PR0uLi4NiiWlUmkU16FDh5bYHCIiIrIDdlMs1dTUIDMzE7GxsYZ5MpkMsbGxOHjwoEltfPrpp5g0aRJcXV2N5u/duxd+fn7o2bMnZs6ciStXrki2U11dDa1WazQRERFR22Q3xdLly5eh0+ng7+9vNN/f3x8ajea2nz9y5AhOnTqFv/zlL0bz4+PjsXHjRmRkZGD58uXYt28fRo4cCZ1O12RbKSkp8PT0NExBQUF3tlFERETU6tnVNUvN8emnn6Jfv34YPHiw0fxJkyYZXvfr1w/h4eHo1q0b9u7di5iYmEbbWrhwIZKTkw3vtVqtxQummpq6Rl8TERFRy7KbM0s+Pj6Qy+UoKCgwml9QUACVSiX52fLycmzatAnTpk277Xq6du0K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GYItW7YY5vXo0cPw+uuvv8Y//vEPw/tjx46hZ8+ecHFxadCWQqGAo6OjdRMmIpthsURE7c6FCxewa9cu/PLLL40uz8rKQl5eHmJiYgzzjh07hgEDBjQaf+bMGfTq1csquRKR7bEbjojaHbVaDYVCgcjIyEaX79ixAw8++CCcnJwM844dO4a77767QWx5eTl27NiBRx55xFrpEpGNsVgionbH0dERdXV1qKioaHT5119/jbFjxxrenz9/HsXFxQ2KJZ1OhxkzZsDZ2RmzZs2yas5EZDvshiOidicqKgqenp6YOXMmXnrpJYiiiP379yMmJgaenp74+eefsWPHDkN8ZmYmACAgIAAajQZarRaZmZl49913kZubi507d8LT09NWm0NEVsZiiYjanY4dO+Kbb77Biy++iEGDBkGhUGDIkCF4/PHHsW3bNgwePBg+Pj6G+GPHjgEA7rrrLsjlcnh5eaFnz554+OGHMWPGDHh7e9tqU4ioBQiiKIq2ToKIqLV4+OGHMWzYMMyfP9/WqRBRK8FrloiIbjJs2DA8/vjjtk6DiFoRnlkiIiIiksAzS0REREQSWCwRERERSWCxRERERCSBxRIRERGRBBZLRERERBJYLBERERFJYLFEREREJIHFEhEREZEEFktEREREEv4/FOmKKbS1F0YAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Plot log_Z (with error bars) vs num slices, color coded by phantom fraction\n", + "# Plot bias (with error bars) vs c, color coded by k, for s=s_max\n", + "\n", "plt.figure()\n", - "unique_c = np.unique(k_array / (k_array + 1))\n", + "unique_k = np.unique(k_array)\n", "for i, k in enumerate(k_array):\n", - " phantom_fraction = k / (k + 1)\n", - " plt.errorbar(s_array, log_Z_mean_array[:, i], yerr=log_Z_uncert_array[:, i], fmt='o',\n", - " c=color(phantom_fraction, unique_c),\n", - " label=f\"Phantom Fraction: {phantom_fraction * 100:.0f}%\")\n", - "plt.xlabel(\"Num Slices\")\n", - "plt.ylabel(\"Bias (nats)\")\n", - "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", - "\n", - "# \n", - "# \n", - "# # put a red box around the region of interest (All points with slice factor >= 3)\n", - "# # Make the box a little bigger than the y error bars\n", - "# \n", - "num_slice_factor_threshold = 4\n", - "\n", - "mask = (s_array >= num_slice_factor_threshold)\n", - "x = s_array[mask]\n", - "y = log_Z_mean_array[mask]\n", - "yerr = log_Z_uncert_array[mask]\n", - "\n", - "lower_left = [0.97 * np.min(x), np.min(y - 1.2 * yerr)]\n", - "upper_right = [1.01 * np.max(x), np.max(y + 1.2 * yerr)]\n", - "plt.gca().add_patch(plt.Rectangle(lower_left, upper_right[0] - lower_left[0], upper_right[1] - lower_left[1],\n", - " fill=False, edgecolor='r', lw=2))\n", + " plt.errorbar(c_array / ndims, bias[-1, i, :], yerr=bias_uncert[-1, i, :], fmt='o', c=color(k, unique_k),\n", + " label=fr\"$k={k}$\")\n", "\n", + "plt.xlabel(f\"$c/D$\")\n", + "plt.ylabel(\"Bias (nats)\")\n", + "plt.gca().axhline(0, color='k', linestyle='--')\n", "plt.legend(loc='lower right')\n", - "# plt.savefig(\"bias_vs_num_slices.png\", dpi=300)\n", - "# plt.savefig(\"bias_vs_num_slices.pdf\", dpi=300)\n", - "plt.show()" + "plt.show()\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "e9d360caeb5284f9", + "execution_count": 5, + "id": "8ce4f33cc06bfc75", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.539793287Z" + "start_time": "2023-12-18T16:43:35.432977250Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_104572/1306734269.py:30: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n", + " cm = plt.cm.get_cmap('PuOr')\n" + ] + }, + { + "data": { + "image/png": "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ZmHixIk6jxUYGKhx+5YtW3D69GmcOHHCIDnry6yF0KuvvooVK1bojElPT0dYWJhqPSsrC7GxsZgwYYLG/wjNtWjRIsydO1e1XlxcjODgYIOfh4iISF+urg4GjWssuVyOM2fOIDExEbt370Z0dLTGOC8vL529NdpkZmbipZdewv79++HgYJzPoI1ZC6F58+Zh2rRpOmPatWunWs7OzsYjjzyCmJgYbNiwQef7AgICUF1djcLCQrVWoZs3b6o1491PJpNBJpPplT8REZEptGnnAzd3R53dY24ejmjTzsco55fL5UhISEBycjIKCwu1xi1fvhzLly/XeawLFy6gTZs2attOnTqFvLw89OjRQ7VNoVDg559/xscff4yqqipIJJJmfQZtzFoI+fr6wtfXV6/YrKwsPPLII6pBz2Kx7uFNPXv2hL29PQ4ePIhx48YBAC5duoSMjAytlSwREVFLJBaLEBsfia2btd/sEzs2EmIjPMi7pKQEV65cwbZt2xATE4NJkybh6NGjiIiIaBDb1K6xoUOH4uzZs2rbpk+fjrCwMCxcuNBoRRBgIWOEsrKyMHjwYISEhOD9999Hfn6+al99605WVhaGDh2KL7/8En369IG7uztmzJiBuXPnwsvLC25ubnjhhRcQHR2Nfv36meujEBERNUnnrkGYOLUf9uyQq91C7+bhiNixkejcNcgo501LS4NEIkF4eDiioqJw7tw5xMXFITU1FT4+6i1QTe0ac3V1RZcuXdS2OTs7w9vbu8F2Q7OIQmj//v24fPkyLl++jNatW6vtE4S6WwVrampw6dIllJeXq/atXr0aYrEY48aNQ1VVFUaOHIl///vfJs2diIjIUDp3DULb9n5Y8eZ3AIAnZ/THQ538jdISVE8ulyMsLEw1bGTVqlVIT09HQkICDhw4AKlUarRzm4JIqK8kSKPi4mK4u7ujqKgIbm5uBjlmya0C9PeZBgA4UrAJrt7G6dMlIqKWo7KyElevXkXbtm2bNSCYD129S9d3qu/vb9v99oiIiCyQVGaHJe+PM3caVsNiJ1S0ZPc2YRqzOZOIiIh0YyFERERENouFEBEREdksFkJERERks1gIERERkc1iIUREREQ2i4UQERER2SwWQkRERBakvKwS3USPoZvoMZSXVT74DaQTCyEiIiKyWSyEzMDR2QHfv30c3799HI7OTZ9mnYiI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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "import pylab as plt\n", - "\n", - "num_slice_factor_threshold = 4\n", + "# Plot bias (with error bars) vs s, color coded by k, for c=c_max\n", "\n", - "# For all runs in consistent region (red box), plot bias vs num likelihood evals, color coded by number of slices\n", "plt.figure()\n", - "colors = s_array\n", - "unique_c = np.unique(colors)\n", - "for j, s in enumerate(s_array):\n", - " plt.errorbar(num_likelihood_evals_array[j, :], log_Z_mean_array[j, :], yerr=log_Z_uncert_array[j, :], fmt='o',\n", - " c=color(s, unique_c),\n", - " label=f\"Num Slices: {s}\")\n", - "plt.xlabel(\"Num Likelihood Evaluations\")\n", + "unique_k = np.unique(k_array)\n", + "for i, k in enumerate(k_array):\n", + " plt.errorbar(s_array, bias[:, i, -1], yerr=bias_uncert[:, i, -1], fmt='o', c=color(k, unique_k),\n", + " label=fr\"$k={k}$\")\n", + "plt.xlabel(r\"Slice Factor, $s$\")\n", "plt.ylabel(\"Bias (nats)\")\n", - "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", + "plt.gca().axhline(0, color='k', linestyle='--')\n", "plt.legend(loc='lower right')\n", - "plt.show()" + "\n", + "# Put a red box around s>=3\n", + "\n", + "x = s_array[s_array >= 3]\n", + "y = bias[s_array >= 3, :, -1]\n", + "y_uncert = bias_uncert[s_array >= 3, :, -1]\n", + "x_range = (x.min() * 0.97, x.max() * 1.02)\n", + "y_range = ((y - y_uncert).min() * 0.97, (y + y_uncert).max() * 1.02)\n", + "\n", + "plt.gca().add_patch(plt.Rectangle((x_range[0], y_range[0]), x_range[1] - x_range[0], y_range[1] - y_range[0],\n", + " fill=False, edgecolor='r', lw=2, zorder=0))\n", + "\n", + "plt.savefig(\"bias_vs_s.pdf\", bbox_inches='tight', pad_inches=0, dpi=300)\n", + "plt.show()\n" ] }, { - "cell_type": "markdown", - "id": "884cf1c8fc7dd01f", + "cell_type": "code", + "execution_count": 6, + "id": "1fccf7addbe47ec1", "metadata": { - "collapsed": false + "ExecuteTime": { + "end_time": "2023-12-18T16:43:35.433528859Z", + "start_time": "2023-12-18T16:43:35.433011174Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Using phantom samples to improve sample efficiency\n", - "Using the above result, the sample efficiency can be significantly boosted by using a large enough number of slices, and larger phantom fraction. We can easily see this looking at bias vs run time speed up. The run time speed is defined as the ratio of the run time with no phantom samples to the run time with phantom samples. We see a speed up of almost 4x with a phantom fraction of 0.8, and slice factor >= 3. This is a significant improvement in sample efficiency, and is the key to achieving high sample efficiency with nested sampling in high dimensions." + "# Plot image of bias vs k and c for s=s_max\n", + "\n", + "plt.figure()\n", + "plt.imshow(bias[-1, :, :].T, origin='lower',\n", + " extent=[np.min(k_array), np.max(k_array), np.min(c_array), np.max(c_array)],\n", + " aspect='auto', cmap='ocean', vmin=-0.2, vmax=0.2)\n", + "plt.xlabel(\"Num Phantom Samples\")\n", + "plt.ylabel(\"Num Parallel Markov-Chains\")\n", + "plt.colorbar(label=\"Bias (nats)\")\n", + "plt.show()" ] }, { "cell_type": "code", - "execution_count": null, - "id": "ba0058ae30e40b3e", + "execution_count": 7, + "id": "25a7b88a69f5b9c7", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.539865192Z" + "start_time": "2023-12-18T16:43:35.433046639Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_104572/1306734269.py:30: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n", + " cm = plt.cm.get_cmap('PuOr')\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAKqCAYAAAAtywZ1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADkLklEQVR4nOz9e1yUdf4//j+uGRiOMpwRFM+KoYKKgJrkCTerd2ZotvVuPdQvF4PSTM3ys+q25aHTaqtb+d7d3H1/813WppmlLZHHzDQQTUlKJQ4qJ5UZGAYGZq7fH8TIwDAMwwzDNTzut9sUc83zuq7X5cBzXvN6va7XSxBFUQQRERERkYTInF0AIiIiIqKOYiWWiIiIiCSHlVgiIiIikhxWYomIiIhIcliJJSIiIiLJYSWWiIiIiCSHlVgiIiIikhxWYomIiIhIctycXYCuZDAYcO3aNfTq1QuCIDi7OEREnabX63Hp0iUMGTIEcrnc2cUhIuo0URRRVVWFiIgIyGRtt7f2qErstWvXEBkZ6exiEBEREVE7ioqK0Ldv3zZf71GV2F69egFo/Efx8/NzcmmIiDqvuLgYI0aMYF4jIpehVqsRGRlprLe1pUdVYpuGEPj5+THZE5FLaMplzGtE5GraG/rJG7uIiIiISHJYiSUiIiIiyWElloiIiIgkh5VYIiIiIpIcVmKJiIiISHJYiSUiIiIiyWElloiIiIgkh5VYIiIiIpIcVmKJqMdbsWIFZs+e7exiEBHZlavnNlZiiajHy8nJwejRox16ju3bt2PAgAHw9PREYmIiTp065dDzERE5OrcdPXoU999/PyIiIiAIAvbu3euwc5kjqUqss/+xiMg1nT171qGJ/sMPP8Ty5cuxbt06ZGdnIzY2FnfffTfKysocdk4iIkfnNo1Gg9jYWGzfvt1h57BEUpVYZ/9jEZHrKS4uRkVFhTHRV1ZW4v7778ekSZNQUlJil3O8+eabePLJJ7Fo0SJER0fjnXfegbe3N/7xj3/Y5fhERC11RW6755578PLLL+PBBx+0y/E6SlKVWGf/YxGR68nJyYG/vz8GDBiAH374AfHx8ejTpw8OHTqE3r17G+M2bNgAX19fi4/CwsJWx9fpdMjKykJycrJxm0wmQ3JyMr799tsuuUYi6nkcndu6AzdnF4CIyJlycnIQGxuLXbt2IT09HZs3b8aTTz7ZKi41NRXz5s2zeKyIiIhW2yoqKqDX6xEWFmayPSwsDBcvXuxc4YmI2uDo3NYduHQltq6uDnV1dcbnarXaiaUhou4oJycH586dQ3p6Oj7//HNMmDDBbFxgYCACAwO7uHSttcxrVVVVTiwNEXVXUstttpDUcIKO2rhxI5RKpfERGRnp7CIR2Z1Oq8H6SV5YP8kLOq3G2cWRnJycHKSkpKC2thaVlZVtxtna5RYcHAy5XI7S0lKT7aWlpSZdetZqmdeio6M7fAySPlGvg+HEehhOrIeo1zm7ONQNOTq3dQcu3RL7wgsvYPny5cbnarWaFVkiMqqqqsKVK1fw0UcfYeLEifjtb3+LEydOYMSIEa1ibe1yUygUiIuLQ2ZmpnG+RoPBgMzMTKSnp3e4zC3z2tWrV1mRJSITXZHbugOXrsR6eHjAw8PD2cUgom7q7NmzkMvliI6OxpgxY3D+/Hncf//9OHXqFIKDg01iO9Pltnz5cixYsADjxo1DQkICtmzZAo1Gg0WLFnX4WC3zGodJEVFLXZXbqqurcenSJePz/Px85OTkIDAwEP369evUNVhDUpVYZ/9jEZFrycnJwfDhw42Vwtdeew0//vgjUlJS8NVXX0GhUNjlPA8//DDKy8uxdu1alJSUYPTo0Th48KDxZi+dVoMNMxo/WF7MqIDCy8cu5yWinqmrctv333+PqVOnGp839RItWLAAO3futMs5LBFEURQdfhY7OXz4sMk/VhNr/7HUajWUSiVUKhX8/PwcUEKirscKkPR15j0sLi5GZGQk81oPI+p1EL/bAAAQEl+EILdPpYSoO7C2viapltgpU6ZAQnVuSWAiJCJXwy92RD2DS89OQERERESuiZVYIiIiIpIcVmKJiIioW+H812QNVmKJqFvjhxkREZkjqRu7iGzBm9eIiIhcD1tiiYiIiEhyWIklIiIi6kIcJmUfrMQSERERkeRwTGw7ajS1GO87FwBwsvpjePt4OrlERD2MXoe1rz4PAGjQ6wC44MT1PeEaiTpAq6nFJ99MBwA8q6nlghVkFltiiYiIiEhy2BJLLk+vN+B4zX8DACbpDXCTO7lARE7m6j1MPaEVr16rMX6A12s1UPhy1hXqedgSS0RERN2KXm8w+zNRc2yJJZI4vd6AKevPGX8mao+h2e+Jgb8zkqTV1CLpzu8BAMdKaqHwdXKBiFroijnaWYnt4dglJX1aTS2emfEsAOBwyXvw8u3l5BIRERE5HocTEBERSYxeb/5nop6ELbFEUqdvMP8zSUa1uhZTfu0aPny1FoHsGqaejnlN8mo0tZjwa177VlULHz8OJyA744cnEbkavU5n9mei7kKrVt+eQUOtdskZNLoCK7FE1K3p9SJO/DpFWqJedHJpiIg6rycMB2lotpxug1YD+PnZ/RwcE9uO+mZvQj3XN5akem2N2Z+JiIhIutgSS0REJDWiAePG9EJwkDvctNcgimEQBLZLUffRFa3NrMSSy9Nq6m5PQXX1f+CldHKBiIg6QbyRC7/iz/G3bVGNG0o/g3jrCDBwJoSgaOcWjqgL8WsbEXVrTV9CnpnxLLSaOmcXh8ipxBu5EPN2Q9C3GN6mU0PM2w3xRq5zCkbkBKzEEhERSYAoGiDmHwQACG3F5B+EKHIVNuoZWIltB9dvJiKibkFdAOjUlmN06sY4oh6AlVgiIiIp0FXbN45I4liJJSIikgKFlavRWBvXjTXv+TxzIg96V51MlTqFlVgiIiczGPQI9ruFvsElKL5wEgZ+YJM5fv0BReOE8Xq9iNPZahzIuIHT2WromxYCUfg1xknYV5+cwG8TVxufP/vQ65g54Al89ckJJ5aKuiNWYomInCj3yF78I20y4hPcERXbB++/uhVvzr0DuUf2Orto1M0IggzCwJnIPHwL9845hyef/gkvrM/Hk0//hHvnnEPm4VsQBs6U9HyxX31yAs/N3YDy67dMtpddrcBzczewIishXdGaLrnf9O3bt2PAgAHw9PREYmIiTp065ewiETkVW/GkK/fIXvz9T3/DZ98k4MBXvsjM1OPAV7749Fgc/v6nv7EiS61kHqnEiv93GaXl9Sbby8rrseL/XUbmkUrnFMwO9Ho9Ni/dAdHM6tJN215dtoNDCySgq1rTJVWJ/fDDD7F8+XKsW7cO2dnZiI2Nxd13342ysjJnF43IKXKP7MU/nkrCHf2uIDywAu8ufwpvzoli5UcCDHo9/r83PkBGJqC6UWXymupGFTIygf/vzQ/4pYSMLFbyfv2/lCt52ccuoLS4os3XRREoKapA9rELXVgq6qiubE2X1Ipdb775Jp588kksWrQIAPDOO+/g888/xz/+8Q+sXr26nb1v02g0kMvlrbbL5XJ4enqaxGk0GhjQYHzuofEGAMhkMnh5eZnEtqVlbE1NDURzWQiAIAjw9va2KVar1cJgaHsaMB8fn1axmpqa29dXUwOPX6+jeWxtba3FpNiRWG9vbwhC4wyHdXV1aGhosEusl5cXZLLG72Q6nQ719bdbKao1GgyOGQC/ICUqbmigDNMb3/+WsS15enraFFtfXw+dTtdmrIeHB9zc3Doc29DQgLq6xgn/fzq+H39dtgrnrgyFVnf79/b7n2qRl7cUS7frMTBxZpvHVSgUcHd3B9D44VhbW9tmrLu7OxQKRYdjDQYDtFptp2I1mmqMHeONkCCFcXlNQEBNTU2bx3Vzc4OHhwcAQBRFi7Hm/u7tEdtejsjPOopjJ9qa7bPR8RMy5H7zHwyMu8u4zdzffdPxrc9rNSZ5TZCLVpXZ0vUxrzk+r32XmWNVJe+7r88idmJUm3HdNa8V55e0Gd9ccX4JouMHm31NKnlNXVUNA/QABJw5kYcpD4ZCJpNJPq/p9QZseuadtlvTBWDT0neRkDwKcvntdlRzOcIqokTU1dWJcrlc3LNnj8n2+fPni7NmzTK7T21trahSqYyPoqIiEY1fWM0+7r33XpP9vb2924ydPHmySWxwcHCbsePGjTOJ7d+/f5ux0dHRJrHR0dFtxvbv398kdty4cW3GBgcHm8ROnjy5zVhvb2+T2Hvvvdfiv1tzc+fOtRhbXV1tjF2wYIHF2LKyMmPsU089ZTE2Pz/fGLtixQrj9qRJvxE/3HVEPJTxk/FxJDNPLCutEkVRFNetW2fxuKdOnTIe99VXX7UYe+jQIWPstm3bLMbu37/fGPvee+9ZjN29e7cxdvfu3SIAUQDERwf3FUfh3l8f9zV7NG5LHR0tChaOu23bNuNxDx06ZLEMr776qjH21KlTFmPXrVtnjD1//rzF2BUrVhhj8/PzW73+4OTh4i+fLBP136y7/Tj9hlh55VuLx12wYIHxuNXV1RZj586da/I7bCnWnjliZuykFu+b+cfM2Ekm+w0fPtwkrw0aNKjLytz8wbx2+9FVeU2JCKt+Zx5PSbd43O6a13wQaNX1+SCwzeNKIa/5obcYhWkm15Tcd7747398YfG4Ushrtr6HLXNEVFSUCEBUqVSiJZIZTlBRUQG9Xo+wsDCT7WFhYSgpMf/tbePGjVAqlcZHZGRkVxSVuomkSb/BH9e+hZBg098ZgwG4cO46ysukO5div14yXCqKQuO6PS1b8xq3ZeeGo18vyfyJt/Lg5OHY/co89AnxM31Bp4bv9YN4cPJw5xTMTsKCrctHLeMqKipM8tqVK1ccUTzqhhrQdkthc5693B1cEsfQCpXoFdjLYox/iBJaobJrCuQAfuiNfhgLBTxNtpcWV2D949vhh95OKpl9uLW4rs7GtUf4tYbe7V27dg19+vTBiRMnMGHCBOP2VatW4ciRI/juu+9a7VNXV2fsegUAtVqNyMhIXLt2DX5+fq3izTWp3ywtxz2DUwEABy6/g8CwEACu0+1283oJ7hma1nh9P29HYHjvVrFS7HbT6XQ4m12Kel3b/x4eHm4YmxBh8bjdtdttz1tv49UXD7e5T5NVG6bgwWeWmH2tW3e7iQZ4/PguhPpqGPQiss9WoeJGPYKD3DE2thfkcgEG916ou2MxYOZObCl0ux3/90GsXPBem/s3ee2fizBpzu1hITqdzmTYwOXLlzF27NgO5bVqdQ2mR/wOAJB57X/h6+daw6RcNa/V1tYhJToNZdduNrZftSQAvfsG49O8ty3+m3XXvKZW1WH3u4fw95fa/rt4Yu0izPv9VPgpPcy+3p3zml5vwP2Dn8CtirbzUWCIN/Zd+rtJV3sTKeS1rCM/IP2+l9vcv8m2z/8f4iaPMj5v+XdfUlKC8PBwqFQqs3mtiWTGxAYHB0Mul6O0tNRke2lpKXr3Nv/NxcPDw/iGN+fj42OSoNri4+ODOp8ayH79Z7K0nzXHa9L8jbJnbPNfLGtj67w8kTAmAMFB7lAKlfD2Hthqepbmv9zt6UhsW+9PZ2MVCgU01Q0WK7AAUFfXgBqNHgGB1r13CoXCmJja4+7ubkyk9ox1c3ODm5sbGgzWTWbeYPC16ndTLpdb/TvckViZTGZTrKjKh1hfjczDt/DqlkKTO7HDQtyxalk/TJ8CeOsrICgHWjyuIAgd+vvsqthp98XCP9gPlRVtLyMaEKLEtPti4d5s35bHCQkJMW63Nq+JeqFFXjOfZySb17y9b1+ft7fZ65BiXlMoFHjqTwux/vE3zQeJQOof53fo36w75bXqKgNik2LwxNpF+PdfP0FlhcoY4x/ijzlLHkRsUgxkMndJ5rXvMnMsVmAB4GZ5DX48fRmJ00dbjOuueS06Ogj+wUqT964l/xB/REcHWTyPtTlCMn2NCoUCcXFxyMzMNG4zGAzIzMw0aZkl64k3cuFXvAt/2xaFTX8cBN/SzyBmbYF4I9fZRes0nc66u3OtjetuIkeOsWtct6NrrMA+t6b1VEKl5fV4bs1lZB6+JenlNd0CB2Hps7EWY55ZFgO3wEFdVCLq7kRRRPiQgXhi7SL4BytNXvMP8ccTaxchfMjANlu5uzuForFKEpsUg/X/31o8/XoaFrzwOzz9ehrW/+8fEJsUYxInNT+ePGnXuO5Ir9NhzlMpFmPmLHkQegut9B0hmZZYAFi+fDkWLFiAcePGISEhAVu2bIFGozHOVkDWE2/kQszb3Wo0JXRqiHm7gah5EIKinVE0u7A2yUk1Gd4xbrhV33bvGCfNcaN6uTc2brlqMWbT1muYmuotrSTWjCDIkPL7+wFDHbZuvWjSIhsQosQzz0Qh5ff3S3rierKvylta1NU1IDYpBqMmjsTl81egvqGGX5AfBo8cBJlchrq6BlTe0iIg0PrW7u5CKSuFQtBAJ3pDJpdhaOyQFhEiPIQaKGWlAKT35c7dw/JsJB2N644UXp5WtaYrvOyT1ySV/x9++GGUl5dj7dq1KCkpwejRo3Hw4MFWN3uRZaJogJh/EADaHG8o5h8EAodL9gO0eTI06EUzyV6QdDL08nLHnKdSLI4dm7PkQXh5SfMGj6ycKlSUW76JpbxMi6ycKiRO66JCOYAQFI2UJXNx39T9+CarDmUVIkKDBSQleMN96D2S/iJJ9te858h8Ja91nKTUVWGIexZydUloHPTbvDLX2Lo82D0LqBvnjNJ12piEIVY1PoxJMP++SoGyzwAofrqA2KRRbXzR+vWzt89Iu5xPUpVYAEhPT0d6erqziyFt6gJAp253vCHUBUA74w27K6FegyHuWfi/TCX+/dc9pt8Gg5WY89SDeGS6CkJ9ghNLaTv/AC8kJI8FILa+vhB/zFkyGwnJY+EfYP3YuO6k8LJ1C5gUXi6TdCUWaKzI1gxQ4v2nVyA4yB3/752lcB80xqFfIHXVKtOf/aTXamdJy+UupzwYanYOXalRKKy7BmvjupuSwl/Q260I0TiGS/Vx0Im3x0x6CDUY7J6FYLcilBQGIyLM8lCc7qh3n1CrGh969wntwlLZl0wmx5AB7sjNB2RyocUXrV+/iAxQQCazz++o5CqxZAe/jjdcseZyqxtcy8rrsWLNZbz+ymAkD5XueEMofHH2+Dn8/aXLrV6qrFDh7y/tRLTHYCTHSrMGJAgCBkfUos7YrZjf7NvuQMjkMgyOqDXeBS01yiBl+0EdiOv2BBm+P9O4atdqrwjJ9oB0B199cgIb0982Pn/2odcR1ncnnt+6GMkpE51Yss7zD/CCh4cb6urantHAw8NNsl9eb1Rq4VWvRpCyEEHyYqgMIdCJXlAIWihl5QAMUN2qwg2FFhHOLqwN/IN8EH/XYGDtwrYbH+4aDP8g62+s6o5CB98B4Edc+qUeOvH276KHoMXgAYpfX7cPVmJ7IL3cG69uKTQ7Q0tTB86rWwslPd5Q79MXr24tbvN1AcCrbxVj6qq+krxGUTQg+NYBRCuUuFQfZ/Jt10PQNLZY3FJBFKMkWSEac+cd1nW73Wm/ZEjS17TcZcv7mpqWu3zj4xclXZEVBAFDokJw4dz1NmOGRIVI9surb1AEvtyRiYd+NxuAAf7y2z0yTTerfflZJhIXz3ZK+TpLUA7AEK8PoEsa13bjg9f3EJS/dXZRO62iOA/fbluBiCGx8AkMh+bmdZRcOQ/lM5vtWomV3qcbdVr22epWd3w3JwIoLatH9lnptsSeOf4jSsvq2nxdBFBaWoczx3/sukLZ069DQoLdipDo+SliPDIwXHEcMR4ZSPD8FMFuRYBO3RgnQVXFObh/4VSLMfcvmIKq4pyuKRB1e3q9HpuX7mh7uUsAry7bYXG+VykICfXFiJhwuLX49u3hIceImHCEhFo3/V531D/2Tlwr1eCj/90LtarK5DV1ZRU++t+9uFZWg/6xdzqphJ0jCDKERI1GtOIYPN1qMTR2COKmjcXQ2CHwcqtFtOIYQqJGS7LhobncI3uxe82jqCq/irxvv0D2539H3rdfQFVahN1rHkXukb12O5cUG6GokypKKu0a1x2VX79l17hup9nUUoIgmrRYtBUnJZqb1+FVuRePr12AT/66t1W3W8qSB+B27Z/Q3PydE0tJ3Un2sQsoLa5o83VRBEqKKpB97ALip8R0Ycnsr/zHr3Byy3Nw842AwjcEuupyGGpKoVz6KkJCZzu7eDaTyeWYuex17F7zKPIuXEK/gX3g6+eLanU1CvOvQhRFzHtlF2QSHt8sBEUjZAQQ8PPnqKr3uT1cwrMWskEzJX8zp0Gvx8EtK2B+NY7Gvt6DW1di+KT77fI+2lyJLSwsREFBAWpqahASEoIRI0ZYPWmzpOgbzP8sYSHhAXaN645c/hoVVra2WBvXzfgGhaPix0wEA1i9fSWuFtUYu936RHrhSsbrqPgxE75Bq5xdVOomXP6L66+aWrkAEai41uwVAbvXPIp5r+xC9OTZTipd50VPno15r+zCF28+i4IrRcbtfqF9MXPpa5K+tiZCUDSqapVYcf/tmzllDr6Zs6sUnP0G6nJL0yOKUJcVo+DsNxg49q5On69DldhffvkFb7/9Nj744AMUFxebTKisUCiQlJSExYsXY86cOcal8qj7GZs0AiHhgSi/frPNmJCIIIxNGtGFpbKvsUkjENY3GGVXK8x2LwoCENY3WLrX6NcfUPg1Dhloi8KvMU6C+sfeCb+QPqj48WtUXDwE//5j4eUbAk1hOU7tzQZEEX6hfSXbrUj25/JfXNH1rVzOEj15NkIHj8O8EQ/DU1GHTbvWYOS0WZK+plZc9GbO6httj9e2Ja49Vv+rPfPMM4iNjUV+fj5efvll5ObmQqVSQafToaSkBF988QUmTZqEtWvXIiYmBqdPn7ZLAcn+ZDIZUp560GJMypLZkv4iIpfL8fzWxY1PWtzj0HTPw6otiyU77Y4gyCAMnAnA/McZAAgDZ0o2MTZ1KwIARBGVv3yPsvMHUPnL98YBjjOXvuZaH2rUKWOTRiAwxAdt/0WICAr1ke4XV3SslUvqZDI5KtQBKK7ojb4jxvNvXSJ8g8LtGtceqz/hfHx8cOXKFezevRu/+93vEBUVhV69esHNzQ2hoaGYNm0a1q1bhx9//BGvv/46ioqK2j8oOUXlLS1GjB9pcenCEeNHovKW1kkltI/klIl44+MXEdLbtOUlrG+w5O9SBhq7pISoeRDlLaZjUfhBkPiKa8DtbkXfINPFTPxC+0i+y5TsTwAQOzDv12ctK7KNz2MG/NR6lUIJ6epWLqKOaupFa9V6ZCTYtRfN6uEEGzdutPqgM2fOtKkw1DWaVnOxtHRh8zgpS06ZiNj4/pje7/cAgD9/tAJTHkySbAtsS0JQNNQtxlb1cpGxVUAP6VYkuyg4+w0C3POQOPwmzl0ZBq3O0/ial6IOMYN+QoB7ud3G4jlDV7dyEXVU85vzGiuyzb9QNlZs7dmLZtONXVqtFqIowtu7cZWXgoIC7NmzB3fccQfuvvtuuxSMHKf5ai6Wli6U6qovLcnltyt0YyZGuUwF1shFx1Y1aepWBMBuRTsRRRFDYgbDL8gP1ZoGBIiiZOcWbdLU+jh9cgA2vBqDc/kBxmV8YwbeQubn5bh4vlzSrZRNrVzq8mswP2xCgF9oH44VJ6dq6kU78OflqKq4/ffmF9rH7jfn2VSJfeCBB5CSkoLU1FRUVlYiMTER7u7uqKiowJtvvoklS5bYrYBkf66+6guR1Hj5eOCtjD8bf3ak8rJq/PRzDZ55o3H57isFtbha8guGRIVIeo5R36BwDB85DFMffRo/68ZBHu2DpvbIn6HB1EejgV1/kXQrZVe3chHZKnrybPQfdSf+8+8M6KrLMXrcYAydeI/dfzdtarLJzs5GUlISAODjjz9GWFgYCgoK8K9//QtvvfWWXQvobC3X4Jb6RNnA7VVfLJHyqi8tGQx6BPvdQt/gEhRfOAmDC7yH5FrkcgF3eb+Pu7zfh1zuuL+78rJqXDh3HfUNpq14dXUNuHDuOsrLpDmvMAD0j5mACQ8uxo+6u6CDt8lrOnjjR91dmPDgYvSPmeCkEtpHUytXr+DeJts5Vpy6G5lcjoCB8QgbdS/6xUx0yJcrm1pia2pq0KtXLwDAf/7zH6SkpEAmk2H8+PEoKJDmCkHmuPIa3E2rvvyUW2Lygebh4Sb5Fpnmco/sxRdvPou7RpUAAD7546P46q99MHPZ60z21KOIoohLeeUWYy7llSM4xEeaX2Cri3DV7c5fGydblr+x1fKa252IrC4C/Ad1ffnsqKtauZypK3snyDGavpwDQIN8qUPOYVNL7JAhQ7B3714UFRXhyy+/xG9+8xsAQFlZGfz8/OxaQGdpWoO75cTYTWtwf/XJCSeVzH5CQn0xfKg33npuG3Zu+BcG9ffE+EkDXKoCu3vNo6i+UWKyXV1+ze5L3xF1d5W3tBaHEAGNLbJSnZVEdUsLnegDS3dF14k+UEn0+lrqilYuou7Opkrs2rVrsWLFCgwYMACJiYmYMKGxe+Y///kPxowZY9cCOkNPWYMbAETR0DgH5w+Nc3CKBkP7O0lA+5OCAwe3ruTQAuoxrJ1tRKqzkuhEz/aDOhBH5EhNLc1vZfyZLc2dYFMldu7cuSgsLMT333+PgwcPGrdPnz4dW7ZssVfZnKYja3BLWe6RvdiZloS7RmUjIeoCPvnjo9gyN8olWih70qTgRNawdrYRqc5KovDv3X5QB+K6Pbm7+Z+JehCbKrGPP/44fHx8MGbMGJNVnUaMGIHNmzfbrXDO0hPW4Hb1rvaeNCm4q3+jd/Xr6ypNs5JYIuVZSfwDvKFwF2FpxS4PdxH+Ad5tvE5EUmNTJfaf//wntNrW44q0Wi3+9a9/dbpQzubqa3D3hK52TgpOZMrVZyURBAFD74j49Zn5FbuG3BEh2evrabpqxg5ncfXr6yodqsSq1WqoVCqIooiqqiqo1Wrj49atW/jiiy8QGhrqqLJ2mbFJIxDWNxht5TpBAHpHBkt2De6e0NXe1UvfEXWKXIGXVm3GS6s2A3KFw07TNCuJu5vp34WHhxtGxIRL/qbOxuuLgLub6Udb4/VFSP76iCSlC/Jah6bY8vf3hyAIEAQBw4YNa/W6IAj44x//aLfCOYtcLsfzWxfjubkbWs0n3VSxXbVlsWRXfuoJXe2cFJzIvJBQX8jqvfHkvZvhF+SHl95djMghfV2mhdLVr4+IbutQJfbQoUMQRRHTpk3Dv//9bwQGBhpfUygU6N+/PyIiIiwcQTqSUybijY9fxMb0t03Gvob1DcaqLdKeJ7andLU3TQr+xZvPmoz9dcTSd0RSYjCIuHTuMgDg57OX0WdQhGS/lJsjCILx+nx93FiBlaJfW/EA4MWMlU4uDHVXHarETp48GQCQn5+PyMhIk5u6XFFyykTExvfH9H6/BwD8+aMVmPJgkuSTfU9afzt68myEDh6HeSMehqeiDpt2rcHIabNcqgW2KyaUJtfhyou49CRyuQyH18cAACZmtD2bDnVTrKTbhU210P79+0Mmk6GmpgYXL17EuXPnTB6uRC6//U80ZmKU5CuwwO2u9kbmVrZxra52d3c5KtQBKK7ojf4x413muog6qics4kJEPYdNy86Wl5dj0aJFOHDggNnXXWERAFfHrnaSCrY020d7i7gIQuMiLlMfSHSJL+tE5PpsqsQuW7YMlZWV+O677zBlyhTs2bMHpaWlePnll/HGG2/Yu4zkID2hqx0AvHw8kfPNOABAgw9X65EcdrvZRUcWcYmfEtOFJSMiso1Nldivv/4an376KcaNGweZTIb+/ftjxowZ8PPzw8aNG3HffffZu5xOI4oihsQMhl+QH6o1DQgQRZe6SUAma+xqB4C+I9jVTuSqesIiLkTUs9hUidVoNMb5YAMCAlBeXo5hw4Zh1KhRyM7OtmsBnam8rBo//VyDZ95IBwBcKajF1ZJfMCQqhPMNEpHdKLx8sP546wVk7MnVF3Ehop7Hphu7oqKikJeXBwCIjY3Fu+++i6tXr+Kdd95BeLhjpmV65ZVXMHHiRHh7e8Pf398h52iuvKwaF85dR32D6QCyuroGXDh3HeVl1Q4vAxGRvbj6Ii5E1PPYVIldunQprl9vnAh/3bp1OHDgAPr164e33noLGzZssGsBm+h0Ojz00ENYsmSJQ47fnCiKuJRXbjHmUl45RHN3SBARdUNNi7gAaDUpiSss4kIkJU29L+uPa6Hw8nF2cSTLpuEEjz32mPHnuLg4FBQU4OLFi+jXrx+Cg4PtVrjmmlYC27lzp0OO31zlLS3q6hosxtTVNaDylhYBgd4OL48jefl44K2MPxt/JiLX5cqLuBBRz2NTJbYlb29vjB071h6Hsqu6ujrU1dUZn6vVaqv20+msmyLM2jgiIntpmdeqqqo6tL+rLuJCRD2PTZVYvV6PnTt3IjMzE2VlZTAYDCavf/3113YpXGdt3LjR2ILbEQqFdcnc2jgih+IUVD2KrXmtOVdcxIWIeh6bx8QuXboUer0eI0eORGxsrMnDWqtXr4YgCBYfFy9etKWIAIAXXngBKpXK+CgqKrJqP/8AL3h4WK7fe3i4wT/Ay+ayERHZomVey83NdXaRiIicwqaW2A8++AC7d+/Gvffe26mTP/fcc1i4cKHFmEGDBtl8fA8PD3h4dHycpyAIGBIVggvnrrcZMyQqxKXmi3VpbKkkF9Iyr1k7TIqIqCt1xdSBNlViFQoFhgwZ0umTh4SEICQkpNPHcYSQUF+MiAnHT7klJtNseXi4cZ5Y6la6IlEQERF1NzZVYp977jls3boV27Zt67LWyMLCQty8eROFhYXQ6/XIyckBAAwZMgS+vo6pUIaE+kJW740n790MvyA/vPTuYkQO6csWWCIiIiIns6kSe/z4cRw6dAgHDhzAiBEj4O7ubvL6J598YpfCNbd27Vr885//ND4fM2YMAODQoUOYMmWK3c/XRBAEXDp3GQDg6+PGCiwRERFRN2BTJdbf3x8PPvigvcti0c6dO7tkjtiWDPp6TL8TCAuV4daPX8E/9LeQubm3vyMRERHZhMOkyBo2VWLfe+89e5ejWyo8uhPKmgt449Vxv265jKqvXoTKewT63bXQmUWzG7lcwF3e7wMAGuRLnVwaIqLO4yIuRD2DTVNs9QSFR3eijzwfvr1MV+Ty7eWNPvJ8FB7d6ZyCEREREZH1ldiZM2fi5MmT7cZVVVVh8+bN2L59e6cK5kyGhnooay4AQKsxsE3PlTUXYGio7/KyEREREVEHhhM89NBDmDNnDpRKJe6//36MGzcOERER8PT0xK1bt5Cbm4vjx4/jiy++wH333YfXXnvNkeV2qJIzX6C3n0+brwuCgF5+Pig58wUi4h/owpI5AOdQJSIiIgmyuhL7xBNP4LHHHsNHH32EDz/8EDt27IBKpQLQWKmLjo7G3XffjdOnT+OOO+5wWIG7Qn1VKeBpZRwRORRv8CAiInM6dGOXh4cHHnvsMTz22GMAAJVKBa1Wi6CgoFbTbEmZe68woP6adXFERERdjF/uiDp5Y5dSqUTv3r1dqgILAL3H3IsqtQaiKJp9XRRFVKk16D2mc8vuEhEREZFtODuBGTI3d6i8RwBAq4ps03OV9wjOF0tERETkJDbNE9sT9LtroXGe2F7NbvKqrqpxqXliyXXp9XrU13MGDalzd3eHXC53djGIugXmNddgr7zGSqwF/e5aiIqiQjz3yFMIC5XhobSHMDD5t1CyBZa6MVEUUVJSgsrKSmcXhezE398fvXv35rLX1GMxr7kee+Q1VmLbIZO7I/MbADBg8bZkDiGgbq8p0YeGhsLb25sVHwkTRRE1NTUoKysDAISHhzu5RBIhdzf/M0kW85rrsGdes6kSW1RUBEEQ0LdvXwDAqVOnsGvXLkRHR2Px4sU2F4aIOkev1xsTfVBQkLOLQ3bg5eUFACgrK0NoaCiHFlCPw7zmeuyV12y6sevRRx/FoUOHADR+O5oxYwZOnTqFNWvW4KWXXrKpIETUeU1jxby9vduJJClpej85FpB6IuY112SPvGZTJfb8+fNISEgAAOzevRsjR47EiRMn8P7772Pnzp02F4aI7INdba6F72fHyOUyHF4fg8PrYyCXcxIeV8G/A9dij/fTpr/u+vp6eHh4AAC++uorzJo1CwAwfPhwXL9+vdOFIiLn02k1WD/JC+sneUGn1Ti7OEREnca85lpsGhM7YsQIvPPOO7jvvvuQkZGBP/3pTwCAa9eucbwKdTtc2YaIiMj12NQSu3nzZrz77ruYMmUKHnnkEcTGxgIA9u3bZxxmQETSZtDrjT8XnD1u8lyqjh49ivvvvx8REREQBAF79+41G7d9+3YMGDAAnp6eSExMxKlTp9o9tjX7TJ48GYIgQBAEuLm5ITw8HCkpKTh58mRnL42IrMC85lp5zaZK7JQpU1BRUYGKigr84x//MG5fvHgx3nnnHbsVjoicI/fIXmx/bIzx+fsrZmPL3CjkHtnrvELZgUajQWxsLLZv395mzIcffojly5dj3bp1yM7ORmxsLO6++27jdDC27iOKIs6cOYNNmzbh+vXruHTpEnbt2gWZTIakpCRkZGTY9VotaX4jMCc7oJ6Cec318prNI97lcjkCAgJMtg0YMAChoaGdLhQROU/ukb3YveZRVFVcM9muLr+G3WsedXjCLywsxIIFCxAWFgYvLy/Exsbi+PHjdjn2Pffcg5dffhkPPvhgmzFvvvkmnnzySSxatAjR0dF455134O3tbfKF3ZZ9fv75Z1RVVeGuu+5C7969MWDAAEydOhUfffQRJkyYgDVr1tjlGq0iGjBuTC/MTA6EXHsNomjounMTOQHzmmvmNZsrsR9//DHmzZuH8ePHY+zYsSYPIpImg16Pg1tWABDNvNq47eDWlQ7rgisoKEBCQgK0Wi327duHc+fOIT09HX5+fiZxGzZsgK+vr8VHYWFhh8+v0+mQlZWF5ORk4zaZTIbk5GR8++23ndonKysLcrncOPyqiSAImDFjBnJycjpcXluIN3LhU7ALf9sWhU1/HATva59BzNoC8UZul5yfqKsxr7luXrPpxq633noLa9aswcKFC/Hpp59i0aJFuHz5Mk6fPo20tDR7l5GIukjB2W+gLr9qIUKEuqwYBWe/wcCxd9n9/EuWLMH48eOxe/du47ahQ4e2iktNTcW8efMsHisiIqLD56+oqIBer0dYWJjJ9rCwMFy8eLFT+2RnZyMqKsrsXJcKhQLu7o5fWUq8kQsxbzdaTWyjU0PM2w1EzYMQFO3wchB1JeY1181rNlVi//rXv2LHjh145JFHsHPnTqxatQqDBg3C2rVrcfPmTXuXkYi6SPUN66bIszauIwoKCnDgwAGcOXOm3djAwEAEBgbavQyOlJ2djbi4OLOv5eXlYfjw4Q49vygaIOYfBIDWldimmPyDQOBwCIK051bljCTUHPOa4zg7r9mUqQoLCzFx4kQAjUuHVVVVAQB+97vf4f/+7//sVzoi6lK+QdatYW1tXEfk5ORAoVBg9OjR7cY6qtstODgYcrkcpaWlJttLS0vRu3fvTu2TnZ1tdriVRqPBvn37MGfOnA6Xt0PUBYBObTlGp26MI3IhzGuum9dsqsT27t3b2OLar18/4zQK+fn5EEVzY06ISAr6x94Jv5A+aLutToBfaF/0j73T7ud2d3dHQ0MDampq2o1NTU1FTk6OxYct3W4KhQJxcXHIzMw0bjMYDMjMzMSECRNs3ufKlSuorKxslez1ej1SU1Ph5eXl+KFYumr7xhFJBPOa6+Y1m4YTTJs2Dfv27cOYMWOwaNEiPPvss/j444/x/fffIyUlxd5lJKIuIpPLMXPZ69i95lE0JvzmX0obPwBmLn0NMgfMy5SYmAilUoklS5Zg9erVEEURR48exfTp01uNH7O12626uhqXLl0yPs/Pz0dOTg4CAwPRr18/AMDy5cuxYMECjBs3DgkJCdiyZQs0Gg0WLVpk3G/btm3Ys2ePMcG3t09WVhYAIDw8HCUlJVCr1cjKysLWrVtRVFSE/fv3Q6lUdvh6OkTha984IolgXnPdvGZTJXbHjh0wGBqnZElLS0NQUBBOnDiBWbNm4fe//71dC+hsXj4eeCvjz8afXQ3HjlFL0ZNnY94ru3Dgz8+ZTEfjF9oHM5e+hujJsx1y3qCgIHz22WdYuXIl4uPjoVAoMH78eDzyyCN2O8f333+PqVOnGp8vX74cALBgwQLs3LkTAPDwww+jvLwca9euRUlJCUaPHo2DBw+a3OBQUVGBy5cvG5+3t092djYAYNiwYZDL5fD390dUVBRmzZqF1NTULhkHJ/r0RZVaA99e3mbXLBdFEdVVNejl07fN9ioiqWJec828Jog9qP9frVZDqVRCpVK1mtqiLVrVTXx3+gYAIDE+CF5KaQ26pp6ltrYW+fn5GDhwIDw9PTt3rGo1Ns1sTFb//fpeDI5PdkhLBbXP0vtaXFyMyMjIdvNafvZRfLfjaTz0u9kAYFKRbfoY+Oh/9yJx8V8ccoc2ka2Y11yTpffV2vqa1S2x586dw8iRIyGTyXDu3DmLsTExMdYeloi6qeaJvX/sJCZ6iau+cR0Xz/+Ej/53L+6eNR1K/9sfDOrKKnz5WSYunv8JIxxwhzZRd8G85lqsrsSOHj0aJSUlCA0NxejRoyEIgtmbuARBgN7OEwb/8ssv+NOf/oSvv/4aJSUliIiIwGOPPYY1a9ZAoVDY9VxE1IhDTVxL053XF8//hLwLP6PfwL7w9fNFtboahfnFxnzuiDu0iboL5jXXYnUlNj8/HyEhIcafu9LFixdhMBjw7rvvYsiQITh//jyefPJJaDQavP76611aFiIiKWq6Q1tdfg2iKKLgSlGLCAF+oX0ccoc2EZEjWF2J7d+/v9mfu8LMmTMxc+ZM4/NBgwYhLy8Pb7/9NiuxRERWcOYd2kREjmDT7AQ3btxAUFAQAKCoqAj/8z//A61Wi1mzZiEpKcmuBWyLSqVq9863uro61NXVGZ+r1e1M9E1E1M21zGtNi81Yo+kO7S/efBbVN0qM2x19hzYRkSN0aLGDH374AQMGDEBoaCiGDx+OnJwcxMfH489//jN27NiBqVOnYu/evQ4q6m2XLl3CX/7yl3an89q4cSOUSqXxERkZ6fCyERE5Usu8Fh0d3aH9oyfPxhNvH8PRH8biVN4IzP3jLiz76CIrsEQkOR2qxK5atQqjRo3C0aNHMWXKFPzXf/0X7rvvPqhUKty6dQu///3vsWnTJquPt3r1agiCYPFx8eJFk32uXr2KmTNn4qGHHsKTTz5p8fgvvPACVCqV8VFU1HIMGBGRtLTMa7m5uR0+hkwuR4U6AMUVvRE5cjyHEBCRJHVoOMHp06fx9ddfIyYmBrGxsdixYweeeuopyGSNdeGnn34a48ePt/p4zz33HBYuXGgxZtCgQcafr127hqlTp2LixInYsWNHu8f38PCAh4frLVBARD1Xy7zGYVJE1FN1qBJ78+ZN9O7dGwDg6+sLHx8fBAQEGF8PCAjo0PiskJAQ44wH7bl69SqmTp2KuLg4vPfee8aKMxE5hqjXQfxuAwBASHwRgpzT2RGRtDGvuZYO39jVcrlCc8sX2tvVq1cxZcoU9O/fH6+//jrKy8uNrzVVqomIiIio5+hwc+bChQuRkpKClJQU1NbWIjU11fj88ccfd0QZkZGRgUuXLiEzMxN9+/ZFeHi48UFEjiGKhts/qwtMnkvVxo0bER8fj169eiE0NBSzZ89GXl5eq7jt27djwIAB8PT0RGJiIk6dOtXusa3ZZ/Lkycbx/m5ubggPD0dKSgpOnjxpl+sjIsuY11wrr3WoErtgwQKEhoYa74p97LHHEBERYXweGhqK+fPn272QCxcuhCiKZh+OJpcLuMv7fdzl/T7kcse3OhN1B+KNXCBn++0NP74PMWtL43YJO3LkCNLS0nDy5ElkZGSgvr4ev/nNb6DRaIwxH374IZYvX45169YhOzsbsbGxuPvuu1FWVtbmca3ZRxRFnDlzBps2bcL169dx6dIl7Nq1CzKZDElJScjIyHDotRP1dMxrLpjXxB5EpVKJAESVSmX1PnVVN0X9N+tE/TfrxLqqmw4sHVHnabVaMTc3V9RqtTYfw1Bxwfg7b+5hqLhgxxK3VlBQIM6fP18MDQ0VPT09xZiYGPHYsWMOOVdZWZkIQDxy5IhxW0JCgpiWlmZ8rtfrxYiICHHjxo1tHseaffLy8kQA4okTJ0z2NRgMYlJSkhgfH9/m8S29r0VFRR3Oa5Ul18RRuE8chfvEypJrVu9H5AzMax3jCnnN2voa744iIiNRNEDMP2g5Jv+gw7rgCgoKkJCQAK1Wi3379uHcuXNIT0+Hn5+fSdyGDRvg6+tr8VFYWNju+VQqFQAYF07R6XTIyspCcnKyMUYmkyE5ORnffvut2WNYu09WVhbkcjliY2NN9hcEATNmzEBOTk675SWijmNec928ZtOKXUTkotQFgK6dKZt06sY45UC7n37JkiUYP348du/ebdw2dOjQVnGpqamYN2+exWNFRERYfN1gMGDZsmW48847MXLkSABARUUF9Ho9wsLCTGLDwsJazVndxNp9srOzERUVBW9v71bHUCgUcHd3t1hee/Ly8UTON+MAAA0+nl12XiKnYF5z2bzGSmx75Aq8tGozAODFjJVOLgyRg+mq7RvXAQUFBThw4ADOnDnTbmxgYGC7y063Jy0tDefPn8fx48c7dRxrZWdnIy4uzuxreXl5GD58eJeUg6jHYV5zGGfnNQ4nIKLbFL72jeuAnJwcKBQKjB49ut3Yzna7paenY//+/Th06BD69u1r3B4cHAy5XI7S0lKT+NLS0jan87N2n+zsbIwdO7bV/hqNBvv27cOcOXPavW4isgHzmsvmNbbEEtFtfv0BhZ/lrjeFX2Ocnbm7u6OhoQE1NTVmu6aas7XbTRRFPP3009izZw8OHz6MgQNNuw4VCgXi4uKQmZmJ2bNnA2jsnsvMzER6errZ81izz5UrV1BZWdkq2ev1eqSmpsLLywtpaWkWr4eIbMS85rJ5jZVYIjISBBkwcCbEvN1txwyc2RhnZ4mJiVAqlViyZAlWr14NURRx9OhRTJ8+vdX4MVu73dLS0rBr1y58+umn6NWrF0pKSgAASqUSXl5eAIDly5djwYIFGDduHBISErBlyxZoNBosWrTIeJxt27Zhz549yMzMtGqfrKwsAEB4eDhKSkqgVquRlZWFrVu3oqioCPv374dSqez4PxoRtYt5zXXzGiuxRGRCCIoGouZBzD8A6JotI63wa0z0QdEOOW9QUBA+++wzrFy5EvHx8VAoFBg/fjweeeQRu53j7bffBgBMmTLFZPt7772HhQsXAgAefvhhlJeXY+3atSgpKcHo0aNx8OBBkxscKioqcPnyZePz9vbJzs4GAAwbNgxyuRz+/v6IiorCrFmzkJqa2ulxcERkGfOaa+Y1QRS7YMWAbkKtVkOpVEKlUrWa2qItOq0GG2YEAwBezKiAwsvHkUUk6pTa2lrk5+dj4MCB8PTs3F3nhoZa4NSmxid3/DcE/8EOaamg9ll6X4uLixEZGdmxvFZ9C27ntgIAGmKWQuEbYPcyE9kL85prsvS+Wltf4ztHRGY1T+yCX38meiKSPOY118LhBERkliBXQJi43tnFICKyG+Y118KvIEREREQkOazEEhEREZHksBJLRERERJLDSiwRERERSQ4rsUREREQkOazEEhEREZHkcIotIjJLrzfg2KHG1VuSpg6GXM7vvEQkbcxrroXvHhERERFJDiuxRGRW8xWpK29p4QorVL/99tuIiYmBn58f/Pz8MGHCBBw4cKBV3Pbt2zFgwAB4enoiMTERp06davfY1uwzefJkCIIAQRDg5uaG8PBwpKSk4OTJk3a5PiKyjHnNtfIaK7FE1Ep5WTVOfVtgfP5DzjWcPP4LysuqnViqzuvbty82bdqErKwsfP/995g2bRoeeOABXLhwwRjz4YcfYvny5Vi3bh2ys7MRGxuLu+++G2VlZW0e15p9RFHEmTNnsGnTJly/fh2XLl3Crl27IJPJkJSUhIyMDIdeO1FPx7zmgnlN7EFUKpUIQFSpVFbvU1dTLa6701Ncd6enWFdT7cDSEXWeVqsVc3NzRa1Wa/MxykqrxEMZP7X5KCutsmOJWysoKBDnz58vhoaGip6enmJMTIx47Ngxh50vICBA/Nvf/mZ8npCQIKalpRmf6/V6MSIiQty4cWObx7Bmn7y8PBGAeOLECZN9DQaDmJSUJMbHx7d5fEvva1FRUcfzWtVNUf/NOlH/zTqxruqm1fsROQPzWsdJPa9ZW19jSywRGYmiiEt55RZjLuWVO6wLrqCgAAkJCdBqtdi3bx/OnTuH9PR0+Pn5mcRt2LABvr6+Fh+FhYUWz6XX6/HBBx9Ao9FgwoQJAACdToesrCwkJycb42QyGZKTk/Htt9+aPY61+2RlZUEulyM2NtZkf0EQMGPGDOTk5Fj1b0REHcO85rp5jbMTEJFR5S0t6uoaLMbU1TWg8pYWAYHedj//kiVLMH78eOzevdu4bejQoa3iUlNTMW/ePIvHioiIMLv9hx9+wIQJE1BbWwtfX1/s2bMH0dHRAICKigro9XqEhYWZ7BMWFoaLFy+aPZ61+2RnZyMqKgre3q3/3RQKBdzd3S1eDxHZhnnNdfMaK7FEZKTT6e0a1xEFBQU4cOAAzpw5025sYGAgAgMDbTpPVFQUcnJyoFKp8PHHH2PBggU4cuSIMeE7SnZ2NuLi4sy+lpeXh+HDhzv0/EQ9FfOa4zg7r3E4AREZKRRyu8Z1RE5ODhQKBUaPHt1ubGe63RQKBYYMGYK4uDhs3LgRsbGx2Lp1KwAgODgYcrkcpaWlJvuUlpaid+/eZo9n7T7Z2dkYO3Zsq/01Gg327duHOXPmtHvdRNRxzGuum9fYEktERv4BXvDwcLPY9ebh4Qb/AC+7n9vd3R0NDQ2oqakx2zXVXGe63VoyGAyoq6sD0PhBEBcXh8zMTMyePdv4emZmJtLT083ub80+V65cQWVlZatkr9frkZqaCi8vL6SlpVlVXiLqGOY1181rkqnEzpo1Czk5OSgrK0NAQACSk5OxefNmq99QImqfIAgYEhWCC+eutxkzJCoEgiDY/dyJiYlQKpVYsmQJVq9eDVEUcfToUUyfPr3V+DFbu91eeOEF3HPPPejXrx+qqqqwa9cuHD58GF9++aUxZvny5ViwYAHGjRuHhIQEbNmyBRqNBosWLTLGbNu2DXv27EFmZqZV+2RlZQEAwsPDUVJSArVajaysLGzduhVFRUXYv38/lEplh6+HiNrHvOa6eU0yldipU6fixRdfRHh4OK5evYoVK1Zg7ty5OHHihEPPq/DywfrjWoeeg6g7CQn1xYiYcPycVwZd3e0xYh4ebhgSFYKQUF+HnDcoKAifffYZVq5cifj4eCgUCowfPx6PPPKI3c5RVlaG+fPn4/r161AqlYiJicGXX36JGTNmGGMefvhhlJeXY+3atSgpKcHo0aNx8OBBkxscKioqcPnyZav3yc7OBgAMGzYMcrkc/v7+iIqKwqxZs5CammrzODgisg7zmmvmNUF01JwSDrZv3z7Mnj0bdXV1Vt/9plaroVQqoVKpWk1tQeQKamtrkZ+fj4EDB8LT07NTx2po0OP44SsAgFGjIxAY5O2Qlgpqn6X3tbi4GJGRkR3Ka7rqW3A71zheriFmKRS+AXYvM5G9MK+5Jkvvq7X1Ncm0xDZ38+ZNvP/++5g4caLFCmxdXZ1xTAjQ+I9CRNZpntj9A7yY6LuJlnmtqqrKiaUhkhbmNdciqdkJnn/+efj4+CAoKAiFhYX49NNPLcZv3LgRSqXS+IiMjOyikhJJn1wuw5TkoZiSPBRyuaRShUtrmdccPYUOkSthXnMtTn0HV69eDUEQLD6aT6q7cuVKnDlzBv/5z38gl8sxf/58iytsvPDCC1CpVMZHUVFRV1wWEZHDtMxrubm5zi4SEZFTOHU4wXPPPYeFCxdajBk0aJDx5+DgYAQHB2PYsGG44447EBkZiZMnTxqXVmvJw8MDHh4e9iwyEZFTtcxrHCZFRD2VUyuxISEhCAkJsWlfg8EAACZjw4iIiIioZ5DEjV3fffcdTp8+jUmTJiEgIACXL1/GH/7wBwwePLjNVlgiIiIicl2SGNXs7e2NTz75BNOnT0dUVBSeeOIJxMTE4MiRIxwuQERERNQDSaIldtSoUfj666+dXQwiIiIi6iYk0RJLRF2vRlOLGOG/ECP8F2o0tc4uDhFRpzGvuRZWYomIiIhIcliJJSKz9Prb64tnHT1v8twVbNq0CYIgYNmyZa1e2759OwYMGABPT08kJibi1KlT7R7Pmn0mT55snAPbzc0N4eHhSElJwcmTJ+1xSUTUDuY118prrMQSUStffXICD0Y/ZXyedu96zBzwBL765IQTS2U/p0+fxrvvvouYmJhWr3344YdYvnw51q1bh+zsbMTGxuLuu+9GWVlZm8ezZh9RFHHmzBls2rQJ169fx6VLl7Br1y7IZDIkJSUhIyPDIddKRI2Y11wwr4k9iEqlEgGIKpXK2UUhcgitVivm5uaKWq3W5mNk/PsbMUa4TxwF00eM0PjI+Pc3dixxawUFBeL8+fPF0NBQ0dPTU4yJiRGPHTtmt+NXVVWJQ4cOFTMyMsTJkyeLS5cuNXk9ISFBTEtLMz7X6/ViRESEuHHjxjaPac0+eXl5IgDxxIkTJvsaDAYxKSlJjI+Pb/P4lt7XoqKiDue1uqqbov6bdaL+m3ViXdVNq/cjcgbmtfa5Wl6ztr7GllgiMtLr9di8dAfMrebctO3VZTsc1gVXUFCAhIQEaLVa7Nu3D+fOnUN6ejr8/PxM4jZs2ABfX1+Lj8LCQrPnSEtLw3333Yfk5ORWr+l0OmRlZZm8JpPJkJycjG+//dbs8azdJysrC3K5HLGxsSb7C4KAGTNmICcnp91/HyLqOOY1181rkphii4i6RvaxCygtrmjzdVEESooqkH3sAuKntO6y6qwlS5Zg/Pjx2L17t3Hb0KFDW8WlpqZi3rx5Fo8VERHRatsHH3yA7OxsnD592uw+FRUV0Ov1CAsLM9keFhaGixcvdmqf7OxsREVFwdvbu9UxFAoF3N3dLV4PEdmGec118xorsURkVH79ll3jOqKgoAAHDhzAmTNn2o0NDAxEYGBgh45fVFSEpUuXIiMjA56enrYW02bZ2dmIi4sz+1peXh6GDx/exSUi6hmY1xzH2XmNwwmIyCgkPMCucR2Rk5MDhUKB0aNHtxtrS7dbVlYWysrKMHbsWLi5ucHNzQ1HjhzBW2+9BTc3N+j1egQHB0Mul6O0tNRk39LSUvTu3dtsWazdJzs7G2PHjm21v0ajwb59+zBnzpx2r9tu5Aq8tGozXlq1GZAruu68RE7AvOa6eY0tsURkNDZpBML6BqPsaoXZ8WOCAIT1DcbYpBF2P7e7uzsaGhpQU1NjtmuqOVu63aZPn44ffvjBZNuiRYswfPhwPP/885DL5ZDL5YiLi0NmZiZmz54NADAYDMjMzER6errZ8ygUinb3uXLlCiorK1sle71ej9TUVHh5eSEtLc3i9RCRbZjXXDevsRJLREZyuRzPb12M5+ZuAAQAzRK+IDT+f9WWxZDL5XY/d2JiIpRKJZYsWYLVq1dDFEUcPXoU06dPbzV+zJZut169emHkyJEm23x8fBAUFGSyffny5ViwYAHGjRuHhIQEbNmyBRqNBosWLTLGbNu2DXv27EFmZqZV+2RlZQEAwsPDUVJSArVajaysLGzduhVFRUXYv38/lEplh66HiKzDvOa6eY2VWCIykZwyEW98/CI2PfMuyq7eMG4P6xuMVVsWIzllokPOGxQUhM8++wwrV65EfHw8FAoFxo8fj0ceecQh52vLww8/jPLycqxduxYlJSUYPXo0Dh48aHKDQ0VFBS5fvmz1PtnZ2QCAYcOGQS6Xw9/fH1FRUZg1axZSU1M7/MFFRB3DvOaaeU0QRXON665JrVZDqVRCpVK1mtqCyBXU1tYiPz8fAwcO7PQg/yq1BncqHwYAbP9iPSb+ZoxDWiqofZbe1+LiYkRGRnYor+m0GmyYEQwAeDGjAgovH7uXmchemNdck6X31dr6Gm/sIiKzmif2uLtGMtETkeQxr7kWDicgIrO8fTxxTtzv7GIQEdkN85prYUssEREREUkOW2KJiHoYhZcP1h/XOrsYRESdwpZYIhfUg+7X7BH4fhLx78DV2OP9ZCWWyIU0rVNdU1Pj5JKQPTW9n45eh5yoO2Jec032yGscTkDkQprm6isrKwMAeHt7Q2iazZskRxRF1NTUoKysDP7+/ryTmnok5jXXYs+8xkoskYtpWte6KeGT9Pn7+7e5xjlRT8C85nrskddYiSVyMYIgIDw8HKGhoaivr3d2caiT3N3d2QJLPR7zmmuxV15jJZbIRcnlclZ+iMilMK9Rc7yxi4iIiIgkh5VYIiIiIpIcVmKJiIiISHJ61JhYvV4PACguLoafn5+TS0NE1HlFRUUAgMLCQvj7+zu3MEREdqBWqwHcrre1pUdVYi9dugQAGDFihJNLQkRkX6NGjXJ2EYiI7OrSpUuIj49v83VB7EHruN26dQuBgYEoKipiSywRuYTi4mKMGDGCeY2IXIZarUZkZCRu3ryJgICANuN6VEts07Qcfn5+TPZE5BKachnzGhG5mvamU+ONXUREREQkOazEEhEREZHksBJLRERERJLDSiwRERERSQ4rsUREREQkOazEEhEREZHksBJLREQuRafVYP0kL6yf5AWdVuPs4hCRg7ASS0RERESSw0osEREREUkOK7FERABWrFiB2bNnO7sYRER24+p5jZVYIiIAOTk5GD16tMOOv3HjRsTHx6NXr14IDQ3F7NmzkZeX57DzERE5Oq+9/fbbiImJMS57PWHCBBw4cMBh52tJUpXYo0eP4v7770dERAQEQcDevXudXSQichFnz551aLI/cuQI0tLScPLkSWRkZKC+vh6/+c1voNHwxiMicgxH57W+ffti06ZNyMrKwvfff49p06bhgQcewIULFxx2zuYkVYnVaDSIjY3F9u3bnV0UInIhxcXFqKioMCb7yspK3H///Zg0aRJKSkrsco6DBw9i4cKFGDFiBGJjY7Fz504UFhYiKyvLLscnImquK/La/fffj3vvvRdDhw7FsGHD8Morr8DX1xcnT560y/HbI6lK7D333IOXX34ZDz74oLOLQkQuJCcnB/7+/hgwYAB++OEHxMfHo0+fPjh06BB69+5tjNuwYQN8fX0tPgoLC606p0qlAgAEBgY65JqIqGfr6rym1+vxwQcfQKPRYMKECY68NCO3LjmLk9TV1aGurs74XK1WO7E0RNRd5eTkIDY2Frt27UJ6ejo2b96MJ598slVcamoq5s2bZ/FYERER7Z7PYDBg2bJluPPOOzFy5MgOlbVlXquqqurQ/uQadFoNNswIBgC8mFEBhZePk0tE3U1X5bUffvgBEyZMQG1tLXx9fbFnzx5ER0d3uvzWcOlK7MaNG/HHP/7R2cUgom4uJycH586dQ3p6Oj7//PM2WxECAwPt0nKalpaG8+fP4/jx4x3el3mNiKzRVXktKioKOTk5UKlU+Pjjj7FgwQIcOXKkSyqykhpO0FEvvPACVCqV8VFUVOTsIhFRN5STk4OUlBTU1taisrKyzTh7dLulp6dj//79OHToEPr27dvhsrbMa7m5uR0+BhG5vq7KawqFAkOGDEFcXBw2btyI2NhYbN261QFX1JpLt8R6eHjAw8PD2cUgom6sqqoKV65cwUcffYSJEyfit7/9LU6cOIERI0a0iu1Mt5soinj66aexZ88eHD58GAMHDrSpvC3zGodJEVFLXZXXzDEYDCZDnhzJpSuxRETtOXv2LORyOaKjozFmzBicP38e999/P06dOoXg4GCT2M50u6WlpWHXrl349NNP0atXL+PdwUqlEl5eXp2+DiKiJl2V11544QXcc8896NevH6qqqrBr1y4cPnwYX375pT0uo12SGk5QXV2NnJwc5OTkAADy8/ORk5Nj9d3AREQt5eTkYPjw4cbWzddeew1RUVFISUmBTqez23nefvttqFQqTJkyBeHh4cbHhx9+aLdzEBEBXZfXysrKMH/+fERFRWH69Ok4ffo0vvzyS8yYMQM6rQbrJ3lh/SQv6LSOmQ9bEEVRdMiRHeDw4cOYOnVqq+0LFizAzp07291frVZDqVRCpVLBz8/PASUkIupaxcXFiIyMZF5rpifcud8TrpGkrTO/o9bW1yQ1nGDKlCmQUJ2biIiIiBxEUsMJyP70egMOf/UzDn/1M/R6g7OLQ9RKV3RJERGR9LASS0RERESSw0osEREREUmOpMbEOoOo10H8bgMAQEh8EYJc4eQSERERERErsT2cquIGnpnxLADgcMl7CAwLcXKJiHoe3mlORNRxHE5ARERERJLDllgiInIteh3Wvvo8AKBBrwPAlm3qXjhU0T5YiSWX5+pdtbrqW3A7txUA0BCzFArfACeXiIiIyPE4nICIiIiIJIeVWCIiIqIuVN9s4ZZ6LuJiMw4n6On0DeZ/diUcH0fdHX9HiUy4+jAwsg9WYomIiCRGq6nFJ99MBwA8q6l1uUqeXm/AlPXnjD8TmcNKLBFRD8M7o6nb09eb/5moGVZiyeXp9SJO1Pw3ACBRLzq5NNRh7GqnDuLfPJHz6XV1t1vTdXWAA3oLWIklInIyraYWSXd+DwA4VlILha9jz6fXG3D810reJL0BbnLHnq+raTV1t1civPo/8FI6uUBE5BCsxLajRlOLCb9+uHyrqoWPH7vdiIjIuZqPE+WYUeqpWIklkjh2nUqfXm/+ZyIiahsrseTyXL1r0fWvr2u72omISBpYiSUiIiLqQj2hB82g1+NW/mnoqstR6DEYQyfeA5ncvgPwWYklIiIi6kKu3oOWe2QvDvx5OaoqrgMAfvw34BfSBzOXvY7oybPtdh4uO0tE3RrHixIRSUfukb3YveZRYwW2ibr8GnaveRS5R/ba7VysxBIREVG30tRS+cyMZ6HV1Dm7OGQlg16Pg1tWADA3RKJx28GtK2GwU4sEK7FERERE1GkFZ7+BuvyqhQgR6rJiFJz9xi7nYyWWiIiIiDqt+sb19oM6ENceVmLbYWg2ibSBE0oTdbnmE7mfOZEHPQfGEhF1S75B4XaNaw8rsURSJxowbkwvzEwOhJv2GkTRdb5sffXJCfw2cbXx+bMPvY6ZA57AV5+ccGKpHMCF30NyDJMvd99c5Jc7qXHRv/n+sXfCL6QPAKGNCAF+oX3RP/ZOu5yPU2wRSZh4Ixd+xZ/jb9uiGjeUfgbx1hFg4EwIQdHOLVwnffXJCTw3dwPEFvcHlF2twHNzN+CNj19EcspE5xTOjlz5PSTH+OqTE9iY/rbx+bNzNiOsbzCe37rYJf4mXJ0r/83L5HLMXPY6dq95FI0V2eYJvLFiO3Ppa3abL1ZyLbHbt2/HgAED4OnpicTERJw6dcrZRaJuzlW7o8UbuRDzdkPQa0xf0Kkh5u2GeCPXOQWzA71ej81Ld7SqwAIwbnt12Q7Jv5fOeg+1mtpmd37XOuQc5BhNX+7Kr98y2d705c7leilcTNPfvEFXjdPZahzIuIHT2WrotSrJ5+0m0ZNnY94ru+AbHA7/AeMQOvIe+A8YB7+wSMx7ZZdd54mVVEvshx9+iOXLl+Odd95BYmIitmzZgrvvvht5eXkIDQ11dvEkqaFBj4hBEVB4uuPE17mY+dsQuLlJ6tfColYtFg+9jrC+OyXfYiGKBoj5BwEABr2I7LNVqLhRj+Agd4yN7QW5XGh8PXA4BEFy31WRfewCSosr2nxdFIGSogpkH7uA+CkxXVgy+2n+HkIUUGkIgU70gkLQQikrhyCIkn4Pyf7a+3InCI1f7qY+kAi5nVdG6mqiKGJIzGD4BfmhWtOAAFGEILTVRS0NTX/zmYdv4dUthSgtrze+FhbijlXL+mG6wjX+5kPuSMb4ZQfR0HB7m8JDjpAo+9bVJFVbefPNN/Hkk09i0aJFAIB33nkHn3/+Of7xj39g9erV7ex9m0ajMfsHLpfL4enpaRKn0WhgQIPxuUzhDgCQyWTw8vIyiW1Ly9iamhqI5rIQAEEQ4O3tbVOsVquFwdD2uBofHx+T2E//dQR//cP/orJcBQB48Xd/xqvL38NTf3oMv/39TGNsbW2txRav5sdtL9bb29uYiOrq6tDQ/De8E7FeXl6QyRr/6HU6Herr63H40+/wwmNvtpqurnl39F3/NQ719fVmjtjI09PT+LvSdFxrYuvr66HT6dqM9fDwMH5Z6EhsQ0MD6urqIKsuhIdObTkZTgFqy/Jg8O1n9rgKhQLu7o2/z3q9HrW1bbfIubu7Q6FQdDjWYDBAq9V2OLY4v6TNfZorzi9BdPzgVtvd3Nzg4eEBoPHDsKamps1jmPu7t0dsezmi6T2saIjET7Vj8OMPpVDfUMMvqDfuGDUewzzPIBhFrd5Dc3/3TcdnXmuM1dTU3L6+mhp4/HodHclV3TGvfZeZY9WXu+++PovYiVFtxnXXvNbk5g0tfrmswTNvpAMArhTU4mrJLxgSFYKAQE+T2Ja6c16TVRfi+H8KsGLN5VazqJaV12PFmst4HcCkSPN5Wwp5DWh8/y7/dBMGvQGXz+f/mtf8MHjkQFw4dw2DhwUiMMjLZB9zOcIqokTU1dWJcrlc3LNnj8n2+fPni7NmzTK7T21trahSqYyPoqIiEY1VGrOPe++912R/b2/vNmMnT55sEhscHNxm7Lhx40xi+/fv32ZsdHS0SWx0dHSbsf379zeJHTduXJuxwcHBJrEPzfj/iaNwX5uPf/8j0xh77733Wvx3a27u3LkWY6urq42xCxYssBhbVlZmjH3qqacsxubn5xtjV6xYIQIQozBNHIl7zV5fjHCfOCNygbj2D2stHvfUqVPG47766qsWYw8dOmSM3bZtm8XY/fv3G2Pfe+89i7G7d+82xu7evVsEIP42eaT4n1eeEWPMXduvj/+88oz42+SRbR5327ZtxuMeOnTIYhleffVVY+ypU6csxq5bt84Ye/78eYuxK1asMMbm5+cbt/sg0OLvZ9PDB4Fmj7tgwQLjcaurqy2WYe7cuSa/w5Zi7Zkjfps8Uiw98jdxy9qPxKTgR02uKyn4UXHL2o/E0iN/a/UeDh8+3CSvDRo0qMvK3PzRHfPa5MmT24z19vY2iZViXlMiwqq/i8dT0i0et7vmNQBi0qTfiF//56L49X8uiocyfmr1OPDFYYvH7c557eHpI8XkkNkW37vk0Nniw9PN520p5DWZTCbu+/cJi3lt38ffiDKZzGS/ljkiKipKBCCqVCrREsm0V1dUVECv1yMsLMxke1hYGEpKzLfabNy4EUql0viIjIzsiqJ2ew0NDbiWXW0xZuvqf1hsIejufBAIBbwgtHGHZFOLRUVhVReXzD6uVVTh1S2FEM281rTt1a2FuFYhzevT4CbkigYL97cCbh710OBmVxbLrkpuavDR1574+0s7UVmhMnmtskKFv7+0Ex997YmSm6YtHRUVFSZ57cqVK11ZbHKiBlg3ftmzl7uDS+IYMpkM6U+tAYA2u9MVbiHG1mmpKSowmPSamVNaVo+iAunOVBAbE48rZ69ZzGtXzl1HbEy8Xc4n/FpD7/auXbuGPn364MSJE5gwYYJx+6pVq3DkyBF89913rfapq6sz6XZQq9WIjIzEtWvX4Ofn1yreXJN61a1KJEc+AQD4qujv6BXgD0Da3W5f7zuNZQ/8sc24Jls+XYdps+Il2e32+fuHse7xt9qMb/Lyv57F9JTxbb7eXbvdso+eR9q9f2r7wn61/Ys/YOxdI82+1p273SAacPyvL2PV8xcanzbbp6li++rmkZj01BrAzIedFLrdbt3Q4NG4Z1sl+ub8Q/yx6/s3ERB0+29Mp9OZDBu4fPkyxo4d2+PzWvPYm9dLcM/QNADAgZ+3IzC8d6tYKea12to6pESnoexq21/eekcG49O8ty3+m3XXvKZW1SEv9wYA/NoVfaVZV/QgyOSN/xZR0UHwU3qYPW53zmtffngM65/Y1uZ+Tdb/PR13P5zUarsU8lp5QQHmT36l3bz2r8MvIqR/f+O2ln/3JSUlCA8Ph0qlMpvXmkhmTGxwcDDkcjlKS0tNtpeWlqJ3795m9/Hw8DC+4c35+PiYJKi2+Pj4wKCrh+zXfyZL+1lzvCbN3yh7xjb/xbKk9OqNDsU1/+VuT0di23p/OhurUCjQd6D534mWwiNDrH7vFAqFMTG1x93d3ZhI7Rnr5uYGNzc3qG9aN15IfbPGquuTy+VW/zt0JFYmk9kUK6ryMWOSF9b+KQFbt15EZYXaGOcfosQzz0RhxiQDBH0FBOVAi8cVBKFDf59dFfvNl+ctJnoAqCyvRO73+fhNSmKbxwkJCTFutzav1anUxrymsPAeSSmvNY+t8/a+nbe9vc1ehxTzmkKhwGO/H4M3137169bmfRWNXwoefTK2Q/9m3SmvVVc1VrzPHjuHf//1E5O/D/9gJeY8lYLYpBjIZO6SzGv+wUFW7eMfHNTu8btrXvvu7CWr8tqVs5cwILrt6cSszRGSqcQqFArExcUhMzMTs2fPBtD4DSczMxPp6enOLZzEhPWx7g/J2rjuaPTE4fD2rEdNbdtJ1NurHqMnDu/CUtmPXmNpbeqOx3U7umpUNEQiaHwS1se3vjlAJpehouEYQnSWh8V0Z6oblhN9R+PI9Rn0etzM3o7E4TqcuzIMWt3tyrWXog4xg37GzTM/waB/xm7zcHYlhUKOs8fO4e8vvdfqtcau6PfwxNpFiB3bxwml67yoMUPgH6xst5UyasyQLiyVfWk1bd90Z0tceyRTiQWA5cuXY8GCBRg3bhwSEhKwZcsWaDQa42wFZJ277h2DgBB/3CqvbDMmINQfd907pusKZWfF50/izjvdkZHZdsydE91RfP4kBo69q+sKZif9+smhDOoF1Y22x7wqg3qhXz/pfZABgOjug0v1cQAaJ88eGtsyqYu4XB+HYHefNsfNdnf9BoXYNY5cX8HZb6Auv4rYSdPx4B9X4mpRjfHLXZ9Ib1zJeA0VP2ai4Ow3ksxrvfwU+OTtPRZjPnlnD9L+8EAXlci+1NfyMOepFLOV9CZzljwI9bU89Ilse5hbdxYyeJhd49ojqdHRDz/8MF5//XWsXbsWo0ePRk5ODg4ePNjqZi+yzM3NDUs3P24xZummxyU9X2zVjeuYseR5PL52AfyDlSav+Yf44/G1CzBjySpU3bjupBJ2jkfAQMxNm2sxZm7aXHgEWO5q765UhjDoRB9YWrqwTvSByiDdv/0gPxXa67Xz8WmMIwKA6hvXEXzHdIyY9wa8AnpjaOwQxE0bi6GxQ+AV0Bsj5r2B4Dumo1qiee3M8VyLjSsAcKusEmeOS3NBgHp1AaJiQi1+LkXFhKBeXeCkEnZe3F0jERahtBgT1keJuDbu1egoydVS0tPTOXzADlIWTQMAbHn+H6hsljQCQv2xdNPjxtelyt2vPzyFIIxO6o2YiTFt3iDg3su6sWDdTUDkHYhNCsITaxe1HjsW4o85Sx5EbFIMAiKluQhIXa11M2NYG9cdaStLMTLyHL672PZiDSMjz0FbWdrm62SewaBHsN8teCrqUHzhJPzDZkmye70ln8BwDJn5PIDWd+8LggyiaMCQmavgE+iM0nVey1XIOhvX3fQKCsel3ZsRO+8NjJowElcu/GL8XBo0YgBkchku7H4OUUtWObuoNpPL5Xj+L2lmlwwXfv3P82+l2W0xDslVYsl+UhZNw6TpwzB/6ktQeLpj8QspmPnbyZJugW0SEHkHSnPLAAAyucxMd/TtOCny8Gwc6xubFINRE0e2WUlvipOaW0U/Amh/TPatoh/RO0Ka3W6+QeHoE1SOxOHnzIxvrEXMoJ/QJ6gcvkHhTiyl9OQe2Yv9bzyLO/rVolbngXeXP4WBg1fi3mdft+tyl87g338sPG+13coqCDJ4KsPh31+avzPBvf3tGtfd9I+9E7qKi7iwewWGzFxl8rlUq7qOSwdfg+5GHvrH3unEUnZecspEvPHxi9iY/rbJF47QyGA8v8W+q2VKv7ZCneLmJse1K9cAABOnRbtEBRawvvIm1Uqef4AXPDzcUFdX30YlXYSHhzv8A6y/S7k7qVcXoFZdDw+/ULPzRYqiAXXqUtSL1wFIsxLbP/ZO+IX0AXANEYHlqFD7o1bnAU9FHYL9KiEIAvxC+0r+A60r5R7Ziz+nLsW5K0NNvhR8/1Mt8vKW4tl3IOmKbH2DdTNiWhvX3YyN9UVYiDvKyuvNzoEtAAgNdcfYWN+uLppdyORyzFz2OnaveRQVFw/Bv/8YKHxDoKsuR2XBGUA0YN4ru1yi1yA5ZSJi4/tjer/fAwD+/NEKTHkwye7LIUtqTCw5gGjAuDG9MDM5EG7aaxBF6U6y3FxTJQ9mUyHQWMlzk2wlTxAEDIkKgaUxo0OiQiS71nivoHBcOrgZAFr9TjY9v3TwVfSScCtl0wca0Ph+higrERlSihBlpfF9m7n0NZf4QOsKBr0e765aj+8ujjKpwAKAVueJ7y6Owrur/giDhfleuzuFwrrfBWvjuhu5vgarljUut9oyczU9X7W0H+R6K5ck7YaiJ8/GvFd2wTcwBJW/fI+y8wdQ+cv38AsJx7xXdkn6S1ZLcvntKuaYiVF2r8ACrMT2aOKNXPgV78LftkVh0x8Hwbf0M4hZWyDekOag+eZuV/KA1hXZxudSruQBQEioL0bEhMPdzfQaPDzcMCImHCGh0mytAEy73erUZSav1alLcWH3CpfodjN+oAWZ3qDmF9rH5T7QHO1K9jGcutDXYsypC31wJftYF5XI/m5/OW+blL+ci27emD4lAK+/MhihIaa9ZKGh7nj9lcGYPiUAopv18wx3R9GTZ2Ph9mM4+sNYnMobgZR1u7Dso4v8e7eBzX3HhYWFKCgoQE1NDUJCQjBixAirJ20m5xNv5ELM2926HU+nhpi3G4iaByGo7YmIpSBYXohoxbe4VB/3653ujTyEGgx2z0KwfAIAaV9jSKgvZPXeePLezfAL8sNL7y5G5JC+kq6cAz2r2y168myEDh6HeSMehqeiDpt2rcHIaa5xI1JX+v7IWVhYaAgAoNE0xg2Jn9IlZbK3pi/nF861PS5Wyl/OC64Uw79SjWmT/TElyR/ZZ6tQcaMewUHuGBvbCzIZoLqlRuWVYgyMG+zs4naKTCZHhToAANB3xHj+vduoQ5XYX375BW+//TY++OADFBcXmywbqFAokJSUhMWLF2POnDmSXdu4JxBFA8T8gwDa7owW8w8CgcPbXL+6u2u6xmA3NYLkxVAZQqATvaAQtFDKyiEIIsR8laSvsYkgCLh07jIAwNfHTbIfYC01tVIe+PNyVP7yvXG7X2hfzFz6mku1WvADrfOqtdatMmRtXHfV1APzU26JydhXDw85hkSFSroHpvpmCb7bl4mHfjcbMhkQP/b2cqNN9Y0vP8vEiDmJbR2CehirP72feeYZxMbGIj8/Hy+//DJyc3OhUqmg0+lQUlKCL774ApMmTcLatWsRExOD06dPO7Lc1BnqAkCnthyjUzfGSVWzaxQEEf7yMoS6FcBfXgZB+DXxS/0ae4DoybOR+o/vELvg77hjziY8svEjdruRWZF3jLBrXHcWLC9EgucexHhkYLjiOGI8MpDguRfB8kJnF61TfIPCcfH8T/jof/dCrTJdyEVdWYWP/ncvLp7/iTN2kJHVLbE+Pj64cuUKgoJaT3sTGhqKadOmYdq0aVi3bh0OHjyIoqIixMfH27WwZCfWLtUp4SU9e8Q19hAyuRwBAxtzSb+YILZSkllxk0dZtaRn3ORRXVgq+2saCiYD4C9vNn6iHpIfCtY0Y8fF8z8j78LP6DewL3z9fFGtrkZhfjFEES4zY4eXjwfeyviz8WeyjdUtsRs3bjRbgTVn5syZSElJsblQ5GAKK7ubrI3rjnrCNRKRUVCwDx5eankVu4efmYOgYOkOJ7B2KJhUZ5lpPmOHKAIFV4pwIedHFFwpMk6czxk7qDmbBgNqtVrU1Nye4qKgoABbtmzBl19+abeCkQP59QcUfpZjFH6NcVLVE66RiIwEQcC8xTPwxNqFZpf0fGLtQsxbPEPaY8Z7wFAwztjhOppam9/K+LPDWpttmp3ggQceQEpKClJTU1FZWYnExES4u7ujoqICb775JpYsWWLvcpIdCYIMGDgThou7AYgmSb1x8LwA2cCZkr7hqekaxbzdaLwiMzESv8Ym7JYiahQsL8Qj01WIu/M5/PhDqXEVu+hRYRjqeebXMaPS7GoH0GOGSXHGDrKWTZ/g2dnZSEpKAgB8/PHHCAsLQ0FBAf71r3/hrbfesmsByTF+PP8TPvrfPW0Mnt+DH8//5KSS2Y8QFA0hah7g1mLIgMIPgoTHjRFRa7dnJCnCBJ/PMCchH/89swZzEvIx3uczBLsVSbqrHUCPGibVNGNHcUVvzthBbbKpJbampga9evUCAPznP/9BSkoKZDIZxo8fj4IC6XZj9BQGvR4Ht6yAuvxqm4Pnr21dieGT7pd84hCCoqGTh+Ji9kUoBC0GR4XBI3ykS7TAkguRu5n/maxnZkaSVpq62pUDu7hwdtI0TMrSkAIOk5IEuVzAXd7vAwAa5EudXBrH8PT1xV3ejQ2bgu+LDjmHTZ/kQ4YMwd69e1FUVIQvv/wSv/nNbwAAZWVl8PNrZxyi1DRbllWmKZL2t/hfFZz9BuryqwAahw+YDp4XAYhQlxWj4Ow3zi2ovQgyqAxhKNcPgOjTlxVY6naaL8/Y/GfqgB7Q1S4IMggDZwJoe0FtVxkmRWQNm77yr127Fo8++iieffZZTJ8+HRMmTADQ2Co7ZswYuxbQmcQbufC6/AX+ti2qcUPhvyGWZAADZ0q6K7r6RturvdgSR04mdzf/M1FP0kO62oWgaCBqHsTLXwANzSrkCr/GCqyEP5vItQhyBYSJ6x16DpsqsXPnzsWkSZNw/fp1xMbGGrdPnz7dZabWcuVlWa2dKJoTShN1DS8fT6TcmWn8mWzQg7rae8IwKZe/YVWuwEurNgMAXsxY6eTCSJdNv/GPP/44fHx8MGbMGJPlZUeMGIHNmzfbrXDO4upz8TVNKN321QkuM6E0SV/T2LG7vN+HXC7h6ZHIoXpcVzuHSRHZVon95z//Ca1W22q7VqvFv/71r04Xyuma3SCg14s4na3GgYwbOJ2thl4v/SVLm08o3boi2/icE0pTt/Fri8VLqzYDcoWzS+MSRFHEkJjBGDt1DKo1DcZ16aWuaUYSUd5iQQPOSCI5/PJK1ujQcAK1Wg1RFCGKIqqqquDpebvbS6/X44svvkBoaKjdC9nlfh34n3n4Fl7dUojS8nrjS2Eh7li1rB+mTwmQ9A0CTRNKf/Hms6i+UWLc7hfaBzOXvsYJpYlcVHlZNX76uQbPvJEOALhSUIurJb9gSFQIQkKlPV4UaKzIqmuVWHH/CgQHueP/vbMUvQaNYUslkQvqUCXW398fgiBAEAQMGzas1euCIOCPf/yj3QrnNApfZB6+hRVrLrfqliorr8eKNZfx+iuDkTxC2gmfE0oT9SzlZdW4cK71DZt1dQ24cO46RsSEu0RFFoIM359pnAN7tVcEK7BELqpDldhDhw5BFEVMmzYN//73vxEYGGh8TaFQoH///oiIiLB7Ibua3qcvXt1abHZcVdPqT6++VYypq/radmdcN9I0oTQATihN5MJEUcSlvHKLMZfyyhEc4iPtpVmJqMfoUB1s8uTJAID8/HxERkaa3NTlSs4c/xGlZXVtvi4CKC2tw5njPyJ+SkzXFYzIDLlchsPrG38PJ2ZUOLk01F1V3tKirq7BYkxdXQMqb2kREOjdRaUiIrKdTQ2J/fs3TlFSU1ODwsJC6HQ6k9djYqRdsSu/fsuucUREzqbT6e0aR0TkbDZVYsvLy7Fo0SIcOHDA7Ot6vbSTYEh4gF3jujOXn4uPiAAACoV1Q4WsjSMicjabxgMsW7YMlZWV+O677+Dl5YWDBw/in//8J4YOHYp9+/bZu4xdbmzSCIT1DUZbw8IEAegdGYyxSSO6tmBERDbyD/CCh4fldgsPDzf4B3h1UYmIiDrHppbYr7/+Gp9++inGjRsHmUyG/v37Y8aMGfDz88PGjRtx33332bucXUoul+P5rYvx3NwNjXdxNbvDq6liu2rLYsh5E5QkNM03CAAN8qVOLg2RcwiCgCFRIWZnJ2gyJCqEN3VJBPOatCm8fLD+eOv59qljbGqJ1Wg0xvlgAwICUF7eeMfrqFGjkJ2dbb/SOVFyykS88fGLCOltOmQgrG8w3vj4RSSnTHRSyaij3L18zP7sKpqS4frjWihc8PrIfkJCfTEiJhxyQcTPZy8h6+ts/Hz2EtzdZK4zvRYR9Rg2tcRGRUUhLy8PAwYMQGxsLN59910MGDAA77zzDsLDw+1dRgDAK6+8gs8//xw5OTlQKBSorKx0yHmaS06ZiJhx/TB/6ktQeLpj8QspmPnbyXBzk/rEWkTUU509fg4b0982uTE1rG8Qnt/6e345JyJJsak2tnTpUly/3tgltW7dOsycORPvv/8+FAoFdu7cac/yGel0Ojz00EOYMGEC/v73vzvkHC2Vl1Xj5yu1WP3uSuO2098WuczKNkTUs3z1yQk8N3cDWq4yW3b1Bp6bu4G9TEQkKTZVYh977DHjz3FxcSgoKMDFixfRr18/BAcH261wzTWtBOaoSnJLPWVlG46rIuoZ9Ho9Ni/d0aoCCwCi2Dje/9VlOzD1gUSO9yciSbDLagXe3t4YO3aswyqwXc3alW1Ec58GRETdUPaxCygtbnsxDFEESooqkH3sQheWiqgNcgVeWrUZL63aDMgVzi4NdVM2tcTq9Xrs3LkTmZmZKCsrg8FgMHn966+/tkvhOquurg51dbdX3lKr1Vbtx5VtiKgrdeRO5ZZ5raqqyqr9uIiLi/m1kgcAL2asbCeYyDXZ1BK7dOlSLF26FHq9HiNHjkRsbKzJw1qrV6+GIAgWHxcvXrSliACAjRs3QqlUGh+RkZFW7ceVbYiou2qZ16Kjo63aryct4kJEPYNNLbEffPABdu/ejXvvvbdTJ3/uueewcOFCizGDBg2y+fgvvPACli9fbnyuVqutqshyZRsi6q5a5rWrV69aVZFtWsSl7GqF2XGxgtA4hSAXcSEiqbCpEqtQKDBkyJBOnzwkJAQhISGdPk5bPDw84OHR8aVUm1a2sTSkgCvbEJEztMxr1g6TksvlWPXyPVix8H9bruECAY0bVv7pHpe4qYvLaRP1DDYNJ3juueewdevWLr2xqbCwEDk5OSgsLIRer0dOTg5ycnJQXV1t93M1rWxjCVe2ISIpEUUDpo+4itdfGYzQEHeT10JD3fH6K4MxfcRViKKhjSMQEXUvNrXEHj9+HIcOHcKBAwcwYsQIuLubJsRPPvnELoVrbu3atfjnP/9pfD5mzBgAwKFDhzBlyhS7n69pZZufcktQ33C7su7h4cZ5YolIetQFgE6N6VMCMCXJH9lnq1Bxox7BQe4YG9sLcrkA6NSNccqBzi5tp3DqQKKewaZKrL+/Px588EF7l8WinTt3dtkcsU1CQn0hq/fGk/duhl+QH156dzEih/RlCywRSY/udq+VXC4gfqxfu3FERN2ZTZXY9957z97l6LYEQcClc5cBAL4+bqzAEpE0KazsPbI2jsiBOjLtHPVcNlViiYi6Cj/M7MSvP6Dwaxwy0BaFX2McEZEEWH1j18yZM3Hy5Ml246qqqrB582Zs3769UwUjIiL7EQQZhIEzAZjOTGASM3AmBMEuCzkSETmc1S2xDz30EObMmQOlUon7778f48aNQ0REBDw9PXHr1i3k5ubi+PHj+OKLL3Dffffhtddec2S5iYiog4SgaCBqHgyXPoeg19x+QeHXWIENsm7hBCKi7sDqSuwTTzyBxx57DB999BE+/PBD7NixAyqVCkDjuNHo6GjcfffdOH36NO644w6HFZjsrAcsXSjIFRAmrnd2MYi6BSEoGupaJVbcvwLBQe74f+8sRa9BY9gCS0SS06ExsR4eHnjsscfw2GOPAQBUKhW0Wi2CgoJaTbNFRETdlCDD92eqAACrvSJYgZUgjhUn6uSNXU1rdxMRERERdSV+/SYiIiIiyeEUW0QuSq/Xo76+3tnFoE5yd3eHXC53djGIugXmNddgr7zGSiyRixFFESUlJaisrHR2UchO/P390bt3by62Qj0W85rrsUdeYyWWyMU0JfrQ0FB4e3uz4iNhoiiipqYGZWVlAIDw8HAnl4jIOZjXXIc985pNldiioiIIgoC+ffsCAE6dOoVdu3YhOjoaixcvtrkwRNQ5er3emOiDgoKcXRyyAy8vLwBAWVkZQkNDObSAehzmNddjr7xm041djz76KA4dOgSg8dvRjBkzcOrUKaxZswYvvfSSTQUhos5rGivm7e3t5JKQPTW9nxwLSD0R85prskdes6kSe/78eSQkJAAAdu/ejZEjR+LEiRN4//33sXPnTpsLQ0T2wa4212Lv99Ng0CPY7xb6Bpeg+MJJGPR6ux6fyBGY11yLPd5Pmyqx9fX18PDwAAB89dVXmDVrFgBg+PDhuH79eqcLRUTOp9NqsH6SF9ZP8oJOq2l/B5KE3CN7sTMtCXeNykZC1AV88sdHsWVuFHKP7HV20YgcjnnNtdhUiR0xYgTeeecdHDt2DBkZGZg5cyYA4Nq1axyvQkTUTeUe2Yvdax5F9Y0Sk+3q8mvYveZRVmSJSFJsqsRu3rwZ7777LqZMmYJHHnkEsbGxAIB9+/YZhxkQkbQ172IuOHvcJbqcjx49ivvvvx8REREQBAF79+41G7d9+3YMGDAAnp6eSExMxKlTp9o9tjX7TJ48GYIgQBAEuLm5ITw8HCkpKTh58mRnL61dBr0eB7esACCaebVx28GtK13ifSZqC/Oaa+U1myqxU6ZMQUVFBSoqKvCPf/zDuH3x4sV455137FY4InKO3CN7sf2xMcbn76+Y7RJdzhqNBrGxsdi+fXubMR9++CGWL1+OdevWITs7G7Gxsbj77ruN08HYuo8oijhz5gw2bdqE69ev49KlS9i1axdkMhmSkpKQkZFh12ttqeDsN1CXX7UQIUJdVoyCs984tBxEzsK85np5zeZlZ+VyOQICAky2DRgwAKGhoZ0uFBE5T1OXc1XFNZPtXdXlXFhYiAULFiAsLAxeXl6IjY3F8ePH7XLse+65By+//DIefPDBNmPefPNNPPnkk1i0aBGio6PxzjvvwNvb2+QLuy37/Pzzz6iqqsJdd92F3r17Y8CAAZg6dSo++ugjTJgwAWvWrLHLNbal+oZ19ytYG0ckJcxrrpnXbK7Efvzxx5g3bx7Gjx+PsWPHmjyISJqc3eVcUFCAhIQEaLVa7Nu3D+fOnUN6ejr8/PxM4jZs2ABfX1+Lj8LCwg6fX6fTISsrC8nJycZtMpkMycnJ+Pbbbzu1T1ZWFuRyuXH4VRNBEDBjxgzk5OR0uLwd4Rtk3YTi1sYRSQXzmuvmNZsWO3jrrbewZs0aLFy4EJ9++ikWLVqEy5cv4/Tp00hLS7N3GYmoi3Sky3ng2Lvsfv4lS5Zg/Pjx2L17t3Hb0KFDW8WlpqZi3rx5Fo8VERHR4fNXVFRAr9cjLCzMZHtYWBguXrzYqX2ys7MRFRVldq5LhUIBd3f3Dpe3I/rH3gm/kD5Ql1+D+Q9zAX6hfdA/9k6HlqNLyBV4adVmAMCLGSudXBhyNuY1181rNlVi//rXv2LHjh145JFHsHPnTqxatQqDBg3C2rVrcfPmTXuXkYi6iDO7nAsKCnDgwAGcOXOm3djAwEAEBgbavQyOlJ2djbi4OLOv5eXlYfjw4Q49v0wux8xlr2P3mkcBCDCtyDbO1zhz6WuQcUUwcjHMa47j9Lxmy06FhYWYOHEigMalw6qqqgAAv/vd7/B///d/9isdEXUpZ3Y55+TkQKFQYPTo0e3GOqrbLTg4GHK5HKWlpSbbS0tL0bt3707tk52dbXa4lUajwb59+zBnzpwOl7ejoifPxrxXdsE3yLR1xS+0D+a9sgvRk2c7vAxEXY15zXXzmk0tsb1798bNmzfRv39/9OvXDydPnkRsbCzy8/Mhiua6qYhICpzZ5ezu7o6GhgbU1NS0u7yko7rdFAoF4uLikJmZidmzZwMADAYDMjMzkZ6ebvM+V65cQWVlZatkr9frkZqaCi8vry4bihU9eTZCB4/DvBEPw1NRh0271mDktFlsgSWXxbzmunnNpkrstGnTsG/fPowZMwaLFi3Cs88+i48//hjff/89UlJS7F1GciCFlw/WH9c6uxjUTTizyzkxMRFKpRJLlizB6tWrIYoijh49iunTp7caP2Zrt1t1dTUuXbpkfJ6fn4+cnBwEBgaiX79+AIDly5djwYIFGDduHBISErBlyxZoNBosWrTIuN+2bduwZ88eZGZmWrVPVlYWACA8PBwlJSVQq9XIysrC1q1bUVRUhP3790OpVHb4emwlk8lRoW6cXabviPEuV4FlXqPmmNdcOK+JNtDr9WJ9fb3x+f/93/+JTz/9tPjWW2+JdXV1thyyS6hUKhGAqFKprN7nxtVr4ijcJ47CfeKNq9ccWDqiztNqtWJubq6o1Wo7dZwLh/eIrz8wSFx3p6fx8caDQ8QLh/fYp6BtOH78uDhhwgTRx8dHDAgIEO+55x6xsrLSbsc/dOiQiMZPMJPHggULTOL+8pe/iP369RMVCoWYkJAgnjx50uT1devWif3797d6n9WrVxvPJZfLxaCgIHHixIniK6+8It64caPdclt6X4uKipjXyKUxr1nminnN2vqaIIo9p/9frVZDqVRCpVK1mtqiLTevXceUPk8CAA5f/R8ERnD6Geq+amtrkZ+fj4EDB8LT07Nzx6pWY9PMxrGT//36XgyOT3a5FjupsPS+FhcXIzIyknmNXBbzmmuy9L5aW1+zejjBuXPnMHLkSMhkMpw7d85ibExMjLWHJaJuqnli7x87iYmeiCSPec21WF2JHT16NEpKShAaGorRo0dDEASzN3EJggC9nScM/uWXX/CnP/0JX3/9NUpKShAREYHHHnsMa9asgUKhsOu5iKgRxxUSkathXnMtVldi8/PzERISYvy5K128eBEGgwHvvvsuhgwZgvPnz+PJJ5+ERqPB66+/7tBze/l44K2MPxt/JiIiIiLns7oS279/f7M/d4WZM2di5syZxueDBg1CXl4e3n77bYdXYomIXE3zHlT2phKRVNk0xdaNGzcQFBQEACgqKsL//M//QKvVYtasWUhKSrJrAduiUqnanYqirq4OdXV1xudqtbrD5zHo9biVfxq66nIUegzG0In3cAwNETlNy7zWtNgMEVFP06EVu3744QcMGDAAoaGhGD58OHJychAfH48///nP2LFjB6ZOnYq9e/c6qKi3Xbp0CX/5y1/w+9//3mLcxo0boVQqjY/IyMgOnSf3yF6883gizv7zCfz479X4vxcewpa5Ucg9srcTpScisl3LvBYdHe3sIhEROUWHKrGrVq3CqFGjcPToUUyZMgX/9V//hfvuuw8qlQq3bt3C73//e2zatMnq461evRqCIFh8XLx40WSfq1evYubMmXjooYfw5JNPWjz+Cy+8AJVKZXwUFRVZXbbcI3uxe82jqKowXUtZXX4Nu9c8yoosETlFy7yWm5vr7CIRETlFh4YTnD59Gl9//TViYmIQGxuLHTt24KmnnoJM1lgXfvrppzF+/Hirj/fcc89h4cKFFmMGDRpk/PnatWuYOnUqJk6ciB07drR7fA8PD3h4dPxmLINej4NbVsD88nQiAAEHt67E8En3c2gBEXWplnnNlmFSRESuoEOV2Js3b6J3794AAF9fX/j4+CAgIMD4ekBAQIfGZ4WEhBhnPGjP1atXMXXqVMTFxeG9994zVpwdoeDsN1CXX7UQIUJdVoyCs99g4Ni7HFYOImcS9TqI320AAAiJL0KQczo7V+Hl44mcb8YBABp8Ojd5PJGUMK+5lg7f2CUIgsXnjnD16lVMmTIF/fv3x+uvv47y8nLja02VanuqvnG9/aAOxBERERGRfXW4OXPhwoVISUlBSkoKamtrkZqaanz++OOPO6KMyMjIwKVLl5CZmYm+ffsiPDzc+HAE3yDrjmttHJEUiaLh9s/qApPnUrVx40bEx8ejV69eCA0NxezZs5GXl9cqbvv27RgwYAA8PT2RmJiIU6dOtXtsa/aZPHmycby/m5sbwsPDkZKSgpMnT9rl+ojIMuY118prHarELliwAKGhoca7Yh977DFEREQYn4eGhmL+/Pl2L+TChQshiqLZhyP0j70TfiF9ALTVyizAL7Qv+sfe6ZDzEzmbeCMXyNl+e8OP70PM2tK4XcKOHDmCtLQ0nDx5EhkZGaivr8dvfvMbaDQaY8yHH36I5cuXY926dcjOzkZsbCzuvvtulJWVtXlca/YRRRFnzpzBpk2bcP36dVy6dAm7du2CTCZDUlISMjIyHHrtRD0d85rr5TVBdFRNsBtSq9VQKpVQqVTw8/OzGNs0O0Gj5v9EjRXbea/sQvTk2Q4pJ5GtamtrkZ+fj4EDB8LT07axjuKNXIh5u9t8XYiaByHIcdM6FRYW4g9/+AMOHjwItVqNYcOGYfv27Zg0aZLdz1VeXo7Q0FAcOXIEd93VOL49MTER8fHx2LZtGwDAYDAgMjISTz/9NFavXm32ONbs89NPPyEqKgonTpzAhAkTjPuKoojJkyejtra2zZYRS+9rcXExIiMjrcprTXTVt+B2bisAoCFmKRS+Ae3sQeQ8zGsd4wp5zdr6muPujpK46MmzMe+VXegVbDpkwC+0Dyuw5LJE0QAx/6DlmPyDDuuCKygoQEJCArRaLfbt24dz584hPT29VRLbsGEDfH19LT4KCwvbPZ9KpQIA48IpOp0OWVlZSE5ONsbIZDIkJyfj22+/NXsMa/fJysqCXC5HbGysyf6CIGDGjBnIyclpt7xE1HHMa66b12xasauniJ48G4PipmHTzDAAwH+/vheD45M5rRa5LnUBoGtnyiadujFOOdDup1+yZAnGjx+P3btvt5gMHTq0VVxqairmzZtn8VgREREWXzcYDFi2bBnuvPNOjBw5EgBQUVEBvV6PsLAwk9iwsLBWc1Y3sXaf7OxsREVFwdvbu9UxFAoF3N3dLZaXiGzEvOayeY2V2HY0r7D2j53ECiy5Nl21feM6oKCgAAcOHMCZM2fajQ0MDGx32en2pKWl4fz58zh+/HinjmOt7OxsxMXFmX0tLy8Pw4cP75JyEPU4zGsO4+y8xuEERHSbwte+cR2Qk5MDhUKB0aNHtxvb2W639PR07N+/H4cOHULfvn2N24ODgyGXy1FaWmoSX1pa2uZ0ftbuk52djbFjx7baX6PRYN++fZgzZ067101ENmBec9m8xpZYIrrNrz+g8LPc9abwa4yzM3d3dzQ0NKCmpsZs11Rztna7iaKIp59+Gnv27MHhw4cxcKBp16FCoUBcXBwyMzMxe/ZsAI3dc5mZmUhPTzd7Hmv2uXLlCiorK1sle71ej9TUVHh5eSEtLc3i9RCRjZjXXDavsRJLREaCIAMGzrR8F+/AmY1xdpaYmAilUoklS5Zg9erVEEURR48exfTp01uNH7O12y0tLQ27du3Cp59+il69eqGkpAQAoFQq4eXlBQBYvnw5FixYgHHjxiEhIQFbtmyBRqPBokWLjMfZtm0b9uzZg8zMTKv2ycrKAgCEh4ejpKQEarUaWVlZ2Lp1K4qKirB//34olcqO/6MRUbuY11w3r7ESS0QmhKBoIGoexPwDgK7ZMtIKv8ZE76BpaIKCgvDZZ59h5cqViI+Ph0KhwPjx4/HII4/Y7Rxvv/02AGDKlCkm29977z0sXLgQAPDwww+jvLwca9euRUlJCUaPHo2DBw+a3OBQUVGBy5cvG5+3t092djYAYNiwYZDL5fD390dUVBRmzZqF1NTUTo+DIyLLmNdcM69xnth26LQabJgRDAB4MaMCCi8fRxaRqFPsMZ9iE0NDLXBqU+OTO/4bgv9gh7RUUPs4Tyz1ZMxrronzxBKRwzRP7IJffyZ6IpI85jXXwuEERGSWIFdAmLje2cUgIrIb5jXXwq8gRERERCQ5rMQSERERkeSwEktEREREksNKLBERERFJDiuxRERERCQ5rMQSERERkeRwii0iMkuvN+DYocbVW5KmDoZczu+8RCRtzGuuhe8eEREREUkOK7FEZFbzFakrb2nhCitUv/3224iJiYGfnx/8/PwwYcIEHDhwoFXc9u3bMWDAAHh6eiIxMRGnTp1q99jW7DN58mQIggBBEODm5obw8HCkpKTg5MmTdrk+IrKMec218horsUTUSnlZNU59W2B8/kPONZw8/gvKy6qdWKrO69u3LzZt2oSsrCx8//33mDZtGh544AFcuHDBGPPhhx9i+fLlWLduHbKzsxEbG4u7774bZWVlbR7Xmn1EUcSZM2ewadMmXL9+HZcuXcKuXbsgk8mQlJSEjIwMh147UU/HvOaCeU3sQVQqlQhAVKlUVu9TV1MtrrvTU1x3p6dYV1PtwNIRdZ5WqxVzc3NFrVZr8zHKSqvEQxk/tfkoK62yY4lbKygoEOfPny+GhoaKnp6eYkxMjHjs2DGHnS8gIED829/+ZnyekJAgpqWlGZ/r9XoxIiJC3LhxY5vHsGafvLw8EYB44sQJk30NBoOYlJQkxsfHt3l8S+9rUVFRx/Na1U1R/806Uf/NOrGu6qbV+xE5A/Nax0k9r1lbX2NLLBEZiaKIS3nlFmMu5ZU7rAuuoKAACQkJ0Gq12LdvH86dO4f09HT4+fmZxG3YsAG+vr4WH4WFhRbPpdfr8cEHH0Cj0WDChAkAAJ1Oh6ysLCQnJxvjZDIZkpOT8e2335o9jrX7ZGVlQS6XIzY21mR/QRAwY8YM5OTkWPVvREQdw7zmunmNsxMQkVHlLS3q6hosxtTVNaDylhYBgd52P/+SJUswfvx47N6927ht6NChreJSU1Mxb948i8eKiIgwu/2HH37AhAkTUFtbC19fX+zZswfR0dEAgIqKCuj1eoSFhZnsExYWhosXL5o9nrX7ZGdnIyoqCt7erf/dFAoF3N3dLV6PXckVeGnVZgDAixkru+68RE7AvOa6eY2VWCIy0un0do3riIKCAhw4cABnzpxpNzYwMBCBgYE2nScqKgo5OTlQqVT4+OOPsWDBAhw5csSY8B0lOzsbcXFxZl/Ly8vD8OHDHXp+op6Kec1xnJ3XOJyAiIwUCrld4zoiJycHCoUCo0ePbje2M91uCoUCQ4YMQVxcHDZu3IjY2Fhs3boVABAcHAy5XI7S0lKTfUpLS9G7d2+zx7N2n+zsbIwdO7bV/hqNBvv27cOcOXPavW4i6jjmNdfNa2yJJSIj/wAveHi4Wex68/Bwg3+Al93P7e7ujoaGBtTU1JjtmmquM91uLRkMBtTV1QFo/CCIi4tDZmYmZs+ebXw9MzMT6enpZve3Zp8rV66gsrKyVbLX6/VITU2Fl5cX0tLSrCovEXUM85rr5jXJVGJnzZqFnJwclJWVISAgAMnJydi8ebPVbygRtU8QBAyJCsGFc9fbjBkSFQJBEOx+7sTERCiVSixZsgSrV6+GKIo4evQopk+f3mr8mK3dbi+88ALuuece9OvXD1VVVdi1axcOHz6ML7/80hizfPlyLFiwAOPGjUNCQgK2bNkCjUaDRYsWGWO2bduGPXv2IDMz06p9srKyAADh4eEoKSmBWq1GVlYWtm7diqKiIuzfvx9KpbLD10NE7WNec928JplK7NSpU/Hiiy8iPDwcV69exYoVKzB37lycOHHC2UUjcikhob4YEROOn/PKoKu7PUbMw8MNQ6JCEBLq65DzBgUF4bPPPsPKlSsRHx8PhUKB8ePH45FHHrHbOcrKyjB//nxcv34dSqUSMTEx+PLLLzFjxgxjzMMPP4zy8nKsXbsWJSUlGD16NA4ePGhyg0NFRQUuX75s9T7Z2dkAgGHDhkEul8Pf3x9RUVGYNWsWUlNTbR4HR0TWYV5zzbwmiI6aU8LB9u3bh9mzZ6Ours7qu9/UajWUSiVUKlWrqS3aotNqsGFGMADgxYwKKLx8bC4zkaPV1tYiPz8fAwcOhKenZ6eO1dCgx/HDVwAAo0ZHIDDI2yEtFdQ+S+9rcXExIiMjmdfIZTGvuSZL76u19TVJ3th18+ZNvP/++5g4cWLXTktD1IM0T+z+AV5M9EQkecxrrkUywwkA4Pnnn8e2bdtQU1OD8ePHY//+/Rbj6+rqjAObgcaaPRFZRy6XYUpy67kMybla5rWqqionloZIWpjXXItTW2JXr14NQRAsPppPqrty5UqcOXMG//nPfyCXyzF//nyLK2xs3LgRSqXS+IiMjOyKyyIicpiWec3R80ASEXVXTm2Jfe6557Bw4UKLMYMGDTL+HBwcjODgYAwbNgx33HEHIiMjcfLkSePSai298MILWL58ufG5Wq1mRZaIJK1lXrt69SorskTUIzm1EhsSEoKQkBCb9jUYDABg0q3WkoeHBzw8PGw6PhFRd9Qyr3GYFBH1VJIYE/vdd9/h9OnTmDRpEgICAnD58mX84Q9/wODBg9tshSUiIiIi1yWJ2Qm8vb3xySefYPr06YiKisITTzyBmJgYHDlyhC2tRERERD2QJFpiR40aha+//trZxSAiIiKibkISLbFE1PVqNLWIEf4LMcJ/oUZT6+ziEBF1GvOaa2ElloiIiIgkh5VYIjJLr7+9vnjW0fMmz13Bpk2bIAgCli1b1uq17du3Y8CAAfD09ERiYiJOnTrV7vGs2Wfy5MnGObDd3NwQHh6OlJQUnDx50h6XZDWFlw/WH9di/XEtl5ylHoV5zbXyGiuxRNTKV5+cwIPRTxmfp927HjMHPIGvPjnhxFLZz+nTp/Huu+8iJiam1Wsffvghli9fjnXr1iE7OxuxsbG4++67UVZW1ubxrNlHFEWcOXMGmzZtwvXr13Hp0iXs2rULMpkMSUlJyMjIcMi1ElEj5jUXzGtiD6JSqUQAokqlsnqfuppqcd2dnuK6Oz3FuppqB5aOqPO0Wq2Ym5srarVam4+R8e9vxBjhPnEUTB8xQuMj49/f2LHErRUUFIjz588XQ0NDRU9PTzEmJkY8duyY3Y5fVVUlDh06VMzIyBAnT54sLl261OT1hIQEMS0tzfhcr9eLERER4saNG9s8pjX75OXliQDEEydOmOxrMBjEpKQkMT4+vs3jW3pfi4qKOpzXiKSEea19rpbXrK2vsSWWiIz0ej02L90Bc6s5N217ddkOh3XBFRQUICEhAVqtFvv27cO5c+eQnp4OPz8/k7gNGzbA19fX4qOwsNDsOdLS0nDfffchOTm51Ws6nQ5ZWVkmr8lkMiQnJ+Pbb781ezxr98nKyoJcLkdsbKzJ/oIgYMaMGcjJyWn334eIOo55zXXzmiSm2CKirpF97AJKiyvafF0UgZKiCmQfu4D4Ka27rDpryZIlGD9+PHbv3m3cNnTo0FZxqampmDdvnsVjRUREtNr2wQcfIDs7G6dPnza7T0VFBfR6PcLCwky2h4WF4eLFi53aJzs7G1FRUfD29m51DIVCAXd3d4vXQ0S2YV5z3bzGSiwRGZVfv2XXuI4oKCjAgQMHcObMmXZjAwMDERgY2KHjFxUVYenSpcjIyICnp6etxbRZdnY24uLizL6Wl5eH4cOHd3GJiHoG5jXHcXZe43ACIjIKCQ+wa1xH5OTkQKFQYPTo0e3G2tLtlpWVhbKyMowdOxZubm5wc3PDkSNH8NZbb8HNzQ16vR7BwcGQy+UoLS012be0tBS9e/c2WxZr98nOzsbYsWNb7a/RaLBv3z7MmTOn3esmoo5jXnPdvMaWWCIyGps0AmF9g1F2tcLs+DFBAML6BmNs0gi7n9vd3R0NDQ2oqakx2zXVnC3dbtOnT8cPP/xgsm3RokUYPnw4nn/+ecjlcsjlcsTFxSEzMxOzZ88GABgMBmRmZiI9Pd3seRQKRbv7XLlyBZWVla2SvV6vR2pqKry8vJCWlmbxeojINsxrrpvXWIklIiO5XI7nty7Gc3M3AAKAZglfEBr/v2rLYsjlcrufOzExEUqlEkuWLMHq1ashiiKOHj2K6dOntxo/Zku3W69evTBy5EiTbT4+PggKCjLZvnz5cixYsADjxo1DQkICtmzZAo1Gg0WLFhljtm3bhj179iAzM9OqfbKysgAA4eHhKCkpgVqtRlZWFrZu3YqioiLs378fSqWyQ9dDRNZhXnPdvMZKLBGZSE6ZiDc+fhGbnnkXZVdvGLeH9Q3Gqi2LkZwy0SHnDQoKwmeffYaVK1ciPj4eCoUC48ePxyOPPOKQ87Xl4YcfRnl5OdauXYuSkhKMHj0aBw8eNLnBoaKiApcvX7Z6n+zsbADAsGHDIJfL4e/vj6ioKMyaNQupqakd/uAioo5hXnPNvCaIornGddekVquhVCqhUqlaTW3RFp1Wgw0zggEAL2ZUcHUb6tZqa2uRn5+PgQMHdnqQf5VagzuVDwMAtn+xHhN/M8YhLRXUPkvva3FxMSIjIzuU14ikhHnNNVl6X62tr/HGLiIyq3lij7trJBM9EUke85pr4XACIjLL28cT58T9zi4GEZHdMK+5FrbEEhEREZHksBJLRERERJLDSiwRERERSQ7HxLZD4eWD9ce1zi4GUYcYDAZnF4HsiO8nEf8OXI093k9WYun/397dx0VV5v/jf50ZGO6H+0FQxHsIFRRv8A5vcaVczbT0Y3dofWpxtTTz3m9q7XpbW+rqpra72e4vP2amZm7aknlvpoJ4R1IoASoImDDcgzPn9wcxOgLDMBwYzvB6Ph5TzDnXOed9BN685zrXuQ7ZEJVKBYVCgdu3b8PX1xcqlQpC9WzeJDuiKKKiogK5ublQKBRQqVTWDomo2TGv2RYp8xqLWCIbolAo0LFjR2RlZeH27dvWDock4uzsjPbt20Oh4Agwan2Y12yTFHmNRSyRjVGpVGjfvj3u378PnU5n7XCokZRKJezs7NjzRK0a85ptkSqvsYglskGCIMDe3h729vbWDoWISBLMa/QoXpsiIiIiItlhEUtEREREssMiloiIiIhkp1WNia0eDH7z5k2o1WorR0NE1HiZmZkAgIyMDHh4eFg3GCIiCWi1WgCo9ya+VlXEpqamAgC6d+9u5UiIiKTVs2dPa4dARCSp1NRU9OvXr871giiKYjPGY1X37t2Dl5cXMjMz2RNLRDbh5s2b6N69O/MaEdkMrVaLwMBA/Prrr/D09KyzXavqiVUqlQAAtVrNZE9ENqE6lzGvEZGtqa7b6sIbu4iIiIhIdljEEhEREZHssIglIiIiItlhEUtEREREssMiloiIiIhkh0UsEREREckOi1giIiIikh0WsUREREQkOyxiiYiIiEh2WMQSUas3b948TJgwwdphEBFJytZzG4tYImr1kpKS0KtXr2Y51po1ayAIAubMmdMsxyOi1qupc9uKFSsgCILRKyQkpMmO9yhZFbHHjx/HuHHjEBAQAEEQsG/fPmuHREQ24OLFi81SxJ47dw5bt25FWFhYkx+LiKg5clv37t2RlZVleJ08ebJJj/cwWRWxxcXFCA8Px+bNm60dChHZiJs3byIvL8+Q6PPz8zFu3DgMGTIE2dnZkh2nqKgIzz33HD766CN4enpKtl8ioto0V26zs7NDmzZtDC8fHx/J9l0fWRWxjz/+OP785z/jqaeearZj6nR6HP32Zxz99mfodPpmOy4RNY+kpCR4eHigQ4cOuHz5Mvr164e2bdviyJEjaNOmjaHdqlWr4OrqavKVkZFR53FmzpyJsWPHIjo6ujlOi4hauebKbT///DMCAgLQqVMnPPfccybbSs2u2Y5kBeXl5SgvLze812q1VoyGiFqipKQkhIeHY8eOHZg1axbWrl2LV155pUa7uLg4TJ482eS+AgICal2+c+dOJCYm4ty5c42O99G8VlhY2Oh9EpHtaY7cFhkZie3btyM4OBhZWVl4++23ERUVhStXrsDNzU2S8zDFpovY1atX4+2337Z2GETUgiUlJeHSpUuYNWsW/vOf/2DgwIG1tvPy8oKXl1eD95+ZmYnZs2cjPj4ejo6OjQ2XeY2IzNLUuQ2oukJeLSwsDJGRkQgKCsKuXbvw8ssvW7TPhpDVcIKGWrx4MQoKCgyvzMxMa4dERC1MUlISJk6ciLKyMuTn59fZztJLbgkJCcjJyUFERATs7OxgZ2eHY8eOYePGjbCzs4NOp2tQvI/mteTk5IaeMhG1Ak2d22rj4eGBbt26ITU1VaKzMM2me2IdHBzg4OBg7TCIqIUqLCzEjRs38Pnnn2PQoEH4n//5H5w+fRrdu3ev0dbSS26jRo3C5cuXjZZNnz4dISEhWLhwIZRKZYNifjSvcZgUET2qOXJbbYqKinD9+nW88MILFsXdUDZdxBIRmXLx4kUolUqEhoaid+/euHLlCsaNG4ezZ8/WuMPW0ktubm5u6NGjh9EyFxcXeHt711hORCSF5shtQNXDFMaNG4egoCDcvn0by5cvh1KpxNSpU6U4jXrJajhBUVERkpKSkJSUBABIS0tDUlJSs94JR0S2IykpCSEhIYaezXfffRfBwcGYOHEiKioqrBwdEZFlmiu33bx5E1OnTkVwcDAmT54Mb29vnDlzBr6+vpIdwxRBFEWxWY4kgaNHj2LEiBE1lsfGxmL79u31bq/VauHu7o6CggKo1WqzjqnT6XHiyHUAQNSIzlAqZVX3E5GNu3nzJgIDAxuU14iIWjJz6zVZDScYPnw4ZFRzExEREVETYbciEREREUmqorQYK4Y4YcUQJ1SUFjfJMVjEEhERyUxzFAjUdPj9kwaLWLJ5TBZERES2h0UsEZGV8YMWEVHDsYglIiIiItlhEUtELRp7Kamh+DND1DqwiCUiIiIi2ZHVPLFERET10en0GL7ikuFrW9QazpGoPixiiWRO1FVA/GEVAECIXAJBqbJyRBLTVWDZuoUAgPu6CgAu1o2HiIhaBBaxrRwfq0tEJEO6ytq/thH820TmYBFLJHOVpcWGX+TK0mKoXG2sJ5YkV1FajFWjfQAAS+LzoHJi7zZRs+IVJkmwiCWSOZ1OxOmS5wAAkTrRytGQLPAPKBHZABaxRERkW2z8UjuRLDTDh2UWsWT72OtERERkc1jE1kPUVRh/rXS0YjTSKy0uw+uj3wAAnC7YBVe1s5Ujkh4vt8tbaXEZogafBwCcyC6DytXKATUFftAiMvLwQyoqSovh5OpmxWiopWIRSyRzpcXlhg8iR299BCd3KwdEDcYPWkREDcc5K4iIiIhIdljEEhERUcvCm/PIDCxiiYiIiEh2OCaWiKiVaRU3y9k4joUnYhFLRC2cTlf717aEBQkR2Zrm+LDMIraVqzGFGGxvii0WCERE8mLrebs1zEii1+ngo74HR1U5Mq+cgZvPeCiUSkmPwTGxRERERCSZ5GP78I8ZURjaMxH9g69i9/Jnsf7pYCQf2yfpcVjEEhERETWj6p7m10e/gdLicmuHI6nkY/uwa+mzKLqbbbRcm3sbu5Y+K2khyyKWiMjKRFFEl7DOiBjRG0XF9yGKtnl5kYhsm16nw6H18wDUlsOqlh3aMB96iW5w4JhYImrRdDq94esLp1Mw/CkNlBKPq7Km3Jwi/PRzCV7/yywAwI30MtzK/gVdgn3hq+G0AdQ6VX+wU3urUVR8H56iCEEQrB0W1SP94iloc2+ZaCFCm3MT6RdPoWPE0EYfjz2xRHIn6tG3txtior1gV3oboqivfxuZ+HbPafxP5CLD+zeeeQ8xHV7Gt3tOWzEq6eTmFOHqpSxU3jfutSgvv4+rl7KQm1NkpciIrCc3pwjXfvtgN23Ji7iRXoYzJ3/h74MMFN3NMnwtCAKCOgWie6/HENQp0OhDyMPtGkN2PbGbN2/Gu+++i+zsbISHh+Ovf/0r+vfvb+2wiKxCvJsM518O4LlpocjJE3HuP18jqv9R2Hd9HIJ3qLXDa5Rv95zGm0+vwqNX1nNu5eHNp1fhL7uXIHriIOsEJwFRFJGakouqS2y19TBVrffxdZG8B8rWpy2z9TvbAdvtqaz+YPeo6g923cP8beIKhV7/4M79m1fPwMNP+jv3rcHV2x8AENKjG8aMHwV3D7VhXUG+Ft/sP4xrV34ytGssWRWxn332GebOnYstW7YgMjIS69evx5gxY5CSkgKNRmPt8IialXg3GXs+3I0NG64hP09rWO7ho8bs2cWYOONp2RayOp0Oa2dvq1HAAoAoAoIArJuzDSOejJTt0IL8e6UoL78PQIBep8f1KzegvauF2luNzj06QaFUoLz8PvLvlcLTy/amviPL2eoQlAcf7OrWVB/smlPysX04+MFcvPCkHVzVrkj490Ic/nABxsx+F6HDJlg7vEYJCh+M3oMG4PdPDoVOJ+JcohZ5dyvh422P3mGueOaFCTiw/wSCwgdLcjxZFbHvv/8+XnnlFUyfPh0AsGXLFvznP//BP//5TyxatKierYlshyjqsWfrV3j7rbM11uXnaauWKxwwcXEIBEF+o4YST1zFnZt5da4XRSA7Mw+JJ66i3/CwZoxMOuVlVc+Dv3jiEr742x7k5xUY1nn4uGPSHyciPCrM0I4IsO2eygcf7Oom9w92ycf24dL/LcdLr06o2Uv5f8sBQNaFrKAQEPNkNA4fu4N312fiTu6D/OXna4/5cwIRM34UBIU0H0JkU8RWVFQgISEBixcvNixTKBSIjo7G999/36B9FRcX19p7o1Qq4ejoaNTufkUZSktLDO/tKnWGYzs5ORm1rcujbUtKSuq8+1gQBDg7O1vUtrS0FHp93eMhXVxcarQtLi6GHvcN56BQ2ddoW1ZWBp2Ja44Naevs7Gz4BF1eXo779+tOWA1p6+TkBIWiqlirqKhAZeWDX5zikpIH51hSAg+9vs62j3J0dDT8rDSkbWVlJSoqKups6+DgADs7uwa3vX//PsrLy6HP/wUbPrhY5zYAsHH9Jfwu9kcoPDrUul6lUsHevur7rdPpUFZWVue+7O3toVKpGtxWr9ejtLS0wW1vpt2u+8QecjPtNkL7da6x3M7ODg4ODgCqendKSkrq3Edtv/dStK0vR9y5noSLJ/Lwj3c+rrFtfl4B/vHOx3h52XR4OvjAzb2vYV1tv/fV+zc3rz36O+HwW2y2kteKiovROawD1N7uyLtbDJW6CIIgyD6vVVRU4KdrdwCgzt771JRcqN3tTe63pea1wsK6f08fVlhYDJVD7T8/LTmv6XU6/HRgPZ55YULdvZRfbkBg75G1Di2QQ15TFGXg5LEczF96o8b8BDm5lZi/9AbeWylgSJcU6F3bG9bVliPMIsrErVu3RADi6dOnjZbPnz9f7N+/f63blJWViQUFBYZXZmamiKoBaLW+nnjiCaPtnZ2d62w7bNgwo7Y+Pj51tu3bt69R26CgoDrbhoaGGrUNDQ2ts21QUJBR2759+9bZ1sfHx6jtsGHD6mzr7Oxs1PaJJ54w+e/2sKefftpk26KiIkPb2NhYk21zcnIMbf/4xz+abJuWlmZoO2/ePJNtr1y5Ymi7fPlyk23Pnj1raLtu3TqTbY8cOWJou2nTJpNtDxw4YGj78ccfm2y7a9cuQ9tdu3aJAMTYmEliT4yt9xUbM6nO/W7atMmw3yNHjpiMYd26dYa2Z8+eNdl2+fLlhrZXrlwx2XbevHmGtmlpaYblg7qEmnV+g7rU/vsRGxtr2G9RUZHJGJ5++mmjn2FTbaXMEWEaezHKZ6rJ8xvqO1UM09gbbRcSEmKU1zp16tRsMT/8aql5LWrI78TPdhwTj8T/ZHh9tuOYGD3y90Zt5ZjXwsP6i0fifxLXL9stRvk8a/SzEuXzrLh+2W7xSPxP4gfvbza535aa16rPr75XeFj/OvfbkvNaRw+l+Ot/3hC/WfmaGO07wej7F+07Qfxm5WvirwfeEDt6KGvdrxzy2pRRPWqc26OvaM0EccqoHkbbPZojgoODRQBiQUGBaIr8rjM2wOrVq+Hu7m54BQYGWjsksgI7OyViJ43D0tfiEDtpHES9aO2QGq2k1F7Sdi1NYJACfr6mY/fT2CMwSL4pLFDTzWgsc23u5WoRqOlmtCwvL88or924caMpw5SVx4J74+1lG+Hr42e03MfbD0sWvSf7u9u9vX1x8cQl/OOdj42GnwAPeu8vnrgElb1THXto2S5fOY+c3CyTPe96sRKXr5xvxqikM6xXe5xP0mH+0htGl9mBB72U5y/qMKxX+zr20PJlputrnNuj7uRUIjNdmll0hN8q9BavoqICzs7O2L17NyZMmGBYHhsbi/z8fHz55Zc1tikvL0d5+YMnYWi1WgQGBuL27dtQq9U12tc1nOD0yZsAgEFD2sFOVbXeVi67Fd7LR3TgywCAbzP/ATdPjxpt5XjZrfryWH7GdaTfFlEhPvh3Ugml6NLBHprOj8l2OMGJrxOxYPLaOreptm7XQkQ9EVHrupZ82S334n+Q8N21Wsf8Vlv+p/7oMzIEvuFja6yTw2W3+H9+hmWv76lz+2rvbJyI0S9NMbyvqKgwGjZw/fp1RERENCiv/ZqVjce7zgQAHPx5M7z825gVs6nzs3ZeE0UR359IQ0VF3fnHwcEOA4Z0gCAIssxrOXe0eDZido0C9mEevh7YdXET3NR1fwhsqXkNAH69W4rrP92rc7uQ7hq4qeseCdmS81pe4h7876Q9dRZ5AgCNxh5/3z0RPhETa6yXQ1775rMTWPHypjq3r7biH7MwZkqU4f2jv/fZ2dnw9/dHQUFBrXmtmmzGxKpUKvTp0weHDx82FLF6vR6HDx/GrFmzat3GwcHB8A1/mIuLi1GCqouLiwvu2yvh5ORseF9dxNbW1lwPf6OkbPvwD5a5bfUVlVD89mNQ17/Lwz/c9WlI27q+P41tq1KpoFKpkHP9R/x8q2Y8FaIjktMA4EdoOj9mSDbm7tcc9vb2hkQqZVs7OzvY2dkh+qmB8PB1R35u3X/MPDUeiH5qoOEPhSlKpdLsn+GGtFUoFBa1vV6sR5vIcXh5WSi++Nte45uefD0wacYEtInsBG3xT+hQz/4fHQtZn+ZqG9CxnVnbBXRsZ7Tto/vx9fU1LDc3r5U7Oz/4vXd2rnM7OeW1/HulJgtYwPimIDnmtdupt00WsACQn5uPjGsZ6D/CvBseW1JeA6p+5hwdHXHt8m1cS7puGPMb2qcruoW2adBNay0tr13J9zXZSymiqpcyO98XQTLNax4+3mZt5+HjbfI45uYI2RSxADB37lzExsaib9++6N+/P9avX4/i4mLDbAVNobS4zDDf4Klf/z+41VHEylXlQ58mK0tLgd96YuVOr9ch9ZdKAErUnINTACDi+i8V8Omog0Ihvyma7OzsMGfty1jx0vt1tpm95iWzCtiWyF7dAZWFrgiPCkfPQT1rvYGlEoC9Wwdrh2qxiJgR8NNsRU5OOWrrkxQAaPwcEBEzorlDk6X6CtiGtmuJ8rLr7qG0pF1LlXTwP1i74DPk5DzoyfXTOGDBuskYHTvFxJYt291C8z6wmNuuJQrp0w0ePu71Xi0I6dOtzvUNIasBZVOmTMF7772HZcuWoVevXkhKSsKhQ4fg5+dX/8bUqhTc+gUVohOq5+D8+WIqEr5LxM8XU6HX6QEIKBedUXDrFytHarmQTlqMHgW4e7sZLXf3dsPoUVXr5coz8DHD1wqlAl3Du6DPyAh0De8ChVJRazu5sbOzx4J1kwHU/jELABasnQw7O3mOa25uKpV5H0bNbdcS+bTxkLRdSxT/yWeYN+3fRgUsAOTklGPetH8j/pPPrBRZ4/n4m9dLaW67lsjJyR6T/lhzKMTDJs14Ck5O0uQ12XXTzJo1q87hA0TVKkrLAKjqnYOzqp386HU6HFo/D25ltzAyRIEyp36oEN2hEgrgWHoEQpmIQxtSEDJknCyfAuPgaF6CM7ddSzU6dgreA2r0Omn8HLBgrbx7nZqbh6cTHBzsTM4z6uBgBw9Ped70BAAR4a7w87VHTm5l3b33GntEhMtzntj79yuxbsGuWs9NRNX5rVu4CyOemyjLD3edenQyq5eyU49OzRiVtDw8ndA/uuo+jBp/e309MGnGU+gfHSHZ76Hsilgic6icHHHxRFK9c3CG/2+v5g9OAukXT0GbewsAIEAPp9If8GhK0ObcRPrFU+gYMbT5A2ykBwVJJep6JKuDg72sC5Jqo2OnoNeIQZgxai4cHRX430XPYMiUJ2X5R9qaBEFAl2DfWh8EUK1LsK+sn/SkqCzCgjntMW/p9d8GRT1g6L2f3R6KSnnOwpB46Aju5JTXuV4EcOdOORIPHUH/3/+u+QKTiE4nYtIfJ9b6d6napBlPQaeTxf32tar+PSwvD0PPQT1qHQom5e+hrIYTkPTu39choFMAOoQG4fR3ySbvlJUT1zaB+OJvX5hss+fDPXBtI89p14ru1v2H2pJ2LU11Iqy9gAUAQfYFycOUdnb4KbUUl64UI2zEYBawFvLVuKJ7mD/s7Yx/Lhwc7GT9JKtq2Rm/YNRwT7y3sjM0j0xBp9HY472VnTFquCeyM36xToCNlHszW9J2LY1KpUR4VBheXjYdHj7uRus8fD2qOlaiwmQ95AV48Hvo4KA0Ggrm5KyS/PeQPbGt2J6Pv8P6hf9Efm4+AGDJCx/g3bkfY/balzBx+kjrBtdISaeumTEHZwGSTl2T5WNLXb39JW3XElUnwp+Ss1F5/0HPhIODneyfEU9Nx1fjCkWlM155Yi3U3mq8s/VVBHZpZxMfeO7ml8KpUouRwzwwPMoDiRcLDU98igh3g0IBFNzT4q6qFAHWDtYCCtQ9tZMl7Vqa6itM4VF191LKfchLteb6PWQR20rt+fi7Wu9sv5ebb1gu50I2N8u8u3PNbdfSBIUPhtq3LbS5t4E6RsepNW0RFD64uUOTlC0XJNR0BIjwUObAR3kPHoocAG1Rd6++fLh6B+CbbYfxzAsToFAA/SIezJ9ZPe/uN18dRuSrE6wUYeMEdHCHr48d8vLu1znm19fHDgEd3GtZ2/I9POSl+obVR9nSFSZBEJB66ToAwNXFrknOi8MJWqH79+9jw8J/mmyzYdE/ZT20wFtjXpIzt11Lo1AqETPnvd/e1X5ve8zsd2V5U9ejqhNh4pELTZYIyXaId5OhvrkDf98UjDVvd4Lrna8gJqyHeDfZ2qE1WlD4YNy+U4zP/70P2oJCo3Xa/EJ8/u99uJ1TItsPr2pNO0T1rhoqUNeMHUN6Z0OtMW+O5ZbI1oe8NDeLe2IzMjKQnp6OkpIS+Pr6onv37mZP2kzWdfzrC7j32xCCutzLycfxry9g5Ph+zROUxLzV+XBSlaG0wgF13RjkpCqHtzq/mSOTTuiwCZi8cge+fv8NFN19MEZMrWmLmNnvInTYBOsFRw3y8GcNG/jcYTXi3WSIKbtq/sZXaCGm7AKCJ0PwDrVGaJKo/vC6a+mzSLmaivYd28JV7YoibREy0m5BFEVMXrlDth9eg8IHQ+2Sh6dGAycutEFu3oOOFF8fu6oC1vWubIv0arzCJJ0GFbG//PILPvzwQ+zcuRM3b940emygSqVCVFQUXn31VUyaNMnwqDy5s8WHAdy5dVfSdi1Raf4dhHX6CT9c64kHk7NUq/q5Dev0E0rz71gjPMmEDpsATee+mNx9ChxV5VizYyl6jBwv2z9iRJYSRT3EtEMA6h44IKYdArxCIAjy/fv08IfX9BuZhuVqTTvZf3h9uEiPCr4MRe8u0MEVShRBX5IKlIiIWSrfIv1hzXGpvTUw+zf59ddfR3h4ONLS0vDnP/8ZycnJKCgoQEVFBbKzs/H1119jyJAhWLZsGcLCwnDu3LmmjJsawa+teRMpm9uuJXL19kdb71xEhlyGk8p4yhYnVTkiQy6jrXeurG98qqZQKJGn9cTNvDZo132ATST4hzm5OGBj/AfYGP8BnFx4tYfqoE0HKqpu5tTpRJxL1OJg/F2cS9Q+mLKoQlvVTuZCh03AtM0ncPxyBM6mdMfE5Tsw5/Nrsi5gq1UX6a7eGuhLfoJQkgh9yU9QawIweeUOmzhHko7ZPbEuLi64ceMGvL1rFjYajQYjR47EyJEjsXz5chw6dAiZmZno10+el6IfJooiuoR1htpbjaLi+/AURdl/Yhr6RG94+nqYHFLgqfHA0Cd6N19QEqu+8Qm4jQCvXORpPVBW4QBHVTl81PkQBAFqTTvZX5Yiot9UVM2NevjoPaxbn2H0jHo/X3ssmNMeo4Z7GtrJXfWHVwA29+GVV5hsQ3UHRPXXTcHsInb16tVm7zQmJsaiYFqa3Jwi/PRzCV7/S9UTwm6kl+FW9i+yn97Hzs4Os9e+VOvsBNVmr3kJdnbynbzi4ctSgiDA1z3/obW2deMTyZ+TiyOSTvUFANx3cbRyNDKlcsXho/cwb+n1Gne25+RWYt7S63hvZWdEd5dv7m5NbLlIB5qnwLM2pVLAUOdPAQD3lbOb5BgWDQwqLS1FSUmJ4X16ejrWr1+Pb775RrLArC03pwhXL2UZzU8JAOXl93H1UhZyc+T9aX7i9JFYvvlFePiojZZ7+rpj+eYXZT29VrUHl6X8jJarNW15WYrIxuhc2mHdhpt1PrIUANZtvAmdi3zvbCciYxZ1tT355JOYOHEi4uLikJ+fj8jISNjb2yMvLw/vv/8+ZsyYIXWczUoURaSm5Jpsk5qSCx9fF9kOLRDvJuOpXsn4/RfdcDJJiZw8ERofAVG9dLCzS4Z4N1nWd/FWaw2XpVrDJ3qi+lw4+aNZjyy9cPJHWT7ghEh2lCq8s2AtAGBJ/PwmOYRFPbGJiYmIiooCAOzevRt+fn5IT0/Hv/71L2zcuFHSAK0h/14pystNz5FaXn4f+fdKTbZpqR6+i9feDhjRV4cpMXqM6KtD9QgCMe0QRFFvxSilY+s3PhGR7T/ghIhqsqgntqSkBG5ubgCA//73v5g4cSIUCgUGDBiA9HT53/lZUaGTtF2L89BdvHWqvovXvWPzxERE1Ai+/p6StmvpbP0KDOdOlj+VkwtWnGzazj6LemK7dOmCffv2ITMzE9988w1+97vfAQBycnKgVqvr2brlU6nM+40xt12LY+7duTZyF6+tqx48P9T5UyiV8hze0ur9dtntnQVrAaXK2tHIUkRUd3j5uqD2xzADgAhvjQsioro3Z1hE1IQsKmKXLVuGefPmoUOHDoiMjMTAgQMBVPXK9u4t32mZqnl4OsHBwXQntYODHTw8nZopIompzLw719x2ZF02XgCxSCdzCADCO6b89u7RQva3B5x0+KnOByEQkfxYVMQ+/fTTyMjIwPnz53Ho0CHD8lGjRmH9+vVSxWY1giCgS7CvyTZdgn1le1MX1EGAqp4ec5W6qh0RkQykXzwFT/sUkw848bS/hvSLp6wUIRFJzaIi9qWXXoKLiwt69+5t9HjZ7t27Y+3atZIFZ02+Gld0D/OHvZ1xoergYIfuYf6ynidWEBQQOlbN5VvXhTehY4ysH81IRK1L0d0sAEBb71zE9D2FqB4J6NftCqJ6JCCm7ym09c41akdkVUr72r+mBrGoSvnkk09QWlpzsG5paSn+9a9/NTqolsJX44qQrs7Y+OYmbF/1L3QKcsSAIR1kXcBWE7xDIQRPhqh0MV6hUkMInmwT02sRUevx8COkBQHwdc9HoO8d+Lrn4+GLZrbwqGnA9ofZVD8AJOlUXzjZ4ANAlEoFjq4Iw9EVYVAq2WFkqQbNTqDVaiGKIkRRRGFhIRwdH/xg6XQ6fP3119BoNJIHaU2CICD10nUAgKuLnXyHENRC8A6Ftswd88bNg4+3Pf7fltlw69SbPbDUsjTDXIMkf9WPmtbm3kbt15gEqDVt+ahpIhvSoCLWw8MDgiBAEAR069atxnpBEPD2229LFhw1A0GB8xcKAQCLnAJYwBKRLD38qOmq27weLmT5qGkiW9SgIvbIkSMQRREjR47EF198AS8vL8M6lUqFoKAgBAQESB4kERFRfaofNf31+2+g6G62Ybla0xYxs9/lo6aJbEyDithhw4YBANLS0hAYGGh0UxdRS8VJs6mla45JwVuL1vCo6VaBw4jIDBY9sSsoqGrqpZKSEmRkZKCiosJofVgYn0tNLYeTWo2Jgw8bviYi21b9qGkAfNQ0kQ2zqIjNzc3F9OnTcfDgwVrX63QyfRwrEVEroNPpDV9fOJ2C4U9poGShR9RsePVFGhaNB5gzZw7y8/Pxww8/wMnJCYcOHcInn3yCrl27Yv/+/VLHSEStWHWyX3GyFConl/o3IJO+3XMa/xO5yPD+jWfeQ0yHl/HtntNWjEpaHEJE1DpY1BP73Xff4csvv0Tfvn2hUCgQFBSE0aNHQ61WY/Xq1Rg7dqzUcRIRUSN9u+c03nx6FcRHZqDKuZWHN59ehb/sXoLoiYOsExwRUQNZ1BNbXFxsmA/W09MTublVT0Lp2bMnEhMTpYuOiIgkodPpsHb2thoFLADDsnVztnE4GBHJhkVFbHBwMFJSUgAA4eHh2Lp1K27duoUtW7bA379pnoaycuVKDBo0CM7OzvDw8GiSYxAR2arEE1dx52ZenetFEcjOzEPiiavNGBURkeUsGk4we/ZsZGVVPX96+fLliImJwaeffgqVSoXt27dLGZ9BRUUFnnnmGQwcOBD/+Mc/muQYtRL16NvbDT7e9rArvQ1R9OMDAYhIdnKz7knajqzMxqeg4o1PZA6Litjnn3/e8HWfPn2Qnp6Oa9euoX379vDx8ZEsuIdVPwmsqYrk2oh3k+GSfgB/eMkfeXcr8ePBTxHR7yjsujwOwTu02eIgImosX39PSdsREVmbRUXso5ydnRERESHFriRVXl6O8vJyw3utVmv2tuLdZHy7dSvWrc/AndxKw3I/3zQsmJOB6D/8gYUstQjssWhdHs1rhYWFZm0XEdUdfu18kHMrr9ZxsYIA+LXzQURUd6lCJSJqUhYVsTqdDtu3b8fhw4eRk5MDvV5vtP67776TJLjGWr16taEHtyFEUY9v//EvzFt6HY/m+pzcSsxbeh3v2f0L0fNXcWgBETUrS/OaUqnEgj8/jjen/bvW9aIIzP/T45wvlohkw6IKbPbs2Zg9ezZ0Oh169OiB8PBwo5e5Fi1aBEEQTL6uXbtmSYgAgMWLF6OgoMDwyszMNGs73b00rHsvpUYBC8CwbN1fUqC7l2ZxbERElng0ryUnJ5u1nSjqEd5Vh5eXTYOHj7vROg9fD7y8bBrCu+ogivo69kBE1LJY1BO7c+dO7Nq1C0888USjDv7mm29i2rRpJtt06tTJ4v07ODjAwcGhwdslHr9iNITgUSKAOzmVSDx+Bf0ndLY4PiKihno0r5k7TEos+AWppaEIj3JGz0E9cf3KDWjvaqH2VqNzj05QKAVcLy2BT8EvEDwsz7tERM3FoiJWpVKhS5cujT64r68vfH19G70fqeXdrZC0XUvm4GiHt7c9i4qiXOReT4CH3+N8zjiRDSq4V4oKseqJZwqlgK7hNXN4ueiCgnul8PRo5uAk5uTiiKRTfQEA910crRwNETUVi4rYN998Exs2bMCmTZsgCILUMdUqIyMDv/76KzIyMqDT6ZCUlAQA6NKlC1xdXSU9lk+nbpK2a6mSj+3DwQ/mojCvarq0H78A1L5tETPnPYQOm2Dd4IhIUuV6B6DWQVK1tSMiavksKmJPnjyJI0eO4ODBg+jevTvs7e2N1u/Zs0eS4B62bNkyfPLJJ4b3vXv3BgAcOXIEw4cPl/RYfYb2gF+AO3JuF9Sa8gUAmrbu6DO0h6THbU7Jx/Zh19Jn8egfNW3ubexa+iwmr9zBQpbIhtzLzQVQ/xSI93Jz0aZz46+0ERE1NYtu7PLw8MBTTz2FYcOGwcfHB+7u7kavprB9+3aIoljjJXUBC1TdxbvwrzMBoapgfZjw238Wbpwp27t49TodDq2fh9p7ZaqWHdowH3o+fpLIZlQWZkBXkoe6e2NF6EryUFmY0ZxhERFZzKKe2I8//ljqOFqc6ImD8JfdS7B61odGT7DRBPpg4fpXET1xkBWja5z0i6egzb1looUIbc5NpF88hY4RQ5stLiJqOm7e/jj+4Up0n/w+BIhVE8NWE0WIAH78aiU6zVhgtRiJiBpCkocd2KroiYMQ3i8Io9r/AQDwwefzMPypKNn2wFYrupslaTsiavmCwgejIu8aru56E11iFsDRvY1hXZk2G6mH3kXF3RQEhQ+2YpRkLj7khKgBRWxMTAxWrFiBAQMGmGxXWFiIv/3tb3B1dcXMmTMbHaC1KZUPRlz0HhQs+wIWAFy9/SVtR0Qtn0KpRMyc97Br6bPIu3YEHkG9oXL1RUVRLvLTLwCiHpNX7uDsJEQkG2YXsc888wwmTZoEd3d3jBs3Dn379kVAQAAcHR1x7949JCcn4+TJk/j6668xduxYvPvuu00ZNzVCUPhgqH3bQpt7G7WPjxOg1rRljwyRjQkdNgGTV+7A1++/gfxfzhuWqzXtEDP7Xdu5mVOpwjsL1gIAlsTPt3IwRNRUzC5iX375ZTz//PP4/PPP8dlnn2Hbtm0oKCgAAAiCgNDQUIwZMwbnzp3DY4891mQBU+M93CNTdavaw4Vs1Ti5mNnvskeGyAaFDpsATee+mNx9ChxV5VizYyl6jBzP33cikp0GjYl1cHDA888/j+effx4AUFBQgNLSUnh7e9eYZotatuoemYfniQUAtaatbfXIEFENCoUSeVpPAEC77gNYwBKRLDXqxq6mnFKLml7osAno1Gck1sT4AQCee28fOveL5h80IiIiavEsmieWbMfDBWtQ+BAWsERERCQLnGKLyEbpdDpUVlZaOwxqJHt7e5uYFYVICsxrtkGqvMYilmxea5tPURRFZGdnIz8/39qhkEQ8PDzQpk0bCMKjzxAkah2Y12yPFHmNRSyRjalO9BqNBs7Ozix8ZEwURZSUlCAnJwcA4O/PuZupdWJesx1S5jWLitjMzEwIgoB27doBAM6ePYsdO3YgNDQUr776qsXBEFHj6HQ6Q6L39va2djgkAScnJwBATk4ONBoNhxZQq8O8ZnukymsW3dj17LPP4siRIwCqPh2NHj0aZ8+exdKlS/HOO+9YFAgRNV71WDFnZ2crR0JSqv5+ciwgtUbMa7ZJirxmURF75coV9O/fHwCwa9cu9OjRA6dPn8ann36K7du3WxwMEUmDl9psC7+fRPw9sDVSfD8tKmIrKyvh4OAAAPj2228xfvx4AEBISAiysrJMbUpEMlFRWowVQ5ywYogTKkqLrR0OEVGjMa/ZFouK2O7du2PLli04ceIE4uPjERMTAwC4ffs2x6sQERERUZOzqIhdu3Yttm7diuHDh2Pq1KkIDw8HAOzfv98wzICI5E2v0xm+Tr940ui9XB0/fhzjxo1DQEAABEHAvn37am23efNmdOjQAY6OjoiMjMTZs2fr3bc52wwbNgyCIEAQBNjZ2cHf3x8TJ07EmTNnGntqRGQG5jXbymsWFbHDhw9HXl4e8vLy8M9//tOw/NVXX8WWLVskC46IrCP52D5sfr634f2n8yZg/dPBSD62z3pBSaC4uBjh4eHYvHlznW0+++wzzJ07F8uXL0diYiLCw8MxZswYw3Qwlm4jiiIuXLiANWvWICsrC6mpqdixYwcUCgWioqIQHx8v6bkSkTHmNdvLaxY/dlapVMLT09NoWYcOHaDRaBodFBFZT/Kxfdi19FkU5t02Wq7NvY1dS59t8oSfkZGB2NhY+Pn5wcnJCeHh4Th58qQk+3788cfx5z//GU899VSdbd5//3288sormD59OkJDQ7FlyxY4OzsbfWC3ZJuff/4ZhYWFGDp0KNq0aYMOHTpgxIgR+PzzzzFw4EAsXbpUknMkopqY12wzr1lcxO7evRuTJ0/GgAEDEBERYfQiInnS63Q4tH4eALGWtVXLDm2Y32SX4NLT09G/f3+UlpZi//79uHTpEmbNmgW1Wm3UbtWqVXB1dTX5ysjIaPDxKyoqkJCQgOjoaMMyhUKB6OhofP/9943aJiEhAUql0jD8qpogCBg9ejSSkpIaHC8R1Y95zXbzmkUPO9i4cSOWLl2KadOm4csvv8T06dNx/fp1nDt3DjNnzpQ6RiJqJukXT0Gbe8tECxHanJtIv3gKHSOGSn78GTNmYMCAAdi1a5dhWdeuXWu0i4uLw+TJk03uKyAgoMHHz8vLg06ng5+fn9FyPz8/XLt2rVHbJCYmIjg4uNa5LlUqFezt7RscLxHVj3nNdvOaRUXs3/72N2zbtg1Tp07F9u3bsWDBAnTq1AnLli3Dr7/+KnWMVqXX6+CjvgdHVTluXj0DD7/xUPCJOWSjiu6aN0Weue0aIj09HQcPHsSFCxfqbevl5QUvLy/JY2hKiYmJ6NOnT63rUlJSEBIS0swREbUOzGtNx9p5zaLhBBkZGRg0aBCAqkeHFRYWAgBeeOEF/N///Z900VlZ8rF92D4zCkN7JqJ/8FXseftZmxgETlQXV2/znmFtbruGSEpKgkqlQq9evept21SX3Xx8fKBUKnHnzh2j5Xfu3EGbNm0atU1iYmKtw62Ki4uxf/9+TJo0qcHxElH9mNdsN69ZVMS2adPG0OPavn17wzQKaWlpEMXaxpzIT/Ug8KK72UbLm2sQOJE1BIUPhtq3LYC6nqQiQK1ph6DwwZIf297eHvfv30dJSUm9bePi4pCUlGTyZcllN5VKhT59+uDw4cOGZXq9HocPH8bAgQMt3ubGjRvIz8+vkex1Oh3i4uLg5OTEoVhETYR5zXbzmkXDCUaOHIn9+/ejd+/emD59Ot544w3s3r0b58+fx8SJE6WOsdnVPwhcwKEN8xEyZByHFpBNUSiViJnzHnYtfRZVCf/h34GqPwAxs99tkp/7yMhIuLu7Y8aMGVi0aBFEUcTx48cxatSoGuPHLL3sVlRUhNTUVMP7tLQ0JCUlwcvLC+3btwcAzJ07F7Gxsejbty/69++P9evXo7i4GNOnTzdst2nTJuzdu9eQ4OvbJiEhAQDg7++P7OxsaLVaJCQkYMOGDcjMzMSBAwfg7u7e4PMhovoxr9luXrOoiN22bRv0ej0AYObMmfD29sbp06cxfvx4/OEPf5A0QGuw9iBwImsKHTYBk1fuwMEP3jSajkataYuY2e8idNiEJjmut7c3vvrqK8yfPx/9+vWDSqXCgAEDMHXqVMmOcf78eYwYMcLwfu7cuQCA2NhYbN++HQAwZcoU5ObmYtmyZcjOzkavXr1w6NAhoxsc8vLycP36dcP7+rZJTEwEAHTr1g1KpRIeHh4IDg7G+PHjERcXJ7txcERyw7xmm3lNEG3l+r8ZtFot3N3dUVBQUGNqi4ddjv8MX7w9rd79TVq+HT1HT5EwwuZXUVqMVaN9AABL4vOgcnKxckTUGGVlZUhLS0PHjh3h6OjYuH0VabEmpipZPffePnTuF80rD1Zi6vt68+ZNBAYG1pvXHvbr7SwMb/sKAODorY/gFSD9WEBrYl6zLcxrtsnU99Xces3snthLly6hR48eUCgUuHTpksm2YWFh5u7WLL/88gv+9Kc/4bvvvkN2djYCAgLw/PPPY+nSpVCpVJIeC7DuIHCilsLRVY0VJ0utHQZRg6mcXPizS7ViXrMtZhexvXr1QnZ2NjQaDXr16gVBEGq9iUsQBOgknjD42rVr0Ov12Lp1K7p06YIrV67glVdeQXFxMd577z1JjwU8GASuzb2N2sfFClBr2jbJIHAiIiIiqp/ZRWxaWhp8fX0NXzenmJgYxMTEGN536tQJKSkp+PDDD5ukiLXmIHAiIiIiqp/ZRWxQUFCtX1tLQUFBvYOGy8vLUV5ebniv1WrN3n/1IPCv33/DaJqtph4ETkRkyqN5rXqebiKi1sai2Qnu3r0Lb29vAEBmZiY++ugjlJaWYvz48YiKipI0wNqkpqbir3/9a729sKtXr8bbb79t8XFCh02ApnNfTO4+BY6qcqzZsRQ9RvKJXURkPY3Na0REtqJBDzu4fPkyOnToAI1Gg5CQECQlJaFfv3744IMPsG3bNowYMQL79u0ze3+LFi2CIAgmX48+1/fWrVuIiYnBM888g1deecXk/hcvXoyCggLDKzMzsyGnCwBQKJTI03riZl4btOs+gAUsEVnVo3ktOTnZ2iEREVlFg3piFyxYgJ49e+LTTz/Fv//9b/z+97/H2LFj8dFHHwEAXnvtNaxZswYTJkwwa39vvvkmpk2bZrJNp06dDF/fvn0bI0aMwKBBg7Bt27Z69+/g4AAHBwezYiEikoNH81pDhkkREdmSBhWx586dw3fffYewsDCEh4dj27Zt+OMf/wiFoqpD97XXXsOAAQPM3p+vr6/hZrH63Lp1CyNGjECfPn3w8ccfG47Z1FzVjkg61RcAcF/duPnpiIiIiEgaDSpif/31V7Rp0wYA4OrqChcXF3h6ehrWe3p6NslNBrdu3cLw4cMRFBSE9957D7m5uYZ11fEQkbREXQXEH1YBAITIJRCU0s/JTETUnJjXbEuDb+wSBMHk+6YQHx+P1NRUpKamol27dkbrWtEDx4ialSjqH3ytTQc8OkMQmucKCBFRU2Besy0N/s5NmzYNEydOxMSJE1FWVoa4uDjD+5deeqkpYsS0adMgimKtLyKSnng3GUja/GDBj59CTFhftVzGVq9ejX79+sHNzQ0ajQYTJkxASkpKjXabN29Ghw4d4OjoiMjISJw9e7befZuzzbBhwww3rdrZ2cHf3x8TJ07EmTNnJDk/czm5OGBj/AfYGP8BnFx43wC1DsxrtpfXGlTExsbGQqPRwN3dHe7u7nj++ecREBBgeK/RaPDiiy82VaxE1AzEu8kQU3YBFY8MDarQQkzZJeuEf+zYMcycORNnzpxBfHw8Kisr8bvf/Q7FxcWGNp999hnmzp2L5cuXIzExEeHh4RgzZgxycnLq3K8524iiiAsXLmDNmjXIyspCamoqduzYAYVCgaioKMTHxzfpuRO1ZsxrtpnXBLEVdWdqtVq4u7ujoKAAarXarG0qiu7B7tIGAMD9sNlQuXrWs4W8VJQWY9VoHwDAkvg8qJxcrBwRNUZZWRnS0tLQsWNHODo2/EZEUdRDTFgPVJi4412lhtBnTpNdgsvIyMBbb72FQ4cOQavVolu3bti8eTOGDBki+bFyc3Oh0Whw7NgxDB06FAAQGRmJfv36YdOmTQAAvV6PwMBAvPbaa1i0aFGt+zFnm59++gnBwcE4ffo0Bg4caNhWFEUMGzYMZWVldfaMmPq+3rx5E4GBgQ3Ka6UFv+KHc3erYu/nDSd30w+OIbIm5rWGsYW8Zm69xoEgRPSANt10ogeq1mvTm+Tw6enp6N+/P0pLS7F//35cunQJs2bNqpHEVq1aBVdXV5OvjIyMeo9XUFAAAIan/1VUVCAhIQHR0dGGNgqFAtHR0fj+++9r3Ye52yQkJECpVCI8PNxoe0EQMHr0aCQlJdUbLxFZgHnNZvOaRU/sIiIbVVEkbbsGmjFjBgYMGIBdu3YZlnXt2rVGu7i4OEyePNnkvgICAkyu1+v1mDNnDgYPHowePXoAAPLy8qDT6eDn52fU1s/Pr8aDV6qZu01iYiKCg4Ph7OxcYx8qlQr29vYm4yUiCzGv2WxeYxFLRA+oXKVt1wDp6ek4ePAgLly4UG9bLy8vQy+DpWbOnIkrV67g5MmTjdqPuRITE9GnT59a16WkpCAkJKRZ4iBqdZjXmoy18xqHE7RyKicXrDhZihUnSzkelgB1EKCqZ1ylSl3VTmJJSUlQqVTo1atXvW0be9lt1qxZOHDgAI4cOWI0bZ+Pjw+USiXu3Llj1P7OnTt1zklt7jaJiYmIiIiosX1xcTH279+PSZMm1XveRGQB5jWbzWssYonIQBAUEDrGmG7TMaZJbn6wt7fH/fv3UVJSUm/buLg4JCUlmXzVdtlNFEXMmjULe/fuxXfffYeOHTsarVepVOjTpw8OHz5sWKbX63H48GGjmxYaus2NGzeQn59fI9nrdDrExcXByckJM2fOrPe8paJUChjq/CmGOn8KpbLp5/omsibmNdvNaxxOQERGBO9QIHgyxLSDxtPRqNRVid47tEmOGxkZCXd3d8yYMQOLFi2CKIo4fvw4Ro0aVWP8mKWX3WbOnIkdO3bgyy+/hJubG7KzswEA7u7ucHJyAgDMnTsXsbGx6Nu3L/r374/169ejuLgY06dPN+xn06ZN2Lt3ryHB17dNQkICAMDf3x/Z2dnQarVISEjAhg0bkJmZiQMHDsDd3b3h/2hEZBbmNdvMayxiiagGwTsUonsn4OyaqgWPPQehiZ9s4+3tja+++grz589Hv379oFKpMGDAAEydOlWyY3z44YcAgOHDhxst//jjjzFt2jQAwJQpU5Cbm4tly5YhOzsbvXr1wqFDh4xucMjLy8P169cN7+vbJjExEQDQrVs3KJVKeHh4IDg4GOPHj0dcXFyjx8ERUf2Y12wvr3Ge2HrY+jyxZFsaO5/iw/iM8ZZD6nlimddITpjXbJMU88SyJ5aIaiUoVRAGrbB2GEREkmFesy28sYuIiIiIZIdFLBERERHJDotYIiIiIpIdFrFEREREJDu8sas+ShXeWbAWALAkfr6VgyEiIiIigD2xRERERCRD7IklolrpdHqcOFI18XXUiM5QKvmZl4jkjXnNtvC7R0RERESywyKWiGr18MP88u+VohU93M/2/TbW/50FawE+sYhaEeY128IilohqyM0pwtnv0w3vLyfdxpmTvyA3p8iKUTXehx9+iLCwMKjVaqjVagwcOBAHDx6s0W7z5s3o0KEDHB0dERkZibNnz9a7b3O2GTZsGARBgCAIsLOzg7+/PyZOnIgzZ85Icn5EVDfmNdvLayxiichIbk4Rrl7KQkW5zmh5efl9XL2UJeuE365dO6xZswYJCQk4f/48Ro4ciSeffBJXr141tPnss88wd+5cLF++HImJiQgPD8eYMWOQk5NT537N2UYURVy4cAFr1qxBVlYWUlNTsWPHDigUCkRFRSE+Pr5Jz52oNWNes828xiKWiAxEUURqSq7JNqkpuU16CS4jIwOxsbHw8/ODk5MTwsPDcfLkSUn2PW7cODzxxBPo2rUrunXrhpUrV8LV1dWox+D999/HK6+8gunTpyM0NBRbtmyBs7Mz/vnPf9a5X3O2+fnnn1FYWIihQ4eiTZs26NChA0aMGIHPP/8cAwcOxNKlSyU5RyIyxrxmu3mNRSwRGeTfK0V5+X2TbcrL7yP/XmmTHD89PR39+/dHaWkp9u/fj0uXLmHWrFlQq9VG7VatWgVXV1eTr4yMDJPH0ul02LlzJ4qLizFw4EAAQEVFBRISEhAdHW1op1AoEB0dje+//77W/Zi7TUJCApRKJcLDw422FwQBo0ePRlJSkln/RkTUMMxrtpvXOMUWERlUVOjqb9SAdg01Y8YMDBgwALt27TIs69q1a412cXFxmDx5ssl9BQQE1Lr88uXLGDhwIMrKyuDq6oq9e/ciNDQUAJCXlwedTgc/Pz+jbfz8/HDt2rVa92fuNomJiQgODoazs3ONfahUKtjb25s8HyKyDPOa7eY1FrFEZKBSKSVt1xDp6ek4ePAgLly4UG9bLy8veHl5WXSc4OBgJCUloaCgALt370ZsbCyOHTtmSPhNJTExEX369Kl1XUpKCkJCQpr0+EStFfNa07F2XuNwAiIy8PB0goOD6c+2Dg528PB0kvzYSUlJUKlU6NWrV71tG3PZTaVSoUuXLujTpw9Wr16N8PBwbNiwAQDg4+MDpVKJO3fuGG1z584dtGnTptb9mbtNYmIiIiIiamxfXFyM/fv3Y9KkSfWet1RUTi5YcbIUK06WQuXk0mzHJbIG5jXbzWssYonIQBAEdAn2NdmmS7AvBEGQ/Nj29va4f/8+SkpK6m0bFxeHpKQkk6+6Lrs9Sq/Xo7y8HEDVH4I+ffrg8OHDRusPHz5sGF/2KHO2uXHjBvLz82ske51Oh7i4ODg5OWHmzJlmxUtEDcO8Zrt5TTbDCcaPH4+kpCTk5OTA09MT0dHRWLt2rdnfUCIyj6/GFd3D/PFzSo7RdDQODnboEuwLX41rkxw3MjIS7u7umDFjBhYtWgRRFHH8+HGMGjWqxvgxSy+7LV68GI8//jjat2+PwsJC7NixA0ePHsU333xjaDN37lzExsaib9++6N+/P9avX4/i4mJMnz7d0GbTpk3Yu3evIcHXt01CQgIAwN/fH9nZ2dBqtUhISMCGDRuQmZmJAwcOwN3dvcHnQ0TmYV6zzbwmmyJ2xIgRWLJkCfz9/XHr1i3MmzcPTz/9NE6fPm3t0Ihsjq/GFZ5eTjh59AYAoGevAHh5OzdJT0U1b29vfPXVV5g/fz769esHlUqFAQMGYOrUqZIdIycnBy+++CKysrLg7u6OsLAwfPPNNxg9erShzZQpU5Cbm4tly5YhOzsbvXr1wqFDh4xucMjLy8P169fN3iYxMREA0K1bNyiVSnh4eCA4OBjjx49HXFycxePgiMh8zGu2l9cEUabPXNu/fz8mTJiA8vJys+9+02q1cHd3R0FBQY2pLepSUVqMVaN9AABL4vM4foxatLKyMqSlpaFjx45wdHRs1L50Oj1OHKlKaFEjOkOp5OgjazH1fb158yYCAwMblNeI5IR5zTaZ+r6aW6/Jpif2Yb/++is+/fRTDBo0yGQBW15ebhgTAlT9oxCReZRKBYZH15wGhqzr0bxWWFhoxWiI5IV5zbbI6iPIwoUL4eLiAm9vb2RkZODLL7802X716tVwd3c3vAIDA5spUiKipvFoXmvqKXSIiFoqqxaxixYtgiAIJl8PT6o7f/58XLhwAf/973+hVCrx4osvmnxM3OLFi1FQUGB4ZWZmNsdpERE1mUfzWnJysrVDIiKyCqsOJ3jzzTcxbdo0k206depk+NrHxwc+Pj7o1q0bHnvsMQQGBuLMmTN1ThHh4OAABwcHKUMmIrKqR/Mah0kRUWtl1SLW19cXvr6m526ri16vBwCjsWFERERE1DrI4sauH374AefOncOQIUPg6emJ69ev46233kLnzp3r7IUlIiIiItslixu7nJ2dsWfPHowaNQrBwcF4+eWXERYWhmPHjnG4ABEREVErJIue2J49e+K7776zdhhErUpJcRkGuD4NADhTtBvOLo2bn5GIyNqY12yLLHpiiYiIiIgexiKWiGql0z14vnjC8StG723BmjVrIAgC5syZU2Pd5s2b0aFDBzg6OiIyMhJnz56td3/mbDNs2DDD9IF2dnbw9/fHxIkTcebMGSlOiYjqwbxmW3mNRSwR1fDtntN4KvSPhvczn1iBmA4v49s9p60YlXTOnTuHrVu3IiwsrMa6zz77DHPnzsXy5cuRmJiI8PBwjBkzBjk5OXXuz5xtRFHEhQsXsGbNGmRlZSE1NRU7duyAQqFAVFQU4uPjm+RciagK85oN5jWxFSkoKBABiAUFBWZvU15SJC4f7CguH+wolpcUNWF0RI1XWloqJicni6WlpRbvI/6LU2KYMFbsCeNXmFD1iv/ilIQR15Seni6++OKLokajER0dHcWwsDDxxIkTku2/sLBQ7Nq1qxgfHy8OGzZMnD17ttH6/v37izNnzjS81+l0YkBAgLh69eo692nONikpKSIA8fTp00bb6vV6MSoqSuzXr1+d+zf1fc3MzGxwXiOSE+a1+tlaXjO3XmNPLBEZ6HQ6rJ29DbU9CK962bo525rsElx6ejr69++P0tJS7N+/H5cuXcKsWbOgVquN2q1atQqurq4mXxkZGbUeY+bMmRg7diyio6NrrKuoqEBCQoLROoVCgejoaHz//fe17s/cbRISEqBUKhEeHm60vSAIGD16NJKSkur99yGihmNes928JovZCYioeSSeuIo7N/PqXC+KQHZmHhJPXEW/4TUvWTXWjBkzMGDAAOzatcuwrGvXrjXaxcXFYfLkySb3FRAQUGPZzp07kZiYiHPnztW6TV5eHnQ6Hfz8/IyW+/n5GT0C25JtEhMTERwcDGdn5xr7UKlUsLe3N3k+RGQZ5jXbzWssYonIIDfrnqTtGiI9PR0HDx7EhQsX6m3r5eUFLy+vBu0/MzMTs2fPRnx8PBwdm39ancTERPTp06fWdSkpKQgJCWnmiIhaB+a1pmPtvMbhBPVQOblgxclSrDhZCpWTi7XDIWpSvv6ekrZriKSkJKhUKvTq1avetpZcdktISEBOTg4iIiJgZ2cHOzs7HDt2DBs3boSdnR10Oh18fHygVCpx584do23v3LmDNm3a1BqLudskJiYiIiKixvbFxcXYv38/Jk2aVO95E1HDMa/Zbl5jTywRGUREdYdfOx/k3MqrdfyYIAB+7XwQEdVd8mPb29vj/v37KCkpqfXS1MMsuew2atQoXL582WjZ9OnTERISgoULF0KpVEKpVKJPnz44fPgwJkyYAADQ6/U4fPgwZs2aVetxVCpVvdvcuHED+fn5NZK9TqdDXFwcnJycMHPmTJPnQ0SWYV6z3bzGIpaIDJRKJRZueBVvPr0KEAA8lPAFoer/C9a/CqVSKfmxIyMj4e7ujhkzZmDRokUQRRHHjx/HqFGjaowfs+Sym5ubG3r06GG0zMXFBd7e3kbL586di9jYWPTt2xf9+/fH+vXrUVxcjOnTpxvabNq0CXv37sXhw4fN2iYhIQEA4O/vj+zsbGi1WiQkJGDDhg3IzMzEgQMH4O7u3qDzISLzMK/Zbl5jEUtERqInDsJfdi/Bmte3IufWXcNyv3Y+WLD+VURPHNQkx/X29sZXX32F+fPno1+/flCpVBgwYACmTp3aJMery5QpU5Cbm4tly5YhOzsbvXr1wqFDh4xucMjLy8P169fN3iYxMREA0K1bNyiVSnh4eCA4OBjjx49HXFxcg/9wEVHDMK/ZZl4TRLG2znXbpNVq4e7ujoKCghpTWxDZgrKyMqSlpaFjx46NHuRfqC3GYPcpAIDNX6/AoN/1bpKeCqqfqe/rzZs3ERgYyLxGNot5zTaZ+r6aW6/xxi4iqtXDib3P0B5M9EQke8xrtoXDCYioVs4ujrgkHrB2GEREkmFesy3siSUiIiIi2WERS0RERESywyKWiIiIiGSHRSyRDWpFk460Cvx+EvH3wNZI8f1kEUtkQ+zt7QEAJSUlVo6EpFT9/az+/hK1JsxrtkmKvMbZCYhsSPWE0zk5OQAAZ2dnCNWPpCHZEUURJSUlyMnJgYeHB6cDolaJec22SJnXWMQS2Zg2bdoAgCHhk/x5eHgYvq9ErRHzmu2RIq+xiCWyMYIgwN/fHxqNBpWVldYOhxrJ3t6ePbDU6jGv2Rap8hqLWCIbpVQqWfwQkU1hXqOH8cYuIiIiIpIdFrFEREREJDssYomIiIhIdlrVmNjqiXW1Wq2VIyEikkZ1PmNeIyJbUZ3P6nsgQqsqYgsLCwEAgYGBVo6EiEhazGtEZGsKCwvh7u5e53pBbEXPcdPr9bh9+zbc3NwaNFGyVqtFYGAgMjMzoVarmzBC67D18wNs/xx5fvJn6TnqdDqkpqaiS5cuDbpr29b/TW39/ADbP0een/xZeo6iKKKwsBABAQFQKOoe+dqqemIVCgXatWtn8fZqtdpmf9AA2z8/wPbPkecnf5acY79+/Zr1eHJi6+cH2P458vzkz5JzNNUDW403dhERERGR7LCIJSIiIiLZYRFrBgcHByxfvhwODg7WDqVJ2Pr5AbZ/jjw/+Wvuc7T1f1NbPz/A9s+R5yd/TX2OrerGLiIiIiKyDeyJJSIiIiLZYRFLRERERLLDIpaIiIiIZIdFLBERERHJDotYE44fP45x48YhICAAgiBg37591g5JUqtXr0a/fv3g5uYGjUaDCRMmICUlxdphSebDDz9EWFiYYZLlgQMH4uDBg9YOq8msWbMGgiBgzpw51g5FMitWrIAgCEavkJAQa4clqVu3buH555+Ht7c3nJyc0LNnT5w/f77Jjse8Jm/Ma/LHvCYdFrEmFBcXIzw8HJs3b7Z2KE3i2LFjmDlzJs6cOYP4+HhUVlbid7/7HYqLi60dmiTatWuHNWvWICEhAefPn8fIkSPx5JNP4urVq9YOTXLnzp3D1q1bERYWZu1QJNe9e3dkZWUZXidPnrR2SJK5d+8eBg8eDHt7exw8eBDJycn4y1/+Ak9PzyY7JvOavDGv2QbmNYmIZBYA4t69e60dRpPKyckRAYjHjh2zdihNxtPTU/z73/9u7TAkVVhYKHbt2lWMj48Xhw0bJs6ePdvaIUlm+fLlYnh4uLXDaDILFy4UhwwZYrXjM6/ZBuY1eWFekw57YsmgoKAAAODl5WXlSKSn0+mwc+dOFBcXY+DAgdYOR1IzZ87E2LFjER0dbe1QmsTPP/+MgIAAdOrUCc899xwyMjKsHZJk9u/fj759++KZZ56BRqNB79698dFHH1k7LJvCvCZPzGvy1Zx5za5J9kqyo9frMWfOHAwePBg9evSwdjiSuXz5MgYOHIiysjK4urpi7969CA0NtXZYktm5cycSExNx7tw5a4fSJCIjI7F9+3YEBwcjKysLb7/9NqKionDlyhW4ublZO7xGu3HjBj788EPMnTsXS5Yswblz5/D6669DpVIhNjbW2uHJHvOaPDGvyVuz5rVm6e+1AbDxy25xcXFiUFCQmJmZae1QJFVeXi7+/PPP4vnz58VFixaJPj4+4tWrV60dliQyMjJEjUYjXrx40bDM1i67PerevXuiWq22mUun9vb24sCBA42Wvfbaa+KAAQOa5fjMa/LEvGZbmNcsx+EEhFmzZuHAgQM4cuQI2rVrZ+1wJKVSqdClSxf06dMHq1evRnh4ODZs2GDtsCSRkJCAnJwcREREwM7ODnZ2djh27Bg2btwIOzs76HQ6a4coOQ8PD3Tr1g2pqanWDkUS/v7+NXrQHnvsMZu6tGgtzGvyxLwmf82Z1zicoBUTRRGvvfYa9u7di6NHj6Jjx47WDqnJ6fV6lJeXWzsMSYwaNQqXL182WjZ9+nSEhIRg4cKFUCqVVoqs6RQVFeH69et44YUXrB2KJAYPHlxj+qeffvoJQUFBVopI/pjX5I15Tf6aM6+xiDWhqKjI6JNRWloakpKS4OXlhfbt21sxMmnMnDkTO3bswJdffgk3NzdkZ2cDANzd3eHk5GTl6Bpv8eLFePzxx9G+fXsUFhZix44dOHr0KL755htrhyYJNze3GuP8XFxc4O3tbTPj/+bNm4dx48YhKCgIt2/fxvLly6FUKjF16lRrhyaJN954A4MGDcKqVaswefJknD17Ftu2bcO2bdua7JjMa/LGvCZ/zGsSknyAgg05cuSICKDGKzY21tqhSaK2cwMgfvzxx9YOTRIvvfSSGBQUJKpUKtHX11ccNWqU+N///tfaYTUpWxs7NmXKFNHf319UqVRi27ZtxSlTpoipqanWDktSX331ldijRw/RwcFBDAkJEbdt29akx2NekzfmNfljXpOOIIqiKH1pTERERETUdHhjFxERERHJDotYIiIiIpIdFrFEREREJDssYomIiIhIdljEEhEREZHssIglIiIiItlhEUtEREREssMiloiIiIhkh0UsEREREckOi1iSreHDh2POnDl1vicikhvmNSLzsYilFis3NxczZsxA+/bt4eDggDZt2mDMmDE4depUre337NmDP/3pT00a07Rp0yAIQo1XamqqJPvnHywi28a8RiQdO2sHQFSXSZMmoaKiAp988gk6deqEO3fu4PDhw7h7926t7b28vJolrpiYGHz88cdGy3x9fZvl2OaqqKiASqWydhhE9AjmNcsxr1ENIlELdO/ePRGAePTo0TrbDBs2TJw9e3ad73U6nbh27Vqxc+fOokqlEgMDA8U///nPRutXrVoldujQQXR0dBTDwsLEzz//3GRcsbGx4pNPPlnn+oMHD4qDBw8W3d3dRS8vL3Hs2LFiamqqWTHFxsaKAIxeaWlpYllZmfjaa6+Jvr6+ooODgzh48GDx7NmzNf4tZs6cKc6ePVv09vYWhw8fbvI8Ho5n5cqVYpcuXUQHBwdRo9GIsbGxZm1LRA3DvMa8RtLicAJqkVxdXeHq6op9+/ahvLzcon0sXrwYa9aswVtvvYXk5GTs2LEDfn5+hvWrV6/Gv/71L2zZsgVXr17FG2+8geeffx7Hjh2zOO7i4mLMnTsX58+fx+HDh6FQKPDUU09Br9fXG9OGDRswcOBAvPLKK8jKykJWVhYCAwOxYMECfPHFF/jkk0+QmJiILl26YMyYMfj111+Njv3JJ59ApVLh1KlT2LJli1nxrl69Gjt37sS2bduQkpKCvXv3YujQoRafPxHVjXmNeY0kZu0qmqguu3fvFj09PUVHR0dx0KBB4uLFi8WLFy8a1pvqsdBqtaKDg4P40Ucf1brvsrIy0dnZWTx9+rTR8pdfflmcOnVqnTHFxsaKSqVSdHFxMbyefvrpOtvn5uaKAMTLly/XG1Nt51RUVCTa29uLn376qWFZRUWFGBAQIK5bt85ou969e9e537pERUWJS5YsafB2RGQZ5jXmNZIOx8RSizVp0iSMHTsWJ06cwJkzZ3Dw4EGsW7cOf//73zFt2jST2/74448oLy/HqFGjal2fmpqKkpISjB492mh5RUUFevfubXLfI0aMwIcffmh47+LiYvj6559/xrJly/DDDz8gLy/P0FORkZGBkpISkzHV5vr166isrMTgwYMNy+zt7dG/f3/8+OOPRm379Olj9n6rjR8/HgsXLsT58+fxzDPPYNKkSfD09GzwfojIPMxrzGskHRax1KI5Ojpi9OjRGD16NN566y387//+L5YvX15vsndycjK5vqioCADwn//8B23btjVa5+DgYHJbFxcXdOnSpdZ148aNQ1BQED766CMEBARAr9ejR48eqKioqDemxnr4j4655s2bh/Hjx2Pfvn344IMPDIm/Y8eOTRAhEQHMaw3BvEamcEwsyUpoaCiKi4vrbde1a1c4OTnh8OHDde7HwcEBGRkZ6NKli9ErMDDQotju3r2LlJQU/L//9/8watQoPPbYY7h3757ZMQGASqWCTqczvO/cubNhPFi1yspKnDt3DqGhoRbF+ahu3bphwYIFSEhIQGFhIZKTkyXZLxGZh3mNeY0sw55YapHu3r2LZ555Bi+99BLCwsLg5uaG8+fPY926dXjyySfr3d7R0RELFy7EggULoFKpMHjwYOTm5uLq1at4+eWX4ebmhnnz5uGNN96AXq/HkCFDUFBQgFOnTkGtViM2NrbBMXt6esLb2xvbtm2Dv78/MjIysGjRIrNjAoAOHTrghx9+wC+//AJXV1d4eXlhxowZmD9/Pry8vNC+fXusW7cOJSUlhm0stW7dOrRp0wb9+vWDQqHA1q1b4e3tjUGDBjVqv0RUO+Y15jWSFotYapFcXV0RGRmJDz74wDB+KjAwEK+88gqWLFli1j7eeust2NnZYdmyZbh9+zb8/f0RFxdnWP+nP/0Jvr6+WL16NW7cuAEPDw9ERESYvf9HKRQK7Ny5E6+//jp69OiB4OBgbNy4EcOHDzc7pnnz5iE2NhahoaEoLS1FWloa1qxZA71ejxdeeAGFhYXo27cvvvnmm3rHeG3fvh3Tp0+HKIq1ri8rK8PKlSuRkZEBV1dXDB48GN999x3HjhE1EeY15jWSliDW9ZNARLK2fPlyHDt2DEePHrV2KEREkmBeo4exJ5bIRh08eBCbNm2ydhhERJJhXqOHsSeWiIiIiGSHsxMQERERkeywiCUiIiIi2WERS0RERESywyKWiIiIiGSHRSwRERERyQ6LWCIiIiKSHRaxRERERCQ7LGKJiIiISHZYxBIRERGR7LCIJSIiIiLZYRFLRERERLLz/wPiHpSxEWXS8AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# So imshow of bias over k and s.\n", + "# Plot a grid of panels (3 rows, 2 columns) of the bias vs s, color coded by c, where panels in col 1 are k=0,1,2 and col 2 are k=3,4,5\n", "\n", - "plt.figure()\n", - "plt.imshow(log_Z_mean_array - true_logZ, origin='lower',\n", - " extent=[np.min(k_array), np.max(k_array), np.min(s_array), np.max(s_array)],\n", - " aspect='auto', cmap='PuOr')\n", - "plt.xlabel(\"Num Phantom Samples\")\n", - "plt.ylabel(\"Num Slices\")\n", - "plt.colorbar(label=\"Bias (nats)\")\n", - "plt.show()\n" + "# Make axes share x, y\n", + "fig, axes = plt.subplots(3, 2, sharex=True, sharey=True, figsize=(8, 8))\n", + "unique_c = np.unique(c_array)\n", + "for j, k in enumerate(k_array):\n", + " row = j // 2\n", + " col = j % 2\n", + " ax = axes[row, col]\n", + " for i, c in enumerate(c_array):\n", + " ax.errorbar(s_array, bias[:, k, i], yerr=bias_uncert[:, k, i], fmt='o', c=color(c, unique_c),\n", + " label=rf\"$c={c / ndims}D$\")\n", + " ax.legend(loc='lower right')\n", + " ax.axhline(0, color='k', linestyle='--')\n", + " # Put label in top right corner for k-value of panel\n", + " ax.text(0.95, 0.95, fr\"$k={k}$\", transform=ax.transAxes, ha='right', va='top')\n", + "\n", + "# Make space between axes disappear\n", + "plt.subplots_adjust(wspace=0, hspace=0)\n", + "\n", + "# Put x-labels on bottom row, and y-labels on left column\n", + "for col in range(2):\n", + " for row in range(3):\n", + " ax = axes[row, col]\n", + " if row == 2:\n", + " ax.set_xlabel(r\"Slice Factor, $s$\")\n", + " if col == 0:\n", + " ax.set_ylabel(\"Bias (nats)\")\n", + " # if col == 1:\n", + " # ax.set_yticklabels([])\n", + " # if row != 2:\n", + " # ax.set_xticklabels([])\n", + "\n", + "plt.show()\n", + "\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "96793a5eacbc33bf", + "execution_count": 8, + "id": "f3d7c96fada6b9c2", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.539957390Z" + "start_time": "2023-12-18T16:43:35.433080988Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_104572/1306734269.py:30: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n", + " cm = plt.cm.get_cmap('PuOr')\n" + ] + }, + { + "data": { + "image/png": "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u7vD19cXTz75JJ555hn4+voiIiICr7/+OoqKikzPaazXX38dwcHB6N27NxQKBVauXAk/Pz/079+/Scd1NMw15pqtMNeYa7bCXGOuUTNh70EVLUFJSYmYN2+e6NGjh/Dy8hI6nU507NhRvPDCC6KoqEgIUb/p4l555RURGRkpXFxcREREhFi8eLHp50ajUbz77ruiY8eOwsXFRQQEBIjhw4eLhISEOuO61XRxu3btEp06dRKurq6ia9euYu/evQKA2Lx5c71iOnfunLj99tuFVqs1TRdXXFwsZs6cKfz9/S1OF1f9tQshxOrVq4WldF20aJHo0KGD0Gg0wt/fX9x///3i9OnTde7vrJhrzDVbYa4x12yFucZco+ZBEkII+5QrRPW3cOFCJCQkYO/evfYOhZwcc41shblGtsJcI2tg9yRyCDt27MAHH3xg7zCoBWCuka0w18hWmGtkDbzSQEREREREFnH2JCIiIiIisohFAxERERERWcSigYiIiIiILGLRQEREREREFrFoICIiIiIii1g0EBERERGRRSwaiIiIiIjIIhYNRERERERkEYsGIiIiIiKyiEUDERERERFZ9P/q4iFY9HmAsgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Plot log_Z with y error bars vs phantom fraction\n", - "plt.figure()\n", - "unique_c = np.unique(s_array)\n", - "phantom_fraction = k_array / (k_array + 1)\n", - "for i, s in enumerate(s_array):\n", - " plt.errorbar(phantom_fraction, log_Z_mean_array[i, :], yerr=log_Z_uncert_array[i, :], fmt='o', c=color(s, unique_c),\n", - " label=f\"Num Slices: {s}\")\n", - "plt.xlabel(\"Phantom Fraction\")\n", - "plt.ylabel(r\" $\\log Z$ (nats)\")\n", - "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", - "plt.legend(loc='lower right')\n", + "# Plot a grid of panels (1 rows, 4 columns) of the bias vs s, color coded by k, where panels in col 1 are c=0, col 2 are c=1, col 3 are c=2, and col 4 are c=3\n", + "\n", + "# Make axes share x, y\n", + "fig, axes = plt.subplots(1, 4, sharex=True, sharey=True, figsize=(8, 2.5))\n", + "unique_k = np.unique(k_array)\n", + "\n", + "for j, c in enumerate(c_array):\n", + " ax = axes[j]\n", + " for i, k in enumerate(k_array):\n", + " # smaller point size\n", + " ax.errorbar(s_array, bias[:, k, j], yerr=bias_uncert[:, k, j], fmt='.', c=color(k, unique_k), label=rf\"$k={k}$\")\n", + " ax.axhline(0, color='k', linestyle='--')\n", + " # Put label in top right corner for k-value of panel\n", + " ax.text(0.95, 0.95, fr\"$c={c // ndims:d}D$\", transform=ax.transAxes, ha='right', va='top')\n", + "\n", + "# Put a single legend to the right of the right-most column\n", + "axes[-1].legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "\n", + "# Make space between axes disappear\n", + "plt.subplots_adjust(wspace=0, hspace=0)\n", + "\n", + "# Put x-labels on bottom row, and y-labels on left column\n", + "for col in range(4):\n", + " ax = axes[col]\n", + " ax.set_xlabel(r\"Slice Factor, $s$\")\n", + " if col == 0:\n", + " ax.set_ylabel(\"Bias (nats)\")\n", + "\n", + "plt.savefig(f\"bias_vs_s_grid_per_c_{ndims}D.pdf\", bbox_inches='tight', pad_inches=0, dpi=300)\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, - "id": "80c8ac3e67aea119", + "id": "68d6e8d6f31c9ae", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540004413Z" + "start_time": "2023-12-18T16:43:35.433114445Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, "outputs": [], @@ -265,83 +477,142 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "7b27324b500ed488", + "execution_count": 9, + "id": "8cf4960a5144a213", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540038487Z" + "start_time": "2023-12-18T16:43:35.433153887Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_104572/1306734269.py:30: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n", + " cm = plt.cm.get_cmap('PuOr')\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Plot log Z vs sample efficiency, color coded by number of slices\n", + "# Define consistency h=std(abs(bias)) over k dimension\n", + "# Plot h vs s, color coded by c\n", + "\n", + "h = np.var(np.abs(bias), axis=1)\n", + "\n", "plt.figure()\n", - "colors = s_array\n", - "unique_c = np.unique(colors)\n", - "for j, s in enumerate(s_array):\n", - " plt.errorbar(sample_efficiency_array[j, :], log_Z_mean_array[j, :], yerr=log_Z_uncert_array[j, :], fmt='o',\n", - " c=color(s, unique_c),\n", - " label=f\"Num Slices: {s}\")\n", - "plt.xlabel(\"Sample Efficiency\")\n", - "plt.ylabel(r\" $\\log Z$ (nats)\")\n", - "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", - "plt.legend(loc='lower right')\n", + "unique_c = np.unique(c_array)\n", + "for i, c in enumerate(c_array):\n", + " plt.plot(s_array, h[:, i], ls='-', c=color(c, unique_c), label=rf\"$c={c / ndims}D$\")\n", + "plt.xlabel(r\"Slice Factor, $s$\")\n", + "plt.ylabel(r\"Bias standard deviation (nats)\")\n", + "plt.legend(loc='upper right')\n", + "plt.savefig(\"consistency_vs_s.pdf\", bbox_inches='tight', pad_inches=0, dpi=300)\n", "plt.show()" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "3748e53d20fa6218", + "cell_type": "markdown", + "id": "884cf1c8fc7dd01f", "metadata": { "collapsed": false, - "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540078585Z" + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], "source": [ - "# Plot log_Z vs run time, color coded by number of phantom samples\n", - "plt.figure()\n", - "colors = k_array\n", - "unique_c = np.unique(colors)\n", - "for i, k in enumerate(k_array):\n", - " plt.errorbar(run_time_array[:, i], log_Z_mean_array[:, i], yerr=log_Z_uncert_array[:, i], fmt='o',\n", - " c=color(k, unique_c),\n", - " label=f\"Num Phantom Samples: {k}\")\n", - "plt.xlabel(\"Run Time (s)\")\n", - "plt.ylabel(r\" $\\log Z$ (nats)\")\n", - "plt.gca().axhline(true_logZ, color='k', linestyle='--')\n", - "plt.legend(loc='lower right')\n", - "plt.show()" + "# Using phantom samples to improve sample efficiency\n", + "Using the above result, the sample efficiency can be significantly boosted by using a large enough number of slices, and larger phantom fraction. We can easily see this looking at bias vs run time speed up. The run time speed is defined as the ratio of the run time with no phantom samples to the run time with phantom samples. We see a speed up of almost 4x with a phantom fraction of 0.8, and slice factor >= 3. This is a significant improvement in sample efficiency, and is the key to achieving high sample efficiency with nested sampling in high dimensions." ] }, { "cell_type": "code", - "execution_count": null, - "id": "9ba3c8b3f147923d", + "execution_count": 10, + "id": "ecab04981194ca61", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540106118Z" + "start_time": "2023-12-18T16:43:35.433187595Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_104572/1306734269.py:30: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n", + " cm = plt.cm.get_cmap('PuOr')\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Plot speed up vs phantom fraction, plotting only those with slice factor >= 3\n", + "# Plot two panels on top of each other which share x axis. The x-axis is f, for k>0. The top panels is sampling efficiency improvement (for s=s_max) colored by k, and the bottom panel is number of likelihood evaluations for only s=s_max colored by k.\n", "\n", - "plt.figure()\n", - "colors = s_array\n", - "unique_c = np.unique(colors)\n", - "phantom_fraction = k_array / (k_array + 1)\n", - "for j, s in enumerate(s_array):\n", - " plt.errorbar(phantom_fraction, run_time_speed_up_array[j, :], fmt='o', c=color(s, unique_c),\n", - " label=f\"Num Slices: {s}\")\n", - "plt.xlabel(\"Phantom Fraction\")\n", - "plt.ylabel(\"Run Time Speed Up\")\n", - "plt.gca().axhline(1, color='k', linestyle='--')\n", - "plt.legend(loc='lower right')\n", + "# Make axes share x\n", + "fig, axes = plt.subplots(2, 1, sharex=True, figsize=(4, 4))\n", + "unique_s = np.unique(s_array)\n", + "for i, s in enumerate(s_array):\n", + " for j, k in enumerate(k_array):\n", + " if k == 0:\n", + " continue\n", + " for l, c in enumerate(c_array):\n", + " if s < 4:\n", + " continue\n", + " if c < 20 * ndims:\n", + " continue\n", + " f = (c - 1) / (c - 1 / (k + 1))\n", + " axes[0].plot(f, efficiency_improvement_array[i, j, l], '.', c=color(k, unique_k))\n", + " axes[1].plot(f, num_likelihood_evals_array[i, j, l] * 1e-6, '.', c=color(k, unique_k))\n", + "axes[0].set_ylabel(r\"Efficiency w.r.t. $k=0$\")\n", + "axes[1].set_ylabel(\"Likelihood Evals (1e6)\")\n", + "axes[1].set_xlabel(r\"$f = \\frac{c - 1}{c - \\frac{1}{k+1}}$\")\n", + "axes[0].axhline(1, color='k', linestyle='--')\n", + "# Remove space between axes\n", + "plt.subplots_adjust(wspace=0, hspace=0)\n", + "# K legend\n", + "for k in unique_k:\n", + " if k == 0:\n", + " continue\n", + " axes[0].plot([], [], '.', c=color(k, unique_k), label=fr\"$k={k}$\")\n", + " axes[1].plot([], [], '.', c=color(k, unique_k), label=fr\"$k={k}$\")\n", + "\n", + "# Put a single legend to the right of the right-most column\n", + "axes[0].legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "axes[1].legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "\n", + "# # Put each s label in once\n", + "# for s in unique_s:\n", + "# if s < 3:\n", + "# continue\n", + "# axes[1].plot([], [], 'o', c=color(s, unique_s), label=fr\"$s={s}$\")\n", + "plt.savefig(f\"speedup_and_likelihood_vs_f_per_k_{ndims}D.pdf\", bbox_inches='tight', pad_inches=0, dpi=300)\n", "plt.show()" ] }, @@ -349,7 +620,10 @@ "cell_type": "markdown", "id": "25a9558122c84d47", "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "source": [ "# Ablation study, large values of phantom fraction should introduce autocorrelation\n", @@ -361,64 +635,107 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "1ecb05060a7ff544", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540131372Z" + "start_time": "2023-12-18T16:43:35.433221068Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, "outputs": [], "source": [ "# Load results into arrays of same names\n", - "save_file = \"ablation_results.npz\"\n", + "ndims = 8\n", + "save_file = f\"ablation_results_{ndims}D.npz\"\n", "\n", "npzfile = np.load(save_file)\n", - "run_time_array = npzfile['run_time_array'].mean(-1)\n", - "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(-1)\n", - "log_Z_uncert_array = np.sqrt(np.sqrt(npzfile['log_Z_uncert_array']).mean(-1))\n", - "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(-1)\n", - "total_num_samples_array = npzfile['total_num_samples_array'].mean(-1)\n", - "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(-1)\n", + "log_Z_mean_array = npzfile['log_Z_mean_array'].mean(-1) # (num_s, num_k, num_c)\n", + "log_Z_uncert_array = npzfile['log_Z_uncert_array'].mean(-1) # (num_s, num_k, num_c)\n", + "num_likelihood_evals_array = npzfile['num_likelihood_evals_array'].mean(-1) # (num_s, num_k, num_c)\n", + "total_num_samples_array = npzfile['total_num_samples_array'].mean(-1) # (num_s, num_k, num_c)\n", + "total_num_phantom_samples_array = npzfile['total_num_phantom_samples_array'].mean(-1) # (num_s, num_k, num_c)\n", "s_array = npzfile['s_array']\n", "k_array = npzfile['k_array']\n", "c_array = npzfile['c_array']\n", - "true_logZ = npzfile['true_logZ']\n", "\n", + "num_s, num_k, num_c, ensemble_size = npzfile['log_Z_mean_array'].shape\n", "\n", - "sample_efficiency_array = (npzfile['total_num_samples_array'] / npzfile['num_likelihood_evals_array']).mean(-1)\n", - "run_time_speed_up_array = run_time_array[:, 0:1] / run_time_array\n", - "efficiency_improvement_array = sample_efficiency_array / sample_efficiency_array[:, 0:1]\n" + "# Sample log_Z to propagate uncertainty into ensemble averages\n", + "num_samples = 1000\n", + "log_Z_samples = npzfile['log_Z_mean_array'][..., None] + npzfile['log_Z_uncert_array'][..., None] * np.random.normal(\n", + " size=(num_samples,)) # (num_s, num_k, num_c, ensemble_size, num_samples)\n", + "log_Z_samples = np.reshape(log_Z_samples, (\n", + "num_s, num_k, num_c, ensemble_size * num_samples)) # (num_s, num_k, num_c, ensemble_size * num_samples)\n", + "\n", + "bias_samples = log_Z_samples - log_Z_asymptote # (num_s, num_k, num_c, ensemble_size*num_samples)\n", + "bias = np.mean(bias_samples, axis=-1) # (num_s, num_k, num_c)\n", + "bias_uncert = np.std(bias_samples, axis=-1) # (num_s, num_k, num_c)\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "85b6bdc54eff4c73", "metadata": { - "collapsed": false, "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540181211Z" + "start_time": "2023-12-18T16:43:35.433259950Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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uQM9QgAAoFFER0e7tZ07EITgHQxDstmqlhrGlgEATd+gQYMUGxsrSy23SbJYLIqLi9OgQYMarSaCELxDcbEUElK1FBd7uhoAgAusVquWLl0qSReEoerHS5YskdVqbbSavCIIHT58WFOmTFHHjh0VGBioyy+/XAsWLFBZWVmdryspKdG0adPUpk0bhYSEaOzYsTpx4kQjVQ0AAH4uJSVFaWlpiomJcdgeGxurtLQ0paSkNGo9XhGEDh48qMrKSj3//PP68ssv9fTTT2vFihX6/e9/X+frHnroIb399ttas2aNNm/erGPHjjX6AQYAAI5SUlK0f/9+++P169crOzvbI9/RFqOmk/m9wOLFi/Xcc8/pm2++qfH5goICRURE6NVXX9W4ceMkVQWqrl27avv27erfv79T71NYWKiwsDAVFBQoNDTUbfWjnmy2qmExibvPA/BaNptNIT/9LisqKlKwiX+XNfSxcPb72yt6hGpSUFCg1q1b1/r8rl27VF5ermHDhtm3JSQkqH379tq+fXutrystLVVhYaHDAgAAmievDEKHDh3SsmXLdM8999TaJi8vT35+fgoPD3fY3q5dO+Xl5dX6utTUVIWFhdmXuLg4d5UNAACaGI8Goblz58pisdS5HDx40OE1ubm5GjlypMaPH6+pU6e6vaZ58+apoKDAvuTk5Lj9PQAAQNPg0StLz549W5MmTaqzTadOnezrx44d07XXXqsBAwbohRdeqPN1UVFRKisrU35+vkOv0IkTJxQVFVXr6/z9/eXv7+9U/WhEVqv001wvNeJplQCA5s2jQSgiIkIRERFOtc3NzdW1116r3r1766WXXpKPT92dWb1795avr682btyosWPHSpKysrJ05MgRJSUlXXLtaGQBAdKaNZ6uAgDQzHjFHKHc3FwlJyerffv2euqpp3Tq1Cnl5eU5zPXJzc1VQkKCMjIyJElhYWGaMmWKZs2apU2bNmnXrl2aPHmykpKSnD5jDAAANG9ecdPVDRs26NChQzp06JBiY2Mdnqs++7+8vFxZWVkqPu+qw08//bR8fHw0duxYlZaWasSIEfrHP/7RqLUDAICmy2uvI9RYuI5QE8F1hACgWeE6QgAAAB5GEAIAAKZFEAIAAKZFEAIAAKZFEAIAAKZFEAIAAKblFdcRAmS1SqNGnVsHAMANCELwDgEB0rvveroKAEAz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911lZmbal/3799vnCVmtVm3YsEHvvfeeEhMTtWzZMnXp0kXZ2dlOv09mZqZSUlJUUlKi/Px8l2oFPIEgBHiRJ598Um+//ba2b9/usD0iIkLHjx+3Py4sLKzXl1h9BQcHq3Pnzmrfvr1atGhRr9d+//33ysrK0h//+EcNHTpUXbt2demMOD8/P4fej8svv1x+fn4Op6+Xl5dr586dSkxMrPf+XZGYmGifYOyuz1mb6lBV7dNPP9UVV1whq9V6QU3+/v46cuSIOnfu7LDExcXZ21ksFv3yl7/UY489ps8//1x+fn5au3atU7WcPn1a33zzjaZNm6Znn31Wt956q7788stL/5BAI6jfbzAAHtW9e3fdfvvteuaZZxy2X3fddVq5cqVGjx6t8PBwzZ8//4IvxKaiVatWatOmjV544QVFR0fryJEjmjt3br33Ex8frx07dujw4cMKCQlR69atdd999+l3v/udWrdurfbt22vRokUqLi7WlClT3PoZvv/+e40fP1533XWXevTooZYtW+qzzz7TokWLdMstt7j1c9bmyJEjmjVrlu655x7t3r1by5Yt09/+9rcL2rVs2VJz5szRQw89pMrKSg0cOFAFBQX65JNPFBoaqokTJ2rHjh3auHGjhg8frsjISO3YsUOnTp1S165dnarliy++kNVqVWJionr16qV9+/Zp9OjRysjIUNu2bd32mYGGQBACvMzjjz+u1157zWHbvHnzlJ2drZtuuklhYWF64oknGrRH6FL4+Pho9erVevDBB3XllVeqS5cueuaZZ5ScnFyv/cyZM0cTJ05UYmKizpw5o+zsbD355JOqrKzUHXfcodOnT6tPnz764IMP1KpVK7d+hpCQEPXr109PP/20fW5SXFycpk6dqt///vdu/Zy1ufPOO3XmzBn17dtXVqtVM2bM0N13311j2yeeeEIRERFKTU3VN998o/DwcF199dX2WkNDQ7VlyxYtWbJEhYWF6tChg/72t7/phhtukCStXLlSkydPrvUssszMTCUkJMjf31+StHjxYh04cEApKSn68MMP5efn55bPDDQEi1Hbv2wAQJOUnJysq6666oJrRzWUBQsWaPPmzfr4448b5f2AxkSPEACgTu+9956effZZT5cBNAiCEACgThkZGZ4uAWgwDI0BAADT4vR5AABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWv8fhB3A1hd6Fn4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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8lxGEAIAAC6p6aq0usYRVbnjjju8Wp8rCEIAAMAjnBlHVNWuviAIAQAAj6lpHFGrVq38VFHtCEIAAMCjqhtH9N133/mxopo18ncBAACg4bl8HFF9xRkhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWjxrDACAABQWFibDMPxdRsAjCAEA4COuhBeCjm8QhAAAcAEBpWFhjBAAADAtghAAADAtusYAAA0O3VdwFkHID/gDBeon/jYB86FrDAAAmBZBCAAAmBZdYwAANDDe7uZtSN3InBECAACmFTBB6PTp03rkkUcUHh6u5s2ba9y4cSoqKqp1nb59+8pisThMjz32mI8qBgAA9V3AdI098sgjOn78uNavX6/y8nKNHTtWEyZM0N///vda1xs/frxeeeUV+3xoaKi3SwUAAAEiIILQvn37tHbtWu3YsUPdunWTJM2fP18pKSmaM2eO4uPja1w3NDRUsbGxvioVAAAEkIDoGtu+fbuaN29uD0GS1L9/fwUFBenrr7+udd1ly5YpMjJSN954o6ZOnaqSkpJa25eWlqqwsNBhAgAADVNAnBHKz89XdHS0w7JGjRrpmmuuUX5+fo3rDR8+XElJSYqPj9eePXv061//WllZWUpLS6txnRkzZmj69Okeqx0AANRffg1CU6ZM0axZs2pts2/fPre3P2HCBPvPnTt3VlxcnO655x4dOHBA7dq1q3adqVOnauLEifb5wsJCJSYmul0DAACov/wahCZNmqQxY8bU2qZt27aKjY3VyZMnHZZfuHBBp0+fdmn8T48ePSRJ2dnZNQYhm80mm83m9DYBAEDdKioq7D9v3rxZ9957r4KDg/1Y0UV+DUJRUVGKioqqs13Pnj115swZ7dy5U127dpUkff7556qsrLSHG2dkZmZKkuLi4tyqFwAAuO6jjz7S5MmT7fMpKSlKSEjQvHnzNHjwYD9WFiCDpTt06KCBAwdq/PjxysjI0NatW/XUU0/pl7/8pf2Ksby8PCUnJysjI0OSdODAAb366qvauXOnDh8+rNWrV2vUqFG666671KVLF3++HQAATGXEiBHKy8tzWJaXl6ehQ4fWOm7XFwIiCEkXr/5KTk7WPffco5SUFN15551atGiR/fXy8nJlZWXZrwqzWq367LPPdO+99yo5OVmTJk3SkCFD9M9//tNfbwEAAFOq7nEcVcueffZZh24zX7MYDeVhIV5SWFioiIgIFRQUKDw83N/lAEC9UVxcrKZNm0qSioqKFBYW5ueKUJ9c+vtRl40bN6pv374e3b+z398Bcfk8AKD+aUgP3oR/HT9+3G/7DpiuMQAA0DD58yImghAAAPAqi8VS4/LExET17t3bxxX9G0EIAAB43eVhqGp+7ty5fr2fEEEIAAB41bvvvnvFA9ITEhK0cuVK7iMEAAAatkGDBmnv3r32+bS0NOXm5mrIkCEqLi72Y2UEIQAA4AOXdn/dcccdfqzEEUEIAACYFkEIAACYFkEIAACYFneWBgAAHnf5ncf9PSi6JpwRAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAAptXI3RVzcnJ05MgRlZSUKCoqSp06dZLNZvNkbQAAAF7lUhA6fPiw3njjDS1fvlxHjx6VYRj216xWq3r37q0JEyZoyJAhCgriZBMAAKjfnE4rTz/9tG666SYdOnRIv/nNb7R3714VFBSorKxM+fn5Sk9P15133qlp06apS5cu2rFjhzfrBgAAuGpOnxEKCwvTwYMH1bJlyytei46O1t133627775bqampWrt2rXJzc3Xbbbd5tFgAAABPcjoIzZgxw+mNDhw40K1iAAAAfMmtgTznzp1TSUmJff7IkSOaO3eu1q1b57HCAAAAvM2tIDRo0CC98847kqQzZ86oR48e+sMf/qAHHnhAb7zxhkcLBAAA8Ba3gtCuXbvUu3dvSdLKlSsVExOjI0eO6J133tGf/vQnjxYIAADgLW4FoZKSEjVr1kyS9Omnn2rw4MEKCgrS7bffriNHjni0QAAAAG9xKwi1b99eH374oXJzc7Vu3Trde++9kqSTJ08qPDzcowUCAAB4i1tBaNq0aXr++efVpk0b9ejRQz179pR08ezQLbfc4tECAQAAvMWtR2wMHTpUd955p44fP66bbrrJvvyee+7R4MGDPVYcAACAN7l1Rug//uM/FBYWpltuucXhURqdOnXSrFmzPFYcAACAN7kVhJYuXapz585dsfzcuXP2y+oBAADqO5e6xgoLC2UYhgzD0NmzZxUSEmJ/raKiQunp6YqOjvZ4kQAAAN7gUhBq3ry5LBaLLBaLrr/++itet1gsmj59useKAwAA8CaXgtDGjRtlGIbuvvturVq1Stdcc439NavVqqSkJMXHx3u8SAAAAG9wKQj16dNHknTo0CElJiY6DJQGAAAING4lmaSkJAUFBamkpET79+/Xnj17HCZv+O1vf6tevXopNDRUzZs3d2odwzA0bdo0xcXFqUmTJurfv7/+93//1yv1AQCAwONWEPr+++/1s5/9TM2aNVOnTp10yy23OEzeUFZWpgcffFCPP/640+vMnj1bf/rTn7Rw4UJ9/fXXCgsL04ABA3T+/Hmv1AgAAAKLW0Ho2Wef1ZkzZ/T111+rSZMmWrt2rZYuXarrrrtOq1ev9nSNkqTp06frueeeU+fOnZ1qbxiG5s6dq5deekmDBg1Sly5d9M477+jYsWP68MMPa1yvtLRUhYWFDhMAAGiY3ApCn3/+uf74xz+qW7duCgoKUlJSkkaMGKHZs2drxowZnq7RLYcOHVJ+fr769+9vXxYREaEePXpo+/btNa43Y8YMRURE2KfExERflAsAAPzArSBUXFxsv19QixYt9P3330uSOnfurF27dnmuuquQn58vSYqJiXFYHhMTY3+tOlOnTlVBQYF9ys3N9WqdAADAf9wKQjfccIOysrIkSTfddJPefPNN5eXlaeHChYqLi3N6O1OmTLHfl6imaf/+/e6U6Dabzabw8HCHCQAANExuPXT1mWee0fHjxyVJqampGjhwoJYtWyar1aolS5Y4vZ1JkyZpzJgxtbZp27atOyUqNjZWknTixAmHcHbixAndfPPNbm0TAAA0LG4FoREjRth/7tq1q44cOaL9+/erdevWioyMdHo7UVFRioqKcqeEOl177bWKjY3Vhg0b7MGnsLBQX3/9tUtXngEAgIbLI3dEDA0N1a233upSCHJVTk6OMjMzlZOTo4qKCmVmZiozM1NFRUX2NsnJyfrggw8kXXzcx7PPPqvf/OY3Wr16tb755huNGjVK8fHxeuCBB7xWJwAACBxunRGqqKjQkiVLtGHDBp08eVKVlZUOr3/++eceKe5S06ZN09KlS+3zVfcr2rhxo/r27StJysrKUkFBgb3N5MmTVVxcrAkTJujMmTO68847tXbtWoeHxQIAAPOyGIZhuLrSU089pSVLlui+++5TXFycLBaL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7br99tud2k9hYaEiIiJUUFCg8PBwj9UPAIBZFRcXq2nTpvb5oqIihYWFeXQfzn5/B0TXWHUKCgp0zTXX1Pj6zp07VV5erv79+9uXJScnq3Xr1tq+fXuN65WWlqqwsNBhAgAADVNABqHs7GzNnz9fjz76aI1t8vPzZbVa1bx5c4flMTExys/Pr3G9GTNmKCIiwj4lJiZ6qmwAAFDP+DUITZkyRRaLpdZp//79Duvk5eVp4MCBevDBBzV+/HiP1zR16lQVFBTYp9zcXI/vAwAA1A9+HSw9adIkjRkzptY2bdu2tf987Ngx9evXT7169dKiRYtqXS82NlZlZWU6c+aMw1mhEydOKDY2tsb1bDabbDabU/UDAIDA5tcgFBUVpaioKKfa5uXlqV+/furatasWL16soKDaT2Z17dpVjRs31oYNGzRkyBBJUlZWlnJyctSzZ8+rrh0AAAS+gBgjlJeXp759+6p169aaM2eOvv/+e+Xn5zuM9cnLy1NycrIyMjIkSRERERo3bpwmTpyojRs3aufOnRo7dqx69uzp9BVjAACgYQuI+witX79e2dnZys7OVkJCgsNrVVf/l5eXKysrSyUlJfbXXnvtNQUFBWnIkCEqLS3VgAED9Oc//9mntQMAgPorYO8j5CvcRwgAAM+79F5C3EcIAADADwhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAIiCB0+fFjjxo3TtddeqyZNmqhdu3ZKTU1VWVlZrev17dtXFovFYXrsscd8VDUAAKjvGvm7AGfs379flZWVevPNN9W+fXt9++23Gj9+vIqLizVnzpxa1x0/frxeeeUV+3xoaKi3ywUAAAEiIILQwIEDNXDgQPt827ZtlZWVpTfeeKPOIBQaGqrY2FhvlwgAAAJQQHSNVaegoEDXXHNNne2WLVumyMhI3XjjjZo6dapKSkpqbV9aWqrCwkKHCQAANEwBcUboctnZ2Zo/f36dZ4OGDx+upKQkxcfHa8+ePfr1r3+trKwspaWl1bjOjBkzNH36dE+XDAAA6iGLYRiGv3Y+ZcoUzZo1q9Y2+/btU3Jysn0+Ly9Pffr0Ud++ffX222+7tL/PP/9c99xzj7Kzs9WuXbtq25SWlqq0tNQ+X1hYqMTERBUUFCg8PNyl/QEAgOoVFxeradOmkqSioiKFhYV5dPuFhYWKiIio8/vbr2eEJk2apDFjxtTapm3btvafjx07pn79+qlXr15atGiRy/vr0aOHJNUahGw2m2w2m8vbBgAAgcevQSgqKkpRUVFOtc3Ly1O/fv3UtWtXLV68WEFBrg9vyszMlCTFxcW5vC4AAGh4AmKwdF5envr27avWrVtrzpw5+v7775Wfn6/8/HyHNsnJycrIyJAkHThwQK+++qp27typw4cPa/Xq1Ro1apTuuusudenSxV9vBQAA1CMBMVh6/fr1ys7OVnZ2thISEhxeqxriVF5erqysLPtVYVarVZ999pnmzp2r4uJiJSYmasiQIXrppZd8Xj8AAKif/DpYOhA4O9gKAAA4r74Mlg6IrjEAAABvIAgBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTauTvAgAAgPmEhYXJMAx/l8EZIQAAYF4EIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFqN/F1AfWcYhiSpsLDQz5UAAABnVX1vV32P14QgVIezZ89KkhITE/1cCQAAcNXZs2cVERFR4+sWo66oZHKVlZU6duyYmjVrJovF4rHtFhYWKjExUbm5uQoPD/fYdlEzjrlvcbx9i+PtWxxv33LneBuGobNnzyo+Pl5BQTWPBOKMUB2CgoKUkJDgte2Hh4fzR+RjHHPf4nj7FsfbtzjevuXq8a7tTFAVBksDAADTIggBAADTIgj5ic1mU2pqqmw2m79LMQ2OuW9xvH2L4+1bHG/f8ubxZrA0AAAwLc4IAQAA0yIIAQAA0yIIAQAA0yIIAQAA0yIIedGCBQvUpk0bhYSEqEePHsrIyKi1/fvvv6/k5GSFhISoc+fOSk9P91GlDYMrx/utt95S79691aJFC7Vo0UL9+/ev898HV3L1d7zK8uXLZbFY9MADD3i3wAbG1eN95swZPfnkk4qLi5PNZtP111/P54oLXD3ec+fO1Q033KAmTZooMTFRzz33nM6fP++jagPb5s2b9fOf/1zx8fGyWCz68MMP61xn06ZNuvXWW2Wz2dS+fXstWbLEvZ0b8Irly5cbVqvV+Otf/2p89913xvjx443mzZsbJ06cqLb91q1bjeDgYGP27NnG3r17jZdeeslo3Lix8c033/i48sDk6vEePny4sWDBAmP37t3Gvn37jDFjxhgRERHG0aNHfVx54HL1mFc5dOiQ0apVK6N3797GoEGDfFNsA+Dq8S4tLTW6detmpKSkGF9++aVx6NAhY9OmTUZmZqaPKw9Mrh7vZcuWGTabzVi2bJlx6NAhY926dUZcXJzx3HPP+bjywJSenm68+OKLRlpamiHJ+OCDD2ptf/DgQSM0NNSYOHGisXfvXmP+/PlGcHCwsXbtWpf3TRDyku7duxtPPvmkfb6iosKIj483ZsyYUW37hx56yLjvvvsclvXo0cN49NFHvVpnQ+Hq8b7chQsXjGbNmhlLly71VokNjjvH/MKFC0avXr2Mt99+2xg9ejRByAWuHu833njDaNu2rVFWVuarEhsUV4/3k08+adx9990OyyZOnGjccccdXq2zIXImCE2ePNno1KmTw7Jhw4YZAwYMcHl/dI15QVlZmXbu3Kn+/fvblwUFBal///7avn17tets377dob0kDRgwoMb2+Dd3jvflSkpKVF5ermuuucZbZTYo7h7zV155RdHR0Ro3bpwvymww3Dneq1evVs+ePfXkk08qJiZGN954o373u9+poqLCV2UHLHeOd69evbRz505799nBgweVnp6ulJQUn9RsNp78zuShq15w6tQpVVRUKCYmxmF5TEyM9u/fX+06+fn51bbPz8/3Wp0NhTvH+3K//vWvFR8ff8UfFqrnzjH/8ssv9Ze//EWZmZk+qLBhced4Hzx4UJ9//rkeeeQRpaenKzs7W0888YTKy8uVmprqi7IDljvHe/jw4Tp16pTuvPNOGYahCxcu6LHHHtN//dd/+aJk06npO7OwsFDnzp1T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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Plot bias with rms y error bars vs phantom fraction, colored by number of likelihood evals (with color bar not labels)\n" + "# Plot bias with rms y error bars vs k, with vertical red dashed line a k=2*D\n", + "\n", + "plt.figure()\n", + "plt.errorbar(k_array, bias[0, :, 0], yerr=bias_uncert[0, :, 0], fmt='o', c='k')\n", + "plt.xlabel(r\"Num Phantom Samples, $k$\")\n", + "plt.ylabel(\"Bias (nats)\")\n", + "plt.gca().axhline(0, color='k', linestyle='--')\n", + "plt.gca().axvline(ndims, color='r', linestyle='--', zorder=0, label=r\"$k=D$\")\n", + "plt.legend(loc='upper right')\n", + "plt.savefig(f\"ablation_bias_vs_k_{ndims}D.pdf\", bbox_inches='tight', pad_inches=0, dpi=300)\n", + "plt.show()\n", + "\n", + "# Plot bias with rms y error bars vs phantom fraction\n", + "\n", + "plt.figure()\n", + "phantom_fraction = k_array / (k_array + 1)\n", + "plt.errorbar(phantom_fraction, bias[0, :, 0], yerr=bias_uncert[0, :, 0], fmt='o', c='k')\n", + "plt.xlabel(\"Phantom Fraction\")\n", + "plt.ylabel(\"Bias (nats)\")\n", + "plt.gca().axhline(0, color='k', linestyle='--')\n", + "plt.show()\n", + "\n" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f1fd9c0f4bb7b5d0", - "metadata": { - "collapsed": false, - "ExecuteTime": { - "start_time": "2023-12-12T09:40:31.540220921Z" - } - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/docs/papers/phantom-powered-nested-sampling/run_ablation.py b/docs/papers/phantom-powered-nested-sampling/run_ablation.py index e8955256..f1cea4ba 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_ablation.py +++ b/docs/papers/phantom-powered-nested-sampling/run_ablation.py @@ -112,10 +112,10 @@ def ns_run(key): if __name__ == '__main__': - save_file = "ablation_results.npz" ndims = 8 + save_file = f"ablation_results_{ndims}D.npz" num_workers = 2 - ensemble_size = 30 + ensemble_size = 100 input_queue = Queue() output_queue = Queue() diff --git a/docs/papers/phantom-powered-nested-sampling/run_experiment.py b/docs/papers/phantom-powered-nested-sampling/run_experiment.py index e782b036..466cf5bb 100644 --- a/docs/papers/phantom-powered-nested-sampling/run_experiment.py +++ b/docs/papers/phantom-powered-nested-sampling/run_experiment.py @@ -116,7 +116,7 @@ def ns_run(key): ndims = 8 save_file = f"experiment_results_{ndims}D.npz" num_workers = 2 - ensemble_size = 30 + ensemble_size = 100 input_queue = Queue() output_queue = Queue() From 0fcd28027d867dd571ff132de0cf7d3260378cf6 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Mon, 18 Dec 2023 17:46:21 +0100 Subject: [PATCH 12/17] * Test #108 --- jaxns/tests/test_nested_sampler.py | 61 ++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/jaxns/tests/test_nested_sampler.py b/jaxns/tests/test_nested_sampler.py index 8131c891..b47afcc4 100644 --- a/jaxns/tests/test_nested_sampler.py +++ b/jaxns/tests/test_nested_sampler.py @@ -1,7 +1,10 @@ import os +import jax from jax import random, numpy as jnp +from jaxns import TerminationCondition + # Force 2 jax hosts os.environ["XLA_FLAGS"] = "--xla_force_host_platform_device_count=2" @@ -29,3 +32,61 @@ def test_nested_sampling_run_results(all_run_results): np.testing.assert_allclose(log_Z_ensemble_mean, log_Z_true, atol=2 * results.log_Z_uncert) np.testing.assert_allclose(results.log_Z_mean, log_Z_ensemble_mean, atol=1.75 * results.log_Z_uncert) np.testing.assert_allclose(results.log_Z_uncert, log_Z_ensemble_std, atol=results.log_Z_uncert) + + +def test_gh108(): + import tensorflow_probability.substrates.jax as tfp + from jax import random + + from jaxns import DefaultNestedSampler + from jaxns import Model + from jaxns import Prior + + import psutil + import os + tfpd = tfp.distributions + + def nested_sampling(key): + + def log_likelihood(theta): + return 0. + + def prior_model(): + x = yield Prior(tfpd.Uniform(0., 1.)) + return x + + model = Model(prior_model=prior_model, log_likelihood=log_likelihood) + + ns = DefaultNestedSampler(model=model, max_samples=1e4) + + termination_reason, state = ns(key, term_cond=TerminationCondition()) + results = ns.to_results(termination_reason=termination_reason, state=state, trim=False) + + pid = os.getpid() + python_process = psutil.Process(pid) + + ram_py = [] + jax.clear_caches() + for i in range(3): + nested_sampling(random.PRNGKey(i)) + jax.clear_caches() + ram_py.append(python_process.memory_info()[0] / 2 ** 30) + # print(ram_py[-1]) + + # plt.plot(ram_py, 'k.-') + # plt.xlabel('runs', fontsize=12) + # plt.ylabel('python RAM usage(GB)', fontsize=12) + # plt.show() + + np.testing.assert_allclose(ram_py, ram_py[0], atol=1e-3) + + ns_compile = jax.jit(nested_sampling).lower(random.PRNGKey(0)).compile() + + ram_py = [] + ram_py.append(python_process.memory_info()[0] / 2 ** 30) + for i in range(3): + ns_compile(random.PRNGKey(i)) + ram_py.append(python_process.memory_info()[0] / 2 ** 30) + # print(ram_py[-1]) + + np.testing.assert_allclose(ram_py, ram_py[0], atol=1e-6) From 30f630c05d84367c75f66d301b74eda572d2df51 Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Mon, 18 Dec 2023 17:52:34 +0100 Subject: [PATCH 13/17] * Update docs --- docs/conf.py | 2 +- docs/index.rst | 7 + .../figures/ablation_bias_vs_k_8D.pdf | Bin 0 -> 15277 bytes .../figures/bias_vs_s_grid_per_c_16D.pdf | Bin 0 -> 27323 bytes .../figures/bias_vs_s_grid_per_c_8D.pdf | Bin 0 -> 27413 bytes .../figures/sample_tree_linear.pdf | Bin 0 -> 2360 bytes .../figures/sample_tree_linear.pdf_tex | 67 +++ .../figures/sample_tree_linear.svg | 563 ++++++++++++++++++ .../figures/sample_tree_multi.pdf | Bin 0 -> 3109 bytes .../figures/sample_tree_multi.pdf_tex | 62 ++ .../figures/sample_tree_multi.svg | 532 +++++++++++++++++ .../speedup_and_likelihood_vs_f_per_k_16D.pdf | Bin 0 -> 31423 bytes .../speedup_and_likelihood_vs_f_per_k_8D.pdf | Bin 0 -> 31444 bytes .../phantom_bias_tradeoff.ipynb | 77 +-- docs/user-guide/installation.rst | 11 +- 15 files changed, 1248 insertions(+), 73 deletions(-) create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/ablation_bias_vs_k_8D.pdf create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/bias_vs_s_grid_per_c_16D.pdf create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/bias_vs_s_grid_per_c_8D.pdf create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.pdf create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.pdf_tex create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.svg create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.pdf create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.pdf_tex create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.svg create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/speedup_and_likelihood_vs_f_per_k_16D.pdf create mode 100644 docs/papers/phantom-powered-nested-sampling/figures/speedup_and_likelihood_vs_f_per_k_8D.pdf diff --git a/docs/conf.py b/docs/conf.py index 0bb45420..1f91933f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -14,7 +14,7 @@ project = "jaxns" copyright = "2022, Joshua Albert" author = "Joshua Albert" -release = "2.2.6" +release = "2.3.0" # -- General configuration --------------------------------------------------- diff --git a/docs/index.rst b/docs/index.rst index 70525014..ed7ad070 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -34,6 +34,13 @@ Our mission is to make nested sampling faster, easier, and more powerful. examples/* +.. toctree:: + :maxdepth: 2 + :caption: Papers + :glob: + + papers/* + Indices and tables ================== diff --git a/docs/papers/phantom-powered-nested-sampling/figures/ablation_bias_vs_k_8D.pdf b/docs/papers/phantom-powered-nested-sampling/figures/ablation_bias_vs_k_8D.pdf new file mode 100644 index 0000000000000000000000000000000000000000..13b2980579c71517585a1c908eccac105ce77ed8 GIT binary patch literal 15277 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 literal 0 HcmV?d00001 diff --git a/docs/papers/phantom-powered-nested-sampling/figures/bias_vs_s_grid_per_c_8D.pdf b/docs/papers/phantom-powered-nested-sampling/figures/bias_vs_s_grid_per_c_8D.pdf new file mode 100644 index 0000000000000000000000000000000000000000..36a9944aeadb30283e5148423b79f2f28c36f170 GIT binary patch literal 27413 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≧17dfU7VaOzqwE%|L z*k1tBJpjxD;Kqbly8)m*Fkp#8q`|;61(64wnSgx27+}x9;veJ!E+gRb1QgXCh(tjU zM*znF>PaX6B37!FPM*iS*{JuW>i)X<5!~fzL{)lG)^yhyU&j5Ju|L^e(08|5j2>idm zGr<4BGT<-`|Nr6{Q2#TYK@`B4;BYQKU>R`N-*F7z z5&}RgyH^$f9%c6m3&?Qq3O|~o@Hht$F!}<}IQ-PLJ75EVAp9MEFb9x9yEnM;9fhA@ za04|8xBLSr0>e9=A_y3+(R*}U04>~oikl?>oCH4SzjF(Ej~YH@cZ$L9)&M8;xP#Gq z^gIC2%5FjYY_dmgcdEiKc>ve;j1*8Fg0%p{a5NxN@c&~rV6yu+8{+?% z4Jr)Gv_M8&EGhW|wZBNrw0j2r(3P~sgHELjyg7!*StAz^dRgUrDHQxt7;$ZQk8eU@0f4ds24%%ltwhpV8J_5wTm zlP+#&t;?Nd%i`BDP%eFFr>kSNg=5$^nnC5IS&l-pMhMH*O~#i>BKJEKzx-}J`CD+l0{EMT+ZuN*-5&7Z$=0O2>j z{>lM_-}L({2M~V4^RFC0_|4wGasWPe{ySgb)BwN9|5qPCIN!+6V%YtO4~Vk8748%X z;A?H1!vz1c7w3UP8Soygy;FsNlLG!NECc*>1@6p@;{YDT)zQV%(cTh#0U<0Z3>5_1 zd3w5foP_if&hnGSe?fLzl8B)DOW2Su%!j|96)8S1|TQCdV3dVS=`Tu z9G5)_hr$ssI7}2Kf<&Ou0#G;~6w1f{gVW2)-P#5OoT-2Y0jC}8{R0j&Kmjj+4fvll z+%`4tAJ};>4LAk_^J^OL!ynLn(r{kYpUT2SMKOT5eo4asZmr+aaKrLX`G6ao-}9F= z1n#TzpVLHOIN$2eX;3&6@QMALCISPz>p!Q#FmRkV_NRO>3<|f@{v}OB^w+X*C=}-> z{wW_EiuhfAP!w>A#jp89ao^1UTo%Ca{6+(Yz`1CD$%i}8;MX(^&||-(!C^R0^3P@A zNZc~vmozl+;s38`7@SZ0=X?k_Zj17lG$e3P!mnw#Lot3y1I}FdjRq3pLVu%y!kroOOFk3=XX5-+7AlJQU9Uue->vyA9|8bO{8AQ!0S*KCB~1kQI_kGH zHp}>b^zvP1hABp{zhQi?>ex?Bz z`Att@aM68eV16H8fLHLhwjmI}u|L1i0J{7)UJ#-BpxO?KK3ph#?h5+&K$f?VN{vR=)Spon6 literal 0 HcmV?d00001 diff --git a/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.pdf b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7f4ed7ab6563b4819d857dbcc292740cafd3b005 GIT binary patch literal 2360 zcmcguc~lce9JUrwBPjC38yIRMheCF9ECd1~iK51X7YHvDc`HzjfPyvk zRycV3%&(vhTXK(=mwDThv0s&x6#We~_33w2aFaQ9oiK<8nCtx2brEn20)5>v%mluPi z2wbXW#BSdaa6&TzHM`enwY^`$tskjkRgER^Hno@C*qzax+-i{3vR>uett!k-Jh)7MiC>E6d)RM@L- zH-zvP?c>;Su4vEq?2)r2S-~mNTMU1zJ${2@{e8>(wA)UScW&1gUaOjSYqN9kS!9~~ zrIm%rCgwR|`2}Y28;W=5FQr#F9mg^Cnjn7e)V6<6`IcPmN) z%hl!mT8AZkcpF{iD>*jMGiCg%X`3bU=JpYU=2o5Aw~2lFPZfqG+B>D0SJh|Ttqmy& z@Q-LsoV~|7U|4*=nR%XancK##%)7#9f2*;NY>4citfMzsmoA%JmU<^GbHo`TB!|jj_*!hoo<$QSzoKl^sjb5quF~KBdp4Uj@6jl2|A%>=A=B`;CJ-$4tbX0 z<;NN9{E)IBct#?riFtruc##b)2h#&B{pRM5FjO5Cxy%@Mg z-d;}ljV1zJeY%JB=knO}dwRs_q=}Ij6JjY}e+rTU2m~|$8%v770bmKo0~D}iQuu^a zfiK__e%j-(JL3RWK%5Q-EI+9N2TXt(_ObLDbCsBx-LtD)dr63~opqpvTajnZ}5VcUX6v}4o$a2teFL+a>-WpN$w zWIz#7c*jTxeqCQW2V+TaQX56ca1zkzk#sqx8yt626~A*^|D>v;{yFOg zp%w+LR@S3JpEUhkv(col{vi;VC{z2}sdc`(UzS&#z06q*j(We0P=tEk46PtiQZF}8 z*X1XMIBxw;J*2r((D*o`xuI!W#_D<3NT)u!8E@58ZnVTcBtt#5t{ATUI zd~(eo#_Fj6E!ACy%cpToox5uLfyYz(t=z(JS9`oR^4+)!}oU=(W{oz1gVDqu? zKmqeKZ(+LnIa%FgaVo~fC+9(Fp7y-6Zs4n$Xfb!a^SuoP;pCg(kE@r6rpkmM#Zc?xPQ4*A8pqk^UhBry==vnJ4M`4p7xo)56CsVbquc+By6ponOFFF zadXctNn;AW)+WuNc5U+5o!WHmBpc05*1y&!))}XpHrd9w|AjVbUHsqLq|?(?o3y!f zX!ElLk;XHMRdNzq4ee4AK<7i!=`K;wm)Kn-j?#YA5yy|v%A;iPs&tS^RfHCxE-2=L z00$*S=}31Lv_pt02&qn~l94W2LgDCWTu%ruQc9)Oh-fQy5V^AvHV0)Rt|*s_agi|y zYL6g}T^Id&^Fk>ljnpdIOQe8i)aIU_JvWxX!x;!b*$kw!0gT7v@IW|d$52;3^f0;s zO$UZx99XYz7!QMK>4qUFyfnIDJTCO%FENyd!NhjMxO|w$FEPXogGB!lL%G;jdqLf> zuh-za!Q*$#r3k4i5+{s*Zv0h?a5@LHL?l`*yky$)M2{zH!ePzmf*OfJQc{94W{r(- NxC|z9!ir literal 0 HcmV?d00001 diff --git a/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.pdf_tex b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.pdf_tex new file mode 100644 index 00000000..96bbb207 --- /dev/null +++ b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.pdf_tex @@ -0,0 +1,67 @@ +%% Creator: Inkscape inkscape 0.92.5, www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file 'sample_tree_linear.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{213.99551197bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.26620532)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{sample_tree_linear.pdf}}% + \put(-0.00424403,0.1670851){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}root\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{sample_tree_linear.pdf}}% + \put(0.11028603,0.05005155){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=1$\end{tabular}}}}% + \put(0.26799967,0.05067752){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=3$\end{tabular}}}}% + \put(0.44198532,0.05380668){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=2$\end{tabular}}}}% + \put(0.50081493,0.00874574){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=4$\end{tabular}}}}% + \put(0.5996988,0.05192917){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=3$\end{tabular}}}}% + \put(0.72361664,0.00686802){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=2$\end{tabular}}}}% + \put(0.83001067,0.05505832){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=1$\end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.svg b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.svg new file mode 100644 index 00000000..8a136ad0 --- /dev/null +++ b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_linear.svg @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + root + + + + + $m=1$ + $m=3$ + $m=2$ + $m=4$ + $m=3$ + $m=2$ + $m=1$ + + diff --git a/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.pdf b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.pdf new file mode 100644 index 0000000000000000000000000000000000000000..271759b7bb54becb33fd122d64892b6a8c063766 GIT binary patch literal 3109 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 C;.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{273.04297606bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.40426185)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{sample_tree_multi.pdf}}% + \put(-0.00332623,0.25515975){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}root\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{sample_tree_multi.pdf}}% + \put(0.25446005,0.0059729){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$m=6$\end{tabular}}}}% + \put(0.50167388,0.0059729){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$\mathbb{E}[m]=c (k+1)$\end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.svg b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.svg new file mode 100644 index 00000000..9e79def6 --- /dev/null +++ b/docs/papers/phantom-powered-nested-sampling/figures/sample_tree_multi.svg @@ -0,0 +1,532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + root + + + + + + + + + + + + $m=6$ + $\mathbb{E}[m]=c (k+1)$ + + diff --git a/docs/papers/phantom-powered-nested-sampling/figures/speedup_and_likelihood_vs_f_per_k_16D.pdf b/docs/papers/phantom-powered-nested-sampling/figures/speedup_and_likelihood_vs_f_per_k_16D.pdf new file mode 100644 index 0000000000000000000000000000000000000000..21e4aa31b48f8ee4bed172d9f3a6e163631c6c37 GIT binary patch literal 31423 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 B8~6YK literal 0 HcmV?d00001 diff --git a/docs/papers/phantom-powered-nested-sampling/figures/speedup_and_likelihood_vs_f_per_k_8D.pdf b/docs/papers/phantom-powered-nested-sampling/figures/speedup_and_likelihood_vs_f_per_k_8D.pdf new file mode 100644 index 0000000000000000000000000000000000000000..97a32a620afda1728dd82f0f4a81e62dd41997ad GIT binary patch literal 31444 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 Date: Mon, 18 Dec 2023 18:50:30 +0100 Subject: [PATCH 14/17] * Fix tests * Update default parameters to those from paper --- jaxns/public.py | 21 ++++++++++++-------- jaxns/samplers/multi_ellipsoidal_samplers.py | 13 ++++++------ jaxns/tests/conftest.py | 6 +++--- jaxns/tests/test_nested_sampler.py | 8 ++++---- requirements-tests.txt | 1 + 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/jaxns/public.py b/jaxns/public.py index c321981a..0b84859b 100644 --- a/jaxns/public.py +++ b/jaxns/public.py @@ -39,21 +39,23 @@ def __init__(self, model: BaseAbstractModel, max_samples: Union[int, float], num Args: model: a model to perform nested sampling on max_samples: maximum number of samples to take - num_live_points: number of live points to use. If not given, defaults to `50 * model.U_ndims`. + num_live_points: number of live points to use. Defaults is 20 * D * (D/2 + 1). num_parallel_workers: number of parallel workers to use. Defaults to 1. """ - s = 4 - k = model.U_ndims//2 - num_live_points = num_live_points or model.U_ndims * 64 - c = max(1, int(num_live_points / (k + 1) / num_parallel_workers)) + self._k = model.U_ndims // 2 + self._s = 4 + if num_live_points is not None: + self._c = max(1, int(num_live_points / (self._k + 1))) + else: + self._c = 20 * model.U_ndims self._nested_sampler = StandardStaticNestedSampler( model=model, - num_live_points=c, + num_live_points=self._c, max_samples=max_samples, sampler=UniDimSliceSampler( model=model, - num_slices=model.U_ndims * s, - num_phantom_save=k, + num_slices=model.U_ndims * self._s, + num_phantom_save=self._k, midpoint_shrink=True, perfect=True ), @@ -61,6 +63,9 @@ def __init__(self, model: BaseAbstractModel, max_samples: Union[int, float], num num_parallel_workers=num_parallel_workers ) + def __repr__(self): + return f"DefaultNestedSampler(s={self._s}, c={self._c}, k={self._k})" + @property def num_live_points(self) -> int: return self._nested_sampler.num_live_points diff --git a/jaxns/samplers/multi_ellipsoidal_samplers.py b/jaxns/samplers/multi_ellipsoidal_samplers.py index 1dc4f401..80d330b3 100644 --- a/jaxns/samplers/multi_ellipsoidal_samplers.py +++ b/jaxns/samplers/multi_ellipsoidal_samplers.py @@ -2,15 +2,15 @@ from jax import random, numpy as jnp, lax, tree_map -from jaxns.samplers.abc import SamplerState -from jaxns.samplers.bases import BaseAbstractRejectionSampler -from jaxns.samplers.multi_ellipsoid.multi_ellipsoid_utils import ellipsoid_clustering, MultEllipsoidState -from jaxns.samplers.multi_ellipsoid.multi_ellipsoid_utils import sample_multi_ellipsoid from jaxns.internals.shrinkage_statistics import compute_evidence_stats from jaxns.internals.tree_structure import SampleTreeGraph, count_crossed_edges from jaxns.internals.types import IntArray, StaticStandardNestedSamplerState, UType from jaxns.internals.types import PRNGKey, FloatArray from jaxns.internals.types import Sample, int_type +from jaxns.samplers.abc import SamplerState +from jaxns.samplers.bases import BaseAbstractRejectionSampler +from jaxns.samplers.multi_ellipsoid.multi_ellipsoid_utils import ellipsoid_clustering, MultEllipsoidState +from jaxns.samplers.multi_ellipsoid.multi_ellipsoid_utils import sample_multi_ellipsoid __all__ = [ 'MultiEllipsoidalSampler' @@ -24,8 +24,9 @@ class MultiEllipsoidalSampler(BaseAbstractRejectionSampler): Inefficient for high dimensional problems, but can be very efficient for low dimensional problems. """ - def __init__(self, depth: int, *args, **kwargs): + def __init__(self, depth: int, expansion_factor: float, *args, **kwargs): self._depth = depth + self._expansion_factor = expansion_factor super().__init__(*args, **kwargs) def num_phantom(self) -> int: @@ -71,7 +72,7 @@ def _sample_multi_ellipsoid(key: PRNGKey) -> UType: _, U = sample_multi_ellipsoid( key=key, mu=sampler_state.params.mu, - radii=sampler_state.params.radii, + radii=sampler_state.params.radii * self._expansion_factor, rotation=sampler_state.params.rotation, unit_cube_constraint=True ) diff --git a/jaxns/tests/conftest.py b/jaxns/tests/conftest.py index 7017aad8..bd53d89a 100644 --- a/jaxns/tests/conftest.py +++ b/jaxns/tests/conftest.py @@ -221,7 +221,7 @@ def log_likelihood(x): def basic_mvn_run_results(basic_mvn_model): log_Z_true, model = basic_mvn_model - ns = DefaultNestedSampler(model=model, max_samples=50000) + ns = DefaultNestedSampler(model=model, max_samples=100000) ns_jit = jax.jit(lambda key: ns(key)) ns_compiled = ns_jit.lower(random.PRNGKey(42)).compile() @@ -240,7 +240,7 @@ def basic_mvn_run_results(basic_mvn_model): def basic_mvn_run_results_parallel(basic_mvn_model): log_Z_true, model = basic_mvn_model - ns = DefaultNestedSampler(model=model, max_samples=50000, num_parallel_workers=2) + ns = DefaultNestedSampler(model=model, max_samples=100000, num_parallel_workers=2) ns_jit = jax.jit(lambda key: ns(key)) ns_compiled = ns_jit.lower(random.PRNGKey(42)).compile() @@ -266,7 +266,7 @@ def multiellipsoidal_mvn_run_results(basic_mvn_model): num_live_points=model.U_ndims * 20, num_parallel_workers=1, max_samples=50000, - sampler=MultiEllipsoidalSampler(model=model, depth=0) + sampler=MultiEllipsoidalSampler(model=model, depth=1, expansion_factor=1.5) ) ns_jit = jax.jit(lambda key: ns._run(key, term_cond=TerminationCondition())) ns_compiled = ns_jit.lower(random.PRNGKey(42)).compile() diff --git a/jaxns/tests/test_nested_sampler.py b/jaxns/tests/test_nested_sampler.py index b47afcc4..f59194f4 100644 --- a/jaxns/tests/test_nested_sampler.py +++ b/jaxns/tests/test_nested_sampler.py @@ -18,7 +18,6 @@ def test_nested_sampling_run_results(all_run_results): # Use numpy testing assert not np.isnan(results.log_Z_mean) - np.testing.assert_allclose(results.log_Z_mean, log_Z_true, atol=2.0 * results.log_Z_uncert) log_Z_samples = sample_evidence(random.PRNGKey(42), results.num_live_points_per_sample, @@ -29,9 +28,10 @@ def test_nested_sampling_run_results(all_run_results): plt.show() log_Z_ensemble_mean = jnp.mean(log_Z_samples) log_Z_ensemble_std = jnp.std(log_Z_samples) - np.testing.assert_allclose(log_Z_ensemble_mean, log_Z_true, atol=2 * results.log_Z_uncert) - np.testing.assert_allclose(results.log_Z_mean, log_Z_ensemble_mean, atol=1.75 * results.log_Z_uncert) - np.testing.assert_allclose(results.log_Z_uncert, log_Z_ensemble_std, atol=results.log_Z_uncert) + np.testing.assert_allclose(log_Z_ensemble_mean, log_Z_true, atol=1.75 * log_Z_ensemble_std) + np.testing.assert_allclose(results.log_Z_mean, log_Z_ensemble_mean, atol=log_Z_ensemble_std) + np.testing.assert_allclose(results.log_Z_uncert, log_Z_ensemble_std, + atol=np.sqrt(results.log_Z_uncert ** 2 + log_Z_ensemble_std ** 2)) def test_gh108(): diff --git a/requirements-tests.txt b/requirements-tests.txt index f88fb635..01ff74ec 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -1,2 +1,3 @@ scikit-learn networkx +psutil From c37afd398cd6913a1be755224d5169a6a17f224b Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Mon, 18 Dec 2023 18:52:42 +0100 Subject: [PATCH 15/17] * Fix tests * Update default parameters to those from paper --- README.md | 2 ++ docs/conf.py | 2 +- setup.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8f5df5a2..8d091de3 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,8 @@ is the best way to achieve speed up. # Change Log +18 Dec, 2023 -- JAXNS 2.3.1 released. Paper open science release. Default parameters from paper. + 11 Dec, 2023 -- JAXNS 2.3.0 released. Released of Phantom-Powered Nested Sampling algorithm. 5 Oct, 2023 -- JAXNS 2.2.6 released. Minor update to evidence maximisation. diff --git a/docs/conf.py b/docs/conf.py index 1f91933f..a9248066 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -14,7 +14,7 @@ project = "jaxns" copyright = "2022, Joshua Albert" author = "Joshua Albert" -release = "2.3.0" +release = "2.3.1" # -- General configuration --------------------------------------------------- diff --git a/setup.py b/setup.py index c1204b50..284623c7 100755 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ long_description = fh.read() setup(name='jaxns', - version='2.3.0', + version='2.3.1', description='Nested Sampling in JAX', long_description=long_description, long_description_content_type="text/markdown", From 5b361c6b8a2b1d1d913ee667c88e0c0a1bf2055d Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Mon, 18 Dec 2023 19:00:37 +0100 Subject: [PATCH 16/17] * python 3.8 has difference behaviour, needs slightly better parameters. --- jaxns/tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jaxns/tests/conftest.py b/jaxns/tests/conftest.py index bd53d89a..c3225330 100644 --- a/jaxns/tests/conftest.py +++ b/jaxns/tests/conftest.py @@ -266,7 +266,7 @@ def multiellipsoidal_mvn_run_results(basic_mvn_model): num_live_points=model.U_ndims * 20, num_parallel_workers=1, max_samples=50000, - sampler=MultiEllipsoidalSampler(model=model, depth=1, expansion_factor=1.5) + sampler=MultiEllipsoidalSampler(model=model, depth=0, expansion_factor=2.0) ) ns_jit = jax.jit(lambda key: ns._run(key, term_cond=TerminationCondition())) ns_compiled = ns_jit.lower(random.PRNGKey(42)).compile() From 77cc607cf1337e18f35914aef34775b0c4495dae Mon Sep 17 00:00:00 2001 From: joshuaalbert Date: Mon, 18 Dec 2023 19:05:39 +0100 Subject: [PATCH 17/17] * python 3.9 has different JIT cache usage... change that too --- jaxns/tests/test_nested_sampler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jaxns/tests/test_nested_sampler.py b/jaxns/tests/test_nested_sampler.py index f59194f4..ec231a8d 100644 --- a/jaxns/tests/test_nested_sampler.py +++ b/jaxns/tests/test_nested_sampler.py @@ -78,7 +78,7 @@ def prior_model(): # plt.ylabel('python RAM usage(GB)', fontsize=12) # plt.show() - np.testing.assert_allclose(ram_py, ram_py[0], atol=1e-3) + np.testing.assert_allclose(ram_py, ram_py[0], atol=2e-3) ns_compile = jax.jit(nested_sampling).lower(random.PRNGKey(0)).compile()