Task7
Version 2 (Andrey Golovin, 17.11.2017 14:07) → Version 3/4 (Andrey Golovin, 13.12.2023 17:27)
h1. Докинг низкомолекулярных лигандов в структуру белка
h2. Традиционные ссылки на полезные ресурсы:
* Видеурок по работе с Autodock Vina [[http://vina.scripps.edu/tutorial.html
* Статья по ODDT https://jcheminf.springeropen.com/articles/10.1186/s13321-015-0078-2
Вся работа по расчётам будет проходить на через ipython notebook.
h3. Введение
Цель данного занятия ознакомится с возможностями докинга низкомолекулярного лиганда в структуру белка.
В этом занятии мы будем пользоваться пакетом Autodock Vina и oddt. Это программное обеспечение распространяется бесплатно для академических пользователей.
h3. Объект
Вы будете работать с белком лизоцимом структуру которого вы построили на основе гомологичного моделирования на прошлом *практикуме*.
Надо определить место докинга, удалить лигнад, запустить докинг и провести анализ
h3. Установка
<pre><code class="python">
!pip install -q condacolab
import condacolab
condacolab.install()
! mamba install -c conda-forge oddt
</code></pre>
Установите и проверьте наличие AutoDock Vina
<pre><code class="python">
! apt install autodock-vina
! whereis vina
</code></pre>
h3. Модули
<pre><code class="python">
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.Chem.Draw import IPythonConsole
import pmx # Модуль для манипулирования pdb
</code></pre>
</code></pre>
h3. Подготовка белка
Удалите из белка <pre><code class="python">
pdb=pmx.Model('my.B99990001.pdb')
for r in pdb.residues[135:]:
print r #посмотрим остатки лиганда и воды
</code></pre>
<pre><code class="python">
# пример итерации создание объектов белок и лиганда
newpdb = pdb.copy()
for r in prot.residues :
print(r.name)
for a in r.atoms: newpdb.residues[-X:]:
print(a.coords) newpdb.remove_residue(r)
lig = pdb.copy()
del lig.residues[:-X]
</code></pre>
</code></pre>
<pre><code class="python">
for a in lig.atoms:
a.x # найдите геометрический центр лиганда
</code></pre>
<pre><code class="python">
newpdb.writePDB(.....)
</code></pre>
h3. Подготовка белка для докинга
<pre><code class="python">
prot = oddt.toolkit.readfile('pdb','myprot.pdb').next()
prot.OBMol.AddPolarHydrogens()
prot.OBMol.AutomaticPartialCharge()
print 'is it the first mol in 1lmp is protein?',prot.protein,':) and MW of this mol is:', prot.molwt
</code></pre>
h3. Лиганды для докинга
<pre><code class="python">
smiles = ['c1cccc(O)c1', 'c1c(O)ccc(O)c1','c1(O)cc(c2ccccc2)cc(O)c1']
mols= []
images =[]
for s in smiles:
m = oddt.toolkit.readstring('smi', s)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
</code></pre>
h3. Докинг
<pre><code class="python">
#create docking object
dock_obj= oddt.docking.AutodockVina.autodock_vina(
protein=prot,size=(20,20,20),center=[xx,yy,zz],
executable='/usr/bin/vina',autocleanup=True, num_modes=20)
print dock_obj.tmp_dir
print " ".join(dock_obj.params) # Опишите выдачу
</code></pre>
<pre><code class="python">
# do it
res = dock_obj.dock(mols,prot)
</code></pre>
h3. Результаты докинга
<pre><code class="python">
for i,r in enumerate(res):
print "%4d%10s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'], r.data['vina_rmsd_ub'], r.residues[0].name)
</code></pre>
h3. Анализ докинга
<pre><code class="python">
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r)
stack= oddt.interactions.pi_stacking(prot,r)
phob = oddt.interactions.hydrophobic_contacts(prot,r)
</code></pre>
h3. Визуализация
<pre><code class="python">
for i,r in enumerate(res):
r.write(filename='r%s.pdb' % i, format='pdb')
</code></pre>
<pre><code class="bash">
pymol myprot.pdb r*pdb
</code></pre>
h2. Задание
# NAG содержит в себе СH3C(=O)NH группу. Создайте лиганды где метильный радикал этой группы будет заменён на :
* OH
* NH3+
* H
* Ph
* COO-
Для каждого из этих лигандов проведите докинг и представьте результаты в виде таблицы от лучшего заместителя к худшему.
# Предложите методы из статьи про ODDT (пакет Sklearn), которые можно было бы использовать в Вашем упражнении
h2. Традиционные ссылки на полезные ресурсы:
* Видеурок по работе с Autodock Vina [[http://vina.scripps.edu/tutorial.html
* Статья по ODDT https://jcheminf.springeropen.com/articles/10.1186/s13321-015-0078-2
Вся работа по расчётам будет проходить на через ipython notebook.
h3. Введение
Цель данного занятия ознакомится с возможностями докинга низкомолекулярного лиганда в структуру белка.
В этом занятии мы будем пользоваться пакетом Autodock Vina и oddt. Это программное обеспечение распространяется бесплатно для академических пользователей.
h3. Объект
Вы будете работать с белком лизоцимом структуру которого вы построили на основе гомологичного моделирования на прошлом *практикуме*.
Надо определить место докинга, удалить лигнад, запустить докинг и провести анализ
h3. Установка
<pre><code class="python">
!pip install -q condacolab
import condacolab
condacolab.install()
! mamba install -c conda-forge oddt
</code></pre>
Установите и проверьте наличие AutoDock Vina
<pre><code class="python">
! apt install autodock-vina
! whereis vina
</code></pre>
h3. Модули
<pre><code class="python">
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.Chem.Draw import IPythonConsole
import pmx # Модуль для манипулирования pdb
</code></pre>
</code></pre>
h3. Подготовка белка
Удалите из белка <pre><code class="python">
pdb=pmx.Model('my.B99990001.pdb')
for r in pdb.residues[135:]:
print r #посмотрим остатки лиганда и воды
</code></pre>
<pre><code class="python">
# пример итерации создание объектов белок и лиганда
newpdb = pdb.copy()
for r in prot.residues :
print(r.name)
for a in r.atoms: newpdb.residues[-X:]:
print(a.coords) newpdb.remove_residue(r)
lig = pdb.copy()
del lig.residues[:-X]
</code></pre>
</code></pre>
<pre><code class="python">
for a in lig.atoms:
a.x # найдите геометрический центр лиганда
</code></pre>
<pre><code class="python">
newpdb.writePDB(.....)
</code></pre>
h3. Подготовка белка для докинга
<pre><code class="python">
prot = oddt.toolkit.readfile('pdb','myprot.pdb').next()
prot.OBMol.AddPolarHydrogens()
prot.OBMol.AutomaticPartialCharge()
print 'is it the first mol in 1lmp is protein?',prot.protein,':) and MW of this mol is:', prot.molwt
</code></pre>
h3. Лиганды для докинга
<pre><code class="python">
smiles = ['c1cccc(O)c1', 'c1c(O)ccc(O)c1','c1(O)cc(c2ccccc2)cc(O)c1']
mols= []
images =[]
for s in smiles:
m = oddt.toolkit.readstring('smi', s)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
</code></pre>
h3. Докинг
<pre><code class="python">
#create docking object
dock_obj= oddt.docking.AutodockVina.autodock_vina(
protein=prot,size=(20,20,20),center=[xx,yy,zz],
executable='/usr/bin/vina',autocleanup=True, num_modes=20)
print dock_obj.tmp_dir
print " ".join(dock_obj.params) # Опишите выдачу
</code></pre>
<pre><code class="python">
# do it
res = dock_obj.dock(mols,prot)
</code></pre>
h3. Результаты докинга
<pre><code class="python">
for i,r in enumerate(res):
print "%4d%10s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'], r.data['vina_rmsd_ub'], r.residues[0].name)
</code></pre>
h3. Анализ докинга
<pre><code class="python">
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r)
stack= oddt.interactions.pi_stacking(prot,r)
phob = oddt.interactions.hydrophobic_contacts(prot,r)
</code></pre>
h3. Визуализация
<pre><code class="python">
for i,r in enumerate(res):
r.write(filename='r%s.pdb' % i, format='pdb')
</code></pre>
<pre><code class="bash">
pymol myprot.pdb r*pdb
</code></pre>
h2. Задание
# NAG содержит в себе СH3C(=O)NH группу. Создайте лиганды где метильный радикал этой группы будет заменён на :
* OH
* NH3+
* H
* Ph
* COO-
Для каждого из этих лигандов проведите докинг и представьте результаты в виде таблицы от лучшего заместителя к худшему.
# Предложите методы из статьи про ODDT (пакет Sklearn), которые можно было бы использовать в Вашем упражнении