# msmtools.analysis.fingerprint_correlation¶

msmtools.analysis.fingerprint_correlation(T, obs1, obs2=None, tau=1, k=None, ncv=None)

Dynamical fingerprint for equilibrium correlation experiment.

Parameters: T ((M, M) ndarray or scipy.sparse matrix) – Transition matrix obs1 ((M,) ndarray) – Observable, represented as vector on state space obs2 ((M,) ndarray (optional)) – Second observable, for cross-correlations k (int (optional)) – Number of time-scales and amplitudes to compute tau (int (optional)) – Lag time of given transition matrix, for correct time-scales ncv (int (optional)) – The number of Lanczos vectors generated, ncv must be greater than k; it is recommended that ncv > 2*k timescales ((N,) ndarray) – Time-scales of the transition matrix amplitudes ((N,) ndarray) – Amplitudes for the correlation experiment

References

 [1] Noe, F, S Doose, I Daidone, M Loellmann, M Sauer, J D Chodera and J Smith. 2010. Dynamical fingerprints for probing individual relaxation processes in biomolecular dynamics with simulations and kinetic experiments. PNAS 108 (12): 4822-4827.

Notes

Fingerprints are a combination of time-scale and amplitude spectrum for a equilibrium correlation or a non-equilibrium relaxation experiment.

Auto-correlation

The auto-correlation of an observable $$a(x)$$ for a system in equilibrium is

$\mathbb{E}_{\mu}[a(x,0)a(x,t)]=\sum_x \mu(x) a(x, 0) a(x, t)$

$$a(x,0)=a(x)$$ is the observable at time $$t=0$$. It can be propagated forward in time using the t-step transition matrix $$p^{t}(x, y)$$.

The propagated observable at time $$t$$ is $$a(x, t)=\sum_y p^t(x, y)a(y, 0)$$.

Using the eigenvlaues and eigenvectors of the transition matrix the autocorrelation can be written as

$\mathbb{E}_{\mu}[a(x,0)a(x,t)]=\sum_i \lambda_i^t \langle a, r_i\rangle_{\mu} \langle l_i, a \rangle.$

The fingerprint amplitudes $$\gamma_i$$ are given by

$\gamma_i=\langle a, r_i\rangle_{\mu} \langle l_i, a \rangle.$

And the fingerprint time scales $$t_i$$ are given by

$t_i=-\frac{\tau}{\log \lvert \lambda_i \rvert}.$

Cross-correlation

The cross-correlation of two observables $$a(x)$$, $$b(x)$$ is similarly given

$\mathbb{E}_{\mu}[a(x,0)b(x,t)]=\sum_x \mu(x) a(x, 0) b(x, t)$

The fingerprint amplitudes $$\gamma_i$$ are similarly given in terms of the eigenvectors

$\gamma_i=\langle a, r_i\rangle_{\mu} \langle l_i, b \rangle.$

Examples

>>> import numpy as np
>>> from msmtools.analysis import fingerprint_correlation
>>> T = np.array([[0.9, 0.1, 0.0], [0.5, 0.0, 0.5], [0.0, 0.1, 0.9]])
>>> a = np.array([1.0, 0.0, 0.0])
>>> ts, amp = fingerprint_correlation(T, a)
>>> ts
array([        inf,  9.49122158,  0.43429448])
>>> amp
array([ 0.20661157,  0.22727273,  0.02066116])