Visualizing trajectories with Python, VMD, and .vtf files

As a computational scientist who develops Brownian Dynamics (BD) simulations, I have had a difficult time finding software to visualize trajectories from my simulations.  There are a lot of software tools for molecular visualization, but the majority of these tools are designed to view “static” molecules that do not change over time.  For storing the output of molecular dynamics (MD) simulations, this is logical, since the simulations often run for millions of time steps and it would be impractical to store (and view) all of them.  The user is often interested only in finding the lowest-energy configuration, so all the earlier steps can be discarded.  While this is also somewhat true for BD simulations, for debugging purposes it is helpful to visualize the trajectory of the particles.


My first attempt at visualization was to use the free visualization package VMD.  VMD is an industrial-strength tool designed to visualize the output of molecular dynamics simulations.  The user interface is not the best, and the license restricts usage of the free version to non-commercial use, but it seems to be very powerful and I have come nowhere near exploring its limits.  VMD reads many different file formats, and allows the user to animate a trajectory and export it as a movie.

.vtf Files

This leads to the important question of choosing which file format to use to feed data into VMD.  Since I am writing my own simulation software, I want to choose a format that is standardized, well documented, easy to create, and supports multiple time steps.  I found the .vtf file format to be very useful (not to be confused with .vtf format from Valve Software) Here is an example .vtf file.


For my application, the animation capabilities of VMD are its best feature.  Animating a trajectory file can be done with minimal CPU overhead, even without an OpenGL graphics card.  VMD can export a movie directly, without using other tools, and with a reasonable CPU load.


Visualizing “balls and bonds” is easy–adding anything else to the visualization is difficult.  VMD allows you to add arbitrary shapes to the view, but it has to be done with Python or Tcl scripting.  The scripting interface utilizes a command-line console that is, by default, in Tcl mode.  You can write your own modules and import them.  However, I did not find the Python interface to be particularly intuitive or well documented.  I ultimately moved away from VMD because of its limited ability to add supplemental graphics. I wanted the capability to add a vector to each molecule to illustrate the net force on the molecule, and this proved to be too difficult with VMD.  Another problem is that the .vtf files require all the “atoms” to be defined at the beginning of the simulation, but BD simulations sometimes require the introduction of new “atoms” during the simulation.

My Next Solution

Although VMD was useful, I now use Paraview with .vtu files.  I still use VMD to generate movies when I don’t need to visualize additional things, like force vectors.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.