Знакомство с PyMOL

Сперва импортируем библиотеки для работы с PyMOL и запускаем программу.

In [1]:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]

import pymol
pymol.finish_launching()
from pymol import cmd,stored
import numpy as np

Загружаем из PDB структуру 1c11 и отображаем в виде линий.

In [2]:
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 (.r здесь означает "residue"). С помощью cmd.iterate перебираем все CА атомы структуры 1c11 и записыватем их в stored.

In [5]:
stored.r = [] 
cmd.iterate('1cll and n. CA','stored.r.append(int(resi))')
Out[5]:
152

Каждому остатку в цепи присваиваем цвет, изменяющийся по градиенту от бирюзового до голубого.

In [16]:
import numpy as np

length = len(stored.r)
colors = np.linspace(1,0.5, length)
for k,i in enumerate(stored.r):
    cmd.set_color('col%d' %k, [0.3,colors[k],0.7])
    print ([1,1,colors[k]])
    cmd.set('cartoon_color','col%d' % k ,'resi %d' % i)
cmd.show_as('cartoon','all')

Отображаем полученную структуру.

In [17]:
from IPython.display import display,Image 
import time
cmd.png('pic1_1.png')
time.sleep(2)
display(Image(filename='pic1_1.png'))

Создаем фильм на 1000 кадров, в котором камера поочередно наводится на каждый остаток

In [18]:
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')  

Ниже представлен полученный фильм.