Exemplo n.º 1
0
    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]