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

Импрортирование необходимых библиотек, запуск PyMOL как модуля Python

In [1]:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import time
import pymol
pymol.finish_launching()
from pymol import cmd,stored

Загрузка модели c PDB ID 4XSO, связи показаны в виде линий, изображение приближено чтобы были видны остатки 15 и 16. Сделаны 1000 кадров, соответствующих текущему состоянию, а нулевой кадр сохранен как ключевой.

In [2]:
cmd.do('''
fetch 4xso, async=0
as lines, n. C+O+N+CA
zoom i. 15+16
mset 1 x1000
mview store''') 

Проход по всем альфа-атомомам углерода аминокислот, сохраняем номера остатков в список, создаем массив цветов. Белок серо-стальной на N-конце и бордовый на С-конце.

In [5]:
stored.r = [] 
cmd.iterate('4xso and n. CA','stored.r.append(resi)')


import numpy as np

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

Создаем кадры для фильма: для каждого номера остатка i от 1 до 100 создать в фильме опорный кадр, в котором изображение будет приближено к остаткам от i до i+7.

In [29]:
for i in range(length):
    cmd.frame((10*i)+1)
    cmd.zoom( 'n. CA and i. %d+%d' % (i,i+7))
    cmd.clip('near', 100)
    cmd.clip('far', -100)
    cmd.mview('store')