Импортировать необходимые модули и открыть pymol
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
from pymol import cmd,stored
import numpy as np
Скачать структуру из pdb, отобразить в виде линий
cmd.do('''
fetch 1cll, async=0
as lines, n. C+O+N+CA
center all
mset 1 x1000
mview store
clip slab, 50''')
Перечислить все идентификаторы остатков и записать их в список stored.r
stored.r = []
cmd.iterate('1cll and n. CA','stored.r.append(resi)')
Каждому остатку в цепи присвоить цвет, изменяющийся по градиенту от синего до красного, отобразить структуру в виде cartoon
length = len(stored.r)
colors = np.linspace(0,1,length)
for k,i in enumerate(stored.r):
cmd.set_color('col%d' %k, [colors[k],0,1-colors[k]])
print (1,1,colors[k])
cmd.set('cartoon_color','col%d' %k ,'resi %s' %i)
cmd.show_as('cartoon','all')
Показать полученную структуру
from IPython.display import display,Image
import time
cmd.png('prak1_1.png')
time.sleep(2)
display(Image(filename='prak1_1.png'))
Создать фильм на 1000 кадров, в котором камера поочередно наводится на каждый остаток
for i in range(length):
cmd.frame(1000*(i+1)/length)
cmd.zoom( 'n. CA and i. %d+%d' % (i,i+7))
cmd.mview('store')