From 82dd71340ceffd3f2a957a83d53db80b1a683fba Mon Sep 17 00:00:00 2001 From: noe Date: Sun, 14 Feb 2016 23:56:43 +0100 Subject: [PATCH] fixed MSM coarse-graining --- pyemma/msm/estimators/maximum_likelihood_hmsm.py | 3 ++- pyemma/msm/estimators/maximum_likelihood_msm.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pyemma/msm/estimators/maximum_likelihood_hmsm.py b/pyemma/msm/estimators/maximum_likelihood_hmsm.py index 3ceeea0d3..5246743f4 100644 --- a/pyemma/msm/estimators/maximum_likelihood_hmsm.py +++ b/pyemma/msm/estimators/maximum_likelihood_hmsm.py @@ -200,6 +200,7 @@ def _estimate(self, dtrajs): # INIT HMM from bhmm import init_discrete_hmm + from pyemma.msm.estimators import MaximumLikelihoodMSM if self.msm_init=='largest-strong': hmm_init = init_discrete_hmm(dtrajs_lagged_strided, self.nstates, lag=1, reversible=self.reversible, stationary=True, regularize=True, @@ -208,7 +209,7 @@ def _estimate(self, dtrajs): hmm_init = init_discrete_hmm(dtrajs_lagged_strided, self.nstates, lag=1, reversible=self.reversible, stationary=True, regularize=True, method='spectral', separate=self.separate) - elif issubclass(self.msm_init.__class__, MaximumLikelihoodHMSM): # initial MSM given. + elif issubclass(self.msm_init.__class__, MaximumLikelihoodMSM): # initial MSM given. from bhmm.init.discrete import init_discrete_hmm_spectral p0, P0, pobs0 = init_discrete_hmm_spectral(self.msm_init.count_matrix_full, self.nstates, reversible=self.reversible, stationary=True, diff --git a/pyemma/msm/estimators/maximum_likelihood_msm.py b/pyemma/msm/estimators/maximum_likelihood_msm.py index 4df11c270..e508e3010 100644 --- a/pyemma/msm/estimators/maximum_likelihood_msm.py +++ b/pyemma/msm/estimators/maximum_likelihood_msm.py @@ -703,7 +703,7 @@ def hmm(self, nhidden): # if hmm.nstates = msm.nstates there is no problem. Otherwise, check spectral gap if self.nstates > nhidden: timescale_ratios = self.timescales()[:-1] / self.timescales()[1:] - if timescale_ratios[self.nstates-2] < 1.5: + if timescale_ratios[nhidden-2] < 1.5: self.logger.warning('Requested coarse-grained model with ' + str(nhidden) + ' metastable states at ' + 'lag=' + str(self.lag) + '.' + 'The ratio of relaxation timescales between ' + str(nhidden) + ' and ' + str(nhidden+1) + ' states is only ' +