diff --git a/.gitignore b/.gitignore index b41f4b0..f467f00 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ slurm.* .old *.parquet +data/thermo/*.csv + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/data/thermo/README.md b/data/thermo/README.md new file mode 100644 index 0000000..c4a40bd --- /dev/null +++ b/data/thermo/README.md @@ -0,0 +1,78 @@ +# QuantumPioneer Species Thermodynamics Dataset + +| Column | Type | Units | Description | +| ---------------------------- | ------ | ------------ | ----------------------------------------------- | +| **`smiles`** | string | — | Canonical SMILES representation of the species | +| **`H298`** | number | J/mol | Standard enthalpy of formation at 298 K | +| **`S298`** | number | J/(mol·K) | Standard entropy of formation at 298 K | +| **`Cp300`** | number | J/(mol·K) | Constant pressure heat capacity at 300 K | +| **`dlpno_sp_hartree`** | number | Hartree | DLPNO-CCSD(T)-F12d single-point energy | +| **`dft_zpe_scaled_hartree`** | number | Hartree | Scaled DFT zero-point energy (factor: 0.972387) | +| **`CpInf`** | number | J/(mol·K) | Heat capacity at infinite temperature | +| **`a0`** | number | — | Zeroth-order Wilhoit polynomial coefficient | +| **`a1`** | number | — | First-order Wilhoit polynomial coefficient | +| **`a2`** | number | — | Second-order Wilhoit polynomial coefficient | +| **`a3`** | number | — | Third-order Wilhoit polynomial coefficient | +| **`H0`** | number | J/mol | Wilhoit integration constant for enthalpy | +| **`S0`** | number | J/(mol·K) | Wilhoit integration constant for entropy | +| **`B`** | number | K | Wilhoit scaled temperature coefficient | +| **`DHPM`** | number | J/mol | Petersson-to-Melius enthalpy difference | + +## Notes + +- All molecular structures are represented using canonical SMILES without atom map numbers + +- Thermodynamic properties (H298, S298, Cp300) are calculated from DFT-optimized geometries with +DLPNO-CCSD(T)-F12d single-point calculations + +- The standard enthalpy of formation (`H298`) and Wilhoit integration constant for enthalpy (`H0`) +derive from calculations using Petersson-type bond additivity corrections (BACs). Add `DHPM` to +either of these in order to obtain their Melius-type BAC-corrected versions. + +## Wilhoit Model + +The Wilhoit model provides a physically meaningful representation of temperature-dependent heat capacity, guaranteeing correct limits at zero and infinite temperature. The model is defined by the following equations: + +### Heat Capacity + +$$ + C_\mathrm{p}(T) = C_\mathrm{p}(0) + \left[ C_\mathrm{p}(\infty) - + C_\mathrm{p}(0) \right] y^2 \left[ 1 + (y - 1) \sum_{i=0}^3 a_i y^i \right] +$$ + +where $y \equiv T/(T + B)$ is a scaled temperature ranging from zero to one. + +$C_\mathrm{p}(0)$ is the heat capacity at zero temperature, whose value is equal to 33.2579 J/(mol·K) for all species in the dataset. + +### Enthalpy + +$$ +\begin{aligned} +H(T) &= H_0 + + C_\mathrm{p}(0) T - \Bigg\{ + \left(2 + \sum_{i=0}^3 a_i\right) \left[ + \frac{y}{2} - 1 + \left( \frac{1}{y} - 1 \right) \ln \frac{T}{y} + \right] \\ &+ + y^2 \sum_{i=0}^3 \frac{y^i}{(i+2)(i+3)} \sum_{j=0}^3 f_{ij} a_j + \Bigg\} \left[ C_\mathrm{p}(\infty) - C_\mathrm{p}(0) \right] T +\end{aligned} +$$ + +where + +$$ +f_{ij} = \begin{cases} + 0 & \text{if } i < j, \\ + 3 + j & \text{if } i = j, \\ + 1 & \text{if } i > j. +\end{cases} +$$ + +### Entropy + +$$ + S(T) = S_0 + + C_\mathrm{p}(\infty) \ln T - \left[ C_\mathrm{p}(\infty) - C_\mathrm{p}(0) \right] + \left[ \ln y + \left( 1 + y \sum_{i=0}^3 \frac{a_i y^i}{2+i} \right) y + \right] +$$ diff --git a/scripts/thermo/species_thermodynamics.ipynb b/scripts/thermo/species_thermodynamics.ipynb new file mode 100644 index 0000000..c634aaf --- /dev/null +++ b/scripts/thermo/species_thermodynamics.ipynb @@ -0,0 +1,2784 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "ddd625ff", + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib\n", + "import re\n", + "from functools import lru_cache\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import swifter\n", + "from matplotlib import pyplot as plt\n", + "from rdkit import Chem" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0cf5cdb3", + "metadata": {}, + "outputs": [], + "source": [ + "cwd = pathlib.Path().absolute()\n", + "quantum_green = pathlib.Path(\"/home/shared/projects/quantum_green\")\n", + "paper_dir = quantum_green / \"paper\" / \"figure\"\n", + "data_dir = cwd.parent.parent / \"data\" / \"thermo\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c97c37ed", + "metadata": {}, + "outputs": [], + "source": [ + "pd.set_option(\"display.max_columns\", None)\n", + "\n", + "\n", + "def head(df, n=2):\n", + " display(df.head(n))\n", + " print(f\"{len(df)} rows × {len(df.columns)} columns\")\n", + "\n", + "\n", + "@lru_cache(maxsize=None)\n", + "def canonical_smiles(smiles):\n", + " mol = Chem.MolFromSmiles(smiles)\n", + " for atom in mol.GetAtoms():\n", + " atom.SetAtomMapNum(0)\n", + " mol = Chem.RemoveHs(mol)\n", + " return Chem.MolToSmiles(mol, isomericSmiles=True)\n", + "\n", + "\n", + "def get_rxn_smi(row):\n", + " return (\n", + " f\"{row['r1_smiles']}.{row['r2_smiles']}>>{row['p1_smiles']}.{row['p2_smiles']}\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "cf09056a", + "metadata": {}, + "source": [ + "Read processed thermo data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "3a4cf871", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
species_dft_log_source_utf_8_sha512asmimultiplicitystd_xyz_strspecies_dft_frequenciesspecies_dft_hartreefock_energy_hartreespecies_dlpno_sp_hartreep_thermom_thermop_H298m_H298p_S298m_S298p_Cp300m_Cp300p_Cp400m_Cp400p_Cp500m_Cp500p_Cp600m_Cp600p_Cp800m_Cp800p_Cp1000m_Cp1000p_Cp1500m_Cp1500
042d67c486eb53d22486a5d1da768e644bf644469198894...[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]...217\\n\\nC 1.687648 -1.481461 0.769379\\nC 1.14635...[69.0965, 133.1139, 185.0048, 247.5052, 269.23...-434.321489-434.224944Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407....Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407....89171.88814592902.845218384.472728384.472728138.524841138.524841175.864528175.864528208.654500208.654500236.432193236.432193278.945081278.945081308.548112308.548112350.979140350.979140
17667c6f680d9065479d515666e4c3246f65704e4926140...[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]...221\\n\\nC -2.800669 0.461226 0.774726\\nC -1.7902...[40.2091, 100.6031, 169.247, 232.8355, 250.021...-403.429122-403.298238Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507....Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507....102076.181436104632.984293397.355792397.355792153.423259153.423259200.307331200.307331241.584659241.584659276.984827276.984827332.331738332.331738371.824840371.824840429.622128429.622128
\n", + "
" + ], + "text/plain": [ + " species_dft_log_source_utf_8_sha512 \\\n", + "0 42d67c486eb53d22486a5d1da768e644bf644469198894... \n", + "1 7667c6f680d9065479d515666e4c3246f65704e4926140... \n", + "\n", + " asmi multiplicity \\\n", + "0 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]... 2 \n", + "1 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]... 2 \n", + "\n", + " std_xyz_str \\\n", + "0 17\\n\\nC 1.687648 -1.481461 0.769379\\nC 1.14635... \n", + "1 21\\n\\nC -2.800669 0.461226 0.774726\\nC -1.7902... \n", + "\n", + " species_dft_frequencies \\\n", + "0 [69.0965, 133.1139, 185.0048, 247.5052, 269.23... \n", + "1 [40.2091, 100.6031, 169.247, 232.8355, 250.021... \n", + "\n", + " species_dft_hartreefock_energy_hartree species_dlpno_sp_hartree \\\n", + "0 -434.321489 -434.224944 \n", + "1 -403.429122 -403.298238 \n", + "\n", + " p_thermo \\\n", + "0 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407.... \n", + "1 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507.... \n", + "\n", + " m_thermo p_H298 \\\n", + "0 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407.... 89171.888145 \n", + "1 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507.... 102076.181436 \n", + "\n", + " m_H298 p_S298 m_S298 p_Cp300 m_Cp300 p_Cp400 \\\n", + "0 92902.845218 384.472728 384.472728 138.524841 138.524841 175.864528 \n", + "1 104632.984293 397.355792 397.355792 153.423259 153.423259 200.307331 \n", + "\n", + " m_Cp400 p_Cp500 m_Cp500 p_Cp600 m_Cp600 p_Cp800 \\\n", + "0 175.864528 208.654500 208.654500 236.432193 236.432193 278.945081 \n", + "1 200.307331 241.584659 241.584659 276.984827 276.984827 332.331738 \n", + "\n", + " m_Cp800 p_Cp1000 m_Cp1000 p_Cp1500 m_Cp1500 \n", + "0 278.945081 308.548112 308.548112 350.979140 350.979140 \n", + "1 332.331738 371.824840 371.824840 429.622128 429.622128 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "339428 rows × 27 columns\n" + ] + } + ], + "source": [ + "thermo_data = pd.read_csv(\n", + " paper_dir\n", + " / \"section_3_2_1_thermo\"\n", + " / \"quantum_green_species_data_24august14_dft_opted_dlpno_sp_thermos.csv\"\n", + ")\n", + "head(thermo_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ae2b6c76", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2806" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "thermo_data[\"p_thermo\"].isna().sum().item()" + ] + }, + { + "cell_type": "markdown", + "id": "8e9b8c4b", + "metadata": {}, + "source": [ + "Since the thermo data has some missing values, we need to filter them out.\n", + "\n", + "Also, we convert the smiles to canonical form.\n", + "\n", + "Finally, we remove molecule `N=C=S` and its associated radical `[N]=C=S` from the dataset due to an known issue with the parsing of frequency data from the Gaussian log file." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "157a7f40", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f243fdb219714c1fa453c5a460dc032a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Pandas Apply: 0%| | 0/336622 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
species_dft_log_source_utf_8_sha512asmimultiplicitystd_xyz_strspecies_dft_frequenciesspecies_dft_hartreefock_energy_hartreespecies_dlpno_sp_hartreep_thermom_thermop_H298m_H298p_S298m_S298p_Cp300m_Cp300p_Cp400m_Cp400p_Cp500m_Cp500p_Cp600m_Cp600p_Cp800m_Cp800p_Cp1000m_Cp1000p_Cp1500m_Cp1500smiles
042d67c486eb53d22486a5d1da768e644bf644469198894...[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]...217\\n\\nC 1.687648 -1.481461 0.769379\\nC 1.14635...[69.0965, 133.1139, 185.0048, 247.5052, 269.23...-434.321489-434.224944Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407....Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407....89171.88814592902.845218384.472728384.472728138.524841138.524841175.864528175.864528208.654500208.654500236.432193236.432193278.945081278.945081308.548112308.548112350.979140350.979140CC1C[N]C(=N)N1C=O
17667c6f680d9065479d515666e4c3246f65704e4926140...[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]...221\\n\\nC -2.800669 0.461226 0.774726\\nC -1.7902...[40.2091, 100.6031, 169.247, 232.8355, 250.021...-403.429122-403.298238Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507....Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507....102076.181436104632.984293397.355792397.355792153.423259153.423259200.307331200.307331241.584659241.584659276.984827276.984827332.331738332.331738371.824840371.824840429.622128429.622128CC1COC(C2C[N]2)C1
\n", + "" + ], + "text/plain": [ + " species_dft_log_source_utf_8_sha512 \\\n", + "0 42d67c486eb53d22486a5d1da768e644bf644469198894... \n", + "1 7667c6f680d9065479d515666e4c3246f65704e4926140... \n", + "\n", + " asmi multiplicity \\\n", + "0 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]... 2 \n", + "1 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]... 2 \n", + "\n", + " std_xyz_str \\\n", + "0 17\\n\\nC 1.687648 -1.481461 0.769379\\nC 1.14635... \n", + "1 21\\n\\nC -2.800669 0.461226 0.774726\\nC -1.7902... \n", + "\n", + " species_dft_frequencies \\\n", + "0 [69.0965, 133.1139, 185.0048, 247.5052, 269.23... \n", + "1 [40.2091, 100.6031, 169.247, 232.8355, 250.021... \n", + "\n", + " species_dft_hartreefock_energy_hartree species_dlpno_sp_hartree \\\n", + "0 -434.321489 -434.224944 \n", + "1 -403.429122 -403.298238 \n", + "\n", + " p_thermo \\\n", + "0 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407.... \n", + "1 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507.... \n", + "\n", + " m_thermo p_H298 \\\n", + "0 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(407.... 89171.888145 \n", + "1 Wilhoit(Cp0=(33.2579,'J/(mol*K)'), CpInf=(507.... 102076.181436 \n", + "\n", + " m_H298 p_S298 m_S298 p_Cp300 m_Cp300 p_Cp400 \\\n", + "0 92902.845218 384.472728 384.472728 138.524841 138.524841 175.864528 \n", + "1 104632.984293 397.355792 397.355792 153.423259 153.423259 200.307331 \n", + "\n", + " m_Cp400 p_Cp500 m_Cp500 p_Cp600 m_Cp600 p_Cp800 \\\n", + "0 175.864528 208.654500 208.654500 236.432193 236.432193 278.945081 \n", + "1 200.307331 241.584659 241.584659 276.984827 276.984827 332.331738 \n", + "\n", + " m_Cp800 p_Cp1000 m_Cp1000 p_Cp1500 m_Cp1500 \\\n", + "0 278.945081 308.548112 308.548112 350.979140 350.979140 \n", + "1 332.331738 371.824840 371.824840 429.622128 429.622128 \n", + "\n", + " smiles \n", + "0 CC1C[N]C(=N)N1C=O \n", + "1 CC1COC(C2C[N]2)C1 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "336620 rows × 28 columns\n" + ] + } + ], + "source": [ + "filtered_thermo_data = thermo_data[thermo_data[\"p_thermo\"].notna()].copy()\n", + "filtered_thermo_data[\"smiles\"] = filtered_thermo_data[\"asmi\"].swifter.apply(\n", + " canonical_smiles\n", + ")\n", + "filtered_thermo_data.drop(\n", + " filtered_thermo_data[\n", + " filtered_thermo_data[\"smiles\"].isin([\"[N]=C=S\", \"N=C=S\"])\n", + " ].index,\n", + " inplace=True,\n", + ")\n", + "filtered_thermo_data.reset_index(drop=True, inplace=True)\n", + "head(filtered_thermo_data)" + ] + }, + { + "cell_type": "markdown", + "id": "fe9bd3c0", + "metadata": {}, + "source": [ + "Read the processed kinetics data and convert the species smiles to canonical form.\n", + "\n", + "Make sure that all species in the kinetics data are present in the thermo data." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "774c4db2", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3c6fbfeffa0d4b79b434aa4d4410ba5e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Pandas Apply: 0%| | 0/166166 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ts_dft_log_source_utf_8_sha512multiplicityr1smir2smip1smip2smistd_xyz_strr1_matched_std_xyz_strr2_matched_std_xyz_strp1_matched_std_xyz_strp2_matched_std_xyz_strts_dft_frequenciesr1_dft_frequenciesr2_dft_frequenciesp1_dft_frequenciesp2_dft_frequenciests_dft_hartreefock_energy_hartreer1_dft_hartreefock_energy_hartreer2_dft_hartreefock_energy_hartreep1_dft_hartreefock_energy_hartreep2_dft_hartreefock_energy_hartreets_dlpno_sp_hartreer1_dlpno_sp_hartreer2_dlpno_sp_hartreep1_dlpno_sp_hartreep2_dlpno_sp_hartreeneg_freqkinetics_lowk_298p_reaction_lowm_reaction_lowp_rev_kinetics_lowm_rev_kinetics_lowkinetics_highp_reaction_highm_reaction_highp_rev_kinetics_highm_rev_kinetics_highlow_Ap_rev_low_Am_rev_low_Alow_Eap_rev_low_Eam_rev_low_Eahigh_Ap_rev_high_Am_rev_high_Ahigh_Eap_rev_high_Eam_rev_high_Eap_deltaHrxn298m_deltaHrxn298p_deltaGrxn298m_deltaGrxn298r1_smilesr2_smilesp1_smilesp2_smiles
004c648a435eb66f655a9afa7aebe1b6288cfbe5d4377ab7...2[O:1]([O:2])[H:3][C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1...[C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1...[O:1]([O:2][H:11])[H:3]23\\n\\nO -0.296608 2.50034 -0.42834\\nO 0.12862 ...3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59...20\\n\\nC 0.216362 1.782055 0.054566\\nC -0.13150...19\\n\\nC -0.008753 1.669215 -0.212931\\nC 0.0510...4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862...[-1819.2074, 54.014, 69.9409, 78.7383, 95.0168...[1268.6637, 1466.9774, 3673.0462][54.4468, 75.2434, 102.0769, 166.2486, 229.237...[38.6623, 46.6427, 70.6254, 124.3627, 195.2907...[355.51, 1029.1913, 1349.894, 1491.2134, 3851....-499.513846-150.736553-348.800739-348.140437-151.376196-499.420713-150.773531-348.675816-348.013214-151.4225-1819.2074Arrhenius(A=(1.93009e+10,'cm^3/(mol*s)'), n=0,...1.961906e-07[O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OO[O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OOArrhenius(A=(23353.4,'m^3/(mol*s)'), n=-0.4985...Arrhenius(A=(23353.4,'m^3/(mol*s)'), n=-0.4985...Arrhenius(A=(2.46143e+12,'cm^3/(mol*s)'), n=0,...[O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OO[O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OOArrhenius(A=(2.97825e+06,'m^3/(mol*s)'), n=-0....Arrhenius(A=(2.97825e+06,'m^3/(mol*s)'), n=-0....19300.9014202.335344e+042.335344e+0464517.73648030906.95527030906.9552702.461429e+062.978245e+062.978245e+0698788.71264365177.93143365177.93143334171.8516334171.8516326963.41225426963.412254[O]OCC(CC=O)C1CC1C[C](CC=O)C1CC1OO
113fcdf61497a20d2e765655162f9a50bd8067a6ae90e90e...2[O:1]([O:2])[H:3][C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:24])(...[C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:25])[...[O:1]([O:2][H:24])[H:3]26\\n\\nO 2.669129 -1.916241 0.102074\\nO 3.62579...3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59...23\\n\\nC 2.355263 -1.592675 0.183484\\nO 2.52464...22\\n\\nC 1.79229 -1.9024 0.57597\\nO 1.564071 -1...4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862...[-1780.9655, 22.7631, 39.1821, 48.2943, 53.310...[1268.6637, 1466.9774, 3673.0462][41.7173, 46.7835, 79.0284, 116.919, 165.6573,...[41.6898, 69.9592, 110.6483, 138.1279, 181.957...[355.51, 1029.1913, 1349.894, 1491.2134, 3851....-575.835651-150.736553-425.124273-424.462568-151.376196-575.755980-150.773531-425.012518-424.350164-151.4225-1780.9655Arrhenius(A=(4.46942e+10,'cm^3/(mol*s)'), n=0,...1.102303e-07[O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OO[O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OOArrhenius(A=(2.07496e+06,'m^3/(mol*s)'), n=-0....Arrhenius(A=(2.07496e+06,'m^3/(mol*s)'), n=-0....Arrhenius(A=(6.07844e+12,'cm^3/(mol*s)'), n=0,...[O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OO[O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OOArrhenius(A=(2.82196e+08,'m^3/(mol*s)'), n=-0....Arrhenius(A=(2.82196e+08,'m^3/(mol*s)'), n=-0....44694.1578912.074960e+062.074960e+0668134.78755535997.06318735997.0631876.078441e+062.821962e+082.821962e+08102752.60947570614.88510870614.88510832977.6118032977.6118032676.41156132676.411561[O]OCOCC(C)OC1CC1[CH2]OCC(C)OC1CC1OO
\n", + "" + ], + "text/plain": [ + " Unnamed: 0 ts_dft_log_source_utf_8_sha512 \\\n", + "0 0 4c648a435eb66f655a9afa7aebe1b6288cfbe5d4377ab7... \n", + "1 1 3fcdf61497a20d2e765655162f9a50bd8067a6ae90e90e... \n", + "\n", + " multiplicity r1smi \\\n", + "0 2 [O:1]([O:2])[H:3] \n", + "1 2 [O:1]([O:2])[H:3] \n", + "\n", + " r2smi \\\n", + "0 [C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1... \n", + "1 [C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:24])(... \n", + "\n", + " p1smi p2smi \\\n", + "0 [C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1... [O:1]([O:2][H:11])[H:3] \n", + "1 [C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:25])[... [O:1]([O:2][H:24])[H:3] \n", + "\n", + " std_xyz_str \\\n", + "0 23\\n\\nO -0.296608 2.50034 -0.42834\\nO 0.12862 ... \n", + "1 26\\n\\nO 2.669129 -1.916241 0.102074\\nO 3.62579... \n", + "\n", + " r1_matched_std_xyz_str \\\n", + "0 3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59... \n", + "1 3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59... \n", + "\n", + " r2_matched_std_xyz_str \\\n", + "0 20\\n\\nC 0.216362 1.782055 0.054566\\nC -0.13150... \n", + "1 23\\n\\nC 2.355263 -1.592675 0.183484\\nO 2.52464... \n", + "\n", + " p1_matched_std_xyz_str \\\n", + "0 19\\n\\nC -0.008753 1.669215 -0.212931\\nC 0.0510... \n", + "1 22\\n\\nC 1.79229 -1.9024 0.57597\\nO 1.564071 -1... \n", + "\n", + " p2_matched_std_xyz_str \\\n", + "0 4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862... \n", + "1 4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862... \n", + "\n", + " ts_dft_frequencies \\\n", + "0 [-1819.2074, 54.014, 69.9409, 78.7383, 95.0168... \n", + "1 [-1780.9655, 22.7631, 39.1821, 48.2943, 53.310... \n", + "\n", + " r1_dft_frequencies \\\n", + "0 [1268.6637, 1466.9774, 3673.0462] \n", + "1 [1268.6637, 1466.9774, 3673.0462] \n", + "\n", + " r2_dft_frequencies \\\n", + "0 [54.4468, 75.2434, 102.0769, 166.2486, 229.237... \n", + "1 [41.7173, 46.7835, 79.0284, 116.919, 165.6573,... \n", + "\n", + " p1_dft_frequencies \\\n", + "0 [38.6623, 46.6427, 70.6254, 124.3627, 195.2907... \n", + "1 [41.6898, 69.9592, 110.6483, 138.1279, 181.957... \n", + "\n", + " p2_dft_frequencies \\\n", + "0 [355.51, 1029.1913, 1349.894, 1491.2134, 3851.... \n", + "1 [355.51, 1029.1913, 1349.894, 1491.2134, 3851.... \n", + "\n", + " ts_dft_hartreefock_energy_hartree r1_dft_hartreefock_energy_hartree \\\n", + "0 -499.513846 -150.736553 \n", + "1 -575.835651 -150.736553 \n", + "\n", + " r2_dft_hartreefock_energy_hartree p1_dft_hartreefock_energy_hartree \\\n", + "0 -348.800739 -348.140437 \n", + "1 -425.124273 -424.462568 \n", + "\n", + " p2_dft_hartreefock_energy_hartree ts_dlpno_sp_hartree \\\n", + "0 -151.376196 -499.420713 \n", + "1 -151.376196 -575.755980 \n", + "\n", + " r1_dlpno_sp_hartree r2_dlpno_sp_hartree p1_dlpno_sp_hartree \\\n", + "0 -150.773531 -348.675816 -348.013214 \n", + "1 -150.773531 -425.012518 -424.350164 \n", + "\n", + " p2_dlpno_sp_hartree neg_freq \\\n", + "0 -151.4225 -1819.2074 \n", + "1 -151.4225 -1780.9655 \n", + "\n", + " kinetics_low k_298 \\\n", + "0 Arrhenius(A=(1.93009e+10,'cm^3/(mol*s)'), n=0,... 1.961906e-07 \n", + "1 Arrhenius(A=(4.46942e+10,'cm^3/(mol*s)'), n=0,... 1.102303e-07 \n", + "\n", + " p_reaction_low \\\n", + "0 [O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OO \n", + "1 [O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OO \n", + "\n", + " m_reaction_low \\\n", + "0 [O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OO \n", + "1 [O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OO \n", + "\n", + " p_rev_kinetics_low \\\n", + "0 Arrhenius(A=(23353.4,'m^3/(mol*s)'), n=-0.4985... \n", + "1 Arrhenius(A=(2.07496e+06,'m^3/(mol*s)'), n=-0.... \n", + "\n", + " m_rev_kinetics_low \\\n", + "0 Arrhenius(A=(23353.4,'m^3/(mol*s)'), n=-0.4985... \n", + "1 Arrhenius(A=(2.07496e+06,'m^3/(mol*s)'), n=-0.... \n", + "\n", + " kinetics_high \\\n", + "0 Arrhenius(A=(2.46143e+12,'cm^3/(mol*s)'), n=0,... \n", + "1 Arrhenius(A=(6.07844e+12,'cm^3/(mol*s)'), n=0,... \n", + "\n", + " p_reaction_high \\\n", + "0 [O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OO \n", + "1 [O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OO \n", + "\n", + " m_reaction_high \\\n", + "0 [O]O + CC(CC=O)C1CC1 <=> C[C](CC=O)C1CC1 + OO \n", + "1 [O]O + COCC(C)OC1CC1 <=> [CH2]OCC(C)OC1CC1 + OO \n", + "\n", + " p_rev_kinetics_high \\\n", + "0 Arrhenius(A=(2.97825e+06,'m^3/(mol*s)'), n=-0.... \n", + "1 Arrhenius(A=(2.82196e+08,'m^3/(mol*s)'), n=-0.... \n", + "\n", + " m_rev_kinetics_high low_A \\\n", + "0 Arrhenius(A=(2.97825e+06,'m^3/(mol*s)'), n=-0.... 19300.901420 \n", + "1 Arrhenius(A=(2.82196e+08,'m^3/(mol*s)'), n=-0.... 44694.157891 \n", + "\n", + " p_rev_low_A m_rev_low_A low_Ea p_rev_low_Ea m_rev_low_Ea \\\n", + "0 2.335344e+04 2.335344e+04 64517.736480 30906.955270 30906.955270 \n", + "1 2.074960e+06 2.074960e+06 68134.787555 35997.063187 35997.063187 \n", + "\n", + " high_A p_rev_high_A m_rev_high_A high_Ea p_rev_high_Ea \\\n", + "0 2.461429e+06 2.978245e+06 2.978245e+06 98788.712643 65177.931433 \n", + "1 6.078441e+06 2.821962e+08 2.821962e+08 102752.609475 70614.885108 \n", + "\n", + " m_rev_high_Ea p_deltaHrxn298 m_deltaHrxn298 p_deltaGrxn298 \\\n", + "0 65177.931433 34171.85163 34171.85163 26963.412254 \n", + "1 70614.885108 32977.61180 32977.61180 32676.411561 \n", + "\n", + " m_deltaGrxn298 r1_smiles r2_smiles p1_smiles p2_smiles \n", + "0 26963.412254 [O]O CC(CC=O)C1CC1 C[C](CC=O)C1CC1 OO \n", + "1 32676.411561 [O]O COCC(C)OC1CC1 [CH2]OCC(C)OC1CC1 OO " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "166166 rows × 59 columns\n" + ] + } + ], + "source": [ + "rate_data = pd.read_csv(\n", + " paper_dir\n", + " / \"section_3_2_3_rate\"\n", + " / \"quantum_green_ts_data_24september17_dft_opted_dlpno_sp_rates.csv\"\n", + ")\n", + "for species in [\"r1\", \"r2\", \"p1\", \"p2\"]:\n", + " rate_data[f\"{species}_smiles\"] = rate_data[f\"{species}smi\"].swifter.apply(\n", + " canonical_smiles\n", + " )\n", + "head(rate_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0c6e6ca8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "274686" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_smiles_in_rate_data = set().union(\n", + " *[rate_data[f\"{species}_smiles\"] for species in [\"r1\", \"r2\", \"p1\", \"p2\"]]\n", + ")\n", + "len(all_smiles_in_rate_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a6e45218", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_smiles_in_rate_data.issubset(filtered_thermo_data[\"smiles\"])" + ] + }, + { + "cell_type": "markdown", + "id": "813074eb", + "metadata": {}, + "source": [ + "Parse the Wilhoit model parameters from the thermo data.\n", + "\n", + "Also, show that the `Cp0` parameter is the same for all species, so we can remove it from the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fe14108a", + "metadata": {}, + "outputs": [], + "source": [ + "REGEX = re.compile(r\"(\\w+)\\s*=\\s*\\(?\\s*([-+]?\\d*\\.?\\d+(?:[eE][-+]?\\d+)?)\")\n", + "\n", + "\n", + "def parse_wilhoit_string(wilhoit_str):\n", + " return {\n", + " param_name: float(value) * (1000 if param_name == \"H0\" else 1)\n", + " for param_name, value in re.findall(REGEX, wilhoit_str)\n", + " }" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "10c8a582", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Cp0CpInfa0a1a2a3H0S0B
033.2579407.409-1.602707.86347-12.218103.797620e+00-37353.3-2025.56300.00
133.2579507.183-7.963839.72081-3.843897.901530e-07-252598.0-3207.621138.67
\n", + "
" + ], + "text/plain": [ + " Cp0 CpInf a0 a1 a2 a3 H0 \\\n", + "0 33.2579 407.409 -1.60270 7.86347 -12.21810 3.797620e+00 -37353.3 \n", + "1 33.2579 507.183 -7.96383 9.72081 -3.84389 7.901530e-07 -252598.0 \n", + "\n", + " S0 B \n", + "0 -2025.56 300.00 \n", + "1 -3207.62 1138.67 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "336620 rows × 9 columns\n" + ] + } + ], + "source": [ + "wilhoit_df = pd.DataFrame(\n", + " [\n", + " parse_wilhoit_string(wilhoit_str)\n", + " for wilhoit_str in filtered_thermo_data[\"p_thermo\"]\n", + " ]\n", + ")\n", + "head(wilhoit_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "120f269b", + "metadata": {}, + "outputs": [], + "source": [ + "def wilhoit_cp(T, Cp0, CpInf, a0, a1, a2, a3, B):\n", + " y = T / (T + B)\n", + " poly = a0 + a1 * y + a2 * y**2 + a3 * y**3\n", + " return Cp0 + (CpInf - Cp0) * y**2 * (1 + (y - 1) * poly)\n", + "\n", + "\n", + "def wilhoit_enthalpy(T, H0, Cp0, CpInf, a0, a1, a2, a3, B):\n", + " y = T / (T + B)\n", + " b0 = (3 * a0 + a1 + a2 + a3) / 6\n", + " b1 = (4 * a1 + a2 + a3) / 12\n", + " b2 = (5 * a2 + a3) / 20\n", + " b3 = a3 / 5\n", + " a = 2 + a0 + a1 + a2 + a3\n", + " deltaCp = CpInf - Cp0\n", + " poly = y**2 * (b0 + b1 * y + b2 * y**2 + b3 * y**3) + a * (y / 2 - 1)\n", + " E0 = H0 - deltaCp * a * B * np.log(B)\n", + " return E0 + Cp0 * T - deltaCp * (T * poly - B * a * np.log(1 - y))\n", + "\n", + "\n", + "def wilhoit_entropy(T, S0, Cp0, CpInf, a0, a1, a2, a3, B):\n", + " y = T / (T + B)\n", + " poly = y * (1 + y * (a0 / 2 + y * (a1 / 3 + y * (a2 / 4 + y * a3 / 5))))\n", + " return S0 + CpInf * np.log(T) - (CpInf - Cp0) * (poly + np.log(y))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a1fd32d2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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W0aPHj2M5cuXG/v27TO+/PJL480337S+furUKSMyMtIYOXKksXPnTmPz5s1GaGioMWPGDGufyspKIzg42Jg0aZKxe/duIz093ejevbuxePFia58DBw4Y5513nnH//fcbe/fuNV566SXDx8fHeOutt9r1eF1h5syZxpgxYwxJRl5enrWdc9symzZtMhISEoz33nvP+Oabb4x//vOfRp8+fYxZs2ZZ+3Bu205b/pu40wSLq666ykhKSrJpu/TSS41HHnnERRV5FoJFy1RUVBiSjOzsbFeX4lF69Ohh/P3vf3d1GW7vxIkTxsUXX2xs3rzZiI2NJVh0QrW1tUa/fv2a/O9l48aNRpcuXYySkhJr25o1awyz2WxUVlYahmEYzz//vBEYGGhUVVVZ+6SmphqhoaHG6dOnDcMwjIceesi49NJLbT77T3/6k3HNNdc485DczsaNG41LL73U+Pe//90gWHBuneepp54yIiIirPuc27bTlv8m7hRToWpqarRjxw7FxcXZtMfFxenTTz91UVXoDCorKyVJPXv2dHElnqGurk5r167VyZMnFRMT4+py3N69996rcePGafTo0a4uBS6yc+dOlZSUqEuXLho2bJj69u2rMWPG6N///re1z7Zt2xQZGanQ0FBrW3x8vKqrq7Vjxw5rn9jYWJsHZcXHx+vIkSM6ePCgtc/Z42h8fLxyc3NVW1vbhkfpOuXl5UpMTNRrr72m8847r8HrnFvnqaystBkrObdto63/TdwpgsXRo0dVV1en4OBgm/bg4GCVlZW5qCp0dIZhKDk5Wddff70iIyNdXY5b2717t7p16yaz2aykpCStW7dOQ4YMcXVZbm3t2rXauXOnUlNTXV0KXOjAgQOSpHnz5mnu3Ln617/+pR49eig2NlbffvutJKmsrKzB+NejRw/5+vpax0B7fer3z9Xn1KlTOnr0qPMPzsUMw1BCQoKSkpIUHR1ttw/n1jm++eYbLVu2TElJSdY2zm3baOt/E3eKYFHPZDLZ7BuG0aANcJYZM2Zo165dWrNmjatLcXuDBg1Sfn6+PvvsM91zzz2aOnWq9u7d6+qy3FZxcbHuv/9+paWlyc/Pz9XloA3MmzdPJpOpyS03N1enT5+WJD366KOaOHGioqKitGrVKplMJr355pvWz7M31p09BtobI89ub04fd9fcc7ts2TJZLBalpKQ0+Xmc258099z+3JEjR/SrX/1Kt99+u+6++26b1zi3baet/k3s3epP8ABBQUHy8vJqkMQqKioaJDbAGe677z6tX79eW7ZsUf/+/V1djtvz9fXVRRddJEmKjo5WTk6O/va3v+mFF15wcWXuaceOHaqoqFBUVJS1ra6uTlu2bNGzzz6r6upqeXl5ubBCtNaMGTM0adKkJvuEh4frxIkTkmRzhc9sNmvgwIEqKiqSJIWEhGj79u027z1+/Lhqa2utY2BISIjdMVLSOft4e3urV69ejh6iyzT33C5YsECfffaZzTQb6cxv1O9//3u98sornNuzNPfc1jty5IhGjhypmJgYvfjiizb9OLdto63/TdwpgoWvr6+ioqK0efNm/eY3v7G2b968WbfccosLK0NHYxiG7rvvPq1bt05ZWVmKiIhwdUkeyTAMVVdXu7oMtzVq1Cjt3r3bpm3atGm69NJL9fDDDxMqOoCgoCAFBQWds19UVJTMZrP27dun66+/XpJUW1urgwcP6oILLpAkxcTEaOHChSotLVXfvn0lSZmZmTKbzdZwGhMTozlz5qimpka+vr7WPqGhodZ/CMbExGjDhg0235+Zmano6Gj5+Pg45bjbQ3PP7dKlS7VgwQLr/pEjRxQfH6833nhDV199tSTO7dmae24lqaSkRCNHjrReZevSxXYSDee2bbT5v4lbffu3h6hfWmvlypXG3r17jQceeMDo2rWrcfDgQVeX5rZOnDhh5OXlGXl5eYYk45lnnjHy8vJYorcJ99xzjxEYGGhkZWUZpaWl1u2HH35wdWluKyUlxdiyZYtRWFho7Nq1y5gzZ47RpUsXIzMz09WleRRWheq87r//fqNfv37Ge++9Z3z55ZfGXXfdZfTp08f49ttvDcP4adnOUaNGGTt37jTef/99o3///jbLdn733XdGcHCwcccddxi7d+823n77bSMgIMDusp0PPvigsXfvXmPlypWdatnOwsLCRpeb5dw6pqSkxLjooouMG2+80Th8+LDNeFmPc9t22vLfxJ0mWBiGYTz33HPGBRdcYPj6+hq//OUvWQL0HD766CNDUoNt6tSpri7Nbdk7X5KMVatWubo0t/XHP/7R+t9l7969jVGjRhEqWoBg0XnV1NQYs2bNMvr06WN0797dGD16dIPnwBw6dMgYN26c4e/vb/Ts2dOYMWOGzRKdhmEYu3btMoYPH26YzWYjJCTEmDdvnnXJznpZWVnGsGHDDF9fXyM8PNxYvnx5mx+fu7AXLAyDc9sSq1atanS8/DnObdtpq38TmwzjrMcTAgAAAICDOtWqUAAAAADaBsECAAAAQKsRLAAAAAC0GsECAAAAQKsRLAAAAAC0GsECAAAAQKsRLAAAAAC0GsECANrZli1bNH78eIWGhspkMumdd95x+DPee+89XXPNNerevbt69+6tiRMnqrCw0PnFAgDQTAQLAGhnJ0+e1OWXX65nn322Re8/cOCAbrnlFt14443Kz8/Xe++9p6NHj+rWW291cqUAADQfT94GABcymUxat26dJkyYYG2rqanR3Llz9frrr+u7775TZGSknnzySY0YMUKS9NZbb+mOO+5QdXW1unQ58/ehDRs26JZbblF1dbV8fHxccCQAgM6OKxYA4GamTZumTz75RGvXrtWuXbt0++2361e/+pW++uorSVJ0dLS8vLy0atUq1dXVqbKyUq+99pri4uIIFQAAl+GKBQC40NlXLL755htdfPHFOnz4sEJDQ639Ro8erauuukqLFi2SdOY+jdtvv13Hjh1TXV2dYmJitHHjRp1//vkuOAoAALhiAQBuZefOnTIMQ5dccom6detm3bKzs/XNN99IksrKynT33Xdr6tSpysnJUXZ2tnx9fXXbbbeJvxUBAFzF29UFAAB+cvr0aXl5eWnHjh3y8vKyea1bt26SpOeee04BAQF66qmnrK+lpaUpLCxM27dv1zXXXNOuNQMAIBEsAMCtDBs2THV1daqoqNDw4cPt9vnhhx8ahI76/dOnT7d5jQAA2MNUKABoZ99//73y8/OVn58vSSosLFR+fr6Kiop0ySWX6Pe//73uvPNOvf322yosLFROTo6efPJJbdy4UZI0btw45eTkaP78+frqq6+0c+dOTZs2TRdccIGGDRvmwiMDAHRm3LwNAO0sKytLI0eObNA+depUrV69WrW1tVqwYIFeffVVlZSUqFevXoqJidHjjz+uX/ziF5KktWvX6qmnntL+/ft13nnnKSYmRk8++aQuvfTS9j4cAAAkESwAAAAAOAFToQAAAAC0GsECAAAAQKsRLAAAAAC0GsECAAAAQKsRLAAAAAC0GsECAAAAQKsRLAAAAAC0GsECAAAAQKsRLAAAAAC0GsECAAAAQKsRLAAAAAC0GsECAAAAQKv9f6t1ihgwUyB0AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "params = [\n", + " wilhoit_df[col].values for col in [\"Cp0\", \"CpInf\", \"a0\", \"a1\", \"a2\", \"a3\", \"B\"]\n", + "]\n", + "\n", + "H0 = filtered_thermo_data[\"p_H298\"] - wilhoit_enthalpy(298.15, 0, *params)\n", + "S0 = filtered_thermo_data[\"p_S298\"] - wilhoit_entropy(298.15, 0, *params)\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(8, 4))\n", + "axes[0].plot(wilhoit_df[\"H0\"], H0, \"o\", markersize=0.5)\n", + "axes[1].plot(wilhoit_df[\"S0\"], S0, \"o\", markersize=0.5)\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "87e2d144", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Cp0\n", + "33.2579 336620\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Cp0_value_counts = wilhoit_df[\"Cp0\"].value_counts()\n", + "Cp0_value_counts" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "08501eb9", + "metadata": {}, + "outputs": [], + "source": [ + "wilhoit_df.drop(columns=[\"Cp0\"], inplace=True)\n", + "wilhoit_df[\"S0\"] = S0\n", + "wilhoit_df[\"H0\"] = H0" + ] + }, + { + "cell_type": "markdown", + "id": "9d154f58", + "metadata": {}, + "source": [ + "Read dataset containing Zero Point Energy values for all species." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8da61283", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
asmispecies_idspecies_dft_log_pathspecies_dft_route_sectionchargemultiplicityspecies_dft_opt_max_stepsspecies_dft_opt_normal_termination_checkspecies_dft_opt_cpu_timespecies_dft_opt_wall_timespecies_dft_sum_of_electronic_and_thermal_enthalpies_hartreespecies_dft_hartreefock_energy_hartreespecies_dft_zpe_hartreespecies_dft_e0_zpe_hartreespecies_dft_gibbs_hartreespecies_dft_scf_hartreespecies_dft_frequency_modesspecies_dft_std_forcesspecies_dft_opted_std_xyzspecies_dft_opted_xyz_input_orientationis_tsbatch_labelspecies_dft_log_filename_idnasmimatched_rxn_fingerprintspecies_dft_log_source_utf_8_sha512passed_connectivity_checkrdkit_canonical_nasmipartent_rdkit_canonical_nasmi_radical_onlyreaction_center_atom_map_num_radical_onlystd_xyz_strxyz_strmatched_parent_mol_sha512_radical_onlymatched_parent_mol_asmi_radical_onlymatched_parent_mol_reaction_center_atom_map_num_radical_onlyspecies_dft_first_freqspecies_dlpno_log_filename_idspecies_dlpno_log_pathspecies_dlpno_sp_hartreedlpno_batch_labelspecies_dft_frequencies
0[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]...1/home/gridsan/groups/RMG/Projects/Hao-Wei-Osca...P opt=(calcfc,maxcycle=128,noeig,nomicro,carte...02102True4100.11076.5-434.175602-434.3214890.136748-434.184741-434.218451434.321490[[[1.0, 6.0, -0.01, 0.18, 0.17], [2.0, 6.0, -0...[[1.0, 6.0, 1.274e-05, 2.05e-06, 3.763e-06], [...[[1.0, 6.0, 0.0, 1.687648, -1.481461, 0.769379...[[1.0, 6.0, 0.0, 1.711519, -1.472917, 0.740063...Falseaug11bid52810CC1C[N]C(=N)N1C=O{('46e86ef9080f8c5b21f5c329d23f0d6c', 'p2_smi')}42d67c486eb53d22486a5d1da768e644bf644469198894...TrueCC1C[N]C(=N)N1C=OCC1CNC(=N)N1C=O4.017\\n\\nC 1.687648 -1.481461 0.769379\\nC 1.14635...17\\n\\nC 1.711519 -1.472917 0.740063\\nC 1.17193...4f388644fa3d52bec962545fb1a65c4446aa8758d8834c...[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]...1669.0965id52810/home/gridsan/jburns/RMG_shared/Projects/Hao-W...-434.224944reactant_aug11b[69.0965, 133.1139, 185.0048, 247.5052, 269.23...
1[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]...3/home/gridsan/groups/RMG/Projects/Hao-Wei-Osca...P opt=(calcfc,maxcycle=128,noeig,nomicro,carte...02126True12128.73218.9-403.235873-403.4291220.183595-403.245527-403.280167403.429122[[[1.0, 6.0, 0.21, 0.06, 0.18], [2.0, 6.0, 0.0...[[1.0, 6.0, 5.513e-06, 2.7033e-05, 2.003e-06],...[[1.0, 6.0, 0.0, -2.800669, 0.461226, 0.774726...[[1.0, 6.0, 0.0, 2.701051, 1.034704, 0.04014],...Falseaug11bid52729CC1COC(C2C[N]2)C1{('5ddcee1ad82096fe7dcfd17162f30b09', 'p2_smi')}7667c6f680d9065479d515666e4c3246f65704e4926140...TrueCC1COC(C2C[N]2)C1CC1COC(C2CN2)C18.021\\n\\nC -2.800669 0.461226 0.774726\\nC -1.7902...21\\n\\nC 2.701051 1.034704 0.04014\\nC 1.73068 -...f0d1bccdf82215b9726f7ea9b5b912db1d1b0a4b8fd7e0...[C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]...2040.2091id52729/home/gridsan/jburns/RMG_shared/Projects/Hao-W...-403.298238reactant_aug11b[40.2091, 100.6031, 169.247, 232.8355, 250.021...
\n", + "
" + ], + "text/plain": [ + " asmi species_id \\\n", + "0 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]... 1 \n", + "1 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]... 3 \n", + "\n", + " species_dft_log_path \\\n", + "0 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "1 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "\n", + " species_dft_route_section charge multiplicity \\\n", + "0 P opt=(calcfc,maxcycle=128,noeig,nomicro,carte... 0 2 \n", + "1 P opt=(calcfc,maxcycle=128,noeig,nomicro,carte... 0 2 \n", + "\n", + " species_dft_opt_max_steps species_dft_opt_normal_termination_check \\\n", + "0 102 True \n", + "1 126 True \n", + "\n", + " species_dft_opt_cpu_time species_dft_opt_wall_time \\\n", + "0 4100.1 1076.5 \n", + "1 12128.7 3218.9 \n", + "\n", + " species_dft_sum_of_electronic_and_thermal_enthalpies_hartree \\\n", + "0 -434.175602 \n", + "1 -403.235873 \n", + "\n", + " species_dft_hartreefock_energy_hartree species_dft_zpe_hartree \\\n", + "0 -434.321489 0.136748 \n", + "1 -403.429122 0.183595 \n", + "\n", + " species_dft_e0_zpe_hartree species_dft_gibbs_hartree \\\n", + "0 -434.184741 -434.218451 \n", + "1 -403.245527 -403.280167 \n", + "\n", + " species_dft_scf_hartree species_dft_frequency_modes \\\n", + "0 434.321490 [[[1.0, 6.0, -0.01, 0.18, 0.17], [2.0, 6.0, -0... \n", + "1 403.429122 [[[1.0, 6.0, 0.21, 0.06, 0.18], [2.0, 6.0, 0.0... \n", + "\n", + " species_dft_std_forces \\\n", + "0 [[1.0, 6.0, 1.274e-05, 2.05e-06, 3.763e-06], [... \n", + "1 [[1.0, 6.0, 5.513e-06, 2.7033e-05, 2.003e-06],... \n", + "\n", + " species_dft_opted_std_xyz \\\n", + "0 [[1.0, 6.0, 0.0, 1.687648, -1.481461, 0.769379... \n", + "1 [[1.0, 6.0, 0.0, -2.800669, 0.461226, 0.774726... \n", + "\n", + " species_dft_opted_xyz_input_orientation is_ts batch_label \\\n", + "0 [[1.0, 6.0, 0.0, 1.711519, -1.472917, 0.740063... False aug11b \n", + "1 [[1.0, 6.0, 0.0, 2.701051, 1.034704, 0.04014],... False aug11b \n", + "\n", + " species_dft_log_filename_id nasmi \\\n", + "0 id52810 CC1C[N]C(=N)N1C=O \n", + "1 id52729 CC1COC(C2C[N]2)C1 \n", + "\n", + " matched_rxn_fingerprint \\\n", + "0 {('46e86ef9080f8c5b21f5c329d23f0d6c', 'p2_smi')} \n", + "1 {('5ddcee1ad82096fe7dcfd17162f30b09', 'p2_smi')} \n", + "\n", + " species_dft_log_source_utf_8_sha512 \\\n", + "0 42d67c486eb53d22486a5d1da768e644bf644469198894... \n", + "1 7667c6f680d9065479d515666e4c3246f65704e4926140... \n", + "\n", + " passed_connectivity_check rdkit_canonical_nasmi \\\n", + "0 True CC1C[N]C(=N)N1C=O \n", + "1 True CC1COC(C2C[N]2)C1 \n", + "\n", + " partent_rdkit_canonical_nasmi_radical_only \\\n", + "0 CC1CNC(=N)N1C=O \n", + "1 CC1COC(C2CN2)C1 \n", + "\n", + " reaction_center_atom_map_num_radical_only \\\n", + "0 4.0 \n", + "1 8.0 \n", + "\n", + " std_xyz_str \\\n", + "0 17\\n\\nC 1.687648 -1.481461 0.769379\\nC 1.14635... \n", + "1 21\\n\\nC -2.800669 0.461226 0.774726\\nC -1.7902... \n", + "\n", + " xyz_str \\\n", + "0 17\\n\\nC 1.711519 -1.472917 0.740063\\nC 1.17193... \n", + "1 21\\n\\nC 2.701051 1.034704 0.04014\\nC 1.73068 -... \n", + "\n", + " matched_parent_mol_sha512_radical_only \\\n", + "0 4f388644fa3d52bec962545fb1a65c4446aa8758d8834c... \n", + "1 f0d1bccdf82215b9726f7ea9b5b912db1d1b0a4b8fd7e0... \n", + "\n", + " matched_parent_mol_asmi_radical_only \\\n", + "0 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[N:4]... \n", + "1 [C:1]([C:2]1([H:13])[C:3]([H:14])([H:15])[O:4]... \n", + "\n", + " matched_parent_mol_reaction_center_atom_map_num_radical_only \\\n", + "0 16 \n", + "1 20 \n", + "\n", + " species_dft_first_freq species_dlpno_log_filename_id \\\n", + "0 69.0965 id52810 \n", + "1 40.2091 id52729 \n", + "\n", + " species_dlpno_log_path \\\n", + "0 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "1 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "\n", + " species_dlpno_sp_hartree dlpno_batch_label \\\n", + "0 -434.224944 reactant_aug11b \n", + "1 -403.298238 reactant_aug11b \n", + "\n", + " species_dft_frequencies \n", + "0 [69.0965, 133.1139, 185.0048, 247.5052, 269.23... \n", + "1 [40.2091, 100.6031, 169.247, 232.8355, 250.021... " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "348258 rows × 41 columns\n" + ] + } + ], + "source": [ + "zpe_data = pd.read_pickle(\n", + " quantum_green / \"reactants\" / \"quantum_green_species_data_24march12b.pkl\"\n", + ")\n", + "head(zpe_data)" + ] + }, + { + "cell_type": "markdown", + "id": "702a6af9", + "metadata": {}, + "source": [ + "Collect the relevant data for each species." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "f196b46f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smilesH298S298Cp300dlpno_sp_hartreedft_zpe_scaled_hartreeCpInfa0a1a2a3H0S0BDHPMclosed_shell
0CC1C[N]C(=N)N1C=O89171.888145384.472728138.524841-434.2249440.132972407.409-1.602707.86347-12.218103.797620e+00-37373.837289-2025.626931300.003730.957073False
1CC1COC(C2C[N]2)C1102076.181436397.355792153.423259-403.2982380.178526507.183-7.963839.72081-3.843897.901530e-07-252638.541791-3207.6974091138.672556.802857False
\n", + "
" + ], + "text/plain": [ + " smiles H298 S298 Cp300 dlpno_sp_hartree \\\n", + "0 CC1C[N]C(=N)N1C=O 89171.888145 384.472728 138.524841 -434.224944 \n", + "1 CC1COC(C2C[N]2)C1 102076.181436 397.355792 153.423259 -403.298238 \n", + "\n", + " dft_zpe_scaled_hartree CpInf a0 a1 a2 a3 \\\n", + "0 0.132972 407.409 -1.60270 7.86347 -12.21810 3.797620e+00 \n", + "1 0.178526 507.183 -7.96383 9.72081 -3.84389 7.901530e-07 \n", + "\n", + " H0 S0 B DHPM closed_shell \n", + "0 -37373.837289 -2025.626931 300.00 3730.957073 False \n", + "1 -252638.541791 -3207.697409 1138.67 2556.802857 False " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "336620 rows × 16 columns\n" + ] + } + ], + "source": [ + "thermo_df = pd.DataFrame(\n", + " {\n", + " \"smiles\": filtered_thermo_data[\"smiles\"],\n", + " \"H298\": filtered_thermo_data[\"p_H298\"],\n", + " \"S298\": filtered_thermo_data[\"p_S298\"],\n", + " \"Cp300\": filtered_thermo_data[\"p_Cp300\"],\n", + " \"dlpno_sp_hartree\": filtered_thermo_data[\"species_dlpno_sp_hartree\"],\n", + " \"dft_zpe_scaled_hartree\": 0.9723865877712031\n", + " * filtered_thermo_data[\"smiles\"].map(\n", + " zpe_data.set_index(\"rdkit_canonical_nasmi\")[\"species_dft_zpe_hartree\"]\n", + " ),\n", + " **wilhoit_df.to_dict(orient=\"list\"),\n", + " \"DHPM\": filtered_thermo_data[\"m_H298\"] - filtered_thermo_data[\"p_H298\"],\n", + " \"closed_shell\": filtered_thermo_data[\"multiplicity\"] == 1,\n", + " }\n", + ")\n", + "head(thermo_df)" + ] + }, + { + "cell_type": "markdown", + "id": "7ea68316", + "metadata": {}, + "source": [ + "Save the closed-shell and open-shell species in separate files." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "b6592877", + "metadata": {}, + "outputs": [], + "source": [ + "thermo_df[thermo_df[\"closed_shell\"]].drop(columns=[\"closed_shell\"]).sort_values(\n", + " by=\"smiles\"\n", + ").to_csv(\n", + " data_dir / \"quantumpioneer_thermo_dataset_closed_shell_species.csv\", index=False\n", + ")\n", + "\n", + "thermo_df[~thermo_df[\"closed_shell\"]].drop(columns=[\"closed_shell\"]).sort_values(\n", + " by=\"smiles\"\n", + ").to_csv(data_dir / \"quantumpioneer_thermo_dataset_open_shell_species.csv\", index=False)" + ] + }, + { + "cell_type": "markdown", + "id": "f3bd0c90", + "metadata": {}, + "source": [ + "### Sanity checks" + ] + }, + { + "cell_type": "markdown", + "id": "22e0476d", + "metadata": {}, + "source": [ + "Confirm that the dataset has no missing values." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "bf655d8a", + "metadata": {}, + "outputs": [], + "source": [ + "for col in thermo_df.columns:\n", + " num_na = thermo_df[col].isna().sum()\n", + " if num_na > 0:\n", + " print(f\"Column {col} has {num_na} missing values\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "029c2068", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ts_dft_log_source_utf_8_sha512dft_table_idts_dft_log_pathts_dft_route_sectionchargemultiplicityts_dft_opt_max_stepsts_dft_opt_normal_termination_checkts_dft_opt_cpu_timets_dft_opt_wall_timets_dft_sum_of_electronic_and_thermal_enthalpies_hartreets_dft_hartreefock_energy_hartreets_dft_zpe_hartreets_dft_e0_zpe_hartreets_dft_gibbs_hartreets_dft_scf_hartreets_dft_frequency_modests_dft_std_forcests_dft_opted_std_xyzts_dft_opted_xyz_input_orientationis_tsbatch_labelts_dft_log_filename_idrsmipsmir1smir2smip1smip2smir1nasmir2nasmip1nasmip2nasmistd_xyz_strxyz_strp1_reaction_center_atom_map_numr1_reaction_center_atom_map_numh_atom_map_numr1_matched_sha512r2_matched_sha512p1_matched_sha512p2_matched_sha512r1_matched_smir1_matched_std_xyz_strr2_matched_smir2_matched_std_xyz_strp1_matched_smip1_matched_std_xyz_strp2_matched_smip2_matched_std_xyz_strconnectivity_check_r1connectivity_check_r2connectivity_check_r1_distconnectivity_check_r2_distr2_h_idxr2_reacting_site_idxr2_reacting_site_elementr2_reacting_site_h_bond_distancer2_ts_reacting_site_h_bond_distancer2_ts_reacting_site_h_bond_distance_pct_changeconnectivity_check_p1connectivity_check_p2connectivity_check_p1_distconnectivity_check_p2_distp2_h_idxp2_reacting_site_idxp2_reacting_site_elementp2_reacting_site_h_bond_distancep2_ts_reacting_site_h_bond_distancep2_ts_reacting_site_h_bond_distance_pct_changerxn_smifingerprintrxn_smi_original_orderrdmc_large_factorrdmc_small_factorneg_freqneg_freq_z_scorerp_connectivity_check_true_sumconnectivity_check_r1_scoreconnectivity_check_r2_scoreconnectivity_check_p2_scoreconnectivity_check_p1_scoreho2_ts_h_modeho2_non_react_h_modeho2_ts_h_scoreho2_non_react_h_scoreho2_non_div_ts_mode_ratior1_dft_e0_zpe_hartreer2_dft_e0_zpe_hartreep1_dft_e0_zpe_hartreep2_dft_e0_zpe_hartreercomplex_dft_e0_zpe_hartreepcomplex_dft_e0_zpe_hartreedft_fwd_barrier_e0_zpe_hartreedft_rev_barrier_e0_zpe_hartreedft_fwd_Hrxn_e0_zpe_hartreedft_fwd_barrier_e0_zpe_kcaldft_rev_barrier_e0_zpe_kcaldft_fwd_Hrxn_e0_zpe_kcalts_dlpno_log_filename_idts_dlpno_xyz_tuplets_dlpno_log_pathts_dlpno_sp_hartreedft_opted_xyz_tuple_used_for_dlpno_calcr1_dlpno_sp_hartreer2_dlpno_sp_hartreep1_dlpno_sp_hartreep2_dlpno_sp_hartreeall_species_has_dlpno_spfwd_Hrxn_dlpno_sp_hartreets_and_species_has_dlpno_spfwd_barrier_dlpno_sp_hartreerev_barrier_dlpno_sp_hartreefwd_Hrxn_dlpno_sp_kcalfwd_barrier_dlpno_sp_kcalrev_barrier_dlpno_sp_kcalr1_dft_log_pathr2_dft_log_pathp1_dft_log_pathp2_dft_log_pathr1_dlpno_log_pathr2_dlpno_log_pathp1_dlpno_log_pathp2_dlpno_log_pathr1_dft_hartreefock_energy_hartreer2_dft_hartreefock_energy_hartreep1_dft_hartreefock_energy_hartreep2_dft_hartreefock_energy_hartreer1_dft_zpe_hartreer2_dft_zpe_hartreep1_dft_zpe_hartreep2_dft_zpe_hartreets_and_species_has_dft_zpespecies_has_dft_zpefwd_Hrxn_dft_zpe_hartreefwd_barrier_dft_zpe_hartreerev_barrier_dft_zpe_hartreefwd_Hrxn_dlpno_sp_dft_zpe_hartreefwd_barrier_dlpno_sp_dft_zpe_hartreerev_barrier_dlpno_sp_dft_zpe_hartreefwd_Hrxn_dlpno_sp_dft_zpe_kcalfwd_barrier_dlpno_sp_dft_zpe_kcalrev_barrier_dlpno_sp_dft_zpe_kcalr1_dft_zpe_scaled_hartreer2_dft_zpe_scaled_hartreep1_dft_zpe_scaled_hartreep2_dft_zpe_scaled_hartreets_dft_zpe_scaled_hartreefwd_barrier_dlpno_sp_dft_zpe_scaled_hartreerev_barrier_dlpno_sp_dft_zpe_scaled_hartreefwd_Hrxn_dlpno_sp_dft_zpe_scaled_hartreerev_Hrxn_dlpno_sp_dft_zpe_scaled_hartreefwd_barrier_dlpno_sp_dft_zpe_scaled_kcalrev_barrier_dlpno_sp_dft_zpe_scaled_kcalfwd_Hrxn_dlpno_sp_dft_zpe_scaled_kcalrev_Hrxn_dlpno_sp_dft_zpe_scaled_kcalts_dft_frequenciesr1_dft_frequenciesr2_dft_frequenciesp1_dft_frequenciesp2_dft_frequenciessmiles
04c648a435eb66f655a9afa7aebe1b6288cfbe5d4377ab7...545983/home/gridsan/groups/RMG/Projects/Habs/data/ts...P opt=(ts,calcall,maxcycle=64,noeig,nomicro,ca...0264True53637.51178.8-499.312919-499.5138460.187656-499.326190-499.365824499.513846[[[1.0, 8.0, -0.01, 0.0, -0.03], [2.0, 8.0, 0....[[1.0, 8.0, 2.5425e-05, -7.272e-06, -2.4919e-0...[[1.0, 8.0, 0.0, -0.296608, 2.50034, -0.42834]...[[1.0, 8.0, 0.0, -0.07876, -1.01869, -0.072806...Trueoo_g4mp22584189[O:1]([O:2])[H:3].[C:4]1([C:5]([C:8]([C:10](=[...[C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1...[O:1]([O:2])[H:3][C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1...[C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1...[O:1]([O:2][H:11])[H:3][O]OCC(CC=O)C1CC1C[C](CC=O)C1CC1OO23\\n\\nO -0.296608 2.50034 -0.42834\\nO 0.12862 ...23\\n\\nO -0.07876 -1.01869 -0.072806\\nO 0.9303 ...5211d1ca3ead22026cd95cd9eba36a347437a7d6f6adab5c4b...610ba260b0107be2c50383d2bf26bf5fc5467c7ad8288b...0a477b232ce026d015e750e1199a52b816a5fd4e81b88d...a378723d20b8e233b8c52a4a265f23e51eed6de0c99f59...[O:1][O:2][H:3]3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59...[C:1]([C:2]([C:3]([C:4](=[O:5])[H:15])([H:13])...20\\n\\nC 0.216362 1.782055 0.054566\\nC -0.13150...[C:1]([C:2]([C:3]([C:4](=[O:5])[H:14])([H:12])...19\\n\\nC -0.008753 1.669215 -0.212931\\nC 0.0510...[O:1]([O:2][H:4])[H:3]4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862...TrueTrue[0.05700816 0.05700816 0.00748912 0.00748912][0.00946447 0.00248608 0.00129841 0.00037547 0...111C1.1067731.3127540.156907TrueTrue[1.36928176e-02 2.58629462e-03 6.66837529e-03 ...[0.02934109 0.00283253 0.02934109 0.00283253]31O0.9658421.2096840.201575[O:1]([O:2])[H:3].[C:4]1([C:5]([C:8]([C:10](=[...45ff0c52c5e6de887c3d5db1a3d4530d[C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1...13.6489670.0-1819.2074-0.18046440.2185320.0133640.0576610.029017[11.0, 1.0, 0.05, 0.99, 0.03][1.0, 8.0, -0.01, 0.0, -0.03]0.9917160.0316230.031887-150.721953-348.624311-347.977987-151.349014-499.346264-499.3270010.0200740.0008110.01926312.5966250.50891012.087715id54674((-0.07876, -1.01869, -0.072806), (0.9303, -0..../home/gridsan/jburns/RMG_shared/Projects/Hao-W...-499.420713((-0.07876, -1.01869, -0.072806), (0.9303, -0....-150.773531-348.675816-348.013214-151.4225True0.013633True0.0286330.0150018.55456717.9676309.413063/home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/jburns/RMG_shared/Projects/Hao-W.../home/gridsan/jburns/RMG_shared/Projects/Hao-W.../home/gridsan/jburns/RMG_shared/Projects/Hao-W.../home/gridsan/jburns/RMG_shared/Projects/Hao-W...-150.736553-348.800739-348.140437-151.3761960.01460.1764280.162450.027182TrueTrue-0.001396-0.003372-0.0019760.0122360.0252610.0130257.67850115.8517938.1732920.0141970.1715560.1579640.0264310.1824740.0253550.013080.012275-0.01227515.9102198.2075267.702692-7.702692[-1819.2074, 54.014, 69.9409, 78.7383, 95.0168...[1268.6637, 1466.9774, 3673.0462][54.4468, 75.2434, 102.0769, 166.2486, 229.237...[38.6623, 46.6427, 70.6254, 124.3627, 195.2907...[355.51, 1029.1913, 1349.894, 1491.2134, 3851....[O:1]([O:2])[H:3].[C:4]1([C:5]([C:8]([C:10](=[...
13fcdf61497a20d2e765655162f9a50bd8067a6ae90e90e...545984/home/gridsan/groups/RMG/Projects/Habs/data/ts...P opt=(ts,calcall,maxcycle=64,noeig,nomicro,ca...0264True87382.41915.1-575.604651-575.8356510.216399-575.619252-575.662671575.835651[[[1.0, 8.0, 0.02, 0.01, -0.01], [2.0, 8.0, -0...[[1.0, 8.0, -6.29e-07, -8.11e-07, 6.03e-07], [...[[1.0, 8.0, 0.0, 2.669129, -1.916241, 0.102074...[[1.0, 8.0, 0.0, 2.900762, 1.051554, -2.878215...Trueoo_g4mp22759514[O:1]([O:2])[H:3].[C:4]1([O:11][C:5]([C:8]([O:...[C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:25])[...[O:1]([O:2])[H:3][C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:24])(...[C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:25])[...[O:1]([O:2][H:24])[H:3][O]OCOCC(C)OC1CC1[CH2]OCC(C)OC1CC1OO26\\n\\nO 2.669129 -1.916241 0.102074\\nO 3.62579...26\\n\\nO 2.900762 1.051554 -2.878215\\nO 3.37906...10224d1ca3ead22026cd95cd9eba36a347437a7d6f6adab5c4b...09d7101d699a76511a92cf2607786664c9f074ee20a378...36ef1974554666d88c201c7fd525e42cbdfc9e88e4f93e...a378723d20b8e233b8c52a4a265f23e51eed6de0c99f59...[O:1][O:2][H:3]3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59...[C:1]([O:2][C:3]([C:4]([C:5]([H:16])([H:17])[H...23\\n\\nC 2.355263 -1.592675 0.183484\\nO 2.52464...[C:1]([O:2][C:3]([C:4]([C:5]([H:15])([H:16])[H...22\\n\\nC 1.79229 -1.9024 0.57597\\nO 1.564071 -1...[O:1]([O:2][H:4])[H:3]4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862...TrueTrue[0.05822702 0.05822702 0.00820458 0.00820458][3.06791240e-02 3.36613486e-03 3.69001136e-03 ...90C1.0990111.3324980.175225TrueTrue[0.00805211 0.00649287 0.00520663 0.00805211 0...[0.02822179 0.00210964 0.02822179 0.00210964]31O0.9658421.2003480.195365[O:1]([O:2])[H:3].[C:4]1([O:11][C:5]([C:8]([O:...fe6f921ca72c34388a0ece88ef9c4bf1[C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:24])(...15.5123290.0-1780.96550.01028440.2282700.0696230.0532460.010703[24.0, 1.0, -0.34, 0.92, 0.13][1.0, 8.0, 0.02, 0.01, -0.01]0.9893940.0244950.024757-150.721953-424.919453-424.271413-151.349014-575.641406-575.6204270.0221540.0011750.02097913.9018450.73732413.164521id55203((2.900762, 1.051554, -2.878215), (3.379065, 0.../home/gridsan/jburns/RMG_shared/Projects/Hao-W...-575.755980((2.900762, 1.051554, -2.878215), (3.379065, 0...-150.773531-425.012518-424.350164-151.4225True0.013386True0.0300690.0166838.39962118.86857610.468954/home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/groups/RMG/Projects/Hao-Wei-Osca.../home/gridsan/jburns/RMG_shared/Projects/Hao-W.../home/gridsan/jburns/RMG_shared/Projects/Hao-W.../home/gridsan/jburns/RMG_shared/Projects/Hao-W.../home/gridsan/jburns/RMG_shared/Projects/Hao-W...-150.736553-425.124273-424.462568-151.3761960.01460.2048190.1911550.027182TrueTrue-0.001083-0.003021-0.0019380.0123030.0270480.0147467.72009116.9730589.2529670.0141970.1991640.1858760.0264310.2104230.0271320.0147990.012333-0.01233317.02549.2865447.738855-7.738855[-1780.9655, 22.7631, 39.1821, 48.2943, 53.310...[1268.6637, 1466.9774, 3673.0462][41.7173, 46.7835, 79.0284, 116.919, 165.6573,...[41.6898, 69.9592, 110.6483, 138.1279, 181.957...[355.51, 1029.1913, 1349.894, 1491.2134, 3851....[O:1]([O:2])[H:3].[C:4]1([O:11][C:5]([C:8]([O:...
\n", + "
" + ], + "text/plain": [ + " ts_dft_log_source_utf_8_sha512 dft_table_id \\\n", + "0 4c648a435eb66f655a9afa7aebe1b6288cfbe5d4377ab7... 545983 \n", + "1 3fcdf61497a20d2e765655162f9a50bd8067a6ae90e90e... 545984 \n", + "\n", + " ts_dft_log_path \\\n", + "0 /home/gridsan/groups/RMG/Projects/Habs/data/ts... \n", + "1 /home/gridsan/groups/RMG/Projects/Habs/data/ts... \n", + "\n", + " ts_dft_route_section charge multiplicity \\\n", + "0 P opt=(ts,calcall,maxcycle=64,noeig,nomicro,ca... 0 2 \n", + "1 P opt=(ts,calcall,maxcycle=64,noeig,nomicro,ca... 0 2 \n", + "\n", + " ts_dft_opt_max_steps ts_dft_opt_normal_termination_check \\\n", + "0 64 True \n", + "1 64 True \n", + "\n", + " ts_dft_opt_cpu_time ts_dft_opt_wall_time \\\n", + "0 53637.5 1178.8 \n", + "1 87382.4 1915.1 \n", + "\n", + " ts_dft_sum_of_electronic_and_thermal_enthalpies_hartree \\\n", + "0 -499.312919 \n", + "1 -575.604651 \n", + "\n", + " ts_dft_hartreefock_energy_hartree ts_dft_zpe_hartree \\\n", + "0 -499.513846 0.187656 \n", + "1 -575.835651 0.216399 \n", + "\n", + " ts_dft_e0_zpe_hartree ts_dft_gibbs_hartree ts_dft_scf_hartree \\\n", + "0 -499.326190 -499.365824 499.513846 \n", + "1 -575.619252 -575.662671 575.835651 \n", + "\n", + " ts_dft_frequency_modes \\\n", + "0 [[[1.0, 8.0, -0.01, 0.0, -0.03], [2.0, 8.0, 0.... \n", + "1 [[[1.0, 8.0, 0.02, 0.01, -0.01], [2.0, 8.0, -0... \n", + "\n", + " ts_dft_std_forces \\\n", + "0 [[1.0, 8.0, 2.5425e-05, -7.272e-06, -2.4919e-0... \n", + "1 [[1.0, 8.0, -6.29e-07, -8.11e-07, 6.03e-07], [... \n", + "\n", + " ts_dft_opted_std_xyz \\\n", + "0 [[1.0, 8.0, 0.0, -0.296608, 2.50034, -0.42834]... \n", + "1 [[1.0, 8.0, 0.0, 2.669129, -1.916241, 0.102074... \n", + "\n", + " ts_dft_opted_xyz_input_orientation is_ts batch_label \\\n", + "0 [[1.0, 8.0, 0.0, -0.07876, -1.01869, -0.072806... True oo_g4mp2 \n", + "1 [[1.0, 8.0, 0.0, 2.900762, 1.051554, -2.878215... True oo_g4mp2 \n", + "\n", + " ts_dft_log_filename_id rsmi \\\n", + "0 2584189 [O:1]([O:2])[H:3].[C:4]1([C:5]([C:8]([C:10](=[... \n", + "1 2759514 [O:1]([O:2])[H:3].[C:4]1([O:11][C:5]([C:8]([O:... \n", + "\n", + " psmi r1smi \\\n", + "0 [C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1... [O:1]([O:2])[H:3] \n", + "1 [C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:25])[... [O:1]([O:2])[H:3] \n", + "\n", + " r2smi \\\n", + "0 [C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1... \n", + "1 [C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:24])(... \n", + "\n", + " p1smi p2smi \\\n", + "0 [C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1... [O:1]([O:2][H:11])[H:3] \n", + "1 [C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:25])[... [O:1]([O:2][H:24])[H:3] \n", + "\n", + " r1nasmi r2nasmi p1nasmi p2nasmi \\\n", + "0 [O]O CC(CC=O)C1CC1 C[C](CC=O)C1CC1 OO \n", + "1 [O]O COCC(C)OC1CC1 [CH2]OCC(C)OC1CC1 OO \n", + "\n", + " std_xyz_str \\\n", + "0 23\\n\\nO -0.296608 2.50034 -0.42834\\nO 0.12862 ... \n", + "1 26\\n\\nO 2.669129 -1.916241 0.102074\\nO 3.62579... \n", + "\n", + " xyz_str \\\n", + "0 23\\n\\nO -0.07876 -1.01869 -0.072806\\nO 0.9303 ... \n", + "1 26\\n\\nO 2.900762 1.051554 -2.878215\\nO 3.37906... \n", + "\n", + " p1_reaction_center_atom_map_num r1_reaction_center_atom_map_num \\\n", + "0 5 2 \n", + "1 10 2 \n", + "\n", + " h_atom_map_num r1_matched_sha512 \\\n", + "0 11 d1ca3ead22026cd95cd9eba36a347437a7d6f6adab5c4b... \n", + "1 24 d1ca3ead22026cd95cd9eba36a347437a7d6f6adab5c4b... \n", + "\n", + " r2_matched_sha512 \\\n", + "0 610ba260b0107be2c50383d2bf26bf5fc5467c7ad8288b... \n", + "1 09d7101d699a76511a92cf2607786664c9f074ee20a378... \n", + "\n", + " p1_matched_sha512 \\\n", + "0 0a477b232ce026d015e750e1199a52b816a5fd4e81b88d... \n", + "1 36ef1974554666d88c201c7fd525e42cbdfc9e88e4f93e... \n", + "\n", + " p2_matched_sha512 r1_matched_smi \\\n", + "0 a378723d20b8e233b8c52a4a265f23e51eed6de0c99f59... [O:1][O:2][H:3] \n", + "1 a378723d20b8e233b8c52a4a265f23e51eed6de0c99f59... [O:1][O:2][H:3] \n", + "\n", + " r1_matched_std_xyz_str \\\n", + "0 3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59... \n", + "1 3\\n\\nO 0.055113 0.705073 0.0\\nO 0.055113 -0.59... \n", + "\n", + " r2_matched_smi \\\n", + "0 [C:1]([C:2]([C:3]([C:4](=[O:5])[H:15])([H:13])... \n", + "1 [C:1]([O:2][C:3]([C:4]([C:5]([H:16])([H:17])[H... \n", + "\n", + " r2_matched_std_xyz_str \\\n", + "0 20\\n\\nC 0.216362 1.782055 0.054566\\nC -0.13150... \n", + "1 23\\n\\nC 2.355263 -1.592675 0.183484\\nO 2.52464... \n", + "\n", + " p1_matched_smi \\\n", + "0 [C:1]([C:2]([C:3]([C:4](=[O:5])[H:14])([H:12])... \n", + "1 [C:1]([O:2][C:3]([C:4]([C:5]([H:15])([H:16])[H... \n", + "\n", + " p1_matched_std_xyz_str p2_matched_smi \\\n", + "0 19\\n\\nC -0.008753 1.669215 -0.212931\\nC 0.0510... [O:1]([O:2][H:4])[H:3] \n", + "1 22\\n\\nC 1.79229 -1.9024 0.57597\\nO 1.564071 -1... [O:1]([O:2][H:4])[H:3] \n", + "\n", + " p2_matched_std_xyz_str connectivity_check_r1 \\\n", + "0 4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862... True \n", + "1 4\\n\\nO 0.0 0.708624 -0.054351\\nO -0.0 -0.70862... True \n", + "\n", + " connectivity_check_r2 connectivity_check_r1_dist \\\n", + "0 True [0.05700816 0.05700816 0.00748912 0.00748912] \n", + "1 True [0.05822702 0.05822702 0.00820458 0.00820458] \n", + "\n", + " connectivity_check_r2_dist r2_h_idx \\\n", + "0 [0.00946447 0.00248608 0.00129841 0.00037547 0... 11 \n", + "1 [3.06791240e-02 3.36613486e-03 3.69001136e-03 ... 9 \n", + "\n", + " r2_reacting_site_idx r2_reacting_site_element \\\n", + "0 1 C \n", + "1 0 C \n", + "\n", + " r2_reacting_site_h_bond_distance r2_ts_reacting_site_h_bond_distance \\\n", + "0 1.106773 1.312754 \n", + "1 1.099011 1.332498 \n", + "\n", + " r2_ts_reacting_site_h_bond_distance_pct_change connectivity_check_p1 \\\n", + "0 0.156907 True \n", + "1 0.175225 True \n", + "\n", + " connectivity_check_p2 connectivity_check_p1_dist \\\n", + "0 True [1.36928176e-02 2.58629462e-03 6.66837529e-03 ... \n", + "1 True [0.00805211 0.00649287 0.00520663 0.00805211 0... \n", + "\n", + " connectivity_check_p2_dist p2_h_idx \\\n", + "0 [0.02934109 0.00283253 0.02934109 0.00283253] 3 \n", + "1 [0.02822179 0.00210964 0.02822179 0.00210964] 3 \n", + "\n", + " p2_reacting_site_idx p2_reacting_site_element \\\n", + "0 1 O \n", + "1 1 O \n", + "\n", + " p2_reacting_site_h_bond_distance p2_ts_reacting_site_h_bond_distance \\\n", + "0 0.965842 1.209684 \n", + "1 0.965842 1.200348 \n", + "\n", + " p2_ts_reacting_site_h_bond_distance_pct_change \\\n", + "0 0.201575 \n", + "1 0.195365 \n", + "\n", + " rxn_smi \\\n", + "0 [O:1]([O:2])[H:3].[C:4]1([C:5]([C:8]([C:10](=[... \n", + "1 [O:1]([O:2])[H:3].[C:4]1([O:11][C:5]([C:8]([O:... \n", + "\n", + " fingerprint \\\n", + "0 45ff0c52c5e6de887c3d5db1a3d4530d \n", + "1 fe6f921ca72c34388a0ece88ef9c4bf1 \n", + "\n", + " rxn_smi_original_order rdmc_large_factor \\\n", + "0 [C:4]1([C:5]([C:8]([C:10](=[O:22])[H:23])([H:1... 13.648967 \n", + "1 [C:4]1([O:11][C:5]([C:8]([O:12][C:10]([H:24])(... 15.512329 \n", + "\n", + " rdmc_small_factor neg_freq neg_freq_z_score \\\n", + "0 0.0 -1819.2074 -0.180464 \n", + "1 0.0 -1780.9655 0.010284 \n", + "\n", + " rp_connectivity_check_true_sum connectivity_check_r1_score \\\n", + "0 4 0.218532 \n", + "1 4 0.228270 \n", + "\n", + " connectivity_check_r2_score connectivity_check_p2_score \\\n", + "0 0.013364 0.057661 \n", + "1 0.069623 0.053246 \n", + "\n", + " connectivity_check_p1_score ho2_ts_h_mode \\\n", + "0 0.029017 [11.0, 1.0, 0.05, 0.99, 0.03] \n", + "1 0.010703 [24.0, 1.0, -0.34, 0.92, 0.13] \n", + "\n", + " ho2_non_react_h_mode ho2_ts_h_score ho2_non_react_h_score \\\n", + "0 [1.0, 8.0, -0.01, 0.0, -0.03] 0.991716 0.031623 \n", + "1 [1.0, 8.0, 0.02, 0.01, -0.01] 0.989394 0.024495 \n", + "\n", + " ho2_non_div_ts_mode_ratio r1_dft_e0_zpe_hartree r2_dft_e0_zpe_hartree \\\n", + "0 0.031887 -150.721953 -348.624311 \n", + "1 0.024757 -150.721953 -424.919453 \n", + "\n", + " p1_dft_e0_zpe_hartree p2_dft_e0_zpe_hartree rcomplex_dft_e0_zpe_hartree \\\n", + "0 -347.977987 -151.349014 -499.346264 \n", + "1 -424.271413 -151.349014 -575.641406 \n", + "\n", + " pcomplex_dft_e0_zpe_hartree dft_fwd_barrier_e0_zpe_hartree \\\n", + "0 -499.327001 0.020074 \n", + "1 -575.620427 0.022154 \n", + "\n", + " dft_rev_barrier_e0_zpe_hartree dft_fwd_Hrxn_e0_zpe_hartree \\\n", + "0 0.000811 0.019263 \n", + "1 0.001175 0.020979 \n", + "\n", + " dft_fwd_barrier_e0_zpe_kcal dft_rev_barrier_e0_zpe_kcal \\\n", + "0 12.596625 0.508910 \n", + "1 13.901845 0.737324 \n", + "\n", + " dft_fwd_Hrxn_e0_zpe_kcal ts_dlpno_log_filename_id \\\n", + "0 12.087715 id54674 \n", + "1 13.164521 id55203 \n", + "\n", + " ts_dlpno_xyz_tuple \\\n", + "0 ((-0.07876, -1.01869, -0.072806), (0.9303, -0.... \n", + "1 ((2.900762, 1.051554, -2.878215), (3.379065, 0... \n", + "\n", + " ts_dlpno_log_path ts_dlpno_sp_hartree \\\n", + "0 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... -499.420713 \n", + "1 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... -575.755980 \n", + "\n", + " dft_opted_xyz_tuple_used_for_dlpno_calc r1_dlpno_sp_hartree \\\n", + "0 ((-0.07876, -1.01869, -0.072806), (0.9303, -0.... -150.773531 \n", + "1 ((2.900762, 1.051554, -2.878215), (3.379065, 0... -150.773531 \n", + "\n", + " r2_dlpno_sp_hartree p1_dlpno_sp_hartree p2_dlpno_sp_hartree \\\n", + "0 -348.675816 -348.013214 -151.4225 \n", + "1 -425.012518 -424.350164 -151.4225 \n", + "\n", + " all_species_has_dlpno_sp fwd_Hrxn_dlpno_sp_hartree \\\n", + "0 True 0.013633 \n", + "1 True 0.013386 \n", + "\n", + " ts_and_species_has_dlpno_sp fwd_barrier_dlpno_sp_hartree \\\n", + "0 True 0.028633 \n", + "1 True 0.030069 \n", + "\n", + " rev_barrier_dlpno_sp_hartree fwd_Hrxn_dlpno_sp_kcal \\\n", + "0 0.015001 8.554567 \n", + "1 0.016683 8.399621 \n", + "\n", + " fwd_barrier_dlpno_sp_kcal rev_barrier_dlpno_sp_kcal \\\n", + "0 17.967630 9.413063 \n", + "1 18.868576 10.468954 \n", + "\n", + " r1_dft_log_path \\\n", + "0 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "1 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "\n", + " r2_dft_log_path \\\n", + "0 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "1 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "\n", + " p1_dft_log_path \\\n", + "0 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "1 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "\n", + " p2_dft_log_path \\\n", + "0 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "1 /home/gridsan/groups/RMG/Projects/Hao-Wei-Osca... \n", + "\n", + " r1_dlpno_log_path \\\n", + "0 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "1 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "\n", + " r2_dlpno_log_path \\\n", + "0 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "1 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "\n", + " p1_dlpno_log_path \\\n", + "0 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "1 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "\n", + " p2_dlpno_log_path \\\n", + "0 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "1 /home/gridsan/jburns/RMG_shared/Projects/Hao-W... \n", + "\n", + " r1_dft_hartreefock_energy_hartree r2_dft_hartreefock_energy_hartree \\\n", + "0 -150.736553 -348.800739 \n", + "1 -150.736553 -425.124273 \n", + "\n", + " p1_dft_hartreefock_energy_hartree p2_dft_hartreefock_energy_hartree \\\n", + "0 -348.140437 -151.376196 \n", + "1 -424.462568 -151.376196 \n", + "\n", + " r1_dft_zpe_hartree r2_dft_zpe_hartree p1_dft_zpe_hartree p2_dft_zpe_hartree \\\n", + "0 0.0146 0.176428 0.16245 0.027182 \n", + "1 0.0146 0.204819 0.191155 0.027182 \n", + "\n", + " ts_and_species_has_dft_zpe species_has_dft_zpe fwd_Hrxn_dft_zpe_hartree \\\n", + "0 True True -0.001396 \n", + "1 True True -0.001083 \n", + "\n", + " fwd_barrier_dft_zpe_hartree rev_barrier_dft_zpe_hartree \\\n", + "0 -0.003372 -0.001976 \n", + "1 -0.003021 -0.001938 \n", + "\n", + " fwd_Hrxn_dlpno_sp_dft_zpe_hartree fwd_barrier_dlpno_sp_dft_zpe_hartree \\\n", + "0 0.012236 0.025261 \n", + "1 0.012303 0.027048 \n", + "\n", + " rev_barrier_dlpno_sp_dft_zpe_hartree fwd_Hrxn_dlpno_sp_dft_zpe_kcal \\\n", + "0 0.013025 7.678501 \n", + "1 0.014746 7.720091 \n", + "\n", + " fwd_barrier_dlpno_sp_dft_zpe_kcal rev_barrier_dlpno_sp_dft_zpe_kcal \\\n", + "0 15.851793 8.173292 \n", + "1 16.973058 9.252967 \n", + "\n", + " r1_dft_zpe_scaled_hartree r2_dft_zpe_scaled_hartree \\\n", + "0 0.014197 0.171556 \n", + "1 0.014197 0.199164 \n", + "\n", + " p1_dft_zpe_scaled_hartree p2_dft_zpe_scaled_hartree \\\n", + "0 0.157964 0.026431 \n", + "1 0.185876 0.026431 \n", + "\n", + " ts_dft_zpe_scaled_hartree fwd_barrier_dlpno_sp_dft_zpe_scaled_hartree \\\n", + "0 0.182474 0.025355 \n", + "1 0.210423 0.027132 \n", + "\n", + " rev_barrier_dlpno_sp_dft_zpe_scaled_hartree \\\n", + "0 0.01308 \n", + "1 0.014799 \n", + "\n", + " fwd_Hrxn_dlpno_sp_dft_zpe_scaled_hartree \\\n", + "0 0.012275 \n", + "1 0.012333 \n", + "\n", + " rev_Hrxn_dlpno_sp_dft_zpe_scaled_hartree \\\n", + "0 -0.012275 \n", + "1 -0.012333 \n", + "\n", + " fwd_barrier_dlpno_sp_dft_zpe_scaled_kcal \\\n", + "0 15.910219 \n", + "1 17.0254 \n", + "\n", + " rev_barrier_dlpno_sp_dft_zpe_scaled_kcal \\\n", + "0 8.207526 \n", + "1 9.286544 \n", + "\n", + " fwd_Hrxn_dlpno_sp_dft_zpe_scaled_kcal rev_Hrxn_dlpno_sp_dft_zpe_scaled_kcal \\\n", + "0 7.702692 -7.702692 \n", + "1 7.738855 -7.738855 \n", + "\n", + " ts_dft_frequencies \\\n", + "0 [-1819.2074, 54.014, 69.9409, 78.7383, 95.0168... \n", + "1 [-1780.9655, 22.7631, 39.1821, 48.2943, 53.310... \n", + "\n", + " r1_dft_frequencies \\\n", + "0 [1268.6637, 1466.9774, 3673.0462] \n", + "1 [1268.6637, 1466.9774, 3673.0462] \n", + "\n", + " r2_dft_frequencies \\\n", + "0 [54.4468, 75.2434, 102.0769, 166.2486, 229.237... \n", + "1 [41.7173, 46.7835, 79.0284, 116.919, 165.6573,... \n", + "\n", + " p1_dft_frequencies \\\n", + "0 [38.6623, 46.6427, 70.6254, 124.3627, 195.2907... \n", + "1 [41.6898, 69.9592, 110.6483, 138.1279, 181.957... \n", + "\n", + " p2_dft_frequencies \\\n", + "0 [355.51, 1029.1913, 1349.894, 1491.2134, 3851.... \n", + "1 [355.51, 1029.1913, 1349.894, 1491.2134, 3851.... \n", + "\n", + " smiles \n", + "0 [O:1]([O:2])[H:3].[C:4]1([C:5]([C:8]([C:10](=[... \n", + "1 [O:1]([O:2])[H:3].[C:4]1([O:11][C:5]([C:8]([O:... " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "167237 rows × 162 columns\n" + ] + } + ], + "source": [ + "reaction_data = pd.read_pickle(\n", + " paper_dir / \"section_3_1_2_ts_char\" / \"quantum_green_ts_data_24july2c.pkl\"\n", + ")\n", + "head(reaction_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "a54a04c8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smilesdlpno_sp_hartreedft_zpe_scaled_hartree
0[O]O-150.7735310.014197
143328[O]OCO-265.1832270.048332
\n", + "
" + ], + "text/plain": [ + " smiles dlpno_sp_hartree dft_zpe_scaled_hartree\n", + "0 [O]O -150.773531 0.014197\n", + "143328 [O]OCO -265.183227 0.048332" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "276170 rows × 3 columns\n" + ] + } + ], + "source": [ + "species_data_from_reactions = pd.concat(\n", + " [\n", + " pd.DataFrame(\n", + " {\n", + " \"smiles\": reaction_data[f\"{species}smi\"].apply(canonical_smiles),\n", + " \"dlpno_sp_hartree\": reaction_data[f\"{species}_dlpno_sp_hartree\"],\n", + " \"dft_zpe_scaled_hartree\": reaction_data[\n", + " f\"{species}_dft_zpe_scaled_hartree\"\n", + " ],\n", + " }\n", + " ).drop_duplicates(subset=[\"smiles\"], keep=\"first\")\n", + " for species in [\"r1\", \"r2\", \"p1\", \"p2\"]\n", + " ]\n", + ").drop_duplicates(subset=[\"smiles\"], keep=\"first\")\n", + "head(species_data_from_reactions)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "9d315b2c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dlpno_sp_from_reactions = species_data_from_reactions[[\"smiles\", \"dlpno_sp_hartree\"]]\n", + "dlpno_sp_from_reactions[\"species_dlpno_sp_hartree\"] = dlpno_sp_from_reactions[\n", + " \"smiles\"\n", + "].map(thermo_df.set_index(\"smiles\")[\"dlpno_sp_hartree\"])\n", + "(\n", + " dlpno_sp_from_reactions[\"species_dlpno_sp_hartree\"]\n", + " - dlpno_sp_from_reactions[\"dlpno_sp_hartree\"]\n", + ").abs().max()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "8b2d4aff", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.972386587771203, 0.9723865877712032)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zpe_from_reactions = species_data_from_reactions[[\"smiles\", \"dft_zpe_scaled_hartree\"]]\n", + "zpe_from_reactions[\"species_dft_zpe_hartree\"] = zpe_from_reactions[\"smiles\"].map(\n", + " zpe_data.set_index(\"rdkit_canonical_nasmi\")[\"species_dft_zpe_hartree\"]\n", + ")\n", + "zpe_from_reactions[\"ratio\"] = (\n", + " zpe_from_reactions[\"dft_zpe_scaled_hartree\"]\n", + " / zpe_from_reactions[\"species_dft_zpe_hartree\"]\n", + ")\n", + "zpe_from_reactions[\"ratio\"].min(), zpe_from_reactions[\"ratio\"].max()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}