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''')
#Создаётся массив, куда будут добавляться идентификаторы остатков
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')
#Здесь будет создаваться анимация, где с каждым десятым кадром
#мы будем приближаться на 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')
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''')
from IPython.display import Image
#Для начала опробуем интсрумент Sculpting. Данный инструмент позволяет изменять полодения атомов в выбранной области,
# и при этом сохранять уелостность структуры белка, т.е. без не создавая разрывов и изломов
# Например, изначально можель нашего белка выглядела следующим образом:
Image('belok.png')
# А так он стал выглядеть после применения инструмента Sculpting:
Image('sculpt.png')
# Посмотрим, каким образом лиганд связан с нашим белком
Image('kontak.png')
# Здесь можно видеть, что связь с отстатком аспартата самая коротка, и похоже что самая сильная. Поэтому склонен
# полагать, что при её нарушении произойдёт потеря связи с лигандом. Попробуем промутитровать наш белок по данному
# остатку с помощью инструмента Mutagenezis, например заменим его на валин
# Чтобы затем создать анимацию совмещения мутированного белка на немутированный, создадим копию 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)''')
# Создадим анимацию, где будут совмещаться друг с другом мутант и дикий тип. а потом ещё и фокус переместится
# на мутированный остаток и удалится от него
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
''')
# Выявилась проблема: полученный клип никак не хотел проигрываться, но в этом деле помогла программа VideoMach.
# Благодаря ней клип был сохранён в формате .gif и его удалось воспроизвести
display(Image("pic1.gif", format='png'))