syncopy.specest.compRoutines.mtmconvol_cF#

syncopy.specest.compRoutines.mtmconvol_cF(trl_dat, soi, postselect, equidistant=True, toi=None, foi=None, nTaper=1, tapsmofrq=None, timeAxis=0, keeptapers=True, polyremoval=0, output='pow', noCompute=False, chunkShape=None, method_kwargs=None)[source]#

Perform time-frequency analysis on multi-channel time series data using a sliding window FFT

Parameters:
  • trl_dat (2D numpy.ndarray) – Uniformly sampled multi-channel time-series

  • soi (list of slices or slice) – Samples of interest; either a single slice encoding begin- to end-samples to perform analysis on (if sliding window centroids are equidistant) or list of slices with each slice corresponding to coverage of a single analysis window (if spacing between windows is not constant)

  • samplerate (float) – Samplerate of trl_dat in Hz

  • noverlap (int) – Number of samples covered by two adjacent analysis windows

  • nperseg (int) – Size of analysis windows (in samples)

  • equidistant (bool) – If True, spacing of window-centroids is equidistant.

  • toi (1D numpy.ndarray or float or str) – Either time-points to center windows on if toi is a numpy.ndarray, or percentage of overlap between windows if toi is a scalar or “all” to center windows on all samples in trl_dat. Please refer to freqanalysis() for further details. Note: The value of toi has to agree with provided padding and window settings. See Notes for more information.

  • foi (1D numpy.ndarray) – Frequencies of interest (Hz) for output. If desired frequencies cannot be matched exactly the closest possible frequencies (respecting data length and padding) are used.

  • nTaper (int) – Number of tapers to use

  • timeAxis (int) – Index of running time axis in trl_dat (0 or 1)

  • taper (callable) – Taper function to use, one of availableTapers

  • taper_opt (dict) – Additional keyword arguments passed to taper (see above). For further details, please refer to the SciPy docs

  • keeptapers (bool) – If True, results of Fourier transform are preserved for each taper, otherwise spectrum is averaged across tapers.

  • polyremoval (int) – Order of polynomial used for de-trending data in the time domain prior to spectral analysis. A value of 0 corresponds to subtracting the mean (“de-meaning”), polyremoval = 1 removes linear trends (subtracting the least squares fit of a linear polynomial). Detrending is done on each segment! If polyremoval is None, no de-trending is performed.

  • output (str) – Output of spectral estimation; one of availableOutputs

  • noCompute (bool) – Preprocessing flag. If True, do not perform actual calculation but instead return expected shape and numpy.dtype of output array.

  • chunkShape (None or tuple) – If not None, represents shape of output object spec (respecting provided values of nTaper, keeptapers etc.)

  • method_kwargs (dict) – Keyword arguments passed to mtmconvol() controlling the spectral estimation method

Returns:

spec – Complex or real time-frequency representation of (padded) input data.

Return type:

numpy.ndarray

Notes

This method is intended to be used as computeFunction() inside a ComputationalRoutine. Thus, input parameters are presumed to be forwarded from a parent metafunction. Consequently, this function does not perform any error checking and operates under the assumption that all inputs have been externally validated and cross-checked.

The computational heavy lifting in this code is performed by SciPy’s Short Time Fourier Transform (STFT) implementation scipy.signal.stft().

See also

syncopy.freqanalysis

parent metafunction

MultiTaperFFTConvol

ComputationalRoutine instance that calls this method as computeFunction()

scipy.signal.stft

SciPy’s STFT implementation