Skip to content
This repository was archived by the owner on Sep 11, 2023. It is now read-only.

Commit 5315b86

Browse files
authored
Fix tests, use deeptime double well discrete data. (#1574)
1 parent 872d18e commit 5315b86

14 files changed

+30
-35
lines changed

pyemma/coordinates/tests/test_nystroem_tica.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class TestNystroemTICA_DoubleWell(unittest.TestCase):
7575
def setUpClass(cls):
7676
from pyemma.datasets import load_2well_discrete
7777
dw = load_2well_discrete()
78-
v = dw.dtraj_T100K_dt10[:10000]
78+
v = dw.dtraj[:10000]
7979
cls.T = v.size
8080
nstates = 100
8181
b = np.linspace(-1, 1, nstates)
-67.6 KB
Binary file not shown.

pyemma/datasets/double_well_discrete.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,20 @@
2020

2121
import numpy as np
2222
from deeptime.markov.msm import MarkovStateModel
23+
from deeptime.data import DoubleWellDiscrete
2324

2425
from pyemma.msm import markov_model
2526

2627

27-
class DoubleWell_Discrete_Data(object):
28+
class DoubleWell_Discrete_Data(DoubleWellDiscrete):
2829
""" MCMC process in a symmetric double well potential, spatially discretized to 100 bins
2930
3031
"""
3132

3233
def __init__(self):
33-
from pkg_resources import resource_filename
34-
filename = resource_filename('pyemma.datasets', 'double_well_discrete.npz')
35-
datafile = np.load(filename)
36-
self._dtraj_T100K_dt10 = datafile['dtraj']
37-
self._P = datafile['P']
34+
super().__init__()
35+
self._dtraj_T100K_dt10 = self.dtraj[:]
36+
self._P = self.transition_matrix
3837
self._msm_dt = MarkovStateModel(self._P)
3938
self._msm = markov_model(self._P)
4039

@@ -70,11 +69,6 @@ def dtraj_T100K_dt10_n(self, divides):
7069
disc[divides[i]:divides[i + 1]] = i + 1
7170
return disc[self.dtraj_T100K_dt10]
7271

73-
@property
74-
def transition_matrix(self):
75-
""" Exact transition matrix used to generate the data """
76-
return self._P
77-
7872
@property
7973
def msm(self):
8074
""" Returns an MSM object with the exact transition matrix """

pyemma/msm/tests/test_amm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class TestAMMDoubleWell(_tmsm):
9494
@classmethod
9595
def setUpClass(cls):
9696
import pyemma.datasets
97-
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
97+
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj
9898
cls.E_ = np.linspace(0.01, 2.*np.pi, 66).reshape(-1,1)**(0.5)
9999
cls.m = np.array([1.9])
100100
cls.w = np.array([2.0])
@@ -381,7 +381,7 @@ class TestCoreAMMDoubleWell(_ctmsm):
381381
def setUpClass(cls):
382382
import pyemma.datasets
383383
cls.core_set = [34, 65]
384-
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
384+
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj
385385
cls.E_ = np.linspace(0.01, 2.*np.pi, 66).reshape(-1,1)**(0.5)
386386
cls.m = np.array([1.9])
387387
cls.w = np.array([2.0])

pyemma/msm/tests/test_bayesian_hmsm.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import unittest
2020
import numpy as np
2121
from deeptime.markov.tools.analysis import is_transition_matrix, is_reversible
22+
from numpy.testing import assert_allclose
2223

2324
from pyemma.msm import bayesian_hidden_markov_model
2425

@@ -29,7 +30,7 @@ class TestBHMM(unittest.TestCase):
2930
def setUpClass(cls):
3031
# load observations
3132
import pyemma.datasets
32-
obs = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
33+
obs = pyemma.datasets.load_2well_discrete().dtraj
3334

3435
# hidden states
3536
cls.nstates = 2
@@ -331,9 +332,9 @@ def test_separate_states(self):
331332
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]),]
332333
hmm_bayes = bayesian_hidden_markov_model(dtrajs, 3, lag=1, separate=[0], nsamples=100, store_hidden=True)
333334
# we expect zeros in all samples at the following indexes:
334-
pobs_zeros = [[0, 1, 2, 2, 2], [0, 0, 1, 2, 3]]
335-
for s in hmm_bayes.samples:
336-
assert np.allclose(s.observation_probabilities[pobs_zeros], 0)
335+
pobs_zeros = ((0, 1, 2, 2, 2), (0, 0, 1, 2, 3))
336+
for i, s in enumerate(hmm_bayes.samples):
337+
assert_allclose(s.observation_probabilities[pobs_zeros], 0, err_msg=f"{i}")
337338
for strajs in hmm_bayes.sampled_trajs:
338339
assert strajs[0][0] == 2
339340
assert strajs[0][6] == 2
@@ -342,7 +343,7 @@ def test_initialized_bhmm(self):
342343
import pyemma.datasets as d
343344
import pyemma.msm
344345

345-
obs = d.load_2well_discrete().dtraj_T100K_dt10
346+
obs = d.load_2well_discrete().dtraj
346347

347348
init_hmm = pyemma.msm.estimate_hidden_markov_model(obs, 2, 10)
348349
bay_hmm = pyemma.msm.estimators.BayesianHMSM(nstates=init_hmm.nstates, lag=init_hmm.lag,

pyemma/msm/tests/test_bayesian_msm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def setUpClass(cls):
3030
# load observations
3131
import pyemma.datasets
3232
data = pyemma.datasets.load_2well_discrete()
33-
obs_micro = data.dtraj_T100K_dt10
33+
obs_micro = data.dtraj
3434

3535
# stationary distribution
3636
pi_micro = data.msm.stationary_distribution

pyemma/msm/tests/test_cktest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def tearDown(self):
155155
assert hasattr(restored, 'has_errors')
156156

157157
def test_ck_msm(self):
158-
MLMSM = msm.estimate_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 40)
158+
MLMSM = msm.estimate_markov_model([self.double_well_data.dtraj_n6good], 40)
159159
self.ck = MLMSM.cktest(2, mlags=[0, 1, 10], n_jobs=1)
160160
estref = np.array([[[1., 0.],
161161
[0., 1.]],
@@ -178,7 +178,7 @@ def test_ck_msm(self):
178178
assert self.ck.predictions_conf[1] is None
179179

180180
def test_its_bmsm(self):
181-
BMSM = msm.bayesian_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 40, reversible=True)
181+
BMSM = msm.bayesian_markov_model([self.double_well_data.dtraj_n6good], 40, reversible=True)
182182
# also ensure that reversible bit does not flip during cktest
183183
assert BMSM.reversible
184184
self.ck = BMSM.cktest(2, mlags=[0, 1, 10], n_jobs=1)
@@ -216,7 +216,7 @@ def test_its_bmsm(self):
216216
assert np.allclose(self.ck.predictions[1], predRref, rtol=0.1, atol=10.0)
217217

218218
def test_its_hmsm(self):
219-
MLHMM = msm.estimate_hidden_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 2, 10)
219+
MLHMM = msm.estimate_hidden_markov_model([self.double_well_data.dtraj_n6good], 2, 10)
220220
self.ck = MLHMM.cktest(mlags=[0, 1, 10], n_jobs=1)
221221
estref = np.array([[[1., 0.],
222222
[0., 1.]],
@@ -239,7 +239,7 @@ def test_its_hmsm(self):
239239
assert self.ck.predictions_conf[1] is None
240240

241241
def test_its_bhmm(self):
242-
BHMM = msm.bayesian_hidden_markov_model([self.double_well_data.dtraj_T100K_dt10_n6good], 2, 10)
242+
BHMM = msm.bayesian_hidden_markov_model([self.double_well_data.dtraj_n6good], 2, 10)
243243
self.ck = BHMM.cktest(mlags=[0, 1, 10], n_jobs=1)
244244
estref = np.array([[[1., 0.],
245245
[0., 1.]],

pyemma/msm/tests/test_cmsm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def setUpClass(cls):
6666
import pyemma.datasets
6767
cls.core_set = [34, 65]
6868

69-
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
69+
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj
7070
nu = 1.*np.bincount(cls.dtraj)[cls.core_set]
7171
cls.statdist = nu/nu.sum()
7272

@@ -698,7 +698,7 @@ class TestCoreMSM(unittest.TestCase):
698698
@classmethod
699699
def setUpClass(cls):
700700
from pyemma import datasets
701-
cls.dtraj = datasets.load_2well_discrete().dtraj_T100K_dt10
701+
cls.dtraj = datasets.load_2well_discrete().dtraj
702702

703703
def test_core(self):
704704
core_set = [15, 16, 17, 45, 46, 47]

pyemma/msm/tests/test_hmsm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class TestMLHMM(unittest.TestCase):
3535
def setUpClass(cls):
3636
# load observations
3737
import pyemma.datasets
38-
obs = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
38+
obs = pyemma.datasets.load_2well_discrete().dtraj.copy()
3939
obs -= np.min(obs) # remove empty states
4040

4141
# hidden states
@@ -465,7 +465,7 @@ def test_separate_states(self):
465465
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]),]
466466
hmm = msm.estimate_hidden_markov_model(dtrajs, 3, lag=1, separate=[0])
467467
# we expect zeros in all samples at the following indexes:
468-
pobs_zeros = [[0, 1, 2, 2, 2], [0, 0, 1, 2, 3]]
468+
pobs_zeros = ((0, 1, 2, 2, 2), (0, 0, 1, 2, 3))
469469
assert np.allclose(hmm.observation_probabilities[pobs_zeros], 0)
470470

471471
if __name__=="__main__":

pyemma/msm/tests/test_its.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ def test_its_cmsm_defined_core(self):
303303
core_set = [0, 5]
304304
estimator = msm.estimators.MaximumLikelihoodMSM(core_set=core_set)
305305
its = msm.ImpliedTimescales(estimator, lags=[1, 10, 100, 1000], n_jobs=1)
306-
its.estimate([self.double_well_data.dtraj_T100K_dt10_n6good])
306+
its.estimate([self.double_well_data.dtraj_n6good])
307307
assert its.models[0].n_cores == 2
308308
ref = np.array([[339.22244263],
309309
[334.56862305],

pyemma/msm/tests/test_msm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class TestMSMDoubleWell(unittest.TestCase):
150150
@classmethod
151151
def setUpClass(cls):
152152
import pyemma.datasets
153-
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
153+
cls.dtraj = pyemma.datasets.load_2well_discrete().dtraj
154154
nu = 1.*np.bincount(cls.dtraj)
155155
cls.statdist = nu/nu.sum()
156156

pyemma/msm/tests/test_msm_serialization.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class TestMSMSerialization(unittest.TestCase):
3030
@classmethod
3131
def setUpClass(cls):
3232
data = datasets.load_2well_discrete()
33-
cls.obs_micro = data.dtraj_T100K_dt10
33+
cls.obs_micro = data.dtraj
3434

3535
# coarse-grain microstates to two metastable states
3636
cg = np.zeros(100, dtype=int)

pyemma/msm/tests/test_oom_msm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1291,11 +1291,11 @@ def _timescales(self, msm):
12911291
ts_ref = self.rmsmrev.timescales()
12921292
assert (np.all(np.isreal(ts)))
12931293
# HERE:
1294-
np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=2)
1294+
np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=1)
12951295
else:
12961296
ts_ref = self.rmsm.timescales()
12971297
# HERE:
1298-
np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=2)
1298+
np.testing.assert_almost_equal(ts, self.tau*ts_ref, decimal=1)
12991299

13001300
def test_timescales(self):
13011301
self._timescales(self.msmrev)

pyemma/util/tests/test_discrete_trajectories.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def test_count_3(self):
114114

115115
def test_count_big(self):
116116
import pyemma.datasets
117-
dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
117+
dtraj = pyemma.datasets.load_2well_discrete().dtraj
118118
dt.number_of_states(dtraj)
119119
dt.count_states(dtraj)
120120

@@ -159,7 +159,7 @@ def test_twotraj(self):
159159

160160
def test_big(self):
161161
import pyemma.datasets
162-
dtraj = pyemma.datasets.load_2well_discrete().dtraj_T100K_dt10
162+
dtraj = pyemma.datasets.load_2well_discrete().dtraj
163163
# just run these to see if there's any exception
164164
dt.index_states(dtraj)
165165

0 commit comments

Comments
 (0)