algorithms.cohere¶
Module: algorithms.cohere
¶
Coherency is an analogue of correlation, calculated in the frequency domain. This is a useful quantity for describing a system of oscillators coupled with delay. This is because the coherency captures not only the magnitude of the time-shift-independent correlation between the time-series (termed ‘coherence’), but can also be used in order to estimate the size of the time-delay (the phase-delay between the time-series in a particular frequency band).
Functions¶
-
nitime.algorithms.cohere.
cache_fft
(time_series, ij, lb=0, ub=None, method=None, prefer_speed_over_memory=False, scale_by_freq=True)¶ compute and cache the windowed FFTs of the time_series, in such a way that computing the psd and csd of any combination of them can be done quickly.
Parameters: time_series : float array
An ndarray with time-series, where time is the last dimension
ij: list of tuples :
Each tuple in this variable should contain a pair of indices of the form (i,j). The resulting cache will contain the fft of time-series in the rows indexed by the unique elements of the union of i and j
lb,ub: float :
Define a frequency band of interest, for which the fft will be cached
method: dict, optional :
See
get_spectra()
for details on how this is used. For this set of functions, ‘this_method’ has to be ‘welch’Returns: freqs, cache :
- where: cache =
{‘FFT_slices’:FFT_slices,’FFT_conj_slices’:FFT_conj_slices, ‘norm_val’:norm_val}
Notes
- For these functions, only the Welch windowed periodogram (‘welch’) is available.
- Detrending the input is not an option here, in order to save time on an empty function call.
-
nitime.algorithms.cohere.
cache_to_coherency
(cache, ij)¶ From a set of cached spectra, calculate the coherency relationships
Parameters: cache: dict :
the return value from
cache_fft()
ij: list :
a list of (i,j) tuples, the pairs of indices for which the cross-coherency is to be calculated
Returns: Cxy: dict :
coherence values between the time-series ij. Indexing into this dict takes the form Cxy[i,j] in order to extract the coherency between time-series i and time-series j in the original input to
cache_fft()
-
nitime.algorithms.cohere.
cache_to_phase
(cache, ij)¶ From a set of cached set of windowed fft’s, calculate the frequency-band dependent phase for each of the channels in ij. Note that this returns the absolute phases of the time-series, not the relative phases between them. In order to get relative phases, use cache_to_relative_phase
Parameters: cache : dict
The return value of
cache_fft()
ij: list :
A list of tuples of the form (i,j) for all the indices for which to calculate the phases
Returns: Phase : dict
The individual phases, keys are all the i and j in ij, such that Phase[i] gives you the phase for the time-series i in the input to
cache_fft()
-
nitime.algorithms.cohere.
cache_to_psd
(cache, ij)¶ From a set of cached windowed fft, calculate the psd
Parameters: cache : dict
Return value from
cache_fft()
ij : list
A list of tuples of the form (i,j).
Returns: Pxx : dict
The phases for the intersection of (time_series[i],time_series[j]). The keys are the intersection of i,j values in the parameter ij
-
nitime.algorithms.cohere.
cache_to_relative_phase
(cache, ij)¶ From a set of cached set of windowed fft’s, calculate the frequency-band dependent relative phase for the combinations ij.
Parameters: cache: dict :
The return value from
cache_fft()
ij: list :
A list of tuples of the form (i,j), all the pairs of indices for which to calculate the relative phases
Returns: Phi_xy : dict
The relative phases between the time-series i and j. Such that Phi_xy[i,j] is the phase from time_series[i] to time_series[j].
-
nitime.algorithms.cohere.
coherence
(time_series, csd_method=None)¶ Compute the coherence between the spectra of an n-tuple of time_series.
Parameters of this function are in the time domain.
Parameters: time_series : float array
an array of different time series with time as the last dimension
csd_method : dict, optional
See
algorithms.spectral.get_spectra()
documentation for detailsReturns: f : float array
The central frequencies for the frequency bands for which the spectra are estimated
c : float array
This is a symmetric matrix with the coherencys of the signals. The coherency of signal i and signal j is in f[i][j].
Notes
This is an implementation of equation (2) of Sun (2005):
\[Coh_{xy}(\lambda) = |{R_{xy}(\lambda)}|^2 = \frac{|{f_{xy}(\lambda)}|^2}{f_{xx}(\lambda) \cdot f_{yy}(\lambda)}\]F.T. Sun and L.M. Miller and M. D’Esposito (2005). Measuring temporal dynamics of functional networks using phase spectrum of fMRI data. Neuroimage, 28: 227-37.
-
nitime.algorithms.cohere.
coherence_bavg
(time_series, lb=0, ub=None, csd_method=None)¶ Compute the band-averaged coherence between the spectra of two time series.
Input to this function is in the time domain.
Parameters: time_series : float array
An array of time series, time as the last dimension.
lb, ub: float, optional :
The upper and lower bound on the frequency band to be used in averaging defaults to 1,max(f)
csd_method: dict, optional. :
See
get_spectra()
documentation for detailsReturns: c : float
This is an upper-diagonal array, where c[i][j] is the band-averaged coherency between time_series[i] and time_series[j]
-
nitime.algorithms.cohere.
coherence_partial
(time_series, r, csd_method=None)¶ Compute the band-specific partial coherence between the spectra of two time series.
The partial coherence is the part of the coherence between x and y, which cannot be attributed to a common cause, r.
Input to this function is in the time domain.
Parameters: time_series: float array :
An array of time-series, with time as the last dimension.
r: float array :
This array represents the temporal sequence of the common cause to be partialed out, sampled at the same rate as time_series
csd_method: dict, optional :
See
get_spectra()
documentation for detailsReturns: f: array, :
The mid-frequencies of the frequency bands in the spectral decomposition
c: float array :
The frequency dependent partial coherence between time_series i and time_series j in c[i][j] and in c[j][i], with r partialed out
Notes
This is an implementation of equation (2) of Sun (2004):
\[Coh_{xy|r} = \frac{|{R_{xy}(\lambda) - R_{xr}(\lambda) R_{ry}(\lambda)}|^2}{(1-|{R_{xr}}|^2)(1-|{R_{ry}}|^2)}\]F.T. Sun and L.M. Miller and M. D’Esposito (2004). Measuring interregional functional connectivity using coherence and partial coherence analyses of fMRI data Neuroimage, 21: 647-58.
-
nitime.algorithms.cohere.
coherence_partial_spec
(fxy, fxx, fyy, fxr, fry, frr)¶ Compute the band-specific partial coherence between the spectra of two time series. See
partial_coherence()
.Input to this function is in the frequency domain.
Parameters: fxy : float array
The cross-spectrum of the time series
fyy, fxx : float array
The spectra of the signals
fxr, fry : float array
The cross-spectra of the signals with the event
Returns: float :
the band-averaged coherency
-
nitime.algorithms.cohere.
coherence_regularized
(time_series, epsilon, alpha, csd_method=None)¶ Same as coherence, except regularized in order to overcome numerical imprecisions
Parameters: time_series: n-d float array :
The time series data for which the regularized coherence is calculated
epsilon: float :
Small regularization parameter. Should be much smaller than any meaningful value of coherence you might encounter
alpha: float :
large regularization parameter. Should be much larger than any meaningful value of coherence you might encounter (preferably much larger than 1).
csd_method: dict, optional. :
See
get_spectra()
documentation for detailsReturns: f: float array :
The central frequencies for the frequency bands for which the spectra are estimated
c: n-d array :
This is a symmetric matrix with the coherencys of the signals. The coherency of signal i and signal j is in f[i][j].
Notes
The regularization scheme is as follows:
\[C_{x,y} = \frac{(\alpha f_{xx} + \epsilon)^2} {\alpha^{2}((f_{xx}+\epsilon)(f_{yy}+\epsilon))}\]
-
nitime.algorithms.cohere.
coherence_spec
(fxy, fxx, fyy)¶ Compute the coherence between the spectra of two time series.
Parameters of this function are in the frequency domain.
Parameters: fxy : array
The cross-spectrum of the time series
fyy, fxx : array
The spectra of the signals
Returns: float : a frequency-band-dependent measure of the linear association
between the two time series
See also
-
nitime.algorithms.cohere.
coherency
(time_series, csd_method=None)¶ Compute the coherency between the spectra of n-tuple of time series. Input to this function is in the time domain
Parameters: time_series : n*t float array
an array of n different time series of length t each
csd_method : dict, optional.
See
get_spectra()
documentation for detailsReturns: f : float array
The central frequencies for the frequency bands for which the spectra are estimated
c : float array
This is a symmetric matrix with the coherencys of the signals. The coherency of signal i and signal j is in f[i][j]. Note that f[i][j] = f[j][i].conj()
Notes
This is an implementation of equation (1) of Sun (2005):
\[R_{xy} (\lambda) = \frac{f_{xy}(\lambda)} {\sqrt{f_{xx} (\lambda) \cdot f_{yy}(\lambda)}}\]F.T. Sun and L.M. Miller and M. D’Esposito (2005). Measuring temporal dynamics of functional networks using phase spectrum of fMRI data. Neuroimage, 28: 227-37.
-
nitime.algorithms.cohere.
coherency_bavg
(time_series, lb=0, ub=None, csd_method=None)¶ Compute the band-averaged coherency between the spectra of two time series.
Input to this function is in the time domain.
Parameters: time_series: n*t float array :
an array of n different time series of length t each
lb, ub: float, optional :
the upper and lower bound on the frequency band to be used in averaging defaults to 1,max(f)
csd_method: dict, optional. :
See
get_spectra()
documentation for detailsReturns: c: float array :
This is an upper-diagonal array, where c[i][j] is the band-averaged coherency between time_series[i] and time_series[j]
Notes
This is an implementation of equation (A4) of Sun(2005):
\[\bar{Coh_{xy}} (\bar{\lambda}) = \frac{\left|{\sum_\lambda{\hat{f_{xy}}}}\right|^2} {\sum_\lambda{\hat{f_{xx}}}\cdot sum_\lambda{\hat{f_{yy}}}}\]F.T. Sun and L.M. Miller and M. D’Esposito (2005). Measuring temporal dynamics of functional networks using phase spectrum of fMRI data. Neuroimage, 28: 227-37.
-
nitime.algorithms.cohere.
coherency_phase_delay
(time_series, lb=0, ub=None, csd_method=None)¶ The temporal delay calculated from the coherency phase spectrum.
Parameters: time_series: float array :
The time-series data for which the delay is calculated.
lb, ub: float :
Frequency boundaries (in Hz), for the domain over which the delays are calculated. Defaults to 0-max(f)
csd_method : dict, optional.
See
get_spectra()
Returns: f : float array
The mid-frequencies for the frequency bands over which the calculation is done.
p : float array
Pairwise temporal delays between time-series (in seconds).
-
nitime.algorithms.cohere.
coherency_phase_spectrum
(time_series, csd_method=None)¶ Compute the phase spectrum of the cross-spectrum between two time series.
The parameters of this function are in the time domain.
Parameters: time_series : n*t float array
The time series, with t, time, as the last dimension :
Returns: f : mid frequencies of the bands
p : an array with the pairwise phase spectrum between the time
series, where p[i][j] is the phase spectrum between time series[i] and :
time_series[j] :
Notes
This is an implementation of equation (3) of Sun et al. (2005) [Sun2005]:
\[\phi(\lambda) = arg [R_{xy} (\lambda)] = arg [f_{xy} (\lambda)]\]F.T. Sun and L.M. Miller and M. D’Esposito (2005). Measuring temporal dynamics of functional networks using phase spectrum of fMRI data. Neuroimage, 28: 227-37.
-
nitime.algorithms.cohere.
coherency_regularized
(time_series, epsilon, alpha, csd_method=None)¶ Compute a regularized measure of the coherence.
Regularization may be needed in order to overcome numerical imprecisions
Parameters: time_series: float array :
The time series data for which the regularized coherence is calculated. Time as the last dimension.
epsilon: float :
Small regularization parameter. Should be much smaller than any meaningful value of coherence you might encounter
alpha: float :
Large regularization parameter. Should be much larger than any meaningful value of coherence you might encounter (preferably much larger than 1).
csd_method: dict, optional. :
See
get_spectra()
documentation for detailsReturns: f: float array :
The central frequencies for the frequency bands for which the spectra are estimated
c: float array :
This is a symmetric matrix with the coherencys of the signals. The coherency of signal i and signal j is in f[i][j]. Note that f[i][j] = f[j][i].conj()
Notes
The regularization scheme is as follows:
\[Coh_{xy}^R = \frac{(\alpha f_{xx} + \epsilon) ^2} {\alpha^{2}(f_{xx}+\epsilon)(f_{yy}+\epsilon)}\]
-
nitime.algorithms.cohere.
coherency_spec
(fxy, fxx, fyy)¶ Compute the coherency between the spectra of two time series.
Input to this function is in the frequency domain.
Parameters: fxy : float array
The cross-spectrum of the time series
fyy,fxx : float array
The spectra of the signals
Returns: complex array :
the frequency-band-dependent coherency
See also
-
nitime.algorithms.cohere.
correlation_spectrum
(x1, x2, Fs=6.283185307179586, norm=False)¶ Calculate the spectral decomposition of the correlation.
Parameters: x1,x2: ndarray :
Two arrays to be correlated. Same dimensions
Fs: float, optional :
Sampling rate in Hz. If provided, an array of frequencies will be returned.Defaults to 2
norm: bool, optional :
When this is true, the spectrum is normalized to sum to 1
Returns: f: ndarray :
ndarray with the frequencies
ccn: ndarray :
The spectral decomposition of the correlation
Notes
This method is described in full in: D Cordes, V M Haughton, K Arfanakis, G J Wendt, P A Turski, C H Moritz, M A Quigley, M E Meyerand (2000). Mapping functionally related regions of brain with functional connectivity MR imaging. AJNR American journal of neuroradiology 21:1636-44