From 098e4c47093bb7895b632387e7a8724b99d847cd Mon Sep 17 00:00:00 2001
From: Yiduo Wang <61599656+yiduo-wang-32@users.noreply.github.com>
Date: Tue, 29 Oct 2024 11:53:32 -0500
Subject: [PATCH] Modified OstirConstants and a Python version of calibration
script (#13)
* Modified and added new features to the dataclass OstirConstants:
- dG_spacing_constant_push/pull can now be defined when initiating a OstirConstant object
- user can call `constant.refresh()` to re-calculate RT_eff, K, and enforce correct data type. It is automatically called after creating a OstirConstant object via `__post_init__()`.
- improve I/O handling, including using a more user-interpretable __str__ for printing (__repr__ is not changed), and read from / write to json file.
* created a python version of the R script ostir_calibration.
* Remove extra calibration files
Housekeeping to remove two files generated by the python
calibration notebook which are functionally equivilant
to the R generated files
---------
Co-authored-by: croots <38054423+croots@users.noreply.github.com>
---
calibration/ostir_calibration_python.ipynb | 487 +++++++++++++++++++++
ostir/ostir_calculations.py | 56 ++-
2 files changed, 533 insertions(+), 10 deletions(-)
create mode 100644 calibration/ostir_calibration_python.ipynb
diff --git a/calibration/ostir_calibration_python.ipynb b/calibration/ostir_calibration_python.ipynb
new file mode 100644
index 0000000..157361e
--- /dev/null
+++ b/calibration/ostir_calibration_python.ipynb
@@ -0,0 +1,487 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "from scipy.optimize import curve_fit\n",
+ "from sklearn.linear_model import LinearRegression\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Set \n",
+ " Sequence \n",
+ " Spacing \n",
+ " Fluorescence.Average \n",
+ " Fluorescence.Stdev \n",
+ " Fluorescence.NumMeasurements \n",
+ " Paper.Salis2009.Total.dG \n",
+ " OSTIR.ViennaRNA.Turner2004.No.Spacing.dG \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 1.0 \n",
+ " TTCTAGAAAAAAAATAAGGAGGTATGGCGAGCTCTGAAGACGTTAT... \n",
+ " 0 \n",
+ " 101.28 \n",
+ " 54.34 \n",
+ " 5 \n",
+ " 4.104 \n",
+ " -8.975 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 1.0 \n",
+ " TTCTAGAAAAAAAATAAGGAGGTAATGGCGAGCTCTGAAGACGTTA... \n",
+ " 1 \n",
+ " 133.59 \n",
+ " 118.37 \n",
+ " 5 \n",
+ " 3.881 \n",
+ " -8.975 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 1.0 \n",
+ " TTCTAGAAAAAAAATAAGGAGGTAAATGGCGAGCTCTGAAGACGTT... \n",
+ " 2 \n",
+ " 247.70 \n",
+ " 119.81 \n",
+ " 5 \n",
+ " 1.554 \n",
+ " -8.975 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 1.0 \n",
+ " TTCTAGAAAAAAAATAAGGAGGTAAAATGGCGAGCTCTGAAGACGT... \n",
+ " 3 \n",
+ " 24972.09 \n",
+ " 4944.50 \n",
+ " 5 \n",
+ " -6.550 \n",
+ " -8.975 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 1.0 \n",
+ " TTCTAGAAAAAAAATAAGGAGGTAAAAATGGCGAGCTCTGAAGACG... \n",
+ " 4 \n",
+ " 53933.01 \n",
+ " 15012.58 \n",
+ " 5 \n",
+ " -8.070 \n",
+ " -8.975 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Set Sequence Spacing \\\n",
+ "0 1.0 TTCTAGAAAAAAAATAAGGAGGTATGGCGAGCTCTGAAGACGTTAT... 0 \n",
+ "1 1.0 TTCTAGAAAAAAAATAAGGAGGTAATGGCGAGCTCTGAAGACGTTA... 1 \n",
+ "2 1.0 TTCTAGAAAAAAAATAAGGAGGTAAATGGCGAGCTCTGAAGACGTT... 2 \n",
+ "3 1.0 TTCTAGAAAAAAAATAAGGAGGTAAAATGGCGAGCTCTGAAGACGT... 3 \n",
+ "4 1.0 TTCTAGAAAAAAAATAAGGAGGTAAAAATGGCGAGCTCTGAAGACG... 4 \n",
+ "\n",
+ " Fluorescence.Average Fluorescence.Stdev Fluorescence.NumMeasurements \\\n",
+ "0 101.28 54.34 5 \n",
+ "1 133.59 118.37 5 \n",
+ "2 247.70 119.81 5 \n",
+ "3 24972.09 4944.50 5 \n",
+ "4 53933.01 15012.58 5 \n",
+ "\n",
+ " Paper.Salis2009.Total.dG OSTIR.ViennaRNA.Turner2004.No.Spacing.dG \n",
+ "0 4.104 -8.975 \n",
+ "1 3.881 -8.975 \n",
+ "2 1.554 -8.975 \n",
+ "3 -6.550 -8.975 \n",
+ "4 -8.070 -8.975 "
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_dataset = pd.read_csv(\"./input.csv\", comment=\"#\")\n",
+ "df_dataset.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dG_no_spacing = df_dataset[\"OSTIR.ViennaRNA.Turner2004.No.Spacing.dG\"].values\n",
+ "\n",
+ "# onehot encoding - same factor in R\n",
+ "spacing = df_dataset[\"Spacing\"].astype(float).values\n",
+ "onehot_df = pd.get_dummies(df_dataset[\"Spacing\"], dtype=float)\n",
+ "spacing_onehot, spacing_label = onehot_df.values, onehot_df.columns\n",
+ "\n",
+ "X = np.concatenate([dG_no_spacing.reshape(-1, 1), spacing_onehot], axis=1)\n",
+ "X_label = [\"dG\"] + [f\"spacing_{i}\" for i in spacing_label]\n",
+ "y = np.log(df_dataset[\"Fluorescence.Average\"].values)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "spacing_optimal = 5\n",
+ "model = LinearRegression(fit_intercept=False)\n",
+ "model.fit(X, y)\n",
+ "\n",
+ "Beta = -model.coef_[X_label.index(\"dG\")]\n",
+ "logK = model.coef_[X_label.index(f\"spacing_{spacing_optimal}\")]\n",
+ "\n",
+ "spacing_deviation_dG = -(1 / Beta) * (y - logK) - dG_no_spacing"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def assign_parameters(params):\n",
+ " # assign to corresponding variables\n",
+ " c_stretched = np.array(params[0:3])\n",
+ " c_compressed = np.array(params[3:7])\n",
+ " y0 = params[7]\n",
+ " \n",
+ " # override some parameters\n",
+ " # define additional constraints here\n",
+ " c_stretched[2] = 0\n",
+ " # c_compressed[2] = 2\n",
+ " c_compressed[3] = 3\n",
+ " \n",
+ " return c_stretched, c_compressed, y0\n",
+ "\n",
+ "\n",
+ "def spring_model(spacing, *params, use_y0=True):\n",
+ " # assign to variables\n",
+ " c_stretched, c_compressed, y0 = assign_parameters(params)\n",
+ " \n",
+ " # calculate stretched and compressed values\n",
+ " spacing_diff = spacing - spacing_optimal\n",
+ " stretched = c_stretched[0] * spacing_diff ** 2 + c_stretched[1] * spacing_diff + c_stretched[2]\n",
+ " compressed = c_compressed[0] / (1.0 + np.exp(c_compressed[1] * (spacing_diff + c_compressed[2]))) ** c_compressed[3]\n",
+ " \n",
+ " # save and output\n",
+ " output = np.zeros_like(spacing)\n",
+ " output[spacing_diff >= 0] = stretched[spacing_diff >= 0]\n",
+ " output[spacing_diff < 0] = compressed[spacing_diff < 0]\n",
+ " if use_y0: output += y0\n",
+ " return output\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/var/folders/_3/fn7zmzc10j3g4t9s9004ffyc0000gn/T/ipykernel_94515/132433045.py:2: OptimizeWarning: Covariance of the parameters could not be estimated\n",
+ " param_fit, cov = curve_fit(\n"
+ ]
+ }
+ ],
+ "source": [
+ "# fit parameters\n",
+ "param_fit, cov = curve_fit(\n",
+ " spring_model,\n",
+ " spacing,\n",
+ " spacing_deviation_dG,\n",
+ " p0=[0.048, 0.24, 0.0, 12.2, 2.5, 2.0, 3.0, 0.0]\n",
+ ")\n",
+ "\n",
+ "c_stretched, c_compressed, y0 = assign_parameters(param_fit)\n",
+ "logK += y0 * -Beta"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "spacing_penalty_dG = spring_model(spacing, *param_fit, use_y0=False)\n",
+ "total_dG = dG_no_spacing + spacing_penalty_dG\n",
+ "log_expression = (-Beta * total_dG + logK)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhoAAAINCAYAAAB4atYFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkZUlEQVR4nO3dd3hT9f4H8PdJulfa0r0YZa9CEUpxAzJUBEEERJa4AJXhxN9VUK/iuCqiiN57mVcFUQEFFUUQUDaUsimrUOgCCk066ErO74/QQKFp0yan55zk/XqePiXpyeknTct55zsFURRFEBEREUlAI3cBRERE5LwYNIiIiEgyDBpEREQkGQYNIiIikgyDBhEREUmGQYOIiIgkw6BBREREkmHQICIiIsm4yV2AnEwmE7KysuDv7w9BEOQuh4iISDVEUURBQQGioqKg0Vhvt3DpoJGVlYXY2Fi5yyAiIlKts2fPIiYmxurXXTpo+Pv7AzD/kAICAmSuhoiISD0MBgNiY2Mt11JrXDpoVHaXBAQEMGgQERHVQ21DDzgYlIiIiCTDoEFERESSYdAgIiIiyTBoEBERkWQYNIiIiEgyDBpEREQkGQYNIiIikgyDBhEREUmGQYOIiIgkw6BBREREkmHQICIiIskwaBAREZFkGDSIiIhIMgwaREREJBkGDSIiIpIMg4Ya6DOB9M3mz0RERCriJncBVIuUJcDqyYBoAgQNMOATIHG03FURERHZhC0aSqbPvBYyAPPn1VPYskFERKrBoKFkl05eCxmVRCNw6ZQ89RAREdURg4aSBcebu0uuJ2iB4Gby1ENERFRHDBpKpos2j8kQtObbghYYMNt8PxERkQpwMKjSJY4G4nuZu0uCmzFkEBGRqii2RWPWrFno2rUr/P39ERYWhkGDBiEtLa3KMSUlJZg0aRIaNWoEPz8/DBkyBLm5uTJVLCFdNND0doYMIiJSHcUGjU2bNmHSpEnYvn071q1bh/LycvTp0wdFRUWWY6ZOnYrVq1fju+++w6ZNm5CVlYXBgwfLWDURERFdTxBFUZS7CFtcuHABYWFh2LRpE+644w7o9XqEhobim2++wUMPPQQAOHr0KNq0aYNt27ahe/futZ7TYDBAp9NBr9cjICBA6qdARETkNGy9hiq2ReNGer0eABAcHAwA2LNnD8rLy9G7d2/LMa1bt0ZcXBy2bdtW7TlKS0thMBiqfBAREZF0VBE0TCYTpkyZgltvvRXt27cHAOTk5MDDwwOBgYFVjg0PD0dOTk6155k1axZ0Op3lIzY2VurSiYiIXJoqgsakSZNw8OBBLFu2zK7zTJ8+HXq93vJx9uxZB1VIRERE1VH89NZnnnkGa9aswebNmxETE2O5PyIiAmVlZcjPz6/SqpGbm4uIiIhqz+Xp6QlPT0+pSyYiIqKrFNuiIYoinnnmGaxcuRIbNmxA06ZNq3y9S5cucHd3x/r16y33paWlISMjA8nJyQ1dLhEREVVDsS0akyZNwjfffIMff/wR/v7+lnEXOp0O3t7e0Ol0GD9+PKZNm4bg4GAEBATg2WefRXJysk0zToiIiEh6ip3eKghCtfcvXLgQY8eOBWBesOv555/H0qVLUVpair59++Lzzz+32nVyI05vJSIiqh9br6GKDRoNgUGDiIiofpxuHQ0iIiJSHwYNIiIikgyDBhEREUmGQYOIiIgkw6BBREREkmHQICIiIskwaBAREZFkGDSIiIhIMgwaREREJBkGDSIiIpIMgwYRERFJhkGDiIiIJMOgQURE5MREUcSsX4/gYKZelu/PoEFEROTEftqXhS83ncLQL7bhclFZg39/Bg1Xpc8E0jebPxMRkVM6byjB6z8eAgBMvCseQb4eDV6DW4N/R5JfyhJg9WRANAGCBhjwCZA4Wu6qiIjIgURRxKsrD0B/pRztowPw9F3xstTBFg1Xo8+8FjIA8+fVU9iyQUTkZFbuzcQfR87DXSvgw6Gd4K6V55LPoOFqLp28FjIqiUbg0il56iEiIofLNZRg5k/mLpMpvVuiVYS/bLUwaLia4Hhzd8n1BC0Q3EyeeoiIyKFEUcSrKw7AUFKBjjE6PHWHvP+/M2i4Gl20eUyGoDXfFrTAgNnm+4mISPV+SMnE+qPn4aHV4F9DE+AmU5dJJQ4GdUWJo4H4XubukuBmDBlERE4iK/8K3qjsMrmnBVqGy9dlUolBw1XpohkwiIiciCiKePmH/SgorUDnuEA8ebsyusTZdUJEROQEvt6Rgb+OX4SnmzK6TCopowoiIiKqt4y8YrzzyxEAwEv9WiM+1E/miq5h0CAiIlIxk0nEC9/vQ3GZEUlNgzGuRxO5S6qCQYOIiEjFFm49jZ3pl+DjocUHDyVAoxHkLqkKBg0iIiKVOnG+AO+vPQoAePXeNohr5CNzRTdj0CAiIlKhcqMJ05bvQ2mFCXe0DMXIpDi5S6oWgwYREZEKff7nSew/p0eAlxveH9IRgqCsLpNKDBpEREQqc+CcHp9uOA4AeGtQe0TovGSuyDoGDSIiIhUpKTdi6vJUVJhE3NchEg8kRMldUo0YNIiIiFTkX7+l4cT5QoT4eeKtQe0V22VSiUuQO9g/1xxGmdEEAajy4msEAYIAaATz/RpBgEYAtBoBgiDAXSPATauBu1aAm0aAp7sWPh5aeLtr4ePhBl9PLRr5eiLYzwO+HlrF/2IREZHjbTuZh/lb0gEA7w3pgGBfD5krqh2DhoN9vSMDV8qNkn4PDzcNQv080SzUFy3C/NEy3A8twv3QPloHTzetpN+biIjkYSgpxwvf7YMoAiO6xaJXm3C5S7IJg4aDTbgrHuVGEwBAFM33iRAhioBJvO7fJhFGUbR8NppElBtFlBtNKDeaUFZhQnGZEVfKjbhSZkRBSQXyikpRUm7+Wmb+FWTmX8Ffxy9avre/pxt6tw1H//YRuKNlKLzcGTqIiJzFzJ8OITP/CuKCffCP+9rKXY7NBFGsvBy6HoPBAJ1OB71ej4CAALnLsUlxWQXyCsuQayjBifOFOH7143CWHhcLyyzH+Xm6YXBiNF7o2woBXu4yVkxERPb69UA2JnydAo0ALH8qGbc0CZa7JJuvoWzRUBkfDzf4BLshNtinyi+aySRi79nL+Hl/Dn49mI1sfQmWbDuD3w7l4O1BHdC7rTqa2IiIqKrzhhK8uvIAAODpO+MVETLqgi0aKmvRsIXJJGLLyYt4bdVBnM4rBgAM7BSFGQPaqWLgEBERmYmiiMcW7cKfaRfQNjIAqybdCg83ZUwYtfUaqoxqyaE0GgG3twjF2il34Kk7mkEjAD+mZqHv7M04e6lY7vKIiMhGX+3IwJ9pF+DhpsHs4Z0UEzLqQn0Vk8283LWYfm8brJx4K+JDfXGhoBRPf7UHJRLPiiEiIvudvFCIt38+DAB4uV9rtAz3l7mi+mHQcAEJsYH43/gkNPL1wKEsA/6x6iBcuMeMiEjxyo0mTFmWipJyE25rHoJxPZrIXVK9MWi4iKhAb3w6ojM0AvD9nnP4ekeG3CUREZEVn/xxHAcy9dB5u+NfQxOg0ah3kUYGDRfSo3kIXu7XGgDwxupDSMm4LHNFRER0o12nL+HzjScAALMGd1D0hmm2YNBwMU/e0Qz920eg3Chi4lcpyCsslbskIiK6qqCkHFO/TYVJBAYnRuPeDpFyl2Q3Bg0XIwgCPhiagPhQX+QYSjD/73S5SyIioqtm/HQI5y5fQUyQN954oJ3c5TgEg4YL8vN0w4t9WwEAlu8+i7IKk8wVERHRT/uysCIlExoB+HhYJ/g7yarODBouqnebcIQHeOJiYRnWHsqRuxwiIpeWmX8F/3d19c9n7m6Oripb/bMmDBouyk2rwfCucQCAr7afkbkaIiLXZTSJmPptKgpKKtApNhDP9mohd0kOxaDhwkZ0i4NWI2Bn+iUcyy2QuxwiIpf0xaaT2Jl+Cb4eWnwyvBPctc51aXauZ0N1EqHzQu82YQCAr9mqQUTU4PadzcfH644BAN4Y2B6NG/nKXJHjMWi4uEe7NwYArEjJRFFphczVEBG5jsLSCkxethcVJhH3dYzEkMRouUuSBIOGi7s1PgRNGvmgoLQCP+3LkrscIiKXMfOnQzidV4wonRfeGdQBgqDe1T9rwqDh4jQaASOTzK0aX20/wz1QiIgawE/7svD9nnPQCMDs4Z2h83GOqazVYdAgPNQlBh5uGhzKMiD1bL7c5RARObWzl4rxfyuuTWXt1tR5prJWh0GDEOTrgfs7mpe5/W7POZmrISJyXhVGE6Z8m4qC0gokxgXiOSebylodBg0CAPRvbw4au9IvyVwJEZHzmrPhBPacuQx/Tzd8Mrwz3JxsKmt1nP8Zkk06xwUCAI6fL4T+Srm8xRAROaHtp/Lw2YbjAIB/PtgescE+MlfUMBg0CAAQ4ueJxo3Mv/Qcp0FE5FiXi8owZZl5V9aHusRgYCfnnMpaHQYNsugSFwQASDlzWeZKiIichyiKeOmH/cgxlKBZiK/T7MpqKwYNsujc+GrQyGDQICJylP9tP4N1h3PhodVgzojO8PV0k7ukBsWgQRaJV8dppGbkw2TiehpERPY6nGXAP38+AgB4pX9rtI/WyVxRw1Ns0Ni8eTMGDBiAqKgoCIKAVatWVfn62LFjIQhClY9+/frJU6yTaBXuDx8PLQpKK3D8fKHc5RARqVpxWQWeW7YXZRUm9GwdhnG3NpG7JFkoNmgUFRUhISEBc+fOtXpMv379kJ2dbflYunRpA1bofNy0GnSKDQTA7hMiInvN+PEQTpwvRJi/Jz54qKPTLjFeG8V2FPXv3x/9+/ev8RhPT09EREQ0UEWuITEuCFtP5mHPmcsY0S1O7nKIiFRp5d5z+O7qEuOfDO+MRn6ecpckG8W2aNhi48aNCAsLQ6tWrTBhwgTk5eXVeHxpaSkMBkOVD4fTZwLpm82fVSixcSAAtmgQEdXXqQuF+L+VBwEAz/ZsgeT4RjJXJC/VBo1+/fphyZIlWL9+Pd577z1s2rQJ/fv3h9FotPqYWbNmQafTWT5iY2MdW1TKEmB2e2DxAPPnlCWOPX8D6Bxrnnly6kIR8ovLZK6GiEhdSsqNeOabvSguM6J7s2CXWGK8NqoNGsOHD8cDDzyADh06YNCgQVizZg127dqFjRs3Wn3M9OnTodfrLR9nz551XEH6TGD1ZEA0mW+LJmD1FNW1bAT5eqBZiC8AYG9GvrzFEBGpzKxfjuBwtgHBvh74ZHhnaDWuOS7jeqoNGjdq1qwZQkJCcOLECavHeHp6IiAgoMqHw1w6eS1kVBKNwKVTjvseDSTx6noae7hwFxGRzdYezMbibWcAAB8+nIDwAC+ZK1IGpwka586dQ15eHiIjI+UpIDgeEG74cQpaILiZPPXYITGOC3cREdVFRl4xXvx+PwDgyTua4e5WYTJXpByKDRqFhYVITU1FamoqACA9PR2pqanIyMhAYWEhXnzxRWzfvh2nT5/G+vXrMXDgQDRv3hx9+/aVp2BdNDDgE3O4AMyfB8w2368ylQNC953NR4XRVPPBREQurqzChGeXpqCgxLz1+4t9W8ldkqIodnrr7t27cffdd1tuT5s2DQAwZswYzJs3D/v378fixYuRn5+PqKgo9OnTB2+99RY8PWWcQpQ4GojvZe4uCW6mypABAC3C/OHn6YbC0gqk5RagXZTrrWRHRGSrWb8ewb5zeui83fHpI4lwd4Gt3+tCsUHjrrvugihaXwb7t99+a8Bq6kAXrdqAUUmrEdA5LhB/Hb+IlIx8Bg0iIit+O5SDhVtOAwA+HJqA6EBveQtSIMYuqlbnq+M09nJAKBFRtc5eKsaL3+0DADxxe1P0bhsuc0XKxKBB1bJssHYuX9Y6iIiUqLTCiGe+SYGhpAKd4wLxUr/WcpekWAwaaiDDaqPNw/wAAOcuXYGRO7kSEVUx65ej18ZljOjMcRk1UOwYDboqZcm1hcAEjXlmS+Joyb9tpM4bbhoBZUYTcg0liGK/IxERAODn/dlYtPU0AODjYQmICfKRtyCFYwRTMhlXG9VqBMQEmcNFxqViyb8fEZEanLpQiJd/MK+XMeGuePRszXEZtWHQUDKZVxuNDTandAYNIiLzPiYTv05BYWkFujUJxvP3tJS7JFVg0FAymVcbjbsaNM4yaBARYcaPh3A0pwCNfD3w6SOd4cZxGTbhT0nJZF5tNI4tGkREAIDlu8/i291nIQjAJ8M7cx+TOuBgUKWTcbVRBg0ichr6THN3dHB8nf8fPZxlwGurDgIApvZuidtahEhRodNi0FADmVYbjbV0nVxp8O9NROQwdszeM5SUY+LXe1BaYcJdrULxzN3NJS7W+bDrhKyqDBoXC0tRXFYhczVERPVgx+w9URTx4nf7cDqvGNGB3vj44U7QaARp63VCDBpklc7bHTpvdwBs1SAilbJj9t5//0rHb4dy4aHV4PORiQjy9ZCoSOfGoEE14jgNIlK1es7e23EqD++uPQoAeG1AWyTEBkpUoPNj0KAaMWgQkarVY/ZerqEEk77ZC6NJxKBOUXg0Ka5hanVSHAxKNYrlWhpEpHZ1mL1XbjRh0tcpuFhYitYR/nhncAcIAsdl2INBg2rEFg0icgo2zt5755cj2H3mMvw93TDv0S7w8eBl0l7sOqEaMWgQkav4aV8WFm45DQD48OEENA3xlbcgJ8GgQTW6fhlyE7eLJyInlZZTgFeubpY28a549GkXIXNFzoNBg2oUGegFrUZAaYUJFwpL5S6HiMjh9FfK8fRXe1BcZsRtzUPwfJ9WcpfkVBg0qEbuWg0ideY1/TkglIicjckk4vnlqUi/WIToQG/MGdEZWi7K5VAMGlQrjtMgImf16YYT+OPIeXi4afDFo10QzEW5HI5Bg2rFoEFEzmjD0VzMXn8MAPD2oPboEKOTuSLnxKBBtYpl0CAiJ3P6YhGmLEuFKAKjujfG0Fti5S7JaTFoUK3iuGgXEVmjzwTSN9u0SZlSFJVW4Mn/7YahpAKJcYF47f62cpfk1LgSCdWKXSdEVC07tl+XiyiKePH7fTiWW4hQf0/Me7QLPNz4nltK/Om6qjq8C6kMGrmGUpSUG6WujIjUwI7t1+X0+caT+OVADty1Ar54NBHhAV5yl+T0GDRcUcoSYHZ7YPEA8+eUJTUeHujjDn9Pc+PXucts1SAi2LX9ulz+TDuPf/2eBgB444H26NI4WOaKXAODhqupx7sQQRA4IJSIqqrn9utyOX2xCJOX7oUoAiO6xeER7sjaYBg0XE0934VcGxB6RarKiEhN6rH9ulwKSyvwxJJrgz9nPsDBnw2Jg0FdTeW7kOvDhg3vQmKDvQGwRYOIrlOH7dflYjKJmPptKo6fL0R4gCe+eLQLPN20cpflUtii4Wrq+S6EM0+IqFq6aKDp7YoMGQAw+49jWHc4Fx5uGnw56haEcfBng2OLhiuqx7uQWK6lQUQq88uBbMzZcAIAMOvBDugUGyhvQbbSZ5q7uYPjFRvg6oJBw1Xpouv0C3x9i4YoihAEbjpERMp1JNuA55fvAwA8fltTDOkSI3NFNlLh2iS1YdcJ2SQ6yDxGo7jMiEtFZTJXQ0RkXV5hKZ5YshtXyo24vUUIXunfWu6SbKPStUlqw6BBNvF001p2NbxQWCpzNURE1SurMGHC1yk4d/kKGjfywacjOsNNq5JLnQrXJrGFSn76pAQhfuagcbGALRpEpDyiKGLGT4ewM/0S/D3dMH/MLQj0UdG27ypbm8RWDBpksxA/TwDARbZoEJECLdl2Bkt3ZkAQgDkjOqN5mL/cJdWNitYmqQsOBiWbMWgQkVJtOXERb645DAB4pV9r3N06TOaK6kkFa5PUFYMG2awyaFwoYNAgIuVIv1iEiV+nwGgSMbhzNJ68Q91dDXWdFah07Dohm4X6Xw0abNEgIoXQF5dj/KJd0F8pR6fYQLwzuAOn3ysMgwbZzDIYtJCDQYlIfuVGEyZ9k4JTF4sQpfPCv0d3gZc7lxdXGgYNslnI1RaNi+w6ISIFeGvNYfx94iJ8PLT475iuCPPn8uJKxKBBNgvlYFAiUogl205jybYzEATgk+Gd0TYqQO6SyAoGDbJZ5WDQvKIymEyizNUQkavafOwC3lhtnmHycr/WuKdtuMwVUU0YNMhmja6O0TCaRFwu5jgNImp4x3ILMOnqDJMhiTF4Su0zTFwAgwbZzF2rQZCPOwAOCCWihnexsBSPLdqFgtIKdGsSjHcGt+cMExVg0KA64aJdRCqmzwTSN6tyk66SciOeXLIb5y5fQZNGPvhyVBd4unGGiRpwwS6qkxA/Txw/X8igQaQ2Kt5+XBRFvPT9fqRk5CPAyw3zx3ZFkK+K9jBxcWzRoDqpnOLK1UGJVETl249//Mdx/LQvC24aAV+M6oL4UD+5S6I6YNCgOqmc4srVQYlURMXbj3+/5xzmrD8OAHj7wfboER8ic0VUVwwaVCch/twqnkh1VLr9+NaTFzF9xX4AwMS74jGsa5zMFVF9MGhQnXAwKJEKqXD78RPnC/D0//ag3Cji/o6ReKFPK7lLonriYFCqE64OSqRSKtp+/GJhKcYt2gVDSQW6NA7Cv4YmQKPhNFa1YtCgOuFW8UQqpoLtx6+UGfH44t04e+kK4oJ98O9R3ChN7dh1QnVSuVU8lyEnIkczmkRMXrYXqWfzofN2x8JxXdHo6psbUi8GDaqT65chz79SLnM1ROQsRFHEW2sO4/fDufBw0+C/Y27hNFYnwaBBdeKu1SDQsgw5u0+IyDHm/52ORVtPAwA+ejgBXZsEy1sQOQyDBtWZZeYJx2kQkQP8ciAbb/9yBADw6r2tcX/HKJkrIkdi0KA6C7nafcJFu4jIXrtOX8KUb1MhisDo5MZ44nZlr+1BdcegQXUW6u8FgDNPiMg+J84X4PHFu1FWYULvNuGYMaAdd2N1QgwaVGeVLRrcKp6I6ivXUIIxC3ZBf6UcneMC8emIztBWrpWh4l1m6WaKDRqbN2/GgAEDEBUVBUEQsGrVqipfF0URr7/+OiIjI+Ht7Y3evXvj+PHj8hTrYrg6KBHZo6CkHGMX7kJm/hU0DfHF/DFd4e1xda2MlCXA7PbA4gHmzylL5C2W7KbYoFFUVISEhATMnTu32q+///77mDNnDr744gvs2LEDvr6+6Nu3L0pKShq4UtfD1UGJqL7KKkyY8FUKjmQbEOLngcXjuiG4cst3le8yS9VT7Mqg/fv3R//+/av9miiKmD17Nv7xj39g4MCBAIAlS5YgPDwcq1atwvDhwxuyVJdTuWgXgwYR1YXJJOKF7/bh7xMX4eOhxcKx3RDXyOfaATXtMqvwFU3JOsW2aNQkPT0dOTk56N27t+U+nU6HpKQkbNu2zerjSktLYTAYqnxQ3XEZciKqj3d+OYKf9mXBTSPg85GJ6BCjq3qASneZpZqpMmjk5OQAAMLDw6vcHx4ebvladWbNmgWdTmf5iI2NlbROZ1W5VXxeIZchJyLb/HvzSfz373QAwAdDO+KuVmE3H6TCXWapdortOpHC9OnTMW3aNMttg8HAsFEPjXzNLRoVJhH6K+UIquxfJSKqxoqUc3jnl6MAzAtyPdg5xvrBKtpllmyjyqAREREBAMjNzUVkZKTl/tzcXHTq1Mnq4zw9PeHpyQ167OXhpoHO2x36K+W4WFjKoEFEVm1MO4+Xvt8PAHj8tqZ48o742h+kgl1myXaq7Dpp2rQpIiIisH79est9BoMBO3bsQHJysoyVuY7KAaFcHZSIrNlz5jImfJWCCpOIgZ2i8Oq9beQuiWSg2BaNwsJCnDhxwnI7PT0dqampCA4ORlxcHKZMmYJ//vOfaNGiBZo2bYrXXnsNUVFRGDRokHxFu5AQPw+cOM8BoURUvWO5BXhs0S5cKTfizpah+OChBGg0XPXTFSk2aOzevRt333235Xbl2IoxY8Zg0aJFeOmll1BUVIQnn3wS+fn5uO2227B27Vp4eXnJVbJLubZoF1cHJaKqzl0uxuj5Oy2rfs57NBEebqpsQCcHUGzQuOuuuyCK1mc0CIKAN998E2+++WYDVkWVuDooEVUnr7AUo+fvRI6hBC3C/LBwbFf4eCj2UkMNgBGT6sWyaBe7TojoqsqlxU9dLEJ0oDeWjO+GQB8OFnd1DBpUL1yGnIiuV1JuxOOLd+NAph6NfD2wZHw3ROq85S6LFIBBg+qlctEuzjohyXAHT9UoN5ow6esU7Ei/BH9PNyx+rBviQ/3kLosUgh1nVC+WMRoFHAxKEkhZcm1zLUFjXi0ycbTcVVE1TPnn8MUPv+PQcTd4uoXiv2NuQftoXe0PJJfBFg2ql8qgkVdUWuOgXaI64w6eqiHuWQzM7oBnz07FFs/nsCr5JJKaNZK7LFIYBg2ql0Z+5q6TcqN5GXIih6lpB09SDn0mxNVToIH5tdIKItrsfp2BkG7CoEH14ummhc7bHQAHhJKDcQdPVVi1frMlZFgwEFI1GDSo3kKutmqc5xRXciTu4Kl4i7ak492d5TCKN6z0yUBI1eBgUKq3Rn6eOHmhCHlcHZQcjTt4Ktby3Wcxc/VhAI2wvvmr6HPqXXNLBgMhWcGgQfXW6OqurZeLGTRIAtzBU3FW78vCKz+Yd2J97NamuOf+ewHDSAZCqhGDBtVb5fbwl4oYNIic3e+HcjD121SYRGB411i8dn8bCILAQEi14hgNqrfgq0sLX2bQIHJqm45dwDPf7EWFScSgTlF4+8EO5pBBZAMGDao3S4tGMae3EjmrbSfz8OSS3SgzmnBvhwj8a2gCtNzuneqAQYPqzTJGgy0aRE5pz5lLGL94F0orTOjVOgyzh3WGm5aXDaob/sZQvVW2aOQxaBA5nb0ZlzFmwS4Ulxlxe4sQzB2ZCA+3BrpkcJ8bp8LBoFRvHKNB5Jz2n8vH6AU7UVhage7NgvHvUbfAy13bMN+c+9w4HbZoUL0F+ZpXBr1UXMb9ToicxMFMPUbN34mCkgp0bRKE+WO6wtujgUIG97lxSgwaVG/BV7tOyipMKC4zylwNEdnraI4Bo+bvgP5KORLjArFwXDf4ejZgwzf3uXFKDBpUbz4ebvByN/8KcS0NInU7mmPAI//ZgcvF5UiI0WHRY93g15AhA+A+N06KQYPsUjlOg0FDIhwURw0gLacAj/xnBy4VlaFDtA5LHktCgJd7wxfCfW6cEgeDkl2CfD2QpS/BJS5D7ngcFEcNwBwytltCxlfjk6DzkSFkVOI+N06HLRpkl2CupSENDoqjBnAs1xwy8orK0D46QP6QUUkXDTS9nSHDSTBokF2C2HUiDQ6KI4kdzTFgxL8VGDLI6bDrhOwSzB1cpVE5KO76sMFBceQgh7MMGPnf7bhcXG4JGYFX3zQQOZrdQaNfv35ISEhAx44d0bFjR7Rp0wZubswvriLYsoMr9ztxqMpBcaunmFsyOCiOHORgph6Pzt+B/KuzS5Y8xpYMkpbdiaBnz57YsmULBEHAsmXLsGHDBnTt2hWjRo3C+PHjHVEjKdi1reJLZa7ECXFQHDnY/nP5ePS/O2AoqUCn2EAsGd9Nntkl5FLsDhpLly7F3r17Lbc3btyI1atXIy0tDa+99hreeuste78FKdi1ZchV1qKhzzSPgwiOV/YFXBet7PpINfacuYyxC80rfnZpHIRF47rCnyGDGoDdg0G9vb1x/Phxy+277roLGzZswHvvvYeff/7Z3tOTwl2/DLlqpCwBZrcHFg8wf05ZIndFRJLacSoPo+fvQEFJBbo1Ccbix7oxZFCDsbtF4/PPP8fDDz+MHj16oFOnTjh+/Djc3d0hCALKy1X2LpfqTHXTW61NG43vxZYDckp/H7+Ix5fsQkm5Cbc2b4T/jL4FPh4cR0cNx+4WjU6dOmHXrl246667kJGRgcjISPz8888oLi7GQw895IgaScGun3ViMqlgYzVOGyUX8ufR83hssTlk3NUqFPPHdGXIoAZn92/c4cOH8eOPPyIwMBD33HMPOnTogKCgIADAjBkz7C6QlK1yHQ2TCOivlFsGhyoWp42Si1h7MBvPLt2LcqOIe9qG47NHOsPTrYF2YSW6jt0tGg888AB8fHxQVFSE+fPno1evXoiPj3dEbaQC7loN/L3MeVUV4zS4lwK5gBUp5zDx6xSUG0Xc1zESn49MZMgg2djdohEREYHJkydXuc9o5JbhriTY1wMFJRUoPH8GKMxT/kwOThslJ/a/7Wfw2qqDAIChXWLw7pCO0GoEmasiV2Z3i0avXr2wcOHCKvdptUzOriTIxwMPa/9Ex+9uU89MDu6lQE7oy00nLSFjbI8meI8hgxTA7qCxe/duzJw5E02bNsXDDz+Mt99+G6tXr3ZEbaQSzT31mOX2XwjgBmBEchBFER/+noZZvx4FAEy6Ox4zBrSFhiGDFMDurpPKtTIKCgpw8OBBHDx4EOvXr8eAAQPsLo7UId4tF1rhhhknlTM52GJAJCmTScQbqw9h8bYzAIAX+7bCpLuby1wV0TX1Dhoff/wxpk6dikOHDqF169bw9/dHcnIykpOTHVkfqUBFYDMYRaFq2OBMDiLJlRtNeOn7/Vi5NxOCALw5sD1GdW8sd1lEVdQ7aHTq1AkA8Oqrr+Lo0aPw9vZGu3bt0KFDB7Rv3x7333+/o2okhXMLjMH0isfxrvt8aGDiTA6iBlBSbsQz36TgjyPnodUI+OjhBAzsxL85Up56B427774bAPDZZ58hMjISJSUlOHToEA4cOIA//viDQcOFBPu64z3j3TA27YkPe/lzJgeRxAwl5Xhi8W7sSL8ETzcNPh+ZiF5twuUui6hado/RuO+++/DXX39Bp9MhKSkJLVu2RMeOHR1RG6lEsK8nAOBkqQ5oeqvM1RA5twsFpRizYCcOZxvg5+mG/465Bd2bNZK7LCKr7J514ubmBp1OZ7mt0+kwYcIEe09LKhJcubGaWvY7IVKpjLxiPPTFVhzONiDEzwPLnuzOkEGKZ3fQiImJwV9//XXthBoNysp4wXElQT4q21iNSIWOZBsw5IutOJNXjNhgb3z/dA+0j9bV/kAimdnddfLZZ5/h3nvvRXJyMrp164YDBw4gLi7OEbWRSlRurFZQWoGyChM83OzOr0R0ne2n8vDEkt0oKKlA6wh/LHmsG8ICvOQui8gmdl8R4uLisHfvXtxzzz3IyMhAy5Yt8e233zqiNlKJAC93y+qD+WrY74RIRX45kI3R83eioKQCXZsE4dunkhkySFXsbtEoLy/Hxo0bERkZiV69eqFRI/YXuhqNRkCQjzsuFpbhUnEZ/xMkcpDFW09j5upDEEWgb7twfDK8M7zcucUDqYvdQWPw4MGIjIzEihUrEBQUhOLiYnTo0AFr1651RH2kEkE+HuagUcgWDXIQfSZw6aTyN+mTgCiK+OC3NHy+8SQAYFT3xpj5QDvuW0KqZHfQyMjIwOrVq7Fz506kpqZi7ty5OHPmjCNqIxUJujpOQxVbxQMufRFThZQlwOrJ5n1zBA0w4BPzrrsuoKzChJd/MK/2CQAv9GmJSXc3hyAwZJA62R00vLzMzeQeHh4oKyvDpEmT0KNHD7sLI3UJVtPMExe+iKmCPvPa6wNc26QvvpfTh0JDSTkmfLUHW07kQasRMOvBDni4a6zcZRHZxe6g8dxzz+HSpUsYPHgwnn76adx66624ePGiI2ojFbG0aBSVy1xJLVz4IqYal05ee30qucAmfdn6Kxi3cBeO5hTA10OLzx/tgjtbhspdFpHd7J51MnLkSAQHB+OVV17BHXfcgaNHj+L77793RG2kIpWLdl1WetdJTRcxUobgeHNL0/WcfJO+I9kGPDh3K47mFCDU3xPfPpXMkEFOw+6gkZKSgkceeQT33nsvjhw5gokTJ3IJchdUuQx5ntK7TlzwIqY6umhzd5ZwdXaFk2/St+nYBQz9YhtyDCVoHuaHlRO5EBc5F7uDxrBhw3D//ffj7bffRsuWLTF48GD8/vvvjqiNVMTSoqH0oOFiFzHVShwNTDkAjFlj/uykY2i+2ZGBxxbtQmFpBbo3C8YPT/dATJCP3GUROZTdYzSCgoLwyCOPAAA6d+6MQYMGoWfPnujTp4/dxZF6VC5Dror9ThJHA2HtgIztQFx3IKaL3BVRdXTRThsATSYR7/12FF9uMnfZDU6MxruDO3JVXXJKdv9Wx8fH48MPP4QoigCAwMBAe09JKlS5DLnix2gA5lkn83sDv79q/pyyRO6KyIVcKTNi0jcplpAxtXdLfDg0gSGDnJbdv9mlpaWYN28e4uLi0K9fP7Rv3x69e/dGZmamI+ojlbi+RaMydCqStVknev6+kvTOG0ow7N/b8OvBHHhoNfh4WAIm927BNTLIqdnddbJixQoAQFFREQ4cOID9+/dj//79GDFiBLKysnDixAm7iyTla+RnDhqlFSZcKTfCx8PuXy1puOjUSZLfoSw9Hl+8G9n6EgT5uOPfo29B1ybBcpdFJDm7rwYjRozAl19+iYCAAJw/fx5BQUH47LPPHFEbqYi3uxaebhqUVpiQV1gGn2CFBo3KWSfXhw3OOiGJrTuci8nL9qK4zIj4UF8sGNsVjRv5yl0WUYOwu+vk0KFDCAgIwOHDh/Hqq69i48aNePbZZx1RG6mIIAjqGKfBWSfUgERRxOcbT+DJ/+1GcZkRt7cIwYqJtzJkkEux+22nu7s7RFHEwoULMX36dIwcORJdunAUvytq7mVAk4LjKLoQA8QEyl2OdYmjzSuBXjplbslgyCAJlJQb8coP+7EqNQsA8Gj3OMwY0A7uWg76JNdid9CYMGECEhMTkZ+fj5kzZwIwj9cgF5OyBIv1k6HxMEH8cRYgKnz/ECeeOknyO28owZP/24PUs/nQagTMHNAWo5KbyF0WkSzsDhqPP/44HnroIbi5ucHX1xcnTpxA9+7dHVEbqcXVmRwamMc9CFDB/iHcvZUksv9cPp5csgc5hhLovN0xb2QiejQPkbssItk4pA0vMDAQfn5+AIDmzZtj0aJFjjhtrWbOnAlBEKp8tG7dukG+N11HbfuHpCwBZrcHFg8wf+Y6GuQgK1LO4aHrlhP/cdKtDBnk8mwOGj/88AM6depkuf3KK69gwYIF2LNnD0pLS6WozSbt2rVDdna25ePvv/+WrRaXpab9Q7iOBkmgwmjCP9ccxrTl+1BWYULvNmFYObEHmoRw0CeRzV0nCxcuxNixYy23586dC6PRiJKSEmi1WrRp0wabN29u8JVB3dzcEBER0aDfk25wdSaHafVkaEQTjNBAq9SZHFxHgxzsclEZnlu2F38dvwgAeLZnc0zt3RIaDRfhIgLq0KJx6NChm/YvOXDgAE6dOoUVK1bA3d0dX3zxhcMLrM3x48cRFRWFZs2aYeTIkcjIyGjwGghA4mhsH7ARw8v+gbG6BcodCKqm1hdSvENZegz47G/8dfwivN21+HxkIp7v04ohg+g6NgeN7Oxs6HTXti7WarUQBAFNmjTBgAED8OKLL2L16tWSFGlNUlISFi1ahLVr12LevHlIT0/H7bffjoKCgmqPLy0thcFgqPJBjhMQ3gTbTW1xpMhf7lKs4zoa5CCr9mZiyLytOHf5CroEFmPtQODeOFPtDyRyMTZ3nYSEhOD06dOIjjb/h5yTkwN3d3fL1zt16oTDhw87vsIa9O/f3/Lvjh07IikpCY0bN8by5csxfvz4m46fNWsW3njjjYYs0aWEBXgCAPKKSlFhNMFNqesFSLWOBmeyuIRyownv/HIEC7ecBgC8FrUbj12eDWGNydxaNkDhU7uJGpjNV4KePXti/vz5ltteXl7QarXXTqTRoLy83LHV1VFgYCBatmxpdX+V6dOnQ6/XWz7Onj3bwBU6t0a+ntAIgCgCeUrfLl4XDTS93XGBQKqZLPpMIH0zB6sqxHlDCUb+Z4clZLzSw98cMji4mMgqm4PGiy++iG+++QaffPJJtV/fsmULmjWTt5+7sLAQJ0+eRGRkZLVf9/T0REBAQJUPchytRkCIn7lV47xBvplIDU6qmSychqsoO07l4d45f2Pn6Uvw83TDl6O64OkOuBYyKil5ajeRDGwOGh06dMBXX32FF198Eb1798YPP/yAjIwMZGVlYfny5ZblxxvSCy+8gE2bNuH06dPYunUrHnzwQWi1WowYMaJB66BrKrtPzheUyFxJA5JiHRFOw1UMURTx780n8ch/d+BiYSlahfvjp2duRd92EYC7lemr7j4NWySRgtVpZdCHHnoI8fHxmDp1KoYOHQpBMI+sFkURAwYMwLRp0yQp0ppz585hxIgRyMvLQ2hoKG677TZs374doaGhDVoHXRPm7wXAgPMFCm/RcOR4Cil2hOU0XEUwlJTjpe/2Y+2hHADAoE5ReGdwB/h4XP2vs9zKdgvlxQ1UIZHy1XkJ8s6dO2Pjxo3IyMjA/v37UVhYiHbt2qFDhw44ePAg2rdvL0Wd1Vq2bFmDfS+yTZi/CrpOUpZcay1wxOC9ypksq6eYw4AjZrJIuZ29FINWnXAg7MFMPSZ+nYKMS8Vw1wp4/f62eLR7Y8sbLADSvk5ETqLee53ExcUhLi4OBQUFWLp0KR5//HHs2bMHFRUVjqyPVMYSNJTadWKtS8LefVkcPZNFivACOD5kSXVOGYmiiK93ZODNNYdRVmFCdKA3Ph+ZiITYwJsPlup1InIi9Q4amzdvxvz58/HDDz/Ax8cHt99+O3bv3u3I2kiFQgO8AEC5XSdSdkk4ekdYR4cXKUKWVMFNJgUl5fi/lQfx0z7z1u6924Thw6GdoPNxt/4gqaZLEzmJOi10kJOTg3fffRctWrTAvffei4qKCixfvhxZWVlcn4IAXN+iodCgobaVQR05DVeKQatq21CvBgcz9Rjw6d/4aV8WtBoBr97bGv8ZfUvNIaOSo6dLEzkRm1s0BgwYgPXr1+Puu+/GzJkzMWjQIPj6XhtxXaXfklxWZdC4YFBo14krN3VLMZ7ACcYoiKKIxVtP451fjqLMaEKUzgtzRnTGLU2C5S6NyCnYHDR+/vlnPPLII5gyZQpuueUWKWsiFQu72nVyobAUoigqM4C6alO3FCFL5cEtv7gML32/H78fzgUA3NM2HB881BGBPh4yV0bkPGwOGlu3bsX8+fPRs2dPREZGYuTIkRg5ciTi4+OlrI9UJvTqgl3lRhGXi8sR7KvQ/7AdPZ5CLaQIWSoNbttP5WHqt6nI1pfAQ6vBq/e2xpgeTZQZjolUzOYxGt27d8d//vMfZGdn4+WXX8bvv/+Oli1bonv37vj000+Rm5srZZ2kEh5uGgRd7dNW7MwTVyfFeAIVjVGoMJrw4e9pGPGf7cjWl6BpiC9+mNADY29typBBJIE673rl6+uLxx57DH///TcOHz6MO+64A++88w569+4tRX2kQuZFuxS+lgYpnwT7vJy9VIyHv9yGTzecgCgCQ7vEYM2zt6FDjK72BxNRvdi1vWarVq3w/vvv49y5c1ixYgXuu+8+R9VFKnZtGXIGDUVSw0ZtDt7nRRRFfL/nHPp/8hdSMvLh7+mGT0d0xgdDE+DrWe9Z/kRkA4f8hWm1WgwaNAiDBg1yxOlI5UKVvmiXK1PD4loOXpsjv7gM/7fyIH4+kA0AuKVxED4e1gmxwdyPhKghMMqTw6mi68QJl8yulVoW13LgompbTlzE88v3IcdQAjeNgKn3tMTTd8ZDq+FYDKKGwqBBDmdZS8NRXSeODgVqeFcvBbVs1OaAtTmulBnx3tqjWLT1NACgWYgvPh7WqfplxIlIUgwa5HAO3So+ZQnw03MARAAC8MAc+0KBWt7VS0Eti2vZuTZH6tl8TPs2FacumndWHZkUh/+7r821HVeJqEHxL48cztJ1Ym+Lhj7zupAB8+efnrMvFKjlXb0U1LS4Vj3W5iirMOHTDcfx+caTMJpEhAd44v2HEnBny9AGKJiIrGHQIIe7fqt4u1YHPbsD10JGJRE4uxPQPVi/c6rlXb1U1LS4Vh0WVTuYqccL3+3D0ZwCAMDATlF484H21e9T4orjc4hkxKBBDlc56+RKuRFFZUb4KWn6oJre1UvFiVZFLaswYe6fJzD3zxOoMIkI9vXAWwPb476OkdU/wFXH5xDJSEFXAHIWvp5u8PXQoqjMiPOGEviF+tXvRLFJAARUadUQBCC2m30FquldPVl1MFOPF7/fjyPZBgBA//YReGtQe4RcXQb/Jq48PodIRgwaJImwAC+kXyzC+YJSNKtv0NBFmwd/3vgO1BEXBSd6V+9qSsqNmLP+OL7cfApGk4ggH3e8ObA97u8YWXM3nSuPzyGSEYMGSSLU39MSNOyiptYHtfT9q6XOauw5cxkvfb8PJy+YZ5Tc1zESMwe0s3TX1cjVx+cQyYRBgyRxbUCoA6a4qqH1QS19/2qp8waFpRX4129pWLztNETRHGT/Oag9+raLsP0kumig43Bg3zfX7us4TPm/W0QqZ9deJ0TWVE5xddiiXUpmre9faXuJqKXOG6w7nIt7PtqERVvNIeOhLjH4Y+qddQsZgPl57l9W9b793yr++ROpHVs0SBIutbGaWvr+1VLnVbmGEsz86RB+PZgDAGjcyAfvPNgBtzYPqd8JVfb8iZwFgwZJIsyVNlZTS9+/Suo0mkT8b9tp/Ov3YygsrYBWI+DJO5phcq8W8HLX1v/EKnn+RM6GXSckCVVsrOYolWtzCFcvgkpdm0MFdR44p8eguVswc/VhFJZWICE2EKufuQ0v92ttX8gAVPH8iZwRWzRIEi7VdQKYB1SGtQPObgdiuwMxXeSuqHoKncWjv1KOj35Pw/+2n4FJBPy93PDGXYEYGFsCrW8BgADHfCOFPn8iZ8agQZKo7DrRXylHSbnR/nejSqem2RwKmsVjMon4IeUc3v31KPKKygAAgzpF4c24FASsGy7Nz1NBz5/IFbDrhCSh83aHh5v518vpZ56obTaHPhNI3yx7fYey9Bj65Ta8+P1+5BWVoXmYH755PAmz+4chYN0L6vl5ElGN2KJBkhAEAaF+nsjMv4LzBaWIDfaRuyTpqGk2gwJaXi4VleFfv6dh2c4MmETAx0OLyb1aYNytTc3hNH2zen6eRFQrBg2STFiAOWhccPaZJ2qZzSDzXh8VRhO+2n4GH607BkNJBQDg/o6R+L/72iBS533twOB4VLvHjdJ+nkRkEwYNksy1Ka5O3nWilh1hZWx52XzsAv7582Ecyy0EALSJDMDMAW2R1KyRbScQaz+EiJSJQYMko+gpro7e70MNsxlkaHk5cb4A//z5CDamXQAABPm444W+rTC8axy0GisboF06iZuThciuEyKVYtAgySh20S6pxikofTZDA7a85BWW4pP1x/H1jgwYTSLctQJGJzfBcz1bQOfjXvOD1dIVRUQ2YdAgyShyLQ2ZxynITuKWlytlRizYko55G0+isNQ8DqNP23BMv7cNmob42nYStXRFEZFNGDRIMtGB5pkmpy8WyVzJddQ0Q0QqErS8GE0ifthzDh+uS0Pu1a6y9tEBePXeNugRX4+9SdTQFUVENmHQIMm0jvQHAJy5VIzC0gr4eSrg143N8g4liiJ+P5yLD39Pswz0jAnyxot9W2FAxyhorI3DsIXSu6KIyCYK+J+fnFWInyfCAzyRayhFWo4BXRoHy13Sdc3y14/RmM0LWj1sPXkR769NQ+rZfADmRdqe7dkco5Ibw9PNyVeCJSKbMWiQpNpEBiDXcAGHsxQSNCqJYtXPZLO9GZfx0bpj+Ov4RQCAt7sW429riifuaAaddy0DPYnI5TBokKTaRgZgY9oFHM4ukLsUs8rBoJbpk6JrDQa1w8FMPT5edwzrj54HALhrBTzSLQ6Teja3TGUmIroRgwZJqm2UedfNw9kGmSu5Sm2DQR293kc9HM4yYM7641h7KAcAoNUIGNw5Gs/1auHcS8sTkUMwaJCk2kSag0ZajgFGk2h9kaaGoqbBoDLvS3IwU48564/j98O5AMyrgA9MiMLk3i1vnqqqgEBERMrEoEGSatLIF97uWlwpNyL9YhGah/nJW5CUazQ48mIr43ofqWfz8dmG4/jjiLmLRBCA+ztG4dmezdEy3P/mByhgozYiUi4GDZKUViOgdaQ/9mbk43C2Qf6gAUizRoOjL7YN3MUjiiK2ncrD53+exN8nzIM8NQIwIMEcMJqHVRMwAC6ARkS1YtAgybWJDMDejHwcyTbggYQoucsxc+QaDVJcbBuoi8dkEvHHkVzM23QSezPyAQBuGgGDOkdjwl3xiA+tJRiqbcwLETU4Bg2SXNur4zQOZylkQKijSXGxlXgZ7pJyI1btzcS//zqFUxfMK7d6uGkwvGssnryjGWKCbBzkqaYxL0QkCwYNkpziZp44mlQXWwm6eC4XleGbnRlYtPU0Llzdg8bfyw2Pdm+Mcbc2qfs0Ve5LQkS1YNAgybWO8IcgABcKSnGhoBShV3d1lZUjB25KebF1UBfPifOFWLAlHStSzqGk3ByIInVeGH9bUwzvFmff8vDcl4SIasCgQZLz8XBD00a+OHWxCEeyDQj1D5W3IClmSSjwYmsyidh0/AIWbz2NjWkXLPe3iwrA+Nua4v6OUfBw0zjmm0mxLwmnzBI5BQYNcpwaLgxtogIsQeOOljIGDSlnSSjkYmsoKcd3u8/hf9tO43ReMQDzFNVercMx/ram6N4sGILg4PVMHB0KOGWWyGkwaJBj1HJhaBsZgJ/3Z9dvnIYjL2JqmiVRx4vtwUw9vt5xBj+mZqG4zAgA8Pd0w9BbYjE6uTGa3LjIlkx11opTZomcCoMG2c+GC0O9Z544+iKmllkSNl5sr5QZsWZ/Fr7akYF9V3dRBYAWYX4Y06MJHuwcDV97xl84qM46UVMYJKJaMWiQ/Wy4MFTOPDl1sQgl5UZ4uduwjbgUFzEpB26e2wNkbAPikoGYLvadq4afqRgQhYOZBizblYGfUrNQUFoBwLzJWb/2kRiZFIekpjV0jyi9hUgtYZCIbMKgQfaz4cIQ5u+JYF8PXCoqw7HcAnSMCaz9vFK9s5Vi4ObKCcC+b67dTngEeHBe/c9Xzc9UFLRYfsodi376G0eu64KKC/bBiG5xGHpLDEL8apnRo4YWIk6ZJXIqDBpkPxsuDIIgoG1kAP4+cRGHswy2BQ0p39k6cuDmuT1VQwZgvt318fq3bFz9mYqrp0AQjTBCg3+Uj8fSdXkAzItr9W8fgWFdY9G9aSNobNmsTk0tRAqcxUNE9cOgQY5hw4WhbZQ5aByxdUBo5UXsp8kATAA0ynxnm7Gt+vvPbq9X0DCZROw+cxk/numMXZiL4LJzOG0KRw4aoWOMDkMSYzCwUxQCfTzqdmIpW4jC2pmfb2x3+7uNKkkxi4eIGhyDBjlOLReGNpHmjbnqPPNEACBe/axEccnV3x/b3eZTiKKIw9kGrNmfjZ9Ss5CZfwUAEIFyxPu64bYOjdEnObH63VNtJVULEaeiElENGDSowbSN1AEwzzwpLK2ofTVKfSbw03Mwpwxcbep/zmmmOYqiiLTcAvy8Pxtr9mcj/WKR5Wt+nm54PXo3hmb9C4LRBOzTAHGfAOF2XMCl6ObgVFQiqgWDBjWY5mF+aBrii/SLRfj3ppOY1qdVzQ84uwOWkFFJFIGzOwHdg5LVWWfH1lq5/7ebuhFMJhH7zuVj7aEc/H4ot0q48HTToGfrMNzfMQq9osvh9dlwmLuM4LgLuKPHPnAqKhHVgkGDGoxWI+Dlfq3w9Fcp+Pdfp/BIUmNE6GrYxKv4Ut3ul0t5aY33l5Qbse1UHtYfycUfh88jx1BiOcTDTYO7Wobivo6R6N0m/NqaF+mbpbuAO3LsA6eiElEtGDSoQfVtF4FbGgdh95nL+GhdGt5/KMH6wT7Bdbu/Lhy5loSprNq707Lz8NH/duOv4xctK3UC5m6Ru1uHoV+7CNzZKrT6LiR3K6t4utu4fXtD0UUDHYdXnXXTcRhbM4jIgkGDGpQgCHj1vjYY/PlWfLfnHMbd2hRtrq4aepPYJFwbCWo5ARDbzb4iHD14sVHzau9efMwNv5lyAQDhAZ7o1SYcvduEoUd8SO0LlpUXWbm/uP51SkGfCexfVvW+/d8CPf/BsEFEABg0SAaJcUG4r2Mkft6fjVm/HsWSx6wEB1008MCcm0OBAgYvmkwijuYUYMuJizh0NBIficD1S1mYRCAn4m5MbtMC97QNR7uogLptZKaWLgmO0SCiWqg+aMydOxcffPABcnJykJCQgE8//RTdutn5jpck93Lf1vj9UA42H7uAzccuWN/RVSGDF00m8wyR7afysP1UHnakX0J+cbnl67e63Y6H3P6ytL+UtR+GBUMH1r9OtXRJqCUQEZFsVB00vv32W0ybNg1ffPEFkpKSMHv2bPTt2xdpaWkICwuTuzyqQVwjH4xOboL5f6fj7Z+PoHmYH6ICvWt4hFjD1+rAxgvjlTIj9p3Lx+7Tl7D7zGXsOXMZBSUVVY7xdtciqVkw+sQY8dDWLRCuligA8Dr8PaCfUf9goJYuCbUEIiKSjSCKooP+B294SUlJ6Nq1Kz777DMAgMlkQmxsLJ599lm88sortT7eYDBAp9NBr9cjIMDKOAGSTH5xGe54/08YSiqg1Qi4p004RvdojORmja51M0ixGNQN+5KYOo7A8R4fYN/ZfOw9m4/Us/k4llsAo6nqn4avhxZdmgSje7NgdG/WCB2idXDXaswzRBYPuPn7jFkDNL29fjVKcU4p6DOB2e1vDm5TDjBsEDk5W6+hqm3RKCsrw549ezB9+nTLfRqNBr1798a2bVaWhCZFCfTxwMJx3fDBb0ex/dQlrD2Ug7WHctCkkQ+ahPiiiXs+Xj8xGZrr1pIw/TQZyy+1RIl3OABUGfdgyxAIn5JcDN63DJrr7hP3fYsxO3sgB42qHBsR4IUuTYLQtXEQbmkSjNYR/nDTanCT4HjcNGgVgn3dB2rpkuAYDSKqhWqDxsWLF2E0GhEeHl7l/vDwcBw9erTax5SWlqK09NqaBwZDHZfCJofr0jgIy55MRlpOAf63/TRWpGTidF4xTucVI1lzCBqPqhcxDUxYteEvbDe1rdf3S9YcwkM3nFMrmNDG8yIaR7VAp7hAdI4NRKfYoJrX+KiNvculq2UHUylCFhE5FdUGjfqYNWsW3njjDbnLoGq0ivDHPwd1wMv9WmNn+iXkFZWhLC8Ipm2aay0aAEzQoHmrjmjkHlrl2ibaOIYjsFwL0+mq5xQFLeZPeRiawJj6FX/pJKpdwVSJ29k3BKXuSUNEslBt0AgJCYFWq0Vubm6V+3NzcxEREVHtY6ZPn45p06ZZbhsMBsTGxkpaJ9WNv5c7erWpbKWKBUKrvqvXDJiNfyb2te+brKw6eFHoOAxCfUMGUP27esFB7+qVvoOpVCGLiJxGNR3O6uDh4YEuXbpg/fr1lvtMJhPWr1+P5OTqd9P09PREQEBAlQ9SuMTR5oGFY9aYP9s7ENTabA59pn3nvZFqh1jXUeVYkuspcSwJEclGtUEDAKZNm4b//Oc/WLx4MY4cOYIJEyagqKgI48aNk7s0cjgHXblrGrxozzlvqk+075xqUTmWRLi60qlSx5IQkWxU23UCAMOGDcOFCxfw+uuvIycnB506dcLatWtvGiBKKubo6a1SdHOoZYaIVNQ6loSIGoSq19GwF9fRUDgp1mjQZwIft8NNsySmHrLvApmy5OYZIvZ28xARKZjTr6NBLkCKNRpq6uZwxRkiREQSU/UYDXJylm6O6ziim+Om+ZeOXPfBZRsIiYiqxRYNUhcpruOOWPdBiqXSiYicAFs0SLmkmM1R07oP9WVt63lHT5klIlIhBg1SruB4K/c7YIbI9eydISLFlNlK+kzzBmsMLUSkUgwapFwFOXW73xZSrPvg7mvlfp/6nxMwd8d83M68i+vH7cy3iYhUhmM0SLkyrOzCe3Y7ENOl/ud19AyR8iIr9xfX/5z6TOCn53Ctm0c0347vxRktRKQqbNEg5Yqrfil5xHa3/9y6aKDp7Y65aEvRonF2B6odn3J2Z/3PSUQkAwYNUq6YLkBM0g33JdnXmiEFKVo0iIicBIMGKZc+E8jcVfW+zN2OGRjpyEGWUqzNEZt08zkFAYjtVv9zEhHJgEGDlEuq2RwpS8xLmy8eYP4sxSBLe9fm0EUDD8y5NkNG0AAD5nB8BhGpDgeDknJJsQGatTUv7BlkWdPaHFzWnIhcHIMGqYu9K4NKsX+KlLu36qIZMIhI1dh1QsolxcqgUizYJcXaHEREToItGqRcUrQUVIaCG7d0tzcUSNXNoc80B67geGUHF7XUSUQNjkGDlEvKUOAbBhz/HWjRB2jVzxHVOr6bQy0btamlTiKShSCKosvua20wGKDT6aDX6xEQECB3OWSNPtOxLQUrJwD7vrl2O+ER4MF59p/Xke/q9ZnmGTE3tuZMOaCsFgO11ElEDmfrNZRjNEj5HLmK57k9VUMGYL59bo9953X0lFkpN2pzJLXUSUSyYdAg13JsrZX7f6v/OaXYJl6KRcCkIMXgWiJyKgwa5Fr8wut2vy0a6l29vYuASYEzboioFhwMSq6lVX/gl+erud+OAaFSLCwm1SJgUuDCYkRUA7ZokGvRRQMPfIprzQOC+bajL472DrFWW5eEI8fREJFTYdAg15M4Ghg4F2jZ3/zZ3qmYUiwsVtklYfkT1bBLwlEcuaGelOckchLsOiHlc/RiUP/tA5zbYf73sV+BPYuBx3+v//mkXIK8skdGieMzrqeWBbukWPOD64gQ1YgtGqRsjp42mrb2WsiodG6H+f76kmJApBQzWaTSELvhOoIUP1M1vU5EMmHQIOWS4j/x41ZaLk6sq/85AfM72CkHgDFrzJ8d0R2jhvUp1HShleJnqpbXiUhGDBqkXFL8Jx7dpfr7oxLrf85KjhwQqZbBoGq60ErxM1XL60QkIwYNUi53Xyv3+9T/nIGxVu6Pq/85paCW9SnUdKGV4meqlteJSEYcDErKVV5k5f7i+p9TyoGbjqaG9Smk2vhOKlL8TNXwOhHJiEGDlEtN28RLxdE7wkpBbRdaKX6manidiGTCoEHKJeU28Wq5MKpl2igvtERkBYMGKVviaCCsHXB2OxDbHYixMpizXuxdvlNiXJ+BiJwAgwYpm6susGRt2mh8L7YcEJGqcNYJKZcrL7CkpmmjREQ1YNAg5XLlBZbUNG2UiKgGDBqkXK68wBLXZyAiJ8ExGqRcUsw60UUDHYcD+765dl/HYcq8gKtpdgwRkRWCKIoKH3ovHYPBAJ1OB71ej4CAALnLIWv0mY672OozzRt/3bg2x5QDvJATEdWBrddQtmiQ8jlyjYaaxmgoMWioZR0NIiIrGDRI+Rx5sVXTEuRqmIZLRFQLDgYlZUtZYu7qWDzA/DlliX3nU8sgS7VMwyUiqgVbNEi5pFq0Sg2DLNXWxUNEZAWDBimXlBdbpe/N4e5r5X6fhq2DiMhO7Doh5VLLmhdSKC+ycn9xw9ZBRGQnBg1SLl00EN216n3Rtyi7JcJRXDlkEZFTYdAg5Tq3Bzi344b7dpjvd3ZqGbRKRFQLjtEg5crYVv39Z7c7eLt4hVLDoFUiolowaJByxSVXf39s94atQ05KH7RKRFQLdp2QcsV0ARIeqXpfwiOu0ZpBROQkGDRI2RonXxsUKWjMt4mISDUYNEi5uDomEZHqMWiQctW0YBcREakCgwYpl5RrSegzgfTNbB0hIpIYgwYpl1RrSTh6ozYiIrKK01tJ2RJHA2HtzGtnxHa3f8aJVBu1ERFRtRg0SNlSllwLBoLG3MKROLr+5+OuqEREDYpdJ6RcUsw64R4iREQNikGDlEuKWSfcQ4SIqEGx64SUq7L14fqw4YjWBzXtIaLPNAeu4Hhl10lEZAWDBilXZevD6inmlgxHtj6oYQ+RlCXAT88BEAEIwANz7BufQkQkA0EURVHuIuRiMBig0+mg1+sREBAgdzlkjT5THa0PjqTPBD5uB3PIqCQAUw+5zs+AiBTN1msox2iQSrhYHj67Azc/ZxE4u1OOaoiI6k21QaNJkyYQBKHKx7vvvit3WeRoXFyLiEjVVD1G480338QTTzxhue3v7y9jNeRwrry4VmwSAAFVWjUEAYjtJldFRET1otoWDcAcLCIiIiwfvr6+cpdEjuTKm6rpos2DPyvX/BA0wIA5zh+wiMjpqHYwaJMmTVBSUoLy8nLExcXhkUcewdSpU+HmZr2RprS0FKWlpZbbBoMBsbGxHAyqVPpMc3fJjdNbpxxwnQuuKw6EJSJVsHUwqGq7Tp577jkkJiYiODgYW7duxfTp05GdnY2PPvrI6mNmzZqFN954owGrJLtIOb1VLdQwDZeIqAaKatF45ZVX8N5779V4zJEjR9C6deub7l+wYAGeeuopFBYWwtPTs9rHskVDpaR4V8+FsIiI7GJri4aigsaFCxeQl5dX4zHNmjWDh4fHTfcfOnQI7du3x9GjR9GqVSubvh/X0XBRjt6ojYjIBamy6yQ0NBShoaH1emxqaio0Gg3CwsIcXBU5FVeeyUJEJANFBQ1bbdu2DTt27MDdd98Nf39/bNu2DVOnTsWjjz6KoKAgucsjJeM28UREDUqVQcPT0xPLli3DzJkzUVpaiqZNm2Lq1KmYNm2a3KWR0km1URsREVVLlUEjMTER27dvl7sMUiPOZCEialCqDBpEdlHTNvFERCrHoEGuietTEBE1CFUvQU5ERETKxqBBREREkmHQICIiIskwaBAREZFkGDSIiIhIMgwaREREJBkGDSIiIpIMgwYRERFJhkGDiIiIJMOgQURERJJh0CDXpM8E0jebPxMRkWS41wm5npQlwOrJ5q3iBY15N9fE0XJXRUTklNiiQa5Fn3ktZADmz6unsGWDiEgiDBrkWi6dvBYyKolG85bxRETkcAwa5FqC483dJdcTtEBwM3nqISJycgwa5Fp00eYxGYLWfFvQAgNmm+8nIiKH42BQcj2Jo4H4XubukuBmDBlERBJi0CDXpItmwCAiagDsOiEiIiLJMGgQKRkXFiMilWPXCZFScWExInICbNEgUiIuLEZEToJBg0iJuLAYETkJBg0iJeLCYkTkJBg0iJSIC4sRkZPgYFAipeLCYkTkBBg0iJSMC4sRkcqx64SIiIgkw6BBREREkmHQICIiIskwaBAREZFkGDRI+dSy34da6iQiakCcdULKppb9PtRSJxFRA2OLBimXWvb7UEudREQyYNAg5VLLfh9qqZOISAYMGqRcatnvQy11EhHJgEGDlEst+32opU4iIhkIoiiKchchF4PBAJ1OB71ej4CAALnLIWv0merY70MtdRIROYCt11DOOiHlU8t+H2qpk4ioAbHrhEjJuDYHEakcWzSIlIprcxCRE2CLBpEScW0OInISDBpESsS1OYjISTBoECkR1+YgIifBoEGkRFybg4icBAeDEilV4mggvhfX5iAiVWPQIFIyrs1BRCrHrhMiIiKSDIMGERERSYZBg4iIiCTDoEFERESSYdAgIiIiyTBoEBERkWQYNIiIiEgyDBpEREQkGQYNIiIikgyDBhEREUmGQYOIiIgkw6BBREREkmHQICIiIskwaBAREZFkGDSIiIhIMm5yFyAnURQBAAaDQeZKiIiI1KXy2ll5LbXGpYNGQUEBACA2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Hnr27ImvvvoK+/fvR3p6Or777ju8//77GDhwoNXvNXnyZLz77rtYtWoVjh49iokTJ9bYOrFmzRrMmTMHqampOHPmDJYsWQKTyYRWrVoBAJo0aYIdO3bg9OnTuHjxIkwmE1q0aIHdu3fjt99+w7Fjx/Daa69h165ddfqZNGnSBGPGjMFjjz2GVatWIT09HRs3brQMKJ00aRIuXbqEESNGYNeuXTh58iR+++03jBs3rtpAAJhbHRITE/H333/XqZawsDB4e3tbBpzq9XrL1/766y/cfvvttbbAEKkVgwaRE3Bzc8MzzzyD999/v0prxLhx4xAZGYmYmBiMGDEC7dq1w6+//go3Nzf4+fkhKSkJH3/8Me644w60b98er732Gp544gl89tlnVr/X888/j1GjRmHMmDFITk6Gv78/HnzwQavHBwYGYsWKFejZsyfatGmDL774AkuXLrW8g3/hhReg1WrRtm1bhIaGIiMjA0899RQGDx6MYcOGISkpCXl5eZg4cWKdfy7z5s3DQw89hIkTJ6J169Z44oknLD+fqKgobNmyBUajEX369EGHDh0wZcoUBAYGQqOx/l/j448/jq+//rpOdbi5uWHOnDn48ssvERUVVSXILVu2DE888USdnxuRWgiiKIpyF0FEpBZXrlxBq1at8O233yI5Odmuc/366694/vnnsX//fri5cf1Eck5s0SAiqgNvb28sWbIEFy9etPtcRUVFWLhwIUMGOTW2aBAREZFk2KJBREREkmHQICIiIskwaBAREZFkGDSIiIhIMgwaREREJBkGDSIiIpIMgwYRERFJhkGDiIiIJMOgQURERJL5f9u79/gZsDF6AAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot fitting result\n",
+ "x_plot = np.linspace(0, 20, 101)\n",
+ "plt.figure(figsize=(6, 6))\n",
+ "plt.plot(x_plot, spring_model(x_plot, *param_fit, use_y0=False))\n",
+ "plt.plot(spacing, spacing_deviation_dG, '.')\n",
+ "plt.xlabel('RBS distance (nt)')\n",
+ "plt.ylabel('$\\Delta G_{spacing}$')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot predicted vs measured log10 expression\n",
+ "plt.figure(figsize=(6, 6))\n",
+ "plt.plot(total_dG, y, \".\")\n",
+ "\n",
+ "plt.xlabel(\"$\\Delta G_{total}$\")\n",
+ "plt.ylabel(\"$Log(Measured\\ Translation\\ Initiation\\ Rate)$\")\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot predicted vs measured log10 expression\n",
+ "plt.figure(figsize=(6, 6))\n",
+ "plt.plot(log_expression / np.log(10), y / np.log(10), '.')\n",
+ "\n",
+ "plt.title(f\"$R^2$ = {np.corrcoef(log_expression, y)[0, 1] ** 2:.3f}\")\n",
+ "lim = (-0.6, 5.6)\n",
+ "plt.plot(lim, lim, 'k--', alpha=0.5)\n",
+ "plt.xlim(lim)\n",
+ "plt.ylim(lim)\n",
+ "plt.xlabel('$Log_{10}(Predicted\\ Rate)$')\n",
+ "plt.ylabel('$Log_{10}(Measured\\ Rate)$')\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot cumulative log2 fold error\n",
+ "log2_tir_ratio = (y - log_expression) / np.log(2)\n",
+ "\n",
+ "plt.figure()\n",
+ "plt.hist(\n",
+ " np.abs(log2_tir_ratio),\n",
+ " bins=np.linspace(0, 5, 501),\n",
+ " histtype='step',\n",
+ " cumulative=True,\n",
+ " density=True,\n",
+ " fill=False,\n",
+ ")\n",
+ "plt.xlabel(\"$Log_2(Fold\\ Error)$\")\n",
+ "plt.ylabel(\"$Fraction < Log_2(Fold\\ Error)$\")\n",
+ "plt.xlim((0, 5))\n",
+ "plt.ylim((0, 1))\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/ethanwong/miniconda3/envs/ostir/lib/python3.11/site-packages/ostir/ViennaRNA.py:24: UserWarning: RBS Calculator Vienna is missing dependency ViennaRNA!\n",
+ " warnings.warn('RBS Calculator Vienna is missing dependency ViennaRNA!')\n"
+ ]
+ }
+ ],
+ "source": [
+ "# export constants to a json file\n",
+ "from ostir.ostir_calculations import OstirConstants\n",
+ "calibrated_constants = OstirConstants(\n",
+ " Beta=Beta,\n",
+ " logK=logK,\n",
+ " dG_spacing_constant_push=c_compressed,\n",
+ " dG_spacing_constant_pull=c_stretched\n",
+ ")\n",
+ "\n",
+ "calibrated_constants.save_to_json('./fitted_constants.json')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_dataset['dG'] = dG_no_spacing\n",
+ "df_dataset['Fluorescence.Log.Average'] = y\n",
+ "df_dataset['spacing.deviation.dG'] = spacing_deviation_dG\n",
+ "df_dataset['spacing.penalty.dG'] = spacing_penalty_dG\n",
+ "df_dataset['total.dG'] = total_dG\n",
+ "df_dataset['Log.Predicted.Translation.Initiation.Rate'] = log_expression\n",
+ "df_dataset['Log10.Predicted.Translation.Initiation.Rate'] = log_expression / np.log(10)\n",
+ "df_dataset['Log.Measured.Translation.Initiation.Rate'] = y\n",
+ "df_dataset['Log10.Measured.Translation.Initiation.Rate'] = y / np.log(10)\n",
+ "df_dataset['Log2.Translation.Initiation.Rate.Ratio'] = log2_tir_ratio\n",
+ "df_dataset['Abs.Log2.Translation.Initiation.Rate.Ratio'] = np.abs(log2_tir_ratio)\n",
+ "df_dataset['Predicted.Translation.Initiation.Rate'] = np.exp(log_expression)\n",
+ "df_dataset.to_csv('output_fit_values_python.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "start position 24, expression 53.819\n",
+ "start position 57, expression 0.0558\n",
+ "start position 75, expression 227.5888\n"
+ ]
+ }
+ ],
+ "source": [
+ "# example of deploying the calibrated constants\n",
+ "from ostir import ostir_calculations, run_ostir\n",
+ "\n",
+ "ostir_calculations.ostir_constants = calibrated_constants\n",
+ "# alternatively, load from file:\n",
+ "# ostir_calculations.ostir_constants = ostir_calculations.OstirConstants.load_from_json('./fitted_constants.json')\n",
+ "seq = \"TTCTAGAAAAAAAATAAGGAGGTATGGCGAGCTCTGAAGACGTTATCAAAGAGTTCATGCGTTTCAAAGTTCGTATGGAA\"\n",
+ "\n",
+ "results = run_ostir(seq)\n",
+ "print(\n",
+ " *[\n",
+ " f'start position {result[\"start_position\"]}, expression {result[\"expression\"]}'\n",
+ " for result in results\n",
+ " ],\n",
+ " sep=\"\\n\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "ostir",
+ "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.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/ostir/ostir_calculations.py b/ostir/ostir_calculations.py
index b8219a1..f6f764b 100644
--- a/ostir/ostir_calculations.py
+++ b/ostir/ostir_calculations.py
@@ -1,7 +1,8 @@
# cython: profile=True
import math
-from dataclasses import dataclass
+import json
+from dataclasses import dataclass, asdict, fields
from copy import deepcopy
from .ViennaRNA import ViennaRNA, subopt, mfe, energy
import numpy as np
@@ -21,20 +22,55 @@ class OstirConstants():
optimal_spacing: int = 5 # aligned spacing
cutoff: int = 35
- # From OSTIR calibration using Salis2009 data. See calibration directory for procedure
- dG_spacing_constant_push = np.array([17.20965071, 3.46341492, 1.790848365, 3.0], dtype=np.float64)
- dG_spacing_constant_pull = np.array([0.06422042, 0.275640836, 0.0], dtype=np.float64)
+ # From OSTIR calibration using Salis2009 data. See calibration directory for procedure
+ dG_spacing_constant_push: tuple = (17.20965071, 3.46341492, 1.790848365, 3.0)
+ dG_spacing_constant_pull: tuple = (0.06422042, 0.275640836, 0.0)
cutoff: int = 35 # number of nt +- start codon considering for folding
standby_site_length: int = 4 # Number of nt before SD sequence that must be unpaired for ribosome binding
- start_codons: list = ("ATG", # substituted U for T in actual calcs. Ignores CTG/CUG
- "AUG",
- "GTG",
- "GUG",
- "TTG",
- "UUG")
+ start_codons: tuple = ("ATG", "AUG", "GTG", "GUG", "TTG", "UUG") # substituted U for T in actual calcs. Ignores CTG/CUG
footprint: int = 1000
energy_cutoff: float = 3.0
verbose: bool = False
+
+ def refresh(self):
+ # update RT_eff and K after some variables changed
+ self.RT_eff = 1 / self.Beta
+ self.K = math.exp(self.logK)
+
+ # enforce type by casting
+ for field in fields(self):
+ value = getattr(self, field.name)
+ if type(value) != field.type: setattr(self, field.name, field.type(value))
+
+ return self
+
+ def __post_init__(self):
+ self.refresh()
+
+ def __str__(self):
+ """for more user-interpretable printing"""
+ output = 'OstirConstants(\n'
+
+ data_dict = asdict(self)
+ for key, value in data_dict.items():
+ output += f'\t{key}: {type(value).__name__} = {value}\n'
+ output += ')'
+
+ return output
+
+ def save_to_json(self, file_path):
+ data_dict = asdict(self)
+ with open(file_path, "w") as file:
+ json.dump(data_dict, file, indent=4)
+
+ @staticmethod
+ def load_from_json(file_path):
+ """usage: `my_constant = OstirConstants.load_from_json(file_path)`"""
+ with open(file_path, "r") as file:
+ data_dict = json.load(file)
+
+ return OstirConstants(**data_dict)
+
@dataclass
class StartEnergies: