mne_denoise.asr.process_asr#

mne_denoise.asr.process_asr(X: ndarray, sfreq: float, state: ASRState, *, window_length: float = 0.5, window_overlap: float = 0.66, max_dims: float | int = 0.66, regularization: float = 1e-08, store_reconstruction_matrices: bool = False, max_mem_mb: int | None = 512, lookahead: float | None = None, stepsize: int | None = None, method: str | None = None) tuple[ndarray, dict[str, Any]][source]#

Apply a calibrated ASR model to continuous data.

Parameters:
  • X (ndarray, shape (n_channels, n_times)) – Continuous data in the same channel order and units used for calibration.

  • sfreq (float) – Sampling frequency in Hz.

  • state (ASRState) – Fitted calibration state from calibrate_asr().

  • window_length (float) – Processing window length in seconds.

  • window_overlap (float) – Calibration threshold-window overlap. Processing follows the standard streaming ASR algorithm and uses stepsize for reconstruction-matrix updates.

  • max_dims (float | int) – Maximum number of dimensions reconstructed per window. Floats in [0, 1] are interpreted as a fraction of channels.

  • regularization (float) – Relative eigenvalue floor for window covariances.

  • store_reconstruction_matrices (bool) – If True, store all window reconstruction matrices in diagnostics.

  • max_mem_mb (int | None) – Reserved memory limit for future chunking. Present for API stability.

  • lookahead (float | None) – Processing lookahead in seconds. If None, use window_length / 2.

  • stepsize (int | None) – Number of samples between reconstruction-matrix updates. If None, use floor(sfreq * window_length / 2), matching the standard algorithm defaults.

  • method ({'standard', 'riemannian'} | None) – Covariance geometry for processing. If None, use state.method.

Returns:

  • X_clean (ndarray, shape (n_channels, n_times)) – Cleaned data.

  • diagnostics (dict) – Processing diagnostics.

Examples

Process a new array of task data using a previously calibrated ASR state:

>>> import numpy as np
>>> from mne_denoise.asr import process_asr
>>> rng = np.random.default_rng(42)
>>> task_data = rng.standard_normal((10, 2000))
>>> # Assuming 'state' is an ASRState returned by calibrate_asr
>>> cleaned_data, diagnostics = process_asr(task_data, sfreq=250.0, state=state)
>>> print(f"Cleaned data shape: {cleaned_data.shape}")
Cleaned data shape: (10, 2000)