Skip to content

Commit 5c4db4a

Browse files
committed
new unit test for get_custom_residue_moment_of_inertia
1 parent a5ba9d7 commit 5c4db4a

1 file changed

Lines changed: 47 additions & 1 deletion

File tree

‎tests/unit/CodeEntropy/levels/test_axes.py‎

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,7 @@ def test_get_residue_axes_from_topology_no_neighbor_bonds_uses_cached_indices(
921921
np.testing.assert_allclose(rot_axes, np.eye(3) * 2.0)
922922
np.testing.assert_allclose(center, np.array([9.0, 8.0, 7.0]))
923923
np.testing.assert_allclose(moi, np.array([3.0, 2.0, 1.0]))
924+
924925
get_principal.assert_called_once()
925926

926927

@@ -947,7 +948,10 @@ def test_get_residue_axes_from_topology_neighbor_bonds_uses_molecule_axes(
947948
monkeypatch.setattr(ax, "get_molecule_axes", get_molecule)
948949

949950
trans_axes, rot_axes, center, moi = ax.get_residue_axes_from_topology(
950-
u=universe, mol=mol, residue_atoms=residue_atoms, topology=topology
951+
u=universe,
952+
mol=mol,
953+
residue_atoms=residue_atoms,
954+
topology=topology,
951955
)
952956

953957
make_whole.assert_called_once_with(mol.atoms)
@@ -978,6 +982,7 @@ def test_get_UA_axes_from_topology_multiple_heavy_uses_cached_indices_and_box(
978982

979983
get_principal = MagicMock(return_value=(np.eye(3) * 2.0))
980984
get_bonded = MagicMock(return_value=(np.eye(3) * 4.0, np.array([1.0, 1.0, 1.0])))
985+
981986
monkeypatch.setattr(ax, "get_principal_axes_from_group", get_principal)
982987
monkeypatch.setattr(ax, "get_bonded_axes_from_topology", get_bonded)
983988

@@ -2172,3 +2177,44 @@ def test_get_non_terminal_axes_3points(monkeypatch):
21722177

21732178
assert np.allclose(centre, [1, 0, 0])
21742179
assert np.allclose(axes, 3 * np.eye(3))
2180+
2181+
2182+
def test_get_residue_axes_all_atom_MOI(monkeypatch):
2183+
ax = AxesCalculator()
2184+
u = MagicMock()
2185+
u.dimensions = np.array([10.0, 10.0, 10.0, 90, 90, 90])
2186+
residue = u.select_atoms("resindex 1")
2187+
residue.__len__.return_value = 5
2188+
monkeypatch.setattr("CodeEntropy.levels.axes.make_whole", lambda _ag: None)
2189+
atoms = _FakeAtomGroup(
2190+
[
2191+
_atom(index=0, mass=12.0, pos=(1, 0, 0)),
2192+
_atom(index=1, mass=12.0, pos=(0, 1, 0)),
2193+
_atom(index=2, mass=12.0, pos=(0, 0, 1)),
2194+
_atom(index=3, mass=1.0, pos=(0, 0, 0)),
2195+
_atom(index=4, mass=1.0, pos=(1, 1, 1)),
2196+
],
2197+
positions=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 0], [1, 1, 1]]),
2198+
)
2199+
residue.atoms.positions = atoms.positions
2200+
residue.atoms.masses = atoms.masses
2201+
2202+
def _select_atoms(q):
2203+
if q.startswith("resindex"):
2204+
return atoms[0:2]
2205+
2206+
u.atoms.select_atoms.side_effect = _select_atoms
2207+
monkeypatch.setattr(ax, "get_principal_axes_from_group", lambda _ag: 2 * np.eye(3))
2208+
monkeypatch.setattr(
2209+
ax,
2210+
"get_non_terminal_axes",
2211+
lambda residue, edges, dimensions: ([1, 0, 0], np.eye(3)),
2212+
)
2213+
trans_axes, rot_axes, rot_center, moi = ax.get_residue_axes(
2214+
data_container=u, index=1, relative_index=0, residue=None
2215+
)
2216+
2217+
assert np.allclose(trans_axes, 2 * np.eye(3))
2218+
assert np.allclose(rot_axes, np.eye(3))
2219+
assert np.allclose(rot_center, [1, 0, 0])
2220+
assert np.allclose(moi, [26, 38, 38])

0 commit comments

Comments
 (0)