Импорт библиотек для работы с PyMol и запуск PyMol. Скачиваем структуру 1c11 (кальмодулин).

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

import pymol
pymol.finish_launching()
from pymol import cmd,stored

cmd.do('''fetch 1cll, async=0 as lines, n. C+O+N+CA zoom i. 4+5 mset 1 x1000 mview store''')

Записываем все остатки в stored.r (.r означает работу с residue). Функция cmd.iterate позволяет перебирать все CА атомы структуры 1c11 и записывать их в stored

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

Загружаем numpy. Создаем с помощью него вектор чисел от 1 до 0.5 с количеством элементов = количеству остатков. Эти числа будут менять насыщенность красного в конечном цвете, таким образом первые остатки будут более розовые, а последние - более фиолетовые.

In [23]:
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, [colors[k],0.5,0.75])
    print ([1,1,colors[k]])
    cmd.set('cartoon_color','col%d' % k ,'resi %d' % i)
cmd.show_as('cartoon','all')

Создание фильма с помощью функции mview.

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

Запуск фильма (постоянно повторяет).

In [21]:
cmd.mplay()

Остановка фильма.

In [22]:
cmd.mstop()