import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
from pymol import cmd,stored
Movie
cmd.reinitialize()
cmd.do('''
fetch 1cll, async=0
bg_color white
as sticks, n. C+O+N+CA
zoom i. 4+5
mset 1 x200
# создали 200 frame'ов
mview store, 1
turn y, 180
mview store, 100
turn y, 180
# поворот камеры на 180 градусов от 1-го frame'а до 100-го frame'а
mplay
# возпроизведение видео
''')
Красим структуру по градиенту
import numpy as np
stored.r = []
cmd.iterate('1cll and n. CA','stored.r.append(resi)')
length = len(stored.r)
colors = np.linspace(1,0.5, length)
for k,i in enumerate(stored.r):
cmd.set_color('col%d' %k, [colors[k], 0.5, 0.75])
print([1,1,colors[k]])
cmd.set('cartoon_color','col%d' % k ,'resi %d' % float(i))
cmd.show_as('cartoon','all')
Movie: проходим по цепи
for i in range(length):
cmd.frame((10*i)+1)
cmd.zoom('n. CA and i. %d+%d' % (i,i+7))
cmd.mview('store')
from IPython.display import display, Image
Исходная структура 1LMP
cmd.reinitialize()
cmd.do('''
fetch 1lmp
remove het or resn hoh
bg_color white
color zinc, all
set antialias, 2
set ray_trace_mode, 1
ray 2000
png 1_01.png
''')
Image('1_01.png', width=600, height=600)
Wizard=>Demo=>Sculpting (вручную)
cmd.do('''
ray 2000
png 1_02.png
''')
Image('1_02.png', width=600, height=600)
Wizard->Mutagenesis
cmd.reinitialize()
cmd.do('''
fetch 1lmp
remove resn hoh
bg_color white
color zinc, all
select lig1, resn NAG
select lig2, resn NDG
color salmon, lig*
select around, (1lmp within 5 of lig1) & !(lig1)
select two_resi, resi 101 or resi 103
set ray_trace_mode, 1
''')
Здесь руками доделала немного
cmd.do('''
ray 2000
png 1_03.png
''')
Исходно:
Image('1_03.png', width=600, height=600)
Остатки D101 и N103 были заменены на V
Image('1_04.png', width=600, height=600)
Совмещение белков
cmd.reinitialize()
cmd.do('''
fetch 1LMP, mutant
''')
cmd.wizard('mutagenesis')
cmd.refresh_wizard()
cmd.get_wizard().do_select('resi 103')
cmd.get_wizard().set_mode('VAL')
cmd.refresh_wizard()
cmd.get_wizard().apply()
#cmd.set_wizard()
cmd.get_wizard().do_select('resi 101')
cmd.get_wizard().set_mode('VAL')
cmd.refresh_wizard()
cmd.get_wizard().apply()
cmd.set_wizard()
cmd.do('''
fetch 1LMP, native_protein
color zinc, native_protein
color red, mutant
remove solvent
as cartoon, not two_resi and not hetatm
color yellow, (resi 103 or resi 101) and native_protein
color purple, (resi 103 or resi 101) and mutant
''')
cmd.util.cbag("native_protein and mutant")
cmd.translate("[-60, 0, 0]", "native_protein")
cmd.center('native_protein + mutant')
cmd.zoom('center', '40')
cmd.do('''
bg_color white
set ray_trace_mode,3
set ray_opaque_background, 0
ray 1500,700''')
cmd.png('1_05.png')
Image(filename='1_05.png')
cmd.do('''set matrix_mode, 1
set movie_panel, 1
set cache_frames, 1
''')
cmd.bg_color("white")
cmd.mset('1 x480')
cmd.frame('1')
cmd.mview('store')
cmd.mview('store', object='native_protein')
cmd.frame('50')
cmd.mview('store')
cmd.translate('[60, 0, 0]', object='native_protein')
cmd.mview('store', object='native_protein')
cmd.frame('110')
cmd.center('mutant')
cmd.zoom('mutant')
cmd.mview('store', object='native_protein')
cmd.mview('store')
cmd.frame('200')
cmd.mview('store', object='native_protein')
cmd.center('mutant and resi 103')
cmd.zoom('mutant and resi 103')
cmd.mview('store')
cmd.frame('320')
cmd.mview('store', object='native_protein')
cmd.center('mutant and resi 103')
cmd.zoom('mutant and resi 103', "5")
cmd.turn('y', 120)
cmd.mview('store')
cmd.frame('480')
cmd.mview('store')
cmd.translate('[-10, -30, 80]', object='native_protein')
cmd.mview('store', object='native_protein')
cmd.mview('reinterpolate')
cmd.mview('reinterpolate', object='native_protein')
import os
import time
import imageio
cmd.mstop()
dirpath = './'
cmd.mpng(dirpath, mode=1, width=1920//4, height=1080//4)
while not os.path.exists('./0480.png'):
time.sleep(0.1)
with imageio.get_writer('movie.gif', mode='I', fps=30) as writer:
for x in range(0, 480):
filename = os.path.join(dirpath, f'{x+1:04}.png')
image = imageio.imread(filename)
writer.append_data(image)
from IPython.display import Image
display(Image(filename='movie.gif', format='png'))