В этом практикуме мы возьмем структуру белка лизоцима, которую построили на предыдущем практикуме.
! pip install rdkit
! pip install oddt
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 30.3 MB/s eta 0:00:00a 0:00:01 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.1/7.1 MB 78.8 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 71.8 MB/s eta 0:00:00 Building wheel for mdtraj (pyproject.toml) ... canceled ERROR: Operation cancelled by user Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/base_command.py", line 169, in exc_logging_wrapper status = run_func(*args) File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/req_command.py", line 242, in wrapper return func(self, options, args) File "/usr/local/lib/python3.10/dist-packages/pip/_internal/commands/install.py", line 417, in run _, build_failures = build( File "/usr/local/lib/python3.10/dist-packages/pip/_internal/wheel_builder.py", line 320, in build wheel_file = _build_one( File "/usr/local/lib/python3.10/dist-packages/pip/_internal/wheel_builder.py", line 194, in _build_one wheel_path = _build_one_inside_env( File "/usr/local/lib/python3.10/dist-packages/pip/_internal/wheel_builder.py", line 234, in _build_one_inside_env wheel_path = build_wheel_pep517( File "/usr/local/lib/python3.10/dist-packages/pip/_internal/operations/build/wheel.py", line 30, in build_wheel_pep517 wheel_name = backend.build_wheel( File "/usr/local/lib/python3.10/dist-packages/pip/_internal/utils/misc.py", line 665, in build_wheel return super().build_wheel( File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_impl.py", line 209, in build_wheel return self._call_hook('build_wheel', { File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_impl.py", line 311, in _call_hook self._subprocess_runner( File "/usr/local/lib/python3.10/dist-packages/pip/_internal/utils/subprocess.py", line 252, in runner call_subprocess( File "/usr/local/lib/python3.10/dist-packages/pip/_internal/utils/subprocess.py", line 166, in call_subprocess line: str = proc.stdout.readline() KeyboardInterrupt During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/bin/pip3", line 8, in <module> sys.exit(main()) File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/main.py", line 79, in main return command.main(cmd_args) File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/base_command.py", line 101, in main return self._main(args) File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main return run(options, args) File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/base_command.py", line 206, in exc_logging_wrapper logger.critical("Operation cancelled by user") File "/usr/lib/python3.10/logging/__init__.py", line 1524, in critical self._log(CRITICAL, msg, args, **kwargs) File "/usr/lib/python3.10/logging/__init__.py", line 1624, in _log self.handle(record) File "/usr/lib/python3.10/logging/__init__.py", line 1634, in handle self.callHandlers(record) File "/usr/lib/python3.10/logging/__init__.py", line 1696, in callHandlers hdlr.handle(record) KeyboardInterrupt ^C Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting rdkit Downloading rdkit-2023.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 29.7/29.7 MB 34.4 MB/s eta 0:00:00 Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from rdkit) (1.22.4) Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from rdkit) (8.4.0) Installing collected packages: rdkit Successfully installed rdkit-2023.3.1 Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting oddt Downloading oddt-0.7.tar.gz (2.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 11.3 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting numpydoc (from oddt) Downloading numpydoc-1.5.0-py3-none-any.whl (52 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 52.4/52.4 kB 6.6 MB/s eta 0:00:00 Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from oddt) (1.16.0) Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.10/dist-packages (from oddt) (1.22.4) Requirement already satisfied: scipy>=0.17 in /usr/local/lib/python3.10/dist-packages (from oddt) (1.10.1) Requirement already satisfied: scikit-learn>=0.18 in /usr/local/lib/python3.10/dist-packages (from oddt) (1.2.2) Requirement already satisfied: joblib>=0.9.4 in /usr/local/lib/python3.10/dist-packages (from oddt) (1.2.0) Requirement already satisfied: pandas>=0.19.2 in /usr/local/lib/python3.10/dist-packages (from oddt) (1.5.3) Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=0.19.2->oddt) (2.8.2) Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=0.19.2->oddt) (2022.7.1) Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.18->oddt) (3.1.0) Collecting sphinx>=4.2 (from numpydoc->oddt) Downloading sphinx-7.0.1-py3-none-any.whl (3.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 64.3 MB/s eta 0:00:00 Requirement already satisfied: Jinja2>=2.10 in /usr/local/lib/python3.10/dist-packages (from numpydoc->oddt) (3.1.2) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from Jinja2>=2.10->numpydoc->oddt) (2.1.2) Requirement already satisfied: sphinxcontrib-applehelp in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (1.0.4) Requirement already satisfied: sphinxcontrib-devhelp in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (1.0.2) Requirement already satisfied: sphinxcontrib-jsmath in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (1.0.1) Requirement already satisfied: sphinxcontrib-htmlhelp>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (2.0.1) Requirement already satisfied: sphinxcontrib-serializinghtml>=1.1.5 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (1.1.5) Requirement already satisfied: sphinxcontrib-qthelp in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (1.0.3) Requirement already satisfied: Pygments>=2.13 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (2.14.0) Collecting docutils<0.21,>=0.18.1 (from sphinx>=4.2->numpydoc->oddt) Downloading docutils-0.20-py3-none-any.whl (577 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 577.9/577.9 kB 36.1 MB/s eta 0:00:00 Requirement already satisfied: snowballstemmer>=2.0 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (2.2.0) Requirement already satisfied: babel>=2.9 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (2.12.1) Requirement already satisfied: alabaster<0.8,>=0.7 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (0.7.13) Requirement already satisfied: imagesize>=1.3 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (1.4.1) Requirement already satisfied: requests>=2.25.0 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (2.27.1) Requirement already satisfied: packaging>=21.0 in /usr/local/lib/python3.10/dist-packages (from sphinx>=4.2->numpydoc->oddt) (23.1) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->sphinx>=4.2->numpydoc->oddt) (1.26.15) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->sphinx>=4.2->numpydoc->oddt) (2022.12.7) Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->sphinx>=4.2->numpydoc->oddt) (2.0.12) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.25.0->sphinx>=4.2->numpydoc->oddt) (3.4) Building wheels for collected packages: oddt Building wheel for oddt (setup.py) ... done Created wheel for oddt: filename=oddt-0.7-py2.py3-none-any.whl size=2409540 sha256=8deb075b2603af46ea0662d349ce2d0960efbd4921671dd762569d0c8d0c0580 Stored in directory: /root/.cache/pip/wheels/56/d9/f0/0806faccf253c082ae93545eb3a2c0e39185304146433742ce Successfully built oddt Installing collected packages: docutils, sphinx, numpydoc, oddt Attempting uninstall: docutils Found existing installation: docutils 0.16 Uninstalling docutils-0.16: Successfully uninstalled docutils-0.16 Attempting uninstall: sphinx Found existing installation: Sphinx 3.5.4 Uninstalling Sphinx-3.5.4: Successfully uninstalled Sphinx-3.5.4 Successfully installed docutils-0.20 numpydoc-1.5.0 oddt-0.7 sphinx-7.0.1
! pip install mdtraj
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting mdtraj Using cached mdtraj-1.9.7.tar.gz (2.1 MB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Requirement already satisfied: numpy>=1.6 in /usr/local/lib/python3.10/dist-packages (from mdtraj) (1.22.4) Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from mdtraj) (1.10.1) Requirement already satisfied: astunparse in /usr/local/lib/python3.10/dist-packages (from mdtraj) (1.6.3) Requirement already satisfied: pyparsing in /usr/local/lib/python3.10/dist-packages (from mdtraj) (3.0.9) Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse->mdtraj) (0.40.0) Requirement already satisfied: six<2.0,>=1.6.1 in /usr/local/lib/python3.10/dist-packages (from astunparse->mdtraj) (1.16.0) Building wheels for collected packages: mdtraj Building wheel for mdtraj (pyproject.toml) ... done Created wheel for mdtraj: filename=mdtraj-1.9.7-cp310-cp310-linux_x86_64.whl size=7957753 sha256=f207fca5cab72cb4c2895b10ff94dd53b8ac9166b3837d6c528cc541ff2a2d34 Stored in directory: /root/.cache/pip/wheels/ad/55/84/3b6abc1f4021160d8b6b876a9ed69148344f57bc443c1d2dd3 Successfully built mdtraj Installing collected packages: mdtraj Successfully installed mdtraj-1.9.7
%%bash
wget https://vina.scripps.edu/wp-content/uploads/sites/55/2020/12/autodock_vina_1_1_2_linux_x86.tgz
tar xzvf autodock_vina_1_1_2_linux_x86.tgz
autodock_vina_1_1_2_linux_x86/ autodock_vina_1_1_2_linux_x86/LICENSE autodock_vina_1_1_2_linux_x86/bin/ autodock_vina_1_1_2_linux_x86/bin/vina autodock_vina_1_1_2_linux_x86/bin/vina_split
--2023-05-14 22:53:38-- https://vina.scripps.edu/wp-content/uploads/sites/55/2020/12/autodock_vina_1_1_2_linux_x86.tgz Resolving vina.scripps.edu (vina.scripps.edu)... 192.26.252.19 Connecting to vina.scripps.edu (vina.scripps.edu)|192.26.252.19|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1238242 (1.2M) [application/x-gzip] Saving to: ‘autodock_vina_1_1_2_linux_x86.tgz’ 0K .......... .......... .......... .......... .......... 4% 1.90M 1s 50K .......... .......... .......... .......... .......... 8% 3.65M 0s 100K .......... .......... .......... .......... .......... 12% 116M 0s 150K .......... .......... .......... .......... .......... 16% 4.11M 0s 200K .......... .......... .......... .......... .......... 20% 70.7M 0s 250K .......... .......... .......... .......... .......... 24% 219M 0s 300K .......... .......... .......... .......... .......... 28% 246M 0s 350K .......... .......... .......... .......... .......... 33% 4.03M 0s 400K .......... .......... .......... .......... .......... 37% 130M 0s 450K .......... .......... .......... .......... .......... 41% 156M 0s 500K .......... .......... .......... .......... .......... 45% 249M 0s 550K .......... .......... .......... .......... .......... 49% 248M 0s 600K .......... .......... .......... .......... .......... 53% 206M 0s 650K .......... .......... .......... .......... .......... 57% 4.21M 0s 700K .......... .......... .......... .......... .......... 62% 159M 0s 750K .......... .......... .......... .......... .......... 66% 168M 0s 800K .......... .......... .......... .......... .......... 70% 121M 0s 850K .......... .......... .......... .......... .......... 74% 244M 0s 900K .......... .......... .......... .......... .......... 78% 232M 0s 950K .......... .......... .......... .......... .......... 82% 244M 0s 1000K .......... .......... .......... .......... .......... 86% 218M 0s 1050K .......... .......... .......... .......... .......... 90% 256M 0s 1100K .......... .......... .......... .......... .......... 95% 258M 0s 1150K .......... .......... .......... .......... .......... 99% 218M 0s 1200K ......... 100% 128M=0.08s 2023-05-14 22:53:38 (14.8 MB/s) - ‘autodock_vina_1_1_2_linux_x86.tgz’ saved [1238242/1238242]
import numpy as np
import copy
# Отображение структур
import IPython.display
import ipywidgets
from IPython.display import display,display_svg,SVG,Image
# Open Drug Discovery Toolkit
import oddt
import oddt.docking
import oddt.interactions
# Органика
from rdkit.Chem import Draw
from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole
# Надо убрать старый лиганд из белка
import mdtraj as md
u = md.load('merlu_lig.pdb')
pdb = u.topology
for i,r in enumerate(pdb.atoms):
print(i,r)
# посмотрим на атомы
0 PHE1-N 1 PHE1-CA 2 PHE1-CB 3 PHE1-CG 4 PHE1-CD1 5 PHE1-CD2 6 PHE1-CE1 7 PHE1-CE2 8 PHE1-CZ 9 PHE1-C 10 PHE1-O 11 ALA2-N 12 ALA2-CA 13 ALA2-CB 14 ALA2-C 15 ALA2-O 16 GLY3-N 17 GLY3-CA 18 GLY3-C 19 GLY3-O 20 GLY4-N 21 GLY4-CA 22 GLY4-C 23 GLY4-O 24 ILE5-N 25 ILE5-CA 26 ILE5-CB 27 ILE5-CG1 28 ILE5-CG2 29 ILE5-CD1 30 ILE5-C 31 ILE5-O 32 VAL6-N 33 VAL6-CA 34 VAL6-CB 35 VAL6-CG1 36 VAL6-CG2 37 VAL6-C 38 VAL6-O 39 SER7-N 40 SER7-CA 41 SER7-CB 42 SER7-OG 43 SER7-C 44 SER7-O 45 GLN8-N 46 GLN8-CA 47 GLN8-CB 48 GLN8-CG 49 GLN8-CD 50 GLN8-OE1 51 GLN8-NE2 52 GLN8-C 53 GLN8-O 54 ARG9-N 55 ARG9-CA 56 ARG9-CB 57 ARG9-CG 58 ARG9-CD 59 ARG9-NE 60 ARG9-CZ 61 ARG9-NH1 62 ARG9-NH2 63 ARG9-C 64 ARG9-O 65 CYS10-N 66 CYS10-CA 67 CYS10-CB 68 CYS10-SG 69 CYS10-C 70 CYS10-O 71 LEU11-N 72 LEU11-CA 73 LEU11-CB 74 LEU11-CG 75 LEU11-CD1 76 LEU11-CD2 77 LEU11-C 78 LEU11-O 79 SER12-N 80 SER12-CA 81 SER12-CB 82 SER12-OG 83 SER12-C 84 SER12-O 85 CYS13-N 86 CYS13-CA 87 CYS13-CB 88 CYS13-SG 89 CYS13-C 90 CYS13-O 91 ILE14-N 92 ILE14-CA 93 ILE14-CB 94 ILE14-CG1 95 ILE14-CG2 96 ILE14-CD1 97 ILE14-C 98 ILE14-O 99 CYS15-N 100 CYS15-CA 101 CYS15-CB 102 CYS15-SG 103 CYS15-C 104 CYS15-O 105 LYS16-N 106 LYS16-CA 107 LYS16-CB 108 LYS16-CG 109 LYS16-CD 110 LYS16-CE 111 LYS16-NZ 112 LYS16-C 113 LYS16-O 114 MET17-N 115 MET17-CA 116 MET17-CB 117 MET17-CG 118 MET17-SD 119 MET17-CE 120 MET17-C 121 MET17-O 122 GLU18-N 123 GLU18-CA 124 GLU18-CB 125 GLU18-CG 126 GLU18-CD 127 GLU18-OE1 128 GLU18-OE2 129 GLU18-C 130 GLU18-O 131 SER19-N 132 SER19-CA 133 SER19-CB 134 SER19-OG 135 SER19-C 136 SER19-O 137 GLY20-N 138 GLY20-CA 139 GLY20-C 140 GLY20-O 141 CYS21-N 142 CYS21-CA 143 CYS21-CB 144 CYS21-SG 145 CYS21-C 146 CYS21-O 147 ARG22-N 148 ARG22-CA 149 ARG22-CB 150 ARG22-CG 151 ARG22-CD 152 ARG22-NE 153 ARG22-CZ 154 ARG22-NH1 155 ARG22-NH2 156 ARG22-C 157 ARG22-O 158 ASN23-N 159 ASN23-CA 160 ASN23-CB 161 ASN23-CG 162 ASN23-OD1 163 ASN23-ND2 164 ASN23-C 165 ASN23-O 166 VAL24-N 167 VAL24-CA 168 VAL24-CB 169 VAL24-CG1 170 VAL24-CG2 171 VAL24-C 172 VAL24-O 173 GLY25-N 174 GLY25-CA 175 GLY25-C 176 GLY25-O 177 CYS26-N 178 CYS26-CA 179 CYS26-CB 180 CYS26-SG 181 CYS26-C 182 CYS26-O 183 LYS27-N 184 LYS27-CA 185 LYS27-CB 186 LYS27-CG 187 LYS27-CD 188 LYS27-CE 189 LYS27-NZ 190 LYS27-C 191 LYS27-O 192 MET28-N 193 MET28-CA 194 MET28-CB 195 MET28-CG 196 MET28-SD 197 MET28-CE 198 MET28-C 199 MET28-O 200 ASP29-N 201 ASP29-CA 202 ASP29-CB 203 ASP29-CG 204 ASP29-OD1 205 ASP29-OD2 206 ASP29-C 207 ASP29-O 208 MET30-N 209 MET30-CA 210 MET30-CB 211 MET30-CG 212 MET30-SD 213 MET30-CE 214 MET30-C 215 MET30-O 216 GLY31-N 217 GLY31-CA 218 GLY31-C 219 GLY31-O 220 SER32-N 221 SER32-CA 222 SER32-CB 223 SER32-OG 224 SER32-C 225 SER32-O 226 LEU33-N 227 LEU33-CA 228 LEU33-CB 229 LEU33-CG 230 LEU33-CD1 231 LEU33-CD2 232 LEU33-C 233 LEU33-O 234 SER34-N 235 SER34-CA 236 SER34-CB 237 SER34-OG 238 SER34-C 239 SER34-O 240 CYS35-N 241 CYS35-CA 242 CYS35-CB 243 CYS35-SG 244 CYS35-C 245 CYS35-O 246 GLY36-N 247 GLY36-CA 248 GLY36-C 249 GLY36-O 250 TYR37-N 251 TYR37-CA 252 TYR37-CB 253 TYR37-CG 254 TYR37-CD1 255 TYR37-CD2 256 TYR37-CE1 257 TYR37-CE2 258 TYR37-CZ 259 TYR37-OH 260 TYR37-C 261 TYR37-O 262 PHE38-N 263 PHE38-CA 264 PHE38-CB 265 PHE38-CG 266 PHE38-CD1 267 PHE38-CD2 268 PHE38-CE1 269 PHE38-CE2 270 PHE38-CZ 271 PHE38-C 272 PHE38-O 273 GLN39-N 274 GLN39-CA 275 GLN39-CB 276 GLN39-CG 277 GLN39-CD 278 GLN39-OE1 279 GLN39-NE2 280 GLN39-C 281 GLN39-O 282 ILE40-N 283 ILE40-CA 284 ILE40-CB 285 ILE40-CG1 286 ILE40-CG2 287 ILE40-CD1 288 ILE40-C 289 ILE40-O 290 LYS41-N 291 LYS41-CA 292 LYS41-CB 293 LYS41-CG 294 LYS41-CD 295 LYS41-CE 296 LYS41-NZ 297 LYS41-C 298 LYS41-O 299 GLU42-N 300 GLU42-CA 301 GLU42-CB 302 GLU42-CG 303 GLU42-CD 304 GLU42-OE1 305 GLU42-OE2 306 GLU42-C 307 GLU42-O 308 ALA43-N 309 ALA43-CA 310 ALA43-CB 311 ALA43-C 312 ALA43-O 313 TYR44-N 314 TYR44-CA 315 TYR44-CB 316 TYR44-CG 317 TYR44-CD1 318 TYR44-CD2 319 TYR44-CE1 320 TYR44-CE2 321 TYR44-CZ 322 TYR44-OH 323 TYR44-C 324 TYR44-O 325 TRP45-N 326 TRP45-CA 327 TRP45-CB 328 TRP45-CG 329 TRP45-CD2 330 TRP45-CD1 331 TRP45-NE1 332 TRP45-CE2 333 TRP45-CE3 334 TRP45-CZ2 335 TRP45-CZ3 336 TRP45-CH2 337 TRP45-C 338 TRP45-O 339 ILE46-N 340 ILE46-CA 341 ILE46-CB 342 ILE46-CG1 343 ILE46-CG2 344 ILE46-CD1 345 ILE46-C 346 ILE46-O 347 ASP47-N 348 ASP47-CA 349 ASP47-CB 350 ASP47-CG 351 ASP47-OD1 352 ASP47-OD2 353 ASP47-C 354 ASP47-O 355 CYS48-N 356 CYS48-CA 357 CYS48-CB 358 CYS48-SG 359 CYS48-C 360 CYS48-O 361 GLY49-N 362 GLY49-CA 363 GLY49-C 364 GLY49-O 365 ARG50-N 366 ARG50-CA 367 ARG50-CB 368 ARG50-CG 369 ARG50-CD 370 ARG50-NE 371 ARG50-CZ 372 ARG50-NH1 373 ARG50-NH2 374 ARG50-C 375 ARG50-O 376 PRO51-N 377 PRO51-CA 378 PRO51-CD 379 PRO51-CB 380 PRO51-CG 381 PRO51-C 382 PRO51-O 383 GLY52-N 384 GLY52-CA 385 GLY52-C 386 GLY52-O 387 SER53-N 388 SER53-CA 389 SER53-CB 390 SER53-OG 391 SER53-C 392 SER53-O 393 SER54-N 394 SER54-CA 395 SER54-CB 396 SER54-OG 397 SER54-C 398 SER54-O 399 TRP55-N 400 TRP55-CA 401 TRP55-CB 402 TRP55-CG 403 TRP55-CD2 404 TRP55-CD1 405 TRP55-NE1 406 TRP55-CE2 407 TRP55-CE3 408 TRP55-CZ2 409 TRP55-CZ3 410 TRP55-CH2 411 TRP55-C 412 TRP55-O 413 LYS56-N 414 LYS56-CA 415 LYS56-CB 416 LYS56-CG 417 LYS56-CD 418 LYS56-CE 419 LYS56-NZ 420 LYS56-C 421 LYS56-O 422 SER57-N 423 SER57-CA 424 SER57-CB 425 SER57-OG 426 SER57-C 427 SER57-O 428 CYS58-N 429 CYS58-CA 430 CYS58-CB 431 CYS58-SG 432 CYS58-C 433 CYS58-O 434 ALA59-N 435 ALA59-CA 436 ALA59-CB 437 ALA59-C 438 ALA59-O 439 ALA60-N 440 ALA60-CA 441 ALA60-CB 442 ALA60-C 443 ALA60-O 444 SER61-N 445 SER61-CA 446 SER61-CB 447 SER61-OG 448 SER61-C 449 SER61-O 450 SER62-N 451 SER62-CA 452 SER62-CB 453 SER62-OG 454 SER62-C 455 SER62-O 456 TYR63-N 457 TYR63-CA 458 TYR63-CB 459 TYR63-CG 460 TYR63-CD1 461 TYR63-CD2 462 TYR63-CE1 463 TYR63-CE2 464 TYR63-CZ 465 TYR63-OH 466 TYR63-C 467 TYR63-O 468 CYS64-N 469 CYS64-CA 470 CYS64-CB 471 CYS64-SG 472 CYS64-C 473 CYS64-O 474 ALA65-N 475 ALA65-CA 476 ALA65-CB 477 ALA65-C 478 ALA65-O 479 SER66-N 480 SER66-CA 481 SER66-CB 482 SER66-OG 483 SER66-C 484 SER66-O 485 LEU67-N 486 LEU67-CA 487 LEU67-CB 488 LEU67-CG 489 LEU67-CD1 490 LEU67-CD2 491 LEU67-C 492 LEU67-O 493 CYS68-N 494 CYS68-CA 495 CYS68-CB 496 CYS68-SG 497 CYS68-C 498 CYS68-O 499 VAL69-N 500 VAL69-CA 501 VAL69-CB 502 VAL69-CG1 503 VAL69-CG2 504 VAL69-C 505 VAL69-O 506 GLN70-N 507 GLN70-CA 508 GLN70-CB 509 GLN70-CG 510 GLN70-CD 511 GLN70-OE1 512 GLN70-NE2 513 GLN70-C 514 GLN70-O 515 ASN71-N 516 ASN71-CA 517 ASN71-CB 518 ASN71-CG 519 ASN71-OD1 520 ASN71-ND2 521 ASN71-C 522 ASN71-O 523 TYR72-N 524 TYR72-CA 525 TYR72-CB 526 TYR72-CG 527 TYR72-CD1 528 TYR72-CD2 529 TYR72-CE1 530 TYR72-CE2 531 TYR72-CZ 532 TYR72-OH 533 TYR72-C 534 TYR72-O 535 MET73-N 536 MET73-CA 537 MET73-CB 538 MET73-CG 539 MET73-SD 540 MET73-CE 541 MET73-C 542 MET73-O 543 LYS74-N 544 LYS74-CA 545 LYS74-CB 546 LYS74-CG 547 LYS74-CD 548 LYS74-CE 549 LYS74-NZ 550 LYS74-C 551 LYS74-O 552 ARG75-N 553 ARG75-CA 554 ARG75-CB 555 ARG75-CG 556 ARG75-CD 557 ARG75-NE 558 ARG75-CZ 559 ARG75-NH1 560 ARG75-NH2 561 ARG75-C 562 ARG75-O 563 TYR76-N 564 TYR76-CA 565 TYR76-CB 566 TYR76-CG 567 TYR76-CD1 568 TYR76-CD2 569 TYR76-CE1 570 TYR76-CE2 571 TYR76-CZ 572 TYR76-OH 573 TYR76-C 574 TYR76-O 575 ALA77-N 576 ALA77-CA 577 ALA77-CB 578 ALA77-C 579 ALA77-O 580 LYS78-N 581 LYS78-CA 582 LYS78-CB 583 LYS78-CG 584 LYS78-CD 585 LYS78-CE 586 LYS78-NZ 587 LYS78-C 588 LYS78-O 589 TRP79-N 590 TRP79-CA 591 TRP79-CB 592 TRP79-CG 593 TRP79-CD2 594 TRP79-CD1 595 TRP79-NE1 596 TRP79-CE2 597 TRP79-CE3 598 TRP79-CZ2 599 TRP79-CZ3 600 TRP79-CH2 601 TRP79-C 602 TRP79-O 603 ALA80-N 604 ALA80-CA 605 ALA80-CB 606 ALA80-C 607 ALA80-O 608 GLY81-N 609 GLY81-CA 610 GLY81-C 611 GLY81-O 612 CYS82-N 613 CYS82-CA 614 CYS82-CB 615 CYS82-SG 616 CYS82-C 617 CYS82-O 618 PRO83-N 619 PRO83-CA 620 PRO83-CD 621 PRO83-CB 622 PRO83-CG 623 PRO83-C 624 PRO83-O 625 LEU84-N 626 LEU84-CA 627 LEU84-CB 628 LEU84-CG 629 LEU84-CD1 630 LEU84-CD2 631 LEU84-C 632 LEU84-O 633 ARG85-N 634 ARG85-CA 635 ARG85-CB 636 ARG85-CG 637 ARG85-CD 638 ARG85-NE 639 ARG85-CZ 640 ARG85-NH1 641 ARG85-NH2 642 ARG85-C 643 ARG85-O 644 CYS86-N 645 CYS86-CA 646 CYS86-CB 647 CYS86-SG 648 CYS86-C 649 CYS86-O 650 GLU87-N 651 GLU87-CA 652 GLU87-CB 653 GLU87-CG 654 GLU87-CD 655 GLU87-OE1 656 GLU87-OE2 657 GLU87-C 658 GLU87-O 659 GLY88-N 660 GLY88-CA 661 GLY88-C 662 GLY88-O 663 PHE89-N 664 PHE89-CA 665 PHE89-CB 666 PHE89-CG 667 PHE89-CD1 668 PHE89-CD2 669 PHE89-CE1 670 PHE89-CE2 671 PHE89-CZ 672 PHE89-C 673 PHE89-O 674 ALA90-N 675 ALA90-CA 676 ALA90-CB 677 ALA90-C 678 ALA90-O 679 ARG91-N 680 ARG91-CA 681 ARG91-CB 682 ARG91-CG 683 ARG91-CD 684 ARG91-NE 685 ARG91-CZ 686 ARG91-NH1 687 ARG91-NH2 688 ARG91-C 689 ARG91-O 690 GLU92-N 691 GLU92-CA 692 GLU92-CB 693 GLU92-CG 694 GLU92-CD 695 GLU92-OE1 696 GLU92-OE2 697 GLU92-C 698 GLU92-O 699 HIS93-N 700 HIS93-CA 701 HIS93-ND1 702 HIS93-CG 703 HIS93-CB 704 HIS93-NE2 705 HIS93-CD2 706 HIS93-CE1 707 HIS93-C 708 HIS93-O 709 ASN94-N 710 ASN94-CA 711 ASN94-CB 712 ASN94-CG 713 ASN94-OD1 714 ASN94-ND2 715 ASN94-C 716 ASN94-O 717 GLY95-N 718 GLY95-CA 719 GLY95-C 720 GLY95-O 721 GLY96-N 722 GLY96-CA 723 GLY96-C 724 GLY96-O 725 PRO97-N 726 PRO97-CA 727 PRO97-CD 728 PRO97-CB 729 PRO97-CG 730 PRO97-C 731 PRO97-O 732 ARG98-N 733 ARG98-CA 734 ARG98-CB 735 ARG98-CG 736 ARG98-CD 737 ARG98-NE 738 ARG98-CZ 739 ARG98-NH1 740 ARG98-NH2 741 ARG98-C 742 ARG98-O 743 GLY99-N 744 GLY99-CA 745 GLY99-C 746 GLY99-O 747 CYS100-N 748 CYS100-CA 749 CYS100-CB 750 CYS100-SG 751 CYS100-C 752 CYS100-O 753 LYS101-N 754 LYS101-CA 755 LYS101-CB 756 LYS101-CG 757 LYS101-CD 758 LYS101-CE 759 LYS101-NZ 760 LYS101-C 761 LYS101-O 762 LYS102-N 763 LYS102-CA 764 LYS102-CB 765 LYS102-CG 766 LYS102-CD 767 LYS102-CE 768 LYS102-NZ 769 LYS102-C 770 LYS102-O 771 GLY103-N 772 GLY103-CA 773 GLY103-C 774 GLY103-O 775 SER104-N 776 SER104-CA 777 SER104-CB 778 SER104-OG 779 SER104-C 780 SER104-O 781 THR105-N 782 THR105-CA 783 THR105-CB 784 THR105-OG1 785 THR105-CG2 786 THR105-C 787 THR105-O 788 ILE106-N 789 ILE106-CA 790 ILE106-CB 791 ILE106-CG1 792 ILE106-CG2 793 ILE106-CD1 794 ILE106-C 795 ILE106-O 796 GLY107-N 797 GLY107-CA 798 GLY107-C 799 GLY107-O 800 TYR108-N 801 TYR108-CA 802 TYR108-CB 803 TYR108-CG 804 TYR108-CD1 805 TYR108-CD2 806 TYR108-CE1 807 TYR108-CE2 808 TYR108-CZ 809 TYR108-OH 810 TYR108-C 811 TYR108-O 812 TRP109-N 813 TRP109-CA 814 TRP109-CB 815 TRP109-CG 816 TRP109-CD2 817 TRP109-CD1 818 TRP109-NE1 819 TRP109-CE2 820 TRP109-CE3 821 TRP109-CZ2 822 TRP109-CZ3 823 TRP109-CH2 824 TRP109-C 825 TRP109-O 826 ASN110-N 827 ASN110-CA 828 ASN110-CB 829 ASN110-CG 830 ASN110-OD1 831 ASN110-ND2 832 ASN110-C 833 ASN110-O 834 ARG111-N 835 ARG111-CA 836 ARG111-CB 837 ARG111-CG 838 ARG111-CD 839 ARG111-NE 840 ARG111-CZ 841 ARG111-NH1 842 ARG111-NH2 843 ARG111-C 844 ARG111-O 845 LEU112-N 846 LEU112-CA 847 LEU112-CB 848 LEU112-CG 849 LEU112-CD1 850 LEU112-CD2 851 LEU112-C 852 LEU112-O 853 GLN113-N 854 GLN113-CA 855 GLN113-CB 856 GLN113-CG 857 GLN113-CD 858 GLN113-OE1 859 GLN113-NE2 860 GLN113-C 861 GLN113-O 862 LYS114-N 863 LYS114-CA 864 LYS114-CB 865 LYS114-CG 866 LYS114-CD 867 LYS114-CE 868 LYS114-NZ 869 LYS114-C 870 LYS114-O 871 ILE115-N 872 ILE115-CA 873 ILE115-CB 874 ILE115-CG1 875 ILE115-CG2 876 ILE115-CD1 877 ILE115-C 878 ILE115-O 879 SER116-N 880 SER116-CA 881 SER116-CB 882 SER116-OG 883 SER116-C 884 SER116-O 885 GLY117-N 886 GLY117-CA 887 GLY117-C 888 GLY117-O 889 CYS118-N 890 CYS118-CA 891 CYS118-CB 892 CYS118-SG 893 CYS118-C 894 CYS118-O 895 HIS119-N 896 HIS119-CA 897 HIS119-ND1 898 HIS119-CG 899 HIS119-CB 900 HIS119-NE2 901 HIS119-CD2 902 HIS119-CE1 903 HIS119-C 904 HIS119-O 905 GLY120-N 906 GLY120-CA 907 GLY120-C 908 GLY120-O 909 VAL121-N 910 VAL121-CA 911 VAL121-CB 912 VAL121-CG1 913 VAL121-CG2 914 VAL121-C 915 VAL121-O 916 GLN122-N 917 GLN122-CA 918 GLN122-CB 919 GLN122-CG 920 GLN122-CD 921 GLN122-OE1 922 GLN122-NE2 923 GLN122-C 924 GLN122-O 925 GLN122-OXT 926 NDG123-C1 927 NDG123-C2 928 NDG123-C3 929 NDG123-C4 930 NDG123-C5 931 NDG123-C6 932 NDG123-C7 933 NDG123-C8 934 NDG123-O5 935 NDG123-O3 936 NDG123-O4 937 NDG123-O6 938 NDG123-O7 939 NDG123-N2 940 NDG123-O1 941 NAG124-C1 942 NAG124-C2 943 NAG124-C3 944 NAG124-C4 945 NAG124-C5 946 NAG124-C6 947 NAG124-C7 948 NAG124-C8 949 NAG124-N2 950 NAG124-O3 951 NAG124-O4 952 NAG124-O5 953 NAG124-O6 954 NAG124-O7 955 NAG125-C1 956 NAG125-C2 957 NAG125-C3 958 NAG125-C4 959 NAG125-C5 960 NAG125-C6 961 NAG125-C7 962 NAG125-C8 963 NAG125-N2 964 NAG125-O3 965 NAG125-O4 966 NAG125-O5 967 NAG125-O6 968 NAG125-O7
# сохраним pdb без лиганда
u2 = u.atom_slice(range(926))
u2.save_pdb('merlu-clean.pdb', force_overwrite=True)
lig = u.atom_slice(range(926,969))
# найдем геометрический центр лиганда
center = lig.xyz[0].mean(axis=0) * 10
center
array([50.316143, 35.74484 , 26.063713], dtype=float32)
prot = next(oddt.toolkit.readfile('pdb','merlu-clean.pdb'))
print('is it the first mol in lys_merlu is protein?',prot.protein,':) and MW of this mol is:', prot.molwt )
is it the first mol in lys_merlu is protein? False :) and MW of this mol is: 13377.657999999976
from rdkit import Chem
from rdkit.Chem import AllChem
# Лиганд NAG
nag=Chem.MolFromSmiles('CC(=O)NC1C(O)OC(CO)C(O)C1O')
AllChem.Compute2DCoords(nag)
display(nag)
Вот здесь заменим метильный радикал в группе СH3C(=O)NH на что-то другое.
smiles = ['CC(=O)NC1C(O)OC(CO)C(O)C1O', # NAG
'OC(=O)NC1C(O)OC(CO)C(O)C1O', # OH
'[NH3+]C(=O)NC1C(O)OC(CO)C(O)C1O', # NH3+
'C(=O)NC1C(O)OC(CO)C(O)C1O', # H
'C=1(C=CC=CC1)C(=O)NC1C(O)OC(CO)C(O)C1O', # Ph
'C(C([O-])=O)(=O)NC1C(O)OC(CO)C(O)C1O' # COO-
]
mols= []
images =[]
for s in smiles:
m = oddt.toolkit.readstring('smi', s)
m.make3D(forcefield='mmff94', steps=150)
mols.append(m)
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
[22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs() [22:44:28] Molecule does not have explicit Hs. Consider calling AddHs()
# create docking object
dock_obj = oddt.docking.AutodockVina.autodock_vina(
protein = prot,size=(20,20,20),center=center,
executable = './autodock_vina_1_1_2_linux_x86/bin/vina',autocleanup=True, num_modes=9)
print(dock_obj.tmp_dir)
print(" ".join(dock_obj.params))
/tmp/autodock_vina_ujscgfxi --center_x 50.316143 --center_y 35.74484 --center_z 26.063713 --size_x 20 --size_y 20 --size_z 20 --exhaustiveness 8 --num_modes 9 --energy_range 3
# do it
res = dock_obj.dock(mols,prot)
Посмотрим теперь на результат этого докинга
for i,r in enumerate(res):
### Узнаем дескриптор "формула"
formula = Chem.rdMolDescriptors.CalcMolFormula(r.Mol)
print("%4d%10s%8s%8s%8s" %(i, formula, r.data['vina_affinity'], r.data['vina_rmsd_ub'], r.residues[0].name))
0 C8H15NO6 -4.7 0.000 UNL 1 C8H15NO6 -4.6 6.782 UNL 2 C8H15NO6 -4.5 4.214 UNL 3 C8H15NO6 -4.5 6.984 UNL 4 C8H15NO6 -4.5 4.302 UNL 5 C8H15NO6 -4.4 7.540 UNL 6 C8H15NO6 -4.4 5.172 UNL 7 C8H15NO6 -4.4 6.772 UNL 8 C8H15NO6 -4.3 7.345 UNL 9 C7H13NO7 -4.4 0.000 UNL 10 C7H13NO7 -4.4 5.041 UNL 11 C7H13NO7 -4.4 7.551 UNL 12 C7H13NO7 -4.3 8.500 UNL 13 C7H13NO7 -4.3 4.794 UNL 14 C7H13NO7 -4.2 4.023 UNL 15 C7H13NO7 -4.2 6.638 UNL 16 C7H13NO7 -4.1 10.144 UNL 17 C7H13NO7 -4.1 5.520 UNL 18C7H15N2O6+ -4.6 0.000 UNL 19C7H15N2O6+ -4.5 5.256 UNL 20C7H15N2O6+ -4.5 5.412 UNL 21C7H15N2O6+ -4.4 4.821 UNL 22C7H15N2O6+ -4.4 6.848 UNL 23C7H15N2O6+ -4.4 3.024 UNL 24C7H15N2O6+ -4.1 7.030 UNL 25C7H15N2O6+ -4.1 7.604 UNL 26C7H15N2O6+ -4.1 7.730 UNL 27 C7H13NO6 -4.5 0.000 UNL 28 C7H13NO6 -4.4 6.844 UNL 29 C7H13NO6 -4.4 4.667 UNL 30 C7H13NO6 -4.4 4.428 UNL 31 C7H13NO6 -4.3 3.431 UNL 32 C7H13NO6 -4.3 6.147 UNL 33 C7H13NO6 -4.2 6.007 UNL 34 C7H13NO6 -4.2 4.287 UNL 35 C7H13NO6 -4.1 2.950 UNL 36 C13H17NO6 -6.0 0.000 UNL 37 C13H17NO6 -5.9 7.538 UNL 38 C13H17NO6 -5.7 6.931 UNL 39 C13H17NO6 -5.6 2.689 UNL 40 C13H17NO6 -5.5 10.137 UNL 41 C13H17NO6 -5.5 7.268 UNL 42 C13H17NO6 -5.3 6.615 UNL 43 C13H17NO6 -5.2 6.777 UNL 44 C13H17NO6 -5.1 9.322 UNL 45 C8H12NO8- -5.2 0.000 UNL 46 C8H12NO8- -5.0 5.201 UNL 47 C8H12NO8- -4.8 5.071 UNL 48 C8H12NO8- -4.8 4.932 UNL 49 C8H12NO8- -4.7 7.137 UNL 50 C8H12NO8- -4.6 5.892 UNL 51 C8H12NO8- -4.6 5.489 UNL 52 C8H12NO8- -4.6 4.992 UNL 53 C8H12NO8- -4.5 6.848 UNL
Лиганды отсортированы по типам, а внутри типов - от лучшего к худшему. Но можно отсортировать и в целом по аффинности
sorted_res = sorted([(i, Chem.rdMolDescriptors.CalcMolFormula(r.Mol), r.data['vina_affinity'], r.data['vina_rmsd_ub'], r.residues[0].name) for i, r in enumerate(res)], key=lambda x: x[2], reverse=True)
print('№\tformula\t\taff\trmsd\tname')
for r in sorted_res:
print(f"{r[0]}\t{r[1]}\t{r[2]}\t{r[3]}\t{r[4]}")
№ formula aff rmsd name 36 C13H17NO6 -6.0 0.000 UNL 37 C13H17NO6 -5.9 7.538 UNL 38 C13H17NO6 -5.7 6.931 UNL 39 C13H17NO6 -5.6 2.689 UNL 40 C13H17NO6 -5.5 10.137 UNL 41 C13H17NO6 -5.5 7.268 UNL 42 C13H17NO6 -5.3 6.615 UNL 43 C13H17NO6 -5.2 6.777 UNL 45 C8H12NO8- -5.2 0.000 UNL 44 C13H17NO6 -5.1 9.322 UNL 46 C8H12NO8- -5.0 5.201 UNL 47 C8H12NO8- -4.8 5.071 UNL 48 C8H12NO8- -4.8 4.932 UNL 0 C8H15NO6 -4.7 0.000 UNL 49 C8H12NO8- -4.7 7.137 UNL 1 C8H15NO6 -4.6 6.782 UNL 18 C7H15N2O6+ -4.6 0.000 UNL 50 C8H12NO8- -4.6 5.892 UNL 51 C8H12NO8- -4.6 5.489 UNL 52 C8H12NO8- -4.6 4.992 UNL 2 C8H15NO6 -4.5 4.214 UNL 3 C8H15NO6 -4.5 6.984 UNL 4 C8H15NO6 -4.5 4.302 UNL 19 C7H15N2O6+ -4.5 5.256 UNL 20 C7H15N2O6+ -4.5 5.412 UNL 27 C7H13NO6 -4.5 0.000 UNL 53 C8H12NO8- -4.5 6.848 UNL 5 C8H15NO6 -4.4 7.540 UNL 6 C8H15NO6 -4.4 5.172 UNL 7 C8H15NO6 -4.4 6.772 UNL 9 C7H13NO7 -4.4 0.000 UNL 10 C7H13NO7 -4.4 5.041 UNL 11 C7H13NO7 -4.4 7.551 UNL 21 C7H15N2O6+ -4.4 4.821 UNL 22 C7H15N2O6+ -4.4 6.848 UNL 23 C7H15N2O6+ -4.4 3.024 UNL 28 C7H13NO6 -4.4 6.844 UNL 29 C7H13NO6 -4.4 4.667 UNL 30 C7H13NO6 -4.4 4.428 UNL 8 C8H15NO6 -4.3 7.345 UNL 12 C7H13NO7 -4.3 8.500 UNL 13 C7H13NO7 -4.3 4.794 UNL 31 C7H13NO6 -4.3 3.431 UNL 32 C7H13NO6 -4.3 6.147 UNL 14 C7H13NO7 -4.2 4.023 UNL 15 C7H13NO7 -4.2 6.638 UNL 33 C7H13NO6 -4.2 6.007 UNL 34 C7H13NO6 -4.2 4.287 UNL 16 C7H13NO7 -4.1 10.144 UNL 17 C7H13NO7 -4.1 5.520 UNL 24 C7H15N2O6+ -4.1 7.030 UNL 25 C7H15N2O6+ -4.1 7.604 UNL 26 C7H15N2O6+ -4.1 7.730 UNL 35 C7H13NO6 -4.1 2.950 UNL
Видим, что лучшими лигандами являются те, где радикал заменен на Ph.
Можно еще на всякие параметры посмотреть.
sorted2_res = sorted([(i, Chem.rdMolDescriptors.CalcMolFormula(r.Mol), r.data['vina_affinity'], r.data['vina_rmsd_ub'], r.residues[0].name, len(oddt.interactions.hbonds(prot,r)[0]), len(oddt.interactions.pi_stacking(prot,r)[0]), len(oddt.interactions.hydrophobic_contacts(prot,r)[0])) for i, r in enumerate(res)], key=lambda x: x[2], reverse=True)
print('№\tformula\t\taff\trmsd\tname\thbs\tstack\tphob')
for r in sorted2_res:
print(f"{r[0]}\t{r[1]}\t{r[2]}\t{r[3]}\t{r[4]}\t{r[5]}\t{r[6]}\t{r[7]}")
№ formula aff rmsd name hbs stack phob 36 C13H17NO6 -6.0 0.000 UNL 4 0 6 37 C13H17NO6 -5.9 7.538 UNL 2 1 12 38 C13H17NO6 -5.7 6.931 UNL 5 1 10 39 C13H17NO6 -5.6 2.689 UNL 1 0 2 40 C13H17NO6 -5.5 10.137 UNL 2 0 5 41 C13H17NO6 -5.5 7.268 UNL 7 1 10 42 C13H17NO6 -5.3 6.615 UNL 4 0 2 43 C13H17NO6 -5.2 6.777 UNL 1 0 8 45 C8H12NO8- -5.2 0.000 UNL 2 0 0 44 C13H17NO6 -5.1 9.322 UNL 4 0 1 46 C8H12NO8- -5.0 5.201 UNL 3 0 0 47 C8H12NO8- -4.8 5.071 UNL 4 0 0 48 C8H12NO8- -4.8 4.932 UNL 4 0 0 0 C8H15NO6 -4.7 0.000 UNL 2 0 0 49 C8H12NO8- -4.7 7.137 UNL 2 0 0 1 C8H15NO6 -4.6 6.782 UNL 3 0 0 18 C7H15N2O6+ -4.6 0.000 UNL 3 0 0 50 C8H12NO8- -4.6 5.892 UNL 4 0 0 51 C8H12NO8- -4.6 5.489 UNL 1 0 0 52 C8H12NO8- -4.6 4.992 UNL 4 0 0 2 C8H15NO6 -4.5 4.214 UNL 4 0 1 3 C8H15NO6 -4.5 6.984 UNL 1 0 2 4 C8H15NO6 -4.5 4.302 UNL 4 0 3 19 C7H15N2O6+ -4.5 5.256 UNL 1 0 0 20 C7H15N2O6+ -4.5 5.412 UNL 3 0 0 27 C7H13NO6 -4.5 0.000 UNL 1 0 0 53 C8H12NO8- -4.5 6.848 UNL 2 0 0 5 C8H15NO6 -4.4 7.540 UNL 2 0 0 6 C8H15NO6 -4.4 5.172 UNL 2 0 2 7 C8H15NO6 -4.4 6.772 UNL 0 0 2 9 C7H13NO7 -4.4 0.000 UNL 7 0 0 10 C7H13NO7 -4.4 5.041 UNL 6 0 0 11 C7H13NO7 -4.4 7.551 UNL 4 0 0 21 C7H15N2O6+ -4.4 4.821 UNL 1 0 0 22 C7H15N2O6+ -4.4 6.848 UNL 6 0 0 23 C7H15N2O6+ -4.4 3.024 UNL 1 0 0 28 C7H13NO6 -4.4 6.844 UNL 3 0 0 29 C7H13NO6 -4.4 4.667 UNL 2 0 0 30 C7H13NO6 -4.4 4.428 UNL 3 0 0 8 C8H15NO6 -4.3 7.345 UNL 2 0 0 12 C7H13NO7 -4.3 8.500 UNL 3 0 0 13 C7H13NO7 -4.3 4.794 UNL 5 0 0 31 C7H13NO6 -4.3 3.431 UNL 4 0 0 32 C7H13NO6 -4.3 6.147 UNL 3 0 0 14 C7H13NO7 -4.2 4.023 UNL 4 0 0 15 C7H13NO7 -4.2 6.638 UNL 1 0 0 33 C7H13NO6 -4.2 6.007 UNL 4 0 0 34 C7H13NO6 -4.2 4.287 UNL 2 0 0 16 C7H13NO7 -4.1 10.144 UNL 2 0 0 17 C7H13NO7 -4.1 5.520 UNL 6 0 0 24 C7H15N2O6+ -4.1 7.030 UNL 1 0 0 25 C7H15N2O6+ -4.1 7.604 UNL 3 0 0 26 C7H15N2O6+ -4.1 7.730 UNL 2 0 0 35 C7H13NO6 -4.1 2.950 UNL 2 0 0
Посмотрим на результат с некоторыми лигандами (визуализируем).
for i, r in [(i, res[i]) for i in [36, 37, 45, 35]]:
r.write(filename='r%s.pdb' % i, format='pdb')
Лиганды 36 и 37 (являются двумя лучшими, оба с фенильной группой):
Image('pr11_2.png', width = 800)
Интересно, что они ориентированы вообще по-разному.
Посмотрим теперь на тоже хороший результат, но не с фенилом, а с COO- - номер 45:
Image('pr11_3.png', width = 800)
Самый худший вариант - с Н радикалом (номер 35):
Image('pr11_4.png', width = 800)
Ну, наверное эти лиганды (по крайней мере, из числа лучших) действительно могли бы так взаимодействовать с этим белком. В белке как раз неплохой гидрофобный карман.
По поводу статьи про ODDT - думаю, в нашем случае можно делать предварительную фильтрацию лигандов (выбирать из какого-то количества по правилу Липински). Еще наверное можно считать как score, так и rescore.