def test_j_PCCA(self): TC = scipy.io.mmread(os.path.join(WorkingDir, "Data", "tProb.mtx")) A = io.loadh(os.path.join(WorkingDir, "Data", "Assignments.Fixed.h5"), 'arr_0') PCCA.run_pcca(NumMacroStates, A, TC, os.path.join(WorkingDir, 'Data')) mm = np.loadtxt(os.path.join(WorkingDir, "Data", "MacroMapping.dat"), 'int') mm_r = np.loadtxt( os.path.join(ReferenceDir, "Data", "MacroMapping.dat"), 'int') ma = io.loadh(os.path.join(WorkingDir, "Data", "MacroAssignments.h5"), 'arr_0') ma_r = io.loadh( os.path.join(ReferenceDir, "Data", "MacroAssignments.h5"), 'Data') num_macro = NumMacroStates permutation_mapping = np.zeros(num_macro, 'int') #The order of macrostates might be different between the reference and new lumping. #We therefore find a permutation to match them. for i in range(num_macro): j = np.where(mm == i)[0][0] permutation_mapping[i] = mm_r[j] mm_permuted = permutation_mapping[mm] MSMLib.ApplyMappingToAssignments(ma, permutation_mapping) npt.assert_array_almost_equal(mm_permuted, mm_r) npt.assert_array_almost_equal(ma, ma_r)
def interactive_scre(assignments): Counts = MSMLib.get_count_matrix_from_assignments(assignments, lag_time=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]