From b8b61380c8f1b3a99001df88b6b5e595b06bba7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=BCller?= Date: Thu, 24 Oct 2019 12:45:13 +0200 Subject: [PATCH] Include Gromacs internal function for making Frames Whole --- pygmx/topology.pxd | 8 ++++++++ pygmx/tpxio.pyx | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/pygmx/topology.pxd b/pygmx/topology.pxd index a2eba49..fb369c2 100755 --- a/pygmx/topology.pxd +++ b/pygmx/topology.pxd @@ -146,3 +146,11 @@ cdef extern from "gromacs/topology/topology.h": # cdef extern from "gromacs/topology/topology.h": # generate a t_atoms struct for the system from gmx_mtop_t # t_atoms* mtop2atoms(gmx_mtop_t *mtop) +cdef extern from "gromacs/topology/mtop_util.h": + t_atoms gmx_mtop_global_atoms(const gmx_mtop_t *mtop) + +cdef extern from "gromacs/pbcutil/rmpbc.h": + void rm_gropbc(const t_atoms *atoms, rvec x[], const matrix box); + + + diff --git a/pygmx/tpxio.pyx b/pygmx/tpxio.pyx index facd13c..4d20442 100755 --- a/pygmx/tpxio.pyx +++ b/pygmx/tpxio.pyx @@ -251,3 +251,12 @@ cdef class TPXReader: &self.topology ) self.topology_name = self.topology.name[0] + + +@cython.binding(True) +def make_xtcframe_whole(coords, box, reader): + cdef t_atoms = gmx_mtop_global_atoms(reader.topology) + cdef np.ndarray[real, ndim=2] b = np.asarray(box, dtype=np.float32) + cdef np.ndarray[real, ndim=2] x = np.asarray(coords, dtype=np.float32) + rm_gropbc(const t_atoms *atoms, x.data, b) + return x \ No newline at end of file