From 5315b8699eff2941e84577932921f694dca76f59 Mon Sep 17 00:00:00 2001 From: Moritz Hoffmann Date: Fri, 9 Sep 2022 02:15:48 +0200 Subject: [PATCH] Fix tests, use deeptime double well discrete data. (#1574) --- pyemma/coordinates/tests/test_nystroem_tica.py | 2 +- pyemma/datasets/double_well_discrete.npz | Bin 69188 -> 0 bytes pyemma/datasets/double_well_discrete.py | 16 +++++----------- pyemma/msm/tests/test_amm.py | 4 ++-- pyemma/msm/tests/test_bayesian_hmsm.py | 11 ++++++----- pyemma/msm/tests/test_bayesian_msm.py | 2 +- pyemma/msm/tests/test_cktest.py | 8 ++++---- pyemma/msm/tests/test_cmsm.py | 4 ++-- pyemma/msm/tests/test_hmsm.py | 4 ++-- pyemma/msm/tests/test_its.py | 2 +- pyemma/msm/tests/test_msm.py | 2 +- pyemma/msm/tests/test_msm_serialization.py | 2 +- pyemma/msm/tests/test_oom_msm.py | 4 ++-- pyemma/util/tests/test_discrete_trajectories.py | 4 ++-- 14 files changed, 30 insertions(+), 35 deletions(-) delete mode 100644 pyemma/datasets/double_well_discrete.npz diff --git a/pyemma/coordinates/tests/test_nystroem_tica.py b/pyemma/coordinates/tests/test_nystroem_tica.py index 4b9566baf..9e92eed0d 100644 --- a/pyemma/coordinates/tests/test_nystroem_tica.py +++ b/pyemma/coordinates/tests/test_nystroem_tica.py @@ -75,7 +75,7 @@ class TestNystroemTICA_DoubleWell(unittest.TestCase): def setUpClass(cls): from pyemma.datasets import load_2well_discrete dw = load_2well_discrete() - v = dw.dtraj_T100K_dt10[:10000] + v = dw.dtraj[:10000] cls.T = v.size nstates = 100 b = np.linspace(-1, 1, nstates) diff --git a/pyemma/datasets/double_well_discrete.npz b/pyemma/datasets/double_well_discrete.npz deleted file mode 100644 index eba9753e6f3e5c8977ef740733afefa219d2994b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69188 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μ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ⅈ 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 V000000ssO4Y5)KL#0>!e007Tbsign_ diff --git a/pyemma/datasets/double_well_discrete.py b/pyemma/datasets/double_well_discrete.py index 80d24b3d9..f8c76633c 100644 --- a/pyemma/datasets/double_well_discrete.py +++ b/pyemma/datasets/double_well_discrete.py @@ -20,21 +20,20 @@ import numpy as np from deeptime.markov.msm import MarkovStateModel +from deeptime.data import DoubleWellDiscrete from pyemma.msm import markov_model -class DoubleWell_Discrete_Data(object): +class DoubleWell_Discrete_Data(DoubleWellDiscrete): """ MCMC process in a symmetric double well potential, spatially discretized to 100 bins """ def __init__(self): - from pkg_resources import resource_filename - filename = resource_filename('pyemma.datasets', 'double_well_discrete.npz') - datafile = np.load(filename) - self._dtraj_T100K_dt10 = datafile['dtraj'] - self._P = datafile['P'] + super().__init__() + self._dtraj_T100K_dt10 = self.dtraj[:] + self._P = self.transition_matrix self._msm_dt = MarkovStateModel(self._P) self._msm = markov_model(self._P) @@ -70,11 +69,6 @@ def dtraj_T100K_dt10_n(self, divides): disc[divides[i]:divides[i + 1]] = i + 1 return disc[self.dtraj_T100K_dt10] - @property - def transition_matrix(self): - """ Exact transition matrix used to generate the data """ - return self._P - @property def msm(self): """ Returns an MSM object with the exact transition matrix """ diff --git a/pyemma/msm/tests/test_amm.py b/pyemma/msm/tests/test_amm.py index cd7364e41..eb94bd4ca 100644 --- a/pyemma/msm/tests/test_amm.py +++ b/pyemma/msm/tests/test_amm.py @@ -94,7 +94,7 @@ class TestAMMDoubleWell(_tmsm): @classmethod def setUpClass(cls): import pyemma.datasets - cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj cls.E_ = np.linspace(0.01, 2.*np.pi, 66).reshape(-1,1)**(0.5) cls.m = np.array([1.9]) cls.w = np.array([2.0]) @@ -381,7 +381,7 @@ class TestCoreAMMDoubleWell(_ctmsm): def setUpClass(cls): import pyemma.datasets cls.core_set = [34, 65] - cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj cls.E_ = np.linspace(0.01, 2.*np.pi, 66).reshape(-1,1)**(0.5) cls.m = np.array([1.9]) cls.w = np.array([2.0]) diff --git a/pyemma/msm/tests/test_bayesian_hmsm.py b/pyemma/msm/tests/test_bayesian_hmsm.py index 0599f5c0c..dbb742505 100644 --- a/pyemma/msm/tests/test_bayesian_hmsm.py +++ b/pyemma/msm/tests/test_bayesian_hmsm.py @@ -19,6 +19,7 @@ import unittest import numpy as np from deeptime.markov.tools.analysis import is_transition_matrix, is_reversible +from numpy.testing import assert_allclose from pyemma.msm import bayesian_hidden_markov_model @@ -29,7 +30,7 @@ class TestBHMM(unittest.TestCase): def setUpClass(cls): # load observations import pyemma.datasets - obs = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + obs = pyemma.datasets.load_2well_discrete().dtraj # hidden states cls.nstates = 2 @@ -331,9 +332,9 @@ def test_separate_states(self): np.array([2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2]),] hmm_bayes = bayesian_hidden_markov_model(dtrajs, 3, lag=1, separate=[0], nsamples=100, store_hidden=True) # we expect zeros in all samples at the following indexes: - pobs_zeros = [[0, 1, 2, 2, 2], [0, 0, 1, 2, 3]] - for s in hmm_bayes.samples: - assert np.allclose(s.observation_probabilities[pobs_zeros], 0) + pobs_zeros = ((0, 1, 2, 2, 2), (0, 0, 1, 2, 3)) + for i, s in enumerate(hmm_bayes.samples): + assert_allclose(s.observation_probabilities[pobs_zeros], 0, err_msg=f"{i}") for strajs in hmm_bayes.sampled_trajs: assert strajs[0][0] == 2 assert strajs[0][6] == 2 @@ -342,7 +343,7 @@ def test_initialized_bhmm(self): import pyemma.datasets as d import pyemma.msm - obs = d.load_2well_discrete().dtraj_T100K_dt10 + obs = d.load_2well_discrete().dtraj init_hmm = pyemma.msm.estimate_hidden_markov_model(obs, 2, 10) bay_hmm = pyemma.msm.estimators.BayesianHMSM(nstates=init_hmm.nstates, lag=init_hmm.lag, diff --git a/pyemma/msm/tests/test_bayesian_msm.py b/pyemma/msm/tests/test_bayesian_msm.py index 485a0aefb..a134f0398 100644 --- a/pyemma/msm/tests/test_bayesian_msm.py +++ b/pyemma/msm/tests/test_bayesian_msm.py @@ -30,7 +30,7 @@ def setUpClass(cls): # load observations import pyemma.datasets data = pyemma.datasets.load_2well_discrete() - obs_micro = data.dtraj_T100K_dt10 + obs_micro = data.dtraj # stationary distribution pi_micro = data.msm.stationary_distribution diff --git a/pyemma/msm/tests/test_cktest.py b/pyemma/msm/tests/test_cktest.py index 87cf912cf..213949820 100644 --- a/pyemma/msm/tests/test_cktest.py +++ b/pyemma/msm/tests/test_cktest.py @@ -155,7 +155,7 @@ def tearDown(self): assert hasattr(restored, 'has_errors') def test_ck_msm(self): - MLMSM = msm.estimate_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 40) + MLMSM = msm.estimate_markov_model([self.double_well_data.dtraj_n6good], 40) self.ck = MLMSM.cktest(2, mlags=[0, 1, 10], n_jobs=1) estref = np.array([[[1., 0.], [0., 1.]], @@ -178,7 +178,7 @@ def test_ck_msm(self): assert self.ck.predictions_conf[1] is None def test_its_bmsm(self): - BMSM = msm.bayesian_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 40, reversible=True) + BMSM = msm.bayesian_markov_model([self.double_well_data.dtraj_n6good], 40, reversible=True) # also ensure that reversible bit does not flip during cktest assert BMSM.reversible self.ck = BMSM.cktest(2, mlags=[0, 1, 10], n_jobs=1) @@ -216,7 +216,7 @@ def test_its_bmsm(self): assert np.allclose(self.ck.predictions[1], predRref, rtol=0.1, atol=10.0) def test_its_hmsm(self): - MLHMM = msm.estimate_hidden_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 2, 10) + MLHMM = msm.estimate_hidden_markov_model([self.double_well_data.dtraj_n6good], 2, 10) self.ck = MLHMM.cktest(mlags=[0, 1, 10], n_jobs=1) estref = np.array([[[1., 0.], [0., 1.]], @@ -239,7 +239,7 @@ def test_its_hmsm(self): assert self.ck.predictions_conf[1] is None def test_its_bhmm(self): - BHMM = msm.bayesian_hidden_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 2, 10) + BHMM = msm.bayesian_hidden_markov_model([self.double_well_data.dtraj_n6good], 2, 10) self.ck = BHMM.cktest(mlags=[0, 1, 10], n_jobs=1) estref = np.array([[[1., 0.], [0., 1.]], diff --git a/pyemma/msm/tests/test_cmsm.py b/pyemma/msm/tests/test_cmsm.py index 8443ba9bc..1ff62d57f 100644 --- a/pyemma/msm/tests/test_cmsm.py +++ b/pyemma/msm/tests/test_cmsm.py @@ -66,7 +66,7 @@ def setUpClass(cls): import pyemma.datasets cls.core_set = [34, 65] - cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj nu = 1.*np.bincount(cls.dtraj)[cls.core_set] cls.statdist = nu/nu.sum() @@ -698,7 +698,7 @@ class TestCoreMSM(unittest.TestCase): @classmethod def setUpClass(cls): from pyemma import datasets - cls.dtraj = datasets.load_2well_discrete().dtraj_T100K_dt10 + cls.dtraj = datasets.load_2well_discrete().dtraj def test_core(self): core_set = [15, 16, 17, 45, 46, 47] diff --git a/pyemma/msm/tests/test_hmsm.py b/pyemma/msm/tests/test_hmsm.py index e7447c2c2..7c8691bd8 100644 --- a/pyemma/msm/tests/test_hmsm.py +++ b/pyemma/msm/tests/test_hmsm.py @@ -35,7 +35,7 @@ class TestMLHMM(unittest.TestCase): def setUpClass(cls): # load observations import pyemma.datasets - obs = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + obs = pyemma.datasets.load_2well_discrete().dtraj.copy() obs -= np.min(obs) # remove empty states # hidden states @@ -465,7 +465,7 @@ def test_separate_states(self): np.array([2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2]),] hmm = msm.estimate_hidden_markov_model(dtrajs, 3, lag=1, separate=[0]) # we expect zeros in all samples at the following indexes: - pobs_zeros = [[0, 1, 2, 2, 2], [0, 0, 1, 2, 3]] + pobs_zeros = ((0, 1, 2, 2, 2), (0, 0, 1, 2, 3)) assert np.allclose(hmm.observation_probabilities[pobs_zeros], 0) if __name__=="__main__": diff --git a/pyemma/msm/tests/test_its.py b/pyemma/msm/tests/test_its.py index 5a06c9a92..54745001d 100644 --- a/pyemma/msm/tests/test_its.py +++ b/pyemma/msm/tests/test_its.py @@ -303,7 +303,7 @@ def test_its_cmsm_defined_core(self): core_set = [0, 5] estimator = msm.estimators.MaximumLikelihoodMSM(core_set=core_set) its = msm.ImpliedTimescales(estimator, lags=[1, 10, 100, 1000], n_jobs=1) - its.estimate([self.double_well_data.dtraj_T100K_dt10_n6good]) + its.estimate([self.double_well_data.dtraj_n6good]) assert its.models[0].n_cores == 2 ref = np.array([[339.22244263], [334.56862305], diff --git a/pyemma/msm/tests/test_msm.py b/pyemma/msm/tests/test_msm.py index c493cdc75..5014c2515 100644 --- a/pyemma/msm/tests/test_msm.py +++ b/pyemma/msm/tests/test_msm.py @@ -150,7 +150,7 @@ class TestMSMDoubleWell(unittest.TestCase): @classmethod def setUpClass(cls): import pyemma.datasets - cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj nu = 1.*np.bincount(cls.dtraj) cls.statdist = nu/nu.sum() diff --git a/pyemma/msm/tests/test_msm_serialization.py b/pyemma/msm/tests/test_msm_serialization.py index 55a00ee08..6cf7102de 100644 --- a/pyemma/msm/tests/test_msm_serialization.py +++ b/pyemma/msm/tests/test_msm_serialization.py @@ -30,7 +30,7 @@ class TestMSMSerialization(unittest.TestCase): @classmethod def setUpClass(cls): data = datasets.load_2well_discrete() - cls.obs_micro = data.dtraj_T100K_dt10 + cls.obs_micro = data.dtraj # coarse-grain microstates to two metastable states cg = np.zeros(100, dtype=int) diff --git a/pyemma/msm/tests/test_oom_msm.py b/pyemma/msm/tests/test_oom_msm.py index 26114d2f7..fce892aa3 100644 --- a/pyemma/msm/tests/test_oom_msm.py +++ b/pyemma/msm/tests/test_oom_msm.py @@ -1291,11 +1291,11 @@ def _timescales(self, msm): ts_ref = self.rmsmrev.timescales() assert (np.all(np.isreal(ts))) # HERE: - np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=2) + np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=1) else: ts_ref = self.rmsm.timescales() # HERE: - np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=2) + np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=1) def test_timescales(self): self._timescales(self.msmrev) diff --git a/pyemma/util/tests/test_discrete_trajectories.py b/pyemma/util/tests/test_discrete_trajectories.py index a6a7e6bcd..a7f0ead77 100644 --- a/pyemma/util/tests/test_discrete_trajectories.py +++ b/pyemma/util/tests/test_discrete_trajectories.py @@ -114,7 +114,7 @@ def test_count_3(self): def test_count_big(self): import pyemma.datasets - dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + dtraj = pyemma.datasets.load_2well_discrete().dtraj dt.number_of_states(dtraj) dt.count_states(dtraj) @@ -159,7 +159,7 @@ def test_twotraj(self): def test_big(self): import pyemma.datasets - dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10 + dtraj = pyemma.datasets.load_2well_discrete().dtraj # just run these to see if there's any exception dt.index_states(dtraj)