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), которые можно было бы использовать в Вашем упражнении |