Task8
Version 2 (Andrey Golovin, 12.10.2022 09:15)
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 | 1 | Andrey Golovin | h3. Модули |
26 | 1 | Andrey Golovin | |
27 | 1 | Andrey Golovin | <pre><code class="python"> |
28 | 1 | Andrey Golovin | import numpy as np |
29 | 1 | Andrey Golovin | import copy |
30 | 1 | Andrey Golovin | |
31 | 1 | Andrey Golovin | # Отображение структур |
32 | 1 | Andrey Golovin | import IPython.display |
33 | 1 | Andrey Golovin | import ipywidgets |
34 | 1 | Andrey Golovin | from IPython.display import display,display_svg,SVG,Image |
35 | 1 | Andrey Golovin | |
36 | 1 | Andrey Golovin | # Open Drug Discovery Toolkit |
37 | 1 | Andrey Golovin | import oddt |
38 | 1 | Andrey Golovin | import oddt.docking |
39 | 1 | Andrey Golovin | import oddt.interactions |
40 | 1 | Andrey Golovin | |
41 | 1 | Andrey Golovin | # Органика |
42 | 1 | Andrey Golovin | from rdkit.Chem import Draw |
43 | 1 | Andrey Golovin | from rdkit.Chem.Draw import IPythonConsole |
44 | 1 | Andrey Golovin | |
45 | 1 | Andrey Golovin | import pmx # Модуль для манипулирования pdb |
46 | 1 | Andrey Golovin | </code></pre> |
47 | 1 | Andrey Golovin | |
48 | 1 | Andrey Golovin | |
49 | 1 | Andrey Golovin | h3. Подготовка белка |
50 | 1 | Andrey Golovin | |
51 | 1 | Andrey Golovin | <pre><code class="python"> |
52 | 1 | Andrey Golovin | pdb=pmx.Model('my.B99990001.pdb') |
53 | 1 | Andrey Golovin | |
54 | 1 | Andrey Golovin | for r in pdb.residues[135:]: |
55 | 1 | Andrey Golovin | print r #посмотрим остатки |
56 | 1 | Andrey Golovin | </code></pre> |
57 | 1 | Andrey Golovin | |
58 | 1 | Andrey Golovin | <pre><code class="python"> |
59 | 1 | Andrey Golovin | # создание объектов белок и лиганда |
60 | 1 | Andrey Golovin | newpdb = pdb.copy() |
61 | 1 | Andrey Golovin | for r in newpdb.residues[-X:]: |
62 | 1 | Andrey Golovin | newpdb.remove_residue(r) |
63 | 1 | Andrey Golovin | lig = pdb.copy() |
64 | 1 | Andrey Golovin | del lig.residues[:-X] |
65 | 1 | Andrey Golovin | </code></pre> |
66 | 1 | Andrey Golovin | |
67 | 1 | Andrey Golovin | <pre><code class="python"> |
68 | 1 | Andrey Golovin | for a in lig.atoms: |
69 | 1 | Andrey Golovin | a.x # найдите геометрический центр лиганда |
70 | 1 | Andrey Golovin | </code></pre> |
71 | 1 | Andrey Golovin | |
72 | 1 | Andrey Golovin | <pre><code class="python"> |
73 | 1 | Andrey Golovin | newpdb.writePDB(.....) |
74 | 1 | Andrey Golovin | </code></pre> |
75 | 1 | Andrey Golovin | |
76 | 1 | Andrey Golovin | h3. Подготовка белка для докинга |
77 | 1 | Andrey Golovin | |
78 | 1 | Andrey Golovin | <pre><code class="python"> |
79 | 1 | Andrey Golovin | prot = oddt.toolkit.readfile('pdb','myprot.pdb').next() |
80 | 1 | Andrey Golovin | |
81 | 1 | Andrey Golovin | prot.OBMol.AddPolarHydrogens() |
82 | 1 | Andrey Golovin | prot.OBMol.AutomaticPartialCharge() |
83 | 1 | Andrey Golovin | |
84 | 1 | Andrey Golovin | |
85 | 1 | Andrey Golovin | print 'is it the first mol in 1lmp is protein?',prot.protein,':) and MW of this mol is:', prot.molwt |
86 | 1 | Andrey Golovin | </code></pre> |
87 | 1 | Andrey Golovin | |
88 | 1 | Andrey Golovin | |
89 | 1 | Andrey Golovin | h3. Лиганды для докинга |
90 | 2 | Andrey Golovin | |
91 | 1 | Andrey Golovin | <pre><code class="python"> |
92 | 1 | Andrey Golovin | smiles = ['c1cccc(O)c1', 'c1c(O)ccc(O)c1','c1(O)cc(c2ccccc2)cc(O)c1'] |
93 | 1 | Andrey Golovin | mols= [] |
94 | 1 | Andrey Golovin | images =[] |
95 | 1 | Andrey Golovin | |
96 | 1 | Andrey Golovin | for s in smiles: |
97 | 1 | Andrey Golovin | m = oddt.toolkit.readstring('smi', s) |
98 | 1 | Andrey Golovin | if not m.OBMol.Has3D(): |
99 | 1 | Andrey Golovin | m.make3D(forcefield='mmff94', steps=150) |
100 | 1 | Andrey Golovin | m.removeh() |
101 | 1 | Andrey Golovin | m.OBMol.AddPolarHydrogens() |
102 | 1 | Andrey Golovin | |
103 | 1 | Andrey Golovin | mols.append(m) |
104 | 1 | Andrey Golovin | ###with print m.OBMol.Has3D() was found that: |
105 | 1 | Andrey Golovin | ### deep copy needed to keep 3D , write svg make mols flat |
106 | 1 | Andrey Golovin | images.append((SVG(copy.deepcopy(m).write('svg')))) |
107 | 1 | Andrey Golovin | |
108 | 1 | Andrey Golovin | display_svg(*images) |
109 | 1 | Andrey Golovin | </code></pre> |
110 | 1 | Andrey Golovin | |
111 | 1 | Andrey Golovin | h3. Докинг |
112 | 1 | Andrey Golovin | |
113 | 1 | Andrey Golovin | <pre><code class="python"> |
114 | 1 | Andrey Golovin | #create docking object |
115 | 1 | Andrey Golovin | dock_obj= oddt.docking.AutodockVina.autodock_vina( |
116 | 1 | Andrey Golovin | protein=prot,size=(20,20,20),center=[xx,yy,zz], |
117 | 1 | Andrey Golovin | executable='/usr/bin/vina',autocleanup=True, num_modes=20) |
118 | 1 | Andrey Golovin | |
119 | 1 | Andrey Golovin | print dock_obj.tmp_dir |
120 | 1 | Andrey Golovin | print " ".join(dock_obj.params) # Опишите выдачу |
121 | 1 | Andrey Golovin | </code></pre> |
122 | 1 | Andrey Golovin | |
123 | 1 | Andrey Golovin | <pre><code class="python"> |
124 | 1 | Andrey Golovin | # do it |
125 | 1 | Andrey Golovin | res = dock_obj.dock(mols,prot) |
126 | 1 | Andrey Golovin | </code></pre> |
127 | 1 | Andrey Golovin | |
128 | 1 | Andrey Golovin | h3. Результаты докинга |
129 | 1 | Andrey Golovin | |
130 | 1 | Andrey Golovin | <pre><code class="python"> |
131 | 1 | Andrey Golovin | for i,r in enumerate(res): |
132 | 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) |
133 | 1 | Andrey Golovin | </code></pre> |
134 | 1 | Andrey Golovin | |
135 | 1 | Andrey Golovin | h3. Анализ докинга |
136 | 1 | Andrey Golovin | |
137 | 1 | Andrey Golovin | <pre><code class="python"> |
138 | 1 | Andrey Golovin | for i,r in enumerate(res): |
139 | 1 | Andrey Golovin | hbs = oddt.interactions.hbonds(prot,r) |
140 | 1 | Andrey Golovin | stack= oddt.interactions.pi_stacking(prot,r) |
141 | 1 | Andrey Golovin | phob = oddt.interactions.hydrophobic_contacts(prot,r) |
142 | 1 | Andrey Golovin | </code></pre> |
143 | 1 | Andrey Golovin | |
144 | 1 | Andrey Golovin | h3. Визуализация |
145 | 1 | Andrey Golovin | <pre><code class="python"> |
146 | 1 | Andrey Golovin | for i,r in enumerate(res): |
147 | 1 | Andrey Golovin | r.write(filename='r%s.pdb' % i, format='pdb') |
148 | 1 | Andrey Golovin | </code></pre> |
149 | 1 | Andrey Golovin | |
150 | 1 | Andrey Golovin | <pre><code class="bash"> |
151 | 1 | Andrey Golovin | pymol myprot.pdb r*pdb |
152 | 1 | Andrey Golovin | </code></pre> |
153 | 1 | Andrey Golovin | |
154 | 1 | Andrey Golovin | h2. Задание |
155 | 1 | Andrey Golovin | |
156 | 1 | Andrey Golovin | # NAG содержит в себе СH3C(=O)NH группу. Создайте лиганды где метильный радикал этой группы будет заменён на : |
157 | 1 | Andrey Golovin | * OH |
158 | 1 | Andrey Golovin | * NH3+ |
159 | 1 | Andrey Golovin | * H |
160 | 1 | Andrey Golovin | * Ph |
161 | 1 | Andrey Golovin | * COO- |
162 | 1 | Andrey Golovin | |
163 | 1 | Andrey Golovin | Для каждого из этих лигандов проведите докинг и представьте результаты в виде таблицы от лучшего заместителя к худшему. |
164 | 1 | Andrey Golovin | |
165 | 1 | Andrey Golovin | # Предложите методы из статьи про ODDT (пакет Sklearn), которые можно было бы использовать в Вашем упражнении |