mne_denoise.dss.denoisers.WienerMaskDenoiser#

class mne_denoise.dss.denoisers.WienerMaskDenoiser(window_samples: int = 50, noise_percentile: float = 25.0, *, min_gain: float = 0.01, noise_variance: float | None = None)[source]#

Adaptive Wiener mask denoiser.

The core nonlinear DSS denoiser from Särelä & Valpola (2005). Estimates time-varying signal variance and applies soft Wiener-style masking:

m(t) = σ²_signal(t) / [σ²_signal(t) + σ²_noise] s⁺(t) = s(t) · m(t)

This is adaptive/nonlinear because the mask is estimated from the data. Ideal for bursty, non-stationary signals (spindles, beta bursts, intermittent artifacts).

Parameters:
  • window_samples (int) – Window size for local variance estimation. Default 50.

  • noise_percentile (float) – Percentile of local variance used to estimate noise floor. Lower values = more aggressive denoising. Default 25.

  • min_gain (float) – Minimum mask value (prevents complete zeroing). Default 0.01.

  • noise_variance (float, optional) – If provided, use this fixed noise variance instead of estimating.

Examples

>>> from mne_denoise.dss.denoisers import WienerMaskDenoiser
>>> denoiser = WienerMaskDenoiser(window_samples=50)
>>> denoised = denoiser.denoise(source)

References

Särelä & Valpola (2005). Section 4.4 “Spectral Shift and Approximation of the Objective Function with Mask-Based Denoisings”

__init__(window_samples: int = 50, noise_percentile: float = 25.0, *, min_gain: float = 0.01, noise_variance: float | None = None) None[source]#

Methods

__init__([window_samples, noise_percentile, ...])

denoise(source)

Apply Wiener mask denoising.