Giovanni Wences
Giovanni Wences

Reputation: 19

transition probability matrix between the metastable states

I have calculated the transition matrix of a Markov state model with four metastable states. I would like to know the probability of transition between metastable states, for which I think I should obtain a 4x4 matrix.

I have tried to obtain said matrix with this code, but it turns out that in some entries of that matrix values ​​greater than 1 appear, which seems strange to me:

nstates = 4
transition_matrix_meta = np.zeros((nstates, nstates))
for i in range(nstates):
    for j in range(nstates):
        
        pi_i = msm.pi[msm.metastable_sets[i]].sum()
        
          T_i_to_j = msm.transition_matrix[msm.metastable_sets[i]][:, 
                  msm.metastable_sets[j]]
        
        
        P_i_to_j = pi_i * T_i_to_j.sum()
        
        
        transition_matrix_meta[i, j] = P_i_to_j



print(transition_matrix_meta)

Is my code correct?

Upvotes: 0

Views: 74

Answers (1)

Oyinlade Demola
Oyinlade Demola

Reputation: 712

Your code appears to be on the right, but there might be a normalization issue.

This modification ensures that each row of transition_matrix_meta sums to 1

nstates = 4
transition_matrix_meta = np.zeros((nstates, nstates))

for i in range(nstates):
    for j in range(nstates):
        pi_i = msm.pi[msm.metastable_sets[i]].sum()
        T_i_to_j = msm.transition_matrix[msm.metastable_sets[i]][:, msm.metastable_sets[j]]
        P_i_to_j = pi_i * T_i_to_j.sum()
        
        transition_matrix_meta[i, j] = P_i_to_j

# Normalize the rows
transition_matrix_meta = transition_matrix_meta / transition_matrix_meta.sum(axis=1, keepdims=True)

print(transition_matrix_meta)

Upvotes: 0

Related Questions