diff --git a/abfe_tutorial/abfe_analysis.ipynb b/abfe_tutorial/abfe_analysis.ipynb index 3acf40c..d4bccee 100644 --- a/abfe_tutorial/abfe_analysis.ipynb +++ b/abfe_tutorial/abfe_analysis.ipynb @@ -70,12 +70,8 @@ "outputs": [], "source": [ "import numpy as np\n", - "import glob\n", - "import json\n", - "import csv\n", "import os\n", "import pathlib\n", - "from typing import Literal, List\n", "from gufe.tokenization import JSON_HANDLER\n", "import pandas as pd\n", "from openff.units import unit\n", @@ -94,7 +90,7 @@ "### Some helper methods to load and format the ABFE results\n", "Over the next few cells, we define some helper methods that we will use to load and format the ABFE results.\n", "\n", - "Note: you do not need to directly interact with any of these, unless you are looking to change the behaviour of how data is being processed" + "**Note: you do not need to directly interact with any of these, unless you are looking to change the behaviour of how data is being processed**" ] }, { @@ -182,8 +178,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", - "\n", "def _get_legs_from_result_jsons(\n", " result_fns: list[pathlib.Path],\n", ") -> dict[str, dict[str, list]]:\n", diff --git a/openmm_septop/septop_analysis.ipynb b/openmm_septop/septop_analysis.ipynb index 5e44a0e..b10615e 100644 --- a/openmm_septop/septop_analysis.ipynb +++ b/openmm_septop/septop_analysis.ipynb @@ -35,37 +35,34 @@ "name": "stdout", "output_type": "stream", "text": [ - "--2025-10-14 20:00:18-- https://zenodo.org/records/17435569/files/septop_results.zip\n", - "Resolving zenodo.org (zenodo.org)... 188.185.45.92, 188.185.48.194, 188.185.43.25\n", - "Connecting to zenodo.org (zenodo.org)|188.185.45.92|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 5974197 (5.7M) [application/octet-stream]\n", - "Saving to: ‘septop_results.zip’\n", - "\n", - "septop_results.zip 100%[===================>] 5.70M 559KB/s in 11s \n", - "\n", - "2025-10-14 20:00:30 (529 KB/s) - ‘septop_results.zip’ saved [5974197/5974197]\n", - "\n", + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 12.7M 100 12.7M 0 0 604k 0 0:00:21 0:00:21 --:--:-- 693k\n", "Archive: septop_results.zip\n", - " creating: septop_results\n", - " creating: septop_results/results_2\n", - " inflating: septop_results/results_2/rbfe_7a_7b.json \n", - " inflating: septop_results/results_2/rbfe_1_7b.json \n", - " inflating: septop_results/results_2/rbfe_1_7a.json \n", - " creating: septop_results/results_1\n", - " inflating: septop_results/results_1/rbfe_7a_7b.json \n", - " inflating: septop_results/results_1/rbfe_1_7a.json \n", - " creating: septop_results/results_0\n", - " inflating: septop_results/results_0/rbfe_7a_7b.json \n", - " inflating: septop_results/results_0/rbfe_1_7b.json \n", - " inflating: septop_results/results_0/rbfe_1_7a.json \n", - " inflating: septop_results/results_0/rbfe_1_25.json \n" + " inflating: septop_results/pre_openfe_v1.11/results_2/rbfe_1_7b.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_2/rbfe_7a_7b.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_2/rbfe_1_7a.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_1/rbfe_7a_7b.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_1/rbfe_1_7a.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_0/rbfe_1_7b.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_0/rbfe_1_25.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_0/rbfe_7a_7b.json \n", + " inflating: septop_results/pre_openfe_v1.11/results_0/rbfe_1_7a.json \n", + " inflating: septop_results/current/results_2/rbfe_1_7b.json \n", + " inflating: septop_results/current/results_2/rbfe_7a_7b.json \n", + " inflating: septop_results/current/results_2/rbfe_1_7a.json \n", + " inflating: septop_results/current/results_1/rbfe_7a_7b.json \n", + " inflating: septop_results/current/results_1/rbfe_1_7a.json \n", + " inflating: septop_results/current/results_0/rbfe_1_7b.json \n", + " inflating: septop_results/current/results_0/rbfe_1_25.json \n", + " inflating: septop_results/current/results_0/rbfe_7a_7b.json \n", + " inflating: septop_results/current/results_0/rbfe_1_7a.json \n" ] } ], "source": [ - "!wget https://zenodo.org/records/17435569/files/septop_results.zip\n", - "!unzip septop_results.zip" + "!curl -O https://zenodo.org/records/19805681/files/septop_results.zip\n", + "!unzip -o septop_results.zip" ] }, { @@ -80,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "7fbf1482-25ca-427b-a881-af88a983461c", "metadata": {}, "outputs": [], @@ -114,6 +111,40 @@ { "cell_type": "code", "execution_count": 3, + "id": "768e3c9a-a09d-4817-aa25-21c8809b263e", + "metadata": {}, + "outputs": [], + "source": [ + "def _get_names(result: dict) -> tuple[str, str]:\n", + " \"\"\"Get the ligand names from a unit's results data.\n", + "\n", + " Parameters\n", + " ----------\n", + " result : dict\n", + " A results dict.\n", + "\n", + " Returns\n", + " -------\n", + " tuple[str, str]\n", + " Ligand names corresponding to the results.\n", + " \"\"\"\n", + "\n", + " solvent_data = list(result[\"protocol_result\"][\"data\"][\"solvent\"].values())[0][0]\n", + "\n", + " try:\n", + " setup_data = solvent_data[\"inputs\"][\"setup\"][\"inputs\"]\n", + " except KeyError:\n", + " setup_data = solvent_data[\"inputs\"]\n", + "\n", + " name_A = setup_data[\"alchemical_components\"][\"stateA\"][0][\"molprops\"][\"ofe-name\"]\n", + " name_B = setup_data[\"alchemical_components\"][\"stateB\"][0][\"molprops\"][\"ofe-name\"]\n", + "\n", + " return str(name_A), str(name_B)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "id": "c185164a-f1c6-483b-b013-f4d499889570", "metadata": {}, "outputs": [], @@ -159,7 +190,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "3733c540-de62-45a0-ba66-268397a38b49", "metadata": {}, "outputs": [], @@ -194,68 +225,43 @@ " continue\n", "\n", " ddgs[names][\"overall\"].append([result[\"estimate\"], result[\"uncertainty\"]])\n", - " proto_key = [\n", - " k\n", - " for k in result[\"unit_results\"].keys()\n", - " if k.startswith(\"ProtocolUnitResult\")\n", - " ]\n", + " proto_key = [k for k in result[\"unit_results\"].keys() if k.startswith(\"ProtocolUnitResult\")]\n", + " # In openfe v1.11+, we only want to pick up results from\n", + " # the Analysis Unit. To ensure backwards compatibility,\n", + " # we check if there are any analysis units. If so,\n", + " # we set a flag and later exclude Setup and Run.\n", + " has_analysis_units = any(\n", + " [\"Analysis\" in result[\"unit_results\"][p][\"source_key\"] for p in proto_key]\n", + " )\n", + "\n", " for p in proto_key:\n", + " # Skip non-analysis units if we have any\n", + " if has_analysis_units and (\n", + " \"Setup\" in result[\"unit_results\"][p][\"source_key\"]\n", + " or \"Run\" in result[\"unit_results\"][p][\"source_key\"]\n", + " ):\n", + " continue\n", + "\n", " if \"unit_estimate\" in result[\"unit_results\"][p][\"outputs\"]:\n", " simtype = result[\"unit_results\"][p][\"outputs\"][\"simtype\"]\n", " dg = result[\"unit_results\"][p][\"outputs\"][\"unit_estimate\"]\n", " dg_error = result[\"unit_results\"][p][\"outputs\"][\"unit_estimate_error\"]\n", "\n", " ddgs[names][simtype].append([dg, dg_error])\n", - " elif \"standard_state_correction_A\" in result[\"unit_results\"][p][\"outputs\"]:\n", - " corr_A = result[\"unit_results\"][p][\"outputs\"][\n", - " \"standard_state_correction_A\"\n", - " ]\n", - " corr_B = result[\"unit_results\"][p][\"outputs\"][\n", - " \"standard_state_correction_B\"\n", - " ]\n", + "\n", + " if \"standard_state_correction_A\" in result[\"unit_results\"][p][\"outputs\"]:\n", + " corr_A = result[\"unit_results\"][p][\"outputs\"][\"standard_state_correction_A\"]\n", + " corr_B = result[\"unit_results\"][p][\"outputs\"][\"standard_state_correction_B\"]\n", " ddgs[names][\"standard_state_correction_A\"].append(\n", " [corr_A, 0 * unit.kilocalorie_per_mole]\n", " )\n", " ddgs[names][\"standard_state_correction_B\"].append(\n", " [corr_B, 0 * unit.kilocalorie_per_mole]\n", " )\n", - " else:\n", - " continue\n", "\n", " return ddgs" ] }, - { - "cell_type": "code", - "execution_count": 5, - "id": "08afcbcf-34a8-4450-a967-eb4ed5800ee1", - "metadata": {}, - "outputs": [], - "source": [ - "def _get_names(result: dict) -> tuple[str, str]:\n", - " \"\"\"Get the ligand names from a unit's results data.\n", - "\n", - " Parameters\n", - " ----------\n", - " result : dict\n", - " A results dict.\n", - "\n", - " Returns\n", - " -------\n", - " tuple[str, str]\n", - " Ligand names corresponding to the results.\n", - " \"\"\"\n", - " try:\n", - " nm = list(result[\"unit_results\"].values())[0][\"name\"]\n", - "\n", - " except KeyError:\n", - " raise ValueError(\"Failed to guess names\")\n", - "\n", - " toks = nm.split(\",\")\n", - " toks = toks[1].split()\n", - " return toks[1], toks[3]" - ] - }, { "cell_type": "code", "execution_count": 6, @@ -267,25 +273,17 @@ " \"\"\"\n", " Calculate the error of the estimate as the std of the repeats\n", " \"\"\"\n", - " return np.std([v[0].m for v in r[\"overall\"]])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "30faf828", - "metadata": {}, - "outputs": [], - "source": [ + " return np.std([v[0].m for v in r[\"overall\"]])\n", + "\n", "def _error_mbar(r):\n", " \"\"\"\n", " Calculate the error of the estimate using the reported MBAR errors.\n", "\n", " This also takes into account that repeats may have been run for this edge by using the average MBAR error\n", " \"\"\"\n", - " complex_errors = [x[1].m for x in r[\"complex\"]]\n", - " solvent_errors = [x[1].m for x in r[\"solvent\"]]\n", - " return np.sqrt(np.mean(complex_errors) ** 2 + np.mean(solvent_errors) ** 2)" + " complex_errors = np.array([x[1].m for x in r[\"complex\"]])\n", + " solvent_errors = np.array([x[1].m for x in r[\"solvent\"]])\n", + " return np.sqrt(np.mean(complex_errors**2) + np.mean(solvent_errors**2))" ] }, { @@ -306,7 +304,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "e025eb3c-dc67-4170-afbe-0923b2cff0b4", "metadata": {}, "outputs": [], @@ -337,7 +335,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "411fe035-2ae2-4f98-9bab-19764af724ce", "metadata": {}, "outputs": [], @@ -379,7 +377,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "213f1c7b-185f-403b-a98c-22d31a5e60e5", "metadata": {}, "outputs": [], @@ -427,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "76ced921-9d12-40c1-b95e-57430ea84778", "metadata": {}, "outputs": [], @@ -491,35 +489,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "3b81c26b-4e3d-4bca-bfb1-4f72c75ec1bf", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ialibay/software/mambaforge/install/envs/openfe/lib/python3.12/site-packages/openmoltools/utils.py:9: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.\n", - " from pkg_resources import resource_filename\n", - "/home/ialibay/software/mambaforge/install/envs/openfe/lib/python3.12/site-packages/Bio/Application/__init__.py:39: BiopythonDeprecationWarning: The Bio.Application modules and modules relying on it have been deprecated.\n", - "\n", - "Due to the on going maintenance burden of keeping command line application\n", - "wrappers up to date, we have decided to deprecate and eventually remove these\n", - "modules.\n", - "\n", - "We instead now recommend building your command line and invoking it directly\n", - "with the subprocess module.\n", - " warnings.warn(\n" - ] - } - ], + "outputs": [], "source": [ "# Specify paths to result directories\n", - "results_dir = [\n", - " pathlib.Path(\"septop_results/results_0\"),\n", - " pathlib.Path(\"septop_results/results_1\"),\n", - " pathlib.Path(\"septop_results/results_2\"),\n", - "]\n", + "results_dir = [pathlib.Path(\"septop_results/current/\")]\n", "ddgs = extract_results_dict(results_dir)" ] }, @@ -537,7 +513,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "46996a74-709c-41f2-ac39-0f77fb33371e", "metadata": {}, "outputs": [], @@ -548,7 +524,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "b2b6fdf0", "metadata": {}, "outputs": [ @@ -584,29 +560,29 @@ " 0\n", " 1\n", " 25\n", - " 2.0\n", - " 1.6\n", + " 0.2\n", + " 1.4\n", " \n", " \n", " 1\n", " 1\n", " 7a\n", - " 0.6\n", - " 1.5\n", + " 1.3\n", + " 1.6\n", " \n", " \n", " 2\n", " 1\n", " 7b\n", - " 0.1\n", - " 1.5\n", + " 1.7\n", + " 1.6\n", " \n", " \n", " 3\n", " 7a\n", " 7b\n", - " 1.9\n", - " 1.5\n", + " 1.8\n", + " 1.6\n", " \n", " \n", "\n", @@ -614,13 +590,13 @@ ], "text/plain": [ " ligand_i ligand_j DDG(i->j) (kcal/mol) uncertainty (kcal/mol)\n", - "0 1 25 2.0 1.6\n", - "1 1 7a 0.6 1.5\n", - "2 1 7b 0.1 1.5\n", - "3 7a 7b 1.9 1.5" + "0 1 25 0.2 1.4\n", + "1 1 7a 1.3 1.6\n", + "2 1 7b 1.7 1.6\n", + "3 7a 7b 1.8 1.6" ] }, - "execution_count": 14, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -643,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "22e25226-0073-40a4-9cbc-da802a29fc25", "metadata": {}, "outputs": [], @@ -654,7 +630,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "cda55931", "metadata": {}, "outputs": [ @@ -688,26 +664,26 @@ " \n", " 0\n", " 1\n", - " -0.675\n", - " 0.664267\n", + " -0.800000\n", + " 0.665207\n", " \n", " \n", " 1\n", " 25\n", - " 1.325\n", - " 1.311964\n", + " -0.600000\n", + " 1.192686\n", " \n", " \n", " 2\n", " 7a\n", - " -0.875\n", - " 0.903466\n", + " 0.033333\n", + " 0.932291\n", " \n", " \n", " 3\n", " 7b\n", - " 0.225\n", - " 0.903466\n", + " 1.366667\n", + " 0.932291\n", " \n", " \n", "\n", @@ -715,13 +691,13 @@ ], "text/plain": [ " ligand DG (kcal/mol) uncertainty (kcal/mol)\n", - "0 1 -0.675 0.664267\n", - "1 25 1.325 1.311964\n", - "2 7a -0.875 0.903466\n", - "3 7b 0.225 0.903466" + "0 1 -0.800000 0.665207\n", + "1 25 -0.600000 1.192686\n", + "2 7a 0.033333 0.932291\n", + "3 7b 1.366667 0.932291" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -743,7 +719,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "8b2c1dd8-ffa3-4585-94a7-4a1ed1454f30", "metadata": {}, "outputs": [], @@ -754,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "08b72901-9c71-460b-b5da-9fb4a35e07f7", "metadata": {}, "outputs": [ @@ -792,16 +768,16 @@ " complex\n", " 1\n", " 25\n", - " 39.88\n", - " 0.61\n", + " 42.66\n", + " 0.73\n", " \n", " \n", " 1\n", " solvent\n", " 1\n", " 25\n", - " 37.9\n", - " 1.4\n", + " 42.4\n", + " 1.2\n", " \n", " \n", " 2\n", @@ -816,7 +792,7 @@ " standard_state_correction_B\n", " 1\n", " 25\n", - " 9.3\n", + " 9.0\n", " 0.0\n", " \n", " \n", @@ -824,39 +800,39 @@ " complex\n", " 1\n", " 7a\n", - " -0.82\n", - " 0.71\n", + " 0.82\n", + " 0.84\n", " \n", " \n", " 5\n", " complex\n", " 1\n", " 7a\n", - " -0.35\n", - " 0.69\n", + " 0.32\n", + " 0.89\n", " \n", " \n", " 6\n", " complex\n", " 1\n", " 7a\n", - " -2.10\n", - " 0.62\n", + " 0.59\n", + " 0.69\n", " \n", " \n", " 7\n", " solvent\n", " 1\n", " 7a\n", - " -1.9\n", - " 1.2\n", + " -1.1\n", + " 1.4\n", " \n", " \n", " 8\n", " solvent\n", " 1\n", " 7a\n", - " -1.5\n", + " -0.7\n", " 1.4\n", " \n", " \n", @@ -864,7 +840,7 @@ " solvent\n", " 1\n", " 7a\n", - " -1.6\n", + " -0.8\n", " 1.4\n", " \n", " \n", @@ -872,7 +848,7 @@ " standard_state_correction_A\n", " 1\n", " 7a\n", - " -8.8\n", + " -9.1\n", " 0.0\n", " \n", " \n", @@ -880,7 +856,7 @@ " standard_state_correction_A\n", " 1\n", " 7a\n", - " -9.0\n", + " -9.2\n", " 0.0\n", " \n", " \n", @@ -896,7 +872,7 @@ " standard_state_correction_B\n", " 1\n", " 7a\n", - " 9.1\n", + " 9.0\n", " 0.0\n", " \n", " \n", @@ -904,7 +880,7 @@ " standard_state_correction_B\n", " 1\n", " 7a\n", - " 9.1\n", + " 9.0\n", " 0.0\n", " \n", " \n", @@ -920,23 +896,23 @@ " complex\n", " 1\n", " 7b\n", - " 2.48\n", - " 0.84\n", + " 0.39\n", + " 0.73\n", " \n", " \n", " 17\n", " complex\n", " 1\n", " 7b\n", - " 3.63\n", - " 0.74\n", + " 0.82\n", + " 0.78\n", " \n", " \n", " 18\n", " solvent\n", " 1\n", " 7b\n", - " 2.8\n", + " -1.3\n", " 1.3\n", " \n", " \n", @@ -944,15 +920,15 @@ " solvent\n", " 1\n", " 7b\n", - " 3.1\n", - " 1.3\n", + " -0.8\n", + " 1.4\n", " \n", " \n", " 20\n", " standard_state_correction_A\n", " 1\n", " 7b\n", - " -9.0\n", + " -9.3\n", " 0.0\n", " \n", " \n", @@ -968,7 +944,7 @@ " standard_state_correction_B\n", " 1\n", " 7b\n", - " 9.1\n", + " 9.4\n", " 0.0\n", " \n", " \n", @@ -984,48 +960,48 @@ " complex\n", " 7a\n", " 7b\n", - " 3.17\n", - " 0.80\n", + " -0.64\n", + " 0.53\n", " \n", " \n", " 25\n", " complex\n", " 7a\n", " 7b\n", - " 1.65\n", - " 0.68\n", + " -1.53\n", + " 0.78\n", " \n", " \n", " 26\n", " complex\n", " 7a\n", " 7b\n", - " -2.06\n", - " 0.58\n", + " 3.74\n", + " 0.63\n", " \n", " \n", " 27\n", " solvent\n", " 7a\n", " 7b\n", - " -1.2\n", - " 1.3\n", + " -1.0\n", + " 1.4\n", " \n", " \n", " 28\n", " solvent\n", " 7a\n", " 7b\n", - " -0.9\n", - " 1.3\n", + " -1.3\n", + " 1.5\n", " \n", " \n", " 29\n", " solvent\n", " 7a\n", " 7b\n", - " -1.1\n", - " 1.2\n", + " -1.2\n", + " 1.4\n", " \n", " \n", " 30\n", @@ -1040,7 +1016,7 @@ " standard_state_correction_A\n", " 7a\n", " 7b\n", - " -9.4\n", + " -9.1\n", " 0.0\n", " \n", " \n", @@ -1048,7 +1024,7 @@ " standard_state_correction_A\n", " 7a\n", " 7b\n", - " -9.0\n", + " -9.2\n", " 0.0\n", " \n", " \n", @@ -1056,7 +1032,7 @@ " standard_state_correction_B\n", " 7a\n", " 7b\n", - " 8.9\n", + " 9.4\n", " 0.0\n", " \n", " \n", @@ -1064,7 +1040,7 @@ " standard_state_correction_B\n", " 7a\n", " 7b\n", - " 9.3\n", + " 8.9\n", " 0.0\n", " \n", " \n", @@ -1072,7 +1048,7 @@ " standard_state_correction_B\n", " 7a\n", " 7b\n", - " 9.0\n", + " 9.2\n", " 0.0\n", " \n", " \n", @@ -1081,52 +1057,52 @@ ], "text/plain": [ " leg ligand_i ligand_j DG(i->j) (kcal/mol) \\\n", - "0 complex 1 25 39.88 \n", - "1 solvent 1 25 37.9 \n", + "0 complex 1 25 42.66 \n", + "1 solvent 1 25 42.4 \n", "2 standard_state_correction_A 1 25 -9.2 \n", - "3 standard_state_correction_B 1 25 9.3 \n", - "4 complex 1 7a -0.82 \n", - "5 complex 1 7a -0.35 \n", - "6 complex 1 7a -2.10 \n", - "7 solvent 1 7a -1.9 \n", - "8 solvent 1 7a -1.5 \n", - "9 solvent 1 7a -1.6 \n", - "10 standard_state_correction_A 1 7a -8.8 \n", - "11 standard_state_correction_A 1 7a -9.0 \n", + "3 standard_state_correction_B 1 25 9.0 \n", + "4 complex 1 7a 0.82 \n", + "5 complex 1 7a 0.32 \n", + "6 complex 1 7a 0.59 \n", + "7 solvent 1 7a -1.1 \n", + "8 solvent 1 7a -0.7 \n", + "9 solvent 1 7a -0.8 \n", + "10 standard_state_correction_A 1 7a -9.1 \n", + "11 standard_state_correction_A 1 7a -9.2 \n", "12 standard_state_correction_A 1 7a -9.1 \n", - "13 standard_state_correction_B 1 7a 9.1 \n", - "14 standard_state_correction_B 1 7a 9.1 \n", + "13 standard_state_correction_B 1 7a 9.0 \n", + "14 standard_state_correction_B 1 7a 9.0 \n", "15 standard_state_correction_B 1 7a 9.0 \n", - "16 complex 1 7b 2.48 \n", - "17 complex 1 7b 3.63 \n", - "18 solvent 1 7b 2.8 \n", - "19 solvent 1 7b 3.1 \n", - "20 standard_state_correction_A 1 7b -9.0 \n", + "16 complex 1 7b 0.39 \n", + "17 complex 1 7b 0.82 \n", + "18 solvent 1 7b -1.3 \n", + "19 solvent 1 7b -0.8 \n", + "20 standard_state_correction_A 1 7b -9.3 \n", "21 standard_state_correction_A 1 7b -9.3 \n", - "22 standard_state_correction_B 1 7b 9.1 \n", + "22 standard_state_correction_B 1 7b 9.4 \n", "23 standard_state_correction_B 1 7b 9.3 \n", - "24 complex 7a 7b 3.17 \n", - "25 complex 7a 7b 1.65 \n", - "26 complex 7a 7b -2.06 \n", - "27 solvent 7a 7b -1.2 \n", - "28 solvent 7a 7b -0.9 \n", - "29 solvent 7a 7b -1.1 \n", + "24 complex 7a 7b -0.64 \n", + "25 complex 7a 7b -1.53 \n", + "26 complex 7a 7b 3.74 \n", + "27 solvent 7a 7b -1.0 \n", + "28 solvent 7a 7b -1.3 \n", + "29 solvent 7a 7b -1.2 \n", "30 standard_state_correction_A 7a 7b -9.0 \n", - "31 standard_state_correction_A 7a 7b -9.4 \n", - "32 standard_state_correction_A 7a 7b -9.0 \n", - "33 standard_state_correction_B 7a 7b 8.9 \n", - "34 standard_state_correction_B 7a 7b 9.3 \n", - "35 standard_state_correction_B 7a 7b 9.0 \n", + "31 standard_state_correction_A 7a 7b -9.1 \n", + "32 standard_state_correction_A 7a 7b -9.2 \n", + "33 standard_state_correction_B 7a 7b 9.4 \n", + "34 standard_state_correction_B 7a 7b 8.9 \n", + "35 standard_state_correction_B 7a 7b 9.2 \n", "\n", " uncertainty (kcal/mol) \n", - "0 0.61 \n", - "1 1.4 \n", + "0 0.73 \n", + "1 1.2 \n", "2 0.0 \n", "3 0.0 \n", - "4 0.71 \n", - "5 0.69 \n", - "6 0.62 \n", - "7 1.2 \n", + "4 0.84 \n", + "5 0.89 \n", + "6 0.69 \n", + "7 1.4 \n", "8 1.4 \n", "9 1.4 \n", "10 0.0 \n", @@ -1135,20 +1111,20 @@ "13 0.0 \n", "14 0.0 \n", "15 0.0 \n", - "16 0.84 \n", - "17 0.74 \n", + "16 0.73 \n", + "17 0.78 \n", "18 1.3 \n", - "19 1.3 \n", + "19 1.4 \n", "20 0.0 \n", "21 0.0 \n", "22 0.0 \n", "23 0.0 \n", - "24 0.80 \n", - "25 0.68 \n", - "26 0.58 \n", - "27 1.3 \n", - "28 1.3 \n", - "29 1.2 \n", + "24 0.53 \n", + "25 0.78 \n", + "26 0.63 \n", + "27 1.4 \n", + "28 1.5 \n", + "29 1.4 \n", "30 0.0 \n", "31 0.0 \n", "32 0.0 \n", @@ -1157,7 +1133,7 @@ "35 0.0 " ] }, - "execution_count": 18, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1183,7 +1159,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.8" + "version": "3.13.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": {