from xmlrpclib import ServerProxy
from IPython.display import Image
import os, sys
import scipy as sp
from scipy import constants
from scipy.constants import codata
import numpy as np
from numpy import oldnumeric
import __main__
__main__.pymol_argv = [ 'pymol', '-cp' ]
import pymol
pymol.finish_launching()
from pymol import cmd
from IPython.display import Image
Посмотрим на лиганд
%%bash
obgen nag.smi -ff UFF > nag.mol
babel -imol nag.mol -opdb nag.pdb
cmd.delete('all')
cmd.load('nag.pdb')
cmd.refresh()
cmd.do('''
bg_color white
as sticks, all
orient, all
show sticks
set valence, on
set stick_ball, on
set stick_ball_ratio, 3
set stick_radius, 0.12
set valence_mode, 2
set ray_trace_mode, 3
ray
png pic1.png
''')
Image(filename='pic1.png')
Укажем пути к скриптам для получения pdbqt файлов
%%bash
export PYTHONPATH=${PYTHONPATH}:/home/preps/golovin/.local/lib/python2.7/site-packages:/home/preps/golovin/.local/lib/python2.7/dist-packages
export PATH=${PATH}:/home/preps/golovin/progs/bin
%%bash
prepare_ligand4.py -h
%%bash
prepare_ligand4.py -l nag.pdb
prepare_receptor4.py -p 5.pdb
Для докинга надо указать область структуры белка в которой будет происходить поиск места для связывания. Зададим её как куб с неким центром. Координаты центра мы определим из модели комплекса, которую мы построили на прошлом занятии.
cmd.delete('all')
cmd.load('5.pdb')
cmd.refresh()
cmd.do('''
pseudoatom cmass, resi 74+134+70
print cmd.get_atom_coords("/cmass/PSDO/P/PSD`1/PS1")
''')
Создадим файл vina.cfg и проведем докинг
vina --config vina.cfg --receptor 5.pdbqt --ligand nag.pdbqt --out nag_prot.pdbqt --log nag_prot.log
Выпишем энергии трех самых лучших состояний
Наложение всех получившихся положений лиганда в белке показано на рисунке:
Image(filename='all.png')
Теперь проведём докинг, учитывая подвижность некоторых боковых радикалов белка. Сначала разобьем белок на две части, подвижную и неподвижную. Для подвижной части выберем 3 аминокислоты которые использовали в прошлом задании для позиционирования лиганда.
python /usr/share/pyshared/AutoDockTools/Utilities24/prepare_flexreceptor4.py -p 5.pdb -s LEU70_TRP74_GLN134
Проведём докинг:
vina --config vina.cfg --receptor 5_rigid.pdbqt --flex 5_flex.pdbqt --ligand nag.pdbqt --out nag_flex.pdbqt --log nag_flex.log
Выпишем энергии трех самых лучших состояний (для докинга с учетом подвижности аминокислотных остатков)
Сравним с энергиями без учета подвижности аминокислотных остатков
Отметим, что наилучшая энергия расположения уменьшилась на 1 kcal/mol. Ура!
Если в PyMol загрузить одновременно файлы nag_5_flex.pdbqt и 5_rigid.pdbqt, то мы увидим наложение трех выбранных аминокислотных остатков, для которых была разрешена повижность на стурктуру белка. В белке остатки не удалены, и выбранные остатки в большинстве случаев не накладываются на них, хоть и находятся рядом. Если запустить все получившиеся состояния, видно, что двигаются только боковые цепи остатков. Поэтому, вероятно, что где-то произошла ошибка, из-за чего остатки не накладываются друг на друга.
Image(filename='flex.png')
Немного поменяем лиганд и снова сделаем докинг
%%bash
for i in nag_h nag_oh nag_nh2 nag_ph ;do
obgen ${i}.smi -ff UFF > ${i}.mol
babel -imol ${i}.mol -opdb ${i}.pdb
/home/preps/golovin/progs/bin/prepare_ligand4.py -l ${i}.pdb
vina --config vina.cfg --receptor 5.pdbqt --ligand ${i}.pdbqt --out ${i}_5.pdbqt --log ${i}_5.log
done
Должно получиться, только он снова пишет "no module named oldnumeric", а я забыла, как мы с этим справлялись =(