From 1c4593112ee9e314a612284d7b75f23bfa1356e2 Mon Sep 17 00:00:00 2001 From: IAlibay Date: Mon, 8 Jun 2020 11:10:22 +0100 Subject: [PATCH 1/3] Fixes issue 2717 --- package/CHANGELOG | 1 + package/MDAnalysis/coordinates/MOL2.py | 1 + 2 files changed, 2 insertions(+) diff --git a/package/CHANGELOG b/package/CHANGELOG index cbd69f7e13f..da37b8957d5 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -23,6 +23,7 @@ mm/dd/yy richardjgowers, kain88-de, lilyminium, p-j-smith, bdice, joaomcteixeira * 0.21.0 Fixes + * MOL2Writer now accepts both Universes and AtomgGroups (Issue #2717) * Use user-provided `remark` in `XYZWriter` (Issue #2692) * Added more informative error messages about topology attributes (Issue #2565) diff --git a/package/MDAnalysis/coordinates/MOL2.py b/package/MDAnalysis/coordinates/MOL2.py index c21a64db3b9..3a1d8f07299 100644 --- a/package/MDAnalysis/coordinates/MOL2.py +++ b/package/MDAnalysis/coordinates/MOL2.py @@ -389,5 +389,6 @@ def write_next_timestep(self, obj): ---------- obj : AtomGroup or Universe """ + obj = obj.atoms block = self.encode_block(obj) self.file.writelines(block) From 810243b5819f22bfdf24028b65b845c39e85a0f8 Mon Sep 17 00:00:00 2001 From: IAlibay Date: Mon, 8 Jun 2020 11:11:11 +0100 Subject: [PATCH 2/3] Adds tests --- .../MDAnalysisTests/coordinates/test_mol2.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/testsuite/MDAnalysisTests/coordinates/test_mol2.py b/testsuite/MDAnalysisTests/coordinates/test_mol2.py index 0fe25e79eea..b42f2d2b068 100644 --- a/testsuite/MDAnalysisTests/coordinates/test_mol2.py +++ b/testsuite/MDAnalysisTests/coordinates/test_mol2.py @@ -29,6 +29,7 @@ from numpy.testing import ( assert_equal, assert_array_equal, assert_array_almost_equal, TestCase, + assert_almost_equal ) from MDAnalysisTests.datafiles import ( @@ -190,3 +191,19 @@ def test_mol2_multi_write(tmpdir): u = mda.Universe(mol2_molecules) u.atoms[:4].write('group1.mol2') u.atoms[:4].write('group1.mol2') + + +def test_mol2_universe_write(tmpdir): + # see Issue 2717 + with tmpdir.as_cwd(): + outfile = 'test.mol2' + + u = mda.Universe(mol2_comments_header) + + with mda.Writer(outfile) as W: + W.write(u) + + u2 = mda.Universe(outfile) + + assert_almost_equal(u.atoms.positions, u2.atoms.positions) + assert_almost_equal(u.dimensions, u2.dimensions) From 3973c1d6701fb754989484053ab2e4b5659daee6 Mon Sep 17 00:00:00 2001 From: IAlibay Date: Mon, 8 Jun 2020 11:32:49 +0100 Subject: [PATCH 3/3] Switched ag safeguard to encode_block --- package/MDAnalysis/coordinates/MOL2.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/MDAnalysis/coordinates/MOL2.py b/package/MDAnalysis/coordinates/MOL2.py index 3a1d8f07299..696128913ef 100644 --- a/package/MDAnalysis/coordinates/MOL2.py +++ b/package/MDAnalysis/coordinates/MOL2.py @@ -306,6 +306,8 @@ def encode_block(self, obj): ---------- obj : AtomGroup or Universe """ + # Issue 2717 + obj = obj.atoms traj = obj.universe.trajectory ts = traj.ts @@ -389,6 +391,5 @@ def write_next_timestep(self, obj): ---------- obj : AtomGroup or Universe """ - obj = obj.atoms block = self.encode_block(obj) self.file.writelines(block)