import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
from pymol import cmd,stored
import IPython
pymol.finish_launching()
#белый фон
cmd.bg_color("white")
#загрузим структуру
cmd.do('''
fetch 1cll, async=0
as lines, n. C+O+N+CA
zoom i. 4+5
mset 1 x1000
mview store''')
for i in range(100):
cmd.frame((10*i)+1)
cmd.zoom( 'n. CA and i. %d+%d' % (i,i+7))
cmd.mview('store')
stored.r = []
cmd.iterate('1cll and n. CA','stored.r.append(int(resi))')
#раскрасим белок (по градиенту)
import numpy as np
length = len(stored.r)
colors = np.linspace(1, 0.01, length)
for k,i in enumerate(stored.r):
cmd.set_color('col%d' %k, [1,100*colors[k],250*colors[k]])
cmd.set('cartoon_color','col%d' % k ,'resi %d' % i)
cmd.show_as('cartoon','all')
#подгоним под размер экрана, чтобы сделать картинку
cmd.reset()
#сделаем картинку
cmd.png(filename='kart.png',width='10cm',dpi=300,ray=1)
IPython.display.Image("kart.png", retina = True)
#создаем фреймы для видео
cmd.set("ray_trace_mode", 0)
cmd.set("ray_trace_color", "black")
cmd.mpng('prac1')
#дальше запустим вот это. так сделаем фильм
#ffmpeg -i prac10%03d.png -c:v libx264 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" movie1.mp4
#выложим видео
import io
import base64
from IPython.display import HTML
video = io.open('movie1.mp4', 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''<video alt="test" controls>
<source src="data:video/mp4;base64,{0}" type="video/mp4" />
</video>'''.format(encoded.decode('ascii')))