From d806ecd62179f5644ae8e8d1c540d037b59090d3 Mon Sep 17 00:00:00 2001 From: AngelRuizMoreno Date: Fri, 17 Sep 2021 23:14:25 -0500 Subject: [PATCH] README --- .../1.-Molecular_Docking-checkpoint.ipynb | 2033 +++++++++++ .../3.-Blind_Docking-checkpoint.ipynb | 2970 +++++++++++++++++ .ipynb_checkpoints/README-checkpoint.ipynb | 30 +- 1.-Molecular_Docking.ipynb | 81 +- 3.-Blind_Docking.ipynb | 8 - README.ipynb | 30 +- README.md | 18 +- 7 files changed, 5077 insertions(+), 93 deletions(-) create mode 100644 .ipynb_checkpoints/1.-Molecular_Docking-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/3.-Blind_Docking-checkpoint.ipynb diff --git a/.ipynb_checkpoints/1.-Molecular_Docking-checkpoint.ipynb b/.ipynb_checkpoints/1.-Molecular_Docking-checkpoint.ipynb new file mode 100644 index 00000000..d1cb8e03 --- /dev/null +++ b/.ipynb_checkpoints/1.-Molecular_Docking-checkpoint.ipynb @@ -0,0 +1,2033 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6951e168-585b-426c-8bd9-bbbef8a1e14e", + "metadata": {}, + "source": [ + "# Molecular docking" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "756603a6-b74c-48e2-a532-0a1a26c56d53", + "metadata": {}, + "outputs": [], + "source": [ + "from pymol import cmd\n", + "import py3Dmol\n", + "\n", + "from vina import Vina\n", + "\n", + "from openbabel import pybel\n", + "\n", + "from rdkit import Chem\n", + "from rdkit.Chem import AllChem, Draw\n", + "\n", + "from meeko import MoleculePreparation\n", + "from meeko import obutils\n", + "\n", + "import MDAnalysis as mda\n", + "from MDAnalysis.coordinates import PDB\n", + "\n", + "import prolif as plf\n", + "from prolif.plotting.network import LigNetwork\n", + "\n", + "\n", + "import sys, os\n", + "sys.path.insert(1, 'utilities/')\n", + "from utils import fix_protein, getbox, generate_ledock_file, dok_to_sdf\n", + "\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "%config Completer.use_jedi = False" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f34f98c3-1454-4f67-92b7-ce9cf054c333", + "metadata": {}, + "outputs": [], + "source": [ + "os.chdir('test/Molecular_Docking/')" + ] + }, + { + "cell_type": "markdown", + "id": "72001c44-17ca-4518-ad7f-d0db24f68063", + "metadata": {}, + "source": [ + "## Fetching the system directly from PDB using pymol" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "050514b3-d554-43ab-ba1e-62c1cb95458b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " PyMOL not running, entering library mode (experimental)\n" + ] + } + ], + "source": [ + "cmd.fetch(code='1AZ8',type='pdb1')\n", + "cmd.select(name='Prot',selection='polymer.protein')\n", + "cmd.select(name='Lig',selection='organic')\n", + "cmd.save(filename='1AZ8_clean.pdb',format='pdb',selection='Prot')\n", + "cmd.save(filename='1AZ8_lig.mol2',format='mol2',selection='Lig')\n", + "cmd.delete('all')" + ] + }, + { + "cell_type": "markdown", + "id": "fe52106e-292c-4ff3-87bc-de5265368853", + "metadata": {}, + "source": [ + "## Protein sanitization" + ] + }, + { + "cell_type": "markdown", + "id": "5dec3aa7-6554-41ba-8a66-1f3e82214235", + "metadata": {}, + "source": [ + "#### Method 1: LePro\n", + "\n", + "Usage:\n", + "\n", + " **lepro [PDB file] [-rot || -metal || -p]**\n", + "\n", + " **-rot** [[chain] resid] align principal axes of the binding site with Cartesian\n", + "\n", + " **-metal** keep ZN/MN/CA/MG\n", + "\n", + " **-metal -p** redistribute metal charge to protein" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "836973a5-248f-43ba-a1f9-345c2cded6b0", + "metadata": {}, + "outputs": [], + "source": [ + "!../../bin/lepro_linux_x86 {'1AZ8_clean.pdb'}\n", + "\n", + "os.rename('pro.pdb','1AZ8_clean_H.pdb')" + ] + }, + { + "cell_type": "markdown", + "id": "e89ca421-ab3a-4af4-8160-bcc9f2334beb", + "metadata": {}, + "source": [ + "#### Method 2: fix_protein (PDBFixer)\n", + "\n", + "**_fix_protein ( params )_**\n", + "\n", + "Params:\n", + " \n", + " - **filename**: _str or path-like_ ; input file containing protein struture to be modified, file extrension must be pdb\n", + "\n", + " - **addHs_pH**: _float_ ; Add hydrogens at user defined pH\n", + "\n", + " - **try_renumberResidues**: _bool_ ; By default PDBFixer renumarets residues starting in 1, this option tries to recover originar residues numbering\n", + " \n", + " - **output**: _str or path-like_ ; output filename, extension must be pdb" + ] + }, + { + "cell_type": "markdown", + "id": "e1e6f4b6-d96a-458b-9b33-3f4846ff3e68", + "metadata": {}, + "source": [ + "```\n", + "fix_protein(filename='1AZ8_clean.pdb',addHs_pH=7.4,try_renumberResidues=True,output='1AZ8_clean_H.pdb')\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "2a4fc4a8-a5bc-4cb1-a329-dc1c52db032b", + "metadata": {}, + "source": [ + "## Ligand sanitization" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c461429c-3036-43a0-8ec9-ba3e854c045f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit WARNING: [15:10:19] 1AZ8: Warning - no explicit hydrogens in mol2 file but needed for formal charge estimation.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m=Chem.MolFromMol2File('1AZ8_lig.mol2',False)\n", + "Draw.MolToImage(m)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3076da38-9420-4e3c-8bb9-4c99eae74f27", + "metadata": {}, + "outputs": [], + "source": [ + "mol= [m for m in pybel.readfile(filename='1AZ8_lig.mol2',format='mol2')][0]\n", + "mol.addh()\n", + "out=pybel.Outputfile(filename='1AZ8_lig_H.mol2',format='mol2',overwrite=True)\n", + "out.write(mol)\n", + "out.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8473f062-aade-45ca-a18b-463545341c41", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAc1ElEQVR4nO3deVRTZ/oH8G+ARBIwBGUHEVHEHURErMe6VkYEnVpAq6NWqWinav3ZWselVeu4MU5r3Udnaj22R4tQD1jRooLYUqWKIJsLEgFZQhCRLSAkub8/LkKMoFECAfJ8Tk9P7pube5/bo9++733vwmEYBoQQQt6Uga4LIISQzo1ilBBCWoVilBBCWoVilBBCWoVilBBCWoViVK89fIj795sW791DRQWyslBd/Vyj6iIhRA3FqF7btQtubsjJaVhcsgRXr2L2bNy40bROUBCSk3VRHCGdBMWovnN1xcqVui6CkM6MYlTfLViAggJERuq6DkI6LSNdF0B0jMPB7t2YOxeTJzc1zp4NY+OGz4WFOqmLkE6DYpRgzBhMnIjt25taTp7EuHENn93ddVIUIZ0GxSgBgJ074e4OExNd10FIJ0TnRgkAWFriiy+QlaXrOgjphKg3qtcmTYKFRcPnkBBIpcjOxtOnyM5uGtQHB6NXL10VSEgnQL1RvTZ9Ojw8cOECFAoYGODLL1FejowMXLvWtM7y5ejdW3clEtLhUYzqu9GjMWUKEhMbFqdOBYBz50DPoSVEQxSj+o4dvJ8717Do5gY7O+TnIyNDh0UR0plQjOq7xu4ni8OBjw8AREfrrCRCOheKUX03bhwEAty8iaKihha1YCWEvBzFqL4zNsaECWAYxMQ0tPj4gMtFQgLKy3VaGSGdBMUoUe9+CoXw9kZ9PWJjdVgUIZ0GxSiBry8AxMRALm9ooXE9IZqjGCXo0wf9+6OsrOmyp2nT6seO/U9u7kJ6/zYhr0QxSgDA1xdcbv3vv+ewi0OHGonFW2Jivk9PT9dpXYR0AhSjBAD8/VO6desZFvYeu8jhcHx8fACco4E9Ia9CMUoAYMyYgQCTnJxc9Oy6p6lTp4JilBANUIwSAOjWrdu4ceMYhol5dt3TlClTuFxuQkJCOV33RMhLUYySBmrdT6FQOHr06Pr6+kuXLum0LkI6OopR0sDX1xdATEyM/Nl1TzSuJ0QTFKOkQZ8+fVxdXcvKyhKfXffExujZs2fpsidCXoJilDRR634OGzbM3t6+qKgoLS1Np3UR0qFRjJImajEqkUjmz5+/aNEiHo+n07oI6dAoRkmTt99+28TEJC0tLTo62s3NzcnJqW/fvv/73/8GDBig69II6bgoRvVObm5uS18ZGxufO3dOKpVGR0enpqbW1dUtXbo0IiKiPcsjpNOhGNUj0dHR9vb2ffv2PXv2bEvrjB07VigUnj59GkBISIhcLp8zZ050NE3WE9IiilE9cubMmcLCQoVC8f7772e0/JKQhISEwsLCPn36HDp06B//+IeZmfnq1Q7nz7dnpYR0JhSj+oJhmF9++QWAj49PZWXlzJkznzx50uya4eHhAIKCgjgczrZt2xYuvJWZOTQgAAkJ7VowIZ0Fhy4J1BPJyckeHh52dnZZWVlWVlbV1dVjxoyJj483NDRUXY1hmN69ez98+PD69euenp4AGAZLluDIEQiFuHQJnp46OgBCOirqjeqLM2fOAPD396+qqqqpqeFwOAkJCRs2bFBb7erVqw8fPnRychoxYgTbwuHg4EHMmoXKShw4gG3bmlbeuRP37mHLFuTkNDVu3oy8vDY+GEI6EopRfcGO6P39/c+ePatUKr29vXk83s6dO0+cOKG6GjuiDwgI4HA4jY2Ghjh+HOfOgcvFxo1NLw2NjERREX76CcXFTVs4cQJSadsfDyEdBsWoXiguLk5KSuLz+RMmTGC7pfPnz//6668Zhlm0aNH169fZ1RiG+fnnnwEEBASobYHLbXjxcnAwVqyATNau9RPSkRnpugDSHs6cOaNUKidPnmxoaHjx4kUOh+Pn5+fg4JCamnr48OGAgIDr169bWVklJibm5uY6ODh4eXm1tCkPD8jl2LIF27c3NV650vR+5qqqNj4YQjoYilG90Diij4uLq6ysHD58uIODA4B9+/bduXPnypUrM2fOjI2NZa+0DwwMVB3Rv2j7dgwdinnzmlpu3kRhYcNn6qgSfUMx2vU9ffr00qVLHA7H19d3+/btAPz9/dmvuFxuWFjYyJEjExISVq5c+euvv6K5Eb0aS0ts3oxVq5paVq7EqFENn+m5ekTf0LnRru/SpUtVVVUjRoywt7dn719qjFEA1tbWkZGRAoHg4MGDYrHY3t7e29v7ldtcvBhlZUhNbXGFigq0fNMpIV0KxWjXx84p+fn55efnl5eX29raenh4qK4wfPjwQ4cOAeBwONOmTTMwePWfCgMDHDyI2trmv83Kwocf4tgx/P3vWqifkA6OBvVd34MHDwBMmzbNwcFBKpWKxeIXg3LevHlRUVGRkZGWlpYv2dTWrWh8Zp6HBx48gKUlLl5Ejx5N68TFoWdPBAXB0BATJmj3UAjpiKg32vWxL/sUiUQAjIyM+vfv3+xqvr6+9fX19+/ff8mmLCwgFDYt9uoFY2PY2ED1eaS2tuDxYGiIy5fplieiFyhGuz5HR0cAN2/efPlq7G1LSUlJWtlpXByOH8fWrVrZGCEdGsVo16dhPg4aNIjP52dnZ7f0yBLN/fIL3nsPBgb45JNWbomQToDOjXZ97BNGbty4odYul8tv3bollUrZd4cYGRkNGzYsMTExJSVl/Pjxrdmjnx8eP27NBgjpTKg32vWxMZqUlKRUKlXbc3NzPT09Fy1a1NjCzuBra1xPiJ6gGO36bGxs7O3ty8vLs7OzVdudnZ179OghkUiKnt3IycboK8+iEkJUUYzqBfb0qNq4nsPhuLu7QyU3tTvLRIieoBjVCy3lo9oofsiQIcbGxllZWZWVle1cISGdF8WoXmhplkltFM/lcocMGaJUKlNSUtq5QkI6L4pRvTBy5EgAN2/eVJtlerGXSrNMhLwuilG9YGlp2atXr8rKynv37qm2u7i4mJmZ5efnFz97fj3NMhHyuihG9UXjZU+qjY2zTMnJyWwLzTIR8rooRvWFhrNMw4YN4/F4d+7cqaKn2BOiGYpRfdHsNU94YRTP4/EGDx6sVCpTX/IwUUKICopRfcEO6pOTkxUKhWo7zTIR0koUo/rCwsKid+/eVVVVd+/eVW13dXXt3r17bm7uo0eP2BY2WGmWiRANUYzqkWavHjUwMHBzc4PKLBP1Rgl5LRSjekTDWSY3Nzcul5uZmSmjl3wSogGKUT3S7DVPeGGWydjYeODAgQqFgmaZCNEExage8fT05HA4ycnJcrlctb2lWSY6PUqIJihG9Yi5uXmfPn1kMtmdO3dU2wcMGGBqampsbFz77FWfNMtEiOYoRvVLs7NMRkZGJSUlGRkZxsbGbAvNMhGiOYpR/dLSLFNjgLLc3d2NjIwyMjJqW3oVPSHkGXoXk35p6V4mNQKBYMCAAYMGDZLJZGoJSwhRQ71R/TJixAj2hSK5ubkA8vLyJk2adOvWLbXVUlJS0tPT4+LihKqvpSeENIdiVL+IRKI5c+bcvn179uzZ9fX1oaGhsbGxc+bMqa6uVl3t1KlTAAICAoyMaLxCyCtQjOqdtWvX9unT59q1a+vWrdu1a5ebm1tmZuayZctU12FjNDAwUEc1EtKZcBiG0XUNpL39+eefY8eOra+vP3369MCBAz09PSsrK7///vsFCxYAuHnz5ogRI6ytrQsKCgwNDXVdLCEdHfVG9ZGXl9fWrVsZhlm4cCGPx9uzZw+Ajz/+ODMzE0BYWBiAgIAAylBCNEExqqc+/fTTGTNmlJWVzZo1a86cOQsWLKiurg4KCpLJZOHh4QCCgoJ0XSMhnQMN6vVXWVmZh4dHTk7O559//uWXX3p5eWVmZk6fPj0qKsrGxiY/P596o4RogmJUr6meJO3Xr5+Xlxf7VKcVK1Z8++23uq6OkM6BBvV6zcvLa8uWLexJUlNT03379rHtNEdPiOYoRvXd6tWrG0+S9u/fH4Ctre1bb72l67oI6TQoRvUdh8M5evRo7969ExMTV61aBWDWrFkGBvQHgxBN0blRAgAJCQnjx49nn0OakJBAvVFCNEcxShps3rx57969QqEwOzubw+HouhxCOg2KUdKgrq5OJBLV1taWlpaam5vruhxCOg06BUYa8Hg8Dw8PhmESExN1XQshnQnFKGkyevRoAFevXtV1IYR0JhSjpAnFKCFvgM6NkibFxcU2NjZCofDx48d0JyghGqLeKGlibW3t5ORUUVHBPuqJEKIJilHyHBrXE/K6KEbJcyhGCXldFKPkORSjhLwummIiz6mvrxeJRDU1NVKp1MLCQtflENIJUG+UPIfL5Xp6etJF+IRojmKUqKNxPSGvhWKUqKMYJeS10LlRok4qlVpbW5uYmDx58sTIyEjX5RDS0VFvlKizsrLq27dvdXV1enq6rmshpBOgGCXNoHE9IZqjGCXNoBglRHMUo6QZFKOEaI6mmEgzFAqFSCSqqqqSSCTW1ta6LoeQDo16o6QZhoaGI0eOBEAX4RPyShSjpHk0ridEQxSjpHkUo4RoiM6NkuaVlpZaWloaGxuXl5dzuVxdl0NIx0W9UdK8nj17uri41NTUpKam6roWQjo0utWPtMjd3f3evXuLFy/u168fAIVCUVFR0fgtwzBPnjxRXb+srEx1sby8XKlUNi5WVFQoFAo+n3/+/Pm33367jWsnpP3QoJ40TyqVenl5yWSykpIS7W556tSp0dHR2t0mITpEg3rSjJKSkgkTJuTm5pqbmy9btmzSpEk9evTQ1sYtLS21tSlCOgIa1BN1T548mTp1amZm5tChQ2NjYxufgV9YWJiUlJSZmZmRkZGUlHT79u03G8qonQogpLOjQT15Tnl5+TvvvHP9+vX+/ftfvnzZ1tb2JWumpaU1BuuNGzeePn2qyS7MzMxKS0sNDQ21VzUhukQxSppUV1dPnTr1t99+69evX3x8vJ2dnea/ra2tTUtLS0lJSU5OTklJSU1Nra6ubmnlM2fO+Pn5aaNkQnSPYpQ0kMlk06ZNu3z5sqOjY3x8vJOTU2u2plAosrKy2FRlg5WdquLxeHV1ddOnT4+MjNRO3YToGsWojuTk4NNPkZICpRIDBiA0FEOH6rCcmpoaPz+/2NhYBweH+Ph4Z2dnre+ioKAgOTnZ0tJy3Lhxcrn8wYMHvXr10vpeCGl/NFOvC3V18PHByJG4dw9iMQIDMXkyHj/WXTl1gYGBsbGx1tbWFy5caIsMBWBvb+/n5zdq1KgZM2YoFIpjx461xV4IaX/UG9WFmBj83/8hPR0cTkPL5MmYMwdublAo4OkJg/b731t9fX1AQEBUVJSlpeXly5cHDRrU1nu8ePHiO++84+joKBaLaaKJdAHUG9WFP//EoEFNGQpg+HDcvYutWzFqFOztr61fHxkZKZPJ2roQhUIxf/78qKgokUj066+/tkOGApg0aVK/fv3y8vIuXrzYDrsjrPffx5QpaOw1ublBLMaAASgsbFrHxQXFxTqprnOjGNVUWFhYWFhYfHx8ZmamVCp9w178wYPo1Qvff4+YGHh7Izu7ob2+Hjwe+veHkxMkkt1xcX/9618tLCx27NihxUNQo1AoFixYcPLkSTMzswsXLgwfPrzt9qWKw+EsWrQIwJEjR9pnjwRAVRVu3cLRow2L5eVQKFBcDIWiaR21RaIhuvxeU6tXr87Ly2tcNDQ0tLCwsLS0tLCwsLW17W1nt93MDFZWsLaGpSUsLGBjAzOz5zZx5Qo2b8YffyA/Hx98AD8/vPcekpPB4SAxEXPmYOZM7NiBtLS3zp9/oFDcuHGj7W74YRjmo48++vHHH4VCYUxMjKenZxvtqFkLFy7cuHFjZGRkUVHRSy5NJdq1bh2++ALTp+PZHRVEO+jcqKZWrVqVl5dX8syjR49Uv3VxcrqXk6P+Gx4PlpawtISNDf7yF2RnQyjEP/8JpRLe3vD2xg8/YM8e7N+P9HT06IG8vIVmZtEM86S2tq6urkePHpWVlaamps7PDBo0aPDgwS4uLkKhsDXHwjDMxx9/fPDgQYFAcO7cOZ08KGTmzJmnT5/esWPHmjVr2n/vesjfH0uW4I8/UFSEo0fh5IQLF+DlhcmTIRA0rHPiBHJy8DqXCxOAYvSNyeVyNkylUmlxcbFRZWVQfj4kEpSUNPwjkaCysukHISEoLERAABYsAIDSUnzxBY4dg0AAlUQOACIAABwOp3v37nK5vNkzpDY2Nv379+/Xr5+Li0vjv01MTDQsfvXq1bt27eLz+WfPnp0wYcIb/0dojXPnzvn6+jo7O2dlZRm045Sa3mJjdOJEDB6MH37A3LkNMfrf/6JxzDN1KrKyKEZfGw3q35CRkZGtre0rBqS1tXj0CMXFkEphZ4fQUDQ+aK5nTxw4gEuXsG0biopgbg6RCCYm++/dc75160RUVH5+/oYNG1avXl1WViYWizMyMjIzM8VisVgsvnv3rkQikUgkV65cUd2bubm5aqfV2dnZ1dXV1NRUrai1a9fu2rWLx+OFh4frKkMB+Pj49O7dWywWX758eeLEiboqQx/k5uLGjYbPAgG++QYrVzbNNXl5ofH6Xbpu4s1Qb7QdhYbi6lWcPt2wKBZj2DDk50MkenHdlJQUGxsbGxubF79iGCY/Pz8rK+v+/fuq/37xlnYOh+Pg4KDaab148eL+/fvZDPX399f2Eb6ezZs3b9q0afbs2SdOnNBtJW+sqqqqoKCgpKSkuLi4qKiopKREIpH4+/sPGTKklbeBacupU1iyBDIZvL3x2Wdgb8H188PZs7h3D15eSE1tilGhEBkZiI9HWRnmzoX2nurVxVGMtqOyMowYgVmzMHs2pFKsWQM/P3z1lfY2X6baaRWLxbdv31Y7J2Bra/vo0aOffvrp3Xff1dZ+31h+fr6Tk5OhoWF+fn7HfHpeTU1NWVlZUVFRYWFh44fGxYKCgvLy8hd/1atXL4lEsnDhwi1btlhZWbV/2SyJBEuWICoKAAID0aMH5s7F2LEAIBZj9mxERGD+fJw8icZXaI8bh5UrUVMDR0fs349O+3+39kYx2r6Ki3HgAG7dQo8emDIFs2e36d4UCkVeXp5qp9XX19fV1bXjDKL9/f1/+eWXf//736tWrdJhGaWlpSdOnGD7khKJpKSkpKioqLi4uKam5uU/NDExsbGxsba2trKysrOzs7Ky6t69+9WrV3/++WelUikSidauXbt8+XI+n98+B9Lo1KmkkJART56gZ0/s349Zs17v5xUV+NvfGiKYvBLFKNGlqKioGTNmuLq63r59m6N6P0J7KSsr27RpU0REhFQqra+vV/vW2NjY3Nzczs7O1tb2xQ92dnbm5ubNbjYzM3PTpk2nTp0CYG9v/+WXXwYHB7fPLVtSqXTp0qWRkZFDh8ba2Y07cgT29q+9keXLERCAcePaoL4uiSFEd+rr6+3t7QFcuXKlnXetVCq/++479qHU3bp1CwwM3LRp04EDB06fPp2QkHD//v2qqqpW7uLixYseHh7sX7SBAweGhYVppfKX+Oqrr0QiEQCRSPTjjz+/wRaqq5m//52JitJ6aV0ZxSjRsQ0bNgCYN29ee+707t27kyZNYgNu3LhxmZmZbbQjpVIZFhbWt29fdl9vvfXW77//rpUtP378OCcnJzU19ffff4+Ojj5+/LiPjw+7l169erHvJngDJ08yf/sbExLCrFmjlTL1Ag3qiY7l5eU5OzvzeLyCgoKWxshaJJPJQkNDt2/fXldXZ2Njs3Pnznnz5ml4PkEmk6mdPC0pKSksLJRKpTweLzY2tqUf1tTUfPDBB6dPn66vr+dwOAEBAdu2bWPft9q4QtnzamtrX9JYUlIil8vV9uLh4ZGeni6Xy5VKpaOj4759+3R+MYaeoBgluufj4xMTE7Nnz57ly5e36Y7OnDmzYsWKnJwcAwODuXPnfvPNNz179nxxtbi4uDt37kilUqlUWlhY2Hg900ue5y8QCFr6Njk5OTg4ODk5mcPhzJw5Mzo6uqamhsvl2tnZVVdXV1RU1NXVvcGxmJmZCVUwDGNgYBAaGqpQKEJCQq5fv25hYeXjcz80tDtdTt/WKEaJ7oWHhwcGBg4dOjQ1NbWNdlFQULBy5crw8HAA7u7uhw4dGjVqVEsrs7H+Yjufz7eysrK1tbWysrK2traxsbGysmqcqXd1dVVbv7a2dseOHWzPt0+fPv/5z3/Gjh27fv363bt3GxkZqaYnO5fViM/nq7WoNVpaWnK5XNV9jR8/Pj4+3tbWds+ePe++++7+/fsjI21iY4PMzLBtG5Yubc+HL+of3Z5TIIRhmPr6evZ+sGvXrrXFxnfv3s3ezcXlctevXy+Xy1/+k927dy9evPiLL77Yu3dveHj4b7/9dufOnYqKitfab0JCwsCBAwEYGBiEhIRUVlY2trDPuLp16xZ7TVUrDq5Jenr6mDFj2L/Ufn5+ubkPHz5kZsxgAAZgRo9m0tO1sh/SDIpR0iF8/vnnAIKDg1u5HZlMVlpamp2dnZaWlpiYeOTIkcaHqLLXG3G53KVLlxYUFGil7GZVV1evWbOGfVDA4MGDr169qtri4uJy+fLlttivUqk8duxYz549+Xy+q+v9HTsYuZyJimIcHRkOh5kyhamtbVjz0CHm/Hlm714mLq7p57t3M/HxbVFX10eDetIhZGdnu7i4CASC7OxshULROJfy4odmG9kPpaWlaucZHRwc8vPzRSLRoUOHxowZs2XLlu+++04ulwsEgg8//HD9+vVav8vo/PnzS5YsycvL43K5q1at2rx5c1xc3NKlS3Nzc42MjD799NPNmzd369ZNuztVJZFI/vWvxK+/ngHAwwNHjqBfPyxbhrAwrF2LjRsBICQEbm747Te88w6Cgxt+GBAAPz988EHbldZ16TrHCWkwceLE1ucLe/bQ2dl58ODBnp6e3t7e7Cy8SCTaunVrVVXVnTt3AgMD2cbu3buvWbOmvLxci0cREhICwN3dPSkpqaysjF1sbNHijl7u7FnGyYkBGEND5quvmG+/ZebNY+ztmbt3GYZhFi9m9u1jZs1i/vvfpp+89x5z9Gi7FdilUG+UdBQPHjwIDw/fvn27UCgUCAQCgUAkEvH5fD6fz06wCAQCMzMzExMTPp8vFApNTU0FAoGpqalQKOTz+SYmJmZmZi8+cy8tLW3Lli3sDUUWFhafffbZJ598kp6evn79enYeydbWNj09vYeWnsNRXl5+/Pjxjz76KDo6eunSpYWFhXw+f+PGjZ999lk7v3hKJkNoKLZtw3ff4fFjZGdj4EBERODChabeqIkJGh82u28fPv6YeqNvgmKU6IU//vhj7dq17KMFHR0d169fHxwcfO3atXXr1llZWbEhqy0SiWTZsmUREREAxo4de+TIkRcn8dvN3btwdcWePcjOxjffYNQorFqFuLiGGK2pQeO7Y8LC8PnnFKNvRNfdYULaz4ULF9zd3dk/+ezdmUql8nWn4FtSU1MjlUoPHz7MdmzNzMx2796tUCi0svFW+vZbZsUKhmGY69eZ3r2ZuXNpUK9N9NhmokcmT56clJQUERGxbt2627dvBwUFeXl5bdu2rfHGUAA1NTXNTme9uPjiVwDs7e0fP348ffr0gwcP2nW8C989PeHri6NHMXq0rkvpQihGiX4xMDAIDAycMWPG4cOHt27d+ueff06ePNnZ2bmurq6qqurJkydvvGUej2dqahoSEuLq6jrrdZ9M1462bkVEhK6L6Fro3CjRXzKZbO/evT/88AN7uyfbaGxsrHq/kNoNRS19xc6D6fZwXuLpUygUTa+uq66GkREUChgZgcdraJTJnlskmqMYJfqOYRixWMzlcrt37y4SiXTy2FPSqVGMEkJIq9DjCgghpFUoRgkhpFUoRgkhpFUoRgkhpFX+H9OrwemR9VZUAAACHXpUWHRyZGtpdFBLTCByZGtpdCAyMDIxLjAzLjUAAHicbVBdSBRhFP3m22lm3ZncH2dnZ3chh6TaZRUDi4Lo4QwE/UDUi0SEDOXDEP2hvchCFGhDxWRSmIW+lEJBSfi4RS9F9VSIhkgUhG3L1kY9FEWadFuTKevC5V7OPefcy/14//YrRqFSCmwhUpRpypOCZG+kGhBE2aw2PLAUEf5BeCBoZqqNZFerT/UHvyWLDB8w1y4A1cqprvt1mOAD/1f8MTCXEnzm3wyFcYczxeaiLcoOl0O2HGY1y1lIcbhimGrM4bURFq4VhXAdi0SZGrWjCYfHNLsuybS4qekOF+JmIJ7hesJeZphBI8OlZIbXJE2NS0wJySKX1GhC12IJYfG/qbZCEc++duHaFg8vhw0reKsRDS9cbFffYPDhEbQV+lHKG5bYugK7vAGcwVvYxT0ozfbD1T+h70MHyqsPIK89R3ZfM7a+Povxle+Qc3eS3iOfMuYnXTh9nZi6PkG6HD7/GMT+SAWM7SVeN3mUMTZ0FIVt3eh0ZGvu5hra24PK7ic4XGrC9NMh2v0NTWPrcaejF9poBTcebUC62cODL3M4d6ievD1Ip0Qr55qo7zlPuGppo1l8P3GavIto35TF4x2X0H43bM2MNCA01YvKeNzaHFpFt18gP9UqzaZx9coAWlpka34yRX+5jK7ye8yM5CG2HsfwsWkcvNdIfheh/wTP4KhCXXpxRgAAAgB6VFh0TU9MIHJka2l0IDIwMjEuMDMuNQAAeJyVVDmO3TAM7f8pdAKBi8SlDPKnCmYCpEiRG6TP/RHapjQuEszQcEFK5vN73PDLL3u04/nx/Pb7T9sPPx+PRtJIW4N/vu7efhIAHPFkXVHiuOHsQnxa2mU6tK/tfxD390Bh6yh4xkJXp9OS7hbW26dRgsuEi8vonlys28AqFzq5NO/mF553EC9yUbt0cJ9TFhflEhfogJjZRePUhq4lLtKFZ2Y3BGWN+LC+fx7FO4mesdQdLFGUStkNFGRc9VVPbXRUq6RozKVIh2eNhEZR0UwdHLEzWU2RoiIauLpOZaFwCYW526RUNDIvcs1WgcvsMCBRTFZelGpc8Or2iMXO2bvanauVnjYTZdhCkWF3FPyYi9CpKKbRZayug1nMLpJkXoDXljKsoUSf7uwKrH4xpFJeYjPAqvTUa6Jic7EWuXjqgJieNY1uUELR2xwxzuQCWEOJ3eQja/Q+jaDVGgX5RJGdF/fqNA5bW0UzL1E3rfWuxrZdlVZf23vMSqWjtbm1sRyk7cTx3E5Yth2LYbk7ck3II3jEetnOHS0smvuGI/P7ZkZL7Bs5/MPB0zk6MG80tN0BNp2waGzHG21uEU2bWxwT3Z132XS7ibPDoeszvkE3uUlofjrXZ03P/9DKwf7pa2svb8/HX4XrYYq+iM+5AAABRnpUWHRTTUlMRVMgcmRraXQgMjAyMS4wMy41AAB4nEWRS2rEQAxEr5KlDUa0pNaPJhDwJquZA4SsfI05fCQ5Ict+Lqmq5PN5bu/P/fw6Pz6/t/O88LquLdljf+zXhXuDf4Jvr40ExjxwgGscGGCkixSmSEGbDZXmIgP0ZqEHeiqohMotLGbAOetggwqJWemEbVGAeOoQprdQpy9GGOWJwNIwGAsqHZH7ZiEbspgBSWvjYC7o2NBTprdHhC4WwJjJfjMPk2JRMwOIvC3S1v7KMUoNj3T1tMCc9eoRlauZ4l04+2jOUi2kvpYOKeZIHUW68bQoaKjVmDSzEcRoZyPs23gqGUT6hm5cUEa+JgRxw3krMaHkNbqzSvTOia00LSPhNpoepbSqmPkMCyJjh7b+RsSL84CI9ULn2oJx/5kKyGnUjUR1f/0ADQl4IaZ2VpwAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m=Chem.MolFromMol2File('1AZ8_lig_H.mol2')\n", + "m" + ] + }, + { + "cell_type": "markdown", + "id": "f1db2b5f-d083-4640-8b29-8b6ee4ba2d37", + "metadata": {}, + "source": [ + "## System visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "77c37840-7880-4a12-84a3-feaeb794e726", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

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

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "view = py3Dmol.view()\n", + "view.removeAllModels()\n", + "view.setViewStyle({'style':'outline','color':'black','width':0.1})\n", + "\n", + "view.addModel(open('1AZ8_clean_H.pdb','r').read(),format='pdb')\n", + "Prot=view.getModel()\n", + "Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})\n", + "view.addSurface(py3Dmol.VDW,{'opacity':0.6,'color':'white'})\n", + "\n", + "\n", + "view.addModel(open('1AZ8_lig_H.mol2','r').read(),format='mol2')\n", + "ref_m = view.getModel()\n", + "ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.2}})\n", + "\n", + "view.zoomTo()\n", + "view.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e4114eb4-1614-44df-b837-f695bd3ead01", + "metadata": {}, + "source": [ + "## Docking with Vina" + ] + }, + { + "cell_type": "markdown", + "id": "f79f6541-a4ee-44e8-b837-f939ce818ef2", + "metadata": {}, + "source": [ + "### Protein preparation" + ] + }, + { + "cell_type": "markdown", + "id": "29d06de0-20b4-4af5-baf5-30c1d25ccfc4", + "metadata": {}, + "source": [ + "Usage: \n", + "\n", + " **prepare_receptor -r filename**\n", + "\n", + " Description of command...\n", + " -r receptor_filename\n", + " supported file types include pdb,mol2,pdbq,pdbqs,pdbqt, possibly pqr,cif\n", + " Optional parameters:\n", + " [-v] verbose output (default is minimal output)\n", + " [-o pdbqt_filename] (default is 'molecule_name.pdbqt')\n", + " [-A] type(s) of repairs to make:\n", + " 'bonds_hydrogens': build bonds and add hydrogens\n", + " 'bonds': build a single bond from each atom with no bonds to its closest neighbor\n", + " 'hydrogens': add hydrogens\n", + " 'checkhydrogens': add hydrogens only if there are none already\n", + " 'None': do not make any repairs\n", + " (default is 'None')\n", + " [-C] preserve all input charges ie do not add new charges\n", + " (default is addition of gasteiger charges)\n", + " [-p] preserve input charges on specific atom types, eg -p Zn -p Fe\n", + " [-U] cleanup type:\n", + " 'nphs': merge charges and remove non-polar hydrogens\n", + " 'lps': merge charges and remove lone pairs\n", + " 'waters': remove water residues\n", + " 'nonstdres': remove chains composed entirely of residues of\n", + " types other than the standard 20 amino acids\n", + " 'deleteAltB': remove XX@B atoms and rename XX@A atoms->XX\n", + " (default is 'nphs_lps_waters_nonstdres')\n", + " [-e] delete every nonstd residue from any chain\n", + " 'True': any residue whose name is not in this list:\n", + " ['CYS','ILE','SER','VAL','GLN','LYS','ASN',\n", + " 'PRO','THR','PHE','ALA','HIS','GLY','ASP',\n", + " 'LEU', 'ARG', 'TRP', 'GLU', 'TYR','MET',\n", + " 'HID', 'HSP', 'HIE', 'HIP', 'CYX', 'CSS']\n", + " will be deleted from any chain.\n", + " NB: there are no nucleic acid residue names at all\n", + " in the list and no metals.\n", + " (default is False which means not to do this)\n", + " [-M] interactive\n", + " (default is 'automatic': outputfile is written with no further user input)\n", + " [-d dictionary_filename] file to contain receptor summary information\n", + " [-w] assign each receptor atom a unique name: newname is original name plus its index(1-based)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d182cce2-1805-42ff-bbdd-53e3b5a9fe75", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "set verbose to True\n", + "set receptor_filename to 1AZ8_clean_H.pdb\n", + "set outputfilename to 1AZ8_clean_H.pdbqt\n", + "read 1AZ8_clean_H.pdb\n", + "setting up RPO with mode= automatic and outputfilename= 1AZ8_clean_H.pdbqt\n", + "charges_to_add= gasteiger\n", + "delete_single_nonstd_residues= None\n", + "adding gasteiger charges to peptide\n" + ] + } + ], + "source": [ + "!../../bin/prepare_receptor -v -r 1AZ8_clean_H.pdb -o 1AZ8_clean_H.pdbqt" + ] + }, + { + "cell_type": "markdown", + "id": "8203e23c-a4be-4b29-b609-b543d86e1b56", + "metadata": {}, + "source": [ + "### Ligand preparation" + ] + }, + { + "cell_type": "markdown", + "id": "f9473d92-ce0b-4c64-95a1-d7188b4f6225", + "metadata": {}, + "source": [ + "#### Method 1: ADTools binaries\n", + "\n", + "Usage: \n", + "\n", + "**prepare_ligand -l filename**\n", + "\n", + " Description of command...\n", + " -l ligand_filename (.pdb or .mol2 or .pdbq format)\n", + " Optional parameters:\n", + " [-v] verbose output\n", + " [-o pdbqt_filename] (default output filename is ligand_filename_stem + .pdbqt)\n", + " [-d] dictionary to write types list and number of active torsions\n", + " [-A] type(s) of repairs to make:\n", + " bonds_hydrogens, bonds, hydrogens (default is to do no repairs)\n", + " [-C] do not add charges (default is to add gasteiger charges)\n", + " [-p] preserve input charges on an atom type, eg -p Zn\n", + " (default is not to preserve charges on any specific atom type)\n", + " [-U] cleanup type:\n", + " nphs_lps, nphs, lps, '' (default is 'nphs_lps')\n", + " [-B] type(s) of bonds to allow to rotate\n", + " (default sets 'backbone' rotatable and 'amide' + 'guanidinium' non-rotatable)\n", + " [-R] index for root\n", + " [-F] check for and use largest non-bonded fragment (default is not to do this)\n", + " [-M] interactive (default is automatic output)\n", + " [-I] string of bonds to inactivate composed of\n", + " of zero-based atom indices eg 5_13_2_10\n", + " will inactivate atoms[5]-atoms[13] bond\n", + " and atoms[2]-atoms[10] bond\n", + " (default is not to inactivate any specific bonds)\n", + " [-Z] inactivate all active torsions\n", + " (default is leave all rotatable active except amide and guanidinium)\n", + " [-g] attach all nonbonded fragments\n", + " [-s] attach all nonbonded singletons:\n", + " NB: sets attach all nonbonded fragments too\n", + " (default is not to do this)\n", + " [-w] assign each ligand atom a unique name: newname is original name plus its index(1-based)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "35c34131-bda2-43ac-8a44-932d61016e7c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "set verbose to True\n", + "set ligand_filename to 1AZ8_lig_H.mol2\n", + "set outputfilename to 1AZ8_lig_H.pdbqt\n", + "read 1AZ8_lig_H.mol2\n", + "setting up LPO with mode= automatic and outputfilename= 1AZ8_lig_H.pdbqt\n", + "and check_for_fragments= False\n", + "and bonds_to_inactivate= \n", + "returning 0\n", + "No change in atomic coordinates\n" + ] + } + ], + "source": [ + "!../../bin/prepare_ligand -v -l 1AZ8_lig_H.mol2 -o 1AZ8_lig_H.pdbqt" + ] + }, + { + "cell_type": "markdown", + "id": "0c3d96a3-2f37-4710-b132-b4b160fd76a3", + "metadata": {}, + "source": [ + "#### Method 2: Meeko" + ] + }, + { + "cell_type": "markdown", + "id": "4bcf45df-7781-4243-bc89-881693c03875", + "metadata": {}, + "source": [ + "```\n", + "mol = obutils.load_molecule_from_file('1AZ8_lig_H.mol2')\n", + "\n", + "preparator = MoleculePreparation(merge_hydrogens=True,hydrate=False)\n", + "preparator.prepare(mol)\n", + "\n", + "preparator.write_pdbqt_file('1AZ8_lig_H.pdbqt')\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "c2e2b7a0-8e6d-4214-9997-d5cb363937ea", + "metadata": {}, + "source": [ + "#### Method 3: Pybel" + ] + }, + { + "cell_type": "markdown", + "id": "f0141f8b-86cf-4450-95d9-93dc58a34a1b", + "metadata": {}, + "source": [ + "```\n", + "ligand = [m for m in pybel.readfile(filename='1AZ8_lig_H.mol2',format='mol2')][0]\n", + "out=pybel.Outputfile(filename='1AZ8_lig_H.pdbqt',format='pdbqt',overwrite=True)\n", + "out.write(ligand)\n", + "out.close()\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "86513681-d4c6-438c-aa98-b3aa7513f830", + "metadata": {}, + "source": [ + "### Box definition" + ] + }, + { + "cell_type": "markdown", + "id": "5c5d6834-ff67-48fa-85c7-e7e264a2438f", + "metadata": {}, + "source": [ + "**_get_box( params )_**\n", + "\n", + "params:\n", + "\n", + " - **selection**: _str , pymol_selection_; The selection for docking box, can be atom, resn, resid, or any other pymol selection\n", + " \n", + " - **extending**: _float_; value to extend the boundaries of the selection\n", + " \n", + " - **software**: _str , 'vina','ledock', 'both'_ ; Depending on selected software the funtion will provide the box coordinates in vina, ledock, or both formats" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2c1b8f34-3443-4656-8c2e-0de373df7aef", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'center_x': 31.859049797058105, 'center_y': 13.347449779510498, 'center_z': 17.06589984893799} \n", + " {'size_x': 24.56949806213379, 'size_y': 18.123299598693848, 'size_z': 17.374399185180664}\n" + ] + } + ], + "source": [ + "cmd.load(filename='1AZ8_clean_H.pdb',format='pdb',object='prot')\n", + "cmd.load(filename='1AZ8_lig_H.mol2',format='mol2',object='lig')\n", + "\n", + "center, size= getbox(selection='lig',extending=5.0,software='vina')\n", + "\n", + "cmd.delete('all')\n", + "\n", + "print(center,'\\n',size)" + ] + }, + { + "cell_type": "markdown", + "id": "d9e3cd32-f577-4f76-b7e1-328a2f65c818", + "metadata": {}, + "source": [ + "### Docking" + ] + }, + { + "cell_type": "markdown", + "id": "36d185a4-71c2-4c6a-9a56-0ac8f60b0ee8", + "metadata": {}, + "source": [ + "#### Method : vina" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "732c4d41-a58a-479f-95c5-024a48b4eae1", + "metadata": {}, + "outputs": [], + "source": [ + "v = Vina(sf_name='vina')\n", + "\n", + "v.set_receptor('1AZ8_clean_H.pdbqt')\n", + "\n", + "v.set_ligand_from_file('1AZ8_lig_H.pdbqt')\n", + "\n", + "v.compute_vina_maps(center=[center['center_x'], center['center_y'], center['center_z']], \n", + " box_size=[size['size_x'], size['size_y'], size['size_z']])\n", + "\n", + "'''\n", + "# Score the current pose\n", + "energy = v.score()\n", + "print('Score before minimization: %.3f (kcal/mol)' % energy[0])\n", + "\n", + "# Minimized locally the current pose\n", + "energy_minimized = v.optimize()\n", + "print('Score after minimization : %.3f (kcal/mol)' % energy_minimized[0])\n", + "v.write_pose('1iep_ligand_minimized.pdbqt', overwrite=True)\n", + "'''\n", + "\n", + "# Dock the ligand\n", + "v.dock(exhaustiveness=10, n_poses=10)\n", + "v.write_poses('1AZ8_lig_vina_out.pdbqt', n_poses=10, overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "id": "26f92461-7734-4722-abef-cad651554c97", + "metadata": {}, + "source": [ + "#### Method 2: smina\n", + "\n", + "Correct usage:\n", + "\n", + " Input:\n", + " -r [ --receptor ] arg rigid part of the receptor (PDBQT)\n", + " --flex arg flexible side chains, if any (PDBQT)\n", + " -l [ --ligand ] arg ligand(s)\n", + " --flexres arg flexible side chains specified by comma\n", + " separated list of chain:resid or\n", + " chain:resid:icode\n", + " --flexdist_ligand arg Ligand to use for flexdist\n", + " --flexdist arg set all side chains within specified distance\n", + " to flexdist_ligand to flexible\n", + "\n", + " Search space (required):\n", + " --center_x arg X coordinate of the center\n", + " --center_y arg Y coordinate of the center\n", + " --center_z arg Z coordinate of the center\n", + " --size_x arg size in the X dimension (Angstroms)\n", + " --size_y arg size in the Y dimension (Angstroms)\n", + " --size_z arg size in the Z dimension (Angstroms)\n", + " --autobox_ligand arg Ligand to use for autobox\n", + " --autobox_add arg Amount of buffer space to add to auto-generated\n", + " box (default +4 on all six sides)\n", + " --no_lig no ligand; for sampling/minimizing flexible\n", + " residues\n", + "\n", + " Scoring and minimization options:\n", + " --scoring arg specify alternative builtin scoring function\n", + " --custom_scoring arg custom scoring function file\n", + " --custom_atoms arg custom atom type parameters file\n", + " --score_only score provided ligand pose\n", + " --local_only local search only using autobox (you probably\n", + " want to use --minimize)\n", + " --minimize energy minimization\n", + " --randomize_only generate random poses, attempting to avoid\n", + " clashes\n", + " --minimize_iters arg (=0) number iterations of steepest descent; default\n", + " scales with rotors and usually isn't sufficient\n", + " for convergence\n", + " --accurate_line use accurate line search\n", + " --minimize_early_term Stop minimization before convergence conditions\n", + " are fully met.\n", + " --approximation arg approximation (linear, spline, or exact) to use\n", + " --factor arg approximation factor: higher results in a\n", + " finer-grained approximation\n", + " --force_cap arg max allowed force; lower values more gently\n", + " minimize clashing structures\n", + " --user_grid arg Autodock map file for user grid data based\n", + " calculations\n", + " --user_grid_lambda arg (=-1) Scales user_grid and functional scoring\n", + " --print_terms Print all available terms with default\n", + " parameterizations\n", + " --print_atom_types Print all available atom types\n", + "\n", + " Output (optional):\n", + " -o [ --out ] arg output file name, format taken from file\n", + " extension\n", + " --out_flex arg output file for flexible receptor residues\n", + " --log arg optionally, write log file\n", + " --atom_terms arg optionally write per-atom interaction term\n", + " values\n", + " --atom_term_data embedded per-atom interaction terms in output\n", + " sd data\n", + "\n", + " Misc (optional):\n", + " --cpu arg the number of CPUs to use (the default is to\n", + " try to detect the number of CPUs or, failing\n", + " that, use 1)\n", + " --seed arg explicit random seed\n", + " --exhaustiveness arg (=8) exhaustiveness of the global search (roughly\n", + " proportional to time)\n", + " --num_modes arg (=9) maximum number of binding modes to generate\n", + " --energy_range arg (=3) maximum energy difference between the best\n", + " binding mode and the worst one displayed\n", + " (kcal/mol)\n", + " --min_rmsd_filter arg (=1) rmsd value used to filter final poses to remove\n", + " redundancy\n", + " -q [ --quiet ] Suppress output messages\n", + " --addH arg automatically add hydrogens in ligands (on by\n", + " default)\n", + "\n", + " Configuration file (optional):\n", + " --config arg the above options can be put here\n", + "\n", + " Information (optional):\n", + " --help display usage summary\n", + " --help_hidden display usage summary with hidden options\n", + " --version display program version" + ] + }, + { + "cell_type": "markdown", + "id": "800679a2-6785-4c0a-93a2-ac1d396e4c04", + "metadata": {}, + "source": [ + "```\n", + "!../../bin/smina -r 1AZ8_clean_H.pdbqt -l 1AZ8_lig_H.pdbqt --center_x 31.859 --center_y 13.34 --center_z 17.065 --size_x 24.569 --size_y 18.12 --size_z 17.37 --exhaustiveness 8 --num_modes 5\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "ce41cf4f-a916-46ea-9f7c-073292abaa4e", + "metadata": {}, + "source": [ + "### Converting files from PDBQT to SDF" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "1b8121d0-2485-4865-8cd3-10c945aad530", + "metadata": {}, + "outputs": [], + "source": [ + "results = [m for m in pybel.readfile(filename='1AZ8_lig_vina_out.pdbqt',format='pdbqt')]\n", + "out=pybel.Outputfile(filename='1AZ8_lig_vina_out.sdf',format='sdf',overwrite=True)\n", + "for pose in results:\n", + " out.write(pose)\n", + "out.close()" + ] + }, + { + "cell_type": "markdown", + "id": "01b78957-5274-4a2e-bb91-4d83c551a7b4", + "metadata": {}, + "source": [ + "### Docking poses visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f95c31b9-ed5b-4dd3-be0f-380c462dd01f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " VINA RESULT: -7.492 0.000 0.000\n", + " INTER + INTRA: -13.330\n", + " INTER: -12.196\n", + " INTRA: -1.134\n", + " UNBOUND: -1.458\n", + " 11 active torsions:\n", + " status: ('A' for Active; 'I' for Inactive)\n", + " 1 A between atoms: N1_2 and C16_22 \n", + " 2 A between atoms: N3_6 and C20_25 \n", + " 3 A between atoms: C4_8 and C10_16 \n", + " 4 A between atoms: O4_10 and C22_26 \n", + " 5 A between atoms: C6_12 and C20_25 \n", + " 6 A between atoms: C9_15 and C11_17 \n", + " 7 A between atoms: C9_15 and C10_16 \n", + " 8 A between atoms: C10_16 and C14_20 \n", + " 9 A between atoms: C11_17 and C12_18 \n", + " 10 A between atoms: C14_20 and C22_26 \n", + " 11 A between atoms: C15_21 and C16_22 \n" + ] + }, + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

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

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "view = py3Dmol.view()\n", + "view.removeAllModels()\n", + "view.setViewStyle({'style':'outline','color':'black','width':0.1})\n", + "\n", + "view.addModel(open('1AZ8_clean_H.pdb','r').read(),format='pdb')\n", + "Prot=view.getModel()\n", + "Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})\n", + "view.addSurface(py3Dmol.VDW,{'opacity':0.6,'color':'white'})\n", + "\n", + "\n", + "view.addModel(open('1AZ8_lig_H.mol2','r').read(),format='mol2')\n", + "ref_m = view.getModel()\n", + "ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.2}})\n", + "\n", + "\n", + "results=Chem.SDMolSupplier('1AZ8_lig_vina_out.sdf')\n", + "\n", + "p=Chem.MolToMolBlock(results[0],False)\n", + "print (results[0].GetProp('REMARK'))\n", + "\n", + "view.addModel(p,'mol')\n", + "x = view.getModel()\n", + "x.setStyle({},{'stick':{'colorscheme':'cyanCarbon','radius':0.2}})\n", + "\n", + "view.zoomTo()\n", + "view.show()" + ] + }, + { + "cell_type": "markdown", + "id": "75f1749a-85cd-4340-9a6d-d8ff6258ce34", + "metadata": {}, + "source": [ + "### Molecular interacions" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3ba16cc8-9285-409e-99ff-7df3e849f96d", + "metadata": {}, + "outputs": [], + "source": [ + "fix_protein(filename='1AZ8_clean.pdb',addHs_pH=7.4,try_renumberResidues=True,output='1AZ8_clean_H_fix.pdb')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "089b321d-63d1-46f2-96f1-abdd2dfb00f9", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "628eef057d7d42d4a83e9cf476151d47", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/10 [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", + "
ligandUNL1
proteinASP189.ACYS191.AGLY219.A
interactionHBDonorHydrophobicHBDonor
0(12, 0)(16, 0)(11, 0)
1(11, 0)(None, None)(None, None)
2(None, None)(16, 0)(None, None)
3(None, None)(31, 0)(None, None)
4(None, None)(None, None)(23, 0)
5(None, None)(None, None)(None, None)
6(26, 0)(None, None)(None, None)
7(None, None)(None, None)(25, 0)
8(None, None)(None, None)(23, 0)
9(None, None)(None, None)(None, None)
\n", + "" + ], + "text/plain": [ + "ligand UNL1 \n", + "protein ASP189.A CYS191.A GLY219.A\n", + "interaction HBDonor Hydrophobic HBDonor\n", + "0 (12, 0) (16, 0) (11, 0)\n", + "1 (11, 0) (None, None) (None, None)\n", + "2 (None, None) (16, 0) (None, None)\n", + "3 (None, None) (31, 0) (None, None)\n", + "4 (None, None) (None, None) (23, 0)\n", + "5 (None, None) (None, None) (None, None)\n", + "6 (26, 0) (None, None) (None, None)\n", + "7 (None, None) (None, None) (25, 0)\n", + "8 (None, None) (None, None) (23, 0)\n", + "9 (None, None) (None, None) (None, None)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load protein\n", + "prot = mda.Universe(\"1AZ8_clean_H_fix.pdb\")\n", + "prot = plf.Molecule.from_mda(prot)\n", + "prot.n_residues\n", + "\n", + "# load ligands\n", + "lig_suppl = list(plf.sdf_supplier('1AZ8_lig_vina_out.sdf'))\n", + "# generate fingerprint\n", + "fp = plf.Fingerprint()\n", + "fp.run_from_iterable(lig_suppl, prot)\n", + "results_df = fp.to_dataframe(return_atoms=True)\n", + "results_df" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "60090cbb-2fca-42f8-a325-173bebc22030", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net = LigNetwork.from_ifp(results_df,lig_suppl[0],kind=\"frame\", frame=0,rotation=270)\n", + "net.display()" + ] + }, + { + "cell_type": "markdown", + "id": "fbab030f-d433-458f-8e75-d36428d250c0", + "metadata": {}, + "source": [ + "## Docking with Ledock" + ] + }, + { + "cell_type": "markdown", + "id": "e92d1738-3440-4d0e-8ae4-24f6fd50ffcf", + "metadata": {}, + "source": [ + "### Box definition" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "13e73174-9e26-424d-8abd-b8df3f37fc16", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'minX': 19.57430076599121, 'maxX': 44.143798828125} \n", + " {'minY': 4.285799980163574, 'maxY': 22.409099578857422} \n", + " {'minZ': 8.378700256347656, 'maxZ': 25.75309944152832}\n" + ] + } + ], + "source": [ + "cmd.load(filename='1AZ8_clean_H.pdb',format='pdb',object='prot')\n", + "cmd.load(filename='1AZ8_lig_H.mol2',format='mol2',object='lig')\n", + "\n", + "X,Y,Z= getbox(selection='lig',extending=5.0,software='ledock')\n", + "cmd.delete('all')\n", + "\n", + "print(X,'\\n',Y,'\\n',Z)" + ] + }, + { + "cell_type": "markdown", + "id": "3a2bd5f7-1325-426b-be5d-db29a992ab6b", + "metadata": {}, + "source": [ + "### Ledock parameters" + ] + }, + { + "cell_type": "markdown", + "id": "f03fb247-097b-4914-96cd-14f03d46b5ca", + "metadata": {}, + "source": [ + "**_generate_ledock_file( params )_**\n", + "\n", + "params:\n", + "\n", + "- **receptor**: _str or path-like string_ ; protein file for docking including hydrogens, format must be pdb \n", + "- **x**: _2 element list of floats [ float , float ]_; Xmin and Xmax coordinates of docking box\n", + "- **y**: _2 element list of floats [ float , float ]_; Ymin and Ymax coordinates of docking box\n", + "- **z**: _2 element list of floats [ float , float ]_; Zmin and Zmax coordinates of docking box\n", + "- **n_poses**: _float_ ; n_of poses to retrieve from docking \n", + "- **rmsd**: _float_ ; minimum RMSD diference between docking poses \n", + "- **l_list**: _list of n strings or path-like strings [ lig1, lig2, lig3 ... ] ; list of ligands or ligands paths to dock \n", + "- **l_list_outfile**: _str or path-like string_ ; filename to save the ligand list, needed for ledock to locate ligands\n", + "- **out**: _str or path-like string_ ; outfile to save docking paramemeters, needed to launch the docking" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "21078e78-8772-4b50-83c1-3dcd7381b819", + "metadata": {}, + "outputs": [], + "source": [ + "generate_ledock_file(receptor='1AZ8_clean_H.pdb',x=[X['minX'],X['maxX']],\n", + " y=[Y['minY'],Y['maxY']],\n", + " z=[Z['minZ'],Z['maxZ']],\n", + " n_poses=10,\n", + " rmsd=1.0,\n", + " l_list='1AZ8_lig_H.mol2', \n", + " l_list_outfile='ledock_ligand.list1',\n", + " out='dock.in')" + ] + }, + { + "cell_type": "markdown", + "id": "8f724cc7-32a1-47a2-813e-09f5baee3a07", + "metadata": {}, + "source": [ + "### Docking" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "bc334f42-0d13-4e98-a24f-698adc1d5da9", + "metadata": {}, + "outputs": [], + "source": [ + "!../../bin/ledock_linux_x86 dock.in" + ] + }, + { + "cell_type": "markdown", + "id": "9895b690-5593-45b4-9a6c-1d1ef6a54987", + "metadata": {}, + "source": [ + "### Files conversion from DOK to SDF" + ] + }, + { + "cell_type": "markdown", + "id": "d8e49032-3801-43da-afb6-ef7398fe82f9", + "metadata": {}, + "source": [ + "**_dok_to_sdf ( params )_**\n", + "\n", + "params:\n", + "\n", + " - **dok_file**: _str or path-like_ ; dok file from ledock docking\n", + "\n", + " - **output**: _str or path-like_ ; out file from ledock docking, extension must be sdf" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "73878c34-8346-49ef-a6c7-44733115510f", + "metadata": {}, + "outputs": [], + "source": [ + "dok_to_sdf(dok_file='1AZ8_lig_H.dok',output='1AZ8_lig_ledock_out.sdf')" + ] + }, + { + "cell_type": "markdown", + "id": "48e6dad1-078a-4579-b72e-22c1cf1e48ed", + "metadata": {}, + "source": [ + "### Docking poses visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "97fc294d-1d1c-440d-ad35-da4de5d098d1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Cluster 1 of Poses: 2 Score: -9.03 kcal/mol\n" + ] + }, + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

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

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "view = py3Dmol.view()\n", + "view.removeAllModels()\n", + "view.setViewStyle({'style':'outline','color':'black','width':0.1})\n", + "\n", + "view.addModel(open('1AZ8_clean_H.pdb','r').read(),format='pdb')\n", + "Prot=view.getModel()\n", + "Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})\n", + "view.addSurface(py3Dmol.VDW,{'opacity':0.6,'color':'white'})\n", + "\n", + "\n", + "view.addModel(open('1AZ8_lig_H.mol2','r').read(),format='mol2')\n", + "ref_m = view.getModel()\n", + "ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.2}})\n", + "\n", + "results=Chem.SDMolSupplier('1AZ8_lig_ledock_out.sdf')\n", + "\n", + "\n", + "p=Chem.MolToMolBlock(results[0])\n", + "print (results[0].GetProp('REMARK'))\n", + "\n", + "view.addModel(p,'mol')\n", + "x = view.getModel()\n", + "x.setStyle({},{'stick':{'colorscheme':'cyanCarbon','radius':0.2}})\n", + "\n", + "view.zoomTo()\n", + "view.show()" + ] + }, + { + "cell_type": "markdown", + "id": "b1548780-48ac-4843-be7e-29ab8de33726", + "metadata": {}, + "source": [ + "### Molecular interactions" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "c8c42b93-ab73-4fda-817f-373289df549f", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1201edfad8594ac19f02c9140d9ce657", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/8 [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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ligandUNL1
proteinASN143.AASP189.ACYS191.ACYS220.AGLN192.AGLY148.AGLY216.A...SER214.ATHR149.ATRP215.ATYR228.AVAL213.AVAL227.A
interactionHBAcceptorHydrophobicHBDonorHydrophobicHydrophobicHydrophobicHydrophobicHBDonorHydrophobicHBAcceptor...HBDonorHydrophobicHBDonorHBAcceptorHBDonorHydrophobicHBDonorHydrophobicHydrophobicHBAcceptor
0(3, 12)(21, 9)(None, None)(24, 9)(0, 2)(7, 9)(4, 2)(28, 6)(21, 5)(9, 1)...(None, None)(None, None)(None, None)(None, None)(None, None)(0, 2)(None, None)(None, None)(0, 8)(None, None)
1(1, 12)(None, None)(32, 11)(24, 9)(0, 2)(7, 9)(2, 2)(27, 6)(21, 5)(6, 1)...(None, None)(None, None)(None, None)(None, None)(None, None)(0, 2)(None, None)(None, None)(0, 8)(None, None)
2(3, 12)(21, 9)(32, 10)(24, 9)(0, 2)(7, 9)(2, 2)(28, 6)(21, 5)(6, 1)...(None, None)(None, None)(None, None)(None, None)(None, None)(0, 4)(None, None)(None, None)(0, 8)(None, None)
3(None, None)(None, None)(33, 11)(24, 9)(0, 2)(7, 9)(2, 2)(27, 6)(21, 5)(None, None)...(None, None)(13, 4)(None, None)(None, None)(None, None)(0, 2)(None, None)(None, None)(0, 8)(None, None)
4(3, 12)(21, 9)(None, None)(24, 9)(0, 2)(7, 9)(2, 2)(28, 6)(21, 5)(6, 1)...(None, None)(None, None)(28, 12)(None, None)(None, None)(0, 2)(None, None)(None, None)(0, 8)(None, None)
5(3, 12)(None, None)(32, 11)(24, 9)(0, 2)(10, 9)(4, 2)(None, None)(None, None)(None, None)...(None, None)(2, 4)(None, None)(None, None)(None, None)(0, 2)(None, None)(None, None)(0, 8)(None, None)
6(None, None)(None, None)(32, 10)(24, 9)(0, 2)(7, 9)(2, 2)(28, 6)(21, 5)(None, None)...(None, None)(None, None)(None, None)(None, None)(None, None)(0, 4)(None, None)(None, None)(0, 8)(None, None)
7(None, None)(None, None)(28, 10)(None, None)(12, 2)(13, 9)(14, 2)(None, None)(None, None)(None, None)...(32, 5)(12, 4)(None, None)(3, 1)(30, 0)(0, 2)(27, 19)(21, 14)(12, 8)(3, 1)
\n", + "

8 rows × 33 columns

\n", + "" + ], + "text/plain": [ + "ligand UNL1 \\\n", + "protein ASN143.A ASP189.A \n", + "interaction HBAcceptor Hydrophobic HBDonor Hydrophobic \n", + "0 (3, 12) (21, 9) (None, None) (24, 9) \n", + "1 (1, 12) (None, None) (32, 11) (24, 9) \n", + "2 (3, 12) (21, 9) (32, 10) (24, 9) \n", + "3 (None, None) (None, None) (33, 11) (24, 9) \n", + "4 (3, 12) (21, 9) (None, None) (24, 9) \n", + "5 (3, 12) (None, None) (32, 11) (24, 9) \n", + "6 (None, None) (None, None) (32, 10) (24, 9) \n", + "7 (None, None) (None, None) (28, 10) (None, None) \n", + "\n", + "ligand \\\n", + "protein CYS191.A CYS220.A GLN192.A GLY148.A \n", + "interaction Hydrophobic Hydrophobic Hydrophobic HBDonor Hydrophobic \n", + "0 (0, 2) (7, 9) (4, 2) (28, 6) (21, 5) \n", + "1 (0, 2) (7, 9) (2, 2) (27, 6) (21, 5) \n", + "2 (0, 2) (7, 9) (2, 2) (28, 6) (21, 5) \n", + "3 (0, 2) (7, 9) (2, 2) (27, 6) (21, 5) \n", + "4 (0, 2) (7, 9) (2, 2) (28, 6) (21, 5) \n", + "5 (0, 2) (10, 9) (4, 2) (None, None) (None, None) \n", + "6 (0, 2) (7, 9) (2, 2) (28, 6) (21, 5) \n", + "7 (12, 2) (13, 9) (14, 2) (None, None) (None, None) \n", + "\n", + "ligand ... \\\n", + "protein GLY216.A ... SER214.A THR149.A \n", + "interaction HBAcceptor ... HBDonor Hydrophobic HBDonor \n", + "0 (9, 1) ... (None, None) (None, None) (None, None) \n", + "1 (6, 1) ... (None, None) (None, None) (None, None) \n", + "2 (6, 1) ... (None, None) (None, None) (None, None) \n", + "3 (None, None) ... (None, None) (13, 4) (None, None) \n", + "4 (6, 1) ... (None, None) (None, None) (28, 12) \n", + "5 (None, None) ... (None, None) (2, 4) (None, None) \n", + "6 (None, None) ... (None, None) (None, None) (None, None) \n", + "7 (None, None) ... (32, 5) (12, 4) (None, None) \n", + "\n", + "ligand \\\n", + "protein TRP215.A TYR228.A \n", + "interaction HBAcceptor HBDonor Hydrophobic HBDonor \n", + "0 (None, None) (None, None) (0, 2) (None, None) \n", + "1 (None, None) (None, None) (0, 2) (None, None) \n", + "2 (None, None) (None, None) (0, 4) (None, None) \n", + "3 (None, None) (None, None) (0, 2) (None, None) \n", + "4 (None, None) (None, None) (0, 2) (None, None) \n", + "5 (None, None) (None, None) (0, 2) (None, None) \n", + "6 (None, None) (None, None) (0, 4) (None, None) \n", + "7 (3, 1) (30, 0) (0, 2) (27, 19) \n", + "\n", + "ligand \n", + "protein VAL213.A VAL227.A \n", + "interaction Hydrophobic Hydrophobic HBAcceptor \n", + "0 (None, None) (0, 8) (None, None) \n", + "1 (None, None) (0, 8) (None, None) \n", + "2 (None, None) (0, 8) (None, None) \n", + "3 (None, None) (0, 8) (None, None) \n", + "4 (None, None) (0, 8) (None, None) \n", + "5 (None, None) (0, 8) (None, None) \n", + "6 (None, None) (0, 8) (None, None) \n", + "7 (21, 14) (12, 8) (3, 1) \n", + "\n", + "[8 rows x 33 columns]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load protein\n", + "prot = mda.Universe(\"1AZ8_clean_H_fix.pdb\",guess_bonds=True)\n", + "prot = plf.Molecule.from_mda(prot)\n", + "prot.n_residues\n", + "\n", + "# load ligands\n", + "path = str('1AZ8_lig_ledock_out.sdf')\n", + "lig_suppl = list(plf.sdf_supplier(path))\n", + "# generate fingerprint\n", + "fp = plf.Fingerprint()\n", + "fp.run_from_iterable(lig_suppl, prot)\n", + "results_df = fp.to_dataframe(return_atoms=True)\n", + "results_df" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "36fd7b17-6821-4b47-a6c0-7c1c5568dc11", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net = LigNetwork.from_ifp(results_df,lig_suppl[0],kind=\"frame\", frame=0,rotation=270)\n", + "net.display()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "AnalysisMD", + "language": "python", + "name": "analysismd" + }, + "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.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/.ipynb_checkpoints/3.-Blind_Docking-checkpoint.ipynb b/.ipynb_checkpoints/3.-Blind_Docking-checkpoint.ipynb new file mode 100644 index 00000000..0ee691a5 --- /dev/null +++ b/.ipynb_checkpoints/3.-Blind_Docking-checkpoint.ipynb @@ -0,0 +1,2970 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ced177c9-a5d4-432e-bca7-cbc33216ad2d", + "metadata": {}, + "source": [ + "# Blind Docking" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "603c32cc-aee1-40ab-8942-ceb386c3d7ba", + "metadata": {}, + "outputs": [], + "source": [ + "from pymol import cmd\n", + "import py3Dmol\n", + "\n", + "from vina import Vina\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "from openbabel import pybel\n", + "\n", + "from rdkit import Chem\n", + "from rdkit.Chem import AllChem,rdFMCS, Draw\n", + "\n", + "from meeko import MoleculePreparation\n", + "from meeko import obutils\n", + "\n", + "import MDAnalysis as mda\n", + "from MDAnalysis.coordinates import PDB\n", + "\n", + "import prolif as plf\n", + "from prolif.plotting.network import LigNetwork\n", + "\n", + "\n", + "import sys, os, random, time\n", + "sys.path.insert(1, 'utilities/')\n", + "\n", + "from multiprocessing import Pool\n", + "\n", + "from utils import fix_protein, getbox, generate_ledock_file, dok_to_sdf\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "%config Completer.use_jedi = False" + ] + }, + { + "cell_type": "markdown", + "id": "34311746-4190-49a7-a32b-f4e55cad33d8", + "metadata": {}, + "source": [ + "### Setting the working directory" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "dd617dfe-f742-424d-b19f-54c06ec0ac9c", + "metadata": {}, + "outputs": [], + "source": [ + "os.chdir('test/Blind_Docking/')" + ] + }, + { + "cell_type": "markdown", + "id": "6331c30a-61a9-427a-94a6-cec3c5202237", + "metadata": {}, + "source": [ + "### Loading the system from PDB" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "25cb0479-7f2f-465a-a442-16bb132e08b3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " PyMOL not running, entering library mode (experimental)\n" + ] + } + ], + "source": [ + "cmd.fetch(code='1XOZ',type='pdb1')\n", + "cmd.select(name='Prot',selection='polymer.protein')\n", + "cmd.select(name='Lig',selection='organic')\n", + "cmd.save(filename='1XOZ_clean.pdb',format='pdb',selection='Prot')\n", + "cmd.save(filename='1XOZ_lig.mol2',format='mol2',selection='Lig')\n", + "cmd.delete('all')" + ] + }, + { + "cell_type": "markdown", + "id": "d6b23a3f-0e0b-4d3f-a56c-0b9d3f6fffa7", + "metadata": {}, + "source": [ + "### Protein sanitization" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "be753050-0e76-4a8c-91f2-4a3f4056c5ed", + "metadata": {}, + "outputs": [], + "source": [ + "fix_protein(filename='1XOZ_clean.pdb',addHs_pH=7.4,try_renumberResidues=True,output='1XOZ_clean_H.pdb')" + ] + }, + { + "cell_type": "markdown", + "id": "85421ef6-7ee5-439a-abaa-f1d5c80f3265", + "metadata": {}, + "source": [ + "### Ligand sanitization" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f1359216-c0f1-454d-b876-196223873e2b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RDKit WARNING: [14:26:55] 1XOZ: Warning - no explicit hydrogens in mol2 file but needed for formal charge estimation.\n", + "RDKit ERROR: [14:26:55] Can't kekulize mol. Unkekulized atoms: 0 1 2 3 4 5 6 7 8\n", + "RDKit ERROR: \n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m=Chem.MolFromMol2File('1XOZ_lig.mol2',False)\n", + "Draw.MolToImage(m)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0ed91920-275e-448b-ac7b-9c842ebac458", + "metadata": {}, + "outputs": [], + "source": [ + "mol= [m for m in pybel.readfile(filename='1XOZ_lig.mol2',format='mol2')][0]\n", + "mol.addh()\n", + "out=pybel.Outputfile(filename='1XOZ_lig_H.mol2',format='mol2',overwrite=True)\n", + "out.write(mol)\n", + "out.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6c3a3a3d-b14a-488c-aa20-b81eda23ff7e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m=Chem.MolFromMol2File('1XOZ_lig_H.mol2')\n", + "m" + ] + }, + { + "cell_type": "markdown", + "id": "da26704d-ed4f-4efc-a381-b8e7d083140d", + "metadata": {}, + "source": [ + "### System visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e5eb26b4-e609-49d3-a4ae-28614d7a6431", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

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

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "view = py3Dmol.view()\n", + "view.removeAllModels()\n", + "view.setViewStyle({'style':'outline','color':'black','width':0.1})\n", + "\n", + "view.addModel(open('1XOZ_clean_H.pdb','r').read(),format='pdb')\n", + "Prot=view.getModel()\n", + "Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})\n", + "view.addSurface(py3Dmol.VDW,{'opacity':0.6,'color':'white'})\n", + "\n", + "view.addModel(open('1XOZ_lig_H.mol2','r').read(),format='mol2')\n", + "ref_m = view.getModel()\n", + "ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.2}})\n", + "\n", + "view.zoomTo()\n", + "view.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e421dda8-f402-4f40-8cf6-772e4e4ccc58", + "metadata": {}, + "source": [ + "## Molecular docking" + ] + }, + { + "cell_type": "markdown", + "id": "ccef7d83-a108-4f3d-8d62-f9438c1ef5bc", + "metadata": {}, + "source": [ + "### Protein preparation" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c01457d4-c3be-4c38-867b-8e44ae226a60", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "set verbose to True\n", + "set receptor_filename to 1XOZ_clean_H.pdb\n", + "set repairs to hydrogens\n", + "set outputfilename to 1XOZ_clean_H.pdbqt\n", + "read 1XOZ_clean_H.pdb\n", + "setting up RPO with mode= automatic and outputfilename= 1XOZ_clean_H.pdbqt\n", + "charges_to_add= gasteiger\n", + "delete_single_nonstd_residues= None\n", + "adding gasteiger charges to peptide\n", + "Sorry, there are no Gasteiger parameters available for atom 1XOZ_clean_H:A:GLU858:OXT\n", + "Warning: hydrogens, ['HG1', 'HG', 'HG', 'HG1', 'HG1', 'HG', 'HG', 'HG', 'HG1', 'HG1', 'HG1', 'HG', 'HZ2', 'HH', 'HH', 'HG1', 'HG1', 'HG', 'HG', 'HG1', 'HG', 'HH', 'HG', 'HG', 'HG', 'HG', 'HH', 'HG1', 'HG1', 'HG1', 'HH', 'HG1', 'HG', 'HG1', 'HG1', 'HG1', 'HG', 'HH', 'HG1', 'HG'] , with no bonds!\n" + ] + } + ], + "source": [ + "!../../bin/prepare_receptor -v -r 1XOZ_clean_H.pdb -A hydrogens -o 1XOZ_clean_H.pdbqt" + ] + }, + { + "cell_type": "markdown", + "id": "2f42890b-eaa0-4358-9fcf-eb982ae3b07a", + "metadata": {}, + "source": [ + "### Ligand preparation" + ] + }, + { + "cell_type": "markdown", + "id": "e695a701-c83f-492e-9e8c-8ac98dfabc57", + "metadata": {}, + "source": [ + "#### Method 2: pybel" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "dd98d0ed-123d-4b96-a79e-fee1b697e933", + "metadata": {}, + "outputs": [], + "source": [ + "ligand = [m for m in pybel.readfile(filename='1XOZ_lig_H.mol2',format='mol2')][0]\n", + "out=pybel.Outputfile(filename='1XOZ_lig_H.pdbqt',format='pdbqt',overwrite=True)\n", + "ligand.addh()\n", + "out.write(ligand)\n", + "out.close()" + ] + }, + { + "cell_type": "markdown", + "id": "123ce17b-e006-429d-a9eb-a7a697e55c60", + "metadata": {}, + "source": [ + "### Protein pockets identification" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "06a66393-f78e-4b4f-b72d-67456ec25e33", + "metadata": {}, + "outputs": [], + "source": [ + "!../../bin/fpocket -f 1XOZ_clean_H.pdb -d > pocket_descriptors.csv" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ef2448a5-3395-4f51-93df-beb806b4c847", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
drug_scorevolumenb_asphinter_chainapol_asph_proportionmean_asph_radiusas_densitymean_asph_solv_accmean_loc_hyd_densflex...valtrptyrchain_1_typechain_2_typenum_res_chain_1num_res_chain_2lig_het_tagname_chain_1name_chain_2
cav_id
10.87411053.155813900.63314.02006.86630.464760.29550.0...01200324324NaNAA
20.0452589.67167200.33333.74375.56210.471619.58330.0...01000324324NaNAA
30.0003517.68203700.32434.06055.16420.589410.66670.0...00100324324NaNAA
40.0021390.75293000.46673.98724.24520.612011.71430.0...00000324324NaNAA
50.0009111.89612300.39133.51002.01550.35048.00000.0...00000324324NaNAA
60.0046228.22733400.47063.83983.27870.462315.00000.0...01000324324NaNAA
70.0005223.67121600.62503.92382.46310.67839.00000.0...00000324324NaNAA
80.0004219.37811500.26673.93672.96640.51793.00000.0...01000324324NaNAA
90.0012265.22793300.60614.14022.15930.640019.00000.0...00000324324NaNAA
100.0030634.74295200.25003.89945.42250.517310.15380.0...10000324324NaNAA
110.0017190.29362600.65383.79472.59790.671816.00000.0...00000324324NaNAA
120.00141071.005410700.36453.96228.32260.509621.07690.0...11000324324NaNAA
130.0009354.04233300.57583.83393.40030.468518.00000.0...00000324324NaNAA
140.0002305.84202200.18183.68692.91550.38093.00000.0...00100324324NaNAA
150.0003409.89233400.35293.93463.83910.504410.33330.0...00100324324NaNAA
160.0001292.27641600.18753.84342.99850.55072.00000.0...00000324324NaNAA
170.0012203.94552000.75003.85411.60620.494114.00000.0...10000324324NaNAA
180.0008329.03621600.43753.87323.47500.44476.00000.0...00000324324NaNAA
190.0001276.73211600.37503.92132.65880.60555.00000.0...00000324324NaNAA
200.0000246.74971700.05883.95352.85210.57740.00000.0...00000324324NaNAA
210.0002305.77662200.13643.88772.43830.49182.00000.0...00000324324NaNAA
220.0004405.19312400.29174.19793.54340.59776.00000.0...00000324324NaNAA
\n", + "

22 rows × 46 columns

\n", + "
" + ], + "text/plain": [ + " drug_score volume nb_asph inter_chain apol_asph_proportion \\\n", + "cav_id \n", + "1 0.8741 1053.1558 139 0 0.6331 \n", + "2 0.0452 589.6716 72 0 0.3333 \n", + "3 0.0003 517.6820 37 0 0.3243 \n", + "4 0.0021 390.7529 30 0 0.4667 \n", + "5 0.0009 111.8961 23 0 0.3913 \n", + "6 0.0046 228.2273 34 0 0.4706 \n", + "7 0.0005 223.6712 16 0 0.6250 \n", + "8 0.0004 219.3781 15 0 0.2667 \n", + "9 0.0012 265.2279 33 0 0.6061 \n", + "10 0.0030 634.7429 52 0 0.2500 \n", + "11 0.0017 190.2936 26 0 0.6538 \n", + "12 0.0014 1071.0054 107 0 0.3645 \n", + "13 0.0009 354.0423 33 0 0.5758 \n", + "14 0.0002 305.8420 22 0 0.1818 \n", + "15 0.0003 409.8923 34 0 0.3529 \n", + "16 0.0001 292.2764 16 0 0.1875 \n", + "17 0.0012 203.9455 20 0 0.7500 \n", + "18 0.0008 329.0362 16 0 0.4375 \n", + "19 0.0001 276.7321 16 0 0.3750 \n", + "20 0.0000 246.7497 17 0 0.0588 \n", + "21 0.0002 305.7766 22 0 0.1364 \n", + "22 0.0004 405.1931 24 0 0.2917 \n", + "\n", + " mean_asph_radius as_density mean_asph_solv_acc mean_loc_hyd_dens \\\n", + "cav_id \n", + "1 4.0200 6.8663 0.4647 60.2955 \n", + "2 3.7437 5.5621 0.4716 19.5833 \n", + "3 4.0605 5.1642 0.5894 10.6667 \n", + "4 3.9872 4.2452 0.6120 11.7143 \n", + "5 3.5100 2.0155 0.3504 8.0000 \n", + "6 3.8398 3.2787 0.4623 15.0000 \n", + "7 3.9238 2.4631 0.6783 9.0000 \n", + "8 3.9367 2.9664 0.5179 3.0000 \n", + "9 4.1402 2.1593 0.6400 19.0000 \n", + "10 3.8994 5.4225 0.5173 10.1538 \n", + "11 3.7947 2.5979 0.6718 16.0000 \n", + "12 3.9622 8.3226 0.5096 21.0769 \n", + "13 3.8339 3.4003 0.4685 18.0000 \n", + "14 3.6869 2.9155 0.3809 3.0000 \n", + "15 3.9346 3.8391 0.5044 10.3333 \n", + "16 3.8434 2.9985 0.5507 2.0000 \n", + "17 3.8541 1.6062 0.4941 14.0000 \n", + "18 3.8732 3.4750 0.4447 6.0000 \n", + "19 3.9213 2.6588 0.6055 5.0000 \n", + "20 3.9535 2.8521 0.5774 0.0000 \n", + "21 3.8877 2.4383 0.4918 2.0000 \n", + "22 4.1979 3.5434 0.5977 6.0000 \n", + "\n", + " flex ... val trp tyr chain_1_type chain_2_type num_res_chain_1 \\\n", + "cav_id ... \n", + "1 0.0 ... 0 1 2 0 0 324 \n", + "2 0.0 ... 0 1 0 0 0 324 \n", + "3 0.0 ... 0 0 1 0 0 324 \n", + "4 0.0 ... 0 0 0 0 0 324 \n", + "5 0.0 ... 0 0 0 0 0 324 \n", + "6 0.0 ... 0 1 0 0 0 324 \n", + "7 0.0 ... 0 0 0 0 0 324 \n", + "8 0.0 ... 0 1 0 0 0 324 \n", + "9 0.0 ... 0 0 0 0 0 324 \n", + "10 0.0 ... 1 0 0 0 0 324 \n", + "11 0.0 ... 0 0 0 0 0 324 \n", + "12 0.0 ... 1 1 0 0 0 324 \n", + "13 0.0 ... 0 0 0 0 0 324 \n", + "14 0.0 ... 0 0 1 0 0 324 \n", + "15 0.0 ... 0 0 1 0 0 324 \n", + "16 0.0 ... 0 0 0 0 0 324 \n", + "17 0.0 ... 1 0 0 0 0 324 \n", + "18 0.0 ... 0 0 0 0 0 324 \n", + "19 0.0 ... 0 0 0 0 0 324 \n", + "20 0.0 ... 0 0 0 0 0 324 \n", + "21 0.0 ... 0 0 0 0 0 324 \n", + "22 0.0 ... 0 0 0 0 0 324 \n", + "\n", + " num_res_chain_2 lig_het_tag name_chain_1 name_chain_2 \n", + "cav_id \n", + "1 324 NaN A A \n", + "2 324 NaN A A \n", + "3 324 NaN A A \n", + "4 324 NaN A A \n", + "5 324 NaN A A \n", + "6 324 NaN A A \n", + "7 324 NaN A A \n", + "8 324 NaN A A \n", + "9 324 NaN A A \n", + "10 324 NaN A A \n", + "11 324 NaN A A \n", + "12 324 NaN A A \n", + "13 324 NaN A A \n", + "14 324 NaN A A \n", + "15 324 NaN A A \n", + "16 324 NaN A A \n", + "17 324 NaN A A \n", + "18 324 NaN A A \n", + "19 324 NaN A A \n", + "20 324 NaN A A \n", + "21 324 NaN A A \n", + "22 324 NaN A A \n", + "\n", + "[22 rows x 46 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pockets_data=pd.read_csv('pocket_descriptors.csv',sep=' ',index_col=[0])\n", + "pockets_data" + ] + }, + { + "cell_type": "markdown", + "id": "c1811211-650d-4c49-aed0-8fe0a6e7af7f", + "metadata": {}, + "source": [ + "### Pockets visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "36609e74-92ca-47ef-8baa-6be9bd5e9c93", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

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

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "view = py3Dmol.view()\n", + "view.removeAllModels()\n", + "view.setViewStyle({'style':'outline','color':'black','width':0.1})\n", + "\n", + "view.addModel(open('1XOZ_clean_H.pdb','r').read(),'pdb')\n", + "Prot=view.getModel()\n", + "Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})\n", + "#view.addSurface(py3Dmol.VDW,{'opacity':0.6,'color':'white'})\n", + "\n", + "\n", + "view.addModel(open('1XOZ_lig_H.mol2','r').read(),'mol2')\n", + "ref_m = view.getModel()\n", + "ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.1}})\n", + "\n", + "\n", + "for file in os.listdir(path='1XOZ_clean_H_out/'):\n", + " if '.pqr' in file:\n", + " color = [\"#\"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])]\n", + " view.addModel(open('1XOZ_clean_H_out/'+file,'r').read(),'pqr')\n", + " x = view.getModel()\n", + " x.setStyle({},{'sphere':{'color':color[0],'opacity':0.6}}) \n", + " \n", + "view.zoomTo()\n", + "view.show()" + ] + }, + { + "cell_type": "markdown", + "id": "108eacd9-bca4-4294-b85a-3e92a450e17b", + "metadata": {}, + "source": [ + "### Per-pocket docking box set up (vina)" + ] + }, + { + "cell_type": "markdown", + "id": "023a2e49-522a-4c05-981f-79bd399a10e5", + "metadata": {}, + "source": [ + "Hint: You may think about extending the pocket box by 4-5 armostrongs ..." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "51aeefdc-cdc0-49c3-aeb9-bbea41fbb158", + "metadata": {}, + "outputs": [], + "source": [ + "for file in os.listdir('1XOZ_clean_H_out/'):\n", + " if 'pqr' in file:\n", + " pocket_num=int(file.split('_')[0].replace('pocket',''))\n", + " cmd.load(filename='1XOZ_clean_H_out/'+file,format='pqr',object=pocket_num)\n", + " \n", + " center,size=getbox(selection=pocket_num,extending=5.0,software='vina')\n", + " \n", + " pockets_data.loc[pocket_num,'center_x']=center['center_x']\n", + " pockets_data.loc[pocket_num,'center_y']=center['center_y']\n", + " pockets_data.loc[pocket_num,'center_z']=center['center_z']\n", + " \n", + " pockets_data.loc[pocket_num,'size_x']=size['size_x']\n", + " pockets_data.loc[pocket_num,'size_y']=size['size_y']\n", + " pockets_data.loc[pocket_num,'size_z']=size['size_z']\n", + " \n", + " cmd.delete('all')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "1d43de75-8369-4921-86b8-0237d740da96", + "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", + "
drug_scorevolumenb_asphinter_chainapol_asph_proportionmean_asph_radiusas_densitymean_asph_solv_accmean_loc_hyd_densflex...num_res_chain_2lig_het_tagname_chain_1name_chain_2center_xcenter_ycenter_zsize_xsize_ysize_z
cav_id
10.87411053.155813900.63314.02006.86630.464760.29550.0...324NaNAA47.15300236.18700015.22900020.32600018.05600024.312000
20.0452589.67167200.33333.74375.56210.471619.58330.0...324NaNAA39.91750046.82200112.00250018.32099923.43600115.865001
30.0003517.68203700.32434.06055.16420.589410.66670.0...324NaNAA24.39100119.91200019.75300018.07600018.21999919.172001
40.0021390.75293000.46673.98724.24520.612011.71430.0...324NaNAA26.42700030.58150035.59800017.52800016.16700216.634003
50.0009111.89612300.39133.51002.01550.35048.00000.0...324NaNAA33.26450032.00750029.85400013.45700113.22300011.883999
60.0046228.22733400.47063.83983.27870.462315.00000.0...324NaNAA38.22349929.39400029.17849911.91300212.83799917.578999
70.0005223.67121600.62503.92382.46310.67839.00000.0...324NaNAA35.52650115.04500026.63800015.50099911.12200012.118000
80.0004219.37811500.26673.93672.96640.51793.00000.0...324NaNAA28.45750048.13449940.51349814.11899913.15100114.659000
90.0012265.22793300.60614.14022.15930.640019.00000.0...324NaNAA33.53700017.91950015.52300014.96800013.76300013.890000
100.0030634.74295200.25003.89945.42250.517310.15380.0...324NaNAA29.66699936.0830003.64250024.19999915.59999819.619000
\n", + "

10 rows × 52 columns

\n", + "
" + ], + "text/plain": [ + " drug_score volume nb_asph inter_chain apol_asph_proportion \\\n", + "cav_id \n", + "1 0.8741 1053.1558 139 0 0.6331 \n", + "2 0.0452 589.6716 72 0 0.3333 \n", + "3 0.0003 517.6820 37 0 0.3243 \n", + "4 0.0021 390.7529 30 0 0.4667 \n", + "5 0.0009 111.8961 23 0 0.3913 \n", + "6 0.0046 228.2273 34 0 0.4706 \n", + "7 0.0005 223.6712 16 0 0.6250 \n", + "8 0.0004 219.3781 15 0 0.2667 \n", + "9 0.0012 265.2279 33 0 0.6061 \n", + "10 0.0030 634.7429 52 0 0.2500 \n", + "\n", + " mean_asph_radius as_density mean_asph_solv_acc mean_loc_hyd_dens \\\n", + "cav_id \n", + "1 4.0200 6.8663 0.4647 60.2955 \n", + "2 3.7437 5.5621 0.4716 19.5833 \n", + "3 4.0605 5.1642 0.5894 10.6667 \n", + "4 3.9872 4.2452 0.6120 11.7143 \n", + "5 3.5100 2.0155 0.3504 8.0000 \n", + "6 3.8398 3.2787 0.4623 15.0000 \n", + "7 3.9238 2.4631 0.6783 9.0000 \n", + "8 3.9367 2.9664 0.5179 3.0000 \n", + "9 4.1402 2.1593 0.6400 19.0000 \n", + "10 3.8994 5.4225 0.5173 10.1538 \n", + "\n", + " flex ... num_res_chain_2 lig_het_tag name_chain_1 name_chain_2 \\\n", + "cav_id ... \n", + "1 0.0 ... 324 NaN A A \n", + "2 0.0 ... 324 NaN A A \n", + "3 0.0 ... 324 NaN A A \n", + "4 0.0 ... 324 NaN A A \n", + "5 0.0 ... 324 NaN A A \n", + "6 0.0 ... 324 NaN A A \n", + "7 0.0 ... 324 NaN A A \n", + "8 0.0 ... 324 NaN A A \n", + "9 0.0 ... 324 NaN A A \n", + "10 0.0 ... 324 NaN A A \n", + "\n", + " center_x center_y center_z size_x size_y size_z \n", + "cav_id \n", + "1 47.153002 36.187000 15.229000 20.326000 18.056000 24.312000 \n", + "2 39.917500 46.822001 12.002500 18.320999 23.436001 15.865001 \n", + "3 24.391001 19.912000 19.753000 18.076000 18.219999 19.172001 \n", + "4 26.427000 30.581500 35.598000 17.528000 16.167002 16.634003 \n", + "5 33.264500 32.007500 29.854000 13.457001 13.223000 11.883999 \n", + "6 38.223499 29.394000 29.178499 11.913002 12.837999 17.578999 \n", + "7 35.526501 15.045000 26.638000 15.500999 11.122000 12.118000 \n", + "8 28.457500 48.134499 40.513498 14.118999 13.151001 14.659000 \n", + "9 33.537000 17.919500 15.523000 14.968000 13.763000 13.890000 \n", + "10 29.666999 36.083000 3.642500 24.199999 15.599998 19.619000 \n", + "\n", + "[10 rows x 52 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "descriptors_data.head(10)" + ] + }, + { + "cell_type": "markdown", + "id": "67187e16-f988-4ecd-870f-ea767bb68b19", + "metadata": {}, + "source": [ + "### Docking with Vina" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "56533b5b-875d-4864-b957-9508e10d421c", + "metadata": {}, + "outputs": [], + "source": [ + "def vina(receptor='',ligand='',center=[0,0,0],size=[0,0,0],exhaustiveness=8,n_poses=10,output=''):\n", + " v = Vina(sf_name='vina')\n", + "\n", + " v.set_receptor(receptor)\n", + "\n", + " v.set_ligand_from_file(ligand)\n", + "\n", + " v.compute_vina_maps(center=center, box_size=size)\n", + "\n", + " v.dock(exhaustiveness=exhaustiveness, n_poses=n_poses)\n", + " v.write_poses(output, n_poses=n_poses, overwrite=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "263ba8af-c41b-41ba-8ed1-ad977dff82bf", + "metadata": {}, + "outputs": [], + "source": [ + "for pocket in pockets_data.index:\n", + " vina(receptor='1XOZ_clean_H.pdbqt',ligand='1XOZ_lig_H.pdbqt',\n", + " center=[pockets_data.loc[pocket,'center_x'],pockets_data.loc[pocket,'center_y'],pockets_data.loc[pocket,'center_z']],\n", + " size=[pockets_data.loc[pocket,'size_x'],pockets_data.loc[pocket,'size_y'],pockets_data.loc[pocket,'size_z']],\n", + " exhaustiveness= 8,\n", + " n_poses=5,\n", + " output='vina_outfiles/'+'1XOZ_vina_pock_'+str(pocket)+'.pdbqt')" + ] + }, + { + "cell_type": "markdown", + "id": "04065a08-ae65-4556-b315-c4399ec16bdc", + "metadata": {}, + "source": [ + "#### File conversion from pdbqt to sdf" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ea10d91a-07cb-4eb3-be73-de22eb56cf6b", + "metadata": {}, + "outputs": [], + "source": [ + "for file in os.listdir('../Blind_Docking/vina_outfiles/'):\n", + " if 'vina' in file:\n", + " results = [m for m in pybel.readfile(filename='vina_outfiles/'+file,format='pdbqt')]\n", + " out=pybel.Outputfile(filename='vina_outfiles/'+file.replace('pdbqt','sdf'),format='sdf',overwrite=True)\n", + " for pose in results:\n", + " pose.addh()\n", + " out.write(pose)\n", + " out.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "cf83212c-cab3-44c5-a586-de87c9611f2b", + "metadata": {}, + "outputs": [], + "source": [ + "all_mols=[]\n", + "for file in os.listdir('vina_outfiles/'):\n", + " if 'sdf' in file:\n", + " mols=Chem.SDMolSupplier('vina_outfiles/'+file)\n", + " for mol in mols:\n", + " all_mols.append(mol) \n", + "out.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "56af894b-0a0c-4563-b560-e9f784cab4f5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "103" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(all_mols)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "cf2816fb-4484-4d6f-9d3a-f9e737e6aadd", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

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

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "view = py3Dmol.view()\n", + "view.removeAllModels()\n", + "view.setViewStyle({'style':'outline','color':'black','width':0.1})\n", + "\n", + "view.addModel(open('1XOZ_clean_H.pdb','r').read(),'pdb')\n", + "Prot=view.getModel()\n", + "Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})\n", + "view.addSurface(py3Dmol.VDW,{'opacity':0.8,'color':'white'})\n", + "\n", + "\n", + "view.addModel(open('1XOZ_lig_H.mol2','r').read(),'mol2')\n", + "ref_m = view.getModel()\n", + "ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.1}})\n", + "\n", + "\n", + "for file in os.listdir(path='1XOZ_clean_H_out/'):\n", + " if '.pqr' in file:\n", + " color = [\"#\"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])]\n", + " view.addModel(open('1XOZ_clean_H_out/'+file,'r').read(),'pqr')\n", + " x = view.getModel()\n", + " x.setStyle({},{'sphere':{'color':color[0],'opacity':0.5}})\n", + " \n", + "for mol in all_mols:\n", + " p=Chem.MolToMolBlock(mol)\n", + " color = [\"#\"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])]\n", + " view.addModel(p,'mol')\n", + " z= view.getModel()\n", + " z.setStyle({},{'stick':{'color':color[0],'radius':0.05}})\n", + "\n", + "view.zoomTo()\n", + "view.show()" + ] + }, + { + "cell_type": "markdown", + "id": "2c8447ac-fe09-40e8-b179-50c5e09b0bd9", + "metadata": {}, + "source": [ + "## Docking with Ledock" + ] + }, + { + "cell_type": "markdown", + "id": "94e3a017-c0d2-4bb2-a972-782b9077e9d4", + "metadata": {}, + "source": [ + "### Per-pocket docking box set up (Ledock)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "25c0e695-4fd3-48b0-bf98-b2290dae77f6", + "metadata": {}, + "outputs": [], + "source": [ + "for file in os.listdir('1XOZ_clean_H_out/'):\n", + " if 'pqr' in file:\n", + " \n", + " pocket_num=int(file.split('_')[0].replace('pocket',''))\n", + " cmd.load(filename='1XOZ_clean_H_out/'+file,format='pqr',object=pocket_num)\n", + " \n", + " X,Y,Z=getbox(selection=pocket_num,extending=5.0,software='ledock')\n", + " \n", + " pockets_data.loc[pocket_num,'minX']=X['minX']\n", + " pockets_data.loc[pocket_num,'maxX']=X['maxX']\n", + " \n", + " pockets_data.loc[pocket_num,'minY']=Y['minY']\n", + " pockets_data.loc[pocket_num,'maxY']=Y['maxY']\n", + " \n", + " pockets_data.loc[pocket_num,'minZ']=Z['minZ']\n", + " pockets_data.loc[pocket_num,'maxZ']=Z['maxZ']\n", + " \n", + " cmd.delete('all')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "ea5f9e5f-2ab9-4416-bcbf-0060728f000e", + "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", + "
drug_scorevolumenb_asphinter_chainapol_asph_proportionmean_asph_radiusas_densitymean_asph_solv_accmean_loc_hyd_densflex...center_zsize_xsize_ysize_zminXmaxXminYmaxYminZmaxZ
cav_id
10.87411053.155813900.63314.02006.86630.464760.29550.0...15.22900020.32600018.05600024.31200036.99000257.31600227.15900045.2150003.07300027.385000
20.0452589.67167200.33333.74375.56210.471619.58330.0...12.00250018.32099923.43600115.86500130.75700049.07799935.10400058.5400014.07000019.935000
30.0003517.68203700.32434.06055.16420.589410.66670.0...19.75300018.07600018.21999919.17200115.35300133.42900110.80200029.02199910.16700029.339001
40.0021390.75293000.46673.98724.24520.612011.71430.0...35.59800017.52800016.16700216.63400317.66300035.19100022.49799938.66500127.28099843.915001
50.0009111.89612300.39133.51002.01550.35048.00000.0...29.85400013.45700113.22300011.88399926.53599939.99300025.39600038.61899923.91200135.796000
60.0046228.22733400.47063.83983.27870.462315.00000.0...29.17849911.91300212.83799917.57899932.26699844.18000022.97500035.81300020.38900037.967999
70.0005223.67121600.62503.92382.46310.67839.00000.0...26.63800015.50099911.12200012.11800027.77600143.2770009.48400020.60600020.57900032.697001
80.0004219.37811500.26673.93672.96640.51793.00000.0...40.51349814.11899913.15100114.65900021.39800135.51700041.55899854.70999933.18399847.842999
90.0012265.22793300.60614.14022.15930.640019.00000.0...15.52300014.96800013.76300013.89000026.05299941.02100011.03800024.8010018.57800022.468000
100.0030634.74295200.25003.89945.42250.517310.15380.0...3.64250024.19999915.59999819.61900017.56699941.76699828.28300143.882999-6.16700013.452000
\n", + "

10 rows × 58 columns

\n", + "
" + ], + "text/plain": [ + " drug_score volume nb_asph inter_chain apol_asph_proportion \\\n", + "cav_id \n", + "1 0.8741 1053.1558 139 0 0.6331 \n", + "2 0.0452 589.6716 72 0 0.3333 \n", + "3 0.0003 517.6820 37 0 0.3243 \n", + "4 0.0021 390.7529 30 0 0.4667 \n", + "5 0.0009 111.8961 23 0 0.3913 \n", + "6 0.0046 228.2273 34 0 0.4706 \n", + "7 0.0005 223.6712 16 0 0.6250 \n", + "8 0.0004 219.3781 15 0 0.2667 \n", + "9 0.0012 265.2279 33 0 0.6061 \n", + "10 0.0030 634.7429 52 0 0.2500 \n", + "\n", + " mean_asph_radius as_density mean_asph_solv_acc mean_loc_hyd_dens \\\n", + "cav_id \n", + "1 4.0200 6.8663 0.4647 60.2955 \n", + "2 3.7437 5.5621 0.4716 19.5833 \n", + "3 4.0605 5.1642 0.5894 10.6667 \n", + "4 3.9872 4.2452 0.6120 11.7143 \n", + "5 3.5100 2.0155 0.3504 8.0000 \n", + "6 3.8398 3.2787 0.4623 15.0000 \n", + "7 3.9238 2.4631 0.6783 9.0000 \n", + "8 3.9367 2.9664 0.5179 3.0000 \n", + "9 4.1402 2.1593 0.6400 19.0000 \n", + "10 3.8994 5.4225 0.5173 10.1538 \n", + "\n", + " flex ... center_z size_x size_y size_z minX \\\n", + "cav_id ... \n", + "1 0.0 ... 15.229000 20.326000 18.056000 24.312000 36.990002 \n", + "2 0.0 ... 12.002500 18.320999 23.436001 15.865001 30.757000 \n", + "3 0.0 ... 19.753000 18.076000 18.219999 19.172001 15.353001 \n", + "4 0.0 ... 35.598000 17.528000 16.167002 16.634003 17.663000 \n", + "5 0.0 ... 29.854000 13.457001 13.223000 11.883999 26.535999 \n", + "6 0.0 ... 29.178499 11.913002 12.837999 17.578999 32.266998 \n", + "7 0.0 ... 26.638000 15.500999 11.122000 12.118000 27.776001 \n", + "8 0.0 ... 40.513498 14.118999 13.151001 14.659000 21.398001 \n", + "9 0.0 ... 15.523000 14.968000 13.763000 13.890000 26.052999 \n", + "10 0.0 ... 3.642500 24.199999 15.599998 19.619000 17.566999 \n", + "\n", + " maxX minY maxY minZ maxZ \n", + "cav_id \n", + "1 57.316002 27.159000 45.215000 3.073000 27.385000 \n", + "2 49.077999 35.104000 58.540001 4.070000 19.935000 \n", + "3 33.429001 10.802000 29.021999 10.167000 29.339001 \n", + "4 35.191000 22.497999 38.665001 27.280998 43.915001 \n", + "5 39.993000 25.396000 38.618999 23.912001 35.796000 \n", + "6 44.180000 22.975000 35.813000 20.389000 37.967999 \n", + "7 43.277000 9.484000 20.606000 20.579000 32.697001 \n", + "8 35.517000 41.558998 54.709999 33.183998 47.842999 \n", + "9 41.021000 11.038000 24.801001 8.578000 22.468000 \n", + "10 41.766998 28.283001 43.882999 -6.167000 13.452000 \n", + "\n", + "[10 rows x 58 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pockets_data.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "bd48e9b8-3160-42b0-a670-62b6d6340994", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ OXT--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ OXT--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ OXT--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ H2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ H3--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ H2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ H3--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ OXT--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ H2--------------\n", + "------------Warning: Missing Parameters for Residue: GLU @ H3--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n", + "------------Warning: Missing Parameters for Residue: HIS @ HE2--------------\n" + ] + } + ], + "source": [ + "for pocket in pockets_data.index:\n", + " generate_ledock_file(receptor='1XOZ_clean_H.pdb',\n", + " l_list='1XOZ_lig_H.mol2',\n", + " l_list_outfile='ligand.list',\n", + " x=[descriptors_data.loc[pocket,'minX'],descriptors_data.loc[pocket,'maxX']],\n", + " y=[descriptors_data.loc[pocket,'minY'],descriptors_data.loc[pocket,'maxY']],\n", + " z=[descriptors_data.loc[pocket,'minZ'],descriptors_data.loc[pocket,'maxZ']],\n", + " n_poses=5,\n", + " rmsd=1.0,\n", + " out='dock.in')\n", + " \n", + " !../../bin/ledock_linux_x86 dock.in\n", + " \n", + " os.rename('1XOZ_lig_H.dok','ledock_outfiles/1XOZ_ledock_pock_'+str(pocket)+'.dok')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "30c01787-075c-4bac-9fa2-97992ebbd6bd", + "metadata": {}, + "outputs": [], + "source": [ + "for file in os.listdir('ledock_outfiles/'):\n", + " if 'dok' in file:\n", + " dok_to_sdf(dok_file='ledock_outfiles/'+file,output='ledock_outfiles/'+file.replace('dok','sdf'))" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "8595c3f8-70ea-487a-955b-e36d6a1e2d44", + "metadata": {}, + "outputs": [], + "source": [ + "all_mols=[]\n", + "for file in os.listdir('ledock_outfiles//'):\n", + " if 'sdf' in file:\n", + " mols=Chem.SDMolSupplier('ledock_outfiles/'+file)\n", + " for mol in mols:\n", + " all_mols.append(mol) \n", + "out.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "47b683c2-dc51-4e4c-a987-cad59408b255", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "75" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(all_mols)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "8423aa59-690e-4778-9943-e0b6aa722514", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

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

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "view = py3Dmol.view()\n", + "view.removeAllModels()\n", + "view.setViewStyle({'style':'outline','color':'black','width':0.1})\n", + "\n", + "view.addModel(open('1XOZ_clean_H.pdb','r').read(),'pdb')\n", + "Prot=view.getModel()\n", + "Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})\n", + "view.addSurface(py3Dmol.VDW,{'opacity':0.8,'color':'white'})\n", + "\n", + "\n", + "view.addModel(open('1XOZ_lig_H.mol2','r').read(),'mol2')\n", + "ref_m = view.getModel()\n", + "ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.1}})\n", + "\n", + "\n", + "for file in os.listdir(path='1XOZ_clean_H_out/'):\n", + " if '.pqr' in file:\n", + " color = [\"#\"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])]\n", + " view.addModel(open('1XOZ_clean_H_out/'+file,'r').read(),'pqr')\n", + " x = view.getModel()\n", + " x.setStyle({},{'sphere':{'color':color[0],'opacity':0.5}})\n", + " \n", + "for mol in all_mols:\n", + " p=Chem.MolToMolBlock(mol)\n", + " color = [\"#\"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])]\n", + " view.addModel(p,'mol')\n", + " z= view.getModel()\n", + " z.setStyle({},{'stick':{'color':color[0],'radius':0.05}})\n", + "\n", + "view.zoomTo()\n", + "view.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d66076e0-28bd-4c43-b532-b8a2554f79c6", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "AnalysisMD", + "language": "python", + "name": "analysismd" + }, + "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.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/.ipynb_checkpoints/README-checkpoint.ipynb b/.ipynb_checkpoints/README-checkpoint.ipynb index 46ce395f..7f1554a3 100644 --- a/.ipynb_checkpoints/README-checkpoint.ipynb +++ b/.ipynb_checkpoints/README-checkpoint.ipynb @@ -49,28 +49,28 @@ "\n", "**Jupyter Dock is a set of Jupyter Notebooks for performing molecular docking protocols interactively, as well as visualizing, converting file formats and analyzing the results.**

\n", "\n", - "\n", "**See Jupyter Docks in action in my personal website: [chem-workflows](https://chem-workflows.com/)**

\n", "\n", - "\n", "These notebooks are Python 3 compatible. Each protocol and Jupyter notebook has its own test folder for testing and reproducibility evaluation.\n", "\n", + "For all notebooks, the demonstration includes the use of AutoDock Vina and Ledock. When available, some alternatives are mentioned in the protocol.\n", + "\n", "The notebooks includes whole protocols for:\n", "\n", "**1. Molecular Docking**\n", "> For any new user, this is a good place to start. Jupyter Docks' main stages for molecular docking, as well as all functions, methods and codes are described here along with brief explanations, hints, and warnings.\n", "\n", "**2. Virtual Screening**\n", - ">\n", + "> Interested in docking multiple ligands into a single target site? This is what you require. This protocol covers all steps from ligand preparation to docking pose visualization in the target site of interest.\n", "\n", "**3. Blind Docking**\n", - ">\n", + "> Do you want to dock multiple ligands into whole target surface and/or its pockets? This protocol demonstrates the entire process of pocket search and their use as potential organic molecule binding sites.\n", "\n", - "**4. Reverse Docking (Target fishing)**\n", - ">\n", + "**4. Reverse Docking / Target fishing)**\n", + "> Interested in docking one or a few molecules into a set of proteins to identify the most promising target(s)? This notebook covers all of the steps required to achieve such a goal in a condensed manner, making the process seem like a walk in the park.\n", "\n", "**5. Docking Analysis**\n", - ">\n", + "> Have you completed your docking experiments with Jupyter Dock or another approach and want to conduct a rational analysis? You've come to the right place. This notebook summarizes the most common docking analysis techniques, including score comparisons, z-score calculation between softwares, pose clustering, molecular interactions mapping, and more.\n", "\n", "\n", "Question about usage or troubleshooting? Please leave a comment here" @@ -125,6 +125,22 @@ "- [Smina](https://sourceforge.net/projects/smina/)" ] }, + { + "cell_type": "markdown", + "id": "c8e8a7c1-1402-4edf-8db5-a412a2bf8e20", + "metadata": {}, + "source": [ + "## Limitations" + ] + }, + { + "cell_type": "markdown", + "id": "b0cda790-83fd-46c7-b05b-54faa0bc19c5", + "metadata": {}, + "source": [ + "## Examples" + ] + }, { "cell_type": "markdown", "id": "696f484c-7179-4cc7-900f-bbc5b5db3657", diff --git a/1.-Molecular_Docking.ipynb b/1.-Molecular_Docking.ipynb index d59f93bd..d1cb8e03 100644 --- a/1.-Molecular_Docking.ipynb +++ b/1.-Molecular_Docking.ipynb @@ -145,13 +145,13 @@ ] }, { - "cell_type": "code", - "execution_count": 5, - "id": "ae18d2ff-7ece-48d4-99f1-092e398e58ae", + "cell_type": "markdown", + "id": "e1e6f4b6-d96a-458b-9b33-3f4846ff3e68", "metadata": {}, - "outputs": [], "source": [ - "#fix_protein(filename='1AZ8_clean.pdb',addHs_pH=7.4,try_renumberResidues=True,output='1AZ8_clean_H.pdb')" + "```\n", + "fix_protein(filename='1AZ8_clean.pdb',addHs_pH=7.4,try_renumberResidues=True,output='1AZ8_clean_H.pdb')\n", + "```" ] }, { @@ -491,31 +491,18 @@ ] }, { - "cell_type": "code", - "execution_count": 12, - "id": "39c43cc9-dc39-4a67-bc48-8d8149bda190", + "cell_type": "markdown", + "id": "4bcf45df-7781-4243-bc89-881693c03875", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"\\nmol = obutils.load_molecule_from_file('1AZ8_lig_H.mol2')\\n\\npreparator = MoleculePreparation(merge_hydrogens=True,hydrate=False)\\npreparator.prepare(mol)\\n\\npreparator.write_pdbqt_file('1AZ8_lig_H.pdbqt')\\n\"" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "'''\n", + "```\n", "mol = obutils.load_molecule_from_file('1AZ8_lig_H.mol2')\n", "\n", "preparator = MoleculePreparation(merge_hydrogens=True,hydrate=False)\n", "preparator.prepare(mol)\n", "\n", "preparator.write_pdbqt_file('1AZ8_lig_H.pdbqt')\n", - "'''" + "```" ] }, { @@ -527,29 +514,16 @@ ] }, { - "cell_type": "code", - "execution_count": 13, - "id": "7caf04e8-5860-48e2-84e2-3a56aea353c6", + "cell_type": "markdown", + "id": "f0141f8b-86cf-4450-95d9-93dc58a34a1b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"\\nligand = [m for m in pybel.readfile(filename='1AZ8_lig_H.mol2',format='mol2')][0]\\nout=pybel.Outputfile(filename='1AZ8_lig_H.pdbqt',format='pdbqt',overwrite=True)\\nout.write(ligand)\\nout.close()\\n\"" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "'''\n", + "```\n", "ligand = [m for m in pybel.readfile(filename='1AZ8_lig_H.mol2',format='mol2')][0]\n", "out=pybel.Outputfile(filename='1AZ8_lig_H.pdbqt',format='pdbqt',overwrite=True)\n", "out.write(ligand)\n", "out.close()\n", - "'''" + "```" ] }, { @@ -748,26 +722,13 @@ ] }, { - "cell_type": "code", - "execution_count": 16, - "id": "f729fb8c-07af-4591-8b08-4225c066c144", + "cell_type": "markdown", + "id": "800679a2-6785-4c0a-93a2-ac1d396e4c04", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\n!../../bin/smina -r 1AZ8_clean_H.pdbqt -l 1AZ8_lig_H.pdbqt --center_x 31.859 --center_y 13.34 --center_z 17.065 --size_x 24.569 --size_y 18.12 --size_z 17.37 --exhaustiveness 8 --num_modes 5\\n'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "'''\n", + "```\n", "!../../bin/smina -r 1AZ8_clean_H.pdbqt -l 1AZ8_lig_H.pdbqt --center_x 31.859 --center_y 13.34 --center_z 17.065 --size_x 24.569 --size_y 18.12 --size_z 17.37 --exhaustiveness 8 --num_modes 5\n", - "'''" + "```" ] }, { @@ -2046,14 +2007,6 @@ "net = LigNetwork.from_ifp(results_df,lig_suppl[0],kind=\"frame\", frame=0,rotation=270)\n", "net.display()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e8f32c97-7ded-4a09-8419-d4e3bf0154f5", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/3.-Blind_Docking.ipynb b/3.-Blind_Docking.ipynb index 0ee691a5..ad836197 100644 --- a/3.-Blind_Docking.ipynb +++ b/3.-Blind_Docking.ipynb @@ -2936,14 +2936,6 @@ "view.zoomTo()\n", "view.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d66076e0-28bd-4c43-b532-b8a2554f79c6", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/README.ipynb b/README.ipynb index 46ce395f..7f1554a3 100644 --- a/README.ipynb +++ b/README.ipynb @@ -49,28 +49,28 @@ "\n", "**Jupyter Dock is a set of Jupyter Notebooks for performing molecular docking protocols interactively, as well as visualizing, converting file formats and analyzing the results.**

\n", "\n", - "\n", "**See Jupyter Docks in action in my personal website: [chem-workflows](https://chem-workflows.com/)**

\n", "\n", - "\n", "These notebooks are Python 3 compatible. Each protocol and Jupyter notebook has its own test folder for testing and reproducibility evaluation.\n", "\n", + "For all notebooks, the demonstration includes the use of AutoDock Vina and Ledock. When available, some alternatives are mentioned in the protocol.\n", + "\n", "The notebooks includes whole protocols for:\n", "\n", "**1. Molecular Docking**\n", "> For any new user, this is a good place to start. Jupyter Docks' main stages for molecular docking, as well as all functions, methods and codes are described here along with brief explanations, hints, and warnings.\n", "\n", "**2. Virtual Screening**\n", - ">\n", + "> Interested in docking multiple ligands into a single target site? This is what you require. This protocol covers all steps from ligand preparation to docking pose visualization in the target site of interest.\n", "\n", "**3. Blind Docking**\n", - ">\n", + "> Do you want to dock multiple ligands into whole target surface and/or its pockets? This protocol demonstrates the entire process of pocket search and their use as potential organic molecule binding sites.\n", "\n", - "**4. Reverse Docking (Target fishing)**\n", - ">\n", + "**4. Reverse Docking / Target fishing)**\n", + "> Interested in docking one or a few molecules into a set of proteins to identify the most promising target(s)? This notebook covers all of the steps required to achieve such a goal in a condensed manner, making the process seem like a walk in the park.\n", "\n", "**5. Docking Analysis**\n", - ">\n", + "> Have you completed your docking experiments with Jupyter Dock or another approach and want to conduct a rational analysis? You've come to the right place. This notebook summarizes the most common docking analysis techniques, including score comparisons, z-score calculation between softwares, pose clustering, molecular interactions mapping, and more.\n", "\n", "\n", "Question about usage or troubleshooting? Please leave a comment here" @@ -125,6 +125,22 @@ "- [Smina](https://sourceforge.net/projects/smina/)" ] }, + { + "cell_type": "markdown", + "id": "c8e8a7c1-1402-4edf-8db5-a412a2bf8e20", + "metadata": {}, + "source": [ + "## Limitations" + ] + }, + { + "cell_type": "markdown", + "id": "b0cda790-83fd-46c7-b05b-54faa0bc19c5", + "metadata": {}, + "source": [ + "## Examples" + ] + }, { "cell_type": "markdown", "id": "696f484c-7179-4cc7-900f-bbc5b5db3657", diff --git a/README.md b/README.md index 88b5986c..b2900eb2 100644 --- a/README.md +++ b/README.md @@ -25,28 +25,28 @@ **Jupyter Dock is a set of Jupyter Notebooks for performing molecular docking protocols interactively, as well as visualizing, converting file formats and analyzing the results.**

- **See Jupyter Docks in action in my personal website: [chem-workflows](https://chem-workflows.com/)**

- These notebooks are Python 3 compatible. Each protocol and Jupyter notebook has its own test folder for testing and reproducibility evaluation. +For all notebooks, the demonstration includes the use of AutoDock Vina and Ledock. When available, some alternatives are mentioned in the protocol. + The notebooks includes whole protocols for: **1. Molecular Docking** > For any new user, this is a good place to start. Jupyter Docks' main stages for molecular docking, as well as all functions, methods and codes are described here along with brief explanations, hints, and warnings. **2. Virtual Screening** -> +> Interested in docking multiple ligands into a single target site? This is what you require. This protocol covers all steps from ligand preparation to docking pose visualization in the target site of interest. **3. Blind Docking** -> +> Do you want to dock multiple ligands into whole target surface and/or its pockets? This protocol demonstrates the entire process of pocket search and their use as potential organic molecule binding sites. -**4. Reverse Docking (Target fishing)** -> +**4. Reverse Docking / Target fishing)** +> Interested in docking one or a few molecules into a set of proteins to identify the most promising target(s)? This notebook covers all of the steps required to achieve such a goal in a condensed manner, making the process seem like a walk in the park. **5. Docking Analysis** -> +> Have you completed your docking experiments with Jupyter Dock or another approach and want to conduct a rational analysis? You've come to the right place. This notebook summarizes the most common docking analysis techniques, including score comparisons, z-score calculation between softwares, pose clustering, molecular interactions mapping, and more. Question about usage or troubleshooting? Please leave a comment here @@ -88,6 +88,10 @@ Jupyter Dock is reliant on a variety of academic software. The Jupyter Dock.yaml - [Meeko](https://pypi.org/project/meeko/) - [Smina](https://sourceforge.net/projects/smina/) +## Limitations + +## Examples + ## Citation If you use these notebooks, please credit this repository and the required tools as follows: