diff --git a/.gitignore b/.gitignore index 23fc73c..ecd6c35 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Specific data data/kinetic_models +wandb/ .DS_Store .idea/ diff --git a/data/experiments/all_data.xlsx b/data/experiments/all_data.xlsx new file mode 100644 index 0000000..b19a2b8 Binary files /dev/null and b/data/experiments/all_data.xlsx differ diff --git a/figures/ch_activation_bar_comparison_threshold.png b/figures/ch_activation_bar_comparison_threshold.png new file mode 100644 index 0000000..d5a81c7 Binary files /dev/null and b/figures/ch_activation_bar_comparison_threshold.png differ diff --git a/figures/ch_activation_optimization_curve_case_1.png b/figures/ch_activation_optimization_curve_case_1.png new file mode 100644 index 0000000..a805b81 Binary files /dev/null and b/figures/ch_activation_optimization_curve_case_1.png differ diff --git a/figures/ch_activation_optimization_curves.png b/figures/ch_activation_optimization_curves.png new file mode 100644 index 0000000..662ef40 Binary files /dev/null and b/figures/ch_activation_optimization_curves.png differ diff --git a/nbs/evaluation.ipynb b/nbs/evaluation.ipynb index ec2f770..767b9a9 100644 --- a/nbs/evaluation.ipynb +++ b/nbs/evaluation.ipynb @@ -16,18 +16,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], + "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" @@ -35,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 90, "metadata": {}, "outputs": [], "source": [ @@ -51,6 +42,7 @@ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", + "import matplotlib.patches as mpatches\n", "from typing import List\n", "from IPython.display import clear_output\n", "from copy import deepcopy\n", @@ -61,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -111,7 +103,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -279,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -312,29 +304,6 @@ "### Baumgartner" ] }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
NameTypeDescriptionValues
catalyst_smilescategorical, inputCatalyst including pre-catalyst and ligand8 levels
catalyst_loadingcontinuous, inputConcentration of pre_catalyst in molar[0.005,0.025]
temperaturecontinuous, inputReaction temperature in deg C[30.0,120.0]
timecontinuous, inputReaction time in seconds[60.0,600.0]
yldcontinuous, maximize objectiveReaction yield[0.0,100.0]
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "all_experiments[f\"results_baumgartner_suzuki_cotrain_reizman_suzuki_case_2\"][0].domain" - ] - }, { "cell_type": "code", "execution_count": 45, @@ -1466,6 +1435,273 @@ "source": [ "2.1*24*2.18" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Experiments" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "exp_dfs = [\n", + " pd.read_excel(\n", + " \"../data/experiments/all_data.xlsx\", \n", + " sheet_name=f\"Case study {case}\", \n", + " skiprows=1\n", + " )\n", + " for case in range(1,5)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [], + "source": [ + "colors = [\"#a50026\",\n", + "\"#d73027\",\n", + "\"#f46d43\",\n", + "\"#fdae61\",\n", + "\"#fee090\",\n", + "\"#ffffbf\",\n", + "# \"#e0f3f8\",\n", + "# \"#abd9e9\",\n", + "\"#74add1\",\n", + "\"#4575b4\",\n", + "\"#313695\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Case 1\n", + "Type Optimization\n", + "Solvent NMP (5)\n", + "Ligand Xphos (3)\n", + "ResT /min 53\n", + "Temp /°C 89\n", + "Mol% 9\n", + "Yield /% 74.640254\n", + "Name: 20, dtype: object\n", + "Case 2\n", + "Type Optimization\n", + "Solvent MeCN\n", + "Ligand JohnPhos\n", + "ResT /min 28\n", + "Temp /°C 127\n", + "Mol% 5\n", + "Yield /% 84.9\n", + "Name: 10, dtype: object\n", + "Case 3\n", + "Type Optimization\n", + "Solvent NMP\n", + "Ligand Xphos\n", + "ResT /min 60\n", + "Temp /°C 96\n", + "Mol% 9\n", + "Yield /% 98.155295\n", + "Name: 4, dtype: object\n", + "Case 4\n", + "Type Optimization\n", + "Solvent DMSO\n", + "Ligand DPEPhos\n", + "ResT /min 60\n", + "Temp /°C 150\n", + "Mol% 10\n", + "Yield /% 82.21223\n", + "Name: 8, dtype: object\n" + ] + } + ], + "source": [ + "for i, exp_df in enumerate(exp_dfs):\n", + " print(f\"Case {i+1}\")\n", + " print(exp_df.iloc[exp_df[\"Yield /%\"].idxmax(axis=0)])" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Xphos', 'JohnPhos', 'SPhos', 'DPEPhos'], dtype=object)" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exp_df[\"Ligand\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, figsize=(5,5))\n", + "axis_fontsize=14\n", + "exp_dfs[0].cummax().plot(\n", + " y=\"Yield /%\", ax=ax, label=f\"Case 1\", c=colors[0],linewidth=4.0)\n", + "xlabels = np.arange(0, 21, 5)\n", + "ax.set_xticks(xlabels)\n", + "ax.tick_params(direction=\"in\")\n", + "ax.set_xlabel(\"Number of experiments\", fontsize=21)\n", + "ax.set_ylabel(\"Best Yield (%)\", fontsize=21)\n", + "ax.set_xlim(0,20)\n", + "ax.tick_params('y', labelsize=axis_fontsize)\n", + "xlabels = np.arange(0, 21, 5)\n", + "ax.set_xticks(xlabels)\n", + "ax.set_xticklabels(xlabels, fontsize=axis_fontsize)\n", + "ax.set_ylim(0,100)\n", + "fig.savefig(\n", + " \"../figures/ch_activation_optimization_curve_case_1.png\",\n", + " dpi=300, \n", + " transparent=True,\n", + " bbox_inches=\"tight\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVwAAAFMCAYAAACHwAS3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAABAuklEQVR4nO2dd3hc1dG431lpJVmSqyyMC9gGA8YGDMG0QLDpoYUSCCUhwMcXA6ElAX4hJgESAoFAqCEQSGghFAf4IPRqE0I3YIyxjW3ABne5q2u1O78/7l1rq3ZXW7U77/Psszpzzz139upqdHbOnBlRVQzDMIzs48m3AoZhGKWCGVzDMIwcYQbXMAwjR5jBNQzDyBFmcA3DMHKEGVzDMIwcYQbXMAwjR+Td4IpItYjsKiInicioEPk4EXlGRK4TkWdFZGQyxwzDMAqVvBtcYD/gAuBRYKcQ+TTgMVW9DHgTuD/JY4ZhGAVJ3g2uqr4MXB0qE5E9gfHADFf0BjBZRLbu7lhOFDYMw+gheTe4cZgA+IBlbnuR+75bgmOGYRgFS3m+FYjDYKBFuxI9NLrv9QmORVFbW6uh+SIGDx5MfX3MroZhGEnz4YcfrlHVlIxJoRrcSALuu6R4jLFjxzJz5sysKGUYRukiIktSPadQXQprgWoRCRrRfu57Q4JjJYFqAN34Aepbl29VDMNIgUKd4c4CvMBWwNfAGFf+MTCkm2OlQfty2PA2bHgb9dZD3/FI3wn51sowjAQUygw30h3wATAXmOy2JwEzVHVJgmOlQfPnXT/7GqB9Zf50MQwjafI+wxWRY4FT3eZFIjJUVe8RkZOA60VkHE4Y2JkAqqrxjpUCqn5oWRgurNk+P8oYJYPP52Pp0qW0tbXlW5WcU1VVxYgRI/B6vWmPlXeDq6pPAU/FkM8BjoxzTtxjRU/rEgi0d7U9VVBlIchGdlm6dCl9+/Zl1KhRdC2fFD+qytq1a1m6dCmjR49Oe7xCcSkYyRLqTgCo3g6RsvzoYpQMbW1t1NXVlZSxBRAR6urqMjazN4Pbi9CAD1q/DBfW7JAfZYySo9SMbZBMfm4zuL2J1i9BO7vaZbVQOSx/+hiGkRJ59+EaKRDpTqjZoWRnHUbpsWjRIm699VZ22WUXmpubefHFF3nxxRfTHnfevHn87W9/Y9iwYVx88cUZ0DQ+ZnB7CepvdRbMQjF3gpFjHpbsPnOn6ucx5c3NzRxyyCFMnz6dUaNGAc6CVibYcccdGTduHNOnT8/IeN1hBre30LKIrl3MQPlA8A7OmzqGkUuee+45Ro8evdnYAvz85z8H4O677+abb75h+fLlHH/88Rx55JFceeWVbLnllrz11ls89NBDzJ07lxtuuIHtttuO5uZmrrnmmrDxy8pys/BsPtzegrkTjBJm8eLFDBsWe73C4/Fw5ZVXcvjhh/PEE08AMG3aNI466ih+9rOfAXDFFVfwox/9iKlTp/LUU0+xYsWKXKkermtermqkhHY2QvuycKG5E4wSYujQoaxatSpM1tnZid/vp76+nuuvv56FCxcSCDjfAi+66CL22msv7rzzTnw+H/PmzeOtt97irrvuYuedd8bv9+fjY5hLoVcQubOsYgjiHZAXVYzSJp6PNdscdthhXHrppSxZsoSRI52KWnfddRfHH388Z5xxBp9//jkffvgh8+fPp7W1le22244FCxZw8MEHM2fOHEaMGMH+++/P5MmTOfrooxk8OD/uODO4vYEY7gTDKCW22GILnnrqKa6++mr22msvNm3axGuvvcbZZ5/NMcccw/nnn8+ECRN4//33WblyJf/4xz9YtGgRu+66K+PGjeP3v/89l19+Oc8//zx1dXX88pe/3Dz2vHnzePnll5k7dy7Tp0/ngAMOyNrnkEyt9BUqEydO1N6cD1d962H5g+HC4Wch5bX5UcgoSebNm8eOO+6YbzXyRqzPLyIfqurEVMYxH26hEzm7rRphxtYweilmcAsYVY2RO8HcCYbRWzGDW8h0rIbODSECD1SPidfbMIwCxwxuIdOyILzdZxRSVpUfXQzDSBszuAWK406IMLgWnWAYvRozuIVK+zLwN3W1xQt90k+AbBhG/rA43EIlarFsG8STfokPw+itZCtb2H333bc5F8PRRx/NkUdmr5iMGdwCxKlbtihcaO4EowBovvDgrI5fc9ursa+bpWxhPp+Pm2++mdmzZzNnzhxOPvlkM7glR+sSCISU9LC6ZUaJk61sYV6vl//+978AbNiwgb59+2b1c5gPtxCxumWGEUY2s4X169cPVeW2227jN7/5TVY/hxncAsPqlhlGNNnOFnb11VdzzjnncMQRR2T1c5hLodCwumVGARPPx5ptspkt7OGHH+a4445j55135oMPPmDMmDEMHDgwK5/D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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, figsize=(5,5))\n", + "axis_fontsize=14\n", + "# ls = [\"solid\", \"dotted\", \"dashed\", \"dashdot\"]\n", + "# colors = [\"#a50026\"] + [\"#313695\"]*3\n", + "for i, exp_df in enumerate(exp_dfs):\n", + " exp_df.cummax().plot(\n", + " y=\"Yield /%\", \n", + " ax=ax, \n", + " label=f\"Case {i+1}\", \n", + " c=colors[2*i],\n", + " # linestyle=ls[i],\n", + " linewidth=4.0\n", + " )\n", + "xlabels = np.arange(0, 21, 5)\n", + "ax.set_xticks(xlabels)\n", + "ax.tick_params(direction=\"in\")\n", + "ax.set_xlabel(\"Number of experiments\", fontsize=21)\n", + "ax.set_ylabel(\"Best Yield (%)\", fontsize=21)\n", + "ax.set_xlim(0,20)\n", + "ax.tick_params('y', labelsize=axis_fontsize)\n", + "xlabels = np.arange(0, 21, 5)\n", + "ax.set_xticks(xlabels)\n", + "ax.set_xticklabels(xlabels, fontsize=axis_fontsize)\n", + "ax.set_ylim(0,100)\n", + "fig.savefig(\n", + " \"../figures/ch_activation_optimization_curves.png\",\n", + " dpi=300, \n", + " transparent=True,\n", + " bbox_inches=\"tight\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7yCJ3r1707FjR+aeXs2qERHMnDmT999/n3feeYdevXrl2t7NSmZWN5999hkrrLACnTp1cmKoMUl06tSJFVZYgc8+y39pcScHM6urvM0dls/8vr5+V8zMrISTg5mZlXCHtJm1Krcstymfvz+pxfbXZdml2e29f+fa5qmnnuK8885j5ZVX5s0336Rdu3Z06NCBN998ky233JLHHnuM0aNHc8wxx/Dee+9xzTXXMGHCBM444wzOP/98NtlkE7beemvGjBnDRx99xLBhw1h11VW/rv/GG2/k2muvZa211mLWrFm88cYbHHnkkQwePLjWT78iJwcza1VaMjHMz/4+++wztttuOx588EH69evH7NmzGTBgAH369OGBBx6gW7dunHLKKYwdO5YzzjgDgI4dO9KhQwf+/Oc/c/7557PXXntxxBFHALDddttx8MEHM3LkSADOP/98fve73/Hcc8/Rs2dPAF588UUGDBjAtddey6677lrDZ1+Zm5XMzHJ46aWXmDJlyte/9Nu1a8cJJ5zAbrvtRrdu3cpus88++9ClS5eyy1ZffXUmTcoS1LRp0zjhhBP4yU9+8nViAOjbty877bQTRx11FLNnz67xMyrPycHMLIcePbJLHxx22GFfDxHdZZdd2HHH4qni5thss83KJodp06Zx7733cvDBBwPwwAMPMH36dLbccsuSdQcPHsw777zDs88+W4un0SgnBzOzHFZZZRVOPvlkhg8fzsorr8zpp5/ORx99lKuOe+65h6FDh9K3b1+22WYbfvKTnwDw3//+F4DllluuZJsVVlgBgPHjx1f3BJrIycHMLKdTTz2VJ598ks0224yTTz6ZPn368Pbbbzd5++23357zzz+fMWPG8Nxzz7H55pvP1VzUGk4IdHIwM8uhYQ6ojTfemNtuu42bb76ZiRMnMmzYsNx1LbHEEhxxxBE899xzPP/88/Tu3RuA999/v2TdiROzqxasssoq8x98Dk4OZmY53HnnnfzrX//6+vFuu+3GhhtuyLRp0+arvoZO7C5dujBkyBC6du3KQw89VLLeAw88wEorrcSGG244X/vJy8nBzCyns8466+tmoM8++4zx48ez0047NbpdwzZfffXV12W33XYbffr0Yc0112SppZbijDPO4LLLLpvr6GHMmDHcddddXHDBBS3W5OTzHMzMcthkk00YMWIEu+++O2us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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "threshold = 74.0\n", + "num_threshold = [\n", + " exp_df[exp_df[\"Yield /%\"]>threshold].index[0]\n", + " for exp_df in exp_dfs\n", + "]\n", + "axis_fontsize=14\n", + "label_fontsize=18\n", + "fig, ax = plt.subplots(1)\n", + "barlist = ax.bar(np.arange(1,5),num_threshold, color=\"#313695\")\n", + "barlist[0].set_color(\"#a50026\")\n", + "xlabels = np.arange(1,5)\n", + "ax.set_title(\n", + " f\"Experiments to reach {threshold:.0f}% yield\", fontsize=label_fontsize\n", + ")\n", + "ax.set_xticks(xlabels)\n", + "ax.set_xticklabels(xlabels, fontsize=axis_fontsize)\n", + "ylabels = np.arange(0,25,4)\n", + "ax.set_yticks(ylabels)\n", + "ax.set_yticklabels(ylabels, fontsize=axis_fontsize)\n", + "ax.set_xlabel(\"Case\", fontsize=label_fontsize)\n", + "ax.set_ylabel(\"Number experiments\", fontsize=label_fontsize)\n", + "stbo = mpatches.Patch(label=\"STBO\", color=\"#a50026\")\n", + "mtbo = mpatches.Patch(label=\"MTBO\", color=\"#313695\")\n", + "ax.legend(handles=[stbo, mtbo], fontsize=axis_fontsize)\n", + "fig.savefig(\n", + " \"../figures/ch_activation_bar_comparison_threshold.png\",\n", + " dpi=300, \n", + " transparent=True,\n", + " bbox_inches=\"tight\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {