From 37891e10f1d71cabd561bc0e5fc3951a34256b42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Can=20=C3=96zkan?= <128815525+canozkan42@users.noreply.github.com> Date: Wed, 27 Mar 2024 23:00:29 +0000 Subject: [PATCH] simulations with multiple parameter sets --- AA1000_simulation_10MC_50exp_1batch.png | Bin 0 -> 61511 bytes can_baybe-inhibitor.ipynb | 992 ++++++++++++++++++------ run_impute_mode.png | Bin 0 -> 58164 bytes 3 files changed, 769 insertions(+), 223 deletions(-) create mode 100644 AA1000_simulation_10MC_50exp_1batch.png create mode 100644 run_impute_mode.png diff --git a/AA1000_simulation_10MC_50exp_1batch.png b/AA1000_simulation_10MC_50exp_1batch.png new file mode 100644 index 0000000000000000000000000000000000000000..4e7e4296ce0b63df720aafc46bb3478f087c365b GIT binary patch literal 61511 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 literal 0 HcmV?d00001 diff --git a/can_baybe-inhibitor.ipynb b/can_baybe-inhibitor.ipynb index 26e7ce6..271be05 100644 --- a/can_baybe-inhibitor.ipynb +++ b/can_baybe-inhibitor.ipynb @@ -30,18 +30,176 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 114, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/vscode/.local/lib/python3.10/site-packages/baybe/telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno -2] Name or service not known)\"))\n", - " warnings.warn(\n", - "/home/vscode/.local/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] + "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", + "
SMILESTime_hpHInhib_Concentrat_MSalt_Concentrat_MEfficiency
0C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O0.02.05.000000e-07253.85
1C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O0.02.01.000000e-06258.55
2C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O0.02.05.000000e-06267.40
3C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O0.02.01.000000e-05286.65
4C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O0.02.05.000000e-05273.90
.....................
303S=c1sc2c([nH]1)cccc2384.0-0.64.200000e-03070.60
304S=c1sc2c([nH]1)cccc2384.0-0.65.300000e-03079.77
305S=c1sc2c([nH]1)cccc2384.0-0.66.500000e-03076.72
306S=c1sc2c([nH]1)cccc2384.0-0.67.500000e-03075.44
307S=c1sc2c([nH]1)cccc2384.0-0.68.500000e-03077.22
\n", + "

308 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " SMILES Time_h pH Inhib_Concentrat_M \\\n", + "0 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 0.0 2.0 5.000000e-07 \n", + "1 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 0.0 2.0 1.000000e-06 \n", + "2 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 0.0 2.0 5.000000e-06 \n", + "3 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 0.0 2.0 1.000000e-05 \n", + "4 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 0.0 2.0 5.000000e-05 \n", + ".. ... ... ... ... \n", + "303 S=c1sc2c([nH]1)cccc2 384.0 -0.6 4.200000e-03 \n", + "304 S=c1sc2c([nH]1)cccc2 384.0 -0.6 5.300000e-03 \n", + "305 S=c1sc2c([nH]1)cccc2 384.0 -0.6 6.500000e-03 \n", + "306 S=c1sc2c([nH]1)cccc2 384.0 -0.6 7.500000e-03 \n", + "307 S=c1sc2c([nH]1)cccc2 384.0 -0.6 8.500000e-03 \n", + "\n", + " Salt_Concentrat_M Efficiency \n", + "0 2 53.85 \n", + "1 2 58.55 \n", + "2 2 67.40 \n", + "3 2 86.65 \n", + "4 2 73.90 \n", + ".. ... ... \n", + "303 0 70.60 \n", + "304 0 79.77 \n", + "305 0 76.72 \n", + "306 0 75.44 \n", + "307 0 77.22 \n", + "\n", + "[308 rows x 6 columns]" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -59,29 +217,30 @@ "from baybe.simulation import simulate_scenarios\n", "from baybe.targets import NumericalTarget\n", "\n", - "df_AA2024 = pd.read_excel('data/filtered_AA2024.xlsx')\n", - "df_AA1000 = pd.read_excel('data/filtered_AA1000.xlsx')\n", - "df_Al = pd.read_excel('data/filtered_Al.xlsx')\n", + "df_AA2024 = pd.read_excel('data/averaged_filtered_AA2024.xlsx')\n", + "df_AA1000 = pd.read_excel('data/averaged_filtered_AA1000.xlsx')\n", + "df_Al = pd.read_excel('data/averaged_filtered_Al.xlsx')\n", "\n", - "df_active = df_AA2024" + "df_active = df_AA1000\n", + "df_active" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 115, "metadata": {}, "outputs": [], "source": [ - "SMOKE_TEST = \"SMOKE_TEST\" in os.environ\n", + "# SMOKE_TEST = \"SMOKE_TEST\" in os.environ\n", "\n", - "N_MC_ITERATIONS = 2 if SMOKE_TEST else 5\n", - "N_DOE_ITERATIONS = 2 if SMOKE_TEST else 5\n", - "BATCH_SIZE = 1 if SMOKE_TEST else 3" + "# N_MC_ITERATIONS = 2 if SMOKE_TEST else 5\n", + "# N_DOE_ITERATIONS = 2 if SMOKE_TEST else 5\n", + "# BATCH_SIZE = 1 if SMOKE_TEST else 3" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 116, "metadata": {}, "outputs": [], "source": [ @@ -90,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 117, "metadata": {}, "outputs": [], "source": [ @@ -105,27 +264,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 118, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[NumericalDiscreteParameter(name='Time_h', encoding=None, _values=[0.5, 1.0, 2.0, 3.0, 6.0, 24.0, 48.0, 72.0, 96.0, 120.0, 144.0, 168.0, 192.0, 240.0, 288.0, 336.0, 360.0, 384.0, 432.0, 480.0, 528.0, 576.0, 600.0, 624.0, 672.0], tolerance=0.0),\n", - " NumericalDiscreteParameter(name='pH', encoding=None, _values=[0.0, 3.3, 4.0, 4.4, 5.4, 5.5, 5.6, 7.0, 10.0], tolerance=0.0),\n", - " NumericalDiscreteParameter(name='Inhib_Concentrat_M', encoding=None, _values=[1e-05, 5e-05, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0008, 0.001, 0.0012, 0.0018, 0.0024, 0.003, 0.005, 0.01, 0.011, 0.021, 0.022, 0.031, 0.033, 0.042, 0.044, 0.05, 0.1], tolerance=0.0),\n", - " NumericalDiscreteParameter(name='Salt_Concentrat_M', encoding=None, _values=[0.0, 0.01, 0.05, 0.1, 0.5, 0.6], tolerance=0.0),\n", - " SubstanceParameter(name='SMILES', data={'COCCOC(=O)OCSc1nc2c(s1)cccc2': 'COCCOC(=O)OCSc1nc2c(s1)cccc2', 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O': 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O', 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O': 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O', 'On1nnc2c1cccc2': 'On1nnc2c1cccc2', 'c1ncn[nH]1': 'c1ncn[nH]1', 'Sc1n[nH]cn1': 'Sc1n[nH]cn1', 'S[C]1NC2=C[CH]C=NC2=N1': 'S[C]1NC2=C[CH]C=NC2=N1', 'S=c1[nH]c2c([nH]1)nccn2': 'S=c1[nH]c2c([nH]1)nccn2', 'Sc1ncc[nH]1': 'Sc1ncc[nH]1', 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1': 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1', 'CCSc1nnc(s1)N': 'CCSc1nnc(s1)N', 'CSc1nnc(s1)N': 'CSc1nnc(s1)N', 'Cc1ccc2c(c1)nc([nH]2)S': 'Cc1ccc2c(c1)nc([nH]2)S', 'OC(=O)CS': 'OC(=O)CS', 'Sc1nc2c([nH]1)cccc2': 'Sc1nc2c([nH]1)cccc2', 'OC(=O)c1ccccc1S': 'OC(=O)c1ccccc1S', 'S=c1sc2c([nH]1)cccc2': 'S=c1sc2c([nH]1)cccc2', 'OC(=O)c1cccnc1S': 'OC(=O)c1cccnc1S', 'Sc1ncccn1': 'Sc1ncccn1', 'c1ccc(nc1)c1ccccn1': 'c1ccc(nc1)c1ccccn1', 'Sc1nnc(s1)S': 'Sc1nnc(s1)S', 'Nc1cc(S)nc(n1)N': 'Nc1cc(S)nc(n1)N', 'Nc1nc([nH]n1)C(=O)O': 'Nc1nc([nH]n1)C(=O)O', 'Nc1n[nH]cn1': 'Nc1n[nH]cn1', 'OC(=O)c1n[nH]c(n1)N': 'OC(=O)c1n[nH]c(n1)N', 'Nc1n[nH]c(n1)S': 'Nc1n[nH]c(n1)S', 'CS[C]1N[N]C(=N1)N': 'CS[C]1N[N]C(=N1)N', 'C1=CC(=CC(=C1)S)C(=O)O': 'C1=CC(=CC(=C1)S)C(=O)O', 'OC(=O)CCS': 'OC(=O)CCS', 'Oc1ccccc1c1nnc([nH]1)S': 'Oc1ccccc1c1nnc([nH]1)S', 'Nn1cnnc1': 'Nn1cnnc1', 'Nc1ccnc(n1)S': 'Nc1ccnc(n1)S', 'Nn1c(NN)nnc1S': 'Nn1c(NN)nnc1S', 'Nn1c(S)nnc1c1ccccc1': 'Nn1c(S)nnc1c1ccccc1', 'Sc1nc(N)c2c(n1)[nH]nc2': 'Sc1nc(N)c2c(n1)[nH]nc2', 'Oc1ccc(cc1)C(=O)O': 'Oc1ccc(cc1)C(=O)O', 'OC(=O)c1ccc(cc1)S': 'OC(=O)c1ccc(cc1)S', 'Cn1cnnc1S': 'Cn1cnnc1S', 'Sc1nc(N)c(c(n1)S)N': 'Sc1nc(N)c(c(n1)S)N', 'Nc1ncncc1N': 'Nc1ncncc1N', 'Nc1cc(N)nc(n1)S': 'Nc1cc(N)nc(n1)S', 'Cc1cc(C)nc(n1)S': 'Cc1cc(C)nc(n1)S', 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1': 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1', 'COc1cccc(c1)c1n[nH]c(=S)[nH]1': 'COc1cccc(c1)c1n[nH]c(=S)[nH]1', 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1': 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1', 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]': 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]', 'S=c1[nH]nc([nH]1)c1ccco1': 'S=c1[nH]nc([nH]1)c1ccco1', 'S=c1[nH]nc([nH]1)c1cccnc1': 'S=c1[nH]nc([nH]1)c1cccnc1', 'S=c1[nH]nc([nH]1)c1ccncc1': 'S=c1[nH]nc([nH]1)c1ccncc1', 'Nc1n[nH]c(=S)s1': 'Nc1n[nH]c(=S)s1', 'Cc1nsc(c1)N': 'Cc1nsc(c1)N', 'Clc1ccc2c(c1)[nH]c(n2)S': 'Clc1ccc2c(c1)[nH]c(n2)S', 'CCOc1ccc2c(c1)nc([nH]2)S': 'CCOc1ccc2c(c1)nc([nH]2)S', 'Cn1nnnc1S': 'Cn1nnnc1S', 'OC(=O)Cn1nnnc1S': 'OC(=O)Cn1nnnc1S', 'COc1ccc2c(c1)[nH]c(=S)[nH]2': 'COc1ccc2c(c1)[nH]c(=S)[nH]2', 'Cc1n[nH]c(=S)s1': 'Cc1n[nH]c(=S)s1', 'ClC([C]1N[N]C=N1)(Cl)Cl': 'ClC([C]1N[N]C=N1)(Cl)Cl', 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl': 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl', 'CSc1[nH]c2c(n1)cc(c(c2)C)C': 'CSc1[nH]c2c(n1)cc(c(c2)C)C', 'Nc1ccc2c(c1)sc(=S)[nH]2': 'Nc1ccc2c(c1)sc(=S)[nH]2', 'OC(=O)c1ccc(=S)[nH]c1': 'OC(=O)c1ccc(=S)[nH]c1', 'Oc1cccc2c1nccc2': 'Oc1cccc2c1nccc2', 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C': 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C', 'S=c1[nH]c2c([nH]1)cncn2': 'S=c1[nH]c2c([nH]1)cncn2', 'CC(=O)O': 'CC(=O)O', 'OC(=O)CCCCC(=O)O': 'OC(=O)CCCCC(=O)O', 'OC(=O)c1ccccc1': 'OC(=O)c1ccccc1', 'c1ccc2c(c1)[nH]nn2': 'c1ccc2c(c1)[nH]nn2', 'OC(=O)c1ccc(cc1)c1ccccc1': 'OC(=O)c1ccc(cc1)c1ccccc1', 'OC(=O)/C=C/c1ccccc1': 'OC(=O)/C=C/c1ccccc1', 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O': 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O', 'O[C@H]1C(=O)OCC1(C)C': 'O[C@H]1C(=O)OCC1(C)C', 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O': 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O', 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O', 'CC(=O)SSC(=O)C': 'CC(=O)SSC(=O)C', 'CCCCOP(=O)(OCCCC)O': 'CCCCOP(=O)(OCCCC)O', 'CCN(C(=S)S)CC': 'CCN(C(=S)S)CC', 'O/N=C(/C(=N/O)/C)\\\\C': 'O/N=C(/C(=N/O)/C)\\\\C', 'CCCCCCCCCCCCc1ccccc1S([O])([O])O': 'CCCCCCCCCCCCc1ccccc1S([O])([O])O', 'CCCCCCCCCCCCOS(=O)(=O)O': 'CCCCCCCCCCCCOS(=O)(=O)O', 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O': 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O', 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1': 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1', 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O', 'OCC(CO)O': 'OCC(CO)O', 'NCC(=O)O': 'NCC(=O)O', 'OC(=O)CCCCCCCCCCCCCCC(=O)O': 'OC(=O)CCCCCCCCCCCCCCC(=O)O', 'C1N2CN3CN1CN(C2)C3': 'C1N2CN3CN1CN(C2)C3', 'NO': 'NO', 'COC(=O)CCCC1=CNC2=CC=CC=C21': 'COC(=O)CCCC1=CNC2=CC=CC=C21', 'OC(=O)c1ccncc1': 'OC(=O)c1ccncc1', 'C1COCCN1CCCS(=O)(=O)O': 'C1COCCN1CCCS(=O)(=O)O', 'OC(=O)c1cccnc1': 'OC(=O)c1cccnc1', 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O': 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O', 'C(=O)(C(=O)[O-])[O-]': 'C(=O)(C(=O)[O-])[O-]', 'OC(=O)c1ccc(cc1)N': 'OC(=O)c1ccc(cc1)N', 'Oc1ccc(cc1)S([O])([O])O': 'Oc1ccc(cc1)S([O])([O])O', 'OC(=O)c1ccccn1': 'OC(=O)c1ccccn1', 'OC(=O)c1ccccc1O': 'OC(=O)c1ccccc1O', 'CCCCCCCCCCCCCCCCCC(=O)O': 'CCCCCCCCCCCCCCCCCC(=O)O', 'SC#N': 'SC#N', 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]': 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]', '[O-]S(=O)[O-].[Na+].[Na+]': '[O-]S(=O)[O-].[Na+].[Na+]', 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C': 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C', 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C': 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C', 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]': 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]', '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]': '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]', '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]': '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]', '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]': '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]', '[Cl-].[Cl-].[Cl-].[Ce+3]': '[Cl-].[Cl-].[Cl-].[Ce+3]', 'CNCC(C1=CC(=CC=C1)O)O': 'CNCC(C1=CC(=CC=C1)O)O', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]', 'C1=CC=C(C(=C1)C=NNC(=S)N)O': 'C1=CC=C(C(=C1)C=NNC(=S)N)O', 'C1=CC(=C(C=C1O)O)C=NNC(=S)N': 'C1=CC(=C(C=C1O)O)C=NNC(=S)N', 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O': 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O', 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O': 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O', 'C1=CC2=NNN=C2C=C1Cl': 'C1=CC2=NNN=C2C=C1Cl', 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]': 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]', 'COC(=O)n1nnc2ccccc12': 'COC(=O)n1nnc2ccccc12'}, decorrelate=0.7, encoding=)]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# parameters\n", - "parameters = [\n", + "\n", + "# mordred\n", + "parameters_mordred = [\n", "NumericalDiscreteParameter(\n", " name=\"Time_h\",\n", " values=df_active['Time_h'].unique(),\n", @@ -153,208 +299,295 @@ " decorrelate=0.7, # optional\n", " ) \n", " ]\n", - "parameters" + "\n", + "# morgan fingerprints\n", + "parameters_morgan_fp = [\n", + "NumericalDiscreteParameter(\n", + " name=\"Time_h\",\n", + " values=df_active['Time_h'].unique(),\n", + " # tolerance = 0.004, assume certain experimental noise for each parameter measurement?\n", + "),\n", + "NumericalDiscreteParameter(\n", + " name=\"pH\",\n", + " values=df_active['pH'].unique(),\n", + " # tolerance = 0.004\n", + " ), \n", + "NumericalDiscreteParameter( # Set this as continuous, the values seem quite small?\n", + " name=\"Inhib_Concentrat_M\",\n", + " values= df_active['Inhib_Concentrat_M'].unique(),\n", + " # tolerance = 0.004\n", + " ),\n", + "NumericalDiscreteParameter(\n", + " name=\"Salt_Concentrat_M\",\n", + " values=df_active['Salt_Concentrat_M'].unique(),\n", + " # tolerance = 0.004\n", + " ),\n", + "SubstanceParameter(\n", + " name=\"SMILES\",\n", + " data=smiles_dict,\n", + " encoding=\"MORGAN_FP\", # optional\n", + " decorrelate=0.7, # optional\n", + " ) \n", + " ]\n", + "\n", + "# rdkit\n", + "parameters_rdkit = [\n", + "NumericalDiscreteParameter(\n", + " name=\"Time_h\",\n", + " values=df_active['Time_h'].unique(),\n", + " # tolerance = 0.004, assume certain experimental noise for each parameter measurement?\n", + "),\n", + "NumericalDiscreteParameter(\n", + " name=\"pH\",\n", + " values=df_active['pH'].unique(),\n", + " # tolerance = 0.004\n", + " ), \n", + "NumericalDiscreteParameter( # Set this as continuous, the values seem quite small?\n", + " name=\"Inhib_Concentrat_M\",\n", + " values= df_active['Inhib_Concentrat_M'].unique(),\n", + " # tolerance = 0.004\n", + " ),\n", + "NumericalDiscreteParameter(\n", + " name=\"Salt_Concentrat_M\",\n", + " values=df_active['Salt_Concentrat_M'].unique(),\n", + " # tolerance = 0.004\n", + " ),\n", + "SubstanceParameter(\n", + " name=\"SMILES\",\n", + " data=smiles_dict,\n", + " encoding=\"RDKIT\", # optional\n", + " decorrelate=0.7, # optional\n", + " ) \n", + " ]\n" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 119, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Print test 1\n" - ] - } - ], + "outputs": [], "source": [ "df_no_target = lookup.drop('Efficiency', axis=1)\n", "\n", - "searchspace = SearchSpace.from_dataframe(df = df_no_target, parameters=parameters)\n", - "print('Print test 1')\n", + "# searchspace = SearchSpace.from_dataframe(df = df_no_target, parameters=parameters)\n", + "# print('Print test 1')\n", + "# objective = Objective(\n", + "# mode=\"SINGLE\", targets=[NumericalTarget(name=\"Efficiency\", mode=\"MAX\")]\n", + "# )\n", + "\n", + "\n", + "searchspace_mordred = SearchSpace.from_dataframe(df = df_no_target, parameters=parameters_mordred)\n", + "\n", + "\n", + "searchspace_morgan = SearchSpace.from_dataframe(df = df_no_target, parameters=parameters_morgan_fp)\n", + "\n", + "\n", + "searchspace_rdkit = SearchSpace.from_dataframe(df = df_no_target, parameters=parameters_rdkit)\n", + "\n", + "\n", "objective = Objective(\n", " mode=\"SINGLE\", targets=[NumericalTarget(name=\"Efficiency\", mode=\"MAX\")]\n", - ")" + ")\n" ] }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Print test 2\n" - ] - } - ], - "source": [ - "print('Print test 2')" - ] - }, - { - "cell_type": "code", - "execution_count": 9, + "execution_count": 120, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "SearchSpace(discrete=SubspaceDiscrete(parameters=[NumericalDiscreteParameter(name='Time_h', encoding=None, _values=[0.5, 1.0, 2.0, 3.0, 6.0, 24.0, 48.0, 72.0, 96.0, 120.0, 144.0, 168.0, 192.0, 240.0, 288.0, 336.0, 360.0, 384.0, 432.0, 480.0, 528.0, 576.0, 600.0, 624.0, 672.0], tolerance=0.0), NumericalDiscreteParameter(name='pH', encoding=None, _values=[0.0, 3.3, 4.0, 4.4, 5.4, 5.5, 5.6, 7.0, 10.0], tolerance=0.0), NumericalDiscreteParameter(name='Inhib_Concentrat_M', encoding=None, _values=[1e-05, 5e-05, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0008, 0.001, 0.0012, 0.0018, 0.0024, 0.003, 0.005, 0.01, 0.011, 0.021, 0.022, 0.031, 0.033, 0.042, 0.044, 0.05, 0.1], tolerance=0.0), NumericalDiscreteParameter(name='Salt_Concentrat_M', encoding=None, _values=[0.0, 0.01, 0.05, 0.1, 0.5, 0.6], tolerance=0.0), SubstanceParameter(name='SMILES', data={'COCCOC(=O)OCSc1nc2c(s1)cccc2': 'COCCOC(=O)OCSc1nc2c(s1)cccc2', 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O': 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O', 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O': 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O', 'On1nnc2c1cccc2': 'On1nnc2c1cccc2', 'c1ncn[nH]1': 'c1ncn[nH]1', 'Sc1n[nH]cn1': 'Sc1n[nH]cn1', 'S[C]1NC2=C[CH]C=NC2=N1': 'S[C]1NC2=C[CH]C=NC2=N1', 'S=c1[nH]c2c([nH]1)nccn2': 'S=c1[nH]c2c([nH]1)nccn2', 'Sc1ncc[nH]1': 'Sc1ncc[nH]1', 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1': 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1', 'CCSc1nnc(s1)N': 'CCSc1nnc(s1)N', 'CSc1nnc(s1)N': 'CSc1nnc(s1)N', 'Cc1ccc2c(c1)nc([nH]2)S': 'Cc1ccc2c(c1)nc([nH]2)S', 'OC(=O)CS': 'OC(=O)CS', 'Sc1nc2c([nH]1)cccc2': 'Sc1nc2c([nH]1)cccc2', 'OC(=O)c1ccccc1S': 'OC(=O)c1ccccc1S', 'S=c1sc2c([nH]1)cccc2': 'S=c1sc2c([nH]1)cccc2', 'OC(=O)c1cccnc1S': 'OC(=O)c1cccnc1S', 'Sc1ncccn1': 'Sc1ncccn1', 'c1ccc(nc1)c1ccccn1': 'c1ccc(nc1)c1ccccn1', 'Sc1nnc(s1)S': 'Sc1nnc(s1)S', 'Nc1cc(S)nc(n1)N': 'Nc1cc(S)nc(n1)N', 'Nc1nc([nH]n1)C(=O)O': 'Nc1nc([nH]n1)C(=O)O', 'Nc1n[nH]cn1': 'Nc1n[nH]cn1', 'OC(=O)c1n[nH]c(n1)N': 'OC(=O)c1n[nH]c(n1)N', 'Nc1n[nH]c(n1)S': 'Nc1n[nH]c(n1)S', 'CS[C]1N[N]C(=N1)N': 'CS[C]1N[N]C(=N1)N', 'C1=CC(=CC(=C1)S)C(=O)O': 'C1=CC(=CC(=C1)S)C(=O)O', 'OC(=O)CCS': 'OC(=O)CCS', 'Oc1ccccc1c1nnc([nH]1)S': 'Oc1ccccc1c1nnc([nH]1)S', 'Nn1cnnc1': 'Nn1cnnc1', 'Nc1ccnc(n1)S': 'Nc1ccnc(n1)S', 'Nn1c(NN)nnc1S': 'Nn1c(NN)nnc1S', 'Nn1c(S)nnc1c1ccccc1': 'Nn1c(S)nnc1c1ccccc1', 'Sc1nc(N)c2c(n1)[nH]nc2': 'Sc1nc(N)c2c(n1)[nH]nc2', 'Oc1ccc(cc1)C(=O)O': 'Oc1ccc(cc1)C(=O)O', 'OC(=O)c1ccc(cc1)S': 'OC(=O)c1ccc(cc1)S', 'Cn1cnnc1S': 'Cn1cnnc1S', 'Sc1nc(N)c(c(n1)S)N': 'Sc1nc(N)c(c(n1)S)N', 'Nc1ncncc1N': 'Nc1ncncc1N', 'Nc1cc(N)nc(n1)S': 'Nc1cc(N)nc(n1)S', 'Cc1cc(C)nc(n1)S': 'Cc1cc(C)nc(n1)S', 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1': 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1', 'COc1cccc(c1)c1n[nH]c(=S)[nH]1': 'COc1cccc(c1)c1n[nH]c(=S)[nH]1', 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1': 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1', 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]': 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]', 'S=c1[nH]nc([nH]1)c1ccco1': 'S=c1[nH]nc([nH]1)c1ccco1', 'S=c1[nH]nc([nH]1)c1cccnc1': 'S=c1[nH]nc([nH]1)c1cccnc1', 'S=c1[nH]nc([nH]1)c1ccncc1': 'S=c1[nH]nc([nH]1)c1ccncc1', 'Nc1n[nH]c(=S)s1': 'Nc1n[nH]c(=S)s1', 'Cc1nsc(c1)N': 'Cc1nsc(c1)N', 'Clc1ccc2c(c1)[nH]c(n2)S': 'Clc1ccc2c(c1)[nH]c(n2)S', 'CCOc1ccc2c(c1)nc([nH]2)S': 'CCOc1ccc2c(c1)nc([nH]2)S', 'Cn1nnnc1S': 'Cn1nnnc1S', 'OC(=O)Cn1nnnc1S': 'OC(=O)Cn1nnnc1S', 'COc1ccc2c(c1)[nH]c(=S)[nH]2': 'COc1ccc2c(c1)[nH]c(=S)[nH]2', 'Cc1n[nH]c(=S)s1': 'Cc1n[nH]c(=S)s1', 'ClC([C]1N[N]C=N1)(Cl)Cl': 'ClC([C]1N[N]C=N1)(Cl)Cl', 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl': 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl', 'CSc1[nH]c2c(n1)cc(c(c2)C)C': 'CSc1[nH]c2c(n1)cc(c(c2)C)C', 'Nc1ccc2c(c1)sc(=S)[nH]2': 'Nc1ccc2c(c1)sc(=S)[nH]2', 'OC(=O)c1ccc(=S)[nH]c1': 'OC(=O)c1ccc(=S)[nH]c1', 'Oc1cccc2c1nccc2': 'Oc1cccc2c1nccc2', 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C': 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C', 'S=c1[nH]c2c([nH]1)cncn2': 'S=c1[nH]c2c([nH]1)cncn2', 'CC(=O)O': 'CC(=O)O', 'OC(=O)CCCCC(=O)O': 'OC(=O)CCCCC(=O)O', 'OC(=O)c1ccccc1': 'OC(=O)c1ccccc1', 'c1ccc2c(c1)[nH]nn2': 'c1ccc2c(c1)[nH]nn2', 'OC(=O)c1ccc(cc1)c1ccccc1': 'OC(=O)c1ccc(cc1)c1ccccc1', 'OC(=O)/C=C/c1ccccc1': 'OC(=O)/C=C/c1ccccc1', 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O': 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O', 'O[C@H]1C(=O)OCC1(C)C': 'O[C@H]1C(=O)OCC1(C)C', 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O': 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O', 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O', 'CC(=O)SSC(=O)C': 'CC(=O)SSC(=O)C', 'CCCCOP(=O)(OCCCC)O': 'CCCCOP(=O)(OCCCC)O', 'CCN(C(=S)S)CC': 'CCN(C(=S)S)CC', 'O/N=C(/C(=N/O)/C)\\\\C': 'O/N=C(/C(=N/O)/C)\\\\C', 'CCCCCCCCCCCCc1ccccc1S([O])([O])O': 'CCCCCCCCCCCCc1ccccc1S([O])([O])O', 'CCCCCCCCCCCCOS(=O)(=O)O': 'CCCCCCCCCCCCOS(=O)(=O)O', 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O': 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O', 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1': 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1', 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O', 'OCC(CO)O': 'OCC(CO)O', 'NCC(=O)O': 'NCC(=O)O', 'OC(=O)CCCCCCCCCCCCCCC(=O)O': 'OC(=O)CCCCCCCCCCCCCCC(=O)O', 'C1N2CN3CN1CN(C2)C3': 'C1N2CN3CN1CN(C2)C3', 'NO': 'NO', 'COC(=O)CCCC1=CNC2=CC=CC=C21': 'COC(=O)CCCC1=CNC2=CC=CC=C21', 'OC(=O)c1ccncc1': 'OC(=O)c1ccncc1', 'C1COCCN1CCCS(=O)(=O)O': 'C1COCCN1CCCS(=O)(=O)O', 'OC(=O)c1cccnc1': 'OC(=O)c1cccnc1', 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O': 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O', 'C(=O)(C(=O)[O-])[O-]': 'C(=O)(C(=O)[O-])[O-]', 'OC(=O)c1ccc(cc1)N': 'OC(=O)c1ccc(cc1)N', 'Oc1ccc(cc1)S([O])([O])O': 'Oc1ccc(cc1)S([O])([O])O', 'OC(=O)c1ccccn1': 'OC(=O)c1ccccn1', 'OC(=O)c1ccccc1O': 'OC(=O)c1ccccc1O', 'CCCCCCCCCCCCCCCCCC(=O)O': 'CCCCCCCCCCCCCCCCCC(=O)O', 'SC#N': 'SC#N', 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]': 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]', '[O-]S(=O)[O-].[Na+].[Na+]': '[O-]S(=O)[O-].[Na+].[Na+]', 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C': 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C', 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C': 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C', 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]': 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]', '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]': '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]', '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]': '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]', '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]': '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]', '[Cl-].[Cl-].[Cl-].[Ce+3]': '[Cl-].[Cl-].[Cl-].[Ce+3]', 'CNCC(C1=CC(=CC=C1)O)O': 'CNCC(C1=CC(=CC=C1)O)O', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]', 'C1=CC=C(C(=C1)C=NNC(=S)N)O': 'C1=CC=C(C(=C1)C=NNC(=S)N)O', 'C1=CC(=C(C=C1O)O)C=NNC(=S)N': 'C1=CC(=C(C=C1O)O)C=NNC(=S)N', 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O': 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O', 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O': 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O', 'C1=CC2=NNN=C2C=C1Cl': 'C1=CC2=NNN=C2C=C1Cl', 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]': 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]', 'COC(=O)n1nnc2ccccc12': 'COC(=O)n1nnc2ccccc12'}, decorrelate=0.7, encoding=)], exp_rep= Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", - "0 24.0 4.0 0.0010 0.10 \n", - "1 24.0 10.0 0.0010 0.10 \n", - "2 24.0 4.0 0.0010 0.10 \n", - "3 24.0 10.0 0.0010 0.10 \n", - "4 24.0 4.0 0.0010 0.10 \n", - ".. ... ... ... ... \n", - "606 24.0 7.0 0.0005 0.05 \n", - "607 24.0 7.0 0.0005 0.05 \n", - "608 24.0 7.0 0.0005 0.05 \n", - "609 24.0 7.0 0.0005 0.05 \n", - "610 24.0 7.0 0.0005 0.05 \n", + "SearchSpace(discrete=SubspaceDiscrete(parameters=[NumericalDiscreteParameter(name='Time_h', encoding=None, _values=[0.0, 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 24.0, 48.0, 72.0, 96.0, 120.0, 144.0, 168.0, 192.0, 240.0, 288.0, 336.0, 384.0], tolerance=0.0), NumericalDiscreteParameter(name='pH', encoding=None, _values=[-0.6, -0.4771212547196624, -0.3979400086720376, -0.3010299956639812, -0.1760912590556812, 0.0, 0.3, 0.45, 1.0, 2.0, 7.0, 13.0], tolerance=0.0), NumericalDiscreteParameter(name='Inhib_Concentrat_M', encoding=None, _values=[1e-07, 5e-07, 1e-06, 2e-06, 4e-06, 5e-06, 6e-06, 8e-06, 1e-05, 1.2e-05, 2e-05, 4e-05, 5e-05, 6e-05, 8e-05, 0.0001, 0.0001958863858961802, 0.0002, 0.0003, 0.0003566333808844508, 0.0003917727717923605, 0.0004, 0.0005, 0.0005876591576885406, 0.0006, 0.0007132667617689017, 0.0007835455435847209, 0.0008, 0.0009794319294809011, 0.001, 0.0011, 0.0012, 0.0013, 0.0014, 0.0015, 0.0016, 0.001783166904422254, 0.0018, 0.0019, 0.002, 0.002139800285306705, 0.0025, 0.0026, 0.003, 0.0032, 0.003566333808844508, 0.0039, 0.004, 0.0042, 0.00427960057061341, 0.005, 0.0053, 0.005706134094151214, 0.0065, 0.0075, 0.0085, 0.01, 0.015, 0.02, 0.04, 0.06, 0.08, 0.1], tolerance=0.0), NumericalDiscreteParameter(name='Salt_Concentrat_M', encoding=None, _values=[0.0, 1.0, 2.0], tolerance=0.0), SubstanceParameter(name='SMILES', data={'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O': 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O', 'C(C(CO)([N+](=O)[O-])Br)O': 'C(C(CO)([N+](=O)[O-])Br)O', 'C(CC=O)CC=O': 'C(CC=O)CC=O', 'C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O': 'C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O', 'C1=CC(=CN=C1)C=NNC(=S)N': 'C1=CC(=CN=C1)C=NNC(=S)N', 'C1=CC(=NC(=C1)N)N': 'C1=CC(=NC(=C1)N)N', 'C1=CC=C(C=C1)C(C2=CC=CC=C2)(C3=CC=CC=C3Cl)N4C=CN=C4': 'C1=CC=C(C=C1)C(C2=CC=CC=C2)(C3=CC=CC=C3Cl)N4C=CN=C4', 'C1=CC=NC(=C1)C=NNC(=S)N': 'C1=CC=NC(=C1)C=NNC(=S)N', 'C1=CN=C(C=N1)C(=O)N': 'C1=CN=C(C=N1)C(=O)N', 'C1=CN=C(N=C1)N': 'C1=CN=C(N=C1)N', 'C1=CN=CC=C1C=NNC(=S)N': 'C1=CN=CC=C1C=NNC(=S)N', 'C1CCC(=NO)CC1': 'C1CCC(=NO)CC1', 'C1N2CN3CN1CN(C2)C3': 'C1N2CN3CN1CN(C2)C3', 'C=CC1=C(N2C(C(C2=O)NC(=O)C(=NOCC(=O)O)C3=CSC(=N3)N)SC1)C(=O)O': 'C=CC1=C(N2C(C(C2=O)NC(=O)C(=NOCC(=O)O)C3=CSC(=N3)N)SC1)C(=O)O', 'CC(=NO)C': 'CC(=NO)C', 'CC(C)(C)NCC(COC1=CC=CC2=C1CC(C(C2)O)O)O': 'CC(C)(C)NCC(COC1=CC=CC2=C1CC(C(C2)O)O)O', 'CC(C)(C)NCC(COC1=NSN=C1N2CCOCC2)O': 'CC(C)(C)NCC(COC1=NSN=C1N2CCOCC2)O', 'CC(C)NCC(COC1=CC=C(C=C1)CC(=O)N)O': 'CC(C)NCC(COC1=CC=C(C=C1)CC(=O)N)O', 'CC(C)NCC(COC1=CC=CC2=CC=CC=C21)O': 'CC(C)NCC(COC1=CC=CC2=CC=CC=C21)O', 'CC(OC(=O)C)OC(=O)C1=C(CSC2N1C(=O)C2NC(=O)C(=NOC)C3=CC=CO3)COC(=O)N': 'CC(OC(=O)C)OC(=O)C1=C(CSC2N1C(=O)C2NC(=O)C(=NOC)C3=CC=CO3)COC(=O)N', 'CC1=CC=C(C=C1)[N]2N=NC=C2O': 'CC1=CC=C(C=C1)[N]2N=NC=C2O', 'CC1=CN=C(C=N1)C(=O)N': 'CC1=CN=C(C=N1)C(=O)N', 'CC1=NC(=CC=C1)C': 'CC1=NC(=CC=C1)C', 'CCC(=NO)C': 'CCC(=NO)C', 'CCOC(=O)C1=C(C)N=C(S)NC1C2=CC=C(C=C2)Cl': 'CCOC(=O)C1=C(C)N=C(S)NC1C2=CC=C(C=C2)Cl', 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O': 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O', 'COC(=O)C1=CC=C(C=C1)[N]2N=NC=C2O': 'COC(=O)C1=CC=C(C=C1)[N]2N=NC=C2O', 'COC1=NC=C(N=C1)C(=O)N': 'COC1=NC=C(N=C1)C(=O)N', 'NC(N)=S': 'NC(N)=S', 'NC1=CCNC(=S)N1': 'NC1=CCNC(=S)N1', 'OC1=C(C=CC=C1)C=NC2=CC=C(C=C2)N=NC3=C(C=CC=C3)N=CC4=C(C=CC=C4)O': 'OC1=C(C=CC=C1)C=NC2=CC=C(C=C2)N=NC3=C(C=CC=C3)N=CC4=C(C=CC=C4)O', 'OC1=CN=N[N]1C2=CC=C(C=C2)Cl': 'OC1=CN=N[N]1C2=CC=C(C=C2)Cl', 'S=c1sc2c([nH]1)cccc2': 'S=c1sc2c([nH]1)cccc2'}, decorrelate=0.7, encoding=)], exp_rep= Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", + "0 0.0 2.0 5.000000e-07 2 \n", + "1 0.0 2.0 1.000000e-06 2 \n", + "2 0.0 2.0 5.000000e-06 2 \n", + "3 0.0 2.0 1.000000e-05 2 \n", + "4 0.0 2.0 5.000000e-05 2 \n", + ".. ... ... ... ... \n", + "303 384.0 -0.6 4.200000e-03 0 \n", + "304 384.0 -0.6 5.300000e-03 0 \n", + "305 384.0 -0.6 6.500000e-03 0 \n", + "306 384.0 -0.6 7.500000e-03 0 \n", + "307 384.0 -0.6 8.500000e-03 0 \n", "\n", - " SMILES \n", - "0 COCCOC(=O)OCSc1nc2c(s1)cccc2 \n", - "1 COCCOC(=O)OCSc1nc2c(s1)cccc2 \n", - "2 Cc1ccc(c(c1)n1nc2c(n1)cccc2)O \n", - "3 Cc1ccc(c(c1)n1nc2c(n1)cccc2)O \n", - "4 Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O \n", - ".. ... \n", - "606 S=c1sc2c([nH]1)cccc2 \n", - "607 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O \n", - "608 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O \n", - "609 C(=O)(C(=O)[O-])[O-] \n", - "610 C(=O)(C(=O)[O-])[O-] \n", + " SMILES \n", + "0 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O \n", + "1 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O \n", + "2 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O \n", + "3 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O \n", + "4 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O \n", + ".. ... \n", + "303 S=c1sc2c([nH]1)cccc2 \n", + "304 S=c1sc2c([nH]1)cccc2 \n", + "305 S=c1sc2c([nH]1)cccc2 \n", + "306 S=c1sc2c([nH]1)cccc2 \n", + "307 S=c1sc2c([nH]1)cccc2 \n", "\n", - "[611 rows x 5 columns], metadata= was_recommended was_measured dont_recommend\n", + "[308 rows x 5 columns], metadata= was_recommended was_measured dont_recommend\n", "0 False False False\n", "1 False False False\n", "2 False False False\n", "3 False False False\n", "4 False False False\n", ".. ... ... ...\n", - "606 False False False\n", - "607 False False False\n", - "608 False False False\n", - "609 False False False\n", - "610 False False False\n", + "303 False False False\n", + "304 False False False\n", + "305 False False False\n", + "306 False False False\n", + "307 False False False\n", "\n", - "[611 rows x 3 columns], empty_encoding=False, constraints=[], comp_rep= Time_h pH Inhib_Concentrat_M Salt_Concentrat_M SMILES_MORDRED_ABC \\\n", - "0 24.0 4.0 0.0010 0.10 14.211085 \n", - "1 24.0 10.0 0.0010 0.10 14.211085 \n", - "2 24.0 4.0 0.0010 0.10 13.532488 \n", - "3 24.0 10.0 0.0010 0.10 13.532488 \n", - "4 24.0 4.0 0.0010 0.10 16.206679 \n", - ".. ... ... ... ... ... \n", - "606 24.0 7.0 0.0005 0.05 7.847124 \n", - "607 24.0 7.0 0.0005 0.05 9.238929 \n", - "608 24.0 7.0 0.0005 0.05 9.238929 \n", - "609 24.0 7.0 0.0005 0.05 3.932653 \n", - "610 24.0 7.0 0.0005 0.05 3.932653 \n", + "[308 rows x 3 columns], empty_encoding=False, constraints=[], comp_rep= Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", + "0 0.0 2.0 5.000000e-07 2 \n", + "1 0.0 2.0 1.000000e-06 2 \n", + "2 0.0 2.0 5.000000e-06 2 \n", + "3 0.0 2.0 1.000000e-05 2 \n", + "4 0.0 2.0 5.000000e-05 2 \n", + ".. ... ... ... ... \n", + "303 384.0 -0.6 4.200000e-03 0 \n", + "304 384.0 -0.6 5.300000e-03 0 \n", + "305 384.0 -0.6 6.500000e-03 0 \n", + "306 384.0 -0.6 7.500000e-03 0 \n", + "307 384.0 -0.6 8.500000e-03 0 \n", "\n", - " SMILES_MORDRED_nAcid SMILES_MORDRED_nBase SMILES_MORDRED_nAromAtom \\\n", - "0 0.0 0.0 9.0 \n", - "1 0.0 0.0 9.0 \n", - "2 0.0 0.0 15.0 \n", - "3 0.0 0.0 15.0 \n", - "4 0.0 0.0 11.0 \n", - ".. ... ... ... \n", - "606 0.0 0.0 9.0 \n", - "607 3.0 0.0 0.0 \n", - "608 3.0 0.0 0.0 \n", - "609 2.0 0.0 0.0 \n", - "610 2.0 0.0 0.0 \n", + " SMILES_RDKIT_MaxAbsEStateIndex SMILES_RDKIT_MinAbsEStateIndex \\\n", + "0 10.148889 1.357824 \n", + "1 10.148889 1.357824 \n", + "2 10.148889 1.357824 \n", + "3 10.148889 1.357824 \n", + "4 10.148889 1.357824 \n", + ".. ... ... \n", + "303 4.975926 0.848333 \n", + "304 4.975926 0.848333 \n", + "305 4.975926 0.848333 \n", + "306 4.975926 0.848333 \n", + "307 4.975926 0.848333 \n", "\n", - " SMILES_MORDRED_nBridgehead SMILES_MORDRED_nHetero ... \\\n", - "0 0.0 7.0 ... \n", - "1 0.0 7.0 ... \n", - "2 0.0 4.0 ... \n", - "3 0.0 4.0 ... \n", - "4 0.0 5.0 ... \n", - ".. ... ... ... \n", - "606 0.0 3.0 ... \n", - "607 0.0 7.0 ... \n", - "608 0.0 7.0 ... \n", - "609 0.0 4.0 ... \n", - "610 0.0 4.0 ... \n", + " SMILES_RDKIT_MinEStateIndex SMILES_RDKIT_qed SMILES_RDKIT_SPS \\\n", + "0 -2.974537 0.454904 10.846154 \n", + "1 -2.974537 0.454904 10.846154 \n", + "2 -2.974537 0.454904 10.846154 \n", + "3 -2.974537 0.454904 10.846154 \n", + "4 -2.974537 0.454904 10.846154 \n", + ".. ... ... ... \n", + "303 0.848333 0.596343 10.400000 \n", + "304 0.848333 0.596343 10.400000 \n", + "305 0.848333 0.596343 10.400000 \n", + "306 0.848333 0.596343 10.400000 \n", + "307 0.848333 0.596343 10.400000 \n", "\n", - " SMILES_MORDRED_JGI2 SMILES_MORDRED_JGI3 SMILES_MORDRED_JGI4 \\\n", - "0 0.053333 0.047348 0.025679 \n", - "1 0.053333 0.047348 0.025679 \n", - "2 0.074074 0.049167 0.050028 \n", - "3 0.074074 0.049167 0.050028 \n", - "4 0.104167 0.046456 0.055718 \n", - ".. ... ... ... \n", - "606 0.059259 0.071970 0.042870 \n", - "607 0.117647 0.085938 0.047059 \n", - "608 0.117647 0.085938 0.047059 \n", - "609 0.148148 0.000000 0.000000 \n", - "610 0.148148 0.000000 0.000000 \n", + " SMILES_RDKIT_MolWt ... SMILES_RDKIT_fr_allylic_oxid \\\n", + "0 189.099 ... 0 \n", + "1 189.099 ... 0 \n", + "2 189.099 ... 0 \n", + "3 189.099 ... 0 \n", + "4 189.099 ... 0 \n", + ".. ... ... ... \n", + "303 167.258 ... 0 \n", + "304 167.258 ... 0 \n", + "305 167.258 ... 0 \n", + "306 167.258 ... 0 \n", + "307 167.258 ... 0 \n", "\n", - " SMILES_MORDRED_JGI5 SMILES_MORDRED_JGI6 SMILES_MORDRED_JGI7 \\\n", - "0 0.021778 0.007407 0.014227 \n", - "1 0.021778 0.007407 0.014227 \n", - "2 0.026569 0.016799 0.012762 \n", - "3 0.026569 0.016799 0.012762 \n", - "4 0.031875 0.020352 0.014901 \n", - ".. ... ... ... \n", - "606 0.040000 0.000000 0.000000 \n", - "607 0.018519 0.000000 0.000000 \n", - "608 0.018519 0.000000 0.000000 \n", - "609 0.000000 0.000000 0.000000 \n", - "610 0.000000 0.000000 0.000000 \n", + " SMILES_RDKIT_fr_aryl_methyl SMILES_RDKIT_fr_bicyclic \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + ".. ... ... \n", + "303 0 1 \n", + "304 0 1 \n", + "305 0 1 \n", + "306 0 1 \n", + "307 0 1 \n", "\n", - " SMILES_MORDRED_JGI8 SMILES_MORDRED_JGI9 SMILES_MORDRED_TopoShapeIndex \\\n", - "0 0.008230 0.006734 0.857143 \n", - "1 0.008230 0.006734 0.857143 \n", - "2 0.010204 0.000000 1.000000 \n", - "3 0.010204 0.000000 1.000000 \n", - "4 0.011255 0.006063 0.833333 \n", - ".. ... ... ... \n", - "606 0.000000 0.000000 0.666667 \n", - "607 0.000000 0.000000 1.000000 \n", - "608 0.000000 0.000000 1.000000 \n", - "609 0.000000 0.000000 0.500000 \n", - "610 0.000000 0.000000 0.500000 \n", + " SMILES_RDKIT_fr_ether SMILES_RDKIT_fr_halogen \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + ".. ... ... \n", + "303 0 0 \n", + "304 0 0 \n", + "305 0 0 \n", + "306 0 0 \n", + "307 0 0 \n", "\n", - " SMILES_MORDRED_MWC06 \n", - "0 7.787797 \n", - "1 7.787797 \n", - "2 8.042056 \n", - "3 8.042056 \n", - "4 8.108623 \n", - ".. ... \n", - "606 7.372118 \n", - "607 7.377134 \n", - "608 7.377134 \n", - "609 5.837730 \n", - "610 5.837730 \n", + " SMILES_RDKIT_fr_morpholine SMILES_RDKIT_fr_oxime \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + ".. ... ... \n", + "303 0 0 \n", + "304 0 0 \n", + "305 0 0 \n", + "306 0 0 \n", + "307 0 0 \n", "\n", - "[611 rows x 147 columns]), continuous=SubspaceContinuous(parameters=[], constraints_lin_eq=[], constraints_lin_ineq=[]))" + " SMILES_RDKIT_fr_priamide SMILES_RDKIT_fr_pyridine \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + ".. ... ... \n", + "303 0 0 \n", + "304 0 0 \n", + "305 0 0 \n", + "306 0 0 \n", + "307 0 0 \n", + "\n", + " SMILES_RDKIT_fr_thiazole \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + ".. ... \n", + "303 1 \n", + "304 1 \n", + "305 1 \n", + "306 1 \n", + "307 1 \n", + "\n", + "[308 rows x 79 columns]), continuous=SubspaceContinuous(parameters=[], constraints_lin_eq=[], constraints_lin_ineq=[]))" ] }, - "execution_count": 9, + "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "searchspace" + "searchspace_rdkit" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 121, "metadata": {}, "outputs": [], "source": [ - "campaign = Campaign(searchspace=searchspace, objective=objective)\n", - "campaign_rand = Campaign(\n", - " searchspace=searchspace,\n", + "campaign_mordred = Campaign(searchspace=searchspace_mordred, objective=objective)\n", + "campaign_morgan = Campaign(searchspace=searchspace_morgan, objective=objective)\n", + "campaign_rdkit = Campaign(searchspace=searchspace_rdkit, objective=objective)\n", + "\n", + "campaign_rand_mordred = Campaign(\n", + " searchspace=searchspace_mordred,\n", + " recommender=TwoPhaseMetaRecommender(recommender=RandomRecommender()),\n", + " objective=objective,\n", + ")\n", + "campaign_rand_morgan = Campaign(\n", + " searchspace=searchspace_morgan,\n", + " recommender=TwoPhaseMetaRecommender(recommender=RandomRecommender()),\n", + " objective=objective,\n", + ")\n", + "campaign_rand_rdkit = Campaign(\n", + " searchspace=searchspace_rdkit,\n", " recommender=TwoPhaseMetaRecommender(recommender=RandomRecommender()),\n", " objective=objective,\n", ")" @@ -362,71 +595,384 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 122, "metadata": {}, "outputs": [], "source": [ - "scenarios = {\"Test_Scenario\": campaign, \"Random\": campaign_rand}" + "scenarios = {\"Mordred\": campaign_mordred, #\"Random\": campaign_rand_mordred,\n", + " \"Morgan\": campaign_morgan, #\"Morgan Random\": campaign_rand_morgan,\n", + " \"RDKIT\": campaign_rdkit, \"Random\": campaign_rand_rdkit\n", + " }" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 128, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - " 0%| | 0/10 [00:00 1\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43msimulate_scenarios\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenarios\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mlookup\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mBATCH_SIZE\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_doe_iterations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mN_DOE_ITERATIONS\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_mc_iterations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mN_MC_ITERATIONS\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mimpute_mode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mignore\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/simulation.py:261\u001b[0m, in \u001b[0;36msimulate_scenarios\u001b[0;34m(scenarios, lookup, batch_size, n_doe_iterations, initial_data, groupby, n_mc_iterations, impute_mode, noise_percent)\u001b[0m\n\u001b[1;32m 258\u001b[0m combos[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInitial_Data\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mlen\u001b[39m(initial_data))\n\u001b[1;32m 260\u001b[0m \u001b[38;5;66;03m# Simulate and unpack\u001b[39;00m\n\u001b[0;32m--> 261\u001b[0m da_results \u001b[38;5;241m=\u001b[39m \u001b[43msimulate\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_combos\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcombos\u001b[49m\u001b[43m)\u001b[49m[_RESULT_VARIABLE]\n\u001b[1;32m 262\u001b[0m df_results \u001b[38;5;241m=\u001b[39m unpack_simulation_results(da_results)\n\u001b[1;32m 264\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m df_results\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/xyzpy/gen/farming.py:189\u001b[0m, in \u001b[0;36mRunner.run_combos\u001b[0;34m(self, combos, constants, **runner_settings)\u001b[0m\n\u001b[1;32m 175\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Run combos using the function map and save to dataset.\u001b[39;00m\n\u001b[1;32m 176\u001b[0m \n\u001b[1;32m 177\u001b[0m \u001b[38;5;124;03mParameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[38;5;124;03m Keyword arguments supplied to :func:`~xyzpy.combo_runner`.\u001b[39;00m\n\u001b[1;32m 187\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 188\u001b[0m combos \u001b[38;5;241m=\u001b[39m parse_combos(combos)\n\u001b[0;32m--> 189\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_last_ds \u001b[38;5;241m=\u001b[39m \u001b[43mcombo_runner_to_ds\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[43m \u001b[49m\u001b[43mfn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 191\u001b[0m \u001b[43m \u001b[49m\u001b[43mcombos\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcombos\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 192\u001b[0m \u001b[43m \u001b[49m\u001b[43mvar_names\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_var_names\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 193\u001b[0m \u001b[43m \u001b[49m\u001b[43mvar_dims\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_var_dims\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 194\u001b[0m \u001b[43m \u001b[49m\u001b[43mvar_coords\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_var_coords\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 195\u001b[0m \u001b[43m \u001b[49m\u001b[43mconstants\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_constants\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mdict\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mconstants\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 196\u001b[0m \u001b[43m \u001b[49m\u001b[43mresources\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_resources\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 197\u001b[0m \u001b[43m \u001b[49m\u001b[43mattrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_attrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 198\u001b[0m \u001b[43m \u001b[49m\u001b[43mparse\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 199\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdefault_runner_settings\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mrunner_settings\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 200\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_last_ds\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/xyzpy/gen/combo_runner.py:628\u001b[0m, in \u001b[0;36mcombo_runner_to_ds\u001b[0;34m(fn, combos, var_names, var_dims, var_coords, cases, constants, resources, attrs, shuffle, parse, to_df, parallel, num_workers, executor, verbosity)\u001b[0m\n\u001b[1;32m 625\u001b[0m info \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 627\u001b[0m \u001b[38;5;66;03m# Generate data for all combos\u001b[39;00m\n\u001b[0;32m--> 628\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mcombo_runner_core\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 629\u001b[0m \u001b[43m \u001b[49m\u001b[43mfn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 630\u001b[0m \u001b[43m \u001b[49m\u001b[43mcombos\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcombos\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 631\u001b[0m \u001b[43m \u001b[49m\u001b[43mcases\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcases\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 632\u001b[0m \u001b[43m \u001b[49m\u001b[43mconstants\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mresources\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mconstants\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 633\u001b[0m \u001b[43m \u001b[49m\u001b[43mparallel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparallel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 634\u001b[0m \u001b[43m \u001b[49m\u001b[43mnum_workers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnum_workers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 635\u001b[0m \u001b[43m \u001b[49m\u001b[43mexecutor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexecutor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 636\u001b[0m \u001b[43m \u001b[49m\u001b[43mverbosity\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mverbosity\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 637\u001b[0m \u001b[43m \u001b[49m\u001b[43minfo\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minfo\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 638\u001b[0m \u001b[43m \u001b[49m\u001b[43msplit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mto_df\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mand\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mvar_names\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m>\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 639\u001b[0m \u001b[43m \u001b[49m\u001b[43mflat\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mto_df\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 640\u001b[0m \u001b[43m \u001b[49m\u001b[43mshuffle\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mshuffle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 641\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 643\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m to_df:\n\u001b[1;32m 644\u001b[0m \u001b[38;5;66;03m# convert flat tuple of results to dataframe\u001b[39;00m\n\u001b[1;32m 645\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results_to_df(\n\u001b[1;32m 646\u001b[0m results,\n\u001b[1;32m 647\u001b[0m settings\u001b[38;5;241m=\u001b[39minfo[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msettings\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 650\u001b[0m var_names\u001b[38;5;241m=\u001b[39mvar_names\n\u001b[1;32m 651\u001b[0m )\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/xyzpy/gen/combo_runner.py:231\u001b[0m, in \u001b[0;36mcombo_runner_core\u001b[0;34m(fn, combos, constants, cases, split, flat, shuffle, parallel, num_workers, executor, verbosity, info)\u001b[0m\n\u001b[1;32m 229\u001b[0m results_linear \u001b[38;5;241m=\u001b[39m _run_linear_executor(executor, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mrun_linear_opts)\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 231\u001b[0m results_linear \u001b[38;5;241m=\u001b[39m \u001b[43m_run_linear_sequential\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mrun_linear_opts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m shuffle:\n\u001b[1;32m 234\u001b[0m enum_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msorted\u001b[39m(\u001b[38;5;28mzip\u001b[39m(enum, results_linear), key\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mlambda\u001b[39;00m x: x[\u001b[38;5;241m0\u001b[39m])\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/xyzpy/gen/combo_runner.py:142\u001b[0m, in \u001b[0;36m_run_linear_sequential\u001b[0;34m(fn, settings, verbosity)\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m verbosity \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[1;32m 141\u001b[0m pbar\u001b[38;5;241m.\u001b[39mset_description(\u001b[38;5;28mstr\u001b[39m(kws))\n\u001b[0;32m--> 142\u001b[0m results_linear\u001b[38;5;241m.\u001b[39mappend(\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkws\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 143\u001b[0m pbar\u001b[38;5;241m.\u001b[39mupdate()\n\u001b[1;32m 144\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results_linear\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/simulation.py:224\u001b[0m, in \u001b[0;36msimulate_scenarios..simulate\u001b[0;34m(Scenario, Random_Seed, Initial_Data)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Callable for xyzpy simulation.\"\"\"\u001b[39;00m\n\u001b[1;32m 222\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01mif\u001b[39;00m initial_data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m initial_data[Initial_Data]\n\u001b[1;32m 223\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SimulationResult(\n\u001b[0;32m--> 224\u001b[0m \u001b[43m_simulate_groupby\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 225\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenarios\u001b[49m\u001b[43m[\u001b[49m\u001b[43mScenario\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 226\u001b[0m \u001b[43m \u001b[49m\u001b[43mlookup\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 227\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbatch_size\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 228\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_doe_iterations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_doe_iterations\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 229\u001b[0m \u001b[43m \u001b[49m\u001b[43minitial_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 230\u001b[0m \u001b[43m \u001b[49m\u001b[43mgroupby\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroupby\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 231\u001b[0m \u001b[43m \u001b[49m\u001b[43mrandom_seed\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mRandom_Seed\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 232\u001b[0m \u001b[43m \u001b[49m\u001b[43mimpute_mode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mimpute_mode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[43m \u001b[49m\u001b[43mnoise_percent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnoise_percent\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 234\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 235\u001b[0m )\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/simulation.py:340\u001b[0m, in \u001b[0;36m_simulate_groupby\u001b[0;34m(campaign, lookup, batch_size, n_doe_iterations, initial_data, groupby, random_seed, impute_mode, noise_percent)\u001b[0m\n\u001b[1;32m 338\u001b[0m \u001b[38;5;66;03m# Run the group simulation\u001b[39;00m\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 340\u001b[0m df_group \u001b[38;5;241m=\u001b[39m \u001b[43msimulate_experiment\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 341\u001b[0m \u001b[43m \u001b[49m\u001b[43mcampaign_group\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 342\u001b[0m \u001b[43m \u001b[49m\u001b[43mlookup\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 343\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbatch_size\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 344\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_doe_iterations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_doe_iterations\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 345\u001b[0m \u001b[43m \u001b[49m\u001b[43minitial_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minitial_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 346\u001b[0m \u001b[43m \u001b[49m\u001b[43mrandom_seed\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrandom_seed\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 347\u001b[0m \u001b[43m \u001b[49m\u001b[43mimpute_mode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mimpute_mode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 348\u001b[0m \u001b[43m \u001b[49m\u001b[43mnoise_percent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnoise_percent\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 349\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 350\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m NothingToSimulateError:\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/simulation.py:473\u001b[0m, in \u001b[0;36msimulate_experiment\u001b[0;34m(campaign, lookup, batch_size, n_doe_iterations, initial_data, random_seed, impute_mode, noise_percent)\u001b[0m\n\u001b[1;32m 471\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m impute_mode \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 472\u001b[0m searchspace \u001b[38;5;241m=\u001b[39m campaign\u001b[38;5;241m.\u001b[39msearchspace\u001b[38;5;241m.\u001b[39mdiscrete\u001b[38;5;241m.\u001b[39mexp_rep\n\u001b[0;32m--> 473\u001b[0m missing_inds \u001b[38;5;241m=\u001b[39m \u001b[43msearchspace\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[43m[\u001b[49m\n\u001b[1;32m 474\u001b[0m \u001b[43m \u001b[49m\u001b[43msearchspace\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmerge\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlookup\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhow\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mleft\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindicator\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m_merge\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 475\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mleft_only\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 476\u001b[0m \u001b[43m \u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 477\u001b[0m campaign\u001b[38;5;241m.\u001b[39msearchspace\u001b[38;5;241m.\u001b[39mdiscrete\u001b[38;5;241m.\u001b[39mmetadata\u001b[38;5;241m.\u001b[39mloc[\n\u001b[1;32m 478\u001b[0m missing_inds, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdont_recommend\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 479\u001b[0m ] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 481\u001b[0m \u001b[38;5;66;03m# Run the DOE loop\u001b[39;00m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/indexes/range.py:1030\u001b[0m, in \u001b[0;36mRangeIndex.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 1023\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m is_scalar(key):\n\u001b[1;32m 1024\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mIndexError\u001b[39;00m(\n\u001b[1;32m 1025\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124monly integers, slices (`:`), \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1026\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mellipsis (`...`), numpy.newaxis (`None`) \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1027\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mand integer or boolean \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1028\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124marrays are valid indices\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1029\u001b[0m )\n\u001b[0;32m-> 1030\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__getitem__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:5416\u001b[0m, in \u001b[0;36mIndex.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 5407\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(key) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(key) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 5408\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[1;32m 5409\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUsing a boolean indexer with length 0 on an Index with \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 5410\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlength greater than 0 is deprecated and will raise in a \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 5413\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[1;32m 5414\u001b[0m )\n\u001b[0;32m-> 5416\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mgetitem\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5417\u001b[0m \u001b[38;5;66;03m# Because we ruled out integer above, we always get an arraylike here\u001b[39;00m\n\u001b[1;32m 5418\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n", - "\u001b[0;31mIndexError\u001b[0m: boolean index did not match indexed array along dimension 0; dimension is 611 but corresponding boolean dimension is 921" + " 0%| | 0/40 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "max_yield = lookup[\"Efficiency\"].max()\n", + "# plot_results = results[results['Scenario'].isin(['Mordred', 'Morgan', 'RDKIT'])]\n", + "\n", + "sns.lineplot(\n", + " data=results, x=\"Num_Experiments\", y=\"Efficiency_CumBest\", hue=\"Scenario\", marker=\"x\"\n", + ")\n", + "plt.plot([0.5, N_DOE_ITERATIONS+0.5], [max_yield, max_yield], \"--r\")\n", + "plt.legend(loc=\"lower right\")\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.xlim(0, N_DOE_ITERATIONS+1)\n", + "plt.savefig(\"./AA1000_simulation_10MC_50exp_1batch.png\")" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 125, "metadata": {}, - "outputs": [], - "source": [] + "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", + "
ScenarioRandom_SeedIterationNum_ExperimentsEfficiency_MeasurementsEfficiency_IterBestEfficiency_CumBest
0Mordred133701[71.38]71.38000071.380
1Mordred133712[83.742]83.74200083.742
2Mordred133723[67.0]67.00000083.742
3Mordred133734[67.04]67.04000083.742
4Mordred133745[47.0]47.00000083.742
........................
395Random134656[71.72]71.72000092.500
396Random134667[68.00666666666666]68.00666792.500
397Random134678[6.08]6.08000092.500
398Random134689[90.0]90.00000092.500
399Random1346910[45.37]45.37000092.500
\n", + "

400 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " Scenario Random_Seed Iteration Num_Experiments Efficiency_Measurements \\\n", + "0 Mordred 1337 0 1 [71.38] \n", + "1 Mordred 1337 1 2 [83.742] \n", + "2 Mordred 1337 2 3 [67.0] \n", + "3 Mordred 1337 3 4 [67.04] \n", + "4 Mordred 1337 4 5 [47.0] \n", + ".. ... ... ... ... ... \n", + "395 Random 1346 5 6 [71.72] \n", + "396 Random 1346 6 7 [68.00666666666666] \n", + "397 Random 1346 7 8 [6.08] \n", + "398 Random 1346 8 9 [90.0] \n", + "399 Random 1346 9 10 [45.37] \n", + "\n", + " Efficiency_IterBest Efficiency_CumBest \n", + "0 71.380000 71.380 \n", + "1 83.742000 83.742 \n", + "2 67.000000 83.742 \n", + "3 67.040000 83.742 \n", + "4 47.000000 83.742 \n", + ".. ... ... \n", + "395 71.720000 92.500 \n", + "396 68.006667 92.500 \n", + "397 6.080000 92.500 \n", + "398 90.000000 92.500 \n", + "399 45.370000 92.500 \n", + "\n", + "[400 rows x 7 columns]" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] }, { "cell_type": "markdown", diff --git a/run_impute_mode.png b/run_impute_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..277a900f255d4bb5ad8678af5dbf7b22763fe7ee GIT binary patch literal 58164 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 z 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 S#0aC{pT#DdjoD`IKmQMg%i+}k literal 0 HcmV?d00001