Source code for mne_denoise.dss.variants.tsr
"""Time-Shift DSS (TSR) variant.
Convenience wrapper for extracting temporally extended structure
(autocorrelated signals, slow waves, DC shifts) [1]_.
Authors: Sina Esmaeili (sina.esmaeili@umontreal.ca)
Hamza Abdelhedi (hamza.abdelhedi@umontreal.ca)
References
----------
.. [1] de Cheveigné, A. (2010). Time-shift denoising source separation.
Journal of Neuroscience Methods, 189(1), 113-120.
"""
from __future__ import annotations
import numpy as np
from ..denoisers.temporal import SmoothingBias, TimeShiftBias
from ..linear import DSS
[docs]
def time_shift_dss(
shifts: int | np.ndarray = 10,
*,
method: str = "autocorrelation",
n_components: int | None = None,
**dss_kws,
) -> DSS:
"""Create a DSS configured for temporal predictability.
Returns a pre-configured DSS object that extracts components with
high autocorrelation (temporally smooth or predictable signals).
Parameters
----------
shifts : int or array-like
If int, use lags from 1 to shifts.
If array, use specified lag values in samples.
Default 10.
method : str
Method for constructing bias:
- 'autocorrelation': Average of shifted versions (default)
- 'prediction': Weighted average (closer lags weighted more)
n_components : int, optional
Number of DSS components to keep. If None, keep all.
**dss_kws
Additional keyword arguments passed to `DSS`.
Returns
-------
dss : DSS
A DSS object configured with a TimeShiftBias.
Examples
--------
>>> # Extract temporally predictable components
>>> dss = time_shift_dss(shifts=20)
>>> dss.fit(data)
>>> slow_sources = dss.transform(data)
>>> # Use specific lags
>>> dss = time_shift_dss(shifts=np.array([1, 2, 5, 10, 20]))
>>> dss.fit(data)
"""
bias = TimeShiftBias(shifts=shifts, method=method)
return DSS(bias=bias, n_components=n_components, **dss_kws)
[docs]
def smooth_dss(
window: int = 10,
*,
n_components: int | None = None,
**dss_kws,
) -> DSS:
"""Create a DSS configured for temporally smooth sources.
Returns a pre-configured DSS that extracts components with
low-frequency temporal structure.
Parameters
----------
window : int
Smoothing window size in samples. Default 10.
n_components : int, optional
Number of DSS components to keep. If None, keep all.
**dss_kws
Additional keyword arguments passed to `DSS`.
Returns
-------
dss : DSS
A DSS object configured with a SmoothingBias.
Examples
--------
>>> # Extract slow components
>>> dss = smooth_dss(window=20)
>>> dss.fit(data)
>>> slow_sources = dss.transform(data)
"""
bias = SmoothingBias(window=window)
return DSS(bias=bias, n_components=n_components, **dss_kws)