diff --git a/rbfe_tutorial/python_tutorial.ipynb b/rbfe_tutorial/python_tutorial.ipynb new file mode 100644 index 0000000..d0abb6a --- /dev/null +++ b/rbfe_tutorial/python_tutorial.ipynb @@ -0,0 +1,581 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "35354229", + "metadata": {}, + "source": [ + "# Setting up a relative binding free energy network\n", + "\n", + "This tutorial gives a step-by-step process to set up a relative binding free energy (RBFE) simulation campaign using OpenFE. This tutorial is designed as an accompaniment to the CLI tutorial found in the same directory as this notebook.\n", + "\n", + "With the CLI, all the steps here were performed by the `openfe plan-rbfe-network` command. However, that command offers little room for customization. Using the Python interface gives us the ability to customize all aspects of how our simulation runs. This tutorial provides a step-by-step Python guide to reproducing the setup done in the CLI tutorial, highlighting areas where the Python interface enables customization." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "fc97de03", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import openfe" + ] + }, + { + "cell_type": "markdown", + "id": "2fea29c3", + "metadata": {}, + "source": [ + "## Loading the ligands\n", + "\n", + "First we must load the chemical models between which we wish to calculate free energies.\n", + "In this example these are initially stored in a molfile (`.sdf`) containing multiple molecules.\n", + "This can be loaded using the `SDMolSupplier` class from rdkit and passed to openfe." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "41cf8be7", + "metadata": {}, + "outputs": [], + "source": [ + "from rdkit import Chem\n", + "supp = Chem.SDMolSupplier(\"tyk2_ligands.sdf\", removeHs=False)\n", + "ligands = [openfe.SmallMoleculeComponent.from_rdkit(mol) for mol in supp]" + ] + }, + { + "cell_type": "markdown", + "id": "8e5de19a", + "metadata": {}, + "source": [ + "## Charging the ligands\n", + "\n", + "It is recommended to use a single set of charges for each ligand to ensure reproducibility between repeats or consistent charges between different legs of a calculation involving the same ligand, like a relative binding affinity calculation for example. \n", + "\n", + "Here we will use some utility functions from OpenFE which can assign partial charges to a series of molecules with a variety of methods which can be configured via the `OpenFFPartialChargeSettings` class. In this example \n", + "we will charge the ligands using the `am1bcc` method from `ambertools` which is the default charge scheme used by OpenFE." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5219106c", + "metadata": {}, + "outputs": [], + "source": [ + "from openfe.protocols.openmm_utils.omm_settings import OpenFFPartialChargeSettings\n", + "from openfe.protocols.openmm_utils.charge_generation import bulk_assign_partial_charges\n", + "\n", + "charge_settings = OpenFFPartialChargeSettings(partial_charge_method=\"am1bcc\", off_toolkit_backend=\"ambertools\")\n", + "\n", + "charged_ligands = bulk_assign_partial_charges(\n", + " molecules=ligands,\n", + " overwrite=False, \n", + " method=charge_settings.partial_charge_method,\n", + " toolkit_backend=charge_settings.off_toolkit_backend,\n", + " generate_n_conformers=charge_settings.number_of_conformers,\n", + " nagl_model=charge_settings.nagl_model,\n", + " processors=1\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "6963be83", + "metadata": {}, + "source": [ + "## Creating the `LigandNetwork`\n", + "\n", + "The first step is to create a `LigandNetwork`, which is a network with small molecules as nodes, and atom mappings, the description of how to alchemically mutate between the molecules, as its edges.\n", + "\n", + "The pipeline for creating a `LigandNetwork` can involve three components:\n", + "\n", + "* **Atom Mapper**: Proposes potential atom mappings (descriptions of the alchemical change) for pairs of ligands. We will use the `LomapAtomMapper`.\n", + "* **Scorer**: Given an atom mapping, provides an estimate of the quality of that mapping (higher scores are better). We will use `default_lomap_scorer`.\n", + "* **Network Planner**: Creates the actual `LigandNetwork`; different network planners provide different strategies. We will create a minimal spanning network with the `generate_minimal_spanning_network` method.\n", + "\n", + "Each of these components could be replaced by other options." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5a3cf244", + "metadata": {}, + "outputs": [], + "source": [ + "mapper = openfe.LomapAtomMapper(max3d=1.0, element_change=False)\n", + "scorer = openfe.lomap_scorers.default_lomap_score\n", + "network_planner = openfe.ligand_network_planning.generate_minimal_spanning_network" + ] + }, + { + "cell_type": "markdown", + "id": "acc13581", + "metadata": {}, + "source": [ + "The exact call signature depends on the network planner: a minimal spanning network requires a score, whereas that is optional for a radial network (but a radial network needs the central ligand to be provided)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f6e7bce5", + "metadata": {}, + "outputs": [], + "source": [ + "ligand_network = network_planner(\n", + " ligands=charged_ligands,\n", + " mappers=[mapper],\n", + " scorer=scorer\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b7492637", + "metadata": {}, + "source": [ + "Now we can look at the overall structure of the `LigandNetwork`:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e6ca6131", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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e/YkMDCQjRs3Mn78eOrWrUuLFi149tln2X6pfxGkyCQlJdG5c2d27NhBzZo1SUhIoGLFinaXJV5AAVC8gmWZ8X5XyuGAli3NjNvcx9atcOedF78uKCjv735+F37P4bh8DcuWwU8/QbFiEBgItWub91u1gkGD8n7299+hUyfTXTx+/OXv7Wu8cfmXolS6dGkGDRrEokWLSEpKYubMmXTr1o2AgADWrVvH2LFjqV27Nq1ateL5559n586ddpfsE44cOUJ0dDRbtmyhevXqJCQkULVqVbvLEi+hACheoX59012blJTz3urVzl/fogVs2wYVKpjglfsoVarw672QadPMMi9Z4fPvFUyYMydvd/amTWa84qBB+evm9iWetP2bu4mIiOCf//wnS5YsISkpienTpxMdHU1AQABr1qzh4YcfpmbNmrRp04YXX3yRP//80+6SvdJff/1F165d+fXXX6lcuTIJCQlERUXZXZZ4EQVA8QrR0VCrlglFGzeaMXdZk0CcaQAaOBDKlTNdqj/8ADt3wnffwciRsHdv0daeJTISGjfOOerWNe/XqmVmE0NO+IuOhv/+Fw4eNMehQ66p0RNs27aNxMREgoKC6Ny5s93leLSyZcsydOhQ4uLiOHDgAG+//TadO3fG39+f1atX8+CDDxIVFcW1117LlClT2OPsbCe5pNTUVHr27MnatWspV64c8fHx1KlTx+6yxMsoAIpXCAgwy72cOAGtW8PQoTldo86sjxoWZmbyRkbCLbeYSSBDhsCpU+BOK4jMnWvC3qxZULlyztG6td2VuY/cy79oiYzCU758eYYPH058fDwHDhzgzTffpGPHjvj5+bFq1SpGjx5NZGQk7dq145VXXmHfvn12l+yRsrZ1W7lyJWXKlCE+Pp6GDRvaXZZ4Ie0FLLZzOBxs3LiRuLg4du7cyZtvvlko912xwswGTkw0rWgFNXasaR388ceC30uKTo8ePViyZAkvvPACY8aMsbscr3fw4EE+//xzYmNj+eGHH/LsNNK+fXtiYmK49dZbqXKhlc0lj/T0dPr27UtcXBwlSpQgISGB1vrbneRDfvKaAqDYYt++fSxdujT7OPR3H2bz5s1Zu3btFd3ziy/M7N06dUzoGznSrMdX0MBmWbBjh9mCrXlzePvtgt1Pik5aWhoRERFkZGTw22+/0ahRI7tL8in79+/PDoM/5voXz8/Pj+uvvz47DFbKPV1fADhz5gy33npr9s4e33zzDe3bt7e7LPEw+cprlhOOHz9uAdbx48ed+bjIeU6cOGEtWrTIGjVqlNWwYUMLyHOEh4dbvXv3tj799NMrfsYHH1hW7dqWVayYZVWtalmDBlnW4cPm3KRJllW8+IWP7t0vfd9jxywrONiy2rWzrF27rri8AtUgzlm0aJEFWNWrV7ccDofd5fi0PXv2WFOnTrWuu+66PP+u+/v7Wx07drTefPNNKykpye4y3cKZM2esAQMGWIAVEhJiJSQk2F2SeKj85DW1AEqRcDgcrF27lqVLlxIXF8eKFSs4c+ZM9nl/f39atWpF165diY6O5tprryU4OLjI6jl61BwXEhoKrlhZwR1q8HYPPPAAr732Gv/6179466237C5H/rZnzx7mzp1LbGwsq1atyn7f39+fjh07EhMTw80330z58uVtrNIeDoeDCRMmsGjRIgIDA5k6dSrXXXed3WWJh1IXsNhi9+7d2YEvISGBI0eO5DkfFRWVHfg6depEhPYvk0JkWRa1a9dmx44dzJ8/n759+9pdklzArl27+Oyzz4iNjWV1rrWaAgIC6NSpU3YY1E4XIvmnACgukZqayvLly4mLi2Pp0qXn7SFasmRJOnXqRHR0NF27dqVWrVpalFeKzNatW6lXrx5BQUEcOXJEM4A9wM6dO7NbBtesWZP9fmBgIJ07d+a2226jX79+lClTxsYqRTyHAqAUibNnz/LLL79kB76VK1eSmZmZfT4gIIA2bdrQtWtXunbtSps2bQgMDLSxYvElU6dO5T//+Q+dO3cmPj7e7nIkn7Zv354dBtetW5f9flBQENHR0cTExNC3b19Kly5tX5Eibk4BUArNzp07swNfQkICf/31V57ztWrVyu7W7dixo/5wFtt069aNuLg4XnzxRUaPHm13OVIAW7duzQ6DGzduzH4/KCiIbt26ERMTw0033UQpV23TI+IhFADlih0/fpxly5Zlj+U7dwP40qVL07lzZ6Kjo4mOjqZmzZo2VSqS4+TJk5QtW5aMjAw2bdqkhXO9yObNm7PD4G+//Zb9fnBwMN27dycmJoY+ffrov00iKABKPmRmZrJq1arswPfzzz9z9uzZ7POBgYG0bds2exxfq1atCAgIsLFikfN99dVX9OnThxo1arBz506NNfVSv//+O3Pn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", + "text/plain": [ + "
" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from openfe.utils.atommapping_network_plotting import plot_atommapping_network\n", + "plot_atommapping_network(ligand_network)" + ] + }, + { + "cell_type": "markdown", + "id": "5f99678c", + "metadata": {}, + "source": [ + "We can also inspect the individual atom mappings:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c55cbcac", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# get the first edge; it automatically displays in a Jupyter notebook\n", + "mapping = next(iter(ligand_network.edges))\n", + "mapping" + ] + }, + { + "cell_type": "markdown", + "id": "dd0c96d7", + "metadata": {}, + "source": [ + "To get the score for this mapping, we inspect its `annotations` attribute. Arbitrary annotations can be added when a mapping is created, although our network generator only includes the score." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6b7492d7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'score': 0.33287108369807955}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# higher score is better\n", + "mapping.annotations" + ] + }, + { + "cell_type": "markdown", + "id": "30b276b6", + "metadata": {}, + "source": [ + "You can output the ligand network to the same `graphml` format as we saw in the CLI tutorial with the following:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "2263838f", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"ligand_network.graphml\", mode='w') as f:\n", + " f.write(ligand_network.to_graphml())" + ] + }, + { + "cell_type": "markdown", + "id": "056924a3", + "metadata": {}, + "source": [ + "## Creating a single `Transformation`\n", + "\n", + "The `LigandNetwork` only knows about the small molecules and the alchemical connections between them. It doesn't know anything about environment (e.g., solvent) or about the `Protocol` that will be used during the simulation.\n", + "\n", + "That information in included in a `Transformation`. Each of these transformations corresponds to a single leg of the simulation campaign, so for each edge in the `LigandNetwork`, we will create two `Transformation`s: one for the complex and one for solvent.\n", + "\n", + "In practice, this will be done for each edge of the `LigandNetwork` in a loop, but for illustrative purposes we'll dive into the details of creating a single transformation. In particular, we'll create the solvent leg for the pair of molecules we selecting for the mapping above." + ] + }, + { + "cell_type": "markdown", + "id": "d0cb1329", + "metadata": {}, + "source": [ + "### Creating `ChemicalSystem`s\n", + "\n", + "OpenFE describes complex molecular systems as being composed of `Component`s. For example, we have `SmallMoleculeComponent` for each small molecule in the `LigandNetwork`. We'll create a `SolventComponent` to describe the solvent, and binding free energy calculations involve a `ProteinComponent`.\n", + "\n", + "The `Component`s are joined in a `ChemicalSystem`, which describes all the particles in the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9d2fbc22", + "metadata": {}, + "outputs": [], + "source": [ + "# defaults are water with NaCl at 0.15 M\n", + "solvent = openfe.SolventComponent()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3f1706ee", + "metadata": {}, + "outputs": [], + "source": [ + "protein = openfe.ProteinComponent.from_pdb_file(\"./tyk2_protein.pdb\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "710285ca", + "metadata": {}, + "outputs": [], + "source": [ + "systemA = openfe.ChemicalSystem({\n", + " 'ligand': mapping.componentA,\n", + " 'solvent': solvent,\n", + " 'protein': protein\n", + "})\n", + "systemB = openfe.ChemicalSystem({\n", + " 'ligand': mapping.componentB,\n", + " 'solvent': solvent,\n", + " 'protein': protein \n", + "})" + ] + }, + { + "cell_type": "markdown", + "id": "340d1a6e", + "metadata": {}, + "source": [ + "### Creating a `Protocol`\n", + "\n", + "The actual simulation is performed by a `Protocol`. We'll use an OpenMM-based hybrid topology relative free energy `Protocol`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3f394a0d", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "from openfe.protocols.openmm_rfe import RelativeHybridTopologyProtocol" + ] + }, + { + "cell_type": "markdown", + "id": "3bddfa3c", + "metadata": {}, + "source": [ + "The easiest way to customize protocol settings is to start with the default settings, and modify them. Many settings carry units with them." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "fb839094", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "298.15 kelvin" + ], + "text/latex": [ + "$298.15\\ \\mathrm{kelvin}$" + ], + "text/plain": [ + "298.15 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "settings = RelativeHybridTopologyProtocol.default_settings()\n", + "settings.thermo_settings.temperature # display default value" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "e83630f0", + "metadata": {}, + "outputs": [], + "source": [ + "from openff.units import unit\n", + "\n", + "# change the value\n", + "settings.thermo_settings.temperature = 310.0 * unit.kelvin" + ] + }, + { + "cell_type": "markdown", + "id": "56658a3a", + "metadata": {}, + "source": [ + "We'll use the default settings for the protocol we'll use later, to match the behavior of the CLI." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7adf42d6", + "metadata": {}, + "outputs": [], + "source": [ + "default_settings = RelativeHybridTopologyProtocol.default_settings()\n", + "protocol = RelativeHybridTopologyProtocol(default_settings)" + ] + }, + { + "cell_type": "markdown", + "id": "318ff872", + "metadata": {}, + "source": [ + "### Creating the `Transformation`\n", + "\n", + "Once we have the mapping, the two `ChemicalSystem`s, and the `Protocol`, creating the `Transformation` is easy:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "44ba94ca", + "metadata": {}, + "outputs": [], + "source": [ + "transformation = openfe.Transformation(\n", + " systemA,\n", + " systemB,\n", + " protocol,\n", + " mapping={'ligand': mapping},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "4283dfe4", + "metadata": {}, + "source": [ + "To summarize, this `Transformation` contains:\n", + "- chemical models of both sides of the alchemical transformation in `systemA` and `systemB`\n", + "- the correspondence of items in these two sides in `mapping` \n", + "- a description of the exact computational algorithm to use to perform the estimate in `protocol`" + ] + }, + { + "cell_type": "markdown", + "id": "1e29d1c8", + "metadata": {}, + "source": [ + "## Creating the `AlchemicalNetwork`\n", + "\n", + "The `AlchemicalNetwork` contains all the information needed to run the entire campaign. It consists of a `Transformation` for each leg of the campaign. We'll loop over all the mappings, and then loop over the legs. In that inner loop, we'll make each transformation." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "66666a80", + "metadata": {}, + "outputs": [], + "source": [ + "transformations = []\n", + "for mapping in ligand_network.edges:\n", + " for leg in ['solvent', 'complex']:\n", + " # use the solvent and protein created above\n", + " sysA_dict = {'ligand': mapping.componentA,\n", + " 'solvent': solvent}\n", + " sysB_dict = {'ligand': mapping.componentB,\n", + " 'solvent': solvent}\n", + " \n", + " if leg == 'complex':\n", + " sysA_dict['protein'] = protein\n", + " sysB_dict['protein'] = protein\n", + " \n", + " # we don't have to name objects, but it can make things (like filenames) more convenient\n", + " sysA = openfe.ChemicalSystem(sysA_dict, name=f\"{mapping.componentA.name}_{leg}\")\n", + " sysB = openfe.ChemicalSystem(sysB_dict, name=f\"{mapping.componentB.name}_{leg}\")\n", + " \n", + " prefix = \"rbfe_\" # prefix is only to exactly reproduce CLI\n", + " \n", + " transformation = openfe.Transformation(\n", + " stateA=sysA,\n", + " stateB=sysB,\n", + " mapping={'ligand': mapping},\n", + " protocol=protocol, # use protocol created above\n", + " name=f\"{prefix}{sysA.name}_{sysB.name}\"\n", + " )\n", + " transformations.append(transformation)\n", + "\n", + "network = openfe.AlchemicalNetwork(transformations)" + ] + }, + { + "cell_type": "markdown", + "id": "6c61fe36", + "metadata": {}, + "source": [ + "## Writing the `AlchemicalNetwork` to disk\n", + "\n", + "We'll write out each transformation to disk, so that they can be run independently using the `openfe quickrun` command:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "d6cebd9a", + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib\n", + "# first we create the directory\n", + "transformation_dir = pathlib.Path(\"transformations\")\n", + "transformation_dir.mkdir(exist_ok=True)\n", + "\n", + "# then we write out each transformation\n", + "for transformation in network.edges:\n", + " transformation.dump(transformation_dir / f\"{transformation.name}.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "b96b57a9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rbfe_lig_ejm_31_complex_lig_ejm_42_complex.json\n", + "rbfe_lig_ejm_31_complex_lig_ejm_46_complex.json\n", + "rbfe_lig_ejm_31_complex_lig_ejm_47_complex.json\n", + "rbfe_lig_ejm_31_complex_lig_ejm_48_complex.json\n", + "rbfe_lig_ejm_31_complex_lig_ejm_50_complex.json\n", + "rbfe_lig_ejm_31_solvent_lig_ejm_42_solvent.json\n", + "rbfe_lig_ejm_31_solvent_lig_ejm_46_solvent.json\n", + "rbfe_lig_ejm_31_solvent_lig_ejm_47_solvent.json\n", + "rbfe_lig_ejm_31_solvent_lig_ejm_48_solvent.json\n", + "rbfe_lig_ejm_31_solvent_lig_ejm_50_solvent.json\n", + "rbfe_lig_ejm_42_complex_lig_ejm_43_complex.json\n", + "rbfe_lig_ejm_42_solvent_lig_ejm_43_solvent.json\n", + "rbfe_lig_ejm_46_complex_lig_jmc_23_complex.json\n", + "rbfe_lig_ejm_46_complex_lig_jmc_27_complex.json\n", + "rbfe_lig_ejm_46_complex_lig_jmc_28_complex.json\n", + "rbfe_lig_ejm_46_solvent_lig_jmc_23_solvent.json\n", + "rbfe_lig_ejm_46_solvent_lig_jmc_27_solvent.json\n", + "rbfe_lig_ejm_46_solvent_lig_jmc_28_solvent.json\n" + ] + } + ], + "source": [ + "!ls transformations/" + ] + }, + { + "cell_type": "markdown", + "id": "c30e8ae2", + "metadata": {}, + "source": [ + "Each of these individual `.json` files contains a `Transformation`, which contains all the information to run the calculation. These could be farmed out as individual jobs on a HPC cluster. These files are identical to what were created in setup stage of the CLI tutorial; for details on running them, follow from the section on running simulations in the CLI tutorial" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}