#импортируем все модули
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
import numpy as np
import IPython
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 = []
cmd.iterate('1cll and n. CA','stored.r.append(resi)')
загрузим структуру 1сll а также подготовим фреймы
cmd.bg_color("white")
length = len(stored.r)
colors = np.linspace(0,0.5, length)
for k,i in enumerate(stored.r):
cmd.set_color('col%d' %k, [colors[k]*2,1-colors[k]*2,0.75])
cmd.set('cartoon_color','col%d' % k ,'resi %s' % i)
cmd.show_as('cartoon','all')
cmd.zoom
#установим бэкгроунд - белый, и создадим градиент перехода цвета от аминокислоты к аминокислоте, где параметры цвета по
#по красному и зеленому будут зависеть от положения.
#а также отобразим структуры в виде cartoon.
cmd.reset()
cmd.png(filename='sp.png',width='9cm',dpi=300,ray=1)
IPython.display.Image("sp.png", retina = True)
#cmd.reset()отоброзим по центру с таким зумом чтобы было видно все
#cmd.png(), где:
#filename = имя/путь
#width = ширина, модет быть в пикселя (только цифры), дюймах(in), сантиметрах(cm).
#height = высота, модет быть задана вручную или по-умолчанию в соотвествии с шириной
#dpi = dots-per-inch, разрешение
#ray = 0 or 1: запускать ray или нет
for i in range(length):
cmd.frame((10*i)+1)
cmd.zoom( 'n. CA and i. %d+%d' % (i,i+7))
cmd.mview('store')
cmd.mplay()
#видео можно посмотреть в окне pyol, там будет последовательный зум на альфа-углероды ак.
#альтерноативный метод это использовать ffmpeg, но к сожалению, я не смогла найти, как применить это в python 3
#здесь имеются следующие параметры:
# -framerate 30 # на вход
# -i nameimage%03d.png # имена кадров(image000.png, ..., image999.png)
# -s:v 640x640 # размер изображения видео
# -c:v libx264 # энкодер
# -crf 12 # constant rate factor
# -pix_fmt yuv420p # пиксельгый формат
# -preset veryslow # скорость кодирования
# -tune stillimage # надстраивает настройки кодировки для изображениий
# -r 30 # на выход
# output_file.mp4 # имя файла