Для начала открываем PyMOL и импортируем все необходимые модули.
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
from pymol import cmd,stored
from IPython.display import Image
import time
import numpy as np
Далее скачиваем структуру кальмодулина, получаем его изображение, а также создаем список аминокислот данного белка.
cmd.do('''
fetch 1cll, async=0
as sticks, n. C+O+N+CA
zoom center, 30
bg_color white
mset 1 x1000
mview store''')
stored.r = []
cmd.iterate('1cll and n. CA','stored.r.append(resi)')
cmd.png('mypng.png')
time.sleep(2)
Image(filename='mypng.png')
Теперь мы создаем новую палитру цветов и присваиваем каждой аминокислоте белка свой цвет, в результате получая плавный переход по всей структуре.
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.2,1])
cmd.set('cartoon_color','col%d' % k ,'resi %s' % i)
cmd.show_as('cartoon','all')
cmd.png('mypng2.png')
time.sleep(2)
Image(filename='mypng2.png')
Далее создаем фильм в котором более подробно рассматриваем белок.
for k,i in enumerate(stored.r):
cmd.set_color('col%d' %k, [colors[k],0.2,1])
cmd.set('stick_color','col%d' % k ,'resi %s' % i)
cmd.show_as('sticks','all')
for i in range(length):
cmd.frame((10*i)+1)
cmd.zoom( 'n. CA and i. %d+%d' % (i,i+10))
cmd.mview('store')
cmd.mplay()
#видео открывается в окне PyMOL