def __init__(self, reversible, statdist_constraint, sparse, count_mode="sliding"): super().__init__(statdist_constraint=statdist_constraint, sparse=sparse, count_mode=count_mode) maxerr = 1e-12 if statdist_constraint: est = MaximumLikelihoodMSM(reversible=reversible, maxerr=maxerr, stationary_distribution_constraint=self. stationary_distribution, sparse=sparse) else: est = MaximumLikelihoodMSM(reversible=reversible, maxerr=maxerr, sparse=sparse) est.fit(self.counts) self._msm = est.fetch_model() self._msm_estimator = est self._expectation = 31.73 if not reversible: self._timescales = np.array([310.49376926, 8.48302712, 5.02649564]) else: self._timescales = np.array([310.87, 8.5, 5.09])
def msm_double_well(lagtime=100, reversible=True, **kwargs) -> MaximumLikelihoodMSM: count_model = TransitionCountEstimator(lagtime=lagtime, count_mode="sliding")\ .fit(datasets.double_well_discrete().dtraj).fetch_model().submodel_largest() est = MaximumLikelihoodMSM(reversible=reversible, **kwargs) est.fit(count_model) return est
def estimate_markov_model(dtrajs, lag, **kw) -> MarkovStateModel: statdist_constraint = kw.pop('statdist', None) connectivity = kw.pop('connectivity_threshold', 0.) sparse = kw.pop('sparse', False) count_model = TransitionCountEstimator(lagtime=lag, count_mode="sliding", sparse=sparse).fit(dtrajs).fetch_model() count_model = count_model.submodel_largest(probability_constraint=statdist_constraint, connectivity_threshold=connectivity) est = MaximumLikelihoodMSM(stationary_distribution_constraint=statdist_constraint, sparse=sparse, **kw) est.fit(count_model) return est.fetch_model()