From 277bcac26109c28909e1d34c77a9f6e92105b786 Mon Sep 17 00:00:00 2001 From: Josh Horton Date: Wed, 25 Aug 2021 12:09:52 +0100 Subject: [PATCH] fix unit double wrapping --- src/openmmio.py | 7 +++++-- src/smirnoffio.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/openmmio.py b/src/openmmio.py index c0af2a477..332e4d989 100644 --- a/src/openmmio.py +++ b/src/openmmio.py @@ -1281,12 +1281,15 @@ def normal_modes(self, shot=0, optimize=True, for_hessian_target=False): def _update_positions(self, X1, disable_vsite): """A convenience method for updating the positions of the simulation context.""" + # check if we have units + if isinstance(X1, numpy.ndarray): + X1 = X1 * angstrom if disable_vsite: - self.simulation.context.setPositions(X1 * angstrom) + self.simulation.context.setPositions(X1) else: # Create virtual sites before setting positions - mod = Modeller(self.pdb.topology, X1*angstrom) + mod = Modeller(self.pdb.topology, X1) mod.addExtraParticles(self.forcefield) self.simulation.context.setPositions(ResetVirtualSites_fast(mod.getPositions(), self.vsinfo)) diff --git a/src/smirnoffio.py b/src/smirnoffio.py index dab32d84e..19376900b 100644 --- a/src/smirnoffio.py +++ b/src/smirnoffio.py @@ -534,7 +534,7 @@ def _update_positions(self, X1, disable_vsite): else: X1 = (X1 + [Vec3(0.0, 0.0, 0.0)] * n_v_sites) * angstrom - self.simulation.context.setPositions(X1 * angstrom) + self.simulation.context.setPositions(X1) self.simulation.context.computeVirtualSites() def interaction_energy(self, fraga, fragb):