mne_denoise.asr.fit_rms_distribution#
- mne_denoise.asr.fit_rms_distribution(values: ndarray, *, min_clean_fraction: float = 0.25, max_dropout_fraction: float = 0.1, fit_quantiles: tuple[float, float] = (0.022, 0.6), beta_grid: ndarray | None = None, return_info: Literal[False] = False) tuple[float, float][source]#
- mne_denoise.asr.fit_rms_distribution(values: ndarray, *, min_clean_fraction: float = 0.25, max_dropout_fraction: float = 0.1, fit_quantiles: tuple[float, float] = (0.022, 0.6), beta_grid: ndarray | None = None, return_info: Literal[True]) tuple[float, float, dict[str, Any]]
Fit robust clean EEG RMS statistics.
This implements the truncated generalized-Gaussian grid search used by the ASR calibration. The fitter sorts finite RMS values, searches over plausible low-tail dropout offsets and clean interval widths, and selects the generalized-Gaussian shape with minimum histogram KL divergence.
- Parameters:
values (ndarray, shape (n_windows,)) – RMS or amplitude statistics for one component/channel.
min_clean_fraction (float) – Minimum fraction of values assumed to be clean.
max_dropout_fraction (float) – Maximum low-tail fraction that may be ignored as dropouts.
fit_quantiles (tuple of float) – Lower and upper quantile span used for the clean interval search. The upper value also controls the preferred interval width.
beta_grid (ndarray | None) – Generalized-Gaussian shape grid. If
None, use values from 1.7 to 3.5, matching the range commonly cited for ASR ports.return_info (bool) – If True, return an additional diagnostics dictionary.
- Returns:
mu (float) – Robust location estimate of the clean RMS distribution.
sigma (float) – Robust standard-deviation estimate of the clean RMS distribution.
info (dict) – Returned only when
return_info=True. Containsbeta,fit_error,fit_interval, andn_fit_samples.
Examples
Calculate robust statistics for a noisy array, ignoring massive outliers:
>>> import numpy as np >>> from mne_denoise.asr import fit_rms_distribution >>> rng = np.random.default_rng(42) >>> clean = np.abs(rng.normal(10.0, 2.0, 5000)) >>> artifacts = np.abs(rng.normal(30.0, 10.0, 500)) >>> noisy_data = np.concatenate([clean, artifacts]) >>> mu, sigma = fit_rms_distribution(noisy_data) >>> print(f"Robust mean: {mu:.1f}") Robust mean: 10.0