Skip to content

Commit e247c10

Browse files
committed
update tests within test_levels.py to reflect principle axes integration
1 parent f160777 commit e247c10

1 file changed

Lines changed: 54 additions & 49 deletions

File tree

tests/test_CodeEntropy/test_levels.py

Lines changed: 54 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -60,37 +60,31 @@ def test_select_levels(self):
6060

6161
def test_get_matrices(self):
6262
"""
63-
Test `get_matrices` with mocked internal methods and a simple trajectory.
64-
Ensures that the method returns correctly shaped matrices after filtering.
63+
Test `get_matrices` with mocked internal methods and a simple setup.
64+
Ensures that the method returns correctly shaped force and torque matrices.
6565
"""
66-
67-
# Create a mock UniverseOperations and LevelManager
6866
universe_operations = UniverseOperations()
69-
7067
level_manager = LevelManager(universe_operations)
7168

72-
# Mock internal methods
73-
level_manager.get_beads = MagicMock(return_value=["bead1", "bead2"])
69+
bead1 = MagicMock()
70+
bead1.principal_axes.return_value = np.ones(3)
71+
72+
bead2 = MagicMock()
73+
bead2.principal_axes.return_value = np.ones(3)
74+
75+
level_manager.get_beads = MagicMock(return_value=[bead1, bead2])
7476
level_manager.get_weighted_forces = MagicMock(
7577
return_value=np.array([1.0, 2.0, 3.0])
7678
)
7779
level_manager.get_weighted_torques = MagicMock(
7880
return_value=np.array([0.5, 1.5, 2.5])
7981
)
8082
level_manager.create_submatrix = MagicMock(return_value=np.identity(3))
81-
level_manager.filter_zero_rows_columns = MagicMock(side_effect=lambda x: x)
8283

83-
# Mock data_container and trajectory
8484
data_container = MagicMock()
85-
timestep1 = MagicMock()
86-
timestep1.frame = 0
87-
timestep2 = MagicMock()
88-
timestep2.frame = 1
89-
data_container.trajectory.__getitem__.return_value = [timestep1, timestep2]
90-
bead = MagicMock()
91-
bead.principal_axes = MagicMock(return_value=np.ones(3))
85+
data_container.atoms = MagicMock()
86+
data_container.atoms.principal_axes.return_value = np.ones(3)
9287

93-
# Call the method
9488
force_matrix, torque_matrix = level_manager.get_matrices(
9589
data_container=data_container,
9690
level="residue",
@@ -100,30 +94,35 @@ def test_get_matrices(self):
10094
force_partitioning=0.5,
10195
)
10296

103-
# Assertions
104-
self.assertTrue(isinstance(force_matrix, np.ndarray))
105-
self.assertTrue(isinstance(torque_matrix, np.ndarray))
106-
self.assertEqual(force_matrix.shape, (6, 6)) # 2 beads × 3D
97+
self.assertIsInstance(force_matrix, np.ndarray)
98+
self.assertIsInstance(torque_matrix, np.ndarray)
99+
100+
self.assertEqual(force_matrix.shape, (6, 6))
107101
self.assertEqual(torque_matrix.shape, (6, 6))
108102

109-
# Check that internal methods were called
110-
self.assertEqual(level_manager.get_beads.call_count, 1)
111-
self.assertEqual(level_manager.get_axes.call_count, 2) # 2 beads
112-
self.assertEqual(
113-
level_manager.create_submatrix.call_count, 6
114-
) # 3 force + 3 torque
103+
level_manager.get_beads.assert_called_once_with(data_container, "residue")
104+
105+
self.assertEqual(level_manager.get_weighted_forces.call_count, 2)
106+
self.assertEqual(level_manager.get_weighted_torques.call_count, 2)
107+
108+
self.assertEqual(level_manager.create_submatrix.call_count, 6)
115109

116110
def test_get_matrices_force_shape_mismatch(self):
117111
"""
118112
Test that get_matrices raises a ValueError when the provided force_matrix
119113
has a shape mismatch with the computed force block matrix.
120114
"""
121115
universe_operations = UniverseOperations()
122-
123116
level_manager = LevelManager(universe_operations)
124117

125-
# Mock internal methods
126-
level_manager.get_beads = MagicMock(return_value=["bead1", "bead2"])
118+
bead1 = MagicMock()
119+
bead1.principal_axes.return_value = np.ones(3)
120+
121+
bead2 = MagicMock()
122+
bead2.principal_axes.return_value = np.ones(3)
123+
124+
level_manager.get_beads = MagicMock(return_value=[bead1, bead2])
125+
127126
level_manager.get_weighted_forces = MagicMock(
128127
return_value=np.array([1.0, 2.0, 3.0])
129128
)
@@ -133,11 +132,9 @@ def test_get_matrices_force_shape_mismatch(self):
133132
level_manager.create_submatrix = MagicMock(return_value=np.identity(3))
134133

135134
data_container = MagicMock()
136-
bead = MagicMock()
137-
bead.principal_axes = MagicMock(return_value=np.ones(3))
138-
data_container.principal_axes = MagicMock(return_value=np.ones(3))
135+
data_container.atoms = MagicMock()
136+
data_container.atoms.principal_axes.return_value = np.ones(3)
139137

140-
# Incorrect shape for force matrix (should be 6x6 for 2 beads)
141138
bad_force_matrix = np.zeros((3, 3))
142139
correct_torque_matrix = np.zeros((6, 6))
143140

@@ -159,11 +156,16 @@ def test_get_matrices_torque_shape_mismatch(self):
159156
has a shape mismatch with the computed torque block matrix.
160157
"""
161158
universe_operations = UniverseOperations()
162-
163159
level_manager = LevelManager(universe_operations)
164160

165-
# Mock internal methods
166-
level_manager.get_beads = MagicMock(return_value=["bead1", "bead2"])
161+
bead1 = MagicMock()
162+
bead1.principal_axes.return_value = np.ones(3)
163+
164+
bead2 = MagicMock()
165+
bead2.principal_axes.return_value = np.ones(3)
166+
167+
level_manager.get_beads = MagicMock(return_value=[bead1, bead2])
168+
167169
level_manager.get_weighted_forces = MagicMock(
168170
return_value=np.array([1.0, 2.0, 3.0])
169171
)
@@ -173,9 +175,8 @@ def test_get_matrices_torque_shape_mismatch(self):
173175
level_manager.create_submatrix = MagicMock(return_value=np.identity(3))
174176

175177
data_container = MagicMock()
176-
bead = MagicMock()
177-
bead.principal_axes = MagicMock(return_value=np.ones(3))
178-
data_container.principal_axes = MagicMock(return_value=np.ones(3))
178+
data_container.atoms = MagicMock()
179+
data_container.atoms.principal_axes.return_value = np.ones(3)
179180

180181
correct_force_matrix = np.zeros((6, 6))
181182
bad_torque_matrix = np.zeros((3, 3)) # Incorrect shape
@@ -194,14 +195,20 @@ def test_get_matrices_torque_shape_mismatch(self):
194195

195196
def test_get_matrices_torque_consistency(self):
196197
"""
197-
Test that get_matrices returns consistent torque and force matrices
198+
Test that get_matrices returns consistent force and torque matrices
198199
when called multiple times with the same inputs.
199200
"""
200201
universe_operations = UniverseOperations()
201-
202202
level_manager = LevelManager(universe_operations)
203203

204-
level_manager.get_beads = MagicMock(return_value=["bead1", "bead2"])
204+
bead1 = MagicMock()
205+
bead1.principal_axes.return_value = np.ones(3)
206+
207+
bead2 = MagicMock()
208+
bead2.principal_axes.return_value = np.ones(3)
209+
210+
level_manager.get_beads = MagicMock(return_value=[bead1, bead2])
211+
205212
level_manager.get_weighted_forces = MagicMock(
206213
return_value=np.array([1.0, 2.0, 3.0])
207214
)
@@ -211,9 +218,8 @@ def test_get_matrices_torque_consistency(self):
211218
level_manager.create_submatrix = MagicMock(return_value=np.identity(3))
212219

213220
data_container = MagicMock()
214-
bead = MagicMock()
215-
bead.principal_axes = MagicMock(return_value=np.ones(3))
216-
data_container.principal_axes = MagicMock(return_value=np.ones(3))
221+
data_container.atoms = MagicMock()
222+
data_container.atoms.principal_axes.return_value = np.ones(3)
217223

218224
initial_force_matrix = np.zeros((6, 6))
219225
initial_torque_matrix = np.zeros((6, 6))
@@ -236,9 +242,8 @@ def test_get_matrices_torque_consistency(self):
236242
force_partitioning=0.5,
237243
)
238244

239-
# Check that repeated calls produce the same output
240-
self.assertTrue(np.allclose(torque_matrix_1, torque_matrix_2, atol=1e-8))
241-
self.assertTrue(np.allclose(force_matrix_1, force_matrix_2, atol=1e-8))
245+
np.testing.assert_array_equal(force_matrix_1, force_matrix_2)
246+
np.testing.assert_array_equal(torque_matrix_1, torque_matrix_2)
242247

243248
def test_get_beads_polymer_level(self):
244249
"""

0 commit comments

Comments
 (0)