Работать будем с моделью 2 из предыдущего занятия (файл model_2.pdb)
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
%%bash
# На ChEBI нашел запись NAG в SMILES.
echo "CC(=O)N[C@H]1C(O)O[C@H](CO)[C@@H](O)[C@@H]1O">nag.smi
obgen nag.smi > nag.mol
babel -imol nag.mol -opdb nag.pdb
%%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
%%bash
prepare_ligand4.py -l nag.pdb
%%bash
prepare_receptor4.py -r model_2.pdb
опять консоль...
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
from pymol import cmd
cmd.do('''
load seq.B99990002.pdb
pseudoatom mass_center, /seq.B99990002//A/TYR`79/OH or /seq.B99990002//A/ASN`63/ND2 or /seq.B99990002//A/ALA`121/O
select mass_center
print cmd.get_atom_coords('mass_center')
''')
# Насколько я понял, определяем координаты центра масс сайта связывания NAG.
[44.447669982910156, 43.00233459472656, 28.89200210571289]
%%bash
echo "center_x=44.4
center_y=43
center_z=28.9
size_x = 25
size_y = 25
size_z = 25
num_modes = 20
" > vina.cfg
%%bash
date
vina --config vina.cfg --receptor model_2.pdbqt --ligand nag.pdbqt --out nag_prot.pdbqt --log nag_prot.log
date
Энергии трех лучших расположений:
#mode | affinity | dist from best mode
# | (kcal/mol) | rmsd l.b.| rmsd u.b.
#-----+------------+----------+----------
# 1 -5.3 0.000 0.000
# 2 -5.2 2.011 2.816
# 3 -5.1 2.558 4.114
cmd.do('''
cd cd /home/students/y12/iltarn/Term6/Practice10
set ray_trace_mode, 0; red
set ray_opaque_background, off
set antialias, .5
set light_count, 8
set ambient, 0.5
set ray_trace_color, red
set cartoon_side_chain_helper, on
''')
#... разделил состояния, перекрасил ...
from IPython.display import Image
Ниже показаны все состояния
Image(filename='pic1.png')
%%bash
# Запускал через Putty
python /usr/share/pyshared/AutoDockTools/Utilities24/prepare_flexreceptor4.py -r model_2.pdbqt -s TYR79_ASN63_GLU51
date
vina --config vina.cfg --receptor model_2_rigid.pdbqt --flex model_2_flex.pdbqt --ligand nag.pdbqt
date
#mode | affinity | dist from best mode
# | (kcal/mol) | rmsd l.b.| rmsd u.b.
#-----+------------+----------+----------
# 1 -5.4 0.000 0.000
# 2 -5.3 1.425 2.525
# 3 -5.3 1.592 3.570
На этот раз на доступных для практикума мощностях докинг занял 42 сек, в прошлый раз - 7 сек.
Рисунок со всеми состояниями:
Image(filename='pic2.png')
По сравнению с обычным докингом использование подвижных остатков дает меньшие значения геометричесой разницы в сравнении с энергетически наивыгоднейшим положением; в данном случае лучшие три значения энергии взаимодействия в обоих докингах одинаковы. Худший вариант в докинге с подвижными АК улетел куда-то не туда.
Image(filename='pic3.png')
Выше желтым показан NAG при обычном докинге. Визуально можно заметить, что в сторону GLU(51) во втором случае NAG сталь залезать реже.
Судя по всему, если знать место связывания лиганда на ферменте, а особенно если знать точно участвующие во взаимодействии остатки, то можно достаточно неплохо расположить лиганд. Все зависит только от наших знаний и, следовательно, вводимых ограничений.
Чтобы было что сравнивать, попробовал оценить энергии в случае, когда центр масс определен по NAG из известной структуры. Провел два докинга (с подвижными/неподвижными остатками).
Белок полностью неподвижен:
#mode | affinity | dist from best mode
# | (kcal/mol) | rmsd l.b.| rmsd u.b.
#-----+------------+----------+----------
# 1 -5.3 0.000 0.000
# 2 -5.2 2.011 2.814
# 3 -5.1 2.581 4.126
3 АК подвижны:
# | (kcal/mol) | rmsd l.b.| rmsd u.b.
#-----+------------+----------+----------
# 1 -5.4 0.000 0.000
# 2 -5.4 1.504 3.550
# 3 -5.3 1.543 2.440
В обоих случаях результат получился чуть лучше. По сути была введена более точная информация, т.е. опять же, все зависит от наших знаний.