Докинг низкомолекулярных лигандов в структуру белка¶

В этом практикуме мы возьмем структуру белка лизоцима, которую построили на предыдущем практикуме.

Сначала загрузим модули¶

In [1]:
! 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
In [5]:
! 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
In [25]:
%%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]

In [2]:
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

Подготовка белка¶

In [7]:
# Надо убрать старый лиганд из белка
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
In [8]:
# сохраним pdb без лиганда
u2 = u.atom_slice(range(926))
u2.save_pdb('merlu-clean.pdb', force_overwrite=True)
In [9]:
lig = u.atom_slice(range(926,969))

# найдем геометрический центр лиганда
center = lig.xyz[0].mean(axis=0) * 10
In [10]:
center
Out[10]:
array([50.316143, 35.74484 , 26.063713], dtype=float32)

Подготовка белка для докинга¶

In [12]:
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

Лиганды для докинга¶

In [15]:
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 на что-то другое.

In [22]:
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()

Докинг¶

In [26]:
# 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
In [27]:
# do it
res = dock_obj.dock(mols,prot)

Посмотрим теперь на результат этого докинга

In [29]:
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

Лиганды отсортированы по типам, а внутри типов - от лучшего к худшему. Но можно отсортировать и в целом по аффинности

In [30]:
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)
In [33]:
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.

Анализ докинга¶

Можно еще на всякие параметры посмотреть.

In [40]:
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)
In [41]:
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

Посмотрим на результат с некоторыми лигандами (визуализируем).

In [42]:
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 (являются двумя лучшими, оба с фенильной группой):

In [49]:
Image('pr11_2.png', width = 800)
Out[49]:

Интересно, что они ориентированы вообще по-разному.

Посмотрим теперь на тоже хороший результат, но не с фенилом, а с COO- - номер 45:

In [50]:
Image('pr11_3.png', width = 800)
Out[50]:

Самый худший вариант - с Н радикалом (номер 35):

In [51]:
Image('pr11_4.png', width = 800)
Out[51]:

Ну, наверное эти лиганды (по крайней мере, из числа лучших) действительно могли бы так взаимодействовать с этим белком. В белке как раз неплохой гидрофобный карман.

По поводу статьи про ODDT - думаю, в нашем случае можно делать предварительную фильтрацию лигандов (выбирать из какого-то количества по правилу Липински). Еще наверное можно считать как score, так и rescore.