MDAnalysis / mdanalysis

MDAnalysis is a Python library to analyze molecular dynamics simulations.
https://mdanalysis.org
Other
1.29k stars 646 forks source link

Support for Gromacs's TNG format #865

Open jbarnoud opened 8 years ago

jbarnoud commented 8 years ago

Gromacs is slowly moving toward the new TNG trajectory format. The format got introduced in the late releases of the 4 serie, and should become the default format eventually.

TNG allows better compression that XTC, and have random frame access built in. It also allows to store arbitrary data along side the trajectory (which may require #785), and time-dependant topology (which would require #864).

A library is provided by the gromacs people: https://github.com/gromacs/gromacs/tree/master/src/external/tng_io

See the paper: http://onlinelibrary.wiley.com/doi/10.1002/jcc.23495/full

Full support for the TNG format can be implemented in parts:

orbeckst commented 8 years ago

And according to chatter on gmx-dev, it's being implemented in mdtraj.

khuston commented 8 years ago

I took a minimal crack at this with some cython that exposes the coordinates to python. (no actual MDAnalysis reader though): https://gist.github.com/khuston/fde287d32f346a7c2dba7a6182518d46 I guess we'd include the tng_io library headers and source to be built when MDAnalysis is installed?

Looking at the MDTraj progress, it looks like their reader is nearly complete if not entirely complete.

richardjgowers commented 8 years ago

@khuston that looks like a good start. You could keep the tng/Cython as a small interface like @kain88-de did here:

https://github.com/MDAnalysis/mdanalysis/blob/develop/package/MDAnalysis/lib/formats/libmdaxdr.pyx

Then write a Reader which uses this interface like here:

https://github.com/MDAnalysis/mdanalysis/blob/develop/package/MDAnalysis/coordinates/XTC.py

Don't worry about how to incorporate the Reader into MDA yet, that can wait until it's working nicely.

WRT tests, you should be able to convert the XTC file in the tests to a TNG and just steal borrow all the XTC tests

orbeckst commented 7 years ago

Is it realistic to have basic TNG support (at least reading fixed number of atoms) in 0.17.0? It would certainly look very good on the feature list.

hmacdope commented 2 years ago

Can be closed with #3765

jbarnoud commented 2 years ago

Can be closed with #3765

Not really. #3765 only ticks the first box from the todo list.

hmacdope commented 2 years ago

Fair point.

hmacdope commented 2 years ago

Of the remaining I would say the ordering in terms of priority would go

I don't think time dependent topology is something we can really handle either right? So I would push that down the list a bit. Sound about right?

jbarnoud commented 2 years ago

Time-dependent topologies will require a fairly major overhaul of the whole library. Let's not go there for now.

orbeckst commented 2 years ago

Fair enough, I unlinked this issue from PR #3765.

This issue will be an forever-open issue...