deeptime.markov.tools.estimation.count_matrix¶
- deeptime.markov.tools.estimation.count_matrix(dtraj, lag, sliding=True, sparse_return=True, nstates=None)¶
Generate a count matrix from given microstate trajectory. [1]
- Parameters:
dtraj (array_like or list of array_like) – Discretized trajectory or list of discretized trajectories
lag (int) – Lagtime in trajectory steps
sliding (bool, optional) – If true the sliding window approach is used for transition counting.
sparse_return (bool (optional)) – Whether to return a dense or a sparse matrix.
nstates (int, optional) – Enforce a count-matrix with shape=(nstates, nstates)
- Returns:
C – The count matrix at given lag in coordinate list format.
- Return type:
scipy.sparse.coo_matrix
Notes
Transition counts can be obtained from microstate trajectory using two methods. Couning at lag and slidingwindow counting.
Lag
This approach will skip all points in the trajectory that are seperated form the last point by less than the given lagtime \(\tau\).
Transition counts \(c_{ij}(\tau)\) are generated according to
\[c_{ij}(\tau) = \sum_{k=0}^{\left \lfloor \frac{N}{\tau} \right \rfloor -2} \chi_{i}(X_{k\tau})\chi_{j}(X_{(k+1)\tau}). \]\(\chi_{i}(x)\) is the indicator function of \(i\), i.e \(\chi_{i}(x)=1\) for \(x=i\) and \(\chi_{i}(x)=0\) for \(x \neq i\).
Sliding
The sliding approach slides along the trajectory and counts all transitions sperated by the lagtime \(\tau\).
Transition counts \(c_{ij}(\tau)\) are generated according to
\[c_{ij}(\tau)=\sum_{k=0}^{N-\tau-1} \chi_{i}(X_{k}) \chi_{j}(X_{k+\tau}). \]References
Examples
>>> import numpy as np >>> from deeptime.markov.tools.estimation import count_matrix
>>> dtraj = np.array([0, 0, 1, 0, 1, 1, 0]) >>> tau = 2
Use the sliding approach first
>>> C_sliding = count_matrix(dtraj, tau)
The generated matrix is a sparse matrix in CSR-format. For convenient printing we convert it to a dense ndarray.
>>> C_sliding.toarray() array([[1., 2.], [1., 1.]])
Let us compare to the count-matrix we obtain using the lag approach
>>> C_lag = count_matrix(dtraj, tau, sliding=False) >>> C_lag.toarray() array([[0., 1.], [1., 1.]])