| name | movie-creation |
| description | Use when creating movies, animations, rotations, or morphing sequences in PyMOL. |
| version | 0.1.0 |
Movie Creation
Workflows for creating animations and movies in PyMOL.
Send all cmd.* code via: ~/.pymol-agent-bridge/bin/pymol-agent-bridge exec "..." (or heredoc for multi-line). See @pymol-fundamentals for details.
Movie Basics
Set Frame Count
cmd.mset("1 x360")
cmd.mset("1 x90")
cmd.mset("")
Frame Navigation
cmd.frame(1)
cmd.frame(45)
cmd.forward()
cmd.backward()
Playback Control
cmd.mplay()
cmd.mstop()
cmd.rewind()
Simple Rotation Movie
Using mroll
cmd.mset("1 x360")
cmd.util.mroll(1, 360, 1)
Axis Options for mroll
1 = Y axis (horizontal rotation)
2 = X axis (vertical rotation)
3 = Z axis (in-plane rotation)
Scene-Based Movies
Store Scenes
cmd.orient()
cmd.scene("overview", "store")
cmd.zoom("ligand", 5)
cmd.scene("closeup", "store")
cmd.zoom("resi 100-120")
cmd.scene("domain", "store")
Create Movie from Scenes
cmd.mset("1 x90")
cmd.frame(1)
cmd.scene("overview", "recall")
cmd.mview("store")
cmd.frame(30)
cmd.scene("closeup", "recall")
cmd.mview("store")
cmd.frame(60)
cmd.scene("domain", "recall")
cmd.mview("store")
cmd.frame(90)
cmd.scene("overview", "recall")
cmd.mview("store")
cmd.mview("interpolate")
Camera Movement
Store View Keyframes
cmd.mset("1 x60")
cmd.frame(1)
cmd.orient()
cmd.mview("store")
cmd.frame(30)
cmd.turn("y", 90)
cmd.mview("store")
cmd.frame(60)
cmd.zoom("resi 50", 5)
cmd.mview("store")
cmd.mview("interpolate")
Interpolation Modes
cmd.mview("interpolate")
cmd.mview("interpolate", power=1)
cmd.mview("interpolate", power=2)
Multi-State Movies
For NMR Ensembles or MD Trajectories
cmd.mset("1 -%d" % cmd.count_states())
cmd.mplay()
Loop Through States
n_states = cmd.count_states()
cmd.mset("1 x" + str(n_states))
Exporting Movies
PNG Sequence
import os
output_dir = os.path.expanduser("~/Desktop/movie_frames")
os.makedirs(output_dir, exist_ok=True)
cmd.mpng(output_dir + "/frame")
With Ray Tracing (Slow but High Quality)
cmd.set("ray_trace_frames", 1)
cmd.mpng(output_dir + "/frame")
cmd.set("ray_trace_frames", 0)
Convert to Video (External)
After exporting PNG sequence, use ffmpeg:
ffmpeg -framerate 30 -i frame%04d.png -c:v libx264 -pix_fmt yuv420p movie.mp4
Complete Workflows
360-Degree Rotation
cmd.delete("all")
cmd.fetch("1ubq")
cmd.show("cartoon")
cmd.hide("lines")
cmd.color("green")
cmd.bg_color("white")
cmd.mset("1 x360")
cmd.util.mroll(1, 360, 1)
Zoom In/Out Animation
cmd.orient()
cmd.mset("1 x60")
cmd.frame(1)
cmd.zoom("all", 5)
cmd.mview("store")
cmd.frame(30)
cmd.zoom("resi 45-50", 3)
cmd.mview("store")
cmd.frame(60)
cmd.zoom("all", 5)
cmd.mview("store")
cmd.mview("interpolate", power=2)
Tour of Binding Site
cmd.select("lig", "organic")
cmd.select("pocket", "byres (polymer.protein within 5 of lig)")
cmd.zoom("all")
cmd.scene("full", "store")
cmd.zoom("lig", 8)
cmd.scene("ligand", "store")
cmd.zoom("pocket", 5)
cmd.turn("y", 45)
cmd.scene("pocket_side", "store")
cmd.mset("1 x120")
cmd.frame(1)
cmd.scene("full", "recall")
cmd.mview("store")
cmd.frame(40)
cmd.scene("ligand", "recall")
cmd.mview("store")
cmd.frame(80)
cmd.scene("pocket_side", "recall")
cmd.mview("store")
cmd.frame(120)
cmd.scene("full", "recall")
cmd.mview("store")
cmd.mview("interpolate", power=2)
Tips
- Use
mview("interpolate", power=2) for smooth camera motion
- 30 frames = 1 second at typical playback
- Store scenes before creating movies for easier editing
- Ray tracing movies takes significant time
- Export as PNG sequence, then convert to video externally
mset("") clears the movie completely