funcnet.coupling_analysis_pure_python¶
Provides classes for analyzing spatially embedded complex networks, handling multivariate data and generating time series surrogates.
Written by Jakob Runge. CMSI Method Reference: [Pompe2011]
- class pyunicorn.funcnet.coupling_analysis_pure_python.CouplingAnalysisPurePython(dataarray, only_tri=False, silence_level=0)[source]¶
Bases:
object
Contains methods to calculate coupling matrices from large arrays of scalar time series.
Comprises linear and information theoretic measures, lagged and directed (causal) couplings.
- __init__(dataarray, only_tri=False, silence_level=0)[source]¶
Initialize an instance of CouplingAnalysisPurePython.
- Possible choices for only_tri:
“True” will calculate only the upper triangle of the coupling matrix, excluding the diagonal, assuming symmetry (not for directed measures)
- “False” will calculate the whole matrix (asymmetry somes from
different integration ranges)
- Parameters:
dataarray (4D, 3D or 2D Numpy array [time, index, index] or [time, index]) – The time series array with time in first dimension
only_tri (bool) – Symmetric/asymmetric assumption on coupling matrix.
silence_level (int) – The inverse level of verbosity of the object.
- __weakref__¶
list of weak references to the object
- _calculate_cc(array, tau_max, lag_mode)[source]¶
Returns the CC matrix.
- Parameters:
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices
## lag_mode dict mode = self.lag_modi[lag_mode]
- _calculate_mi(array, corr_range, bins, tau_max, lag_mode)[source]¶
Returns the mi matrix.
- Parameters:
bins (int) – number of bins for estimating MI
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices
Generates surrogates by Fourier transforming the original time series, randomizing the phases and then applying an inverse Fourier transform. Correlated noise surrogates share their power spectrum and autocorrelation function with the original time series.
- Parameters:
original (2D array) – dim. 0 is index of time series, dim. 1 is time
- Returns:
surrogate time series (same dimensions as original)
- cross_correlation(tau_max=0, lag_mode='all')[source]¶
Returns the normalized cross correlation from all pairs of nodes from a range of time lags.
The calculation ranges are shown below:
(-------------------------total_time--------------------------) (---tau_max---)(---------corr_range------------)(---tau_max---)
CC is calculated about corr_range and with the other time series shifted by tau
Possible choices for lag_mode:
“all” will return the full function for all lags, possible large memory need if only_tri is True, only the upper triangle contains the values, the lower one is zeros
“sum” will return the sum over positive and negative lags seperatly, each inclunding tau=0 corrmat[0] is the positive sum, corrmat[1] the negative sum
“max” will return only the maximum coupling (in corrmat[0]) and its lag (in corrmat[1])
- Parameters:
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – the output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices
- mutual_information(bins=16, tau_max=0, lag_mode='all')[source]¶
Returns the normalized mutual information from all pairs of nodes from a range of time lags.
MI = H_x + H_y - H_xy
Uses adaptive bins, where each marginal bin contains the same number of samples. Then the marginal entropies have equal probable distributions H_x = H_y = log(bins)
The calculation ranges are shown below:
(-------------------------total_time--------------------------) (---tau_max---)(---------corr_range------------)(---tau_max---)
MI is calculated about corr_range and with the other time series shifted by tau
Possible choices for lag_mode:
“all” will return the full function for all lags, possible large memory need if only_tri is True, only the upper triangle contains the values, the lower one is zeros
“sum” will return the sum over positive and negative lags seperatly, each inclunding tau=0 corrmat[0] is the positive sum, corrmat[1] the negative sum
“max” will return only the maximum coupling (in corrmat[0]) and its lag (in corrmat[1])
- Parameters:
bins (int) – number of bins for estimating MI
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices
- mutual_information_edges(bins=16, tau=0)[source]¶
Returns the normalized mutual information from all pairs of nodes from a range of time lags.
MI = H_x + H_y - H_xy
Uses adaptive bins, where each marginal bin contains the same number of samples. Then the marginal entropies have equal probable distributions H_x = H_y = log(bins)
The calculation ranges are shown below:
(-------------------------total_time--------------------------) (---tau_max---)(---------corr_range------------)(---tau_max---)
MI is calculated about corr_range and with the other time series shifted by tau
- Parameters:
bins (int) – number of bins for estimating MI
tau_max (int) – maximum lag in both directions, including last lag
- Return type:
2D numpy array (float) [index, index]
- Returns:
bin edges for zero lag
- shuffled_surrogate_for_cc(fourier=False, tau_max=1, lag_mode='all')[source]¶
Returns a correlation matrix calculated with an independently shuffled surrogate of the dataarray of length corr_range for all taus.
- Parameters:
corr_range (int) – length of sample
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices
- shuffled_surrogate_for_mi(fourier=False, bins=16, tau_max=0, lag_mode='all')[source]¶
Returns a shuffled surrogate of normalized mutual information from all pairs of nodes from a range of time lags.
- Parameters:
bins (int) – number of bins for estimating MI
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices
- time_surrogate_for_cc(sample_range=100, tau_max=1, lag_mode='all')[source]¶
Returns a joint shuffled surrogate of the full dataarray of length sample_range for all taus.
Used for time evolution analysis. First one initializes the CouplingAnalysis class with the full dataarray and then this function is called for every single surrogate.
- Parameters:
sample_range (int) – length of sample
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices
- time_surrogate_for_mi(bins=16, sample_range=100, tau_max=1, lag_mode='all')[source]¶
Returns a joint shuffled surrogate of the full dataarray of length sample_range for all taus.
Used for time evolution analysis. First one initializes the CouplingAnalysis class with the full dataarray and then this function is called for every single surrogate.
- Parameters:
sample_range (int) – length of sample
bins (int) – number of bins for estimating MI
tau_max (int) – maximum lag in both directions, including last lag
lag_mode (str) – output mode
- Return type:
3D numpy array (float) [index, index, index]
- Returns:
correlation matrix with different lag_mode choices