diff --git a/cookbook/network_from_orion_fepp.ipynb b/cookbook/network_from_orion_fepp.ipynb index 845e799..70fa0a0 100644 --- a/cookbook/network_from_orion_fepp.ipynb +++ b/cookbook/network_from_orion_fepp.ipynb @@ -15,30 +15,7 @@ "source": [ "OpenFE provides functions to load a ligand network from an [OpenEye Orion NES] `.dat` file or Schrödinger FEP+ `.edge` file. With this, we can create a network of transformations using their tools and then run the actual simulations with OpenFE.\n", "\n", - "[OpenEye Orion NES]: https://docs.eyesopen.com/floe/2021-2/modules/oemdaffinity/docs/source/tutorials/NES_tutorial.html" - ] - }, - { - "cell_type": "markdown", - "id": "aae789a9-168a-4744-a076-627db9dacbf5", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "5abe8cb5-23ec-4e5b-b4a8-c9e6f79ce464", - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "\n", - "from rdkit import Chem\n", - "\n", - "import openfe\n", - "from openfe.setup import ligand_network_planning" + "[OpenEye Orion NES]: https://docs.eyesopen.com/floe/modules/oemdaffinity/docs/source/tutorials/NES_tutorial.html" ] }, { @@ -54,25 +31,45 @@ "id": "eeb1aef1-da67-4d07-ad7e-052b53a5a108", "metadata": {}, "source": [ - "Both FEP+ `.edge` and Orion `.dat` files identify molecules by name, so to load the network OpenFE requires a list of named ligands. Load the ligands used by the network into instances of `SmallMoleculeComponent`. For more information, see [Loading Small Molecules]:\n", + "Both FEP+ `.edge` and Orion `.dat` files identify molecules by name, so to load the network OpenFE requires a list of named ligands.\n", + "\n", + "Load the ligands used by the network into instances of `SmallMoleculeComponent`. For more information, see [Loading Small Molecules]:\n", "\n", "[Loading Small Molecules]: https://docs.openfree.energy/en/stable/cookbook/loading_molecules.html#loading-small-molecules" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "c08f9ebb-2da5-4adf-9854-736377957bc7", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[SmallMoleculeComponent(name=benzene),\n", + " SmallMoleculeComponent(name=toluene),\n", + " SmallMoleculeComponent(name=phenol),\n", + " SmallMoleculeComponent(name=benzonitrile),\n", + " SmallMoleculeComponent(name=anisole),\n", + " SmallMoleculeComponent(name=benzaldehyde),\n", + " SmallMoleculeComponent(name=styrene)]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "ligands = [\n", - " openfe.SmallMoleculeComponent(mol) \n", - " for mol in Chem.SDMolSupplier(\n", - " \"assets/somebenzenes.sdf\", \n", - " removeHs=False,\n", - " )\n", - "]" + "%matplotlib inline\n", + "from rdkit import Chem\n", + "import openfe\n", + "\n", + "supplier = Chem.SDMolSupplier(\"assets/somebenzenes.sdf\", removeHs=False)\n", + "ligands = [openfe.SmallMoleculeComponent(mol) for mol in supplier]\n", + "\n", + "ligands" ] }, { @@ -95,7 +92,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "7c52a29f-e8e6-4894-bdb2-9be069c04076", "metadata": {}, "outputs": [], @@ -109,46 +106,95 @@ }, { "cell_type": "markdown", - "id": "8806bb1e-c960-4eba-8d00-ab2cdfd200e4", + "id": "c4218271-ffa7-495e-bda4-970d80d110db", "metadata": {}, "source": [ - "## Create the network" + "Then, create the `LigandNetwork` from the edges in the network file:" ] }, { "cell_type": "markdown", - "id": "c4218271-ffa7-495e-bda4-970d80d110db", + "id": "8806bb1e-c960-4eba-8d00-ab2cdfd200e4", "metadata": {}, "source": [ - "Then, create the `LigandNetwork` from the edges in the network file:" + "## Loading an FEP+ edges network\n", + "Here we show how to take an FEP+ edge network file, `assets/somebenzenes_fepp.edge` and load it into an LigandNetwork object." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "2e1aa4df-c8ad-4cca-b81d-3cd56836fa68", + "execution_count": 3, + "id": "14cdc1ee-bb31-434f-ba9c-8345dddbf380", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "parallel map scoring\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/atravitz/micromamba/envs/openfe-notebooks/lib/python3.13/site-packages/gufe/components/explicitmoleculecomponent.py:74: UserWarning: RDKit does not preserve Mol properties when pickled by default, which may drop e.g. atom charges; consider setting `Chem.SetDefaultPickleProperties(Chem.PropertyPickleOptions.AllProps)`\n", + " warnings.warn(\n", + "/Users/atravitz/micromamba/envs/openfe-notebooks/lib/python3.13/site-packages/gufe/components/explicitmoleculecomponent.py:74: UserWarning: RDKit does not preserve Mol properties when pickled by default, which may drop e.g. atom charges; consider setting `Chem.SetDefaultPickleProperties(Chem.PropertyPickleOptions.AllProps)`\n", + " warnings.warn(\n" + ] + } + ], "source": [ - "ligand_network = ligand_network_planning.load_orion_network(\n", + "from openfe.setup.ligand_network_planning import load_fepplus_network\n", + "\n", + "ligand_network = load_fepplus_network(\n", " ligands=ligands,\n", " mapper=mapper,\n", - " network_file=\"assets/somebenzenes_nes.dat\",\n", - ")\n", - "\n", - "# ligand_network = ligand_network_planning.load_fepplus_network(\n", - "# ligands=ligands,\n", - "# mapper=mapper,\n", - "# network_file=\"assets/somebenzenes_fepp.edge\",\n", - "# )" + " network_file=\"assets/somebenzenes_fepp.edge\",\n", + ")" ] }, { "cell_type": "markdown", - "id": "1796f9d2-c68f-4022-bd5d-649cf471fcfd", + "id": "063b9564-8b29-4267-84d9-427e5ef93e32", + "metadata": {}, + "source": [ + "## Loading an Orion NES network file\n", + "\n", + "Similarly we can take an Orion network edge file, `data/benzenes.dat` and load it into an LigandNetwork object." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2e1aa4df-c8ad-4cca-b81d-3cd56836fa68", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "parallel map scoring\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/atravitz/micromamba/envs/openfe-notebooks/lib/python3.13/site-packages/gufe/components/explicitmoleculecomponent.py:74: UserWarning: RDKit does not preserve Mol properties when pickled by default, which may drop e.g. atom charges; consider setting `Chem.SetDefaultPickleProperties(Chem.PropertyPickleOptions.AllProps)`\n", + " warnings.warn(\n" + ] + } + ], "source": [ - "## Visualise the network" + "from openfe.setup.ligand_network_planning import load_orion_network\n", + "\n", + "ligand_network = load_orion_network(\n", + " ligands=ligands,\n", + " mapper=mapper,\n", + " network_file=\"assets/somebenzenes_nes.dat\",\n", + ")\n" ] }, { @@ -156,6 +202,10 @@ "id": "c99da814-1121-45c6-b81a-664d44337d3d", "metadata": {}, "source": [ + "## Visualizing the Network\n", + "\n", + "Once defined we can visualise the network as we normally would.\n", + "\n", "For more ways to visualize a `LigandNetwork`, see [Visualizing Ligand Networks].\n", "\n", "[Visualizing Ligand Networks]: https://docs.openfree.energy/en/stable/cookbook/ligandnetwork_vis.html" @@ -169,7 +219,7 @@ "outputs": [ { "data": { - "image/png": "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tmzZorlz5+qZZ56xukTAZQgsSJEYE7kOm8a5xubNm1W2bFm1bNlSR48e1VNPPaXvvvtO27Zt0/PPP291eYDLEViQojEmMh+bxpnrt99+U+PGjVWhQgXt2rVLmTJl0kcffaTIyEg1a9aMsRtSDAILIMZEZmIkZI5z586pX79+Cg4O1g8//CAfHx917NhRMTExGjBggNKnT291iUCyIrAA/48xkTkYCT2a2NhYffbZZ7Lb7Ro9erRu3LihGjVqaN++fZo6dapy5cpldYmAJQgswL8wJno0dFgejtPp1NKlSxUSEqK33npLp0+fVlBQkJYsWaIVK1aocOHCVpcIWIrAAtwDY6KHQ4flwR04cEAvvvii6tatq4iICD3++OOaPHmywsLCVKdOHdapACKwAP/p1jFR165dGRMlAR2WpDt58qQ6duyookWLatWqVUqTJo369u0rh8OhLl268D0EbkFgAZIga9asmjRpEmOiJKDDcn9Xr17Vxx9/LLvdrmnTpik+Pl6vvvqqwsPDNWrUKGXNmtXqEgG3Q2ABHgBjovujw3JvTqdT3333nYKCgjRw4EBdunRJpUqV0qZNm/T999/rueees7pEwG0RWIAHxJjov9FhubutW7eqXLlyat68uf744w89+eST+uabb7R9+3a98MILVpcHuD0CC/CQGBPdHRvH3e73339X06ZNVb58ee3YsUMZM2bUsGHDFBUVpRYtWsjHhx/DQFLwPwV4RIyJbpfQYUnpI6Hz58/rnXfeUVBQkObPny+bzab27dvL4XDo3XffVYYMGawuEfAoBBbABIyJEqX0DktsbKw+//xz2e12jRw5UtevX1fVqlW1d+9eTZs2Tblz57a6RMAjEVgAE/3XmGjNmjVWl5csUvKi2+XLl6tIkSLq3Lmz/vrrLwUGBuqXX37R6tWrVaRIEavLAzwagQVwgbuNiapXr54ixkQpcdHtoUOHVLt2bdWuXVvh4eHKnj27Jk2apAMHDqhevXps/AaYgMACuEhKHROlpA7LqVOn1LlzZ4WEhGj58uVKnTq1evXqpZiYGHXt2jVFfA+A5EJgAVwspY2JUkKH5dq1axo5cqT8/f31+eefKz4+Xo0aNVJ4eLjGjh2rbNmyWV0i4HUILEAySSljIm/usDidTs2bN09BQUF65513dPHiRZUoUUIbNmzQggUL5O/vb3WJgNci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rBMpV844DTkpIiONs35mzTI+Ejz9tBEs8uQxzkLq398INNevG7fVqiX5JPGlms1mBKh33zWCzl9/Gac+V6xonCYNIPnYnM5/T4TvdOHCBWXJkkXnz5+Xn59fctQFAABSgKRmDEZCAADA7RFYADyw2NhYzZ8/3+oyAKQgBBYAD2T58uUqUqSIRowYYXUpAFIQAguAJDl06JBq166t2rVrKzw8XFnZiARAMiKwAPhPf/31l7p06aIiRYpo+fLlSp06tXr16qVFixZZXRqAFITTmgHc1fXr1zVp0iQNGzZM58+flyQ1bNhQI0eOlN1ut7g6ACkNgQXAbZxOp3788Uf169dPv/32mySpWLFiGjdunCpXrmxtcQBSLAILgH+EhoaqV69e2rhxoyTpiSee0EcffaRWrVrJ999v+gMAyYjAAkDHjx/XwIED9fXXX8vpdCpdunTq06eP+vfvr0y3vhshAFiERbdACnblyhV98MEHstvtmjVrlpxOp1q0aKGoqCh9+OGHDxxW4uLiVLx4cRUvXvyfdS8PauvWrXrllVf+OU7z5s21d+/ehzoWAO/B1vxAChQfH685c+ZowIABOnbsmCSpXLlyGj9+vMqUKfPQx42NjVXq1KklSWfOnFH27Nkf6jg3b97U5MmTNWTIkH+CT7NmzTRq1Cjly5fvoesD4H7Ymh/AXW3evFlly5ZVq1atdOzYMT399NOaO3eutmzZ8khh5d9sNttDPzZ16tTq2bOnHA6HOnToIJvNprlz5yooKEgffvihrl69alqdADwDgQVIIQ4fPqwmTZqoQoUK2rVrlzJlyqSPPvpIkZGRatq06SMFDFfJkSOHvvjiC4WGhuqFF17QlStXNHjwYAUHB+uHH35QEhrEALwEgQXwchcuXNA777yjoKAgff/99/Lx8VGHDh0UExOjAQMGKF26dKY9l6sCRLFixbRx40Z99913evLJJ3XkyBE1btxY1apV04EDB1zynADcC4EF8FKxsbGaOnWq/P39NXLkSN24cUPVqlXT3r179cUXXyhXrlwufX6zOzY2m03NmjVTZGSkBg8erHTp0mndunUqWrSo3nrrLZ05c8bU5wPgXggsgBdatWqVihUrpk6dOumvv/5SQECAfv75Z61atUohISEue97kGNFkzJhRQ4cOVUREhF599VXFx8frs88+k91u1+TJkxUbG+vy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369KlSqpadOmOnLkiNXlwSIEFi937tw59e7dWwUKFNCiRYvk6+urLl26KCYmRn369FHatGmtLhFeiACMR5UqVSp169ZNDodDnTp1ko+Pj+bPn6+goCANGTJEV65csbpEJDMCi5e6efOmPv30U/n7+2vcuHG6efOmatWqpbCwME2ePFk5cuSwukR4ITosMNvjjz+uKVOmaM+ePapUqZKuXbumoUOHKjg4WPPnz+ffXApCYPEyTqdTS5cuVUhIiLp166YzZ86oQIECWrZsmZYtW6YCBQpYXSJSADosMFuRIkW0bt06zZ8/X0899ZT++OMPNW3aVJUrV9a+ffusLg/JgMDiRQ4ePKhatWqpbt26ioyM1OOPP67PPvtM+/fvV61atawuDwAeic1mU+PGjRUREaEhQ4Yoffr02rhxo0qUKKFOnTrp9OnTVpcIFyKweIFTp06pU6dOKlKkiFauXKnUqVOrT58+cjgc6ty5M29QiGRDex7JIUOGDHr//fcVGRmppk2bKj4+XlOnTpXdbtfEiRN18+ZNq0uECxBYPNj169c1atQo2e12TZ06VfHx8WrUqJEiIiI0evRoZc2a1eoSkUIxEkJyeOqppzR37lxt2LBBRYoU0blz59SjRw8VLVpUq1evtro8mIzA4oGcTqd++OEHBQcHq3///rpw4YKKFy+uDRs2aMGCBXruueesLhEpFB0WWKFixYoKDQ3V559/rscee0zh4eGqUaOGGjRooF9//dXq8mASAouH2b17typWrKjGjRvr8OHDypMnj2bOnKldu3apYsWKVpcHSKLDguTn6+urN998Uw6HQz169JCvr69++uknFShQ4J93nodnI7B4iP/9739q1aqVSpUqpc2bNyt9+vQaPHiwoqOj9cYbb/AGhQAgKVu2bPrkk08UFhamGjVq6MaNG/r4448VGBiob775hi6gB+O3nJu7fPmyhgwZooCAAM2ePVuS1LJlS0VHR2vo0KHKmDGjxRUCifhlAHdRoEABrVixQosWLdKzzz6r48eP6/XXX1f58uW1a9cuq8vDQyCwuKn4+Hh9/fXXCggI0NChQ3X16lWVL19eO3fu1OzZs/Xkk09aXSJwT4yE4A5sNpvq16+v8PBwffzxx8qYMaO2bdum0qVLq23btjp58qTVJeIBEFjc0KZNm1S6dGm98cYbOn78uPLnz6/58+dr06ZNKlWqlNXlAfdEhwXuKG3atHrnnXcUHR2t119/XZL+ecf6MWPG6MaNGxZXiKQgsLiR3377Ta+++uo/K94zZ86sESNGKCIiQo0bN+ZVKzwG/1bhjvLkyaOvv/5aW7duValSpXTx4kX17dtXhQoV0pIlS6wuD/dBYHED58+fV79+/RQcHKwFCxbIx8dHb775pmJiYtS/f3+lS5fO6hIBwGuUK1dO27dv11dffaVcuXLJ4XCoXr16qlOnjqKioqwuD/dAYLFQbGyspkyZIn9/f40ePVo3btxQjRo1tG/fPn3++efKmTOn1SUCD4SREDyFj4+P2rRpo+joaPXt21epU6fWsmXLVKhQIfXp00fnz5+3ukT8C4HFIitWrFDRokXVpUsXnT59WoGBgVq8eLFWrFihwoULW10e8EgYCcFT+Pn5adSoUTp48KDq1q2r2NhYjR07VgEBAfryyy8VHx9vdYn4fwSWZBYREaE6deqoVq1aOnTokLJnz65JkybpwIEDqlu3Lj/o4dHosMBTBQQEaPHixVq6dKkCAgJ06tQptW/fXqVLl9bWrVutLg8isCSb06dPq2vXripcuLCWLVumVKlS6e2331ZMTIy6du2q1KlTW10iYBqCNzxV7dq1deDAAY0dO1Z+fn4KDQ1V+fLl1bJlSx07dszq8lI0AouL3bhxQ2PHjpW/v78mT56suLi4f/YFGDdunLJly2Z1iQCAW6RJk0a9evVSdHS02rVrJ5vNpjlz5iggIEDDhw/XtWvXrC4xRSKwuIjT6dTChQtVoECBfxZwFSlSRGvXrtWiRYtkt9utLhEwHSMheJNcuXJp+vTp2rVrl55//nlduXJFgwYNUoECBbRw4UL+vSczAosL7N27V1WqVFGjRo3066+/6oknntCXX36p0NBQValSxeryAJdjJARvUqJECW3evFlz5sxR3rx5dfjwYTVq1Eg1atTQoUOHrC4vxSCwmOj48eNq06aNSpQooQ0bNihdunR69913FR0drbZt28rX19fqEgGX4hUnvJXNZlPz5s0VGRmpd999V2nTptWaNWtUpEgRde/eXWfPnrW6RK9HYDHBlStX9OGHHyogIEAzZ86U0+lU8+bNFRUVpWHDhilz5sxWlwgkKzos8FaZMmXSsGHDFB4erkaNGikuLk6TJk2S3W7XlClTFBcXZ3WJXovA8gji4+M1Z84cBQYGavDgwbp8+bLKli2rbdu2ac6cOXrqqaesLhEA4ALPPvusFixYoNWrV6tgwYI6c+aMunTpouLFi2vDhg1Wl+eVCCwPaevWrSpXrpxatmyp//3vf3rqqaf03XffaevWrSpbtqzV5QGWYCSElKZatWrat2+fJk2apGzZsiksLEyVK1dWkyZNdOTIEavL8yoElgf0+++/q2nTpipfvrx27typTJkyafjw4YqMjFSzZs1ohQNiJISUJVWqVOratauio6PVuXNn+fj46Pvvv1dQUJDef/99XblyxeoSvQKBJYkuXLigAQMGKCgoSPPnz5fNZlP79u3lcDg0cOBApU+f3uoSAcvRYUFK9vjjj+uzzz7T3r17VblyZV27dk0ffPCBgoKCNG/ePP5/PCICy33ExcVp2rRpstvtGjFihK5fv66qVatq7969mjZtmp544gmrSwTcDh0WpGQhISFau3atvv/+ez399NM6evSomjVrpkqVKmnv3r1Wl+exCCz/YfXq1SpWrJg6duyoU6dOyW6366efftLq1atVpEgRq8sDALgpm82mV199VRERERo6dKjSp0+vTZs2qUSJEnrzzTf1119/WV2ixyGw3EVUVJReeukl1ahRQwcOHFDWrFk1fvx4HTx4UC+//DKvHoF7oOUN3C59+vQaPHiwIiMj1bRpUzmdTn3xxRcKCAjQhAkTdPPmTatL9BgEllv8/fff6tGjhwoVKqTFixcrVapU6t69u2JiYtSzZ0+lSZPG6hIBj0CoB2731FNPae7cudq4caOKFi2qc+fOqWfPnipatKhWrVpldXkegcAi4w0KP/nkE/n7+2vixImKjY1VvXr1dPDgQU2YMEGPPfaY1SUCHoEOC/DfKlSooN27d2vq1Kl6/PHHFR4erpo1a6p+/fr69ddfrS7PraXowOJ0OvXzzz+rUKFCevvtt3X27FkVLlxYq1at0i+//KLAwECrSwQ8Eh0W4N58fX3VsWNHRUdHq0ePHvL19dXPP/+sAgUKaMCAAbp48aLVJbqlFBtYEs6XHzJkiDJlyqRq1appwYIF2rt3r6pXr251eQAAL5ctWzZ98sknCgsLU82aNXXjxg2NGDFCgYGBmj17tuLj460u0a3YnEno4V64cEFZsmTR+fPn5efnlxx1AfBA+/btU7FixZQ7d24dP37c6nIAj+F0OvXLL7+o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", + "image/png": "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jXSTglaut2zZYp78Xbp0SXr27ClPPvmkLF261Ne3hwcgsLjAhQsXpHfv3uZsjPnz55sFtLraXQ8o1OsPPfSQr28RAAJGiRIlZNu2bTJ16lRJly6d2VlUq1YtMyX80KFDvr493AOBxccHFOrcAJ3O+O6775qypK5q13Mx9HratGl9eXtAlNESgr/QJ4atWrUybSKtsuiEcD1vTastOilcn0jCXQgsPrJy5UozjVFH5+tofV1cu2TJErOqPW/evL66LcAWtITgL0JCQswTxu+++05q1qxpnkjqCfe6vmXKlClmAwTcgcASy3Q9iv6nePrpp81hhSlTpjRnX+zfv99c5xs9/BkVFvgrDSj6pHHZsmXm96dPn5a2bduaHUW65gW+R2CJJXqKaMeOHU31RP9D6IGEXbt2NetUOnXqZMqRQKAgeMNfVa9e3TyB1CqLVl90uriOlND5V7prE75DYHGYrksZNWqUWacyfvx4uXnz5u25AHpdpzICANwjYcKE0q1bN7O+pU2bNiaAz54921RehgwZIteuXfP1LQYlAouDpXGdsJgnTx7p3r27OUVUTxNds2aNua4BBgg0tIQQSHQH0eTJk81k3JIlS5oBnv369TNTdBcuXMi/91hGYHHAnj17pGLFilK/fn3T8vH+o9fSol4HAh0tIQSSwoULm4GeWmXJlCmTHDlyRBo0aGB2depaRMQOAouNTp48acY96z/udevWmfkpffv2NXv8tayop4cCgYwKCwI5hDdt2lQOHjxovq/r9FytmGvl/NVXX5Vz5875+hYDHoHFBlevXpW33nrLtHl03LN+037uuefMACK9rhNrgWBChQWBKlmyZOb7uq5D1CqLrkscN26c+f7/wQcfmNfhDAJLDGgwmTNnjpmh8sYbb5iTlYsXL24O19LrWbNmte8rBQBwDT0BesGCBbJ69WqzVvHs2bPSvn17KVSokKxfv97XtxeQCCzRpPvydbxzs2bN5NixYyacfPLJJ+a6hhYgGNESQrCpVKmSmU6uVRbd9blv3z4pX768NGrUSH777Tdf315AIbBEkf4DbNKkidmXv337dlMe1G1u2tfU65TCAVpCCC46V0vnbOk2aJ1ermP/P/vsM8mVK5cMGDDA7C5CzBFYIunixYvy+uuvm/bPvHnzTDDRhbS6oFavJ06c2IYvB+DfqLAgmKVOnVomTJhg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5hr92amVEa20tG9vdRe04qKVk/TprZeECUWeecYqBGjlxUt/5mo1JfzzGK3E6FpU789QvwssKVJY5aZJk0QOH7YqItrSia6rV63SlH49fvtNRLen6+JbDUKqe3drYe/gwdbsFi1vvf++9SDejZbBSpSwFhmtWGHtWtKAowEr/M4jIFjREgLcq2LFirJnzx55//33JUWKFLJv3z6pUKGCmZ57L7oTVwsIGlQaNrS6H/crJGiAef55kalTrde1C6E7aTWwhPfUU1G/f1cFFt0RNHeuVSLSUpFWRbRsFF1aJdGqjR54qVUTLV9Vry4yaFBYxeTTT63PqZ+vf3+RN9+884H10nSou4PKlrXKY/oxdYeRBpd06aJ/n0CgoSUEuFP8+PFNdUW3Qbdv396M/V+9evV9f46uWiXy1VdWV2LcOJHHH7fWbt6LtoX0z+goGA0uGniyZYv4PkmTRv3e4+jK2we908WLFyU0NNScV6DDaQDgbrZv324Oa8uePbscud93NACusG/fPlNxmaStjUjQDSkaPrT7oWcvasvoyy/vfL9ixaz1LePHWyFH18F4aWupSxfrJfyTnAdljPhR+6sBwINRYQH8Q758+WTixIn3fLtufNGlE1WrWgNT9fU//7SWVuhMOl0eoRtPdDmH7vjxborRKosuydABrzpLzQ6uagkBAAD3PMEICRHZsEGkRg1rGYSu2dSJ8Lq8Qrcja3tI16OkSWOtE/XSiopuUNExJQ89ZM99UmEBYBsW3QKBJXdu68icu9GQortv70YX5moFpk2bO9+m6z6jg8ACwHa0hIDg9M8/1roWPQaneHFrc4tdaAkBsA0VFiC4bd5sLcrV3b4ffmjvx6bCAsB2VFiA4FS+/P0nxscEFRYAAOB6BBYAtqElBMApBBYAtqMlBMBuBBYAtqHCAsApBBYAtqPCAsBuBBYAAOAzly9fjtT7EVgA2IaWEICounXrVqTej8ACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwHa0hADYjcACwDZUWAA4hcACwHZUWADYjcACAABcj8ACwDa0hAA4hcACwDapU6eWggULyv/+9z8eVQC2iuOJxFOiixcvSmhoqFy4cEFCQkLsvQMAABC0LkYyY1BhAQAArkdgAQAArkdgAQAArkdgAQAArkdgAQAArkdgAeCI8uVFunRx94PbsqVIvXr2/j2mTxd5+OEY31qsfVzAXxBYAACA6xFYAACA6xFYADjm339FOna0Whmp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", "text/plain": [ "
" ] @@ -184,6 +234,61 @@ "\n", "plot_atommapping_network(ligand_network)" ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "959565d0-4ad0-4c8a-840b-66b8bf4d42c4", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f0394b8c95664ad3ba3424f9fa486906", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(IntSlider(value=0, description='index', max=5), Output()), _dom_classes=('widget-interac…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Similarly we can visualize the invidual mappings\n", + "\n", + "from ipywidgets import interact, widgets\n", + "\n", + "def display_edge(index):\n", + " view = edges[index].view_3d(spheres=True, show_atomIDs=True)\n", + " view.show()\n", + "\n", + "# traverse through all views\n", + "\n", + "edges = list(ligand_network.edges)\n", + "\n", + "interact(display_edge, index=widgets.IntSlider(min=0, max=len(edges)-1, step=1));" + ] + }, + { + "cell_type": "markdown", + "id": "eebedd8c-fdcb-4868-8497-295ce6ab7a62", + "metadata": {}, + "source": [ + "## Creating an AlchemicalNetwork" + ] + }, + { + "cell_type": "markdown", + "id": "18bc78e1-6aae-401f-bfef-2a98d0af5672", + "metadata": {}, + "source": [ + "See [Creating an Alchemical Network] for how to use these defined `ligand_network` objects to create an AlchemicalNetwork, which we can then be executed using the OpenFE CLI.\n", + "\n", + "[Creating an Alchemical Network]: https://docs.openfree.energy/en/stable/cookbook/create_alchemical_network.html" + ] } ], "metadata": { @@ -202,7 +307,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.13.11" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/networks/creating_networks_from_external_files.ipynb b/networks/creating_networks_from_external_files.ipynb deleted file mode 100644 index f59ce42..0000000 --- a/networks/creating_networks_from_external_files.ipynb +++ /dev/null @@ -1,385 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4d66b7af", - "metadata": {}, - "source": [ - "# Creating AlchemicalNetworks from externally defined transformation networks\n", - "\n", - "This notebook demonstrates how to load networks defined by FEP+ and Orion's NES planner for use within OpenFE." - ] - }, - { - "cell_type": "markdown", - "id": "8096a77a", - "metadata": {}, - "source": [ - "## Some setup things\n", - "\n", - "First we load our ligands from an SDF file `data/benzene_modifications.sdf`.\n", - "\n", - "We also load in a protein `data/tyk2_protein.pdb` to demonstrate how we can eventually go about creating a full AlchemicalNetwork and write it to disk.\n", - "\n", - "**Note:** the protein used is only for demonstration purposes, the ligands are not aligned in the binding site and therefore should not be direclty used for calculation purposes." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "870831ef", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/atravitz/micromamba/envs/openfe_env/lib/python3.13/site-packages/openmoltools/utils.py:9: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.\n", - " from pkg_resources import resource_filename\n" - ] - } - ], - "source": [ - "from rdkit import Chem\n", - "import openfe" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a9ea3769", - "metadata": {}, - "outputs": [], - "source": [ - "# First we load in our ligands from an SDF file data/benzene_modifications.sdf\n", - "\n", - "supplier = Chem.SDMolSupplier('data/benzene_modifications.sdf', removeHs=False)\n", - "smcs = [openfe.SmallMoleculeComponent(mol) for mol in supplier]" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "8ad04ac5", - "metadata": {}, - "outputs": [], - "source": [ - "protein = openfe.ProteinComponent.from_pdb_file('data/tyk2_protein.pdb')" - ] - }, - { - "cell_type": "markdown", - "id": "7f0bdf6e", - "metadata": {}, - "source": [ - "## Loading an FEP+ edges network\n", - "\n", - "Here we show how to take an FEP+ edge network file, `data/benzenes.edge` and load it into an LigandNetwork object." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8c0cb597", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/atravitz/software/gufe/gufe/components/explicitmoleculecomponent.py:74: UserWarning: RDKit does not preserve Mol properties when pickled by default, which may drop e.g. atom charges; consider setting `Chem.SetDefaultPickleProperties(Chem.PropertyPickleOptions.AllProps)`\n", - " warnings.warn(\n", - "/Users/atravitz/software/gufe/gufe/components/explicitmoleculecomponent.py:74: UserWarning: RDKit does not preserve Mol properties when pickled by default, which may drop e.g. atom charges; consider setting `Chem.SetDefaultPickleProperties(Chem.PropertyPickleOptions.AllProps)`\n", - " warnings.warn(\n" - ] - } - ], - "source": [ - "from openfe.setup.ligand_network_planning import load_fepplus_network\n", - "\n", - "atom_mapper = openfe.LomapAtomMapper(max3d=1.0, element_change=False)\n", - "\n", - "ligand_network = load_fepplus_network(\n", - " ligands=smcs,\n", - " mapper=atom_mapper,\n", - " network_file='./data/benzenes.edge'\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "deae71b4", - "metadata": {}, - "source": [ - "## Loading an Orion NES network file\n", - "\n", - "Similarly we can take an Orion network edge file, `data/benzenes.dat` and load it into an LigandNetwork object." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "d0eace14", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/atravitz/software/gufe/gufe/components/explicitmoleculecomponent.py:74: UserWarning: RDKit does not preserve Mol properties when pickled by default, which may drop e.g. atom charges; consider setting `Chem.SetDefaultPickleProperties(Chem.PropertyPickleOptions.AllProps)`\n", - " warnings.warn(\n" - ] - } - ], - "source": [ - "from openfe.setup.ligand_network_planning import load_orion_network\n", - "\n", - "atom_mapper = openfe.LomapAtomMapper(max3d=1.0, element_change=False)\n", - "\n", - "ligand_network = load_orion_network(\n", - " ligands=smcs,\n", - " mapper=atom_mapper,\n", - " network_file='./data/benzenes.dat'\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "d45e92bf", - "metadata": {}, - "source": [ - "## Visualizing the Network\n", - "\n", - "Once defined we can visualise the network as we normally would." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "69475818", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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lSNHDn3yySfau3evGjZsyGn7yYjA4uFKlCih9evXa+bMmYyJ4DXosMDb/fnnn+rWrZtKlCihZcuWKXXq1HrttdcUHR2tnj17EsZtQGDxAg6HQ+3bt2dMBK9BhwXe6urVqxo9erScTqemTJmi+Ph4/ec//1F4eLjGjh2rrFmz2l1iikVg8SL/NiZasWKF3eUBN9FhgbcxDENz585VSEiIBg0apAsXLqhs2bJat26dvv32WxUqVMjuElM8AosXutOYqG7dumrRogVjIngETmuGN9m8ebMqV66sF154QYcPH9Zjjz2mWbNmaevWrapWrZrd5eH/EVi81J3GRN988w1jIngERkLwBr///rtatWqlypUra8uWLcqYMaPefvttRUZGqm3btlz4zcPwt+HlGBPBEzESgic7f/68Bg0apJCQEM2bN08Oh0OdO3eWy+XS0KFDlSFDBrtLxB0QWHwEYyJ4Ejos8ESxsbGaMmWKAgMDNXr0aF27dk1PPfWUdu7cqalTpypPnjx2l4h/QWDxIYyJ4CnosMDT/PLLLypZsqS6deumU6dOKSgoSD/88INWrlypkiVL2l0ekoDA4oMYE8FudFjgKQ4ePKgGDRqofv36OnDggLJnz67x48dr//79evbZZ7nwmxchsPgwxkSwCx0W2O3kyZPq0aOHQkNDtXTpUqVOnVqvvvqqoqOj1bt3b8K0FyKw+DjGRLADpzXDLlevXtX7778vp9OpTz/9VHFxcWratKkOHDigDz/8UNmyZbO7RDwgAksKwZgIySmhw8KrWCQXwzD0zTffqEiRIho4cKDOnz+v0qVLa82aNfruu+/kdDrtLhEPicCSwjAmQnKgw4LktHXrVlWtWlUtWrTQoUOHlDdvXs2cOVPbt29XjRo17C4PFiGwpECMieBuLLpFcvjjjz/Upk0bVaxYUZs2bVKGDBk0fPhwRUVFqX379lz4zcfwt5mCMSaCu7DoFu504cIFDRkyRMHBwZozZ44cDoc6dOigqKgovfnmm8qYMaPdJcINCCxgTATL0WGBO8TFxenzzz+X0+nUO++8o6tXr6pGjRrasWOHpk+frnz58tldItyIwAJJjIlgLTossNqKFStUqlQpde3aVX/++acCAwO1aNEirV69WqVLl7a7PCQDAgtuw5gIVqDDAquEh4erUaNGqlu3rvbt26ds2bLpo48+0oED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06QBJB+HYfx9IvxP58+fV5YsWRQTE6OAgIDkqAsAAKQASc0YjIQAAIDHI7AAuG+xsbGaP3++3WUASEEILADuy88//6wSJUpo9OjRdpcCIAUhsABIkoMHD+qZZ57RM888o4MHDyorFyIBkIwILAD+1alTp9SzZ0+Fhobq559/VurUqfXaa6/p+++/t7s0ACkIpzUDuKNr165pwoQJGjlypGJiYiRJTZs21fvvv6/AwECbqwOQ0hBYANzGMAwtXLhQAwYM0K///4Y5pUqV0ocffqiaNWvaWxyAFIvAAuCmsLAw9evXT+vWrZMk5cmTR++8847at28vv6RebQ0A3IDAAkDHjh3T4MGD9eWXX8owDKVPn179+/fXgAEDlOnWdyMEAJvwkglIwS5fvqy33npLTqdTM2fOlGEYatOmjSIjI/XWW2/dd1iJi4tT6dKlVbp06ZvrXu7Xpk2b9J///OfmcVq3bq1du3Y90LEA+A4uzQ+kQPHx8ZozZ44GDRqk//3vf5KkypUra9y4cSpfvvwDHzc2NlapU6eWJJ05c0bZs2d/oOPcuHFDEydO1PDhw28Gn1atWun9999X/vz5H7g+AJ6HS/MDuKONGzeqYsWKateunf73v//p8ccf17x587Rhw4aHCit/53A4HvixqVOnVt++feVyufTSSy/J4XBo7ty5CgkJ0dtvv60rV65YVicA70BgAVKIQ4cOqUWLFqpataq2b9+uzJkz691331VERIRatGjxUAHDXXLmzKnPPvtMYWFhqlq1qi5fvqxhw4apcOHC+vbbb5WEBjEAH0FgAXzc+fPn9cYbbygkJETffPON/Pz81LVrV7lcLr3xxhtKly6dZc/lrgBRqlQprVu3Tl9//bUee+wxHT58WM2bN1ft2rW1b98+tzwnAM9CYAF8VGxsrKZMmaLAwEC99957un79uurUqaNdu3ZpypQpyp07t1uf3+qOjcPhUKtWrRQREaFhw4YpXbp0Wr16tUqWLKmePXvqzJkzlj4fAM9CYAF80PLly1WqVCl169ZNp06dUnBwsH788UctW7ZMoaGhbnve5BjRZMyYUSNGjFB4eLief/55xcfHa9KkSXI6nZo4caJiY2PdXgOA5EdgAXxIRESEGjVqpHr16mn//v3Knj27xo8fr3379qlRo0bJuk7F3c9VsGBBffPNN1q1apWKFy+us2fP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119r06ZNqlixot3lAbZgJISUpnbt2tq9e7cmTJigbNmyae/evapZs6ZatGihw4cP212eTyGw3KfDhw+rVatWqlKlirZu3apMmTJp1KhRioiIUKtWrWiFA2IkhJQlVapU6tWrl6KiotS9e3f5+fnpm2++UUhIiN58801dvnzZ7hJ9AoElic6fP6/BgwcrODhY8+bNk8PhUOfOneVyuTR48GClT5/e7hIB29FhQUr2yCOPaNKkSdq1a5dq1qypq1ev6q233lJISIjmzZvH/4+HRGC5h7i4OH3++edyOp169913de3aNdWqVUu7du3S1KlT9eijj9pdIuBx6LAgJQsNDdWqVav0zTff6PHHH9eRI0fUqlUr1ahRQ7t27bK7PK9FYPkXK1euVOnSpdW1a1edPHlSTqdT33//vVasWKESJUrYXR4AwEM5HA49//zzCg8P14gRI5Q+fXqtX79eZcqU0csvv6xTp07ZXaLXIbDcQVRUlJ577jnVqVNHe/fuVdasWTVu3Djt379fzz33HK8egbug5Q3cLn369Bo2bJgiIiLUsmVLGYahzz77TEFBQfr4449148YNu0v0GgSWW/z111/q27evihYtqh9//FH+/v7q3bu3oqOj1bdvX6VJk8buEgGvQKgHblegQAHNnTtX69atU8mSJXXu3Dn17dtXJUuW1PLly+0uzysQWCTduHFD48ePV2BgoD7++GPFxsaqUaNG2r9/v8aPH68cOXLYXSLgFeiwAP+uWrVq2rFjh6ZMmaJHHnlEBw8eVL169dS4cWP9+uuvdpfn0VJ0YDEMQz/++KOKFSumPn366OzZsypevLiWL1+uH3/8USEhIXaXCHglOizA3fn7+6tr166KiopSnz595O/vrx9++EFFihTRoEGDdOHCBbtL9EgpNrC4XC51795db775pjJmzKjatWvr22+/1a5du1SnTh27ywMA+Lhs2bLpo48+0t69e1WvXj1dv35do0ePVnBwsGbNmqX4+Hi7S/QoDiMJPdzz588rS5YsiomJUUBAQHLUBcAL7d69W6VKlVKePHl07Ngxu8sBvEZCx79fv343R0MVK1bU+PHjVa5cOZurc6+kZowU22EB4D6MhID743A49Nxzz+nAgQMaPXq0MmXKpC1btqh8+fLq2LGjTpw4YXeJtiOwALAMi26Bh5M2bVoNHDhQkZGRat++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", - "text/plain": [ - "
" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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lSNHDn3yySfau3evGjZsyGn7yYjA4uFKlCih9evXa+bMmYyJ4DXosMDb/fnnn+rWrZtKlCihZcuWKXXq1HrttdcUHR2tnj17EsZtQGDxAg6HQ+3bt2dMBK9BhwXe6urVqxo9erScTqemTJmi+Ph4/ec//1F4eLjGjh2rrFmz2l1iikVg8SL/NiZasWKF3eUBN9FhgbcxDENz585VSEiIBg0apAsXLqhs2bJat26dvv32WxUqVMjuElM8AosXutOYqG7dumrRogVjIngETmuGN9m8ebMqV66sF154QYcPH9Zjjz2mWbNmaevWrapWrZrd5eH/EVi81J3GRN988w1jIngERkLwBr///rtatWqlypUra8uWLcqYMaPefvttRUZGqm3btlz4zcPwt+HlGBPBEzESgic7f/68Bg0apJCQEM2bN08Oh0OdO3eWy+XS0KFDlSFDBrtLxB0QWHwEYyJ4Ejos8ESxsbGaMmWKAgMDNXr0aF27dk1PPfWUdu7cqalTpypPnjx2l4h/QWDxIYyJ4CnosMDT/PLLLypZsqS6deumU6dOKSgoSD/88INWrlypkiVL2l0ekoDA4oMYE8FudFjgKQ4ePKgGDRqofv36OnDggLJnz67x48dr//79evbZZ7nwmxchsPgwxkSwCx0W2O3kyZPq0aOHQkNDtXTpUqVOnVqvvvqqoqOj1bt3b8K0FyKw+DjGRLADpzXDLlevXtX7778vp9OpTz/9VHFxcWratKkOHDigDz/8UNmyZbO7RDwgAksKwZgIySmhw8KrWCQXwzD0zTffqEiRIho4cKDOnz+v0qVLa82aNfruu+/kdDrtLhEPicCSwjAmQnKgw4LktHXrVlWtWlUtWrTQoUOHlDdvXs2cOVPbt29XjRo17C4PFiGwpECMieBuLLpFcvjjjz/Upk0bVaxYUZs2bVKGDBk0fPhwRUVFqX379lz4zcfwt5mCMSaCu7DoFu504cIFDRkyRMHBwZozZ44cDoc6dOigqKgovfnmm8qYMaPdJcINCCxgTATL0WGBO8TFxenzzz+X0+nUO++8o6tXr6pGjRrasWOHpk+frnz58tldItyIwAJJjIlgLTossNqKFStUqlQpde3aVX/++acCAwO1aNEirV69WqVLl7a7PCQDAgtuw5gIVqDDAquEh4erUaNGqlu3rvbt26ds2bLpo48+0oED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06QBJB+HYfx9IvxP58+fV5YsWRQTE6OAgIDkqAsAAKQASc0YjIQAAIDHI7AAuG+xsbGaP3++3WUASEEILADuy88//6wSJUpo9OjRdpcCIAUhsABIkoMHD+qZZ57RM888o4MHDyorFyIBkIwILAD+1alTp9SzZ0+Fhobq559/VurUqfXaa6/p+++/t7s0ACkIpzUDuKNr165pwoQJGjlypGJiYiRJTZs21fvvv6/AwECbqwOQ0hBYANzGMAwtXLhQAwYM0K///4Y5pUqV0ocffqiaNWvaWxyAFIvAAuCmsLAw9evXT+vWrZMk5cmTR++8847at28vv6RebQ0A3IDAAkDHjh3T4MGD9eWXX8owDKVPn179+/fXgAEDlOnWdyMEAJvwkglIwS5fvqy33npLTqdTM2fOlGEYatOmjSIjI/XWW2/dd1iJi4tT6dKlVbp06ZvrXu7Xpk2b9J///OfmcVq3bq1du3Y90LEA+A4uzQ+kQPHx8ZozZ44GDRqk//3vf5KkypUra9y4cSpfvvwDHzc2NlapU6eWJJ05c0bZs2d/oOPcuHFDEydO1PDhw28Gn1atWun9999X/vz5H7g+AJ6HS/MDuKONGzeqYsWKateunf73v//p8ccf17x587Rhw4aHCit/53A4HvixqVOnVt++feVyufTSSy/J4XBo7ty5CgkJ0dtvv60rV65YVicA70BgAVKIQ4cOqUWLFqpataq2b9+uzJkz691331VERIRatGjxUAHDXXLmzKnPPvtMYWFhqlq1qi5fvqxhw4apcOHC+vbbb5WEBjEAH0FgAXzc+fPn9cYbbygkJETffPON/Pz81LVrV7lcLr3xxhtKly6dZc/lrgBRqlQprVu3Tl9//bUee+wxHT58WM2bN1ft2rW1b98+tzwnAM9CYAF8VGxsrKZMmaLAwEC99957un79uurUqaNdu3ZpypQpyp07t1uf3+qOjcPhUKtWrRQREaFhw4YpXbp0Wr16tUqWLKmePXvqzJkzlj4fAM9CYAF80PLly1WqVCl169ZNp06dUnBwsH788UctW7ZMoaGhbnve5BjRZMyYUSNGjFB4eLief/55xcfHa9KkSXI6nZo4caJiY2PdXgOA5EdgAXxIRESEGjVqpHr16mn//v3Knj27xo8fr3379qlRo0bJuk7F3c9VsGBBffPNN1q1apWKFy+us2fP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119r06ZNqlixot3lAbZgJISUpnbt2tq9e7cmTJigbNmyae/evapZs6ZatGihw4cP212eTyGw3KfDhw+rVatWqlKlirZu3apMmTJp1KhRioiIUKtWrWiFA2IkhJQlVapU6tWrl6KiotS9e3f5+fnpm2++UUhIiN58801dvnzZ7hJ9AoElic6fP6/BgwcrODhY8+bNk8PhUOfOneVyuTR48GClT5/e7hIB29FhQUr2yCOPaNKkSdq1a5dq1qypq1ev6q233lJISIjmzZvH/4+HRGC5h7i4OH3++edyOp169913de3aNdWqVUu7du3S1KlT9eijj9pdIuBx6LAgJQsNDdWqVav0zTff6PHHH9eRI0fUqlUr1ahRQ7t27bK7PK9FYPkXK1euVOnSpdW1a1edPHlSTqdT33//vVasWKESJUrYXR4AwEM5HA49//zzCg8P14gRI5Q+fXqtX79eZcqU0csvv6xTp07ZXaLXIbDcQVRUlJ577jnVqVNHe/fuVdasWTVu3Djt379fzz33HK8egbug5Q3cLn369Bo2bJgiIiLUsmVLGYahzz77TEFBQfr4449148YNu0v0GgSWW/z111/q27evihYtqh9//FH+/v7q3bu3oqOj1bdvX6VJk8buEgGvQKgHblegQAHNnTtX69atU8mSJXXu3Dn17dtXJUuW1PLly+0uzysQWCTduHFD48ePV2BgoD7++GPFxsaqUaNG2r9/v8aPH68cOXLYXSLgFeiwAP+uWrVq2rFjh6ZMmaJHHnlEBw8eVL169dS4cWP9+uuvdpfn0VJ0YDEMQz/++KOKFSumPn366OzZsypevLiWL1+uH3/8USEhIXaXCHglOizA3fn7+6tr166KiopSnz595O/vrx9++EFFihTRoEGDdOHCBbtL9EgpNrC4XC51795db775pjJmzKjatWvr22+/1a5du1SnTh27ywMA+Lhs2bLpo48+0t69e1WvXj1dv35do0ePVnBwsGbNmqX4+Hi7S/QoDiMJPdzz588rS5YsiomJUUBAQHLUBcAL7d69W6VKlVKePHl07Ngxu8sBvEZCx79fv343R0MVK1bU+PHjVa5cOZurc6+kZowU22EB4D6MhID743A49Nxzz+nAgQMaPXq0MmXKpC1btqh8+fLq2LGjTpw4YXeJtiOwALAMi26Bh5M2bVoNHDhQkZGRat++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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from openfe.utils.atommapping_network_plotting import plot_atommapping_network\n", - "plot_atommapping_network(ligand_network)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "94b00e7b", - "metadata": {}, - "outputs": [], - "source": [ - "## Similarly we can visualize the invidual mappings\n", - "\n", - "from ipywidgets import interact, widgets\n", - "\n", - "def display_edge(index):\n", - " view = edges[index].view_3d(spheres=True, show_atomIDs=True)\n", - " view.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "754578ba", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "9c024e52f4e84f9c81ebac14f4c864f2", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(IntSlider(value=0, description='index', max=5), Output()), _dom_classes=('widget-interac…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# traverse through all views\n", - "\n", - "edges = list(ligand_network.edges)\n", - "\n", - "interact(display_edge, index=widgets.IntSlider(min=0, max=len(edges)-1, step=1));" - ] - }, - { - "cell_type": "markdown", - "id": "1586d07f", - "metadata": {}, - "source": [ - "## Creating an AlchemicalNetwork\n", - "\n", - "From one of these defined `ligand_network` objects, we can go ahead and create an AlchemicalNetwork which we can then execute using the OpenFE CLI." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "bbb9e471", - "metadata": {}, - "outputs": [], - "source": [ - "## First let us define our simulation protocol\n", - "\n", - "from openfe.protocols.openmm_rfe import RelativeHybridTopologyProtocol\n", - "\n", - "# We can tweak the settings as necessary, for now we will stick to the defaults\n", - "settings = RelativeHybridTopologyProtocol.default_settings()\n", - "protocol = RelativeHybridTopologyProtocol(settings)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "979654b8", - "metadata": {}, - "outputs": [], - "source": [ - "transformations = []\n", - "\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': openfe.SolventComponent()}\n", - " sysB_dict = {'ligand': mapping.componentB,\n", - " 'solvent': openfe.SolventComponent()}\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=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": "code", - "execution_count": 11, - "id": "af716407", - "metadata": {}, - "outputs": [], - "source": [ - "# Finally we write out the AlchemicalNetwork to disk\n", - "\n", - "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.to_json(transformation_dir / f\"{transformation.name}.json\")" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "328c2303", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "rbfe_benzene_complex_anisole_complex.json\n", - "rbfe_benzene_complex_benzaldehyde_complex.json\n", - "rbfe_benzene_complex_benzonitrile_complex.json\n", - "rbfe_benzene_complex_phenol_complex.json\n", - "rbfe_benzene_complex_styrene_complex.json\n", - "rbfe_benzene_complex_toluene_complex.json\n", - "rbfe_benzene_solvent_anisole_solvent.json\n", - "rbfe_benzene_solvent_benzaldehyde_solvent.json\n", - "rbfe_benzene_solvent_benzonitrile_solvent.json\n", - "rbfe_benzene_solvent_phenol_solvent.json\n", - "rbfe_benzene_solvent_styrene_solvent.json\n", - "rbfe_benzene_solvent_toluene_solvent.json\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/atravitz/micromamba/envs/openfe_env/lib/python3.13/pty.py:95: DeprecationWarning: This process (pid=21630) is multi-threaded, use of forkpty() may lead to deadlocks in the child.\n", - " pid, fd = os.forkpty()\n" - ] - } - ], - "source": [ - "!ls transformations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "da9ccdc9", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "openfe_env", - "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.13.8" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}