From 3395ca650f48ffc5d9ae1ff185139fc6809d889f Mon Sep 17 00:00:00 2001 From: Kushagar garg Date: Tue, 25 Nov 2025 00:56:28 +0530 Subject: [PATCH 1/5] MAINT: Replace old numpy assertions --- testsuite/MDAnalysisTests/coordinates/base.py | 101 ++++++++++-------- 1 file changed, 54 insertions(+), 47 deletions(-) diff --git a/testsuite/MDAnalysisTests/coordinates/base.py b/testsuite/MDAnalysisTests/coordinates/base.py index 1568dfab87a..04cf647bd57 100644 --- a/testsuite/MDAnalysisTests/coordinates/base.py +++ b/testsuite/MDAnalysisTests/coordinates/base.py @@ -28,8 +28,6 @@ from unittest import TestCase from numpy.testing import ( assert_equal, - assert_almost_equal, - assert_array_almost_equal, assert_allclose, ) @@ -118,10 +116,11 @@ def test_dt(self): def test_coordinates(self): A10CA = self.universe.select_atoms("name CA")[10] # restrict accuracy to maximum in PDB files (3 decimals) - assert_almost_equal( + assert_allclose( A10CA.position, self.ref_coordinates["A10CA"], - 3, + atol=1e-3, + rtol=0, err_msg="wrong coordinates for A10:CA", ) @@ -129,10 +128,11 @@ def test_distances(self): NTERM = self.universe.select_atoms("name N")[0] CTERM = self.universe.select_atoms("name C")[-1] d = mda.lib.mdamath.norm(NTERM.position - CTERM.position) - assert_almost_equal( + assert_allclose( d, self.ref_distances["endtoend"], - self.prec, + atol=10**(-self.prec), + rtol=0, err_msg="distance between M1:N and G214:C", ) @@ -322,21 +322,21 @@ def test_get_writer_2(self, ref, reader, tmpdir): assert_equal(W.n_atoms, 100) def test_dt(self, ref, reader): - assert_almost_equal(reader.dt, ref.dt, decimal=ref.prec) + assert_allclose(reader.dt, ref.dt, atol=10**(-ref.prec), rtol=0) def test_ts_dt_matches_reader(self, reader): assert_equal(reader.ts.dt, reader.dt) def test_total_time(self, ref, reader): - assert_almost_equal(reader.totaltime, ref.totaltime, decimal=ref.prec) + assert_allclose(reader.totaltime, ref.totaltime, atol=10**(-ref.prec), rtol=0) def test_first_dimensions(self, ref, reader): reader.rewind() if ref.dimensions is None: assert reader.ts.dimensions is None else: - assert_array_almost_equal( - reader.ts.dimensions, ref.dimensions, decimal=ref.prec + assert_allclose( + reader.ts.dimensions, ref.dimensions, atol=10**(-ref.prec), rtol=0 ) def test_changing_dimensions(self, ref, reader): @@ -345,17 +345,18 @@ def test_changing_dimensions(self, ref, reader): if ref.dimensions is None: assert reader.ts.dimensions is None else: - assert_array_almost_equal( - reader.ts.dimensions, ref.dimensions, decimal=ref.prec + assert_allclose( + reader.ts.dimensions, ref.dimensions, atol=10**(-ref.prec), rtol=0 ) reader[1] if ref.dimensions_second_frame is None: assert reader.ts.dimensions is None else: - assert_array_almost_equal( + assert_allclose( reader.ts.dimensions, ref.dimensions_second_frame, - decimal=ref.prec, + atol=10**(-ref.prec), + rtol=0 ) def test_volume(self, ref, reader): @@ -363,7 +364,7 @@ def test_volume(self, ref, reader): vol = reader.ts.volume # Here we can only be sure about the numbers upto the decimal point due # to floating point impressions. - assert_almost_equal(vol, ref.volume, 0) + assert_allclose(vol, ref.volume, atol=1, rtol=0) def test_iter(self, ref, reader): for i, ts in enumerate(reader): @@ -387,9 +388,11 @@ def test_remove_nonexistant_auxiliary_raises_ValueError(self, reader): def test_iter_auxiliary(self, ref, reader): # should go through all steps in 'highf' for i, auxstep in enumerate(reader.iter_auxiliary("highf")): - assert_almost_equal( + assert_allclose( auxstep.data, ref.aux_highf_all_data[i], + atol=1e-7, + rtol = 0, err_msg="Auxiliary data does not match for " "step {}".format(i), ) @@ -453,8 +456,8 @@ def test_transformations_iter(self, ref, transformed): v2 = np.float32((0, 0, 0.33)) for i, ts in enumerate(transformed): idealcoords = ref.iter_ts(i).positions + v1 + v2 - assert_array_almost_equal( - ts.positions, idealcoords, decimal=ref.prec + assert_allclose( + ts.positions, idealcoords, atol=10**(-ref.prec), rtol=0 ) def test_transformations_2iter(self, ref, transformed): @@ -465,12 +468,12 @@ def test_transformations_2iter(self, ref, transformed): idealcoords = [] for i, ts in enumerate(transformed): idealcoords.append(ref.iter_ts(i).positions + v1 + v2) - assert_array_almost_equal( - ts.positions, idealcoords[i], decimal=ref.prec + assert_allclose( + ts.positions, idealcoords[i], atol=10**(-ref.prec), rtol=0 ) for i, ts in enumerate(transformed): - assert_almost_equal(ts.positions, idealcoords[i], decimal=ref.prec) + assert_allclose(ts.positions, idealcoords[i], atol=10**(-ref.prec), rtol=0) def test_transformations_slice(self, ref, transformed): # Are the transformations applied when iterating over a slice of the trajectory? @@ -478,8 +481,8 @@ def test_transformations_slice(self, ref, transformed): v2 = np.float32((0, 0, 0.33)) for i, ts in enumerate(transformed[2:3:1]): idealcoords = ref.iter_ts(ts.frame).positions + v1 + v2 - assert_array_almost_equal( - ts.positions, idealcoords, decimal=ref.prec + assert_allclose( + ts.positions, idealcoords, atol=10**(-ref.prec), rtol=0 ) def test_transformations_switch_frame(self, ref, transformed): @@ -490,26 +493,26 @@ def test_transformations_switch_frame(self, ref, transformed): v2 = np.float32((0, 0, 0.33)) first_ideal = ref.iter_ts(0).positions + v1 + v2 if len(transformed) > 1: - assert_array_almost_equal( - transformed[0].positions, first_ideal, decimal=ref.prec + assert_allclose( + transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 ) second_ideal = ref.iter_ts(1).positions + v1 + v2 - assert_array_almost_equal( - transformed[1].positions, second_ideal, decimal=ref.prec + assert_allclose( + transformed[1].positions, second_ideal, atol=10**(-ref.prec), rtol=0 ) # What if we comeback to the previous frame? - assert_array_almost_equal( - transformed[0].positions, first_ideal, decimal=ref.prec + assert_allclose( + transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 ) # How about we switch the frame to itself? - assert_array_almost_equal( - transformed[0].positions, first_ideal, decimal=ref.prec + assert_allclose( + transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 ) else: - assert_array_almost_equal( - transformed[0].positions, first_ideal, decimal=ref.prec + assert_allclose( + transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 ) def test_transformation_rewind(self, ref, transformed): @@ -519,8 +522,8 @@ def test_transformation_rewind(self, ref, transformed): v2 = np.float32((0, 0, 0.33)) ideal_coords = ref.iter_ts(0).positions + v1 + v2 transformed.rewind() - assert_array_almost_equal( - transformed[0].positions, ideal_coords, decimal=ref.prec + assert_allclose( + transformed[0].positions, ideal_coords, atol=10**(-ref.prec), rtol=0 ) def test_transformations_copy(self, ref, transformed): @@ -536,8 +539,8 @@ def test_transformations_copy(self, ref, transformed): ) for i, ts in enumerate(new): ideal_coords = ref.iter_ts(i).positions + v1 + v2 - assert_array_almost_equal( - ts.positions, ideal_coords, decimal=ref.prec + assert_allclose( + ts.positions, ideal_coords, atol=10**(-ref.prec), rtol=0 ) def test_add_another_transformations_raises_ValueError(self, transformed): @@ -812,8 +815,8 @@ def test_write_different_box(self, ref, universe, tmpdir): for ts_ref, ts_w in zip(universe.trajectory, written): universe.dimensions[:3] += 1 - assert_array_almost_equal( - universe.dimensions, ts_w.dimensions, decimal=ref.prec + assert_allclose( + universe.dimensions, ts_w.dimensions, atol=10**(-ref.prec), rtol = 0 ) def test_write_trajectory_atomgroup(self, ref, reader, universe, tmpdir): @@ -853,10 +856,11 @@ def test_write_selection( copy = ref.reader(outfile) for orig_ts, copy_ts in zip(universe.trajectory, copy): - assert_array_almost_equal( + assert_allclose( copy_ts._pos, sel.atoms.positions, - ref.prec, + atol=10**(-ref.prec), + rtol=0, err_msg="coordinate mismatch between original and written " "trajectory at frame {} (orig) vs {} (copy)".format( orig_ts.frame, copy_ts.frame @@ -933,10 +937,11 @@ def assert_timestep_almost_equal(A, B, decimal=6, verbose=True): ) if A.has_positions: - assert_array_almost_equal( + assert_allclose( A.positions, B.positions, - decimal=decimal, + atol=10**(-decimal), + rtol=0, err_msg="Timestep positions", verbose=verbose, ) @@ -949,10 +954,11 @@ def assert_timestep_almost_equal(A, B, decimal=6, verbose=True): ) ) if A.has_velocities: - assert_array_almost_equal( + assert_allclose( A.velocities, B.velocities, - decimal=decimal, + atol=10**(-decimal), + rtol=0, err_msg="Timestep velocities", verbose=verbose, ) @@ -965,10 +971,11 @@ def assert_timestep_almost_equal(A, B, decimal=6, verbose=True): ) ) if A.has_forces: - assert_array_almost_equal( + assert_allclose( A.forces, B.forces, - decimal=decimal, + atol=10**(-decimal), + rtol=0, err_msg="Timestep forces", verbose=verbose, ) From 9cadd99fb0a4b6f54d3d09a6af7a9c6ca4e4e06e Mon Sep 17 00:00:00 2001 From: Kushagar garg Date: Tue, 25 Nov 2025 01:02:52 +0530 Subject: [PATCH 2/5] DOCS: Add contributor to AUTHORS --- package/AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/package/AUTHORS b/package/AUTHORS index 1cb4b5b5c39..fe9c4b79a19 100644 --- a/package/AUTHORS +++ b/package/AUTHORS @@ -263,6 +263,7 @@ Chronological list of authors - Amruthesh Thirumalaiswamy - Ch Zhang - Raúl Lois-Cuns + - Kushagar Garg External code ------------- From e1ee51d123b4e8a69077f558e77ea7edb51aba01 Mon Sep 17 00:00:00 2001 From: Kushagar garg Date: Tue, 25 Nov 2025 01:31:27 +0530 Subject: [PATCH 3/5] STYLE: Apply black formatting --- testsuite/MDAnalysisTests/coordinates/base.py | 79 +++++++++++++------ 1 file changed, 55 insertions(+), 24 deletions(-) diff --git a/testsuite/MDAnalysisTests/coordinates/base.py b/testsuite/MDAnalysisTests/coordinates/base.py index 04cf647bd57..757c5f5baff 100644 --- a/testsuite/MDAnalysisTests/coordinates/base.py +++ b/testsuite/MDAnalysisTests/coordinates/base.py @@ -131,7 +131,7 @@ def test_distances(self): assert_allclose( d, self.ref_distances["endtoend"], - atol=10**(-self.prec), + atol=10 ** (-self.prec), rtol=0, err_msg="distance between M1:N and G214:C", ) @@ -322,13 +322,15 @@ def test_get_writer_2(self, ref, reader, tmpdir): assert_equal(W.n_atoms, 100) def test_dt(self, ref, reader): - assert_allclose(reader.dt, ref.dt, atol=10**(-ref.prec), rtol=0) + assert_allclose(reader.dt, ref.dt, atol=10 ** (-ref.prec), rtol=0) def test_ts_dt_matches_reader(self, reader): assert_equal(reader.ts.dt, reader.dt) def test_total_time(self, ref, reader): - assert_allclose(reader.totaltime, ref.totaltime, atol=10**(-ref.prec), rtol=0) + assert_allclose( + reader.totaltime, ref.totaltime, atol=10 ** (-ref.prec), rtol=0 + ) def test_first_dimensions(self, ref, reader): reader.rewind() @@ -336,7 +338,10 @@ def test_first_dimensions(self, ref, reader): assert reader.ts.dimensions is None else: assert_allclose( - reader.ts.dimensions, ref.dimensions, atol=10**(-ref.prec), rtol=0 + reader.ts.dimensions, + ref.dimensions, + atol=10 ** (-ref.prec), + rtol=0, ) def test_changing_dimensions(self, ref, reader): @@ -346,7 +351,10 @@ def test_changing_dimensions(self, ref, reader): assert reader.ts.dimensions is None else: assert_allclose( - reader.ts.dimensions, ref.dimensions, atol=10**(-ref.prec), rtol=0 + reader.ts.dimensions, + ref.dimensions, + atol=10 ** (-ref.prec), + rtol=0, ) reader[1] if ref.dimensions_second_frame is None: @@ -355,8 +363,8 @@ def test_changing_dimensions(self, ref, reader): assert_allclose( reader.ts.dimensions, ref.dimensions_second_frame, - atol=10**(-ref.prec), - rtol=0 + atol=10 ** (-ref.prec), + rtol=0, ) def test_volume(self, ref, reader): @@ -392,7 +400,7 @@ def test_iter_auxiliary(self, ref, reader): auxstep.data, ref.aux_highf_all_data[i], atol=1e-7, - rtol = 0, + rtol=0, err_msg="Auxiliary data does not match for " "step {}".format(i), ) @@ -457,7 +465,7 @@ def test_transformations_iter(self, ref, transformed): for i, ts in enumerate(transformed): idealcoords = ref.iter_ts(i).positions + v1 + v2 assert_allclose( - ts.positions, idealcoords, atol=10**(-ref.prec), rtol=0 + ts.positions, idealcoords, atol=10 ** (-ref.prec), rtol=0 ) def test_transformations_2iter(self, ref, transformed): @@ -469,11 +477,13 @@ def test_transformations_2iter(self, ref, transformed): for i, ts in enumerate(transformed): idealcoords.append(ref.iter_ts(i).positions + v1 + v2) assert_allclose( - ts.positions, idealcoords[i], atol=10**(-ref.prec), rtol=0 + ts.positions, idealcoords[i], atol=10 ** (-ref.prec), rtol=0 ) for i, ts in enumerate(transformed): - assert_allclose(ts.positions, idealcoords[i], atol=10**(-ref.prec), rtol=0) + assert_allclose( + ts.positions, idealcoords[i], atol=10 ** (-ref.prec), rtol=0 + ) def test_transformations_slice(self, ref, transformed): # Are the transformations applied when iterating over a slice of the trajectory? @@ -482,7 +492,7 @@ def test_transformations_slice(self, ref, transformed): for i, ts in enumerate(transformed[2:3:1]): idealcoords = ref.iter_ts(ts.frame).positions + v1 + v2 assert_allclose( - ts.positions, idealcoords, atol=10**(-ref.prec), rtol=0 + ts.positions, idealcoords, atol=10 ** (-ref.prec), rtol=0 ) def test_transformations_switch_frame(self, ref, transformed): @@ -494,25 +504,40 @@ def test_transformations_switch_frame(self, ref, transformed): first_ideal = ref.iter_ts(0).positions + v1 + v2 if len(transformed) > 1: assert_allclose( - transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 + transformed[0].positions, + first_ideal, + atol=10 ** (-ref.prec), + rtol=0, ) second_ideal = ref.iter_ts(1).positions + v1 + v2 assert_allclose( - transformed[1].positions, second_ideal, atol=10**(-ref.prec), rtol=0 + transformed[1].positions, + second_ideal, + atol=10 ** (-ref.prec), + rtol=0, ) # What if we comeback to the previous frame? assert_allclose( - transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 + transformed[0].positions, + first_ideal, + atol=10 ** (-ref.prec), + rtol=0, ) # How about we switch the frame to itself? assert_allclose( - transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 + transformed[0].positions, + first_ideal, + atol=10 ** (-ref.prec), + rtol=0, ) else: assert_allclose( - transformed[0].positions, first_ideal, atol=10**(-ref.prec), rtol=0 + transformed[0].positions, + first_ideal, + atol=10 ** (-ref.prec), + rtol=0, ) def test_transformation_rewind(self, ref, transformed): @@ -523,7 +548,10 @@ def test_transformation_rewind(self, ref, transformed): ideal_coords = ref.iter_ts(0).positions + v1 + v2 transformed.rewind() assert_allclose( - transformed[0].positions, ideal_coords, atol=10**(-ref.prec), rtol=0 + transformed[0].positions, + ideal_coords, + atol=10 ** (-ref.prec), + rtol=0, ) def test_transformations_copy(self, ref, transformed): @@ -540,7 +568,7 @@ def test_transformations_copy(self, ref, transformed): for i, ts in enumerate(new): ideal_coords = ref.iter_ts(i).positions + v1 + v2 assert_allclose( - ts.positions, ideal_coords, atol=10**(-ref.prec), rtol=0 + ts.positions, ideal_coords, atol=10 ** (-ref.prec), rtol=0 ) def test_add_another_transformations_raises_ValueError(self, transformed): @@ -816,7 +844,10 @@ def test_write_different_box(self, ref, universe, tmpdir): for ts_ref, ts_w in zip(universe.trajectory, written): universe.dimensions[:3] += 1 assert_allclose( - universe.dimensions, ts_w.dimensions, atol=10**(-ref.prec), rtol = 0 + universe.dimensions, + ts_w.dimensions, + atol=10 ** (-ref.prec), + rtol=0, ) def test_write_trajectory_atomgroup(self, ref, reader, universe, tmpdir): @@ -859,7 +890,7 @@ def test_write_selection( assert_allclose( copy_ts._pos, sel.atoms.positions, - atol=10**(-ref.prec), + atol=10 ** (-ref.prec), rtol=0, err_msg="coordinate mismatch between original and written " "trajectory at frame {} (orig) vs {} (copy)".format( @@ -940,7 +971,7 @@ def assert_timestep_almost_equal(A, B, decimal=6, verbose=True): assert_allclose( A.positions, B.positions, - atol=10**(-decimal), + atol=10 ** (-decimal), rtol=0, err_msg="Timestep positions", verbose=verbose, @@ -957,7 +988,7 @@ def assert_timestep_almost_equal(A, B, decimal=6, verbose=True): assert_allclose( A.velocities, B.velocities, - atol=10**(-decimal), + atol=10 ** (-decimal), rtol=0, err_msg="Timestep velocities", verbose=verbose, @@ -974,7 +1005,7 @@ def assert_timestep_almost_equal(A, B, decimal=6, verbose=True): assert_allclose( A.forces, B.forces, - atol=10**(-decimal), + atol=10 ** (-decimal), rtol=0, err_msg="Timestep forces", verbose=verbose, From 26727b533c60cd1a7d844987f12632091488a3b5 Mon Sep 17 00:00:00 2001 From: Kushagar garg Date: Sun, 30 Nov 2025 22:58:13 +0530 Subject: [PATCH 4/5] style: standardize precision to 1e-3 and fix author order --- package/AUTHORS | 2 +- testsuite/MDAnalysisTests/coordinates/base.py | 38 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package/AUTHORS b/package/AUTHORS index 82c4d88c428..68b0eb7967a 100644 --- a/package/AUTHORS +++ b/package/AUTHORS @@ -263,8 +263,8 @@ Chronological list of authors - Amruthesh Thirumalaiswamy - Ch Zhang - Raúl Lois-Cuns - - Kushagar Garg - Shreejan Dolai + - Kushagar Garg External code ------------- diff --git a/testsuite/MDAnalysisTests/coordinates/base.py b/testsuite/MDAnalysisTests/coordinates/base.py index 757c5f5baff..88258f11bf0 100644 --- a/testsuite/MDAnalysisTests/coordinates/base.py +++ b/testsuite/MDAnalysisTests/coordinates/base.py @@ -131,7 +131,7 @@ def test_distances(self): assert_allclose( d, self.ref_distances["endtoend"], - atol=10 ** (-self.prec), + atol=1e-3, rtol=0, err_msg="distance between M1:N and G214:C", ) @@ -322,14 +322,14 @@ def test_get_writer_2(self, ref, reader, tmpdir): assert_equal(W.n_atoms, 100) def test_dt(self, ref, reader): - assert_allclose(reader.dt, ref.dt, atol=10 ** (-ref.prec), rtol=0) + assert_allclose(reader.dt, ref.dt, atol=1e-3, rtol=0) def test_ts_dt_matches_reader(self, reader): assert_equal(reader.ts.dt, reader.dt) def test_total_time(self, ref, reader): assert_allclose( - reader.totaltime, ref.totaltime, atol=10 ** (-ref.prec), rtol=0 + reader.totaltime, ref.totaltime, atol=1e-3, rtol=0 ) def test_first_dimensions(self, ref, reader): @@ -340,7 +340,7 @@ def test_first_dimensions(self, ref, reader): assert_allclose( reader.ts.dimensions, ref.dimensions, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) @@ -353,7 +353,7 @@ def test_changing_dimensions(self, ref, reader): assert_allclose( reader.ts.dimensions, ref.dimensions, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) reader[1] @@ -363,7 +363,7 @@ def test_changing_dimensions(self, ref, reader): assert_allclose( reader.ts.dimensions, ref.dimensions_second_frame, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) @@ -465,7 +465,7 @@ def test_transformations_iter(self, ref, transformed): for i, ts in enumerate(transformed): idealcoords = ref.iter_ts(i).positions + v1 + v2 assert_allclose( - ts.positions, idealcoords, atol=10 ** (-ref.prec), rtol=0 + ts.positions, idealcoords, atol=1e-3, rtol=0 ) def test_transformations_2iter(self, ref, transformed): @@ -477,12 +477,12 @@ def test_transformations_2iter(self, ref, transformed): for i, ts in enumerate(transformed): idealcoords.append(ref.iter_ts(i).positions + v1 + v2) assert_allclose( - ts.positions, idealcoords[i], atol=10 ** (-ref.prec), rtol=0 + ts.positions, idealcoords[i], atol=1e-3, rtol=0 ) for i, ts in enumerate(transformed): assert_allclose( - ts.positions, idealcoords[i], atol=10 ** (-ref.prec), rtol=0 + ts.positions, idealcoords[i], atol=1e-3, rtol=0 ) def test_transformations_slice(self, ref, transformed): @@ -492,7 +492,7 @@ def test_transformations_slice(self, ref, transformed): for i, ts in enumerate(transformed[2:3:1]): idealcoords = ref.iter_ts(ts.frame).positions + v1 + v2 assert_allclose( - ts.positions, idealcoords, atol=10 ** (-ref.prec), rtol=0 + ts.positions, idealcoords, atol=1e-3, rtol=0 ) def test_transformations_switch_frame(self, ref, transformed): @@ -506,14 +506,14 @@ def test_transformations_switch_frame(self, ref, transformed): assert_allclose( transformed[0].positions, first_ideal, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) second_ideal = ref.iter_ts(1).positions + v1 + v2 assert_allclose( transformed[1].positions, second_ideal, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) @@ -521,7 +521,7 @@ def test_transformations_switch_frame(self, ref, transformed): assert_allclose( transformed[0].positions, first_ideal, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) @@ -529,14 +529,14 @@ def test_transformations_switch_frame(self, ref, transformed): assert_allclose( transformed[0].positions, first_ideal, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) else: assert_allclose( transformed[0].positions, first_ideal, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) @@ -550,7 +550,7 @@ def test_transformation_rewind(self, ref, transformed): assert_allclose( transformed[0].positions, ideal_coords, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) @@ -568,7 +568,7 @@ def test_transformations_copy(self, ref, transformed): for i, ts in enumerate(new): ideal_coords = ref.iter_ts(i).positions + v1 + v2 assert_allclose( - ts.positions, ideal_coords, atol=10 ** (-ref.prec), rtol=0 + ts.positions, ideal_coords, atol=1e-3, rtol=0 ) def test_add_another_transformations_raises_ValueError(self, transformed): @@ -846,7 +846,7 @@ def test_write_different_box(self, ref, universe, tmpdir): assert_allclose( universe.dimensions, ts_w.dimensions, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, ) @@ -890,7 +890,7 @@ def test_write_selection( assert_allclose( copy_ts._pos, sel.atoms.positions, - atol=10 ** (-ref.prec), + atol=1e-3, rtol=0, err_msg="coordinate mismatch between original and written " "trajectory at frame {} (orig) vs {} (copy)".format( From 5b23f52824cee1c559ae5b0bc999c3bc7964eff3 Mon Sep 17 00:00:00 2001 From: Kushagar Garg Date: Sun, 30 Nov 2025 23:14:16 +0530 Subject: [PATCH 5/5] style: apply black formatting --- testsuite/MDAnalysisTests/coordinates/base.py | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/testsuite/MDAnalysisTests/coordinates/base.py b/testsuite/MDAnalysisTests/coordinates/base.py index 88258f11bf0..51856cd7b3f 100644 --- a/testsuite/MDAnalysisTests/coordinates/base.py +++ b/testsuite/MDAnalysisTests/coordinates/base.py @@ -328,9 +328,7 @@ def test_ts_dt_matches_reader(self, reader): assert_equal(reader.ts.dt, reader.dt) def test_total_time(self, ref, reader): - assert_allclose( - reader.totaltime, ref.totaltime, atol=1e-3, rtol=0 - ) + assert_allclose(reader.totaltime, ref.totaltime, atol=1e-3, rtol=0) def test_first_dimensions(self, ref, reader): reader.rewind() @@ -464,9 +462,7 @@ def test_transformations_iter(self, ref, transformed): v2 = np.float32((0, 0, 0.33)) for i, ts in enumerate(transformed): idealcoords = ref.iter_ts(i).positions + v1 + v2 - assert_allclose( - ts.positions, idealcoords, atol=1e-3, rtol=0 - ) + assert_allclose(ts.positions, idealcoords, atol=1e-3, rtol=0) def test_transformations_2iter(self, ref, transformed): # Are the transformations applied and @@ -476,14 +472,10 @@ def test_transformations_2iter(self, ref, transformed): idealcoords = [] for i, ts in enumerate(transformed): idealcoords.append(ref.iter_ts(i).positions + v1 + v2) - assert_allclose( - ts.positions, idealcoords[i], atol=1e-3, rtol=0 - ) + assert_allclose(ts.positions, idealcoords[i], atol=1e-3, rtol=0) for i, ts in enumerate(transformed): - assert_allclose( - ts.positions, idealcoords[i], atol=1e-3, rtol=0 - ) + assert_allclose(ts.positions, idealcoords[i], atol=1e-3, rtol=0) def test_transformations_slice(self, ref, transformed): # Are the transformations applied when iterating over a slice of the trajectory? @@ -491,9 +483,7 @@ def test_transformations_slice(self, ref, transformed): v2 = np.float32((0, 0, 0.33)) for i, ts in enumerate(transformed[2:3:1]): idealcoords = ref.iter_ts(ts.frame).positions + v1 + v2 - assert_allclose( - ts.positions, idealcoords, atol=1e-3, rtol=0 - ) + assert_allclose(ts.positions, idealcoords, atol=1e-3, rtol=0) def test_transformations_switch_frame(self, ref, transformed): # This test checks if the transformations are applied and if the coordinates @@ -567,9 +557,7 @@ def test_transformations_copy(self, ref, transformed): ) for i, ts in enumerate(new): ideal_coords = ref.iter_ts(i).positions + v1 + v2 - assert_allclose( - ts.positions, ideal_coords, atol=1e-3, rtol=0 - ) + assert_allclose(ts.positions, ideal_coords, atol=1e-3, rtol=0) def test_add_another_transformations_raises_ValueError(self, transformed): # After defining the transformations, the workflow cannot be changed