Version 0.6.0πŸ”—

EnhancementsπŸ”—

  • Implement dynamic per-chunk percentile thresholding in continuous dual-stream deartifacting (matching MATLAB clean_EEG.m), computing eigenvalue thresholds dynamically per epoch via exp(T1 * prctile(log(|lambda|), percentile) - 100) in both NumPy and PyTorch backends (Tomas Ros).

  • Add configurable channel sample constraint multiplier (default k = 1.0) enforcing minimum chunk sample duration min_samples = max(2^J, k * n_channels) to guarantee full rank of sample covariance matrices on high-density channel arrays (Tomas Ros).

  • Support GEDAI_CHANNEL_MULTIPLIER environment variable to tune or disable channel multiplier constraints on demand (Tomas Ros).

  • Optimize adaptive MEG Gradiometer artifact subspace projection with restored artifact spectrum prescan, selecting optimal spatial component dimensionality (Tomas Ros).

  • Improve ENOVA calculation robustness across channels by computing temporal variance per channel before averaging, providing invariance to inter-channel DC sensor offsets (Tomas Ros).

  • Add decimal precision formatting for SENSAI and ENOVA metrics in gedai.viz.sensai_viz.plot_sensai_visualization (Tomas Ros).

BugsπŸ”—

  • Fix rank deficiency and underconstrained sample covariance in continuous deartifacting for high-density EEG (64+ ch) and MEG sensor arrays (Tomas Ros).

  • Fix sensor DC offset sensitivity in gedai.metrics.enova.compute_enova_per_epoch (Tomas Ros).

API and behavior changesπŸ”—

  • Channel sample constraint multiplier defaults to 1.0, ensuring sample covariance matrices have at least as many samples as channels while avoiding over-inflation of short epochs.

AuthorsπŸ”—