Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for secondary structure identification #1612

Open
richardjgowers opened this issue Aug 8, 2017 · 9 comments · May be fixed by #4304
Open

Support for secondary structure identification #1612

richardjgowers opened this issue Aug 8, 2017 · 9 comments · May be fixed by #4304

Comments

@richardjgowers
Copy link
Member

richardjgowers commented Aug 8, 2017

Is your feature request related to a problem?

gmx do_dssp isn't making nice with DSSP version 3.1.4, and I would like to quantify the secondary structure of my protein.

Describe the solution you'd like

An MDAnalysis version where I don't need to load my entire trajectory into memory.

Describe alternatives you've considered

MDTraj has compute_dssp but it loads the trajectory into memory.

Additional context

The issue text was copied from #2608 (duplicate), now that this issue is about dssp and not stride.

@jbarnoud
Copy link
Contributor

jbarnoud commented Aug 9, 2017

Do you want to read a STRIDE (or DSSP) output or do you want to implement the method in MDAnalysis?

In anyway we'll need a secondary structure topology attribute. What should be its value for the atoms that are not part of a protein? numpy.nan?

@orbeckst
Copy link
Member

orbeckst commented Aug 9, 2017

DSSP (new) is open source http://swift.cmbi.ru.nl/gv/dssp/ ; a while back I looked into wrapping but that was too complicated. A cython reimplementation that uses a Universe would be useful.

@richardjgowers
Copy link
Member Author

Ok I've started this. I've got a conda build recipe for STRIDE here which should allow conda install stride to get the binary in place. I've then got a pystride python package, which runs the binary and returns the output. Then within MDA we can have a layer (probably MDAnalysis.analysis.stride) which takes mda objects (AtomGroup and Universe) and goes to and from the pystride package.

@richardjgowers
Copy link
Member Author

I'm a little hesitant to put the stride stuff into core/ because it relies on an external binary, which can be a little flaky.

@jbarnoud
Copy link
Contributor

jbarnoud commented Aug 9, 2017

It for sure should not go in core as it calls an external program. Also, now that I think about it, we do not have support for time dependent topologies, so we cannot store the secondary structure in a topology attribute. I uses Martini too much, I forgot secondary structures could change over time...

@richardjgowers
Copy link
Member Author

@jbarnoud I was actually thinking today we could do time dependent TopologyAttrs by having a mechanism similar to what @mnmelo used for UpdatingAtomGroup which lazily refreshes contents if the current ts.frame is different.

@orbeckst
Copy link
Member

orbeckst commented Aug 9, 2017

You could consider the secondary structure an auxiliary that is indexed with residue index.

Then you just have to write an AuxParser for the STRIDE or DSSP output.

If you want to do selections then instead of using time-dependent topologies, add something to the selection language to select on Aux data, similar to prop z > 3.

@orbeckst orbeckst changed the title Support for secondary structure identification (STRIDE) Support for secondary structure identification Aug 16, 2017
@orbeckst
Copy link
Member

orbeckst commented Aug 16, 2017

I removed "STRIDE" from the issue title because of licensing concerns MDAnalysis/stride#2. A secondary structure detection would be great (especially if we could do it natively without piping into external tools).

@orbeckst
Copy link
Member

It would be great if we had "pydssp" ... see MDAnalysis/dssp#1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants