Jump
Appearance
| Type | Python Script |
|---|---|
| Download | jump.py |
| Author(s) | Sean M. Law |
| License | - |
| This code has been put under version control in the project Pymol-script-repo | |
Description
[edit]In the case of movies or simulation trajectories, it is often useful to quickly jump between different frames but not necessarily in any order. This script allows the user to specify a list of frames and flipping through the set of frames is controlled by a user-defined keystroke (limited to those available through the Set Key command). This script is a nice tool for identifying different protein states from a simulation and can be used in conjunction with the Modevectors script in a very useful way by first characterizing the directionality of the movements (using Modevectors) and then visualizing the change directly using this script.
Note: This script also requires the Check Key script!
Usage
[edit]load the script using the run command
jump [frame1 [,...frameN [,sleep=0.1 [,x=1 [,key='pgdn']]]]]
Example
[edit]jump 1, 10, 100
#This causes the movie to jump from frame 1 to frame 10 and finally to frame 100 each time the 'pgdn' key is pressed
#Note that there is no limit to the number of frames that can be specified
jump 1, 10, 100, 1000, key='F1'
#This sets the hotkey to F1. When pressed, it will jump through the frames 1, 10, 100, 1000 respectively
jump 1, 10, 100, sleep=0.01
#This does the same thing as the first example except that the pause between frames is 10x faster
#One could consider the "sleep" option to be similar to the frame rate
jump 1, 10, 100, x=10
#This does the same thing as the first example except that each press of the hotkey will
#cause the script to run through the specified frames 10 times before stopping.
#Note that you will not be able to control or exit the script during the 10 iterations!
PyMOL API
[edit]from pymol import cmd
import time
def jump (*args, **kwargs):
"""
Author Sean M. Law
University of Michigan
seanlaw_(at)_umich_dot_edu
"""
keystroke='pgdn'
for key in kwargs:
if (key == "key"):
keystroke=kwargs["key"]
keystroke=check_key(keystroke)
if (keystroke == None):
return
else:
continue
cmd.set_key(keystroke, jumpit, args, kwargs)
return
cmd.extend("jump", jump)
def jumpit (*args, **kwargs):
x=1
sleep=0.1
for key in kwargs:
if (key == "sleep"):
sleep=kwargs["sleep"]
sleep=float(sleep)
elif (key == "x"):
x=kwargs["x"]
x=int(x)
else:
continue
args=list(args)
for i in range (x):
for j in range (len(args)):
cmd.frame(int(args[j]))
cmd.refresh()
time.sleep(sleep)
return
cmd.extend("jumpit", jumpit)