In [1]:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]

import pymol
pymol.finish_launching()
from pymol import cmd,stored


#На данном этапе происходит загрузка объекта и задаются различные начальные настройки, такие как положение 
#данного объекта, приближение и прочее
cmd.do('''
fetch 1cll, async=0
as lines, n. C+O+N+CA
zoom i. 4+5
mset 1 x1000
mview store''')
In [2]:
#Создаётся массив, куда будут добавляться идентификаторы остатков
stored.r = [] 
cmd.iterate('1cll and n. CA','stored.r.append(resi)')


import numpy as np

#Создаётся массив colors, в котором элементов Length от 1 до 0.5
length = len(stored.r)
colors = np.linspace(1,0.5, length)

#Создаётся множество цветов (col1, col2, col3, etc.), которым присваиваются значения 0, 0.5, 0.75 и т.д.
#Далее каждому остатку будет присваиваться свой цвет
for k,i in enumerate([int(i) for i in stored.r]):
    cmd.set_color('col%d' %k, [colors[k],0.5,0.75])
    cmd.set('cartoon_color','col%d' %k ,'resi %d' % i)
cmd.show_as('cartoon','all')
In [3]:
#Здесь будет создаваться анимация, где с каждым десятым кадром 
#мы будем приближаться на i - i+7 остатка
for i in range(length):
    cmd.frame((10*i)+1)
    cmd.zoom( 'n. CA and i. %d+%d' % (i,i+7))
    cmd.mview('store')   
In [1]:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]

import pymol
pymol.finish_launching()
from pymol import cmd,stored

cmd.do('''
fetch 1LMP, async=0
as lines, n. C+O+N+CA''')
In [3]:
from IPython.display import Image
In [2]:
#Для начала опробуем интсрумент Sculpting. Данный инструмент позволяет изменять полодения атомов в выбранной области, 
# и при этом сохранять уелостность структуры белка, т.е. без не создавая разрывов и изломов
In [5]:
# Например, изначально можель нашего белка выглядела следующим образом:
Image('belok.png')
Out[5]:
In [6]:
# А так он стал выглядеть после применения инструмента Sculpting:
In [4]:
Image('sculpt.png')
Out[4]:
In [5]:
# Посмотрим, каким образом лиганд связан с нашим белком
In [6]:
Image('kontak.png')
Out[6]:
In [7]:
# Здесь можно видеть, что связь с отстатком аспартата самая коротка, и похоже что самая сильная. Поэтому склонен 
# полагать, что при её нарушении произойдёт потеря связи с лигандом. Попробуем промутитровать наш белок по данному 
# остатку с помощью инструмента Mutagenezis, например заменим его на валин
In [8]:
# Чтобы затем создать анимацию совмещения мутированного белка на немутированный, создадим копию 1LMPC, где
# этот 52-й аспартат будет заменён на валин
cmd.create("1LMPC", "1LMP")
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
cmd.get_wizard().set_mode("VAL")
cmd.select("resi 52 and chain A and 1LMPC")
cmd.get_wizard().do_select("sele")
cmd.get_wizard().apply()
cmd.set_wizard("done")
cmd.do('''
select mutant, (resi 52 and chain A and 1LMPC and sc.) or (resi 52 and chain A and 1LMPC and name CA)
select normal, (resi 52 and chain A and 1LMP and sc.) or (resi 52 and chain A and 1LMPC and name CA)''')
In [9]:
# Создадим анимацию, где будут совмещаться друг с другом мутант и дикий тип. а потом ещё и фокус переместится 
# на мутированный остаток и удалится от него
cmd.do('''
color cyan, 1LMP
color red, 1LMPC
mset 1 x140
set_view (\
 -0.7483029961585999,\
 -0.5054934620857239,\
 0.42955076694488525,\
 -0.4733351171016693,\
 0.8605573773384094,\
 0.18813560903072357,\
 -0.46475449204444885,\
 -0.06254035234451294,\
 -0.8832262754440308,\
 -0.0,\
 0.0,\
 -130.9127197265625,\
 14.314750671386719,\
 50.99576187133789,\
 20.766393661499023,\
 103.21258544921875,\
 158.61285400390625,\
 -20.0)
translate [0,0,60], object=1LMPC
translate [0,0,-60], object=1LMP
mview store
frame 1
set_view (\
 -0.7483029961585999,\
 -0.5054934620857239,\
 0.42955076694488525,\
 -0.4733351171016693,\
 0.8605573773384094,\
 0.18813560903072357,\
 -0.46475449204444885,\
 -0.06254035234451294,\
 -0.8832262754440308,\
 -0.0,\
 0.0,\
 -130.9127197265625,\
 14.314750671386719,\
 50.99576187133789,\
 20.766393661499023,\
 103.21258544921875,\
 158.61285400390625,\
 -20.0)
mview store, object=1LMPC
mview store, object=1LMP
mview store
frame 80
set_view (\
 -0.7483029961585999,\
 -0.5054934620857239,\
 0.42955076694488525,\
 -0.4733351171016693,\
 0.8605573773384094,\
 0.18813560903072357,\
 -0.46475449204444885,\
 -0.06254035234451294,\
 -0.8832262754440308,\
 -0.0,\
 0.0,\
 -130.9127197265625,\
 14.314750671386719,\
 50.99576187133789,\
 20.766393661499023,\
 103.21258544921875,\
 158.61285400390625,\
 -20.0)
translate [0,0,-60], object=1LMPC
translate [0,0,60], object=1LMP
mview store, object=1LMPC
mview store, object=1LMP
mview store
mview interpolate, object=1LMPC
mview interpolate, object=1LMP
frame 120
translate [0,0,0], object=1LMPC
translate [0,0,0], object=1LMP
set_view (\
     -0.7483029961585999,    -0.5054934620857239,    0.42955076694488525,\
     -0.4733351171016693,   0.8605573773384094,   0.18813560903072357,\
     -0.46475449204444885,    -0.06254035234451294,   -0.8832262754440308,\
     -0.00014065971481613815,   -0.002770405262708664, -34.00832748413086,\
    20.798187,   55.54808044,   27.16142272,\
   23.577062,  44.5744247,  -20.00 )
show sticks, normal
show sticks, mutant
set stick_transparency, 0.6, normal
mview store, object=1LMPC
mview store, object=1LMP
mview store
mplay
set cache_frames=0
mclear
mpng mov
''')
In [10]:
# Выявилась проблема: полученный клип никак не хотел проигрываться, но в этом деле помогла программа VideoMach.
# Благодаря ней клип был сохранён в формате .gif и его удалось воспроизвести
display(Image("pic1.gif", format='png'))
In [16]:
# Теперь на наш белок нужно навесить метку TAMRA
cmd.reinitialize()
cmd.do('''
fetch 1LMP, async=0
as lines, n. C+O+N+CA''')
cmd.load('TAMRA.sdf')
In [12]:
# Так собственно выглядит эта молекула
Image('TAMRA.png')
Out[12]:
In [13]:
# Можно заметить, что водород есть только на одной из двух карбоксильных групп флуоресцентной метки.
# Следовательно, будем модифицировать именно эту группу (для получения сложноэфирной связи)
# Также в белке был обнаружен остаток Thr 43, у которого вполне есть подходящая для образования связи 
# ОН-группа, и сам он более-менее смотрит наружу
In [17]:
# Теперь в молекуле флуоресцетной метки нужно удалить лишние атомы, и далее совместить С-атом TAMRAы с О-атомом 
# треонина
cmd.do('''
extract tamrado, (TAMRA and id 2) or (TAMRA and id 54)
select flourof, TAMRA and id 29
show sticks, 1LMP and resi 43
select belok, 1LMP and resi 43 and name OG1
fuse flourof, belok
pick pkbond
torsion 200
''')
In [15]:
# Вот что из этого получилось
Image('flur.png')
Out[15]:
In [ ]: