What’s new?#

0.5 (unreleased)#

Changelog#

  • The package build backend was switched from setuptools to hatchling. For users, nothing should change, by Richard Höchenberger in #335

  • autoreject now requires a minimum Python version of 3.11, by Stefan Appelhoff in #339 and Eric Larson in #359

  • The minimum supported versions of the dependencies were raised to roughly three years old: numpy >= 1.25.2, scipy >= 1.11.2, mne >= 1.6.0, scikit-learn >= 1.3.0, joblib >= 1.3.2 and matplotlib >= 3.7.2, by Eric Larson in #359

  • autoreject.AutoReject is now about 5x faster, with unchanged results: the cross-validation splits, test-fold medians and train-fold peak-to-peaks are hoisted out of the threshold and parameter searches, the peak-to-peaks needed to pick the channels to interpolate are computed for all epochs at once, and epochs that need the same set of channels interpolated are now repaired together instead of one at a time, by Eric Larson in #359

  • The channel-level thresholds computed with thresh_method='bayesian_optimization' are now compared on a single cross-validation split rather than on a freshly drawn one per candidate threshold. This only affects random_state=None, where the results were not reproducible to begin with, by Eric Larson in #359

  • With MNE-Python 1.14+, autoreject.AutoReject precomputes the EEG and MEG interpolation data once with mne.channels.compute_interpolation_data() and interpolates via the public mne.Epochs.interpolate_bads(), with results unchanged up to floating point precision, by Eric Larson in #368

  • autoreject.AutoReject is faster (about 15% for MEG+EEG data), with results unchanged up to floating point precision: the matrices that interpolate the bad channels are obtained by interpolating an identity matrix over the picked channels only, and then applied to all epochs at once, by Eric Larson in #369

  • autoreject.compute_thresholds() now computes the MEG and EEG interpolation data once instead of once per channel with MNE-Python < 1.14, which made it about 3x faster for 51 gradiometers and many times faster for more channels, with results unchanged up to floating point precision, by Eric Larson in #369

  • With MNE-Python < 1.14, autoreject.AutoReject computes the MEG dot products once instead of twice and no longer recreates the MEG coils for every interpolation, which made it about 25% faster for MEG data, with results unchanged up to floating point precision, by Eric Larson in #369

  • The n_jobs parameter of autoreject.AutoReject and autoreject.compute_thresholds() is now also used to compute the MEG interpolation data, by Eric Larson in #369

  • The Bayesian optimization of the thresholds now uses a small NumPy implementation of the Gaussian process regression instead of sklearn.gaussian_process.GaussianProcessRegressor, whose input validation dominated the computation time. This makes autoreject.AutoReject about 20 to 30% faster, with unchanged results, by Eric Larson in #369

  • autoreject.AutoReject and autoreject.compute_thresholds() are faster (about 30% for MEG and 45% for EEG data), with results unchanged up to floating point precision: the cross-validated loss of all candidate thresholds of a channel is computed at once from cumulative sums, and MNE-Python no longer checks the measurement info again for every set of channels to interpolate, by Eric Larson in #369

Bug#

0.4.3 (2023-11-14)#

Bug#

  • Updates for MNE-Python compatibility by Eric Larson in #324

  • Fixed bug that arose if picks was specified with an unsorted list, by Paul Bogdan in #312

0.4.2 (2023-05-28)#

Bug#

0.4.1 (2023-01-12)#

Changelog#

0.4 (2022-10-09)#

Changelog#

0.3.1 (2022-03-16)#

0.3 (2022-01-04)#

Changelog#

Bug#

API#

0.2.2 (2020-12-23)#

0.2.1 (2019-11-07)#

0.2 (2019-06-24)#

Changelog#

Bug#

API#

0.1 (2018-06-11)#

Changelog#

  • Initial release