Changelog#
Notable changes to EEGPrep, newest first. Full release notes and downloads are on the GitHub Releases page.
Unreleased#
pop_newtimef/newtimefnow render EEGLAB’s single-condition ERSP/ITC time-frequency figure. The ERSP and ITC images use a symmetric color axis, a stimulus-onset (time 0) marker, right-hand colorbars titled with the power unit, and theturbocolormap (EEGPrep’s house colormap, consistent withtopoplotanderpimage); ITC is colored by its phase sign by default (plotphasesign), withplotphaseonlyshowing the phase angle in degrees. The figure adds EEGLAB’s marginal panels – the ERSP min/max envelope and ERP trace below the images, and the rotated baseline power spectrum and mean ITC to their left – using EEGLAB’s value-axis limits and two ticks per panel. When channel locations are available it also draws the channel or component scalp-map inset and caption (the channel label orIC n), marking the selected electrode for channels. Theerspmax/itcmaxdialog fields set the ERSP and ITC color limits, and the default frequency range stops at 50 Hz (EEGLAB’smaxfreq, capped at Nyquist).pop_newtimef/newtimefbootstrap significance now matches EEGLAB. With a significance level (alpha), each time-frequency point is ranked against a per-frequency baseline null built by permuting the baseline time course (EEGLAB’sshufflepermutation, averaged over trials), and the p-value folds to a two-sided tail (EEGLAB’scompute_pvals) for both ERSP and ITC – so the scattered baseline false positives EEGLAB shows are reproduced and genuine event-related effects survive masking. Non-significant regions are shown as the colormap midpoint, or outlined with contours instead whenpcontouris set; the FDR (mcorrect) path is supported. A non-defaultboottype('rand'/'randall') is now rejected with a clear error rather than silently treated as'shuffle'.timefreq– and thenewtimef/pop_newtimefplots built on it – now match EEGLAB’s decomposition numerics. Requested output frequencies are no longer de-duplicated, sofreqs/nfreqsrequests that snap several values onto the same FFT bin return one output frequency per request (as in EEGLAB) – this changes thepacoutput shape (for example(5, 3, 8)becomes(5, 5, 8));detrendis now a no-op on the FFT (cycles=0) path; output time windows are centered with EEGLAB’seeg_lat2pointrounding and the negative-ntimesoutsubsample grid no longer includes a spurious trailing time point;subitcreturns the pre-subtraction inter-trial coherence; and exact-zero spectral bins are guarded as in EEGLAB. Some outputs change shape or value versus earlier EEGPrep releases.Deleting datasets (
pop_delset, Edit > Delete dataset(s) from memory) now empties the slot in place like EEGLAB instead of shifting later datasets down, so dataset numbers in the Datasets menu,CURRENTSET, and the history stay valid.eeg_storestores new datasets in the lowest empty slot, trailing empty slots are dropped, andpop_delsetraises for a dataset number that does not exist. A dataset selection can no longer land on an emptied slot; it falls back to a remaining dataset the way EEGLAB’s redraw does. Creating or editing a STUDY still compacts the empty slots away, because a STUDY needs contiguous dataset numbers, but the selection now follows the dataset it was on instead of its old number. Editing a STUDY design, precomputing measures, and preclustering no longer modifyALLEEG, matching EEGLAB’se_plot_study.pop_prop(Plot > Channel/Component properties) now matches EEGLAB’s three-panel layout: a scalp map, an ERP image, and the activity power spectrum. The ERP panel is a full ERP image (reusingerpimage) instead of a single averaged trace, the spectrum is computed from the raw per-epoch data, and component spectra are scaled by the component map power (mapnorm) so their levels match EEGLAB. Channel maps mark the selected channel’s location, and the spectrum y-axis stays tight to the plotted frequency band instead of stretching to out-of-view frequencies. The ERP average panel is labeled “ERP” for channels and left blank for components, since ICA component activations are unitless, matching EEGLAB. The ERP trace now sits flush beneath the ERP image (only the trace carries the time axis), and the “pop_prop() - <name> properties” label is shown in the window title bar rather than on the canvas, as EEGLAB does.Scalp maps now render with EEGLAB’s left-right orientation.
topoplot,plottopo, anderpimagepreviously mirrored electrode markers, labels, and interpolated data along the left-right axis; channel positions now match EEGLAB (F4 on the right, F3 on the left). Dataset contents and history are unaffected.
Version 0.3.0#
Released 2026-08-11
clean_rawdatanow processes data at any sampling rate. ASR calibration previously relied on a table of pre-computed spectral-shaping filter coefficients covering only 100, 128, 200, 250, 256, 300, 500 and 512 Hz, and raised an error otherwise, so common clinical rates such as 258 Hz could not be cleaned without resampling first. The filter is now designed for the recording’s own rate with ayulewalkport, matching what EEGLAB’sasr_calibrate.mdoes. See Preprocessing Pipeline.eegprep.rmbasenow exposes the low-level EEGLAB-style numeric baseline helper; usepop_rmbasefor EEG dataset dictionaries.