import __main__
__main__.pymol_argv = ["pymol", "-x"]
import pymol
pymol.finish_launching()
import numpy as np
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"""
)
cmd.png("first.png", ray=3)
stored.r = []
cmd.iterate("1cll and n. CA", "stored.r.append(resi)")
152
length = len(stored.r)
colors = np.linspace(1, 0.5, length)
for k, i in enumerate(stored.r):
cmd.set_color(f"col{k}", [colors[k], 0.5, 0.75])
print([1, 1, colors[k]])
cmd.set("cartoon_color", f"col{k}", f"resi {i}")
cmd.show_as("cartoon", "all")
# добавил для обзора покраски градиентом всей структуры
cmd.do("orient 1cll")
cmd.png("overview.png", ray=3)
cmd.do("zoom i. 4+5")
for i in range(len(stored.r)):
cmd.frame((10 * i) + 1)
cmd.zoom(f"n. CA and i. {i}+{i+7}")
cmd.mview("store")
cmd.mview("interpolate")
! mkdir -p ./images/multiple
# эта команда выполняется долго и асинхронно с юпитером
# не спешите или уберите ray tracing
cmd.mpng("./images/multiple/", mode=2, width=480, height=360)
! ffmpeg -i images/multiple/%04d.png video.avi
! ffmpeg -i video.avi animation.gif
from IPython.display import Image
display(Image("animation.gif", format="png"))