medusa.local_activation package

Submodules

medusa.local_activation.nonlinear_parameters module

medusa.local_activation.nonlinear_parameters.central_tendency_measure(signal, r)[source]

This method implements the central tendency measure (CTM). This parameter is useful to quantify the variability of a signal. It is based on calculating the second-order differences diagram of the time series and then counting the points within a radius “r”. CTM assigns higher values to less variable signals

References

Cohen, M. E., Hudson, D. L., & Deedwania, P. C. (1996). Applying continuous chaotic modeling to cardiac signal analysis. IEEE Engineering in Medicine and Biology Magazine, 15(5), 97-102.

Parameters
  • signal (numpy.ndarray) – Signal with shape [n_epochs, n_samples, n_channels].

  • r (double) – Radius used to compute the CTM.

Returns

ctm – CTM values for each channel in “signal”. [n_epochs, n_channels].

Return type

numpy.ndarray

medusa.local_activation.nonlinear_parameters.lempelziv_complexity(signal)[source]
Calculate the signal binarisation and the Lempel-Ziv’s complexity.

This function takes advantage of its implementation in C to achieve a high performance.

Parameters

signal (numpy.ndarray) – MEEG Signal [n_epochs, n_samples, n_channels]

Returns

lz_result – Lempel-Ziv values for each epoch and each channel. [n_epochs, n_channels].

Return type

numpy.ndarray

medusa.local_activation.nonlinear_parameters.multiscale_entropy(signal, max_scale, m, r)[source]

This method implements the Multiscale Entropy (MSE). MSE is a measurement of complexity which measures the irregularity of a signal over multiple time-scales. This is accomplished through estimation of the Sample Entropy (SampEn) on coarse-grained versions of the original signal. As a result of the these calculations, MSE curves are obtained and can be used to compare the complexity of time-series. The MSE curve whose entropy values are higher for the most of time-scales is considered more complex.

References

Costa, M., Goldberger, A. L., & Peng, C. K. (2005). Multiscale entropy analysis of biological signals, Physical review E, 71(2), 021906.

Parameters
  • signal (numpy.ndarray) – MEEG Signal. [n_epochs, n_samples, n_channels].

  • max_scale (int) – Maximum scale value

  • m (int) – Sequence length

  • r (float) – Tolerance

Returns

mse_result – SampEn values for each scale for each channel in “signal” . [n_epochs, max_scale, n_channels].

Return type

numpy.ndarray

medusa.local_activation.nonlinear_parameters.multiscale_lempelziv_complexity(signal, W)[source]

Calculate the multiscale signal binarisation and the Multiscale Lempel-Ziv’s complexity.

References

Ibáñez-Molina, A. J., Iglesias-Parro, S., Soriano, M. F., & Aznarte, J. I, Multiscale Lempel-Ziv complexity for EEG measures. Clinical Neurophysiology, (2015), 126(3), 541–548.

Parameters
  • signal (numpy.ndarray) – MEEG Signal [n_epochs, n_samples, n_channels]

  • W (list or numpy 1D array) – Set of window length to consider at multiscale binarisation stage. Values must be odd.

Returns

result – Matrix of results with shape [n_epochs, n_window_length, n_channels]

Return type

numpy.ndarray

medusa.local_activation.nonlinear_parameters.sample_entropy(signal, m, r, dist_type='chebyshev')[source]

This method implements the sample entropy (SampEn). SampEn is an irregularity measure that assigns higher values to more irregular time sequences. It has two tuning parameters: the sequence length (m) and the tolerance (r)

Notes: IF A = 0 or B = 0, SamEn would return an infinite value. However, the lowest non-zero conditional probability that SampEn should report is A/B = 2/[(N-m-1)*(N-m)]. SampEn has the following limits:

  • Lower bound: 0

  • Upper bound : log(N-m) + log(N-m-1) - log(2)

References

Richman, J. S., & Moorman, J. R. (2000). Physiological time-series analysis using approximate entropy and sample entropy. American Journal of Physiology-Heart and Circulatory Physiology.

Parameters
  • signal (numpy.ndarray) – Signal with shape [n_epochs, n_samples, n_channels].

  • m (int) – Sequence length

  • r (float) – Tolerance

  • dist_type (string) – Distance metric

Returns

sampen – SampEn value. [n_epochs, n_channels]

Return type

numpy.ndarray

medusa.local_activation.spectral_parameteres module

medusa.local_activation.spectral_parameteres.band_power(psd, fs, target_band)[source]

This method computes the band power of the signal in the given band using the power spectral density (PSD).

Parameters
  • psd (numpy array) – PSD of the signal with shape [n_epochs, n_samples, n_channels]. Some of these dimensions may not exist in advance. In these case, create new axis using np.newaxis. E.g., non-epoched single-channel psd with shape [n_samples] can be passed to this function with psd[numpy.newaxis, …, numpy.newaxis]. Afterwards, you may use numpy.squeeze to eliminate those axes.

  • fs (int) – Sampling frequency of the signal

  • target_band (numpy 2D array) – Frequency band where to calculate the power in Hz. E.g., [8, 13]

Returns

powers – Power value for each epoch and channel. [n_epochs, n_channels]

Return type

numpy 2D array

medusa.local_activation.spectral_parameteres.median_frequency(psd, fs, target_band=(1, 70))[source]

This method computes the median frequency (MF) of the signal in the given band.

Parameters
  • psd (numpy array) – PSD of the signal with shape [n_epochs, n_samples, n_channels]. Some of these dimensions may not exist in advance. In these case, create new axis using np.newaxis. E.g., non-epoched single-channel psd with shape [n_samples] can be passed to this function with psd[numpy.newaxis, …, numpy.newaxis]. Afterwards, you may use numpy.squeeze to eliminate those axes.

  • fs (int) – Sampling frequency of the signal

  • target_band (numpy array) – Frequency band where the MF will be computed. [b1_start, b1_end]. Default [1, 70].

Returns

median_freqs – MF value for each epoch and channel with shape [n_epochs x n_channels].

Return type

numpy 2D array

medusa.local_activation.spectral_parameteres.shannon_spectral_entropy(psd, fs, target_band=(1, 70))[source]
Computes the Shannon spectral entropy of the power spectral density (PSD)

in the given band.

Parameters
psdnumpy array

PSD of the signal with shape [n_epochs, n_samples, n_channels]. Some of these dimensions may not exist in advance. In these case, create new axis using np.newaxis. E.g., non-epoched single-channel psd with shape [n_samples] can be passed to this function with psd[numpy.newaxis, …, numpy.newaxis]. Afterwards, you may use numpy.squeeze to eliminate those axes.

fsint

Sampling frequency of the signal

target_bandnumpy array

Frequency band where the SE will be computed. [b1_start, b1_end]. Default [1, 70]

sample_entropynumpy 2D array

SE value for each epoch and channel with shape [n_epochs x n_channels].

medusa.local_activation.statistics module

medusa.local_activation.statistics.signed_r2(class1, class2, signed=True, axis=0)[source]

This function computes the basic form of the squared point biserial correlation coefficient (r2-value).

Parameters
  • class1 (list or numpy.ndarray) – Data that belongs to the first class

  • class1 – Data that belongs to the second class

  • signed (bool (Optional, default=True)) – Controls if the sign should be mantained.

  • axis (int (Optional, default=0)) – Dimension along which the r2-value is computed. Therefore, if class1 and class2 has dimensions of [observations x samples] and dim=0, the r2-value will have dimensions [1 x samples].

Returns

r2 – (Signed) r2-value.

Return type

numpy.ndarray