def scre_iteration(assignments, K0, lagtime_list, M, X, populations): KList = [] counts_list = [] for LagTime in lagtime_list: logger.info("Estimating rates at lagtime %d", LagTime) K = K0.copy() * float(LagTime) C0 = MSMLib.GetCountMatrixFromAssignments(assignments, LagTime=LagTime).toarray() Counts = C0.sum(1) Counts /= LagTime X2 = SCRE.MaximizeRateLikelihood(X, M, populations, C0, K) K = SCRE.ConstructRateFromParams(X2, M, populations, K) K /= (LagTime) KList.append(K) counts_list.append(Counts) KList = np.array(KList) SCRE.PlotRates(KList, lagtime_list, counts_list) return KList
def interactive_scre(assignments): Counts = MSMLib.GetCountMatrixFromAssignments(assignments, LagTime=1) CountsAfterTrimming, Mapping = MSMLib.ErgodicTrim(Counts) MSMLib.ApplyMappingToAssignments(assignments, Mapping) ReversibleCounts = MSMLib.EstimateReversibleCountMatrix( CountsAfterTrimming) T = MSMLib.EstimateTransitionMatrix(ReversibleCounts).toarray() populations = np.array(ReversibleCounts.sum(0)).flatten() populations /= populations.sum() K0 = SCRE.ConvertTIntoK(T) M, X = SCRE.get_parameter_mapping(K0) while len(X) > 0: lagtime_list = get_lagtimes() KList = scre_iteration(assignments, K0, lagtime_list, M, X, populations) matplotlib.pyplot.show() if len(X) > 1: i, j, lagtime = get_input() SCRE.FixEntry(M, X, populations, K0, i, j, KList[lagtime][i, j]) else: lagtime = get_lagtime() return KList[lagtime]
import sys, os import numpy as np import scipy.io from msmbuilder import arglib from msmbuilder import Serializer from msmbuilder import MSMLib Assignments = Serializer.LoadData("%s" % (sys.argv[1])) NumStates = max(Assignments.flatten()) + 1 LagTime = sys.argv[2] Counts = MSMLib.GetCountMatrixFromAssignments(Assignments, NumStates, LagTime=LagTime, Slide=True) scipy.io.mmwrite('%s' % (sys.argv[3]), Counts)