Wednesday, January 19, 2011

Ruby scripts for 3DNA analysis of molecular dynamics simulation trajectories

Over the years, I've been very pleased to see 3DNA's ever-increasing applications for the analysis of molecular dynamics (MD) simulation trajectories of nucleic acid structures. Among its other features, this illustrates that the command-line driven approach of 3DNA makes it easily integrable into the MD analysis pipeline (with some scripting, of course).

However, the lack of direct support of 3DNA to the ever more popular field of MD simulations has caused several obvious problems:
  • Repeated efforts – virtually every lab or even MD practitioner could come up with an ad hoc scripting solution.
  • Hinderance to 3DNA's even wider adoption – new comer to the MD field, or bench scientists interested in dynamics simulations would be scared off.
  • Known issues with existing approaches – most predominately the unnecessary repetitive run of find_pair to deduce base pairing information for each snapshot (model), which not only takes time, but more seriously some pairs could be missing due to melted out or distortion along the trajectory.
I've been following 3DNA's citations for years and I am well aware of the above issues: in addition to answering relevant questions in the 3DNA forum, I have blogged specifically on the topic a few times:
Of course, I am in a unique position to help solve the problem. Indeed, for the past couple of years, I've been thinking of writing scripts to make life easier for MD practitioners who care to use 3DNA. However, due to my lack of experience in MD simulations, constraints of "spare" time (plus laziness), and a want of suitable collaborator, I've never found the incentive to get the job done.

I finally decided to write some Ruby scripts to streamline the process of using 3DNA in MD simulations, after a recent question from Aneesh on "script for extracting data from 3DNA output file" in the 3DNA forum. After a few exchanges of views with Aneesh, and especially with Alpay's contribution of Python script and sample dataset, I've finished up two standalone yet connected Ruby scripts to analyze MD simulation trajectories with 3DNA and then extract various structural parameters. The details, including source code and test examples, are available in the 3DNA forum under "Ruby scripts for the analysis of MD simulation trajectories", in a newly created section titled "Molecular dynamics simulations".

The sample file ("sample_md0.pdb") distributed with the current v0.1 of the scripts contains 21 snapshots (models, 0..20), separated by MODEL/ENDMDL pairs. While the sample is based on a trajectory file from AMBER, any MD simulation packages, or NMR ensembles, can be similarly handled as well.

Now the ball is rolling. As time goes by, and with users' feedback, I will refine and expand the functionality of the scripts as necessary. I am confident to see more applications of 3DNA in the "dynamic" molecular simulation field.

1 comment:

  1. WOW!
    Cool.
    I will try this on some CHARMM trajectories I have.

    Thanks!

    Mauricio

    ReplyDelete

You are welcome to make a comment. Just remember to be specific and follow common-sense etiquette.