diff --git a/Alex6022/baybe-inhibitor.ipynb b/Alex6022/baybe-inhibitor.ipynb index b994b7f..b4bc81a 100644 --- a/Alex6022/baybe-inhibitor.ipynb +++ b/Alex6022/baybe-inhibitor.ipynb @@ -757,7 +757,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 59, "metadata": {}, "outputs": [], "source": [ @@ -767,24 +767,24 @@ "transfer_parameters=[\n", "NumericalDiscreteParameter(\n", " name=\"Time_h\",\n", - " values=df_transfer[\"Time_h\"].unique(),\n", + " values=df_combined[\"Time_h\"].unique(),\n", " tolerance=5/60,\n", "),\n", "NumericalDiscreteParameter(\n", " name=\"pH\",\n", - " values=df_transfer[\"pH\"].unique(),\n", + " values=df_combined[\"pH\"].unique(),\n", " ), \n", "NumericalDiscreteParameter(\n", " name=\"Inhib_Concentrat_M\",\n", - " values=df_transfer[\"Inhib_Concentrat_M\"].unique(),\n", + " values=df_combined[\"Inhib_Concentrat_M\"].unique(),\n", " ),\n", "NumericalDiscreteParameter(\n", " name=\"Salt_Concentrat_M\",\n", - " values=df_transfer[\"Salt_Concentrat_M\"].unique(),\n", + " values=df_combined[\"Salt_Concentrat_M\"].unique(),\n", " ),\n", "CategoricalParameter(\n", " name=\"SMILES\",\n", - " values=unique_SMILES_transfer,\n", + " values=unique_SMILES,\n", " encoding=\"OHE\",\n", " )\n", "]" @@ -792,7 +792,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 60, "metadata": {}, "outputs": [], "source": [ @@ -803,7 +803,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 61, "metadata": {}, "outputs": [], "source": [ @@ -812,7 +812,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 62, "metadata": {}, "outputs": [ { @@ -822,21 +822,14 @@ " 0%| | 0/1 [00:00 14\u001b[0;31m result_transfer_learning = simulate_scenarios(\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"Transfer\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mcampaign_transfer\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mdf_transfer\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0minitial_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfraction_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/simulation.py\u001b[0m in \u001b[0;36m?\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 253\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 254\u001b[0m \u001b[0;31m# Collect the settings to be simulated\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[0mcombos\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"Scenario\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mscenarios\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0mcombos\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Random_Seed\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_DEFAULT_SEED\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_DEFAULT_SEED\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mn_mc_iterations\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 257\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0minitial_data\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 258\u001b[0m \u001b[0mcombos\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Initial_Data\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minitial_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 259\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;31m# Simulate and unpack\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1574\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mfinal\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1575\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__nonzero__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mNoReturn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1576\u001b[0;31m raise ValueError(\n\u001b[0m\u001b[1;32m 1577\u001b[0m \u001b[0;34mf\"The truth value of a {type(self).__name__} is ambiguous. \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1578\u001b[0m \u001b[0;34m\"Use a.empty, a.bool(), a.item(), a.any() or a.all().\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1579\u001b[0m )\n", - "\u001b[0;31mValueError\u001b[0m: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()." + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|##########| 1/1 [00:06<00:00, 6.61s/it]\n" ] } ], @@ -850,42 +843,2601 @@ " df_transfer,\n", " batch_size=BATCH_SIZE,\n", " n_doe_iterations=N_DOE_ITERATIONS,\n", + " n_mc_iterations=N_MC_ITERATIONS,\n", " impute_mode=\"best\",\n", ")" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - " 0%| | 0/1 [00:00 2\u001b[0m result_transfer_learning \u001b[38;5;241m=\u001b[39m \u001b[43msimulate_scenarios\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mTransfer\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mcampaign_transfer\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43mdf_transfer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43minitial_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43mfraction_df\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 6\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 7\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 8\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;43mbest\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 9\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:466\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 464\u001b[0m \u001b[38;5;66;03m# Add the initial data\u001b[39;00m\n\u001b[1;32m 465\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m initial_data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 466\u001b[0m \u001b[43mcampaign\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43madd_measurements\u001b[49m\u001b[43m(\u001b[49m\u001b[43minitial_data\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 468\u001b[0m \u001b[38;5;66;03m# For impute_mode 'ignore', do not recommend space entries that are not\u001b[39;00m\n\u001b[1;32m 469\u001b[0m \u001b[38;5;66;03m# available in the lookup\u001b[39;00m\n\u001b[1;32m 470\u001b[0m \u001b[38;5;66;03m# TODO [16605]: Avoid direct manipulation of metadata\u001b[39;00m\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", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/campaign.py:234\u001b[0m, in \u001b[0;36mCampaign.add_measurements\u001b[0;34m(self, data, numerical_measurements_must_be_within_tolerance)\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[1;32m 228\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe numerical parameter \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mparam\u001b[38;5;241m.\u001b[39mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m has non-numeric entries in\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 229\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m the provided dataframe.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 230\u001b[0m )\n\u001b[1;32m 232\u001b[0m \u001b[38;5;66;03m# Update meta data\u001b[39;00m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;66;03m# TODO: refactor responsibilities\u001b[39;00m\n\u001b[0;32m--> 234\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msearchspace\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdiscrete\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmark_as_measured\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 235\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnumerical_measurements_must_be_within_tolerance\u001b[49m\n\u001b[1;32m 236\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[38;5;66;03m# Read in measurements and add them to the database\u001b[39;00m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_batches_done \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/searchspace/discrete.py:508\u001b[0m, in \u001b[0;36mSubspaceDiscrete.mark_as_measured\u001b[0;34m(self, measurements, numerical_measurements_must_be_within_tolerance)\u001b[0m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmark_as_measured\u001b[39m(\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 497\u001b[0m measurements: pd\u001b[38;5;241m.\u001b[39mDataFrame,\n\u001b[1;32m 498\u001b[0m numerical_measurements_must_be_within_tolerance: \u001b[38;5;28mbool\u001b[39m,\n\u001b[1;32m 499\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 500\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Mark the given elements of the space as measured.\u001b[39;00m\n\u001b[1;32m 501\u001b[0m \n\u001b[1;32m 502\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[38;5;124;03m :func:`baybe.utils.dataframe.fuzzy_row_match`.\u001b[39;00m\n\u001b[1;32m 507\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 508\u001b[0m idxs_matched \u001b[38;5;241m=\u001b[39m \u001b[43mfuzzy_row_match\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 509\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexp_rep\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 510\u001b[0m \u001b[43m \u001b[49m\u001b[43mmeasurements\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 511\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 512\u001b[0m \u001b[43m \u001b[49m\u001b[43mnumerical_measurements_must_be_within_tolerance\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 513\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 514\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmetadata\u001b[38;5;241m.\u001b[39mloc[idxs_matched, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwas_measured\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/baybe/utils/dataframe.py:376\u001b[0m, in \u001b[0;36mfuzzy_row_match\u001b[0;34m(left_df, right_df, parameters, numerical_measurements_must_be_within_tolerance)\u001b[0m\n\u001b[1;32m 374\u001b[0m valid \u001b[38;5;241m&\u001b[39m\u001b[38;5;241m=\u001b[39m param\u001b[38;5;241m.\u001b[39mis_in_range(row[param\u001b[38;5;241m.\u001b[39mname])\n\u001b[1;32m 375\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m valid:\n\u001b[0;32m--> 376\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 377\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInput data on row with the index \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrow\u001b[38;5;241m.\u001b[39mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m has invalid \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalues in parameter \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mparam\u001b[38;5;241m.\u001b[39mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 379\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFor categorical parameters, values need to exactly match a \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 380\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalid choice defined in your config. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 381\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFor numerical parameters, a match is accepted only if \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 382\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mthe input value is within the specified tolerance/range. Set \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 383\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mthe flag \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnumerical_measurements_must_be_within_tolerance\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 384\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mto \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFalse\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m to disable this behavior.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 385\u001b[0m )\n\u001b[1;32m 387\u001b[0m \u001b[38;5;66;03m# Differentiate category-like and discrete numerical parameters\u001b[39;00m\n\u001b[1;32m 388\u001b[0m cat_cols \u001b[38;5;241m=\u001b[39m [p\u001b[38;5;241m.\u001b[39mname \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m parameters \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m p\u001b[38;5;241m.\u001b[39mis_numeric]\n", - "\u001b[0;31mValueError\u001b[0m: Input data on row with the index 168 has invalid values in parameter 'pH'. For categorical parameters, values need to exactly match a valid choice defined in your config. For numerical parameters, a match is accepted only if the input value is within the specified tolerance/range. Set the flag 'numerical_measurements_must_be_within_tolerance' to 'False' to disable this behavior." + " 0%| | 0/10 [00:00258.000000\n", " 258.000000\n", " 258.000000\n", - " 258.00000\n", + " 258.000000\n", " 258.000000\n", " \n", " \n", " mean\n", - " 149.067829\n", - " 6.503876\n", - " 0.007372\n", - " 0.10062\n", - " 34.822119\n", + " 161.091085\n", + " 6.579845\n", + " 0.008103\n", + " 0.127403\n", + " 38.761628\n", " \n", " \n", " std\n", - " 206.711763\n", - " 2.318154\n", - " 0.012956\n", - " 0.13914\n", - " 148.458258\n", + " 214.536317\n", + " 2.241608\n", + " 0.014335\n", + " 0.177444\n", + " 158.903313\n", " \n", " \n", " min\n", " 0.500000\n", " 0.000000\n", " 0.000010\n", - " 0.00000\n", - " -1569.000000\n", + " 0.000000\n", + " -1760.000000\n", " \n", " \n", " 25%\n", " 24.000000\n", - " 4.000000\n", + " 5.400000\n", " 0.001000\n", - " 0.05000\n", - " 20.000000\n", + " 0.050000\n", + " 30.000000\n", " \n", " \n", " 50%\n", " 24.000000\n", " 7.000000\n", " 0.001000\n", - " 0.10000\n", - " 50.000000\n", + " 0.100000\n", + " 57.500000\n", " \n", " \n", " 75%\n", - " 228.000000\n", + " 240.000000\n", " 7.000000\n", " 0.010000\n", - " 0.10000\n", - " 85.610833\n", + " 0.100000\n", + " 87.825000\n", " \n", " \n", " max\n", " 672.000000\n", " 10.000000\n", - " 0.050000\n", - " 0.60000\n", - " 99.900000\n", + " 0.100000\n", + " 0.600000\n", + " 100.000000\n", " \n", " \n", "\n", @@ -1007,27 +3559,27 @@ ], "text/plain": [ " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", - "count 258.000000 258.000000 258.000000 258.00000 \n", - "mean 149.067829 6.503876 0.007372 0.10062 \n", - "std 206.711763 2.318154 0.012956 0.13914 \n", - "min 0.500000 0.000000 0.000010 0.00000 \n", - "25% 24.000000 4.000000 0.001000 0.05000 \n", - "50% 24.000000 7.000000 0.001000 0.10000 \n", - "75% 228.000000 7.000000 0.010000 0.10000 \n", - "max 672.000000 10.000000 0.050000 0.60000 \n", + "count 258.000000 258.000000 258.000000 258.000000 \n", + "mean 161.091085 6.579845 0.008103 0.127403 \n", + "std 214.536317 2.241608 0.014335 0.177444 \n", + "min 0.500000 0.000000 0.000010 0.000000 \n", + "25% 24.000000 5.400000 0.001000 0.050000 \n", + "50% 24.000000 7.000000 0.001000 0.100000 \n", + "75% 240.000000 7.000000 0.010000 0.100000 \n", + "max 672.000000 10.000000 0.100000 0.600000 \n", "\n", " Efficiency \n", "count 258.000000 \n", - "mean 34.822119 \n", - "std 148.458258 \n", - "min -1569.000000 \n", - "25% 20.000000 \n", - "50% 50.000000 \n", - "75% 85.610833 \n", - "max 99.900000 " + "mean 38.761628 \n", + "std 158.903313 \n", + "min -1760.000000 \n", + "25% 30.000000 \n", + "50% 57.500000 \n", + "75% 87.825000 \n", + "max 100.000000 " ] }, - "execution_count": 49, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -1038,40 +3590,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 65, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " Scenario Random_Seed Initial_Data Iteration Num_Experiments \\\n", - "0 1 1337 0 0 1 \n", - "1 1 1337 0 1 2 \n", - "2 1 1337 0 2 3 \n", - "3 1 1337 0 3 4 \n", - "4 1 1337 0 4 5 \n", - ".. ... ... ... ... ... \n", - "95 20 1337 0 45 46 \n", - "96 20 1337 0 46 47 \n", - "97 20 1337 0 47 48 \n", - "98 20 1337 0 48 49 \n", - "99 20 1337 0 49 50 \n", - "\n", - " Efficiency_Measurements Efficiency_IterBest Efficiency_CumBest Fraction \n", - "0 [96.2] 96.200000 96.2 0.01 \n", - "1 [95.8] 95.800000 96.2 0.01 \n", - "2 [93.1] 93.100000 96.2 0.01 \n", - "3 [81.36636363636363] 81.366364 96.2 0.01 \n", - "4 [83.43] 83.430000 96.2 0.01 \n", - ".. ... ... ... ... \n", - "95 [59.0] 59.000000 96.2 0.20 \n", - "96 [63.0] 63.000000 96.2 0.20 \n", - "97 [67.0] 67.000000 96.2 0.20 \n", - "98 [21.45] 21.450000 96.2 0.20 \n", - "99 [45.0] 45.000000 96.2 0.20 \n", - "\n", - "[100 rows x 9 columns]\n" + "ename": "ValueError", + "evalue": "No objects to concatenate", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[65], line 7\u001b[0m\n\u001b[1;32m 4\u001b[0m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFraction\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m fractions[i]\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Concatenate the dataframes into a single dataframe\u001b[39;00m\n\u001b[0;32m----> 7\u001b[0m concatenated_df \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresults_transfer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mignore_index\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;66;03m# Print the concatenated dataframe\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(concatenated_df)\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:382\u001b[0m, in \u001b[0;36mconcat\u001b[0;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[0m\n\u001b[1;32m 379\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m copy \u001b[38;5;129;01mand\u001b[39;00m using_copy_on_write():\n\u001b[1;32m 380\u001b[0m copy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m--> 382\u001b[0m op \u001b[38;5;241m=\u001b[39m \u001b[43m_Concatenator\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 383\u001b[0m \u001b[43m \u001b[49m\u001b[43mobjs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 384\u001b[0m \u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 385\u001b[0m \u001b[43m \u001b[49m\u001b[43mignore_index\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore_index\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 386\u001b[0m \u001b[43m \u001b[49m\u001b[43mjoin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 387\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 388\u001b[0m \u001b[43m \u001b[49m\u001b[43mlevels\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlevels\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 389\u001b[0m \u001b[43m \u001b[49m\u001b[43mnames\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnames\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 390\u001b[0m \u001b[43m \u001b[49m\u001b[43mverify_integrity\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mverify_integrity\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 391\u001b[0m \u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 392\u001b[0m \u001b[43m \u001b[49m\u001b[43msort\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msort\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 393\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 395\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m op\u001b[38;5;241m.\u001b[39mget_result()\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:445\u001b[0m, in \u001b[0;36m_Concatenator.__init__\u001b[0;34m(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001b[0m\n\u001b[1;32m 442\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverify_integrity \u001b[38;5;241m=\u001b[39m verify_integrity\n\u001b[1;32m 443\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy \u001b[38;5;241m=\u001b[39m copy\n\u001b[0;32m--> 445\u001b[0m objs, keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_clean_keys_and_objs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobjs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;66;03m# figure out what our result ndim is going to be\u001b[39;00m\n\u001b[1;32m 448\u001b[0m ndims \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_ndims(objs)\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:507\u001b[0m, in \u001b[0;36m_Concatenator._clean_keys_and_objs\u001b[0;34m(self, objs, keys)\u001b[0m\n\u001b[1;32m 504\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(objs)\n\u001b[1;32m 506\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(objs_list) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 507\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo objects to concatenate\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 509\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keys \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 510\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(com\u001b[38;5;241m.\u001b[39mnot_none(\u001b[38;5;241m*\u001b[39mobjs_list))\n", + "\u001b[0;31mValueError\u001b[0m: No objects to concatenate" ] } ], @@ -1090,7 +3623,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1218,12 +3751,12 @@ } ], "source": [ - "result_fraction.describe()" + "results = " ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1247,6 +3780,32 @@ " y=\"Efficiency_CumBest\",\n", ")" ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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HGYy/awtW7bgvvvug0ajQc+ePfHbb7/hwIED6NGjB7y9vREXF4c///zT4ud/+OGH6NChA9RqNdq3b4/333/ffM503a+//hr9+vWDp6cnunbtir179wIAdu3ahfHjx0On05l7rt566y0AwPvvv4/IyEio1WoEBgbiscces+reEzV0DDNEDYhcLseiRYuwcuVK/P777zZf58cff8SlS5fw888/45133sHcuXPx0EMPwd/fH2lpaZg4cSJeeOGFev2MylasWIHCwkLMmDEDAPDmm28iPz8f7733nkW7119/Ha+99hoOHz6MmJgYDB06FFeuXAEA5Ofno3///ujWrRsOHjyIHTt2IDc3F0888YTFNdavXw+lUok9e/ZgzZo1NdY0d+5czJo1C7/++isUCgVGjx6N6dOn491338V///tfnDlzBnPmzDG337BhA+bMmYOFCxfi1KlTWLRoEWbPno3169dbXPfNN9/EtGnTcOTIEbRt2xajRo1CRUUF7r33XixfvhxardbcczVt2jQcPHgQkyZNwvz583H69Gns2LEDffr0qdf9JmpwnLY/NxE51NixY8Vhw4aJoiiK99xzjxgfHy+Koihu3bpVNP2nPnfuXLFr164W37ds2TIxLCzM4jphYWGiwWAwH2vXrp143333mb+uqKgQvby8xE2bNtWpNgCiWq0Wvby8LD7nz583t/nll19EDw8Pcfbs2aJCoRD/+9//ms9lZWWJAMTFixebj5WXl4t33HGHuGTJElEURXHBggXiwIEDLX7uxYsXRQDi6dOnRVEUxb59+4rdunWrtr6tW7da/KwPP/zQfH7Tpk0iADElJcV8LDExUWzXrp3564iICHHjxo0W112wYIEYExNT43VPnDghAhBPnToliqIoJiUlib6+vhbX+Oqrr0StVivq9foqdRPRdQrJUhQROcySJUvQv39/TJs2zabv79SpE2Symx23gYGB6Ny5s/lruVyOpk2b4vLly3W+5rJlyxAbG2txLCQkxPznmJgYTJs2DQsWLMAbb7yB3r17V7lGTEyM+c8KhQI9evTAqVOnAABHjx7FTz/9BG9v7yrfl5mZibZt2wIAunfvXqd6u3TpYv5zYGAgACAqKsrimOn3LywsRGZmJp599lk8//zz5jYVFRXw9fWt8brBwcEAgMuXL6N9+/bV1vHAAw8gLCwMrVu3xuDBgzF48GA88sgj8PT0rNPvQdQYMMwQNUB9+vTBoEGDMHPmTIwbN858XCaTQRRFi7bl5eVVvt/Dw8Pia0EQqj1mNBrrXFNQUBDatGlT43mj0Yg9e/ZALpfjzJkzdb6uSUFBAYYOHYolS5ZUOWcKDQDg5eVVp+tV/n1Nb4Pdesz0+xcUFAAAPvjgA0RHR1tcRy6X3/a6td1HHx8f/Prrr9i1axe+//57zJkzB2+99RYOHDjAN5+IbuCcGaIGavHixfj222/NE0wBICAgADk5ORaB5siRIxJUV9Xf//53/O9//0Nqaip27NhR7QTjffv2mf9cUVGBQ4cOoUOHDgCAu+66CydOnECrVq3Qpk0bi09dA4ytAgMDERISgrNnz1b52eHh4XW+jlKphMFgqHJcoVAgNjYWS5cuRXp6Os6dO4cff/zRnr8CkVtjzwxRAxUVFYUxY8ZgxYoV5mP3338//vzzTyxduhSPPfYYduzYge3bt0Or1Tq8nvz8fOTk5Fgc8/HxgZeXFw4fPow5c+bgyy+/RK9evfDOO+/g1VdfRd++fdG6dWtz+1WrViEyMhIdOnTAsmXLkJeXh/j4eABAQkICPvjgA4waNQrTp09HkyZNcObMGWzevBkffvhhlR4Se5s3bx4mTZoEX19fDB48GKWlpTh48CDy8vIwderUOl2jVatWKCgoQEpKCrp27QpPT0/8+OOPOHv2LPr06QN/f3/85z//gdFoRLt27Rz6+xC5E/bMEDVg8+fPtxjC6NChA95//32sWrUKXbt2xf79+22eV2Ot8ePHIzg42OKzcuVKlJSU4KmnnsK4ceMwdOhQAMCECRPQr18/PP300xY9FYsXL8bixYvRtWtX7N69G9988w2aNWsG4Pr8mz179sBgMGDgwIGIiorC5MmT4efnZzH/x1Gee+45fPjhh0hKSkJUVBT69u2LdevWWdUzc++992LixIl48sknERAQgKVLl8LPzw9ff/01+vfvjw4dOmDNmjXYtGkTOnXq5MDfhsi9COKtA+hERC7m3LlzCA8Px+HDh6usk0NExJ4ZIiIicmsMM0RUL4sWLYK3t3e1H1fY74iIGj4OMxFRvVy9ehVXr16t9pxGo0GLFi2cXBERNTYMM0REROTWOMxEREREbo1hhoiIiNwawwwRERG5NYYZIiIicmsMM0REROTWGGaIiIjIrTHMEBERkVtjmCEiIiK39v9zIb8V8A0DiwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.lineplot(\n", + " data=result_transfer_learning,\n", + " marker=\"o\",\n", + " markersize=10,\n", + " x=\"Num_Experiments\",\n", + " y=\"Efficiency_CumBest\",\n", + ")" + ] } ], "metadata": {