Task7

Version 4 (Andrey Golovin, 13.12.2023 17:30)

1 1 Andrey Golovin
h1. Докинг низкомолекулярных лигандов в структуру белка 
2 1 Andrey Golovin
3 1 Andrey Golovin
4 1 Andrey Golovin
h2. Традиционные ссылки на полезные ресурсы: 
5 1 Andrey Golovin
6 1 Andrey Golovin
* Видеурок по работе с Autodock Vina [[http://vina.scripps.edu/tutorial.html
7 1 Andrey Golovin
* Статья по ODDT https://jcheminf.springeropen.com/articles/10.1186/s13321-015-0078-2
8 1 Andrey Golovin
9 1 Andrey Golovin
Вся работа по расчётам будет проходить на через ipython notebook.
10 1 Andrey Golovin
11 1 Andrey Golovin
12 1 Andrey Golovin
h3. Введение 
13 1 Andrey Golovin
14 1 Andrey Golovin
Цель данного занятия ознакомится с возможностями докинга низкомолекулярного лиганда в структуру белка.
15 1 Andrey Golovin
16 1 Andrey Golovin
В этом занятии мы будем пользоваться пакетом Autodock Vina и oddt. Это программное обеспечение распространяется бесплатно для академических пользователей.
17 1 Andrey Golovin
18 1 Andrey Golovin
h3. Объект 
19 1 Andrey Golovin
20 1 Andrey Golovin
Вы будете работать с белком лизоцимом структуру которого вы построили на основе гомологичного моделирования на прошлом *практикуме*.
21 1 Andrey Golovin
22 1 Andrey Golovin
Надо определить место докинга, удалить лигнад, запустить докинг и провести анализ
23 1 Andrey Golovin
24 1 Andrey Golovin
25 3 Andrey Golovin
h3. Установка
26 3 Andrey Golovin
27 3 Andrey Golovin
<pre><code class="python">
28 3 Andrey Golovin
!pip install -q condacolab
29 3 Andrey Golovin
import condacolab
30 3 Andrey Golovin
condacolab.install()
31 3 Andrey Golovin
! mamba install -c conda-forge oddt
32 3 Andrey Golovin
</code></pre>
33 3 Andrey Golovin
34 3 Andrey Golovin
Установите и проверьте наличие AutoDock Vina
35 3 Andrey Golovin
36 3 Andrey Golovin
<pre><code class="python">
37 3 Andrey Golovin
! apt install autodock-vina
38 3 Andrey Golovin
! whereis vina
39 3 Andrey Golovin
</code></pre>
40 3 Andrey Golovin
41 3 Andrey Golovin
42 3 Andrey Golovin
43 1 Andrey Golovin
h3. Модули 
44 1 Andrey Golovin
45 1 Andrey Golovin
<pre><code class="python">
46 1 Andrey Golovin
import numpy as np
47 1 Andrey Golovin
import copy
48 1 Andrey Golovin
49 1 Andrey Golovin
# Отображение структур
50 1 Andrey Golovin
import IPython.display
51 1 Andrey Golovin
import ipywidgets
52 1 Andrey Golovin
from IPython.display import display,display_svg,SVG,Image
53 1 Andrey Golovin
54 1 Andrey Golovin
# Open Drug Discovery Toolkit
55 1 Andrey Golovin
import oddt
56 2 Andrey Golovin
import oddt.docking
57 1 Andrey Golovin
import oddt.interactions
58 1 Andrey Golovin
59 1 Andrey Golovin
# Органика
60 1 Andrey Golovin
from rdkit.Chem import Draw
61 1 Andrey Golovin
from rdkit.Chem.Draw import IPythonConsole
62 1 Andrey Golovin
63 3 Andrey Golovin
64 1 Andrey Golovin
</code></pre>
65 1 Andrey Golovin
66 1 Andrey Golovin
67 3 Andrey Golovin
68 1 Andrey Golovin
h3.  Подготовка белка 
69 1 Andrey Golovin
70 3 Andrey Golovin
Удалите из белка остатки лиганда и воды 
71 3 Andrey Golovin
72 1 Andrey Golovin
<pre><code class="python">
73 3 Andrey Golovin
# пример итерации
74 3 Andrey Golovin
for r in prot.residues :
75 3 Andrey Golovin
  print(r.name)
76 3 Andrey Golovin
  for a in r.atoms:
77 3 Andrey Golovin
    print(a.coords)
78 1 Andrey Golovin
79 1 Andrey Golovin
</code></pre>
80 1 Andrey Golovin
81 1 Andrey Golovin
82 3 Andrey Golovin
83 1 Andrey Golovin
<pre><code class="python">
84 1 Andrey Golovin
for a in lig.atoms:
85 3 Andrey Golovin
   # найдите геометрический центр лиганда
86 1 Andrey Golovin
</code></pre>
87 1 Andrey Golovin
88 1 Andrey Golovin
<pre><code class="python">
89 1 Andrey Golovin
newpdb.writePDB(.....)
90 1 Andrey Golovin
</code></pre>
91 1 Andrey Golovin
92 1 Andrey Golovin
h3. Подготовка белка для докинга 
93 1 Andrey Golovin
94 1 Andrey Golovin
<pre><code class="python">
95 1 Andrey Golovin
prot = oddt.toolkit.readfile('pdb','myprot.pdb').next()
96 1 Andrey Golovin
97 1 Andrey Golovin
prot.OBMol.AddPolarHydrogens()
98 1 Andrey Golovin
prot.OBMol.AutomaticPartialCharge()
99 1 Andrey Golovin
100 1 Andrey Golovin
101 1 Andrey Golovin
print 'is it the first mol in 1lmp is protein?',prot.protein,':) and MW of this mol is:', prot.molwt 
102 1 Andrey Golovin
</code></pre>
103 1 Andrey Golovin
104 1 Andrey Golovin
105 1 Andrey Golovin
h3. Лиганды для докинга 
106 4 Andrey Golovin
107 1 Andrey Golovin
<pre><code class="python">
108 1 Andrey Golovin
smiles = ['c1cccc(O)c1', 'c1c(O)ccc(O)c1','c1(O)cc(c2ccccc2)cc(O)c1']
109 1 Andrey Golovin
mols= []
110 1 Andrey Golovin
images =[]
111 1 Andrey Golovin
112 1 Andrey Golovin
for s in smiles:
113 1 Andrey Golovin
    m = oddt.toolkit.readstring('smi', s)
114 1 Andrey Golovin
    if not m.OBMol.Has3D(): 
115 1 Andrey Golovin
        m.make3D(forcefield='mmff94', steps=150)
116 1 Andrey Golovin
        m.removeh()
117 1 Andrey Golovin
        m.OBMol.AddPolarHydrogens()
118 1 Andrey Golovin
119 1 Andrey Golovin
    mols.append(m)
120 1 Andrey Golovin
    ###with print m.OBMol.Has3D() was found that:
121 1 Andrey Golovin
    ### deep copy needed to keep 3D , write svg make mols flat
122 1 Andrey Golovin
    images.append((SVG(copy.deepcopy(m).write('svg'))))
123 1 Andrey Golovin
    
124 1 Andrey Golovin
display_svg(*images)
125 1 Andrey Golovin
</code></pre>
126 1 Andrey Golovin
127 1 Andrey Golovin
h3. Докинг 
128 1 Andrey Golovin
129 1 Andrey Golovin
<pre><code class="python">
130 1 Andrey Golovin
#create docking object
131 1 Andrey Golovin
dock_obj= oddt.docking.AutodockVina.autodock_vina(
132 1 Andrey Golovin
    protein=prot,size=(20,20,20),center=[xx,yy,zz],
133 1 Andrey Golovin
    executable='/usr/bin/vina',autocleanup=True, num_modes=20)
134 1 Andrey Golovin
135 1 Andrey Golovin
print dock_obj.tmp_dir
136 1 Andrey Golovin
print " ".join(dock_obj.params) # Опишите выдачу
137 1 Andrey Golovin
</code></pre>
138 1 Andrey Golovin
139 1 Andrey Golovin
<pre><code class="python">
140 1 Andrey Golovin
# do it
141 1 Andrey Golovin
res = dock_obj.dock(mols,prot)
142 1 Andrey Golovin
</code></pre>
143 1 Andrey Golovin
144 1 Andrey Golovin
h3. Результаты докинга 
145 1 Andrey Golovin
146 1 Andrey Golovin
<pre><code class="python">
147 1 Andrey Golovin
for i,r in enumerate(res):
148 1 Andrey Golovin
    print "%4d%10s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],  r.data['vina_rmsd_ub'], r.residues[0].name)
149 1 Andrey Golovin
</code></pre>
150 1 Andrey Golovin
151 1 Andrey Golovin
h3. Анализ докинга
152 1 Andrey Golovin
153 1 Andrey Golovin
<pre><code class="python">
154 1 Andrey Golovin
for i,r in enumerate(res):
155 1 Andrey Golovin
    hbs = oddt.interactions.hbonds(prot,r)
156 1 Andrey Golovin
    stack= oddt.interactions.pi_stacking(prot,r)
157 1 Andrey Golovin
    phob = oddt.interactions.hydrophobic_contacts(prot,r)
158 1 Andrey Golovin
</code></pre>
159 1 Andrey Golovin
160 1 Andrey Golovin
h3. Визуализация 
161 1 Andrey Golovin
<pre><code class="python">
162 1 Andrey Golovin
for i,r in enumerate(res):
163 1 Andrey Golovin
    r.write(filename='r%s.pdb' % i, format='pdb')
164 1 Andrey Golovin
</code></pre>
165 1 Andrey Golovin
166 1 Andrey Golovin
<pre><code class="bash">
167 1 Andrey Golovin
pymol myprot.pdb r*pdb
168 1 Andrey Golovin
</code></pre>
169 1 Andrey Golovin
170 2 Andrey Golovin
h2. Задание 
171 2 Andrey Golovin
172 2 Andrey Golovin
# NAG содержит в себе СH3C(=O)NH группу. Создайте лиганды где метильный радикал этой группы будет заменён на :
173 2 Andrey Golovin
*  OH
174 2 Andrey Golovin
*  NH3+
175 2 Andrey Golovin
*  H
176 1 Andrey Golovin
*  Ph 
177 1 Andrey Golovin
*  COO-
178 1 Andrey Golovin
179 2 Andrey Golovin
Для каждого из этих лигандов проведите  докинг и представьте результаты в виде таблицы от лучшего заместителя к худшему.
180 1 Andrey Golovin
181 1 Andrey Golovin
# Предложите методы из статьи про ODDT (пакет Sklearn), которые можно было бы использовать в Вашем упражнении