Сcылка на практикум
Целью данного занятия является ознакомиться с возможностями докинга низкомолекулярного лиганда в структуру белка.
from xmlrpclib import ServerProxy
from IPython.display import Image
import os, sys
# pymol launching
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
### Если вывод в графическое окно тормозит или не нужен, то:
##__main__.pymol_argv = [ 'pymol', '-cp' ]
import pymol
pymol.finish_launching()
from pymol import cmd
from IPython.display import Image
def Img(name):
cmd.ray()
cmd.png(name)
%%bash
export PYTHONPATH=${PYTHONPATH}:/home/preps/golovin/.local_numpy/lib/python2.7/site-packages:/home/preps/golovin/.local_numpy/lib/python2.7/dist-packages
export PATH=${PATH}:/home/preps/golovin/progs/bin
Запишем SMILES-нотацию N-ACETYL-D-GLUCOSAMINE (NAG) в файл nag.smi:
%%bash
echo "CC(=O)N[C@H]1[C@H](O)O[C@H](CO)[C@@H](O)[C@@H]1O" > nag.smi
Построим 3D структуру этого сахара в pdb формате:
%%bash
obgen nag.smi > nag.mol
babel -imol nag.mol -omop nag.mop -xk "PM6"
MOPAC2009.exe nag.mop
babel -imopout nag.out -opdb nag.pdb
Скриптом prepare_ligand4.py из пакета Autodock tools создадим pdbqt файл лиганда:
%%bash
prepare_ligand4.py -l nag.pdb
Скриптом prepare_receptor4.py из пакета Autodock tools создадим pdbqt файл белка, который мы получили в прошлом практикуме:
%%bash
prepare_receptor4.py -r ../Task9/seq.B99990001.pdb
Теперь надо создать файл с параметрами докинга vina.cfg.
Для этого определим из модели seq.B99990001.pdb центр масс куба, куда будет происходить докинг, с помощью PyMol командой pseudoatom:
cmd.load("../Task9/seq.B99990001.pdb")
cmd.select("sele", selection="resi 120+80+62")
cmd.pseudoatom("psd", selection="sele")
cmd.save("pseudo.pdb", "psd")
%%bash
cat pseudo.pdb
Теперь построим файл vina.cfg:
%%bash
echo "center_x=40.2
center_y=41.4
center_z=28.9
size_x = 25
size_y = 25
size_z = 25
num_modes = 20 " > vina.cfg
Проведём первый докинг:
%%bash
vina --config vina.cfg --receptor seq.B99990001.pdbqt --ligand nag.pdbqt --out nag_prot.pdbqt --log nag_prot.log
cmd.reinitialize()
cmd.load("nag_prot.pdbqt")
cmd.load("../Task9/seq.B99990001.pdb")
cmd.do("set all_states, on")
cmd.show_as(representation="cartoon", selection="seq.B99990001")
Img("dok1.png")
Image(filename="dok1.png")
Из файла nag_prot.log выпишем энергии 3 лучших положений и геометрическую разницу между ними:
Состояние | Энергия (kcal/mol) | Разница (RMSD) |
---|---|---|
1 | -5.4 | 0.000 |
2 | -5.2 | 3.408 |
3 | -5.1 | 5.383 |
Теперь проведём докинг рассматривая подвижность некоторых боковых радикалов белка. Сначала разобьем белок на две части, подвижную и неподвижную.
Для подвижной части выберем 3 аминокислоты которые использовались в прошлом задании для позиционирования лиганда:
%%bash
python /usr/share/pyshared/AutoDockTools/Utilities24/prepare_flexreceptor4.py -r seq.B99990001.pdbqt -s ASN62_TRP80_ASN120
Проведём докинг:
%%bash
vina --config vina.cfg --receptor seq.B99990001_rigid.pdbqt --flex seq.B99990001_flex.pdbqt --ligand nag.pdbqt --out nag_prot_flex.pdbqt --log nag_prot_flex.log
Из файла nag_prot_flex.log выпишем энергии 3 лучших положений и геометрическую разницу между ними:
Состояние | Энергия (kcal/mol) | Разница (RMSD) |
---|---|---|
1 | -5.4 | 0.000 |
2 | -5.4 | 3.056 |
3 | -5.1 | 4.138 |
cmd.reinitialize()
cmd.load("nag_prot_flex.pdbqt")
cmd.bg_color("white")
cmd.load("seq.B99990001_rigid.pdbqt")
cmd.do("set all_states, on")
#cmd.show_as(representation="cartoon", selection="seq.B99990001_rigid.pdbqt")
Img("dok2.png")
Image(filename="dok2.png")
На картинке не видно, но полученное изображение отличается тем, что 3 выделенных отстатка белка приобрели подвижность.
PS к сожалению, pdbqt нельзя представить в виде cartoon
Сравним времена работы обычного и подвижного докинга:
%%bash
t=`time vina --config vina.cfg --receptor seq.B99990001.pdbqt --ligand nag.pdbqt --out nag_prot.pdbqt --log nag_prot.log`
echo $t
real0m7.024s
user0m44.176s
sys0m0.060s
%%bash
t=`time vina --config vina.cfg --receptor seq.B99990001_rigid.pdbqt --flex seq.B99990001_flex.pdbqt --ligand nag.pdbqt --out nag_prot_flex.pdbqt --log nag_prot_flex.log`
echo $t
real0m33.959s
user4m4.696s
sys0m0.156s
Время работы различается почти в 5 раз.