MD Movie
MD Movie is a tool for trajectory (or ensemble) viewing and analysis.
For examples of use, see the
Trajectory and
Ensemble Analysis tutorial. See also:
Morph Conformations
There are several ways to start
MD Movie, a tool in the MD/Ensemble Analysis category.
Several formats are supported:
Format |
Required Inputs |
Amber |
- prmtop (parameter/topology) file, either the
older or the newer format (see Appendix E of the
Amber 7 Manual)
- trajectory (coordinates), either
formatted or
binary NetCDF. Multiple trajectory files can be specified,
to be concatenated in the order given. Additional trajectory files
can be loaded at a later stage.
Amber residue names are remapped to standard PDB residue names where possible.
Amber NetCDF support is courtesy of Mingfeng Yang.
|
CHARMM,
NAMD, or
X-PLOR |
- PSF (protein structure file; X-PLOR-style topology)
- DCD (binary trajectory)
PSF/DCD support is courtesy of
MDTools.
|
GROMACS |
- portable binary "run input" file with topology, starting coordinates,
and simulation parameters
(.tpr)
- portable binary trajectory
(.trr)
|
GROMOS |
- topology
- coordinates (trajectory)
- PROMD (PROMD input file used to generate the trajectory)
- a scale factor to convert the coordinates to angstroms (usually 10.0)
|
MMTK
|
|
PDB, multiple files
(one file per frame) |
Starting and ending file names must be supplied.
The file names must include frame numbers, and
files for all intermediate frames must also be present.
The files must not contain END records.
|
PDB, single file
(coordinates for each frame bracketed
by MODEL and ENDMDL records) |
The name of the file must be supplied.
The MODEL numbers are interpreted as frame numbers
and should start with 1 or 0 and increment by 1.
|
These input files can be gzipped.
The PDB options generally require coordinates for the same set of atoms to be
supplied for each frame. However, if the coordinates supplied for a
frame represent only a subset of the atoms in the preceding frame,
it will be inferred that the remaining atoms are present but have the
same coordinates as in the preceding frame. Changes are cumulated
in the forward direction and based on all frames, even when frames
are skipped during playback (step size > 1).
All or a contiguous subsegment of a trajectory can be loaded.
If pipe is entered as the ending frame number,
the input trajectory will be read until it runs out,
as long as no other input specifies a smaller ending frame number.
For example, for a GROMOS trajectory,
the NSTLIM variable in the PROMD file should also be increased to at least
the total number of frames expected. When a pipe has been specified,
there will be an attempt to load the entire trajectory up front.
A further option is a metafile,
simply a text file that specifies the input files/parameters.
The first line designates trajectory type
(such as amber or gromos, where case is unimportant)
and optionally,
starting and ending frame numbers of the range to be loaded.
A pipe can be specified as described above.
If no frame numbers are supplied, the entire trajectory will be loaded;
however, if "?" is given for both the starting and ending frame numbers,
a dialog for entering this information will appear.
The remaining lines specify input files and
parameters in the same order as in the dialog. For example:
amber 500 1000
dna.prmtop
dna.mdcrd
or:
pdb
single
108d.pdb
If input files are not in the same directory as the metafile,
their pathnames relative to the location of the metafile should be supplied.
A metafile can be opened directly from the
Command Line
(or the system command line upon
startup) using the prefix md: or movie:. This will
start MD Movie and open the trajectory data.
VIEWING FRAMES
After input files and parameters have been specified,
the first set of coordinates will be displayed and
the MD Movie controller will appear:
If a subsegment was specified, a message about the
restricted frame range will be displayed temporarily.
The total number of frames in the trajectory (whether loaded or not)
will continue to be reported.
For all input formats except PDB,
the coordinates for a given frame are not read in
until that frame is viewed or used for analysis.
From left to right, the buttons mean: play backward continuously;
go back one step; stop;
go forward one step;
and play forward continuously. When the Loop
option is on, forward play can wrap from the end to the beginning
of the loaded trajectory and reverse play can wrap from the beginning
to the end.
The rate of continuous play can be adjusted
with the Playback speed slider; up to a 1-second delay
can be added between frame advances.
The Frame number is reported and can also be entered
directly to view a specific frame. The Step size
controls the level of sampling for viewing purposes. For example,
a step size of 3 indicates that only every third frame will be viewed;
however, when forward play loops from end to beginning, the movie will
start at the first frame loaded, and when reverse play loops from beginning
to end, the movie will start at the last frame loaded.
Frame number and step size changes take effect when
return (Enter) is pressed.
Protein secondary structure assignments are not recomputed automatically
over the course of a trajectory. If displaying protein as a
ribbon,
see the note below.
The current frame or all frames that have been viewed
can be saved as a PDB file with
File... Save PDB.
The view can be held steady on
selected atoms.
One can define scripts
to be executed at each frame update.
A complete menu listing with short descriptions is included
below.
Hide closes the interface without exiting from MD Movie;
the interface can be reopened using the Tools menu entry
for the instance
of MD Movie. Quit exits from MD Movie and
removes the structure from the Chimera window.
Help opens this manual page in a browser window.
RECORDING A MOVIE
Images can be captured during
trajectory playback and automatically assembled into a movie file.
Manipulations in Chimera can be performed and
per-frame scripts executed
during the playback/image-saving process.
See also:
coordset,
making movies
Important notes:
- Protein secondary structure assignments are not recomputed automatically
over the course of a trajectory.
If a protein or peptide is displayed as a
ribbon
and significant conformational changes are occurring, users may want to
reassign secondary structure at each frame.
This can be done with a per-frame script
that includes the Chimera command
ksdssp.
- For a one-to-one relationship between trajectory frames and
recorded image frames, the Playback speed slider
should be moved to the far right. Otherwise, identical image frames
will be inserted between the unique data frames to slow playback.
The frame number parameters described below refer only
to the unique data frames.
- On certain platforms, other windows should not overlap
the Chimera graphics window during recording
(details...).
This is not an issue when raytracing is used.
File... Record movie
opens an interface for specifying image capture and movie assembly
parameters:
- File name - name for the resulting movie file
- File type (movie format) choices:
- MPEG-1 [.mpg]
- MPEG-2 [.mpg]
- MPEG-4 [.mp4]
- AVI MSMPEG-4v2 [.avi]
- Quicktime [.mov]
- Starting frame (first frame loaded, by default)
- number of the first frame at which to save an image
- Step size [n]
- level of sampling within the indicated range
(every nth frame will be used)
- Ending frame (last frame loaded, by default)
- number of the last frame to possibly include (if not skipped by sampling);
must be within the range originally loaded
- Encode forward then backward ("roundtrip") (true/false)
- whether to include the frames in reverse order as the second half
of the movie
- Frame quality (screen/supersampled)
- whether to increase the image quality over what is displayed on the screen.
The supersampled option
(even with 1x1 sampling) allows the
subdivision quality to
be adjusted automatically.
- Samples (1x1/2x2/3x3/4x4/5x5/6x6)
- When supersampling, how many pixels
to sample in the X and Y dimensions for each pixel in the final saved image.
Supersampling at levels greater than 1x1 entails generating initial images
larger than the window and sampling them down to the final size.
Higher values increase smoothness but also calculation time.
- Raytrace with POV-Ray (true/false)
- whether to raytrace with
POV-Ray rather than saving the contents of the Chimera graphics window.
Raytraced images include fancier effects like shadows,
but take longer to compute. The POV-Ray Options button opens
the
POV-Ray Options preferences
(see balancing
time requirements and results).
- Additional recording options
- options are the same as for the command
movie
record; if this field is left blank, image frames will be saved
in the PPM format with default names in a default location
(but normally deleted upon movie creation,
depending on the encoding options)
- Additional encoding options
- options are the same as for the command
movie
encode; if this field is left blank,
the movie will be encoded to play at 25 frames per second
with a default constant bit rate and buffer size, and image frames
will be deleted after the movie has been encoded
Clicking Record plays the trajectory and saves image frames
according to the specified starting and ending points and step values.
The resulting set of images will be converted to a movie file.
Stopping playback with the
MD Movie controller in the middle of the
playback/image-saving process will abort recording without
generating a movie file.
Close closes the dialog without initiating recording.
Help opens this manual page in a browser window.
PER-FRAME SCRIPTS
Per-Frame... Define script allows
specification of a script to be executed at each trajectory frame.
Scripts can be written in Chimera commands or Python code, and can
incorporate trajectory frame numbers.
Python scripts can also access the molecule model instance.
Examples:
- the following Chimera command script
(eachFrame.com)
identifies hydrogen bonds at each frame and shows only the residues involved:
chain @ca
~disp solvent
hb line 2 color yellow reveal true
Commands to be executed only at a specific frame can be indicated
with a leading #frame_num: (for example, #50:)
that will be stripped before the command is executed.
- the following Python script
(specificFrames.py)
initiates events at specific frames:
from chimera import runCommand
frame = mdInfo['frame']
if frame == mdInfo['startFrame']:
runCommand("roll y 3 40")
elif frame == 10:
runCommand("color green")
elif frame == 50:
runCommand("color orange")
runCommand("rl :ala; color dodger blue :ala; rep stick :ala")
elif frame == 90:
runCommand("~rl; rep wire :ala")
else:
runCommand("color byhet")
For Python scripts, the chimera module is automatically imported.
Note:
Frame arguments in commands such as
roll refer to
image frames rather than to unique data (trajectory) frames.
For a one-to-one correspondence between image and trajectory frames,
the Playback speed slider must be positioned
all the way to the right and the viewing step size set to 1.
Whereas an MD Movie per-frame script executes at each trajectory frame,
commands to be executed at each image frame (independent of any trajectory)
can be specified with the
perframe command.
Insert text file allows browsing to a text file and placing its contents
in the script area. Save to file saves the current contents of
the script area to a text file.
OK and Apply execute the script with and without
closing the dialog, respectively. If the movie is playing, the
script will continue to be executed for each trajectory frame until
Stop running script is chosen;
if the movie is halted on a single frame, the script will be executed
for that frame and will not be executed again until a different frame is shown.
Clear deletes the contents of the script area. Close
closes the dialog without executing the script, and Help opens
this manual page in a browser window.
OCCUPANCY ANALYSIS
It may be interesting to see which regions of space are highly populated
by certain atoms relative to others in the trajectory or ensemble.
For example, cations or water hydrogens may tend to occupy space
around a negatively charged solute group.
Occupancies can be represented as a three-dimensional grid of values,
or volume data.
Analysis... Calculate occupancy
can be used to generate such data and display it with
Volume
Viewer.
The occupancy map can be saved to a file and later
reopened in Chimera.
Usually, one should first define a reference set of atoms
to hold steady (the trajectory frames will be transformed to keep
these atoms in the same place and orientation, as much as possible).
This is accomplished by
selecting
the desired reference atoms and then choosing
Actions... Hold selection steady.
When the selection
is later changed, the "hold steady" atoms will not change unless
Actions... Hold selection steady
is used again.
Next, one should select
the atoms for which occupancy data will be collected. The
atoms in the selection
can be combined into a single set of occupancy data, or
segregated
by atom type.
OK collects occupancy data for the
selected atoms
according to the specified starting and ending points and step values,
with trajectory frames transformed according to a prior
hold steady specification, if any.
The resulting data grid(s) are displayed with
Volume
Viewer.
The dimensions of an occupancy grid will be the smallest
needed to enclose any nonzero values (which could be smaller than the
region of data collection).
The occupancy map can be saved to a file using
File...
Save map as in the
Volume
Viewer menu.
Close closes the dialog without initiating the calculation.
Help opens this manual page in a browser window.
RMSD ANALYSIS
Analysis... RMSD map
can be used to generate a map of all-by-all pairwise
root-mean-square deviations (RMSDs) among specified frames.
See also:
Ensemble Match,
Ensemble Cluster
- Starting frame (first frame loaded, by default)
- number of the first frame to include
in RMSD calculations; must be within the range originally loaded
- Step size [n]
- level of sampling within the indicated range
(every nth frame will be used)
- Ending frame (last frame loaded, by default)
- number of the last frame to possibly include (if not skipped by sampling);
must be within the range originally loaded
- Lower RMSD threshold (white) (0.5 by default)
- initial lower RMSD threshold for coloring, in angstroms;
white will be used for this value and lower.
If auto-recoloring is turned on,
the threshold may change after all of the values have been computed.
- Upper RMSD threshold (black) (3.0 by default)
- initial upper RMSD threshold for coloring, in angstroms;
black will be used for this value and higher.
RMSD values between the thresholds will be mapped to grayscale.
If auto-recoloring is turned on,
the threshold may change after all of the values have been computed.
- Restrict map to current selection, if any
(true/false) - whether to use only the
selected atoms, when a
selection exists
- Ignore solvent/ions (true/false)
- whether to omit atoms
classified
as solvent and ions from the calculations
- Ignore hydrogens (true/false)
- whether to omit hydrogen atoms from the calculations
- Auto-recolor for contrast
(true/false) - whether the RMSD map should be recolored automatically
after all values have been computed, using
thresholds that enclose the middle third of values (i.e.,
the lowest third of values will be white, the middle third in grayscale,
the highest third black)
For each frame-to-frame comparison, the least-squares-fit RMSD between
the indicated sets of atoms will be calculated, without applying any
transformation.
OK and Apply initiate the RMSD calculations with and without
closing the dialog, respectively.
Close closes the dialog without initiating the calculation.
Help opens this manual page in a browser window.
The calculations may require
additional frames to be read (frames within the loaded range
are not actually read until viewed or otherwise used)
and may take several minutes, depending on the size of the system
and the number of frames. The Abort button on the RMSD map dialog
allows termination of a calculation in progress.
The following approaches are recommended for examining long trajectories
or long trajectory segments:
Multiple RMSD maps can be open at the same time.
However, a given map can be recolored
(without recalculation of RMSD values) using the map's menu option
RMSD... Change thresholds... to adjust the white/black
threshold settings.
When the cursor is placed over a map,
the corresponding frame numbers and RMSD value are given near the
bottom of the dialog. Clicking on a map places the corresponding
frame numbers in the Frame fields. Clicking Go changes
the graphics display to the corresponding frame.
Alternatively, the
Ensemble Match tool
can be used to calculate all-by-all pairwise RMSD values for an ensemble
read from a single PDB file. The file would need to be
opened in a standard way
rather than with MD Movie. Unlike MD Movie,
Ensemble Match
can perform the corresponding pairwise superpositions (i.e.
match one structure to another), but its use is impractical for
ensembles with very many members.
MD MOVIE MENU
File
- Save PDB... open a
dialog
to save the current frame or all frames that have been viewed
as a PDB file
- Record movie... set parameters for saving
image frames and encoding them as a movie file
- Load Additional Frames...
(only available for Amber format)
read an additional trajectory file and append its frames to the end of
the current trajectory
Actions
- Hold selection steady
- transform subsequent trajectory frames to keep
the selected atoms
in the same place and orientation, as much as possible (since the
atoms may move relative to one another). For best results,
the selection should include at least three atoms, not linearly arranged,
to define a frame of reference.
If the selection is changed, Hold selection steady must be chosen
again to start using the new selection.
- Stop holding steady
- return to the default behavior of only
transforming the coordinates according to user manipulations and commands
Per-Frame
- Define script... open a dialog for
entering a script
(written in Chimera commands or Python code)
to be executed after each trajectory frame update.
OK and Apply execute the script with and without
closing the dialog, respectively. If the movie is playing, the
script will continue to be executed for each trajectory frame until
Stop running script is chosen.
- Stop running script
- do not run the script after subsequent trajectory frame updates
Analysis
- Calculate occupancy... collect and display (with
Volume
Viewer) occupancy data for the
selected atoms
over a specified set of frames
- RMSD map...
calculate a two-dimensional RMSD map containing
all-by-all comparisons among specified frames
ADDING A FORMAT
MD Movie uses the Trajectory module to read the various formats
(chimera/share/Trajectory, where chimera
is the Chimera installation location). Trajectory
contains a subdirectory, formats, which in turn contains
subdirectories that each correspond to the Python module for a
supported format. By convention, the module (and directory)
name for each format is the name of the format with the first letter of
each word capitalized and all other letters lowercase. For example,
the MMTK module's name is Mmtk.
A format's module is typically structured so that the code that
interfaces with Trajectory's generic format handling is in
__init__.py,
and the code specific to reading a particular format is in
another python file,
usually named after the format itself (for example, Gromos.py).
__init__.py must support the following:
- If the format name displayed to the user should be different
from the module name (usually it should, due to capitalization), then
there must be a global variable named formatName that is
initialized to the display name of the format.
- A class named ParamGUI must be defined
to handle presenting the file-loading interface to the user.
It must have two methods:
- __init__, which receives a Tkinter.Frame
instance argument. The __init__ method should populate the frame
with widgets for gathering the input information for the format from the user.
- loadEnsemble, which takes as arguments
a starting frame number, ending frame number, and callback function.
loadEnsemble needs to compose a list of the arguments
that were provided by the user to the widgets defined in
__init__, and then call this module's
global loadEnsemble function (see below) with that list as the first
argument and the start/end frame number and callback as the remaining
three arguments.
- A global loadEnsemble
function that generates an ensemble instance
(discussed later). This function is not only called by the
ParamGUI.loadEnsemble method, but also when
a metafile is used to specify the input parameters.
This function takes four arguments:
a format-specific list of input parameters, a starting frame number,
an ending frame number, and a callback function to start the MD Movie
interface. The global loadEnsemble function
should call the interface with the generated ensemble
as an argument, and should remember the provided
format-specific values as preferred defaults for
future uses of the format.
__init__.py files are very similar from format to format.
The simplest way to generate a new __init__.py file
is to copy and modify another format's.
Gromos format provides a good example, as it
involves multiple input files and a non-file parameter.
The format-specific .py file
defines an ensemble class that gets instantiated from
__init__.py's loadEnsemble function.
The ensemble class must support the following methods:
- An __init__ method that takes the format's input parameters and
start/end frames as arguments. The __init__ method may read input
files or do whatever is necessary to support the other instance methods
(such as call into a C/C++ module to read the files, as is done for
Amber format).
- A GetDict method that takes a string argument. The string
specifies what data should be returned. The possible string values are:
- atomnames - return a list of the atom names; a residue's
atoms must be consecutive
- elements - return a list of the atom elements. These should
be instances of chimera.Element
(which can be initialized with a string such as "Fe" or a number).
Trajectory's determineElementFromMass
function may be useful if the format does not specify the atomic
number directly or it cannot be determined easily from the atom name.
- resnames - return a list of the residue names
- bonds - return a list of bonds (2-tuples of indices into
the atomnames list)
- ipres - a list of the first atom of each residue (indices
into atomnames, but unlike previous indices these are
1-based, so the first element of ipres will always be 1)
- A __getitem__ method taking a frame-number argument
(starting with 1): return a list of 3-tuples corresponding to the
xyz coordinates of the atoms in that frame
(in the same order as atomnames).
The coordinates should be in angstroms.
- A __len__ method that returns the total number of
frames in the trajectory (not just the number of frames between the
user-specified start/end frames).
UCSF Computer Graphics Laboratory / August 2009