Source code for mne_denoise.dss.variants.ssvep

"""SSVEP DSS variant.

Convenience wrapper for extracting Steady-State Visually Evoked Potentials.

Authors: Sina Esmaeili (sina.esmaeili@umontreal.ca)
         Hamza Abdelhedi (hamza.abdelhedi@umontreal.ca)
"""

from __future__ import annotations

from ..denoisers.periodic import CombFilterBias
from ..linear import DSS


[docs] def ssvep_dss( sfreq: float, stim_freq: float, *, n_harmonics: int = 3, n_components: int | None = None, **dss_kws, ) -> DSS: """Create a DSS configured for SSVEP extraction. Returns a pre-configured DSS object that can be fit on data to extract components locked to a stimulus frequency and its harmonics. Parameters ---------- sfreq : float Sampling frequency in Hz. stim_freq : float SSVEP stimulus frequency in Hz. n_harmonics : int Number of harmonics to include in the comb filter. Default 3. n_components : int, optional Number of DSS components to keep. If None, keep all. **dss_kws Additional keyword arguments passed to `DSS` (e.g. `reg`, `normalize_input`). Returns ------- dss : DSS A DSS object configured with a CombFilterBias. Call `.fit(data)` to compute spatial filters, then `.transform(data)` to extract sources. Examples -------- >>> # Create SSVEP DSS for 12 Hz stimulation >>> dss = ssvep_dss(sfreq=250, stim_freq=12) >>> dss.fit(epochs) >>> ssvep_sources = dss.transform(epochs) >>> # Get denoised data back in sensor space >>> dss = ssvep_dss(sfreq=250, stim_freq=12, return_type="epochs") >>> dss.fit(epochs) >>> denoised_epochs = dss.transform(epochs) """ bias = CombFilterBias( fundamental_freq=stim_freq, sfreq=sfreq, n_harmonics=n_harmonics, ) return DSS(bias=bias, n_components=n_components, **dss_kws)