Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package/AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ Chronological list of authors
- Raúl Lois-Cuns
- Pranay Pelapkar
- Shreejan Dolai
- Shubham Mittal

External code
-------------
Expand Down
52 changes: 33 additions & 19 deletions testsuite/MDAnalysisTests/analysis/test_gnm.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import MDAnalysis.analysis.gnm
import numpy as np
import pytest
from numpy.testing import assert_almost_equal
from numpy.testing import assert_allclose

from MDAnalysisTests.datafiles import GRO, XTC

Expand All @@ -43,8 +43,10 @@ def test_gnm(universe, tmpdir, client_GNMAnalysis):
gnm.run(**client_GNMAnalysis)
result = gnm.results
assert len(result.times) == 10
assert_almost_equal(gnm.results.times, np.arange(0, 1000, 100), decimal=4)
assert_almost_equal(
assert_allclose(
gnm.results.times, np.arange(0, 1000, 100), atol=1e-3, rtol=0
)
assert_allclose(
gnm.results.eigenvalues,
[
2.0287113e-15,
Expand All @@ -58,6 +60,8 @@ def test_gnm(universe, tmpdir, client_GNMAnalysis):
4.2058769e-15,
3.9839431e-15,
],
atol=1e-3,
rtol=0,
)


Expand All @@ -66,18 +70,22 @@ def test_gnm_run_step(universe, client_GNMAnalysis):
gnm.run(step=3, **client_GNMAnalysis)
result = gnm.results
assert len(result.times) == 4
assert_almost_equal(gnm.results.times, np.arange(0, 1200, 300), decimal=4)
assert_almost_equal(
assert_allclose(
gnm.results.times, np.arange(0, 1200, 300), atol=1e-3, rtol=0
)
assert_allclose(
gnm.results.eigenvalues,
[2.0287113e-15, 4.3810359e-15, 2.5501084e-15, 3.9839431e-15],
atol=1e-3,
rtol=0,
)


def test_generate_kirchoff(universe):
gnm = mda.analysis.gnm.GNMAnalysis(universe)
gen = gnm.generate_kirchoff()
# fmt: off
assert_almost_equal(
assert_allclose(
gen[0],
[
7,-1,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Expand All @@ -92,7 +100,7 @@ def test_generate_kirchoff(universe):
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
], atol=1e-3, rtol=0
)
# fmt: on

Expand All @@ -111,11 +119,13 @@ def test_closeContactGNMAnalysis(universe, client_GNMAnalysis):
gnm.run(stop=2, **client_GNMAnalysis)
result = gnm.results
assert len(result.times) == 2
assert_almost_equal(gnm.results.times, (0, 100), decimal=4)
assert_almost_equal(gnm.results.eigenvalues, [0.1502614, 0.1426407])
assert_allclose(gnm.results.times, (0, 100), atol=1e-3, rtol=0)
assert_allclose(
gnm.results.eigenvalues, [0.1502614, 0.1426407], atol=1e-3, rtol=0
)
gen = gnm.generate_kirchoff()
# fmt: off
assert_almost_equal(
assert_allclose(
gen[0],
[
16.326744128018923, -2.716098853586913, -1.94736842105263, 0.0,
Expand All @@ -138,7 +148,7 @@ def test_closeContactGNMAnalysis(universe, client_GNMAnalysis):
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
-2.263157894736841, -0.24333213169614382
]
], atol=1e-3, rtol=0
)
# fmt: on

Expand All @@ -148,11 +158,13 @@ def test_closeContactGNMAnalysis_weights_None(universe, client_GNMAnalysis):
gnm.run(stop=2, **client_GNMAnalysis)
result = gnm.results
assert len(result.times) == 2
assert_almost_equal(gnm.results.times, (0, 100), decimal=4)
assert_almost_equal(gnm.results.eigenvalues, [2.4328739, 2.2967251])
assert_allclose(gnm.results.times, (0, 100), atol=1e-3, rtol=0)
assert_allclose(
gnm.results.eigenvalues, [2.4328739, 2.2967251], atol=1e-3, rtol=0
)
gen = gnm.generate_kirchoff()
# fmt: off
assert_almost_equal(
assert_allclose(
gen[0],
[
303.0, -58.0, -37.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
Expand All @@ -172,7 +184,7 @@ def test_closeContactGNMAnalysis_weights_None(universe, client_GNMAnalysis):
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -43.0, -3.0
]
], atol=1e-3, rtol=0
)
# fmt: on

Expand All @@ -185,18 +197,20 @@ def test_closeContactGNMAnalysis_select_CA(universe, client_GNMAnalysis):
gnm.run(stop=2, **client_GNMAnalysis)
result = gnm.results
assert len(result.times) == 2
assert_almost_equal(gnm.results.times, (0, 100), decimal=4)
assert_allclose(gnm.results.times, (0, 100), atol=1e-3, rtol=0)
# without Issue #4924 fix, eigenvalues are [3.20010632e-16, 4.27574601e-16]
# but use big totolerance to make sure PASS in each platform
assert_almost_equal(
assert_allclose(
gnm.results.eigenvalues,
[3.57984776e-16, 3.53892581e-16],
atol=1e-3,
rtol=0,
)
gen = gnm.generate_kirchoff()
# without Issue #4924 fix, gnm only use 0~14 residues for this data
assert np.abs(gen[15]).sum() > 0
# fmt: off
assert_almost_equal(
assert_allclose(
gen[0],
[
1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
Expand All @@ -216,6 +230,6 @@ def test_closeContactGNMAnalysis_select_CA(universe, client_GNMAnalysis):
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
]
], atol=1e-3, rtol=0
)
# fmt: on
Loading