[gmx-developers] Writing TNG with libtng_io

Magnus Lundborg magnus.lundborg at scilifelab.se
Tue Jul 18 21:20:05 CEST 2017

Dear Jonathan,

I'm on vacation but I will look into this next week.



On 2017-07-08 17:18, Jonathan Barnoud wrote:
> Dear all,
> With other developers of MDAnalysis, we are working on a python 
> wrapper for the TNG library. While it is aimed at being used in 
> MDAnalysis, this wrapper is written to be used standalone. More 
> details can be found at <http://www.mdanalysis.org/pytng/>.
> I am working on the writing of a basic TNG file. I want to be able to 
> write particle positions  and a box shape for each frame. Each frame 
> can have an arbitrary time attached to it. I did manage to do this in 
> this pull request: <https://github.com/MDAnalysis/pytng/pull/18>, and 
> in this minimal example jupyter notebook: 
> <https://gist.github.com/jbarnoud/b8f750f116b76aba1b205babc001b569>. 
> Both cases are written in cython rather than C, but they call the same 
> functions from the tng_io library that a C program would.
> There are a few things I am not completely sure about, though.
> 1. When I write the box shape with `tng_util_box_shape_write` or 
> `tng_util_box_shape_with_time_write`, I do not manage to read it back 
> with gromacs. Both 'gmx check' and 'gmx dump' fail to read the box 
> with the following message:
>     TNG library: Cannot uncompress data block. 
> /home/jon/src/gromacs-2016.3/src/external/tng_io/src/lib/tng_io.c:5298
> I did solve the problem by using `tng_util_generic_write` (or its 
> `with_time` equivalent) and by setting the compression to 
> Does gromacs support the TNG_GZIP_COMPRESSION that is the default for 
> the high level `tng_util_box_shape_write` function? If so, what should 
> I do to have it working?
> 2. I write an arbitrary time with each frame. The time is arbitrary in 
> the sense that I do not know before hand what is the time that the 
> user of the library will provide for the frame, and that the time 
> difference between two consecutive frames do not have to be constant 
> (nor even positive). I managed this by setting the number of frames 
> per frame set to 1, and to set the time per frame to 0.
> Is it possible to have the arbitrary time with more than one frame per 
> frame set? I did get some results by setting the time per frame for 
> each frame using the time difference with the previous frame, but I 
> got some strange behaviors when the difference was 0; and 
> `tng_time_per_frame_set` refuses negative values.
> Also, I noticed that all the `tng_util_*_with_time_write` functions 
> expect the time to be expressed in seconds, while 
> `tng_time_per_frame_set` expects picoseconds. Is there a reason for 
> this discrepancy?
> Thank you for any insight you may provide,
> Jonathan Barnoud
> ||
> |
> |

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20170718/89dcbdea/attachment.html>

More information about the gromacs.org_gmx-developers mailing list