{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "2UZUSEe9RzKv" }, "source": [ "Welcome to the EPISOL Colab Playground!\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **Solvation Free Energy: From SMILES strings to FEP-levels of Accuracy in Minutes**" ] }, { "cell_type": "markdown", "metadata": { "id": "JV402f06Qs2I" }, "source": [ "![colab_logo.png](data:image/png;base64,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)" ] }, { "cell_type": "markdown", "metadata": { "id": "2JyzyqCTrO2i" }, "source": [ "The 3D reference interaction site model (3DRISM) provides an efficient grid-based solvation model to compute the structural and thermodynamic properties of biomolecules in aqueous solutions, in this notebook we will walk through a high-throughput calculation on the solvation free energy of a test set of small molecules. We will compare our 3DRISM results to those of experimentally and computationally (FEP) determined free energies. \n", "\n", "* **goals**:\n", " * Generate the coordinate and topology files for our test set using RDKit and openFF\n", " * Perform high-throughput 3DRISM calculations to determine solvation free energy of 100 molecules in the test set\n", " * Be able to perform similar calculations on your own molecules\n", " * use the colab-notebook to download and run calculations on your own molecules" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "e9Zwmfx1MLyE" }, "outputs": [], "source": [ "#@title ##Download and Install Episol\n", "#@markdown ($\\approx 2$min) Stable as of 07/01/25 eprism v1.2.6\n", "%%capture\n", "import subprocess\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "#%cd ../home/\n", "%cd $HOME/\n", "%mkdir episol\n", "%cd episol\n", "!wget https://github.com/EPISOLrelease/EPISOL/raw/refs/heads/main/src/fftw/fftw-3.3.8.tar.gz\n", "!echo \"+++++++++++++++++++\"\n", "!echo \"downloaded fftw files\"\n", "!echo \"+++++++++++++++++++\"\n", "!tar -xzf fftw-3.3.8.tar.gz\n", "%cd fftw-3.3.8/\n", "#!./configure --prefix=/home/fftw-3.3.8\n", "!./configure --prefix=$HOME/episol/fftw-3.3.8\n", "!make\n", "!make install\n", "%cd ../\n", "!wget https://github.com/EPISOLrelease/EPISOL/raw/refs/heads/main/src/kernel/release.tar.gz\n", "!echo \"+++++++++++++++++++\"\n", "!echo \"downloaded Episol files\"\n", "!echo \"+++++++++++++++++++\"\n", "!tar -xzf release.tar.gz\n", "%cd release/\n", "#!./configure --with-fftw=/home/fftw-3.3.8\n", "!./configure --with-fftw=$HOME/episol/fftw-3.3.8\n", "!make\n", "!make install\n", "#%cd /content\n", "########################### WRAPEPR\n", "import subprocess\n", "import os\n", "import threading\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "!pip install episol\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Pz6E85eEOsUO" }, "outputs": [], "source": [ "%%capture\n", "\n", "#@title Install some python packages for topology generation\n", "#@markdown ($\\approx$4min)\n", "\n", "#@markdown This will prompt a restart in our colab session, this is necessary, just keep moving\n", "\n", "#@markdown (if you are using the notebook offline this wont be necessary, as presumably you'll have your own forcefield to generate topologies)\n", "########################################\n", "# FOR COLAB USERS ONLY #\n", "#---------------------------------------#\n", "# if you are running locally you dont need\n", "# condacolab. Just use your local conda dist\n", "########################################\n", "!pip install -q condacolab\n", "import condacolab\n", "condacolab.install()\n", "########################################\n", "#!conda update conda\n", "#!conda install --yes -c conda-forge python=3.11 numpy=1.26.4 openmm pdbfixer parmed mdanalysis py3dmol rdkit openff-toolkit\n", "#!conda install -y -c conda-forge numpy=1.26.4 openmm=8.3.1 python={PYTHON_VERSION} pdbfixer=1.11 parmed=4.3.0 mdanalysis=2.9.0 py3dmol=2.5.2 rdkit=2025.03.5 openff-toolkit=0.17.0 libgcc\n", "!conda install -y -c conda-forge python=3.12 numpy=1.26.4 openmm=8.3.1 pdbfixer=1.11 parmed=4.3.0 mdanalysis=2.9.0 py3dmol=2.5.2 rdkit=2025.03.5 openff-toolkit=0.17.0 torchvision\n", "#openmm pdbfixer parmed mdanalysis py3dmol rdkitconda install libgcc" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 9520, "status": "ok", "timestamp": 1757282377737, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "rNfN2S-gE9Y_", "outputId": "3e1d1c41-b828-4333-ae6d-d939c47a393a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Looking in links: /tmp/tmp14g4fd4o\n", "Requirement already satisfied: pip in /usr/local/lib/python3.12/site-packages (25.0.1)\n", "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.\u001b[0m\u001b[33m\n", "\u001b[0mRequirement already satisfied: episol in /usr/local/lib/python3.12/site-packages (0.0.9)\n", "Requirement already satisfied: setuptools in /usr/local/lib/python3.12/site-packages (80.9.0)\n" ] } ], "source": [ "# FIX IMPORTER ERROR\n", "!python -m ensurepip --upgrade\n", "!pip3 install episol\n", "!python3.12 -m pip install --upgrade setuptools" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "rjpO1aNMD_89" }, "outputs": [], "source": [ "#@title import our download packages\n", "%%capture\n", "import py3Dmol\n", "\n", "def MolTo3DView(mol, size=(300, 300), style=\"stick\", surface=False, opacity=0.5):\n", " \"\"\"\n", " https://birdlet.github.io/2019/10/02/py3dmol_example/\n", " Draw molecule in 3D\n", "\n", " Args:\n", " ----\n", " mol: rdMol, molecule to show\n", " size: tuple(int, int), canvas size\n", " style: str, type of drawing molecule\n", " style can be 'line', 'stick', 'sphere', 'carton'\n", " surface, bool, display SAS\n", " opacity, float, opacity of surface, range 0.0-1.0\n", " Return:\n", " ----\n", " viewer: py3Dmol.view, a class for constructing embedded 3Dmol.js views in ipython notebooks.\n", " \"\"\"\n", " assert style in ('line', 'stick', 'sphere', 'carton')\n", " mblock = Chem.MolToMolBlock(mol)\n", " viewer = py3Dmol.view(width=size[0], height=size[1])\n", " viewer.addModel(mblock, 'mol')\n", " viewer.setStyle({style:{}})\n", " if surface:\n", " viewer.addSurface(py3Dmol.SAS, {'opacity': opacity})\n", " viewer.zoomTo()\n", " return viewer\n", "def smi2conf(smiles):\n", " '''Convert SMILES to rdkit.Mol with 3D coordinates'''\n", " mol = Chem.MolFromSmiles(smiles)\n", " if mol is not None:\n", " mol = Chem.AddHs(mol)\n", " AllChem.EmbedMolecule(mol)\n", " AllChem.MMFFOptimizeMolecule(mol, maxIters=200)\n", " return mol\n", " else:\n", " return None\n", "#free_energy(\"EXP\")\n", "!python -m ensurepip --upgrade # since we are using python 3.12 some pkg utils are now obsolete\n", "# after conda-initiate restart colab resets pip\n", "import matplotlib.pyplot as plt\n", "import openmm as mm\n", "from openmm import app\n", "from openmm.unit import *\n", "import py3Dmol as pymol\n", "import MDAnalysis as md\n", "import parmed as chem\n", "from openff.toolkit.topology import Molecule, Topology\n", "import numpy as np\n", "from MDAnalysis.transformations import center_in_box\n", "from episol import epipy\n", "from rdkit import Chem\n", "from rdkit.Chem import AllChem\n", "from openff.toolkit.topology import Molecule\n", "from openff.toolkit.utils import get_data_file_path\n", "from openff.toolkit.typing.engines.smirnoff import ForceField\n", "from openff.interchange import Interchange\n", "# FIX IMPORTER ERROR\n", "!python -m ensurepip --upgrade\n", "!pip3 install episol\n", "!python3.12 -m pip install --upgrade setuptools\n", "%cd /content/" ] }, { "cell_type": "markdown", "metadata": { "id": "MgcR5034eDJ8" }, "source": [ "#**Walk Through Calculation:**" ] }, { "cell_type": "markdown", "metadata": { "id": "M9LpAwuO4fNG" }, "source": [ "* for this tutorial we will look at the solvation free energy of small molecules using FreeSolv Database\n", "* lets download our files" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 626, "status": "ok", "timestamp": 1757289745874, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "Uf5l6A2h4shQ", "outputId": "189cb700-030b-4fe8-a6dc-c621aad284bc" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2025-09-08 00:02:23-- https://github.com/MobleyLab/FreeSolv/raw/refs/heads/master/database.txt\n", "Resolving github.com (github.com)... 140.82.113.4\n", "Connecting to github.com (github.com)|140.82.113.4|:443... connected.\n", "HTTP request sent, awaiting response... 302 Found\n", "Location: https://raw.githubusercontent.com/MobleyLab/FreeSolv/refs/heads/master/database.txt [following]\n", "--2025-09-08 00:02:23-- https://raw.githubusercontent.com/MobleyLab/FreeSolv/refs/heads/master/database.txt\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 144897 (142K) [text/plain]\n", "Saving to: ‘database.txt’\n", "\n", "database.txt 100%[===================>] 141.50K --.-KB/s in 0.03s \n", "\n", "2025-09-08 00:02:23 (4.45 MB/s) - ‘database.txt’ saved [144897/144897]\n", "\n" ] } ], "source": [ "!wget https://github.com/MobleyLab/FreeSolv/raw/refs/heads/master/database.txt" ] }, { "cell_type": "markdown", "metadata": { "id": "zHzfYZ4dbftJ" }, "source": [ "* now we will make a list containing allof the SMILES strings and their corresponding energies" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ybOw1N1X5_xw" }, "outputs": [], "source": [ "line_count = int()\n", "experimental_values = []\n", "calculated_values = []\n", "smiles_list = []\n", "names_list = []\n", "\n", "with open('database.txt','r') as r:\n", " for line in r:\n", " line_count +=1\n", " if line_count > 3:\n", " tmp = line.split(';')\n", " try:\n", " names_list.append('_'.join(tmp[2].split()))\n", " smiles_list.append(tmp[1].strip())\n", " experimental_values.append(float(tmp[3].strip()))\n", " calculated_values.append(float(tmp[5].strip()))\n", " except Exception as exc:\n", " RuntimeWarning(exc)\n", "smiles_list = np.array(smiles_list)\n", "names_list = np.array(names_list)\n", "experimental_values = np.array(experimental_values)\n", "calculated_values = np.array(calculated_values)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "l6QiAYriXkZd" }, "source": [ "* lets look at one of our (randomly picked) molecules" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 167 }, "executionInfo": { "elapsed": 34, "status": "ok", "timestamp": 1757289745988, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "FEwrT9HnXnvR", "outputId": "5d6ac639-1a1d-4b3b-fd17-d8858d170c55" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAIPklEQVR4nO3dT0yUdx7H8d8zMw/oDPJnmFn+LP+ajRVRWsFYLhTUGFu02SYNTWN2SuSy2aaJhz2YTbCJUQ8bGk8lsVlb9bBxu5ceVlrLNj2UA4kNROeyuJJu0U1LEAYYwEGYZ+bZQxObBcYOfJ+dH8/6fp3M84z0k0be8zjzOBi2bSsAwGZ5dA8AAHcjowAgQkYBQISMAoAIGQUAETIKACI+3QPw/+DatWvj4+NtbW2HDx9e9wG9vb2JRKKzs3Pv3r053pbJim1fm5jIdNbv9UbKynK5B+5FRuGAq1evDg4O9vT0PCWjsVhs165dWyejyXT6T5kzWmqaZBRZIqN41p0sLy/Ly1t1cLuH17uQLTKKZ92RkpJ6v1/3CrgYT7kAIEJGAUCEjAKACK+NwjHRaPTKlSvrnlpeXs7xmOx9OjUVMs1VB7srKkzD0LIHrkNG4Zj+/v7+/n7dKzbs0+nptQcjZWWm15v7MXAjMgrHtLa2Hjx4cN1TFy9eXFpayu2cbEXKyn6x5mo0jxuekDUyCse0t7efP39+3VOXLl3ashl9NRjkhidI8JQLACJkFABEyCgAiJBRABAhowAgQkYBQMTg59RDLhqNzs3N1dbW1tXVrfuAoaGhZDLZ0NAQDodzOy2jtG3fWVxUStUHAn7uEoUAGQUAEZ6E4bzR0dHm5uZIJKJ7SLYWU6nfjI7+7t493UPgSvwrJjjv0aNHt2/f9rjnb8op2/5nIlHo49sBm+GaP+gAsDWRUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABF+oiyg7GRy99TUNvf8RGhsKWQUUKlE4s8dHcFg8HIspnsL3IenXwAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAifFCeC3w4/eGpf596ueDlr3Z+pXsLdPr77OxKOp3p7LHSUi6LtCCj+sVT8Y+mPxpYGLj3+N58ar7IW7Rn+543i9+MBCNew6uUStmppJ1M2kndS6HZHx88mLesTGePlpTk8cnTOpBRzW7Eb5y8f3LGmnlyZDY1O74y/ln8s76pvhu/ulFulmuchy2ovbi4Jj9/7XGvYeR+DBQZ1WtgfuCNf71h2VZdXt3ZirNHC49WmBXT1vQX81+c+eHMcGL4vYn3Ltdc1j0TW8vx0tLDxcW6V+AnZFSbpfRS9/1uy7b2bNvz9fNfl/pKfzwe8oUiwcgrha98MPXBmfIzekcC+FlkVJtPZj+ZSE4opT6u/fhJQ58I+8LnKs7p2AVgY3hBWpv+eL9Sqtnf3BJo0b0FwOZxNarNSGJEKdVa0Kp7CFxmZGEhkUqtOthWXFzo9WrZAzKqzaQ1qZR6Lu+5Df2uz+OfH//2uLNLXky9GH0p6uzXVEqNjIwYrnrveGZmxsHBLSMjlm079dX+1thYmZf346//+vDh2gf8paGhcPt2p/5z2BAyqodlW4/Tj5VSAU9A9xa4TGtRUdWaG56KfXwva8P/ej18hi/fyF+2l5fSSxv6jceKjtnNjl3j/MTRLzk8PHzgwIH9+/cPDw87+XX/Z2KxWCgUCgaDsVhM95af9+tQiBuethTeYtIm6Asqpb5Pfq97CAARMqpNk79JKfVN4hvdQwCIkFFtjuw4opQaXBj8buU73VsAbB4Z1aYr2BXwBNIq/e6Ddy074+dNANjiyKg2pb7S93/5vlLq5vzN17597e7ju09OpVV6YH7g7fG3l+1lfQMBZIV36nV6J/zOpDV5buLcwPzA7n/s3pm/szqvOp6Kjy2PzafmlVKvF7/eWdypeyaApyGjmp2tONtR2NE72fvlwpdjy2Njy2NKKdMwWwItb5W81VHYoZTyGl7TME3D1D0Wmv2hpmYlnW7w+3UPwX8xbOf+oQUkLNt6aD2csWYC3kCVWeXqaHLfKJ4pXI1uFT7DV2lWVpqVuocA2BjeYgIAETIKACJkFABEyCgAiJBRABAhowAgQkYBQISMAoAIGQUAETIKACJkFABEyCgAiJBRABDhE54A5fX7IzdvbvNwVYHNIKOAMkxzNBwu9PHtgM3g6RcARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACBkFABEyCgAiZBQARMgoAIiQUQAQIaMAIEJGAUCEjAKACD9RFs4LBAJNTU319fW6h2TLaxi7/P4dXq/uIXAlw7Zt3RsAwMW4GoUDotHo3NxcbW1tXV3dug8YGhpKJpMNDQ3hcDi30zJK2/adxcVMZ02PpzEQyOUeuBdXo3BAe3v74OBgT0/PhQsX1n1AKBSKxWLXr18/ceJEjrdl8iiVar9zJ9PZUtMceOGFXO6Be3E1imfdSzt2FPhWfyMU8jopskZG8aw7VVVV7/frXgEX44YnABAhowAgQkYBQITXRuGYeDw+Pj6+7ql0Op3bLRtwN5FIpFKrDu4rKPAYhpY9cB0yCsf09fX19fXpXrFhF+7fX3twcN8+P2/WIztkFI6prq6uqalZ99StW7csy8rxniw1FxQUrCmml0tRZI2MwjFdXV1Pv/0+x3uy9Pvqam54ggRvMQGACBkFABEyCgAiZBQARMgoAIiQUQAQ4YYnOKC7u/vQoUNtbW2ZHnD69OlEItHY2JjLVU9nejy/rahQSoVMU/cWuBsf2wwAIvylHgBEyCgAiJBRABAhowAgQkYBQISMAoDIfwAy7O7DlEvagQAAAI16VFh0cmRraXRQS0wgcmRraXQgMjAyNS4wMy41AAB4nHu/b+09BiAQAGImBgjgAGJ2IG5gZGNQANIsUIoTTDGiUoIQipFBgwGZ5mZgZGBkYmBkZmBkYWBgZWBgA5npBJITzwIpYEBY5rAfSC+BcB3sEWwBB1TxA/uR2PZQNQdOnTRWhYrvR4iD2WD1YgAjuhSs+lFv6wAAANp6VFh0TU9MIHJka2l0IDIwMjUuMDMuNQAAeJyNkk0OgyAQhfec4l1AgyiiSwX7k0ZMWts7NOmy90+ZNji6KO3AYh75mGFeEKA4u9P9iSWUEwKQid22LW6llFKMoAT9sD962Lnr44mdrn6+oIEJN8Lakt08jfGkgEUmc6NDPUmZfAc4iaQK5F9giR1Urn6DVQC5YpHrb6Begwmuhn0gW3onWhscVmMnSjYbMPXIwbuNsx+v+8k79pqWYkODQMm2kazYHJKaLaC7NU9K0vA4JJv1U9aNScfvEXLxAiFldhzu2/VUAAAAc3pUWHRTTUlMRVMgcmRraXQgMjAyNS4wMy41AAB4nIv2iHXWiPaI1dRwztF01nDTBCI3hRoNXQM9c1MdQz1THWsI0wDG0IUIGukZgQVhkih8iBq4EZo6iSX5uQFF+QVWBnqZxZ65BTmZyZkleoZWRijcGgDhGyMWZlf0GgAAAABJRU5ErkJggg==", "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rng = np.random.default_rng()\n", "ind_to_extract = rng.integers(len(smiles_list),size=1)[0]\n", "test = smiles_list[ind_to_extract]\n", "\n", "mol = Chem.MolFromSmiles(test)\n", "mol = Chem.rdmolops.AddHs(mol,addCoords=True)\n", "mol" ] }, { "cell_type": "markdown", "metadata": { "id": "XyrBYVWJYxCi" }, "source": [ "* we can see our molecule has totally non-physical geometry\n", "* lets preform a simple geometry optimizationn step and view the output" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 167 }, "executionInfo": { "elapsed": 135, "status": "ok", "timestamp": 1757289746124, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "C_L6NXvXYmTp", "outputId": "cbc2c277-425f-42fb-a569-a813aec6c013" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "AllChem.EmbedMolecule(mol)\n", "AllChem.UFFOptimizeMolecule(mol)\n", "mol" ] }, { "cell_type": "markdown", "metadata": { "id": "Dgn-b_jCZCit" }, "source": [ "* much better\n", "* now lets investigate solvation free energy of our molecule\n", "* First we need to make our topology file\n", "* thankfully using [openFF](https://openforcefield.org/force-fields/force-fields/) and [SMIRNOFF](https://docs.openforcefield.org/projects/toolkit/en/0.5.0/smirnoff.html) we can do this no problem!\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 5839, "status": "ok", "timestamp": 1757289751962, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "vMfwLiXsQZON", "outputId": "533fe3fe-6394-492c-e9f4-ae9eb4a6aa05" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.12/site-packages/openff/amber_ff_ports/amber_ff_ports.py:8: 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", "/usr/local/lib/python3.12/site-packages/MDAnalysis/coordinates/GRO.py:444: UserWarning: Supplied AtomGroup was missing the following attributes: resnames. These will be written with default values. Alternatively these can be supplied as keyword arguments.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "converted example.top to example.solute\n", "generated idc-enabled solute file to: idc_example.solute\n", "Calculation finished in 233 steps \n", "err_tol: 1e-12 actual: 9.38025e-13 \n" ] }, { "data": { "text/plain": [ "0.8673300582465404" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#!python -m ensurepip --upgrade\n", "# use openFF..toolkit to accept rdkit object\n", "from_rdmol = Molecule.from_rdkit(mol,allow_undefined_stereo=True)\n", "topology = from_rdmol.to_topology()\n", "# we will use openFF to assign SMIRNOFF parameters\n", "sage = ForceField(\"openff-2.0.0.offxml\")\n", "interchange = Interchange.from_smirnoff(force_field=sage, topology=topology)\n", "# just pick the first conformer\n", "interchange.positions = from_rdmol.conformers[0]\n", "#openmm_system = interchange.to_gromacs('out')\n", "openmm_system = interchange.to_openmm()\n", "#os.remove(\"out.top\")\n", "interchange.to_top(\"example.top\")\n", "tmp_u = md.Universe(mol)\n", "coords = tmp_u.atoms.positions\n", "# Buffer will be greater than 1nm (our default cutoff)\n", "# here we set to 7A on each side, so at least 1.4 nm apart from the other side of\n", "# the molecule\n", "buffer = 5 # convert to A\n", "#\n", "\n", "box_x = np.ceil(np.abs(np.max((coords[:,0]))-np.min((coords[:,0])))+buffer)\n", "box_y = np.ceil(np.abs(np.max((coords[:,1]))-np.min((coords[:,1])))+buffer)\n", "box_z = np.ceil(np.abs(np.max((coords[:,2]))-np.min((coords[:,2])))+buffer)\n", "tmp_u.dimensions = [box_x,box_y,box_z,90,90,90]\n", "trans = center_in_box(tmp_u.atoms,center='geometry')\n", "\n", "tmp_u.trajectory.add_transformations(trans)\n", "tmp_u.atoms.write(f'fixed_example.gro') # have to write out structure file\n", "## run 3DRISM\n", "test = epipy(f'fixed_example.gro','example.top',gen_idc=True)\n", "test.ndiis = 15\n", "test.delvv = 0.5\n", "test.r_c = 0.9 # cutoff at 0.9 nm instead of 1 nm (default)\n", "test.err_tol = 1e-12\n", "test.rism(resolution=0.5)\n", "test.kernel(nt=2)\n", "# We will use epipy's automatic unit conversion\n", "# to specifiy our free energy units\n", "test.free_energy()" ] }, { "cell_type": "markdown", "metadata": { "id": "L4NprFSHgWaK" }, "source": [ "* our output energy is in units of kJ/mol\n", "* we can specify the units if need be by feeding our desired string to the function" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 10, "status": "ok", "timestamp": 1757289751975, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "r4lVM13rgXtj", "outputId": "e033d8f2-0883-4553-eb94-9220507182bf" }, "outputs": [ { "data": { "text/plain": [ "0.20729685904554024" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test.free_energy('kcal/mol')" ] }, { "cell_type": "markdown", "metadata": { "id": "WEVBC7myg--U" }, "source": [ "* lets see the energy _per_ molecuule" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 10, "status": "ok", "timestamp": 1757289751987, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "YlICzjTqhEAs", "outputId": "00dd7710-669d-43ab-dd28-46a82a76505d" }, "outputs": [ { "data": { "text/plain": [ "1.2483416851722435e+23" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test.free_energy('kcal')" ] }, { "cell_type": "markdown", "metadata": { "id": "rqJZiYughRX3" }, "source": [ "* now lets run the first N molecules in the test set" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "8JT1Hp1CVj3f" }, "outputs": [], "source": [ "number_of_molecules_to_use = 50\n", "\n", "rng = np.random.default_rng()\n", "ind_to_extract = rng.integers(len(smiles_list),size=number_of_molecules_to_use)\n", "\n", "#smiles_and_names = dict(zip(names_list[ind_to_extract],smiles_list[ind_to_extract]))\n", "smiles_and_names = dict(zip(names_list[:number_of_molecules_to_use],smiles_list[:number_of_molecules_to_use]))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 40, "status": "ok", "timestamp": 1757289752050, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "9EFUxqMAgPcS", "outputId": "19fe98d0-e7b4-4efd-8f70-7f62efc74873" }, "outputs": [ { "data": { "text/plain": [ "50" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(smiles_and_names)" ] }, { "cell_type": "markdown", "metadata": { "id": "WVxEh5z9u5fC" }, "source": [ "Run !\n", "$\\approx$ 5min for the first 50" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "F0hi1ewXLmMw" }, "outputs": [], "source": [ "%%capture\n", "#mols = [Chem.MolFromSmiles(x) for x in smiles_list[:5]]\n", "\n", "def generate_topology_and_get_energy(smiles_list:list,keep_files=False):\n", " \"\"\"\n", " This will automatically generate topology files for\n", " any small molecule SMILES-string.\n", " !!! Warning !!!\n", " We are using undefined stereochemistry\n", " -----------\n", " input: smiles_list -> list of SMILES strings\n", " output: energy_list -> list of solvation free energies whose\n", " index corresponds to the SMILES string input\n", " keep_files: boolean -> do you want to save ALL file generated\n", " or just keep the energy\n", " \"\"\"\n", " import os\n", " out_energies = []\n", " try:\n", " for name in smiles_list:\n", " stage = \"convert to rdkit mol\"\n", " mol = Chem.MolFromSmiles(name)\n", " mol = Chem.rdmolops.AddHs(mol,addCoords=True)\n", " stage = \"Add hydrogens and Geometry optimize \"\n", " # geometry optimization step\n", " AllChem.EmbedMolecule(mol)\n", " AllChem.UFFOptimizeMolecule(mol)\n", " ##\n", " stage = \"Pass to openFF \"\n", " # use openFF..toolkit to accept rdkit object\n", " from_rdmol = Molecule.from_rdkit(mol,allow_undefined_stereo=True)\n", " topology = from_rdmol.to_topology()\n", " # we will use openFF to assign SMIRNOFF parameters\n", " stage = \"Use smirnoff \"\n", " sage = ForceField(\"openff-2.0.0.offxml\")\n", " interchange = Interchange.from_smirnoff(force_field=sage, topology=topology)\n", " # just pick the first conformer\n", " interchange.positions = from_rdmol.conformers[0]\n", " #openmm_system = interchange.to_gromacs('out')\n", " openmm_system = interchange.to_openmm()\n", " #os.remove(\"out.top\")\n", " stage = \"Generate topology\"\n", " interchange.to_top(\"out.top\")\n", " tmp_u = md.Universe(mol)\n", " coords = tmp_u.atoms.positions\n", " # Buffer will be greater than 1nm (our default cutoff)\n", " # here we set to 7A on each side, so at least 1.4 nm apart from the other side of\n", " # the molecule\n", " buffer = 5 # convert to A\n", " #\n", " stage = \"Center our molecule in a PBC\"\n", " box_x = np.ceil(np.abs(np.max((coords[:,0]))-np.min((coords[:,0])))+buffer)\n", " box_y = np.ceil(np.abs(np.max((coords[:,1]))-np.min((coords[:,1])))+buffer)\n", " box_z = np.ceil(np.abs(np.max((coords[:,2]))-np.min((coords[:,2])))+buffer)\n", " tmp_u.dimensions = [box_x,box_y,box_z,90,90,90]\n", " trans = center_in_box(tmp_u.atoms,center='geometry')\n", "\n", " tmp_u.trajectory.add_transformations(trans)\n", " tmp_u.atoms.write(f'fixed_mol.gro') # have to write out structure file\n", " stage = \"Start 3DRISM Calculation\"\n", " ## run 3DRISM\n", " test = epipy(f'fixed_mol.gro','out.top',gen_idc=True)\n", " test.ndiis = 15\n", " test.delvv = 0.5\n", " test.r_c = 0.9 # cutoff at 0.9 nm instead of 1 nm (default)\n", " test.err_tol = 1e-12\n", " test.rism(resolution=0.5)\n", " test.kernel(nt=2)\n", " # We will use epipy's automatic unit conversion\n", " # to specifiy our free energy units\n", " out_energies.append(test.free_energy('kcal/mol'))\n", " # get rid of our calculation files\n", " # we dont really care about saving them\n", " # this way we dont have files piling up\n", " if not keep_files:\n", " os.remove(\"out.top\")\n", " os.remove('fixed_mol_out.ts4s')\n", " os.remove('fixed_mol_out.log')\n", " except Exception as exc:\n", " print(f\"molecule: {name} failed at stage {stage}\")\n", " print(RuntimeError(exc))\n", " return out_energies\n", "# Now we run\n", "out_energies = generate_topology_and_get_energy(smiles_list=[smiles for smiles in smiles_and_names.values()])" ] }, { "cell_type": "markdown", "metadata": { "id": "VCwEDJIDKDzz" }, "source": [ "* now, lets see our results" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 54 }, "executionInfo": { "elapsed": 557, "status": "ok", "timestamp": 1757290222375, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "YGh9CUYpbljn", "outputId": "bece203b-2152-46bd-b22d-d2bd0ee37f95" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", "\n", "#out_energies = np.copy(np.array(out_en))\n", "dslice = len(out_energies)\n", "ax.scatter(experimental_values[:dslice],out_energies,label='3DRISM')\n", "ax.scatter(experimental_values[:dslice],calculated_values[:dslice],label='FEP')\n", "#ax1.scatter(calculated_values[:dslice],out_energies)\n", "#ax1.set_xlabel(\"experimental values\")\n", "ax.set_ylabel(\"$\\\\Delta G_{solv}$ / kcal/mol\")\n", "ax.set_xlabel(\"experiment / kcal/mol\")\n", "vv = np.arange(min(experimental_values[:dslice]),max(experimental_values[:dslice]))\n", "ax.plot(vv,vv,'k--')\n", "ax.set_ylim(-15,None)\n", "ax.set_xlim(-15,None)\n", "ax.legend(loc=\"lower right\")\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "id": "TwszZ0MfhZ6w" }, "source": [ "* feel free to use this notebook how you desire\n", "* run the whole dataset or upload your own!\n", "* we've included a section below where you can make your own molecule and run calculations\n", "* get creative!" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "colab": { "base_uri": "https://localhost:8080/", "height": 337 }, "executionInfo": { "elapsed": 9, "status": "ok", "timestamp": 1757290222376, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "NfMNBJ24rJAW", "outputId": "d382285c-0604-475b-bb40-e778f5990076" }, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n
\n", "text/html": [ "
\n", "

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "smiles_string = \"ClC=C=CCO\" #@param {type: 'string'}\n", "def smi2viewer(smi='CC=O'):\n", " try:\n", " conf = smi2conf(smi)\n", " return MolTo3DView(conf).show()\n", " except:\n", " return None\n", "smi2viewer(smi=smiles_string)" ] }, { "cell_type": "markdown", "metadata": { "id": "l3KKjL8Bun7b" }, "source": [ "Run 3DRISM" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 3959, "status": "ok", "timestamp": 1757290226332, "user": { "displayName": "Peter Swanson", "userId": "14843714615970646097" }, "user_tz": 300 }, "id": "cxCSsPWlunsb", "outputId": "fc5c0e68-3093-4a4a-f3a1-f9c3bdb95007" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.12/site-packages/MDAnalysis/coordinates/GRO.py:444: UserWarning: Supplied AtomGroup was missing the following attributes: resnames. These will be written with default values. Alternatively these can be supplied as keyword arguments.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "converted out.top to out.solute\n", "generated idc-enabled solute file to: idc_out.solute\n", "Calculation finished in 267 steps \n", "err_tol: 1e-12 actual: 9.92814e-13 \n", "your free energy of solvation is [-5.00284805149884] kcal/mol\n" ] } ], "source": [ "print(\"your free energy of solvation is \",generate_topology_and_get_energy([smiles_string]),'kcal/mol')" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }