DSSP Implementation

451 views
Skip to first unread message

William Glass

unread,
Sep 25, 2018, 12:55:55 PM9/25/18
to MDnalysis discussion
Hi everyone,

I'm looking to characterise loss or gain of secondary structure over a simulation.
I was wondering if MDAnalysis has dssp implemented in it or if this is something that needs to be worked on?
I guess the general idea would be to produce a .pdb file at every N frames and pass this to dssp.

Any help would be great!

Will

Oliver Beckstein

unread,
Sep 25, 2018, 1:32:58 PM9/25/18
to mdnalysis-...@googlegroups.com
Hi Will,

Welcome the MDAnalysis list.

On Sep 25, 2018, at 7:19 AM, 'William Glass' via MDnalysis discussion <mdnalysis-...@googlegroups.com> wrote:

Hi everyone,

I'm looking to characterise loss or gain of secondary structure over a simulation.
I was wondering if MDAnalysis has dssp implemented in it or if this is something that needs to be worked on?

We don’t have this implemented. There’s an open issue https://github.com/MDAnalysis/mdanalysis/issues/1612 

I guess the general idea would be to produce a .pdb file at every N frames and pass this to dssp.

That’s a common approach (for instance, the MDAnalysis.analysis.hole module uses it). 

Even better would be a “pydssp” package that provides a Python interface to the DSSP algorithm. If I had the time, I would use the open source sources for DSSP and try to write  a simple DSSP library (either C++ or Cython) with a generic Python interface that would be easy to use from MDAnalysis (and any other code that wants to use it).

But in the meantime, something like

protein = u.select_atoms(“protein”)
pdbfile = “temporary.pdb”
data = []
with mda.Writer(pdbfile, “w”) as W:
   for ts in u.trajectory[::step]:
       W.write(protein)
       secstructure = run_dssp(pdbfile)
       data.append( (ts.frame, ts.time, secstructure) )

where run_dssp() should be a function that calls dssp (e.g. with subprocess.run()) and returns the secondary structur information as a suitable data structure. We then store it in `data` as a time series and then you have to process `data`. (You can also create proper temporary files that get cleaned up automatically but I just put down the bare bones.)

Oliver


Any help would be great!

Will




Reply all
Reply to author
Forward
0 new messages