diff --git a/notebooks/09_Combinatorial_Method_Usage_with_FingerPrint_Transformers.ipynb b/notebooks/09_Combinatorial_Method_Usage_with_FingerPrint_Transformers.ipynb new file mode 100644 index 0000000..08030d8 --- /dev/null +++ b/notebooks/09_Combinatorial_Method_Usage_with_FingerPrint_Transformers.ipynb @@ -0,0 +1,699 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example: Using Multiple Different Fingerprint Transformer\n", + "\n", + "In this notebook we will explore how to evaluate the performance of machine learning models depending on different fingerprint transformers (Featurization techniques). This is an example, that you easily could adapt for many different combinations of featurizers, optimizaiton and other modelling techniques.\n", + "\n", + "Following steps will happen:\n", + "* Data Parsing\n", + "* Pipeline Building\n", + "* Training Phase\n", + "* Analysis\n", + "\n", + "Authors: @VincentAlexanderScholz, @RiesBen \n", + "\n", + "## Imports:\n", + "First we will import all the stuff that we will need for our work.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "from time import time\n", + "from matplotlib import pyplot as plt\n", + "\n", + "from rdkit.Chem import PandasTools\n", + "\n", + "from sklearn.model_selection import GridSearchCV\n", + "from sklearn.pipeline import Pipeline, make_pipeline\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "from scikit_mol import fingerprints\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Data:\n", + "In this step we will check if the SLC6A4 data set is already present or needs to be downloaded.\n", + "\n", + "\n", + "**WARNING:** The Dataset is a simple and very well selected" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 out of 200 SMILES failed in conversion\n" + ] + } + ], + "source": [ + "full_set = False\n", + "\n", + "# if not present download example data\n", + "if full_set:\n", + " csv_file = \"SLC6A4_active_excape_export.csv\"\n", + " if not os.path.exists(csv_file):\n", + " import urllib.request\n", + " url = \"https://ndownloader.figshare.com/files/25747817\"\n", + " urllib.request.urlretrieve(url, csv_file)\n", + "else:\n", + " csv_file = '../tests/data/SLC6A4_active_excapedb_subset.csv'\n", + "\n", + "#Parse Database\n", + "data = pd.read_csv(csv_file)\n", + "\n", + "PandasTools.AddMoleculeColumnToFrame(data, smilesCol=\"SMILES\")\n", + "print(f\"{data.ROMol.isna().sum()} out of {len(data)} SMILES failed in conversion\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Build Pipeline:\n", + "In this stage we will build the Pipeline consisting of the featurization part (finger print transformers) and the model part (Ridge Regression).\n", + "\n", + "Note that the featurization in this section is an hyperparameter, living in `param_grid`, and the `\"fp_transformer\"` string is just a placeholder, being replaced during pipeline execution. \n", + "\n", + "This way we can define multiple different scenarios in `param_grid`, that allow us to rapidly explore different combinations of settings and methodologies." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2023-09-22T11:29:15.949644Z", + "start_time": "2023-09-22T11:29:15.461010Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'fp_transformer': [MorganFingerprintTransformer(),\n", + " AvalonFingerprintTransformer()],\n", + " 'fp_transformer__nBits': [256, 512, 1024, 2048, 4096],\n", + " 'regressor__alpha': array([0.1 , 0.325, 0.55 , 0.775, 1. ])},\n", + " {'fp_transformer': [RDKitFingerprintTransformer(),\n", + " AtomPairFingerprintTransformer(),\n", + " MACCSKeysFingerprintTransformer()],\n", + " 'regressor__alpha': array([0.1 , 0.325, 0.55 , 0.775, 1. ])}]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "regressor = Ridge()\n", + "optimization_pipe = Pipeline([(\"fp_transformer\", \"fp_transformer\"), # this is a placeholder for different transformers\n", + " (\"regressor\", regressor)])\n", + "\n", + "param_grid = [ # Here pass different Options and Approaches\n", + " {\n", + " \"fp_transformer\": [fingerprints.MorganFingerprintTransformer(),\n", + " fingerprints.AvalonFingerprintTransformer()],\n", + " \"fp_transformer__nBits\": [2**x for x in range(8,13)],\n", + " },\n", + " {\n", + " \"fp_transformer\": [fingerprints.RDKitFingerprintTransformer(),\n", + " fingerprints.AtomPairFingerprintTransformer(),\n", + " fingerprints.MACCSKeysFingerprintTransformer()], \n", + " },\n", + "]\n", + "\n", + "global_options = {\n", + " \"regressor__alpha\": np.linspace(0.1,1,5),\n", + "}\n", + "\n", + "[params.update(global_options) for params in param_grid]\n", + "\n", + "param_grid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train Model\n", + "In this section, the combinatorial approaches are trained." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "ExecuteTime": { + "end_time": "2023-09-22T11:29:15.960939Z", + "start_time": "2023-09-22T11:29:15.461078Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Runtime: 21.90\n" + ] + } + ], + "source": [ + "# Split Data\n", + "mol_list_train, mol_list_test, y_train, y_test = train_test_split(data.ROMol, data.pXC50, random_state=0)\n", + "\n", + "# Define Search Process\n", + "grid = GridSearchCV(optimization_pipe, n_jobs=1,\n", + " param_grid=param_grid)\n", + "\n", + "# Train\n", + "t0 = time()\n", + "grid.fit(mol_list_train, y_train.values)\n", + "t1 = time()\n", + "\n", + "print(f'Runtime: {t1-t0:0.2F}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analysis\n", + "\n", + "Now let's investigate our results from the training stage. Which one is the best finger print method for this data set? Which parameters are optimal?" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
mean_fit_timestd_fit_timemean_score_timestd_score_timeparam_fp_transformerparam_fp_transformer__nBitsparam_regressor__alphaparamssplit0_test_scoresplit1_test_scoresplit2_test_scoresplit3_test_scoresplit4_test_scoremean_test_scorestd_test_scorerank_test_score
00.0086710.0004480.0022860.000069MorganFingerprintTransformer(nBits=1024)2560.1{'fp_transformer': MorganFingerprintTransforme...0.0179750.3946820.5245980.5421160.3102380.3579220.19020925
10.0083330.0001250.0022220.000054MorganFingerprintTransformer(nBits=1024)2560.325{'fp_transformer': MorganFingerprintTransforme...0.0787580.4495480.5542410.5723630.3305430.3970900.18107124
20.0082170.0000480.0021930.000059MorganFingerprintTransformer(nBits=1024)2560.55{'fp_transformer': MorganFingerprintTransforme...0.1282210.4902530.5752300.5932370.3440760.4262030.17306123
30.0082270.0000630.0021880.000054MorganFingerprintTransformer(nBits=1024)2560.775{'fp_transformer': MorganFingerprintTransforme...0.1695850.5217230.5908900.6083800.3538660.4488890.16610022
40.0082260.0000550.0022550.000130MorganFingerprintTransformer(nBits=1024)2561.0{'fp_transformer': MorganFingerprintTransforme...0.2048310.5467740.6030100.6197520.3613240.4671380.16006021
...................................................
600.0859130.0015110.0216450.001469MACCSKeysFingerprintTransformer()NaN0.1{'fp_transformer': MACCSKeysFingerprintTransfo...-1.649022-1.943461-0.602509-0.418328-0.752525-1.0731690.60698765
610.0859020.0014960.0216060.001491MACCSKeysFingerprintTransformer()NaN0.325{'fp_transformer': MACCSKeysFingerprintTransfo...-0.969593-0.813087-0.1886900.003831-0.314764-0.4564610.37259564
620.0859370.0013970.0216080.001495MACCSKeysFingerprintTransformer()NaN0.55{'fp_transformer': MACCSKeysFingerprintTransfo...-0.657588-0.505782-0.0459400.124510-0.171340-0.2512280.28970062
630.0860480.0013130.0216150.001478MACCSKeysFingerprintTransformer()NaN0.775{'fp_transformer': MACCSKeysFingerprintTransfo...-0.468371-0.3568250.0366420.182939-0.087318-0.1385870.24211559
640.0859540.0014600.0215910.001460MACCSKeysFingerprintTransformer()NaN1.0{'fp_transformer': MACCSKeysFingerprintTransfo...-0.339715-0.2666520.0921800.218357-0.028878-0.0649420.21091957
\n", + "

65 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " mean_fit_time std_fit_time mean_score_time std_score_time \\\n", + "0 0.008671 0.000448 0.002286 0.000069 \n", + "1 0.008333 0.000125 0.002222 0.000054 \n", + "2 0.008217 0.000048 0.002193 0.000059 \n", + "3 0.008227 0.000063 0.002188 0.000054 \n", + "4 0.008226 0.000055 0.002255 0.000130 \n", + ".. ... ... ... ... \n", + "60 0.085913 0.001511 0.021645 0.001469 \n", + "61 0.085902 0.001496 0.021606 0.001491 \n", + "62 0.085937 0.001397 0.021608 0.001495 \n", + "63 0.086048 0.001313 0.021615 0.001478 \n", + "64 0.085954 0.001460 0.021591 0.001460 \n", + "\n", + " param_fp_transformer param_fp_transformer__nBits \\\n", + "0 MorganFingerprintTransformer(nBits=1024) 256 \n", + "1 MorganFingerprintTransformer(nBits=1024) 256 \n", + "2 MorganFingerprintTransformer(nBits=1024) 256 \n", + "3 MorganFingerprintTransformer(nBits=1024) 256 \n", + "4 MorganFingerprintTransformer(nBits=1024) 256 \n", + ".. ... ... \n", + "60 MACCSKeysFingerprintTransformer() NaN \n", + "61 MACCSKeysFingerprintTransformer() NaN \n", + "62 MACCSKeysFingerprintTransformer() NaN \n", + "63 MACCSKeysFingerprintTransformer() NaN \n", + "64 MACCSKeysFingerprintTransformer() NaN \n", + "\n", + " param_regressor__alpha params \\\n", + "0 0.1 {'fp_transformer': MorganFingerprintTransforme... \n", + "1 0.325 {'fp_transformer': MorganFingerprintTransforme... \n", + "2 0.55 {'fp_transformer': MorganFingerprintTransforme... \n", + "3 0.775 {'fp_transformer': MorganFingerprintTransforme... \n", + "4 1.0 {'fp_transformer': MorganFingerprintTransforme... \n", + ".. ... ... \n", + "60 0.1 {'fp_transformer': MACCSKeysFingerprintTransfo... \n", + "61 0.325 {'fp_transformer': MACCSKeysFingerprintTransfo... \n", + "62 0.55 {'fp_transformer': MACCSKeysFingerprintTransfo... \n", + "63 0.775 {'fp_transformer': MACCSKeysFingerprintTransfo... \n", + "64 1.0 {'fp_transformer': MACCSKeysFingerprintTransfo... \n", + "\n", + " split0_test_score split1_test_score split2_test_score \\\n", + "0 0.017975 0.394682 0.524598 \n", + "1 0.078758 0.449548 0.554241 \n", + "2 0.128221 0.490253 0.575230 \n", + "3 0.169585 0.521723 0.590890 \n", + "4 0.204831 0.546774 0.603010 \n", + ".. ... ... ... \n", + "60 -1.649022 -1.943461 -0.602509 \n", + "61 -0.969593 -0.813087 -0.188690 \n", + "62 -0.657588 -0.505782 -0.045940 \n", + "63 -0.468371 -0.356825 0.036642 \n", + "64 -0.339715 -0.266652 0.092180 \n", + "\n", + " split3_test_score split4_test_score mean_test_score std_test_score \\\n", + "0 0.542116 0.310238 0.357922 0.190209 \n", + "1 0.572363 0.330543 0.397090 0.181071 \n", + "2 0.593237 0.344076 0.426203 0.173061 \n", + "3 0.608380 0.353866 0.448889 0.166100 \n", + "4 0.619752 0.361324 0.467138 0.160060 \n", + ".. ... ... ... ... \n", + "60 -0.418328 -0.752525 -1.073169 0.606987 \n", + "61 0.003831 -0.314764 -0.456461 0.372595 \n", + "62 0.124510 -0.171340 -0.251228 0.289700 \n", + "63 0.182939 -0.087318 -0.138587 0.242115 \n", + "64 0.218357 -0.028878 -0.064942 0.210919 \n", + "\n", + " rank_test_score \n", + "0 25 \n", + "1 24 \n", + "2 23 \n", + "3 22 \n", + "4 21 \n", + ".. ... \n", + "60 65 \n", + "61 64 \n", + "62 62 \n", + "63 59 \n", + "64 57 \n", + "\n", + "[65 rows x 16 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_training_stats = pd.DataFrame(grid.cv_results_)\n", + "df_training_stats" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Best Fingerprint Method / Performance\n", + "res_dict = {}\n", + "for i, row in df_training_stats.iterrows():\n", + " fp_name = row['param_fp_transformer'] \n", + " if(fp_name in res_dict and row['mean_test_score'] > res_dict[fp_name][\"mean_test_score\"]):\n", + " res_dict[fp_name] = row.to_dict()\n", + " elif(not fp_name in res_dict):\n", + " res_dict[fp_name] = row.to_dict()\n", + " \n", + "df = pd.DataFrame(list(res_dict.values()))\n", + "df =df.sort_values(by=\"mean_test_score\")\n", + "\n", + "#plot test score vs. approach\n", + "plt.figure(figsize=[14,5])\n", + "plt.bar(range(len(df)), df.mean_test_score, yerr=df.std_test_score)\n", + "plt.xticks(range(len(df)), df.param_fp_transformer, rotation=90, fontsize=14)\n", + "plt.ylabel(\"mean score\", fontsize=14)\n", + "plt.title(\"Best Model of Fingerprint Transformer Type\", fontsize=18)\n", + "pass\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0QAAAGdCAYAAAAyt7PgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABiKUlEQVR4nO3dd5gkVfn28e/NAiJJVFYyEgQRA4grwcSaCT/FiIiIiAjoi4oRzGBEQQVRhEWRpGAkKAgmgoIgoIgCgrikZUFyzuzz/nFOs729PTM9M1WnZqbuz3X1NdNV3XXOqaqu7qfq1HkUEZiZmZmZmbXRIk1XwMzMzMzMrCkOiMzMzMzMrLUcEJmZmZmZWWs5IDIzMzMzs9ZyQGRmZmZmZq3lgMjMzMzMzFrLAZHVStJMSSFpp6br0iRJZ0q6pul6TDaS3iLpH5IeyPvRzKbrZBOfpGskndl0PZokaSd/ZoYmaUlJ35Z0naTHfHyenCQdKanS/DGS1sifnX2qXK5NbA6IbMy6gp2hHps2XcepQtKGkvaRtMYArx1pu3Q/rqm/9mMjaV3gOOAuYA/gncDljVaqAV0/bEPSx4Z4zYZdrzmycBWLysHOUPvzoU3XbyrJx5w39Ew7chTHl32aqflA9gI+APwE2AnYs8nKWNLn8z1P0k2SzpK03YDLeMME3/dsAlq06QrYlHAccGqf6VcBtwNPBB4pWqOJ5zWAxvH+DYHPA2cC14zw2stJwUO3XYGXAh8Gbu2afu846lS3maRj1J4R8beG6zIRPAi8Gzigz7z35PlLFK1Rc+YAn+wz/cr895lA27OOHwMcDzw8jmV8HjgKOLFr2mHA7/uU9W/gyz3TLxlH2XV7NfDPiPh40xWxhXR/vqcBqwDvAo6TtFJEfKvrte8Fdu95/xvy6/cZY/nXkn63PDrG99sk5IDIqvC3iDh2mPkPFqvJOEmaBjwhIu6vclkRMZ4fJaMSEf8DFtgekl5FCohOjIhrhnu/pGUi4p76ajiwFfPf26tcqKTFgGkRMSH2y1Gs7xOAt0vaOCL+2vX+JwDbA7/Mf5uqX0l3DXfMiYiHSlZmvKpcx51lRcRjwGNVLLNbRPwF+EtPmccA/xvhe2CiffZWBK6reqET7fMykeojScBSETHSibiFPt+SDgNuJF3NezwgiohHqPiEa0QEk+h3i1XDXeasVv3uIeqeJundki6V9JCkayV9YojlvE/SFZIelHSlpD2G6iMv6UmSvibpqrzcWyQdJ2mtntd13v8qSZ+V9F/SQXDbPP8apXt/NpL0R0n3Srpd0lGSnjbKZS10D1FnmqSVc/3ukHSfpNNzd7HO6/YBfpifnlFV1yh19ZOW9DZJF0l6ADg4z19P0iF5+9wj6f78mvf2WdY+eVnPlPQVSXPyuv+HpK36vH5HSX+VdGdu82xJP5I0Pc8PYN/88qvV070v1/0YSf/L5fw3l7vkEPV6tqRvSppD2i6bdm2zV0r6XN7/HpB0vnJ3T0mbS/pzruONkj47xLqcIekESbfm+lwh6dOSFu15XWebryXp55JuB+4ecJP9CriFdJWo2zbAU5i/j/Sr3y6S/pbbd5ek30p6SZ/XhVKXqFfmdt+by+3MH+hzmPfpb0i6OO/XD0q6TNJeSicKusvsvP8Vkj6Wt+VDefnvGnDd9LZjoXuINP/zvJ6kU/I+fVfeDiv2Wcbz8nq6T9JtSp/75Yf67OXP0J+7PivnS3pLn9cNuY579tdvK3UV6uyTrxzlsvptl4HWtfKxIT99l7q6MA20ARZuywKfva71dbLSPTwP5c/OiZKe12dZA287SU+R9K3ctgfztrtI0se71wGwJrB5V9v26VrGGySdo3TMvzf/v80w9Xq+0nH7LvJVMc3/rK+hdGy4M38WjpS0tKRFJH1K0tW5nn+T9OI+ZUjpc3dR3q/ukXSGpJf3vG7Y4/kw22ng77n8+ifkel+a632npF9Jen7P67q/5/+fpMtI279vt98B3JHfv8DJRfXcQ6T0uX9X/r+7691Oedpqko5QOt4/JOlmSef22/979okze5Y3ZNdzSesofT/dKOnhvI73l7TUGNtuBfgKkVVhSUnL90x7aICzUrsDKwA/AO4EdgC+JmlORPy48yJJewH7AX8DPgUsCXyc9ONwAZKeBJwLrA4cAVwKrAS8Hzhf0oyIuLbnbQcAiwGHk36cXtE1b1XgD8AvgJ8DGwE7AzMkvbDPlaThltXPUsDZwHm5bWsCHwJOkvScfJb3l7kNuwJfYf59NP8dYdmDegPwQeB7wKHM/4E+E3gZ8Gvg6lzXtwKzJC0fEV/ts6yjSGfrDgAWJ/XLP1HSup0rU5J2yK/7E/A54AHS9toSeBppu74TeBPwRuZ387s3v//pwF+BJ+U6X5nr+kngxZJeGRG9XR1+lMv5Bqkr1Y3AGnnefqRuGQflOn8UOD1/Qf4AmJXfvy3wBUlXd5+9VAr4TiB1Ef0G6YrWZsAXSF0d39pTl6WBs4BzgE/nNg/ikVyPd0v6SEQ8kKfvDPwduLjfmyR9DfgEaZ19CliGtC+dIWmbiOjt7joDeDNpHz6qazkDfw6B55G23wmk/XQx0vbdD1gL2K3Pe75C6qZyGPAQ8D7gSElXRcQ5Pa+d1ueYQ0Tc2jutxyqkbqcn5LpvkOuyLKlba6et65D2z0WAbwM3AFsBv+m3UElfIm3L04DPAvNI++7PJO0REd/teUvfddzlaNLVna+RttduwGmStoyI3u5qIy2rn5HWdeczeAxpPcwacLn99PvsQbov8Pa87JuAtUn75TmSNoqI//QsZ6BtB/yMdNw6DPgHaT9dj3SM2J90vH0n6SrDrczv5tcJZN4PfJfUBfBLuc47kY5ju0VE77pYHfhjLvcXpM93x1J53tnA3sALSZ/XJYDbgE1IActipEDhV5Ke3vPdeQzwdtL3zw+BJwDvAH4n6U0RcXJPfd5A/+P5cAb6nlO6wnca8KJcr++QjsPvJW23l0XEhT3L3hN4Kmn/vAm4foD6dH++p5G+/z5E+iwcNsJ7v0z63L6UBbuOn6t0gup3pH3pENJ3x5NIx6uXMvzn58vA93umrU3qlve/zgRJLyBt8ztzXW8g7asfJH0/bZ6vatlEExF++DGmB+kLJoZ4HN/zmp36vG8usFzX9CVJX8R/6Zr2FNKX6SXAEl3TVyTdbB/AzK7pB+XXb9BT16eTvhiO7Jq2U37/FcCSfdp3TZ6/Z8/0D+fpe49iWWcC1/SZFsAneqZ/PE9/bZ/lz+xd9oDb6sj8/jW6pq2Rpz0CPKvPe5bqM22RXO+7gMW6pu+Tl/VrQF3TX5inf7Vr2i/ztlh0hDp3lrlGz/Qf5elb9UzfP09/T59lnNlbXtc6/RuweNf01+fpjwIv7Jq+OOnHXPf+uQTpS/7sPsvv7Cfd+2dnm39pFNuuU8+3AM/N/2+f561K+uG8B7B8nte9jz+T9OP8zz1tXJn0hX0NqQtTZ3rn8/uqnjqM9nP4xO79oGv6Mbm+K/Vp39976rgK6cf6cUN8Lvs9luh6zZlDvG/bnunfzdPX65r20zztxT2v/UmfdbxRnvaVPu09kbSvLzPSOu7ZX8/vWRerkk4IXN7z+uGW1VmvM/tMG3RdL9DWYfbR6LO+O205kz6fdfofX56V63HIWLYd6cdt9L5/iDr320eenNfzVcCyXdOXJQX297Dgd1anXrv0Wf6Zed7He6b/kvSZvJAFj6Gd485uXdPemKft2rOMRfP7ryZ/zhjheD7Cehj0e64z7bU9r12W1P3wzK5pM/NrbweeNob69D4e6F0P+fVHknu5DTctT38efb5z+7yusy73GeY1TyYFzbcCz+ia/o88fZme13e25U6Drgs/yj7cZc6qMIt0g2r340sDvO+HEXFn50mks1DnAet0vebVpB+d34uufucRcRPph/HjJIl05uxs4Aal7i3L5zNN9+Vld59J7PheDH3P0N2kM23dDsnT3zjKZfUzj3QGutsf8991KOOUiFho9LaIuK/zv6QlJD2V9MP4t6QvwPX6LOugyEf/vIwLSD8iuttyFyn43Tpvs4FJWoT0w+HvsfCVja8y/8x8rwNj4atGHd+LBe/x+lP+e16uPwD5NX9l4f1zBdKZ2+V69rlO/frtc/0GRhhRRPyT9EOo023uXaQfQD8e4i3bkAbz+Hp3GyNiLulHw9OB5/e85x+x8FWIgT+HefoDnf1A0uJK3ZiWB04nBdUz+tT1kJ463kA6g9vvc3ANCx9zXs3IAwjMjYif9kzrfN6ekes7jXQ16K+x8JWpb/RZ5jtIP3SO6t7+ub0nk85qb9bznn7ruNu3etbFHNJ6Xk/Ss0a5rH5Gs67Hq+9nr3N8UbJsXl+3kE4qbdJnOSNuO9KP5oeATTTAiJx9vJp0VefbEfH4lZX8/8Gkqz+v6nnP7QzdXfUxFu6y9ifSZ/LQWPBKQee4070NdiAdP0/s2a+WI3WNXIOFt1nf4/kIBv2e24H0Y/+invosTrry8hJJT+xZztERcfMo63MN8z/TryEF8ucD35PU22V4NO7Kf1/erzvgoPKVsl+QenS8MSKuytOfSwq6fgw8oWcd/Zn0O6Tf94FNAO4yZ1X4zxi+kAFm95l2G+nyesea+W+/rme906bn976G/t14IP1g7nVln2mP1zF6btCOiIckzSZ1/RnNsvqZGwvfYHxb/vvU3hfXpG+dJS1NOsu7LbBan5c8uc+0ftv0dhZsy1dIXVpOBG6TdBapK9JPYuRultNJP0ou7Z0REbdLupHRb5cF6hwRd+Q47eo+r72DBdvS+XF6xDDLX6Hn+S3dJwLG4IfAd3LXwZ2Ak3LbF+pCxvzPz0LrC/hX/rsWKcjq6LeuRvM5JHdN2RvYkfRjtTfwHXTfuY0UtPW6r+JjDszfrtNJP4oHaitpHxDph+JQeveBkY4T/X7QXpb/rtUzf7THHBjduh6voY4vzwe+SLqS0HtvRb/P3ojbLiIelrQnqafA1Ur3rfyRNJjMHwao66Cfl27/jdS1uZ8b+xzf78h/F2hj13Gn9/iyDF1dsvpYgQXX8Zj2hwG/555Fuvo71PcrpCvV3d3ixlKfhT7fkn5EurJ5sKSTI+K2/m8dWkRcK+nLpO7VN0q6mNRV8GfdJ78GcBjwcmDHiPhT1/TO98G+zL8HtlfvscAmCAdE1qRBRkAazRWEzmt/T+p7P6jhrujEENOHqtdoR6cbbh2MZ5ju0Riqzj8G/o90BfBsUmDzKOns+YfpPyjLUO15vC0R8R9J6wOvzI/NSf3L98190Ie7N2qs62S47TJUnUezf36cIe7hIXUNHbQug/gx6UrF4aRgY49hXjuW9dWvfqNdzjeZn+Ply8DNpCtZG5E+m2PadyowyOdtuPL6HQ+Up285zPJ7f2CPtA8MVU4/Y9mfSqzrjoXqJ2l10jHlblJQdAXp7HkAB7LgfTgdAx0rI+JQSScBW5OOLW8B9pD0k4gYKY9NVZ+XjuHqPMg2ECn4GG70yH/1PB/L/jDo95yAfwIfGWZZvcHSuEdsBYiIRyX9gXQv0Sb0T/UxyHI+I+kI0v7xUmAX4OOSvh4Re430fkmfIl2h/1JEHNM7O//9Buleq37uGGK6NcwBkU10nbNoz2R+9wi6pnW7hXRfxLJjPHvcz9qSFu/uXqI0zPGaDH9GuGpDfWHVQtJypGDomIjYvWdeb5eRUctnI0/Nj87ABKeQvmj/3zBvvZnUheTZfer8ZNLNtxePt36j0Lnxe6xXLEYtIu6UdALpRuvrSV1VhtIJLp/NwoNwrJ//9jvz3ms0n0NINzOf3fsDVNIz+rx2ormZ9OO8X7v6dRP9D7AFcN0YuioNZX0WzuHTOfs8yPaa6N5ICnpeHxFndM/IXXPHNWx6RNxIugH++7kL5DGkIeu/McKVgO7PS+8VpdF8XqryH2BdUvfdOnPGDfo99x/SFdQ/RkS/3hZ1Wyz/XWaE1w37fRkRs0ldGQ+WtASpK+8n8v4xZPc+SduSbgf4CWlAoF6d74PHSn0fWHV8D5FNdL8jj4KUD1wAKA21+o7uF+YD9I+AjdVnuNv8vtH2G16WNEJdt/fn6SeOclnj0fkyfEqh8jpnLxc4QyhpJdIZtTEbomtXJ/HqsO3L2/hXwPMlbdEze2/SMe2E8dRvlE4n/YDeW9JCdZf0REkjfXmPxX6kLhl7jPDD5GTyjd2533unXiuRznJeS+qGMpKBP4fZYyy87yxFurI4oeXuT78hHUd6h0H+aJ+3dM4Sf0U9Q4rDmI45AB+WtHjXMlYlXSW4osKgaxD3Us8xZ6jjy3uZn39s1CQtqZ6h9/P27ASXI7Xld6Rg+APdn9v8/wdI62O4ExBVO5p0TOs3oieSqup+Nej33NGk7dP3ClGF9em37CVIJx5g/vfFUDojki6wvZVScizWPS13aex8pvp15e28d1PSKHTnkwZG6Bd0/Z10xW539aT5yMtYtN/3hE0MvkJkE1pE3CZpX9J9J+dIOpZ0Q/6upL7JM1jwbNCngRcDP5X0U9JACg+T+sZvBVxEuu9iUP8FPi/pOfm9LyANR/pvFh4MoU4XkO5/+nS+EnIfcHVEnF9HYRFxj6TfAjso5bK4gLQOdyNdLRjP/U2/VcrXcTbpCsdyzB/9qrcLQj+fIt1se6KkQ0gjQr0MeFte5qBDD49bRNwnaUfSj4YrcleMq0htWo/5Q4efWXG5l7DwFYR+r7tC0v6kYbfPlvQT5g+7vTTwjmHuf+hezmg/hz8Hdsvl/Z7Ub35n5t/zMdF9Bngtaajr7wBzSF1spuf5CwwcIunzpAD1Ykk/I3WTXIl0vNiKdNP5aCwK/EnScaTttTvp3o0PjrlFY3Me8CqlIdevI43cdXwFy/0NqSvVMXn93kE6bm9FOuaO9bfJusBZ+Qrqv/Jyn0UaVvxq5g9c0Fe++voJ0uh152t+vqmdSN1Td4uIu4Z4e+Ui4ueSfkjq8rcRaRTPW0mjDm6W69TvnsnRGvR77iDSsXd/Sa8gXS2+mzT0+CtJeYIWyI80Rk9SSs8AKWhemTSgw1rA4bHwkOy9ziN1JT5E0imk7rrnk4a/niXpF6RumveS2roLcH5EDJcm4yTSFaqfAW/RguMB3RsRJ0ZESHonab1ckr8PLiUdK59B+j74JGlAG5tgHBDZhBcRX5V0N6nv8H6kL+b9SQfKGaSRhTqvvSuf1f0oaTCAbUj3vcwhjfLSm0dgJHPycg4gdVF6mHQV6mPdo7DVLSKuk7QzsBdpNKDFmH+2qi47kNb360ijmf2HFHA+wjBJQAfwPdI63Y10xvY20pm1D/R2n+kn3xi7CSnPzw6k4GMO6Szql4YZTa4WEXG6pBeSrlDtQPrRfAfpR8Y3GSBwqVNE7CXpKtIZ3/1I+/D5pKG7h/2B2LOcgT+HpDPI9zD/M3g96V60C0gB0oSWA8mXkT73HyL90Ps1qTvnbBZsKxHxBUkXkQKWPUmDBNxM+lH+oTFUYUdSELQ3af++hHRWuuTVCUj7zHdJn/vOFZNxB0QR8V9JW5IC7E+RrhidQ7rn5zvMzxE2WteTBjh5OSkfzxNIeWAOB74WA4wAGhGH5MFZPg58Pk/+B2k0sRPHWK8xi4idJZ1BOvnwSVJwfRPpKsknKypmoO+5iHhE0tak/eKdzB84YC5pBM6qTkatyoInx+4nDSryfkbOQwRwHGn0zO1IeeAWIV0RP4s07PlM0pXtaaTj2FfoP4Jkt86V3n6vu5Z8JS0iLs4DhnySNCLq7qRj4TWkQGiQwT2sAZ3x680mHUkHk84CrZz7jFe9/GtIuYNmVr1ss6mi7s/hRKKUdPFC4JMRsV8Ny9+H9CN8zciJjM3q5O85s8T3ENmE133PQte0lUhnUf811X+EmU0EbfscqiefilIfmU/kp6Wv1JiZWY3cZc4mg5n5Pohfki7trwG8l3QPxN4N1susTdr2ObxY0h9JwwwvReo6+lJSvqyLGq2ZmZlVygGRTQZXke7HeC/pZv4HSd1WvuqhLc2Kadvn8CRSEPRO0nfl1cBnGV2OMzMzmwR8D5GZmZmZmbXWpL9CtPzyy8caa6zRdDXMzMzMzGyCuuiii26NiOn95k36gGiNNdbgwgsvbLoaZmZmZmY2QUm6dqh5HmXOzMzMzMxaywGRmZmZmZm1lgMiMzMzMzNrLQdEZmZmZmbWWg6IzMzMzMystRwQmZmZmZlZazkgMjMzMzOz1nJAZGZmZmZmreWAyMzMzMzMWssBkZmZmZmZtZYDIjMzMzMzay0HRGZmZjaimTNnMnPmzKarYWZWOQdEZmZmNuE4ADOzUhwQmZmZmTWkDYFfE20sXWYb2jiVOSAyMzMzox0/MNvQRqvHVN53HBCZmZmZmVlrOSAyMzMzM7PWckBkZmZmZmat5YDIzMzMzMxaywGRmVmLTOWbYs3MzMbCAZGZmdXGAZiZmU10DojMzGxKcf4RMzMbDQdEZmZmZmbWWg6IzMzMzMystYoGRJK2kHSFpKsk7d1n/sclXZwf/5L0mKSnlKyjmZmZmZm1R7GASNI04LvAlsD6wNslrd/9mojYPyI2jIgNgU8CZ0XE7aXqaGZmZmZm7VLyCtHGwFURMTsiHgaOB7YZ5vVvB44rUjMzMzMzM2ulkgHRKsD1Xc/n5GkLkbQksAXwiwL1MjMzMzOzlioZEKnPtBjita8Dzhmqu5ykXSVdKOnCW265pbIKmpmV5KGTzczMmlcyIJoDrNb1fFVg7hCv3Y5hustFxKyImBERM6ZPn15hFc2srRycmJmZtVPJgOgCYB1Ja0panBT0nNz7IklPAjYHTipYNzMzMzMza6FFSxUUEY9K2gM4HZgGHBERl0raPc8/NL/0jcBvI+K+UnUzs4mnc7XmzDPPbLQeZmZmNrUVC4gAIuJU4NSeaYf2PD8SOLJcrcxsJA5OzMzMbKoqmpjVzMzMzMxsInFAZDbJ+OZ/MzMzs+o4IDIzMzMzs9ZyQGRmZmZmZq3lgMjMzMzMzFrLAZGZmZmZmbWWAyIzMzMzM2stB0RmZmZmZtZaDojMzMzMzKy1HBCZmZmZmVlrOSAyMzMzM7PWckBkZmZmZmat5YDIzMzMzMxaywGRmZmZmZm1lgMiMzMzMzNrLQdEZmZmZmbWWg6IzMzMzMystRwQmZmZmZlZazkgMjMzMzOz1nJAZGZmZmZmreWAyGycZs6cycyZM5uuhpmZmZmNgQMiMzMzMzNrLQdEZmZmZmbWWg6IzMzMzMystRwQ2ZTi+3nMzMzMbDQcEJmZmZmZWWsVDYgkbSHpCklXSdp7iNfMlHSxpEslnVWyfmZmZmZm1i6LlipI0jTgu8CrgTnABZJOjojLul6zHHAIsEVEXCfpaaXqZ2ZmZmZm7VMsIAI2Bq6KiNkAko4HtgEu63rN9sAvI+I6gIi4uWD9zMzMzGyCWmPvUwZ+7U2zbxvVe67Zb+txlTna8oYqsw1tnIhKBkSrANd3PZ8DbNLzmnWBxSSdCSwDHBQRR/cuSNKuwK4Aq6++ei2VNTMzM7P+mvjhblaXkvcQqc+06Hm+KPACYGvgtcBnJa270JsiZkXEjIiYMX369OprapXwiG9mZmZmNtGVvEI0B1it6/mqwNw+r7k1Iu4D7pN0NrABcGWZKpqZmZmZWZuUDIguANaRtCZwA7Ad6Z6hbicB35G0KLA4qUvdtwrW0czMrDXacr9CXWWOt7wmypzK94GYjVWxgCgiHpW0B3A6MA04IiIulbR7nn9oRFwu6TTgEmAe8P2I+FepOpqZmZmZWbuUvEJERJwKnNoz7dCe5/sD+5esl5mZmZmZtVPRxKxmZmZmZmYTiQMiMzMzMzNrLQdELeJhsM3MzMzMFuSAyMzMzMzMWqvooApmZmZj0ZZhjD10splZeQ6IzMxs1PzD3czMpgoHRGZmk1wTV0/MzMymCt9DZGZmZmZmreWAyMzMzMzMWssBkZmZmZmZtZYDIjMzMzMzay0HRGZmZmZm1loOiBoyc+ZMZs6c2XQ1zMzMzMxazQGRmZmZmZm1lgMiMzMzMzNrLSdmNTOrkJOkmpmZTS6+QmRmZmZmZq3lK0RmNqUNevVltFdrwFdszMzMpgIHRGZWjLuTmZmZ2UTjLnNmZmZmZtZavkJk1mJ1dSfz1RozMzObLHyFyMzMzMzMWssBkZmZmZmZtZa7zJlNEB4NzczMzKw8XyEyMzMzM7PWckBkZmZmZmatVTQgkrSFpCskXSVp7z7zZ0q6S9LF+fG5kvUzMzMzM7N2GfU9RJJWAG6JiHmjfN804LvAq4E5wAWSTo6Iy3pe+qeI+L/R1svMzMzMzGy0BrpCJGkxSV+XdA9wA7BGnv41Se8fsKyNgasiYnZEPAwcD2wzhjqbmZmZmZlVYtAuc58HXgfsADzUNf2vwE4DLmMV4Pqu53PytF6bSfqHpN9Iena/BUnaVdKFki685ZZbBizezMzMzMxsQYMGRG8Hdo+Ik4DurnL/AtYdcBnqMy16nv8NeHpEbAAcDJzYb0ERMSsiZkTEjOnTpw9YvJmZmZmZ2YIGDYhWBq7tM31RBr8PaQ6wWtfzVYG53S+IiLsj4t78/6nAYpKWH3D5ZmZmZmZmozJoQHQp8LI+07cFLhpwGRcA60haU9LiwHbAyd0vkLSiJOX/N871u23A5ZuZmZmZmY3KoFd39gWOlbQaMA14q6T1gO2BrQdZQEQ8KmkP4PS8jCMi4lJJu+f5hwJvAd4n6VHgAWC7iOjtVmdmZmZmZlaJgQKiiPiVpG2BT5HuIfo86X6f10XE7wctLHeDO7Vn2qFd/38H+M6gyzMzMzMzMxuPEQMiSYsBXwa+GxGb118lMzMzMzOzMka8hygiHgHeT/9R4szMzMzMzCatQQdVOB14RZ0VMTMzMzMzK23QQRX+AHxF0vNIo8rd1z0zIn5ZdcXMzMzMzMzqNmhA1Bno4IN95gVp1DgzMzMzM7NJZdBR5gbtWmc2Jayx9ykDv/am2beN6j3X7DfQSPVmZmZmE8aK2+/XdBVqM+gVIjMzMzMz66OJYGEqByilDRwQSdoa2AtYn9RN7jLgazm3kJmZmZnZhOBgwUZjoIBI0i7AIcCPgKPy5JcCJ0h6X0QcUVP9zMzMzGwSc3BiE92gV4j2Aj4SEd/pmvYDSRcBewMOiMzMzMzMbNIZdLCE1YHT+kz/DfD06qpjZmZmZmZWzqAB0XXAq/tMfw1wbXXVMTMzMzMzK2fQLnMHAAdL2gg4lzSowkuAdwIfqKluZo8bdEjr0Q6BDR4G28zMzKzNBs1DdJikm4GPAm/Kky8Hto2Ik+qqnJmZmVkpvvnfrJ0GHnY7Ik4ATqixLmZmZmatUjoIc9BntrBBh93eHCAizuozPSLi7BrqZmZmZi3lH+5mVsqgV4i+BXyhz/RlgX2AF1RVITMzM5t4HKCY2VQ16ChzzwT+0Wf6P/M8MzMzMzOzSWfQgOgBYOU+01cFHq6uOmZmZmZmZuUM2mXudGA/Sa+PiDsAJD0F+EqeZy3iIbDNzJrl7mtmZtUZNCD6GHA2cI2kS/K05wE3A9vVUTEzM7PJwMGJmdnkNmgeohslbQC8A9gQEHAU8OOIuL++6pmZmY2OAxQzMxuN0eQhuh84vMa6mJmZmZmZFTVoHqJtgTsj4rf5+eeAXYFLgZ0i4sb6qmhmZpOVr9aYmdlEN+goc/t0/pG0EfAp4NvAYsA3qq+WmZmZmZlZ/QbtMvd04Ir8/xuBEyPi65J+yyhGmZO0BXAQMA34fkT0PXUo6YXAecDbIuLngy7fzMyG5ys2ZmZmCxr0CtGDwDL5/1cCv8//39U1fViSpgHfBbYE1gfeLmn9IV73NTyct5mZmZmZ1WzQgOhPwDckfRaYAZyap68LXD/gMjYGroqI2RHxMHA8sE2f130A+AVpSG8zMzMzM7PaDBoQ7QE8DLwF2D0i5ubpWzL4lZxVWDB4mpOnPU7SKqQueYcOuEwzMzMzM7MxGzQP0RzgdX2m7zmKstRv0T3PDwT2iojHpH4vzwuSdiWNcsfqq68+iiqYmZmZmZnNN3AeogrMAVbrer4qMLfnNTOA43MwtDywlaRHI+LE7hdFxCxgFsCMGTN6g6pWWWPvUwZ+7U2zbxvVe67Zb+sx1cnMzMzMbLIoGRBdAKwjaU3gBmA7YPvuF0TEmp3/JR0J/Lo3GDIzMzMzM6tKsYAoIh6VtAfpnqNpwBERcamk3fN83zdkZmZmZmZFlbxCREScyvwR6jrT+gZCEbFTiTqZmZmZmVl7DTrKnJmZmZmZ2ZQz8BUiSZuQkrI+jZ5AKiI+WHG9zMymvBW336/pKpiZmbXeQAGRpI8BXweuIo0M1z2yW6tHeTMzMzMzs8lr0CtEHwI+GBHfqbMyZmZN8dUaMzOzdhr0HqJl6RkMwczMzMzMbLIb9ArRccAWwCE11sXM7HG+YmNmZmYlDBoQXQ/sK+nFwCXAI90zI+KbVVfMzMzMzMysboMGRLsA9wIvyo9uATggMjMzMzOzSWeggCgi1qy7ImY2cbn7mpmZmU1VA+chssGssfcpA73uptm3jer1ANfst/WY6mRmZmZmZv2NJjHrusBbgNWBxbvnRcTOFdfLzIbgqzVmZmZm1Rk0MevWwC+AvwMvAC4A1gaeAPypttqZmZmZmZnVaNA8RF8A9o2IzYCHgHcCawC/B86spWZmZmZmZmY1GzQgeibwk/z/I8CSEfEgKVDas4Z6mZmZmZmZ1W7QgOgeYIn8/43AM/L/iwJPrrpSZmZmZmZmJQw6qML5wEuAy4BTgG9I2gB4I/CXmupmZmZmZmZWq0EDoo8AS+f/9wGWAd4MXJnnmZmZmZmZTTqDJmad3fX//cD7aquRmZmZmZlZIYPeQ4SkJSS9RdJekpbL09aW9JTaamdmZmZmZlajQfMQPYM0xPbSwHLAz4A7SVeKlgN2qaV2ZmZmZmZmNRr0CtGBwG+BFYAHuqafDLy84jqZmZmZmZkVMeigCi8CNo2IxyR1T78OWLnyWpmZmZmZmRUw8D1EwGJ9pq0O3FVRXczMzMzMzIoaNCD6LQsOrx2SlgX2JeUlMjMzMzMzm3RGk4foDElXAEsAPwGeAfwP2LamupmZmZmZmdVq0DxEcyVtCLwd2Ih0ZWkW8KOIeGC495qZmZmZmU1Ug14hIgc+R+THmEjaAjgImAZ8PyL265m/DfBFYB7wKLBnRPx5rOWZmZmZmZkNZ+CASNKKpNHmnkbPvUcRccgA758GfBd4NTAHuEDSyRFxWdfL/gCcHBEh6XnAT4H1Bq2jWRNW3H6/kV9kZmZmZhPSoIlZdwC+Dwi4A4iu2QGMGBABGwNXRcTsvMzjgW2AxwOiiLi36/VL9ZRjZmZmZmZWqUFHmfsy8HVgqYhYMSJW6noMmodoFeD6rudz8rQFSHqjpH+TRq/bud+CJO0q6UJJF95yyy0DFm9mZmZmZragQQOiZYEjI+LRcZSlPtMWugIUESdExHrAG0j3Ey38pohZETEjImZMnz59HFUyMzMzM7M2GzQg+hGw9TjLmgOs1vV8VWDuUC+OiLOBtSUtP85yzczMzMzM+hpNHqITJb0S+CfwSPfMiPjCAMu4AFhH0prADcB2wPbdL5D0DOC/eVCFjYDFgdsGrKOZmZmZmdmoDBoQ7QZsAdxKSsjaO6jCiAFRRDwqaQ/gdNKw20dExKWSds/zDwXeDOwo6RHgAeBtEeGBFczMzMzMrBaDBkSfBT4aEd8aT2ERcSpwas+0Q7v+/xrwtfGUYWZmZmZmNqhBA6JpwMl1VsSsCs4JZGZmZmajMeigCj8E3lFnRczMzMzMzEob9ArRksAukl4LXMLCgyp8sOqKmZmZmZmZ1W3QgOhZwN/z/+v1zPOgB2ZmZmZmNikNFBBFxMvrroiZmZmZmVlpg95DZGZmZmZmNuU4IDIzMzMzs9ZyQGRmZmZmZq3lgMjMzMzMzFrLAZGZmZmZmbXWoMNum43aitvv13QVzMzMzMyG5StEZmZmZmbWWg6IzMzMzMystRwQmZmZmZlZazkgMjMzMzOz1nJAZGZmZmZmreWAyMzMzMzMWssBkZmZmZmZtZYDIjMzMzMzay0HRGZmZmZm1loOiMzMzMzMrLUcEJmZmZmZWWs5IDIzMzMzs9ZatOkKWDkrbr9f01UwMzMzM5tQfIXIzMzMzMxaywGRmZmZmZm1VtGASNIWkq6QdJWkvfvMf4ekS/LjXEkblKyfmZmZmZm1S7GASNI04LvAlsD6wNslrd/zsquBzSPiecAXgVml6mdmZmZmZu1T8grRxsBVETE7Ih4Gjge26X5BRJwbEXfkp+cBqxasn5mZmZmZtUzJgGgV4Pqu53PytKG8B/hNvxmSdpV0oaQLb7nllgqraGZmZmZmbVIyIFKfadH3hdLLSQHRXv3mR8SsiJgRETOmT59eYRXNzMzMzKxNSuYhmgOs1vV8VWBu74skPQ/4PrBlRNxWqG5mZmZmZtZCJa8QXQCsI2lNSYsD2wEnd79A0urAL4F3RsSVBetmZmZmZmYtVOwKUUQ8KmkP4HRgGnBERFwqafc8/1Dgc8BTgUMkATwaETNK1dHMzMzMzNqlZJc5IuJU4NSeaYd2/b8LsEvJOpmZmZmZWXsVTcxqZmZmZmY2kTggMjMzMzOz1nJAZGZmZmZmreWAyMzMzMzMWssBkZmZmZmZtVbRUeZsvhW336/pKpiZmZmZtZ6vEJmZmZmZWWs5IDIzMzMzs9ZyQGRmZmZmZq3lgMjMzMzMzFrLAZGZmZmZmbWWAyIzMzMzM2stB0RmZmZmZtZaDojMzMzMzKy1HBCZmZmZmVlrOSAyMzMzM7PWckBkZmZmZmat5YDIzMzMzMxaywGRmZmZmZm1lgMiMzMzMzNrLQdEZmZmZmbWWg6IzMzMzMystRwQmZmZmZlZazkgMjMzMzOz1nJAZGZmZmZmrVU0IJK0haQrJF0lae8+89eT9BdJD0n6WMm6mZmZmZlZ+yxaqiBJ04DvAq8G5gAXSDo5Ii7retntwAeBN5Sql5mZmZmZtVfJK0QbA1dFxOyIeBg4Htim+wURcXNEXAA8UrBeZmZmZmbWUiUDolWA67uez8nTzMzMzMzMGlEyIFKfaTGmBUm7SrpQ0oW33HLLOKtlZmZmZmZtVTIgmgOs1vV8VWDuWBYUEbMiYkZEzJg+fXollTMzMzMzs/YpGRBdAKwjaU1JiwPbAScXLN/MzMzMzGwBxUaZi4hHJe0BnA5MA46IiEsl7Z7nHyppReBCYFlgnqQ9gfUj4u5S9TQzMzMzs/YoFhABRMSpwKk90w7t+v8mUlc6MzMzMzOz2hVNzGpmZmZmZjaROCAyMzMzM7PWckBkZmZmZmat5YDIzMzMzMxaywGRmZmZmZm1lgMiMzMzMzNrLQdEZmZmZmbWWg6IzMzMzMystRwQmZmZmZlZazkgMjMzMzOz1nJAZGZmZmZmreWAyMzMzMzMWssBkZmZmZmZtZYDIjMzMzMzay0HRGZmZmZm1loOiMzMzMzMrLUcEJmZmZmZWWs5IDIzMzMzs9ZyQGRmZmZmZq3lgMjMzMzMzFrLAZGZmZmZmbWWAyIzMzMzM2stB0RmZmZmZtZaDojMzMzMzKy1HBCZmZmZmVlrOSAyMzMzM7PWKhoQSdpC0hWSrpK0d5/5kvTtPP8SSRuVrJ+ZmZmZmbVLsYBI0jTgu8CWwPrA2yWt3/OyLYF18mNX4Hul6mdmZmZmZu1T8grRxsBVETE7Ih4Gjge26XnNNsDRkZwHLCdppYJ1NDMzMzOzFlFElClIeguwRUTskp+/E9gkIvboes2vgf0i4s/5+R+AvSLiwp5l7Uq6ggTwTOCKAk2ow/LArVO8zDa0sYky29DGJspsQxubKNNtdJmTpby2lNmGNjZRpts4sT09Iqb3m7FowUqoz7TeaGyQ1xARs4BZVVSqSZIujIgZU7nMNrSxiTLb0MYmymxDG5so0210mZOlvLaU2YY2NlGm2zh5lewyNwdYrev5qsDcMbzGzMzMzMysEiUDoguAdSStKWlxYDvg5J7XnAzsmEeb2xS4KyJuLFhHMzMzMzNrkWJd5iLiUUl7AKcD04AjIuJSSbvn+YcCpwJbAVcB9wPvLlW/hjTR7a90mW1oYxNltqGNTZTZhjY2Uabb6DInS3ltKbMNbWyiTLdxkio2qIKZmZmZmdlEUzQxq5mZmZmZ2UTigMjMzMzMzFrLAZGZmZmZmbWWAyIzMzMzM2stB0RmZmZmZtZaxYbdtqFJWg3YNyJ2rrmcDYF1gBuBc6LGIQYlLQZs3VXeCRFxX13ldZW7ITW3UdKqwPuAFwErAgH8DzgHOCwirq+6TLOqSVoB2C0ivlBzOU8GngHcGBFz6iwrl7chhY5zXWXW3kZJSwHb0/+4c1yJ42tPfWrff9qyXkvvs6U/k2aTga8QTQxPAd5V5QIl/VjSMvn/pSWdDvwN+DFwNvBXSctVWN65neVJmg5cBPyUFDj8ALhM0ipVlZfLKdrGXM5LgMuBtwKX5rKOz/+/FbhU0ourLHOE+qwm6YgC5Wwo6a2SXiJJBcpbTNIbJH1c0g75R0vdZdbeRkmrSvqypDMkXS7psvz/l/KJkZJWBD5f5QIlfUXSkvn/xSTNAm4FzgeulfRLSUtUWF4Tx4CibczlrA9cCXwDmA7MBW7K/38DuCK/pqRK95+2rNcGvpuLr9cB6rSCpM8VKOfJkl6YT2IW0cB3Ze1tlLSUpPdK+qGk30g6Nf+/S4nv5mIiwo+aH8COIzw+AzxWcZmPAU/L/+8PzAZeCAjYALgM+GaF5c3rKm8WcDGwUn6+PHAu8IPJ3MZczoXAt4eZfxBwQcF9a4Ma9p0fA8vk/5cmJVOeBzyS/14ALFdxmed2lkn6MXIJ8HDepg8B1wKrTPI2vgS4h/QD7DvAZ4HP5f+vAO4GXlxheS8b4fGemo87nwJuIZ0oWB3YBpgDfLam8kodA4q2MZdzBvATYIk+85YgnZQ5o+Iyi+4/LVqvpb+bi6/XAepUx/fWV4Al8/+LkX6HPJaP548Bv+y3ncdZZtHvkYbauD5wA+n76dekE9xH5P/vyvvP+iX3n9r2y6Yr0IZH3lnvJf0Y6ve4r4aDQ3eA8i9g2575WwFX1lTeFcDWPfNnAldP5jbmZT4APHOY+esBD1RY3pQPpvtsy9oD6obaWDSY7vqSnDfMo87jzt+BnXvmbwtcVlN5pY4BRduYl3k/w/zoAJ4D3F9DO4vtPy1br019N5dar1P+ZEyfMqdkcEsDJw2aejRegTY88k76pmHmb1jDwWEeMD3/fwvw7J75T6faH+7d5f1viPIenMxtzMuc3fuF0jP/PcDsits4pYPpPmXWHlA31MbSwfTNwDuApw7xmFnzcedW4Dk989cA7qupvFLHgKJtzMu8AXjDMPPfCNxQcZlF958Wrdcmv5tLrdcpfzKmT5lTNbgtftKgqYcHVSjjImAj0uXMfoJ0RqFqX5V0f17+yqT7XDqWJ/3QrtKxkh4iXcpds6e8lYA7Ky4PyrfxAOBQSRsDvyMFf0HqT/9qYCdgzwrLmwt8MCL67jv5ZtyLKiyvI/LfFVhwnZKf13G/S6fM5YBreuZdTdqH6iivVBtvBF5MCvj6eXF+TVX+BqwVEbf1mynpDuo57rxP0r2kLo9P7Zn3JFIXyCqVPgZA+TYeDhwl6av0P+7sDXyz4jKb2H/asF6h/D5ber3eCnwYOG2I+c8F/lBxmTD/mL4a8NeeeX8lBZt1lVnqe6R0G+8A1iVd7epnnfyaSc8BURkHkPqXDuUq4OUVl3k2sHb+/1IW/pBsxcIf3vE4quv/k4Ale+a/mdQNqkql20hEHCLpNtLB/j3AtDzrMVJgsmNE/LTCItsSTEP5gHqqB9OHAcPd8Hod8O4Ky+td5kPA84Gzuua/nKEDwrEofgygfBuJiH0kPQB8iHQfQedHkUiDAHwlIr5eZZmU33/asl5L77PF1yvtORkDUz+4beqkQXHKl7ysZSStBTwchYbczCORPBYRD5YoL5dZaxuVhhZfPj+9NSIeqaGMlwJLR8Rvhpi/FDAjIs7qN3+MZZ7J/B8GAD+KiO93zf8s8MqImFlhmT/smfSb7sBS0v7AcyNii4rKO5PCbczLfRspmH4BCwfT36w4mJ5wJG0KPBQRfy9UXtHjXC6z1jZKWpP0YwTgpoi4uo5yJpq2rNcGvpsrX6+S3ggsFRHHDjH/ycDrI+KofvPHWOY1LHhMPygiDuyavyfwtojYrMIyz6Tg90gTbczL3Yt00qAzLD3MP2lwYA0nDRrhgMjMRqWhH5lFA+qpEEybmVlS+mRMLnPSB7c9y58QJw3q4oBoApD0fuCpEfHFipe7CPAs4I6ImNszbwnSDYBHV1lm1/KfTMqt1Ek2d1RUnLBU0sHATyLiz1Uudzzq2pZmVZO0DfCkOo4BkpYm3Wg7r2f6YsBmEXF21WV2Lb/WhNCSPgr8PCKurXK541HntixdZlP7zhB1qX291r3PTsT91WwickA0AUj6N7BOREwb8cWDL3M14DekMeQDOJk0Iskdef4KwNyqypQ0l9Sl6bZ8FuFcUuLfS0mjZy0JbBoR/66ivFzmPFLbriQN1Xz0UH2WS6ljW45Q3pQLpnMZtQbUDqZB0uXAuhUfd55Cys3xKlJf9lnAXhHxcJ5f9XHnXGCriLhTKSH0H0jHmznAKqQuHS+KiBuqKC+X2Rkl6/ek+2xOjojHqlr+GOtU+bYsXWbpfWfAOtXxGSm6z07Q/XXKnYzpKqNVwW0TJ2NqM9bh6fyY2A/gR6SbN58FbAqcA/yT+cNvrkB9OSSOI41dv1R+vgQpidfPKm7jPNLB53BS0rAHc9mvaHr9F9zO/65yO+ZlrkYaQrQzdOoJwJO75le67+RlziUFA5AGVLiRdPPmH/O8O4H1Kt53HgMuJ93T89SpuC1HKG9l4OkVL/OQvO9sCWxHOlnxB+YnE1wBmFfxdiydEHoesDvpBuPHSD9gvwo8o8F9p/JtWbrM0vtOU+u19D47QffXy2v4DnkKaVS7R0npKL4FLN41v47vrdIJxefl9p1GGhJ+WlPbsM5t2Vhbmq6AHzVt2PQjckbX88WAn5KGTnxa1QeHnoP8bHqCEmAT4PqK29hd5lLArqRhJ+cB/yWNfrJi09tisj0oHEz32Za1B9Q4mK5r37kOeGnX8+WAPwFnkq4S13ncaSIh9Jqk0cluyD82/0j6Mb94lWW24VF632mwnU3mXJsQ+ytT4GRMn3Xb1uC2+MmYuh7uMleQpHWAFzF/pI7/AedGxH9qKOte4Pndy5Y0jZRV+DnA24GLorruDvOAFSLiFklzgC0i4l9d89cA/h0RS1RRXleZK0bEzT3TNyQFR9uTDoaLV1XmAHVaCnhBFOznXrXc/fH1EXFhfr4YKUh6DunLWlTcdaV7W0qaDewSEX/smr8JqatAJTkdespbipSAchdgBinn0eHAkRFxUxXlNSl3IXkBCx53LoqIyodOz8PPPiciZndNW5L5+UjeTUpUWMdx53+kgPbSrvlPB66o+7iTj62vJ+1DryV1NZ1eVZkD1GlRYOWIuK6GZRfZf0rvOwPWqfL1WnqfnYj7ax0kXQe8IyL+lJ8vB/yKFDhsBSxDvd9bVwAfiYhTuubPBH4YEWvWUN6awHtJXctXJA2lPgv4ZeRupjY6izRdgTaQ9CRJJ5HOBn2H9GN99/z/vyWdKGnZiov9L7BB94RI/Ya3I10l+lXF5QGcJekS0pm99XrmrU5K1lalvtF8RFwcEe8n5a7ZteIyR/IM0tWNSklaR9K7JO0l6RP5/3WqLidbFrir8yTSCGhvJ90PdhbVJ0h9vKj8d3Hg5p55/yN1Sai+0Ij7ImJWRGxMyvl0OunqYuU/LocjaSlJL6tweYtKOoi0Ls8AjiUFtmcAN0s6MAe7VbqWdGXxcRFxP+msrYATKy4PUv6qk5mfv6pbHfmrFjruRMRjEXFCRGwNrAV8t+IyR/JsUiBfmQb2nyb2nZFUvl6zkvtsY/urpKUlbS7pbZK2zf8Pl5NxPJYnXfkCICLuJAV7i5CC6rrK7azf5SiTUDwVGnF1RHyK9NvqLcADpM9oZfdLDiIfJ1YvWWZdHBCVcTApEdtLI2KZiFg7ItaKiGWAl5IOSAdXXOZppLMHC8hB0dtIeU+qtC/wE+AXwP7APT3zX0fq/lClYRO7RcQDEXFkxWUW1aJgGsoG1G0Ipr9B+qJ8L6lbx2IRsRipy+wued7+FZYHqSvHQsk6I91YvCXVJyk8itQ9+DbKJYQe6bhzXUTsU3GZTSi9/5Ted5pSep8tvr+26GQMtCS4HUZdJw2Kc5e5AiTdCbw2Is4fYv5mpESUy1VY5qKk7mJ3DzF/GrBqTKDRSiYDSQONzlNhl6CjSVctdouIc3rmvQg4FPh7RLyrivLycr8GbBgRr+0zb1Hg58DrKu568PmeSedFxOld8/cn7a9vr6i8vt0tmyRpA+BvFe47twDbRcQfhpj/KuC4KrvK5NEBV+7uAtQzf2lSl9LKEgmPUJ/K81flLk3XRcEvz9yNdDiLk+5dqPIzWXT/aWLfaWK9jqTqfbah/fUgUsD8CeD0iLg1T18eeA3wdVIX6D0rLPPbpP3nLX3mLU0KuDeu+DPyw55JdScUn/LfW01yQFTAAAHRJqSDxnIl62Wjl+/NOhD4+xAvWRP4WoU/au/EwfSU0EAwfS/w4oj4xxDzNwT+HBF1dSWxikh6ADiadKN4P6sAH6r4x96U33+aWK9t4JMxj5c5FYLbCXfSoC6LNl2BlvgV8H1J742I87pnKGUWPoyUJ6hSkp4DbEYauOFSSeuThhh+AnBsRPy26jKHqUvlOVYk/YrUTe/nVZ4BHsHFwG0R8Ysh6rQB8LVCdYE06kylIuJR0shrQ81/jNQ9wUbnAQYIpiss7wzgW5J2iIVzSa0MHEAaZapSSrlVNgQujnTj+AqkLlZPAH4aXYOt1E015MhQMzms/gVcEhF9u8Pk486HKi6z+P7TwL7TxHodVtX7bEP76xMZvovzrfk1lYmUY/GOYebfS7oHtpioOCl0QychV2KAkwblqlOjmABD3U31B+meiN+QfrzeBVwF/Cf//xhwKnks+wrL3Io0Hv5tpCGFtwRuIV02/gNpLPtXFVwHdeTL6eSSuR04iHRpuu52fArYZ5j5q5FGlamqvGNIQ15v2mfepsA/SAlpq27nc0j3Djw7P1+fNPLa0cBrSu03XfV5P/DZCpf3K2AHYImCbfgz8OFh5m9Q5Wck74v/zJ/1f5ISM/6ua9o/SFf6qmzjZvm4No/046Qzat+V+bj3AF3pAAqs8zrynRTPYUUKpA8aZv7awBkVl1l0/2li32livQ5Qp0r32Yb211+RguWV+8xbOe9LJ9dQ7nTg1SyYIuLTwBdIIxgW2465/G2AHStc3sHASwq34QLg/w0zv9LvrSYf7jJXkKT1SAf9FfOkm4C/RMS/ayjrXOCPEfEZSduRxuj/XkR8Os//Kuny8WuqLruU3J92I1I+mZ2BNUgf3lmkM2KVnp1pgtLQoceRRsu5hxTUBunG5qVJI6JtH2lEnarK3Ip0A+o9pPxObyQFQheTBmLZnDSs+u+rKnOAOv0bWCeqHa45SD/AjgG+HxH/rGLZw5T5KVK+j32GmL8a8IWIWOjG8nGUuQhp39mUnuMO8NvoyeZeQXm/J/2I/QiwG+nM4WkR8d48/whSkt83VlnuMPVZGVgsKjyzmved1wFvIA1QszgpefHh0TVU/FRQcv+ZaPtOU6reZ5vYX/Ox7FTSIAeXk0YJDdI+9CzSiKVbR8ScCsvcjDSY1DKk4/qrgZ8Bj5C+t1YhDWx1YVVlDlCny4F1a/jeupL0O+foiLitimUPU+aBpNtr+l4FkrQ26fvz5XXWo4imIzI/Fn4Ap5CTe41jGXeRk3WRDgaPABt1zX8OcFPTbR1nGx9Pipafv4Z0AHwot/9QUtA3qbdlXs56pBGYPpkf7wbWq6nO5wJfyv9vR7oC9+Wu+V8l/RhqfB8Y576zIens4X9JZ1DPIwXWSzVdv4bWySHA8uNcxu3As/L/i+X1unHX/I2AOU23tYJ9Z0InhK5iW5YuczLsO02s1wrq3Mj+mn93bEkagfaw/NgX2AJYpIbyfk/qxbAM8DHgelLQ15l/BHBC4XVfadJSnFC81oevEE1Aku4BNoiuBHVjWMZdpMSss/stM9+c9++IqLQfr8omnx0qMet0UsDwHlJQ2NjNflVsy1GWdwopqemN41jGXaRA8qp8hvghYJOI+Fue/xzg9xGx4nDLmch69x1JryF1EXw9879kDo+IqoenH00dx70tR1ne3aTRBcdz3LmX1DXlmvy897izGim5ZtXHnZLJZydcQuheVWzL0mU2te+Mso6VrddS++wk2V8PAT4XeTS6MS7jdtIgIJcrDen9ILBZRPw1z9+I1E1v1Uoq3QBNgoTiVWzLpnhQhanrGmAdoHPg3owFE02uRur6UAlJTyJ1q3odcB8p/4BIfXqXzAMg7BhDjFxWpYi4hTSs59eVMkW3ycuo5mbVeQARMU/SgyyYS+Ee4EkVlLGQkgF1t0gDjPy2J5h+L9DkyDlVbctBDZuvZEDXkwaHuCY/3w7oDuhWIt3XWIk8IuI3SNtqCdJVBUjb7UFJs4CPR0ouXJUhc1gB75f0UVLXpCZVsS1Ll1l03xmjca/XBvbZybC/7kAapGM8P6IXJ91nRkQ8Iun+nuXdAjx1HMsfUskTMh2RbgmYBczqCm73Jt0v1VhwSzXbshFOzDp1HUbXhyIi/hVp9LCOrYEzKyyvieSz1zL/y6SviDiz4jLb4BpSMN1RazANKaBW+QS0C4mIWyLi6xHxTOCVdZc3Bf2MrszsEXFKRDzQNf91pO46VWki+eyUTwjdkNL7TlNK77OTYX+t8mRMR+0BtconoB0yuI3mEor3auJkTCV8hWiKiohDRpj/yYqLfD1D5MuJiHMl7UYaaa8yEdGbFdqqsVAw3TO/6mAaFgyoh0pAezBQVQJaB9M1iIjPjfCSr5NGKKvK9vTJd5K7a/xY0s2k7o97VlVgRPhEYg0a2HeaUnSfbdH+ulBA3TO/joC6O7gdKgEtVHf8GTG4BY6sqKzWcUBkpVSeL8fq0UAwDYUDagfTzYiIeypeZPF8J9aMGvadpnifrUFDAbWD2ynEK7elJL1f0mcrXGQn+eymfcralNTXtfLks8OpoY3WHAfUU4CkbSTtWOEiO8lDV+5TVm3JZ4dTQxuNKbVeJ9Q+O4XW67Ai4p6eLphVcHA7hTggmpi+QhqCtE4fBPapcHkfAOYA50q6S9JVkv6TRyw7B7ghl1lS1W0cixLbsqiaAs0JFVC3NJg+ljSUa532A35Y4fLeTxq45TpJ/5T0e0m/k/RP0n1v0/NrSqq6jWNRYluWLnOqrNeJts9OhPVau5oCPwe3U4iH3S5A0lOARzqX/CU9l3TD+OqkexkO7XOfxqSkgslnmzDRt6WkT5IS8N5ZYxmVJknNy1yOwgloR6hP5W0cQx0q3ZaSVgTeyfx99djSw7OqnkSpRZPPDlCfytvYp4wi21LSmsDzgXMi4n+SViKNwrgI8Os8UlkRda3XJto4kfbZEvvrAHX4HvDZOodqVsVJUvMyiyegHaE+lbdxDHWofVvWxQFRAZL+DBwQESdKegXpx91fSR+gdYFNgC0i4owGq1lU6RwrVWlqW+ZhPe/v/aLMI9hsFhFnV1leU6Z6QA3ltqWk3wFHRMRxeVjWs0jDp/+HNIDFcsDMiPhHFeVNBpM1R0YT21LSa4GTSPca301KsvlLUlqFeaQRvbaJiNOqKrO0ydDGybrP9iPpGGCviJjbQNl1BdStDG6b3JZ1cUBUgFIyt40iJbo8G/hTRHy6a/6ngNdHxELdhSoou5G8LgPUq7KEpSXbWHpb5itSPwZeRUqQOot0EHo4z18BmNvkGaEmTMaAuvS2lHQHsGlEXCHpdFKX1l0j4jFJAr4NPDsiXlFFeT1lF8/LMWC9Jl1izVxW8W0p6S/An0m5TXYDPgf8PCL2yPP3B14SEZtVVWZebsn12kgbR1nHSvbZwut1oyFmnUcaiGA2QORk320xGYPbVm3LiPCj5gepC9Cz8v83kQKB7vlrA/dUXOaTSGe+5uXy/0vace8hDTd8IrBsw+tkrcnWxtLbEjgE+BfpzOV2wJXAH0iZxQFWAObVtI3WIQ1zvRfwifz/Ok3tM1XvP6XbWHpbks5yPyP/fyPw/J756wJ3VtzGRYGDgPvz5/KR/JiXpx1IOoM5afebJtrY0La8u7OuSN3HHiH9MO/MX6fKMhtar0XbOMY6jmufbWi9ziN9B88b5vFYTetraWBzUrLZbfP/Sze5Dfvtb5OljU1uy9IPD6pQxl+AbfL//wE27Jn/fKrPwN1EotTSmmhj6W35f8D7IuI3EXE8sDEpR9CpkpbMr6n0Mq8mSJLUOjXUxtLb8h/MTy47F1ijZ/4apB9EVWoiUWppTbSxiW35ENDZL59IChiW6Jr/RNIP66o0sV5Lt7EJTazXfzL/3po182Mt0g/r13Q9r4zKJ0kdi3ElLW2ojcW3ZWOajsja8CD98LkD+ALw/0g3jH+RdLlx3zzvYxWXeSewyTDzN6PBM19Uc6a2eBtLb0vSj5y1eqYtCZydH2tT8dkZ4GjSlYwX95n3IuAS4Kim9p0q9p8m2lh6W5L6td8O7Ey6Af9q4D25fe8mjWi1X8VtvAV45TDzXwXcMln3m6ba2NC2PIH0Q2hz4PvA+cApwDKkM9Q/A34zmfed0m0cYx3He6xrYr0+gXQy8p/Ac7umPwKsX9N6Oog0mu07gOW7pi9P+n6eAxw4ybdl8TY2sS0b2z5NV6AtD9LN9uew8KXGOcCHaijvToYPFjZh6gdEtbSx5LYkDdawdZ/pSwF/ygepqgOikdZro8F0FftPE21saFu+gTQKWW+XhweAbwHTKi7vXnq6kfbM3xC4d7LuN022sYFtuQ6pW+c80smDlUldlB/Nj5tJ91NO2n2ndBvHWMfxHusa+0ySelPcAOyZn9cZEE3okzEVbcvG2lhyWzb1WBQrIiLOB14saTrp8uIiwI0RcU1NRXbyurw3Is7rnpHzuhxG4USpNWikjYW35e9IZ4BP6anDfZK2zPNLa0OS1DraWHxbRhoN8WRgBqlrwyKke1Auijx0fMXOIOXl2CF6Rh9qIi9HTRppY+ltGWlQmnUlPTUiOt2At5H0SlJXsr90Ta9C8fXaQBub0NhnMiJOknQRcKykreooo0sbkqQ21sbC27IRHmVuippoeV361G/cOVYmehurIOnJwMoRcekQ85cGXhARZ1VY5jGks4bDBZr/iIjGEsCNd5TCJtrYxLYsbaLl5ehTv3HnyJjobZysvF77G+8+OxHWax6a+tPAK4CdooZhoSX9inS1fajA72hSuoPXV132oCr43mq8jSW2ZVMcEDUg3/S2Nely/Y3ACRFxX01lFcnrogYTljaZu6bktixlMgSa4w2oJ0Mbq6KUL+slwEqk7lZXAydHTUPvN5mXQ+USljbSxtLbcog6nA3sWMcV8YmS06XONublF00GO1HWa50mQuA3QB0nfXA7lTkgKkDSucBWEXFn7mb1R+CZpHtOViEdmF4UETc0WMdx5XXRJEg+W0Xumom2LXPumt0i4gs1LLt4oKnCCWibDKb71KXSbSnpaaRupTNIXQAXAf5O2k+nA9+MiE9UUdZYjTcvhyZB8tkqco80sS0lvWmIWT8FPkI65hERv6yy3EFVtF6Lt1ETPBlslblyGjieT4jATzUmLW3wZMzUTw4/3puQ/Bj5QTrIPS3/Pwu4GFgpP18eOBf4QcN1HO/NfnczP0/G2cCXe+Z/CjhvMrdxIm5LYAMazgFAuidmpXEu4ynAaaQbme8j3SS+eNf8FZpsZxVtLL0tgeNJo2gty/yRgo7K815B6m/+oYb3nXHl5SCN6vjM/P/pwA/IgwuQhrg9GPjjZG5jU9uSCZ5/pKL1WryNpB+u+wPTgPeTfsx+p2v+/qSTMpN5vU7o43muwyF0jdQ2xmVsNMTjYdJw5hvR4KAcFbVxwm/Lqh6+QlSApHnAihFxs6QrgI9ExCld82cCP4yINRuqYhV9W+8BNo6IyyXdBLw2us7KSlobuDhSjqBGjLeNeRlFt6Wkl43wknWAWRExrYryxqKi9XoI8DLg46SEu18ArgdeFxH356snN0ZEI7nTKmpj0W0p6S7S1cpL8/OlSAHE8hFxt6QdgM9ExHpVlDfGOo73uHNffv9Vkm4kXb39e9f8dYG/RsRylVR4bHWsYt8pvi0lnUYaSerd0XW1QNIjpPZcVlVZY1HRei3eRkl3k5K/zs5n+x8CXhi5m5ykdYALmtpn23A8z3V8fDuMYxnzSF3WhssvFE19P1fUxgm/LaviUebK6USeywHX9My7mtQnfDLrJCy9nPkJS7u7qdSRfLYpJbflmQxwwK2wvKb8H/COiPgTPP5D5VekpKWdEW0mezvPpOy2fKjPsqcx/7h/Lgsn+JxsOglLr2J+wtK/d81fg+oTljah+LaMiC0kfQy4SNKuEXF6lcufCBpqYxuSwU6G4/m4kqRm/yTlAPsY8GDXcv9D6gpZ7N6+IVTRxsmwLSsx6SO6SeRYpSFTFyP1Ee62Eqnf+2T2GWAvSV8gde84QNIXJW0vaV/gcOA7jdawOiW35a3AjqT7BPo9XlFhWU1anpTjAIBIgxm8lnSMOo000MFkV3pb/hn4oqRlJT0B+BowOyJuz/OfRrrKMJntC3xV0s7AgcA3Jb1H0oskvZuUbPPoJitYkUa2ZUQcALwZOFjSgZIWr7qMpjXQxj8DX5e0OSnR5oXAZyUtk+/T+GyeNpm14XgOKVH7NcDPgWUj4tqYPxDH3Px8so/C1pZt6StEhRzV9f9JzD871PFm0r0ok1ZE/FXSFsA3STepQxqaEdKZ230i4qBGKlet0tvyb6T+3H2vrkm6g2rOAjXtWtIoOY9f2s+X47ckHXRPbKheVSq9LT8G/Ba4nXQG717grV3z1wOOrLC84iLi9BwMHQSsSlp/h+fZDwGHMv84NJk1ti0j4kJJLwC+B1zE1DjeLKBwGz9BuifxDOAy4DW53E5AezuwRY3ll9CG4zkR8RDwAUnbAKdJ2j8iDmy4WlVrxbYEB0RFRMS7R3jJPqQbOye1KJ98trgGtuVhpLwDQ7mONFzrZDcRE9BWrei2zPcoPI80TPPipEFNbu2af2RVZTUpyiefLa7pbZnX4w6S3km6kjnZrywupFQbox3JYNtwPH9cTO2kpa3Zlh5UwYBqEqVOdG1oYxMqugl3QictraKNtjBVkCh1omtDG5vg9VqPKtbrRD+e5zpUfkzXBEta2obv5io5ICpEKRHki0lnnf4SXSs+jxj00agwl4waTJSay6s9YWlTbSy9LXvKfjLwLuav16Mi4vo6yhpFnaZ8oFlHG0tsy7w/bg+8iJSzIkjJ/M4Bjqv6M9mn/FKJUhtLWFqwjcW3ZekyVThhaS6z0c9IVz3qTHhbfL1OdG0IqNvQxio5ICpA0rOB35NunF6EdC/BmztnD/KwhXOrHJpRhROlqoGEpaXbmMssui0lzQWeGxG35S+1c3O5l5LuG1gS2DRqSCSqCZSITTUloC3ZxtLbUtL6pO4My5Byg/2PdG/E04CXkvJyvSYqHFpYhROlqpmEpcWTwTa0LYuWqQYSlja0Xosmg21iveZyJ0qgWVuS1K4yGv2urLuNE2Vb1i4mQDKkqf4ATiYdgJYincH8Kemgt06eX3liKwonSqWBhKWl29jEtuxZr8eRbsRdKj9fAvg18LOK2zjhErFRfdLS4m0svS3z8n8CLNFn3hKk0SDPqLiNRROl0kzC0uLJYBvalkXLpIGEpQ2t16LJYBtar+uTRia7Ox/XfgAckf+/i/SduX7FZRZPkkrh75GG2lh8Wzb1aLwCbXgANwPP7pn2zbyTrVv1hyYv/x7gWfn/m0j9SLvnrw3cU2F53T/2rgC27pk/E7h6MrexiW3Zs15nA6/omb8JcH3FbTwE+BfpTOJ2wJXAH4Al8/wVgHkVl/myER7vqXi9NtHGotuSlH9nyC8q4Dmks5pVtvE+5p+kuBF4fs/8dYE7Kyzvru7PI+lExcOkIXABdgD+PZnb2OC2LFom6QfXWvn/RUi5eDbsmr/OFFmvnTwuy/dMf2S4ukyy9TrlA81cZtHvkYbaWHxbNvXwKHNlPIGexFUR8RFJInW3eHsNZTaRKLXTxuUok3y2iTY2sS075S1OCsi6/Y/UNahKTSRiO5OySUubSjZXclveQfpxPlR3n3WofiSt0olSm0g+20Qy2Ca2Zekym0hYWny9RvlksE2s102AGRHxYO+MiHhQ0pdI3dur1ESS1NLfI020sYlt2QgHRGVcQerjvsBBNyI+nEclOamGMj8DnC5pSeYnSn0GKXh4JvBB4MsVl3mspIeYn7C0e1SSOpLPNtHGJrblWZIeJQWa65HOSHWsTuoWVKWFErHlfuin5Ucdw3zfCnw4L7+f55LOvFWliTZC2W15OHCUpK+S7pP4H+nLeUXg1cDepKubVdoXOE7SI8xPlPoU5n8m96XaRKmdhKU7kX74lUhYWrqN0My2LF1mJ2Hp10iDVHQSlm6Xy60jYWkT65WIOEDSmcCPJZ1Kyk1UlybWaxMB/MbAAaQkqdtHxD8B0rnKlCS14vKg/PdIE21sYls2o+lLVG14AJ8EfjPM/O9ScfecvNxNSDe99V5SnUP1/ep/2PPYtmf+/sBpk7mNTWxL4PM9j9f2Wa/HVdzGy+np8pinLwX8iXSWqurL8qeRRsMZav4GFa/XJtrYxLbci3QVo9PVotPdYi7wiSrL6irzDaTR1nq7djxA6mM/rcKy1iJdqXmUdJb7DuBVXfN3Ar46mdvY8LYsVibph9WVefn/AlYmnWB6ND9upuL7I5par11lLwMcm483j1JPl7ni65WUj+8uUkD5AlLS5FXy/3uTTo5+rqZ1ug0pSNkzP6+lK2JedvHvkQba2Ni2LP3wKHMtoAmQKDWPUvJY9LnsWtHyG2/jVCHp26S8A2/pM29p0pnUjaPaURHfSBpg4Ngh5j8ZeH1EHFVRecXb2KQ8qt2K+eltEXFlzeUtQqFEqfkKcd+EpXUq2caecotuyz5l3hQRV9dYVnfCUlQoYWnJNvYpu5MM9lMRcWNNZRRdr5L2Aj7E/FHJIHXvugk4MCK+XnWZXWWvSgo0HwZeTrq/uLKRArvKaex7pFQbc1mNbcuSHBCZ2QLUgkRsbWjjUCQ9TPryvLzputj4eFvaRNdUoKkCSVKb/h4p0cae8ho7aVCCA6KWUJlEqcvRUMLSXEbtbbQyNAET0E42+exlP/+PNOz37QAR8cEayi6WKLWpHBmF29jItmz6mJ7LqS1haV7+chRu40TI61L3eh2h7NWAfSNi59JlW7Wm0rZ0QDRFqXCiVDWTfLZ4MlirJ0mqGkxAO0R9akkEW5KkeaQR0e7smbU56Sbq+4CIiFdUWGbRRKlqJrFmE8lgm9iWpZNQF01Ymsts4nurdMLb4ut1gDptAPytpq5kRZOkNhHclm7jCHWpbVuW5oBoispfoCtGxM2SZpFGJ9kyIm6UtDwpwejlEfGeiso7mXSD5jtJSRIPIh0gXh4R/6npi6VoGy2p4wDYsy2PI32x/F9E3CdpCdKoOg9ExFurKnOE+kz6g7ykTwG7ADtHxJld0x+hvj71x5OGpn8XadS3A0g5gd6Vr6j8FPhiRBxUUXlnkG4Kf1fv/Yl5vzkSWCEiXl5FeXm5RduYy2xiWxY9pudjwIhD71d83Gnie6voPtvQet1xhJesTrqqUGWZTwF+DLyK9LmcBewVEQ/n+VMhuG2ijcW3ZVMcEE1RPT8wrwA+EhGndM2fCfwwItasqLybSV8il3ZN+ybwNtINf3dRb0BUexvbQtLLRnjJOsCsGrflbGCXiPhj1/xNgJ9HxGoVlVe8jU2QtCnpxtufkkbxe6zmH9F3ka7KXpqfL0XqirR8RNwtaQfgMxGxXkXl3U/KkdG3LZKeA/w1IpbsN3+MZRZtY1e5pbdl0WO6Ug6XR4B3R9fAGFOpjXn5RffZhtbrPFIurqF+YC5CSvRZ5Xo9hJTE++PAk4AvANcDr4uI+3OwcGNELFJhmaWD2ybaWHxbNsV5iKa2zg68HPUnSm0iYSmUbWNbnEnZJKm9yyyRtPRMmmljURFxnqQXkM4knifpHTUXWTpRahM5MppIBtvEtix6TI/yCUuhme+tovtsQ+t1LvDBobrhSdoQuKjiMptItl06aWkTbWxiWzaisijSJqRjc5eATqLUblUnSu0kLF1ARHyYdEazjoSlULaNbXErsCMpAOn3qOw+hR5nSbqE+UlLu1WdtLSpNhYXEXdFxNtIP6T/TL3H/U6i1GUlPYH6E6V2EmvuLekFklaVtEr+f29STrTDKiwPyrfxcYW3ZfFjekQcALwZOFjSgZIWr7qMHk18bxXfZxtYrxcBGw1XJYY/GTUWCyVJBV5L+oycBixdcXkwP7gdStUnZJpoYxPbshG+QjR1dedrOYl0U3q3NwMXV1jeCaSzaQtlaI+ID0laFHhfheVB+Ta2xd+AtWKI3BSS7qD6A+C+Pc97c7m8jpToripNtLFREXG4pLOAzcg3UtfgY8BvSaOeBXAv0H3f13qkbiSViIh9JD1AypHxFRbOkfGVqD5HRtE29lNoWzZxTCciLsxXwr5H+jFW5+eweBsb2mdLr9cDGP7H+VWkLolVuhZ4FjC7MyF3I9uSFCycWHF5MD+4/SrpXqL/kbbnisCrSYlLv1lheU20sYlt2QjfQ9RSqjlR6kTQhjbWQYWTpDahDW1sippLlFosYWlTbWwbFUhY2iQ1l6Nnyq1XNZQkVQWTljbVxrZwQGRmZlOKnLDUrFXUfJLU2oPbpts41TkgmsI0AZLq1a0NbWyaWpAktQ1tLEUF83KouYSljSfWnIrasl5Lf2+1Zb1ONJpCSUvbwAHRFKUGEs6V1oY2NkETLElqHdrQxiaofF6OJhKWFk8G2wZtWa+lv7fasl5h4gV+qidn34Rq41TigGiKUgMJ50prQxuboAmWJLUObWhjE1Q+L0cTCUuLJ4Ntg7as19LfWy1ar8UDPxVOWtqm4LYJDoimKDWQcK60NrSxCSqcJLUJbWhjE9RMotTSCUuLt7EN2rJeS39vtWi9Fg/8VDhpaVuC26Y4D9HU1TfhHOlHw1mkoRsnuza0sSklk6Q2pQ1tLK10Xg4i4jzgBcDapISlw5VfheJtbIm2rNfS31ttWa+bkK7G9E2SCnwpv6ZKc4EdI2KZfg/SfWJVaqKNreE8RFNXJ+HcAmeFIuLDkhahvkSpJbWhjU05S9KjzE+S+q+ueVUnSW1KG9pYWum8HEBKWAq8TdJ7qT9haSNtbIG2rNfS31ttWa+dwG+oq8J1BH6dpKW/HGJ+1UlLm2hjazggmroaSapXWBva2ITSSVKb0IY2FhcNJZ3sKr/2hKVNt3GqatF6Lfq91aL12kTgVzppaVuC20b4HiIzM6ucCiZKbUob2tiEEjld2miqr1cVTJLalDa0sSkOiMzMrFZtSJTahjaaTQZTPfCDdrSxNAdEZmZWiaYSpZbUhjY2xYm26+H12o4kqW1oY50cEJmZWSWaSJRaWhva2AQn2q6H12tSR5LUiaYNbayTB1UwM7OqfIaUKPXDfRKl7jRFEga2oY1N+CrwFxZMWHqOpJdHxH8ardnk1or1OmCS1EmtDW1skq8QmZlZZUonSm1CG9pYmhNt16Mt67V0ktQmtKGNTXJiVjMzq0wDiVKLa0MbG+BE2/Voy3otnSS1CW1oY2McEJmZWaUi4q6IeBswi/oTpTaiDW0srJOwdAER8WHSj3cn2h6btqzXTpLUoVSdJLUJbWhjY3wANzOzWkTE4cBLgJ2pKVFq09rQxkI6CUsXEhEfInVR9I+90WvLej0AOGeY+VUnSW1CG9rYGN9DZGZmZmZmreUrRGZmZmZm1loOiMzMzMzMrLUcEJmZ2bAknSnpO2OdP2AZ10j62HiWURVJMyWFpOVH8Z59JP2rznqZmVk9nJjVzMzG603AI50nkq4BvhMRB4xiGS8E7qu4XmZmZiNyQGRmZuMSEbdXsIxbqqiLmZnZaLnLnJmZDWJRSQdJuiM/9pe0CCzYZU7SmcDTgf1zt7PI058k6RhJN0t6UNJsSXt2Ft7dZS53P4s+j326Xv9uSZflZV0p6cOd+oxE0kckXSLpPkk3SPq+pOWGef1Oku6V9Lpc1oOSzpC0Vp/Xbifpv5LukXRid7c7SS+U9FtJt0q6W9KfJW02SJ3NzKw+DojMzGwQ7yB9Z2wG7AbsCuzZ53VvIuXj+QKwUn4AfAl4LvB/wHqkvD03DFHWAV3vXQnYEXiUlAAVSe8FvgJ8DngW8FFgL+D9A7ZlXq77s4HtgY2Bg0d4zxOAzwPvJq2DacAJkrpzuKwBvA14I/Aa4PnAl7vmLwMcA7w0l3kxcOpo7lUyM7PqucucmZkN4kbgg5GS1/1b0rrAR4Bvdr8oIm6X9BhwT0Tc1DXr6cDfI+Kv+fk1QxUUEfcC9wJIeibwbeDjEfH7/JLPAp+IiJ/n51dL2o8UEI04uENEHNj19BpJnwBOkvSuiJg3xNsWBT4UEefker0TmA28Evh912t2ioi78mtmkQKoTrl/7F6gpA8Abwa2ICXINDOzBvgKkZmZDeK8WDCT91+AVSQtO+D7vwdsK+kfkg6QtPlIb8jd2E4GftYJYiRNB1YDDsvd2O6VdC+wH7D2IBWR9ApJv5M0R9I9wC+BxYEVh3nbPKATzBER1wJzgfW7XnNtJxjK5gJP6yr3aZIOy93u7gLuyfNXH6TeZmZWD18hMjOz2kXEbyQ9HdiSdFXlFEk/i4h393u9pEWBn5K61f2/rlmdE3m7A+eOth65DqcAh5O63N0GbAQcRwqKxuORnufBgicejwJWAD5MukL2EPCHCso1M7NxcEBkZmaD2ESSuq4SbQrMjYi7F7yNBoCHSffYLCAibiXdQ3OMpN8Ax0naPSIe6lPegcCawCYR8UjXMv4n6QZg7Yg4egztmEEKQD4cEY8BSPq/Ad63CGlo8HPze1YHVgYuH0XZLyF1OzwlL2MF5t9jZWZmDXFAZGZmg1gZOFDSIaTBET5OGiihn2uAl0o6FngoIm6V9AXgb8ClpO+eNwGz+wVDkt5NGnRhS2BxSZ2ubPfm+4v2AQ6WdCdwKrAY6SrPKhHx1RHa8R9ScLOnpF+SArs9R2x9GtThQEkfAh4AvpXb8vth37WgK4EdJJ0PLAV8nRQ8mplZg3wPkZmZDeJHpKs+55O6m/2AFBT08znSfT7/BTr5hR4ijbj2D+Ac0ohrrxvi/ZsDTwTOJA3m0Hl8DCAivk8KmN6Zl/cn0qh3V4/UiIi4BPgQaUCIy4BdOssdQaf+R5PWwSLAm3ruqxrJzsDSwEXA8cARDDO4hJmZlaHRHcvNzMzaRdJOwHciYumm62JmZtXzFSIzMzMzM2stB0RmZjZlSHpH93DcPY9Lm66fmZlNPO4yZ2ZmU4akZUhDW/fzSM4fZGZm9jgHRGZmZmZm1lruMmdmZmZmZq3lgMjMzMzMzFrLAZGZmZmZmbWWAyIzMzMzM2ut/w+GuPNgqZjgzgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Best Fingerprint Method / Performance\n", + "from collections import defaultdict\n", + "res_dict = defaultdict(list)\n", + "for i, row in df_training_stats.iterrows():\n", + " fp_name = row['param_fp_transformer'] \n", + " if(\"Morgan\" in str(fp_name)):\n", + " res_dict[fp_name].append(row)\n", + "\n", + "for fp_type, rows in res_dict.items():\n", + " df = pd.DataFrame(rows)\n", + " df =df.sort_values(by=\"mean_test_score\")\n", + "\n", + " #plot test score vs. approach\n", + " xlabels = map(lambda x: \"_\".join(x), zip(df.param_fp_transformer__nBits.astype(str), df.param_regressor__alpha.astype(str)))\n", + "\n", + " \n", + " plt.figure(figsize=[14,5])\n", + " plt.bar(range(len(df)), df.mean_test_score, yerr=df.std_test_score)\n", + " plt.xticks(range(len(df)), xlabels, rotation=90, fontsize=14)\n", + " plt.ylabel(\"mean score\", fontsize=14)\n", + " plt.xlabel(\"bitsize_alpha\", fontsize=14)\n", + "\n", + " plt.title(\"Fingerprint Transformer \"+str(fp_type).split(\"(\")[0]+\" per Bitsize\", fontsize=18)\n", + " pass\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#plot ALL test score vs. approach\n", + "df =df_training_stats.sort_values(by=\"mean_test_score\")\n", + "\n", + "plt.figure(figsize=[16,9])\n", + "plt.bar(range(len(df)), df.mean_test_score, yerr=df.std_test_score)\n", + "plt.ylabel(\"mean score\", fontsize=14)\n", + "plt.xticks(range(len(df))[::5], df.param_fp_transformer[::5], rotation=90, fontsize=14)\n", + "plt.title(\"test score vs. approach\", fontsize=18)\n", + "pass" + ] + } + ], + "metadata": { + "jupytext": { + "formats": "ipynb,py:percent" + }, + "kernelspec": { + "display_name": "aniEnv", + "language": "python", + "name": "anienv" + }, + "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.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/notebooks/09_Combinatorial_Method_Usage_with_FingerPrint_Transformers.py b/notebooks/09_Combinatorial_Method_Usage_with_FingerPrint_Transformers.py new file mode 100644 index 0000000..4cfee5e --- /dev/null +++ b/notebooks/09_Combinatorial_Method_Usage_with_FingerPrint_Transformers.py @@ -0,0 +1,197 @@ +# --- +# jupyter: +# jupytext: +# formats: ipynb,py:percent +# text_representation: +# extension: .py +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.15.2 +# kernelspec: +# display_name: aniEnv +# language: python +# name: anienv +# --- + +# %% [markdown] +# # Example: Using Multiple Different Fingerprint Transformer +# +# In this notebook we will explore how to evaluate the performance of machine learning models depending on different fingerprint transformers (Featurization techniques). This is an example, that you easily could adapt for many different combinations of featurizers, optimizaiton and other modelling techniques. +# +# Following steps will happen: +# * Data Parsing +# * Pipeline Building +# * Training Phase +# * Analysis +# +# Authors: @VincentAlexanderScholz, @RiesBen +# +# ## Imports: +# First we will import all the stuff that we will need for our work. +# + +# %% +import os +import numpy as np +import pandas as pd +from time import time +from matplotlib import pyplot as plt + +from rdkit.Chem import PandasTools + +from sklearn.model_selection import GridSearchCV +from sklearn.pipeline import Pipeline, make_pipeline +from sklearn.linear_model import Ridge +from sklearn.model_selection import train_test_split + +from scikit_mol import fingerprints + + +# %% [markdown] +# ## Get Data: +# In this step we will check if the SLC6A4 data set is already present or needs to be downloaded. +# +# +# **WARNING:** The Dataset is a simple and very well selected + +# %% +full_set = False + +# if not present download example data +if full_set: + csv_file = "SLC6A4_active_excape_export.csv" + if not os.path.exists(csv_file): + import urllib.request + url = "https://ndownloader.figshare.com/files/25747817" + urllib.request.urlretrieve(url, csv_file) +else: + csv_file = '../tests/data/SLC6A4_active_excapedb_subset.csv' + +#Parse Database +data = pd.read_csv(csv_file) + +PandasTools.AddMoleculeColumnToFrame(data, smilesCol="SMILES") +print(f"{data.ROMol.isna().sum()} out of {len(data)} SMILES failed in conversion") + +# %% [markdown] +# ## Build Pipeline: +# In this stage we will build the Pipeline consisting of the featurization part (finger print transformers) and the model part (Ridge Regression). +# +# Note that the featurization in this section is an hyperparameter, living in `param_grid`, and the `"fp_transformer"` string is just a placeholder, being replaced during pipeline execution. +# +# This way we can define multiple different scenarios in `param_grid`, that allow us to rapidly explore different combinations of settings and methodologies. + +# %% + +regressor = Ridge() +optimization_pipe = Pipeline([("fp_transformer", "fp_transformer"), # this is a placeholder for different transformers + ("regressor", regressor)]) + +param_grid = [ # Here pass different Options and Approaches + { + "fp_transformer": [fingerprints.MorganFingerprintTransformer(), + fingerprints.AvalonFingerprintTransformer()], + "fp_transformer__nBits": [2**x for x in range(8,13)], + }, + { + "fp_transformer": [fingerprints.RDKitFingerprintTransformer(), + fingerprints.AtomPairFingerprintTransformer(), + fingerprints.MACCSKeysFingerprintTransformer()], + }, +] + +global_options = { + "regressor__alpha": np.linspace(0.1,1,5), +} + +[params.update(global_options) for params in param_grid] + +param_grid + +# %% [markdown] +# ## Train Model +# In this section, the combinatorial approaches are trained. + +# %% +# Split Data +mol_list_train, mol_list_test, y_train, y_test = train_test_split(data.ROMol, data.pXC50, random_state=0) + +# Define Search Process +grid = GridSearchCV(optimization_pipe, n_jobs=1, + param_grid=param_grid) + +# Train +t0 = time() +grid.fit(mol_list_train, y_train.values) +t1 = time() + +print(f'Runtime: {t1-t0:0.2F}') + +# %% [markdown] +# ## Analysis +# +# Now let's investigate our results from the training stage. Which one is the best finger print method for this data set? Which parameters are optimal? + +# %% +df_training_stats = pd.DataFrame(grid.cv_results_) +df_training_stats + +# %% +# Best Fingerprint Method / Performance +res_dict = {} +for i, row in df_training_stats.iterrows(): + fp_name = row['param_fp_transformer'] + if(fp_name in res_dict and row['mean_test_score'] > res_dict[fp_name]["mean_test_score"]): + res_dict[fp_name] = row.to_dict() + elif(not fp_name in res_dict): + res_dict[fp_name] = row.to_dict() + +df = pd.DataFrame(list(res_dict.values())) +df =df.sort_values(by="mean_test_score") + +#plot test score vs. approach +plt.figure(figsize=[14,5]) +plt.bar(range(len(df)), df.mean_test_score, yerr=df.std_test_score) +plt.xticks(range(len(df)), df.param_fp_transformer, rotation=90, fontsize=14) +plt.ylabel("mean score", fontsize=14) +plt.title("Best Model of Fingerprint Transformer Type", fontsize=18) +pass + + +# %% +# Best Fingerprint Method / Performance +from collections import defaultdict +res_dict = defaultdict(list) +for i, row in df_training_stats.iterrows(): + fp_name = row['param_fp_transformer'] + if("Morgan" in str(fp_name)): + res_dict[fp_name].append(row) + +for fp_type, rows in res_dict.items(): + df = pd.DataFrame(rows) + df =df.sort_values(by="mean_test_score") + + #plot test score vs. approach + xlabels = map(lambda x: "_".join(x), zip(df.param_fp_transformer__nBits.astype(str), df.param_regressor__alpha.astype(str))) + + + plt.figure(figsize=[14,5]) + plt.bar(range(len(df)), df.mean_test_score, yerr=df.std_test_score) + plt.xticks(range(len(df)), xlabels, rotation=90, fontsize=14) + plt.ylabel("mean score", fontsize=14) + plt.xlabel("bitsize_alpha", fontsize=14) + + plt.title("Fingerprint Transformer "+str(fp_type).split("(")[0]+" per Bitsize", fontsize=18) + pass + + +# %% +#plot ALL test score vs. approach +df =df_training_stats.sort_values(by="mean_test_score") + +plt.figure(figsize=[16,9]) +plt.bar(range(len(df)), df.mean_test_score, yerr=df.std_test_score) +plt.ylabel("mean score", fontsize=14) +plt.xticks(range(len(df))[::5], df.param_fp_transformer[::5], rotation=90, fontsize=14) +plt.title("test score vs. approach", fontsize=18) +pass