SCCN Home
EEGLAB home

EEGLAB Revision History


6.01b - April 16, 2007

    Added back the BVA-IO toolbox for importing/exporting Brain Vision Analyser files. Removed the Firfilt plugin.

6.00b - April 6, 2007

    New STUDY functions:

    All STUDY functions have been updated to compute statistics across subjects using either a parametric or a non-parametric method. Also operations such as filtering, resampling, or computing all dataset ICA decomposition are now available at the STUDY level. The STUDY structure for cluster had to be modified slightly (see tutorial below) but all functions ensure backward compatibiltiy. The tutorials on working with the STUDY structure has been updated.

    Other major changes:

  • time-frequency decompositions: newtimef() and newcrossf() now perform standard time-frequency decompositions instead of timef() and crossf(). Both are based on the new timefreq() function, and are mostly backward compatible with their predecessors although they have been completely reprogrammed. The new functions are the fruit of 3 years of development and testing. They fix minor bugs (e.g., the data mean should be removed before computing wavelets). The new function have a new range of options including log-frequency plotting, individual frequency selection, individual cycle selection, true Morlet wavelets, single-frequency plotting, etc... The old timef() and crossf() functions remain available in the distributions, though the EEGLAB menu now call newtimef() and newcrossf().
  • Mutual information plugin: this plugin allow clustering ICA components within a single dataset (contributed by Nima Bigdeley). See the documentation here.
  • DIPFIT: now support localization of components from MEG data (CTF only). Thanks to Nicolas Robitaille.
  • Function organization: functions are now organized in subfolders.
  • timtopo(): now clicking on the ERP shows the scalp map at a specific latency.
  • eeg_interp(), std_interp(): now allow to interpolate channels.

    Changes to EEGLAB GUI functions:

  • STUDY functions: all STUDY functions have been modified or updated. See BUGZILLA and search for "std_" for a list of fixed Bugs on STUDY functions.
  • pop_erpimage(): fixed reading two auxilary variables.
  • pop_resample(): fixed spline interpolation (when Signal Processing toolbox absent). Now also applies anti-aliasing filter if Signal Processing toolbox absent; fixed event latencies.
  • pop_chanedit(): fixed command line problem when looking up file (thanks to Henrik Ormasen). Now can handle Neuroscan channel types (fiducials etc...). Fixed looking up their locations.
  • pop_plotdata(): now detect the correct number of components (thanks Florian Fischmeister).
  • pop_eegfilt(): fixed Notch filtering; redesigned graphic interface.
  • pop_prop(): added erpimage() plot of channel/component activity in continuous datasets. Added spectral option to plot spectrum within a given time range.
  • pop_headplot(): now saves the head mesh in the EEG structure (prevents a crash if you reuse a spline file not computed on the standard head mesh).
  • pop_subcomp(): fixed crash when not using all data channels for ICA (thanks to Rami Niazi).
  • pop_newset(): fixed a problem in structure assignment.
  • pop_saveset(): fixed a rare dataset naming problem.
  • pop_comperp(): added axcopy.
  • pop_chanedit(), eeg_checkset(), pop_dipfit_settings(): removed internal use of nosedir feature. Now uses co-registration instead. This fixes several bugs such as using the BEM model with a custom file not having +Y as nose direction and plotting headplots with +Y for the nose direction.
  • eeglab2fieldtrip: fixed computing a dipole model when the component activation is absent from the EEG structure (as per memory options).
  • eeg_store(): fixed backward compatibility issues for Matlab 6.1 and 5.3. Now allow to read more than 200 datasets (thanks to Petter Kallioinen).
  • eeg_eventtypes(): now can search urevents, return only specified event types; returns types in reverse order of the number of (ur)events in the dataset. Can now can process numeric event types (contributed by Stefan Debener).
  • eeg_eventhist(): added default field 'type', auto figure creation.
  • eeg_context(): added tests for urevent and event.urevent empty.

    Changes to other EEGLAB functions:

  • coregister(): fixed fiducial alignment. Better coloring. Now help message is embedded in a button.
  • runica(): all computation are now performed in double precision (unless there is not enough memory). Matlab single-precision computations can lack the sufficient precision to run ICA.
  • eegplot(): fixed epoch selection when clicking outside the boundary of the current window (thanks to Nicholas Perentos).
  • readlocs(): fixed reading BESA .elp files (first channel was sometimes missing). Fixed reading channel types for .ced files (thanks to Eugene Kronberg).
  • topoplot(): legend color problem in multiple ERP (include sum/compare ERP) (thanks to Bjorn Saetrevik and others).
  • plottopo(): can now plot a single channel.
  • eegfiltfft(): fixed warning with data of non-even length.
  • envtopo(): fixed problem with 'sumenv' option (thanks to Hyuk Oh).
  • env(): improved help message and fixed code typo (thanks to Ronny Lindner).
  • reref(): fixed multiple channel re-referencing (thanks to Ranjit)
  • binica(): now can process 3-D data from the command line (thanks to David Groppe).
  • readneurolocs(): fixed a Neuroscan channel-reading problem (thanks to Hans-Peter Frey).
  • movav(): fixed several bugs (thanks to Andreus Romeyke).
  • timef(): fixed ERP amplitude label for component units.
  • eventlock(): DEPRECATED. Use eegalign.m instead.
  • ica(): DEPRECATED and removed from distribution. The text of this helper function was out-of-date.
  • erpave(): DEPRECATED and removed from distribution. Use erpimage().
  • dipfit_eegerp(), eeglab2fieldtrip(): now re-introduced in the DIPFIT plugin and fixed the eeglab2fieldtrip function to work with it.
  • loc_subset(): new function to separate a channel location montage into overlapping, evenly spaced channel subsets of specified lengths (by Nima Bigdeley).
  • EEG toolbox plugin: added EEG toolbox plugin (requires separate installation of the EEG toolbox) for ERP peak picking.

5.03 - September 8, 2006

  • Matlab 7.0.4 Linux: fixed EEGLAB startup crash because of font problem.
  • Matlab 6.1: EEGLAB 5.02 did not fully support Matlab 6.1; updated some functions to give limited support.
  • DIPFIT 2.0: fixed EEGLAB to fieldtrip conversion problem (thanks to Alessandro Malatesta)
  • ANT plugin: fixed compatibility problem with new EEGLAB version.
  • pop_runica(): fixed sphering problem when 'pca' option was applied to average-reference data.
  • pop_timef(), pop_crossf(), pop_comperp(): allowed channel labels alone, without locations (thanks to Andrey Zhdanov)
  • pop_epoch(): allowed processing event types containing spaces (thanks to Andrey Zhdanov)
  • pop_comment(): fixed problem when no comments are present (thanks to Diane Whitmer)
  • pop_editset(): fixed call to reading channel location files (thanks to Sebastian Halder and Allejandro Barrientos)
  • pop_study(), std_editset(): fixed removal of datasets from STUDY.
  • pop_dipfit_settings(): fixed history problem (thanks to Helen Slagter and Stefan Scherbaum)
  • std_preclust(): added more checks on dataset consistency (thanks to Stefan Scherbaum)
  • pop_multifit(): fixed default for option 'rmout' (thanks to Stefan Scherbaum)
  • pop_runica(): fixed command line parameters and some ICA algorithm calls (e.g. acsobiro()) (thanks to Timothy O'Keefe)
  • pop_clustedit(): fixed problem of having an empty list when moving components between clusters (thanks to Stefan Debener)

5.02 - May 13, 2006

  • std_erp(): no longer uses the raw ICA erp for clustering. Now uses (and plots) the ICA erps scaled by the root mean square of the component channel projections, so the ERP scale is in RMS uV and is comparable across components.
  • std_checkset(): fixed rare problem when default parameters are absent for plotting.
  • std_loadalleeg(): fixed loading problem when moving files to a different folder.
  • topoplot(): fixed use of channel indices.
  • pop_headplot(): fixed use of custom head mesh (Note: The gui function does not yet remember plotting preferences, so the head mesh file must be re-entered - but not reprocessed - every time).
  • pop_study(): fixing occasional lost gui entries (thanks to Rael Cahn).
  • pop_newset(), eeglab(): better dataset switching when a study is loaded.
  • pop_reref(), reref(): fixed re-referencing crash when ICA information is present.
  • pop_loadcnt(): fixed boundary additions for old file formats (thanks to Johanes Sarnthein)
  • pop_loadset(): fixed loading of multiple datasets (thanks to Li-Sor Hsiao)
  • pop_runica(): fixed saving current/previous ICA decomposition channels in field 'EEG.etc.icachansind'.
  • pop_biosig(): fixed problem reading continous EDF files (thanks to Keun Lee)
  • pop_erpimage(), pop_epoch(), pop_selectevent(), pop_eventstat(), pop_chansel(): processing event types with spaces (thanks to Andrey Zhdanov)
  • BIOSIG: the BIOSIG toolbox has been updated. It can now read large BDF files (thanks to Alois Schloegel).

5.01b - April 14, 2006

  • pop_read_erpss(): fixed reading events (thanks Ben Cipollini)
  • pop_mergeset(): fixed merging continuous datasets (thanks Ben Cipollini)


5.0b - April 12, 2006

    New STUDY structure and clustering functions:

    Ten new EEGLAB menu items call about 50 new STUDY / studyset functions with prefixes of "_pop" or "_std" (std_centroid(), std_moveoutlier(), std_plotcompspec(), std_centroid(), std_plotclustdip(), std_plotcompspec(), std_clusread(), std_plotclusterp(), std_readerp(), std_createclust(), std_readersp(), std_envtopo(), std_readitc(), etc.). See the new STUDY and component clustering tutorials.

    Other major changes:

  • Saving status: the field 'EEG.saved' now is used to remember that changes have been made to a dataset but not yet saved to disk.
  • Channel locations: the field 'EEG.chaninfo' now holds channel plotting information and (optional) fiducial location information for aligning channel locations to other imaging. The chaninfo structure now also offers (still limited) support for channel types. A specific channel type may be used for ICA decomposition.
  • Main interface the main graphic interface (i.e., the eeglab() function) now masks (in grey) any text menu items that are not currently applicable; it also detects the 64-bit Linux OS.
  • DIPFIT2: A new, more accurate dipole fitting plug-in incorporating functions by Robert Oostenveld from Fieldtrip. Allows fitting of component single or dual-symmetric equivalent dipole models in spherical or boundary element head models, with interactive channel alignment. See the new DIPFIT tutorial for more details.
  • 3-D plotting: the function pop_headplot() now allow co-registration of electrodes with plotted 3-D head. Computation of spline files has been speeded 100x (thanks to Toby Fernsler). Also allows custom head mesh input.

    Changes to admin and signal processing functions:

  • angtimewarp(): helper function to perform phase angle time warping (see erpimage()) (thanks to Jean Hausser)
  • binica(): fixed passing of arguments to binary ICA; added flag 'weightsin' to continue training; added output variable 'stem'; changed 'posact' default to 'off' to save space; improved clarity of master .sc file; changed binica.sc 'stop' arg default to 1e-7 (from 1e-6) (thanks to Elliot Cohen)
  • celltomat(), mattocell(): replace mat2cell() and cell2mat() that were overloading functions in Matlab 7.
  • crossf(): fixed bootstrap for linear coherence (not phase coherence (default)) (thanks to Pierre Herremans); made the 'savecoher' output option public (thanks to Joe Brooks); clarified that output phase angles are in radians and added radian plotting option (thanks to Joseph Brooks); fixed two array input processing (thanks to Pierre Herremans); improved commandline output text.
  • decompresserpss(): made compatible with 64-bit machines (after recompilation) (update by Petr Janata).
  • eegplot(): Allow overplotting two datasets; show event names above events (thanks to code from Stefan Scherbaum); add more space between lines in event legend; fixed zoom option for Matlab 7.
  • envtopo(): plotted ERP envelope and components with largest variance now computed only on the specified 'plotchans' (if any); made default y-limits from plotted data channels, not all-channels data; disallowed plotting outside the data time interval, or finding component maxima outside the plotting interval (thanks to Fred Travis); clarified 'timerange' help; added MAX_FRAMES test (plot < i0000 only) (thanks to Diane Whitmer); fixed the one-channel mode (replacing chanproj()) and made pvaf() computation standard (thanks to Diane Whitmer); added ppaf component sort option; made 'compnums' spec mean whole data are restricted to just those components; separated 'plotcomps' from 'compnums' (thanks to Jean Hausser)
  • erpimage(): when re-aligning data on sorting variable, now also re-align any auxiliary variable; can now plot several channels and components. Can now also linearly time warp data so that several events in each trial are warped to the same given (or their median) latencies (thanks to Jean Hausser).
  • headplot(): Increased computation speed by 100 (thanks to Toby Fernsler). Cbar axes not re-positioning (thanks to Henrik Ormasen). See also changes to pop_headplot().
  • loadavg(): fixed scaling issue (thanks to Tom Campbell); fixing scaling problem by dividing by the number of accepted sweeps (thanks to Adrian Burgess).
  • loadcnt(), pop_loadcnt(): now imports data boundaries (programmed by Andreas Widmann), and events of type 3 (thanks to Matt Stead).
  • movav(): fixed bug if no x values given (thanks to Eszter Hoffman)
  • phasecoher(): added arguments for time warping (thanks to Jean Hausser)
  • plotdata(), pop_plotdata(): fixed scaling problem; now plots in overlapping sub-windows for flexibility, and accepts y-axis plotting limits; pop_plotdata() now accepts y limits input and includes a text box for this; both functions now read the 'YDir' default in icadefs() - set YDIR in icadefs.m to set your lab preference (pos-up or neg-up) (thanks to German Gomez Hernandez); fixed text display for Matlab 7.00 (thanks to Saskia Nagel).
  • plottopo(): added horizontal line input, modified defaults, added axis ticks, changed plot order - data trace now on top (thanks to Stefan Debener)
  • readegi(), pop_readegi(): now returns and imports category names for segmented EGI data (thanks to Arild Hestvik); corrected line 220 to use desiredFrames instead of desiredSegments (thanks to T. O'Keefe)
  • read_erpss(): now scales data to microvolts for all file types (thanks to Alexa Roggeveen)
  • readlocs(): fixing reading .ced files
  • runica(): shortened computation of component variances (save memory also); add back row means when returning activations (to give w*s*data); changed 'posact' default to 'off' to save memory (thanks to Jason Palmer);
  • spec(): fixed call to timef() when signal processing toolbox absent.
  • spectopo(): can now click on each trace to show channel/component index. Also detects empty data channels to avoid function crash.
  • str_multiline(): allow processing multiple lines.
  • supergui(): remove *1.15 aspect ratio multiplication for Windows, Macintosh and Unix. Shrinked most graphic interface.
  • timef(): added test for consistency among tlimits, frames, srate; added auto adjustment of tlimits if discrepancy is small (< 1 frame); added possibility of giving frames and tlimits as [] or NaN -> assume data is 1 epoch beginning at time 0 (thanks to David Schwartzman); changed default direction of frequency axes to 'up' (NB!) and added 'hzdir' flag (can be 'down' for backwards compatibility); changed obsolete phase() to angle() (thanks to Ming Qian); clarified meaning of 'baseline'.
  • timewarp(): helper function to perform epoch time warp (see erpimage()) (thanks to Jean Hausser)
  • timtopo(): adjusted several plotting details (oblique line height, text size, color bar, etc.)
  • topoplot(): added 'plotgrid' option to plot input channel values as one or more rectangular grids without requiring an explict channel locations file or structure - useful for plotting grid and strip data; enlarged 'emarker' to collect all relevant details about electrodes 'pts' markers (deprecated 'ecolor' and emarkersize' options). Added 'emarker2' to mark some channels differently. Rationalized 'plotchans'. Made 'intrad' produce plot with specified intrad. Added optional outputs xmesh, ymesh (thanks to Ghislaine Dehaene-Lambertz). Documented option 'whitebk' to print white background (sometimes useful with 'plotgrid'); fixed problem with explicit 'maplimits' value (thanks to Ellen Lau); fixed plotrad issue call from pop_chanedit(); added 'chantype' keyword; changed emarker defaults (thanks to Stefan Debener)
  • vararg2str(): now concatenates lines.

    Changes to eeg_ commandline functions:

  • eeg_amplitudearea(): new commandline function to compute area under ERP using spline interpolation (programmed by Tom Campbell and adapted for EEGLAB by Darren Weber).
  • eeg_chantype(): new function to expand cell array of channel types to an array of channel indices
  • eeg_checkset: fixed checking ALLEEG with some datasets missing; dealing with empty event structure
  • eeg_context(): added 4th column to 1st output trgs, giving the target type; added to Example in help; added ability to return values of more than one named neighbor event field; function now can process continuous datasets (thanks to Nima Bigdeley); fixed calculation of trglt (was evlt); allowed string target and neighbor inputs; improved help message.
  • eeg_eval(): function for processing multiple datasets (only compatible pop_ functions are currently pop_runica() and pop_eegfilt()).
  • eeg_evenhist(): workaround empty [] field values; improve output plot.
  • eeg_getepochevent(): (used by erpimage()) now returns latencies in ms for durations.
  • eeg_oldica(): new utility function to query or return oldicaweights saved by pop_runica().
  • eeg_regepoch(): new utility function to split a continuous dataset into consecutive (short) epochs time locked to mock events at a specified interval. Useful for artifact rejection for ICA decomposition (only). Resulting icaweights and icasphere can be exported to other sets containing the same data.
  • eeg_retrieve(): fixed empty dataset retrieval.

    Changes to pop_ window functions:

  • pop_biosig(): now import event duration (in addition to event latency) and event channel index. Now also allow importing BDF and EDF files (the pop_readbdf() function has been removed from this release).
  • pop_chanedit(), forcelocs(): fixed chan-center error and channel location display inconsistency when selecting channels for rotation; change aspect ratio for windows; remove channel locs when looking up location; allow to process channel types; allow to set orientation of nose. Added channel type input.
  • pop_chanevent(): now properly handles negative event types.
  • pop_chansel(): fixed argument 'withindex' must be numeric
  • pop_comments(): fixed multiline text for Windows
  • pop_comperp(): Dataset name if only two datasets
  • pop_editeventvals(): disable all fields for boundary events.
  • pop_editoptions(): now only allows one option file per session (remember option file even if user changes of directory).
  • pop_epoch(): Change to allow event types with spaces.
  • pop_envtopo(): Now returns new envtopo() 'compsplot' output.
  • pop_mergeset(): fixed boundary event latency so it lies between limit data sample points of the two original datasets (thanks to Andreas Widmann).
  • pop_newset(): save multiple datasets; fixed canceling when empty dataset; new graphical interface.
  • pop_newtimef(): better history.
  • pop_reref(): fixed problem when adding channel location for old reference.
  • pop_resample(): now uses spline interpolation if the signal processing toolbox is absent (should be as efficient as the signal processing toolbox); fixed boundary doublet if any (thanks to Johannes.Sarnthein).
  • pop_rmbase(): transformed latency range inputs to ms; allowed [] entries --> use whole epoch for baseline; fixed some typos with pointrange (thanks to Natasa Kovacevic).
  • pop_runica(): fixed updating of EEG.icawinv (component scalp maps) after running ICA again (thanks to Peter Ullsperger); fixed fastica() call (thanks to Muhammad Naeem); added auto saving of current EEG.icaweights and EEG.icasphere into cell arrays EEG.etc.oldicaweights and EEG.etc.oldicaweights when running ICA again. Fixed call to icaML and icaMS. Fixed bug when calling ICA twice (thanks to Marieke E. Timmerman); changed binica.sc 'stop' rule default to 1e-7 (from 1e-6); fixed storing EEG dataset; fixed channel browsing; allow to compute ICA on selected channel types; allow computing ICA on several dataset simmultaneously.
  • pop_saveset(): pop-up if resaving a file that has not been saved yet.
  • pop_select(): fixed out of range time limit error (thanks to Rami Niazy); improved help message; fixed selecting times not starting from 0 (thanks to Ben Cipollini)
  • pop_signalstat(): fixed channel statistics if no channel locations.
  • pop_subcomp(): change default set name; allow to plot single trials using different methods; edited figure window, help msg, and confirmation message for clarity.
  • pop_timef(): better history.
  • pop_topoplot(): made 'electrodes' 'on' the default only if <= 64 channels.
  • pop_writelocs(): fixing writing locations (removing .ced)

    Updated EEGLAB plug-ins:


  • CTF data: Improved compatibility with EEGLAB and Matlab.
  • IIRFILT: Changed for compatability with Matlab 7 (R14).
  • More...: See the plugin page for a list of plugin included in EEGLAB.


4.515stable - June 07, 2005

  • eeglab(): fixed output "chaninfo" error (thanks to Inuk Zandvakili).
  • pop_chanedit(): fixed orderfield error.


4.514stable - June 06, 2005

  • eeglab(): fixed "chaninfo" error (thanks to Inuk Zandvakili).


4.513stable - June 02, 2005

  • eeglab(): fixed plugin detection for Matlab 7 service pack 2 (thanks to Andreas Widmann).


4.512stable - December 09, 2004

  • loadcnt(): fixed crash due to a typo in the code (thanks to Johannes Sarnthein).
  • pop_loadcnt(): fixed crash when importing some data events (thanks to Hamish Innes-Brown).
  • pop_mergeset(), eeg_insertbound(), eeg_eegrej(): fixed boundary event when no event table.
  • erpimage(): fixed the 'erpstd' command line option.
  • uigetfile2(), uiputfile2(): fixed minor Matlab 6.0/Matlab 7.0 compatibility problem.


4.511stable - November 24, 2004

  • erpimage(), plotdata(): now reads default 'ydir' from YDIR in 'icadefs.m' Set this variable to -1 for 'negative-up' ERP plotting (thanks to Rami Niazy)
  • topoplot(): now correctly handles style 'blank';


4.51stable - November 19, 2004

  • pop_saveset(), eeg_checkset(): If the 'File > Maximize Memory' option to save the data in the .set file is Disabled (not the default), save EEG.data in a separate .dat float data file as a *transposed* matrix (e.g., indexed by time, for continuous data as in EEG.data'). We recommend using this option, as future component clustering and dataset comparison features of EEGLAB will then allow quick reading of single channels one at a time. Backwards compatibility with the previous non-transposed .fdt files was maintained.
  • envtopo(), pop_envtopo(): fixed abscissa unit problem. Changed optional argument keywords for better usability (preserved backward compatibility). Debugged 'vert' flag (now uses msec). Changed component selection criterion (back) to maximum variance ('mv'). Minor plotting edits (thanks to Il Keun Lee) and other small improvements.
  • erpimage: made the optional spectrum plot and max frequency computations consistent by using the same spectral estimate.
  • eeg_checkset(): fixed problem with events reading under Matlab 7. WARNING: UNDER MATLAB 7 AND EEGLAB VERSION 4.5b, IF EVENT TIMES WERE IMPORTED FROM A DATA CHANNEL, SOME EVENT TYPES MAY HAVE ERRONEOUSLY BEEN SET TO BE THE SAME FOR ALL EVENTS!
  • eeg_getepochevent(): can now process string fields.
  • pop_selectevents(): fixed boundary event renaming problem (thanks to Andreas Widmann).
  • pop_topoplot(): fixed dipole plotting error.
  • topoplot(): added optional argument 'plotchans'.
  • runica(): fixed block length bug for some very short data lengths (thanks to Julie Onton).
  • eeglab(), eeg_context(), eegplot(), erpimage(), pop_rejepoch(): adapt all occurrences of && to & and/or || to |, for compatibility with Matlab r12 and older.
  • pop_chanedit(): added limited channel type support (will be develop further in future versions - we recommend entering channel types via the 'Edit > Channel Locations' menu window). Fixed a problem under Matlab 5.3.
  • eeg_insertbound(), pop_eegplot(): fixed event latency problem when inserting several boundary events in continuous data with no events (thanks to Elena Orekhova).
  • tftopo(): new title option.
  • pop_reref(): fixed channel label problem (thanks to Morgan Hough).
  • eeg_context(): fixed minor problems.
  • pop_mergeset(): now insert boundary event in EEG.urevent as well as EEG.event for context searching.
  • pop_crossf(): fixed "plot coherence phase" button (thanks to Stefan Debener).
  • timef(): added 'itcphase' output.
  • pop_loadeeg(): fixed the typo bug ('\' instead of '/') (thanks to Zoltan Mari, Hovagim Bakardjian, and Bernie C. Till).
  • pop_loadcnt(): fixed 1-point offset error when reading '.cnt' file events (thanks to Andreas Widmann).
  • loadcnt(): now force to read little endian format (for Solaris, Datastar, ...) (thanks to Timothy Uy).
  • pop_readegi(): now allow to read portion of segmented data file.
  • Biosig(): use latest Biosig functions.
  • Incorporated all minor fixes from 4.43stable.


4.43stable - October 25, 2004

  • pop_loadeeg(): fixed typo ('\' instead of '/') (thanks to Zoltan Mari and Hovagim Bakardjian).
  • pop_editeventvals(): fixed delete option from command line (thanks to Alpay Koc).
  • eeg_context(): changed all occurrences of && with & and || with |, for compatibility with Matlab r12 and older.
  • pop_erpimage(): fixed crash when dataset had no channel information (thanks to Zoltan Mari).
  • pop_resample(): enable users to resample continuous data with boundary events (thanks to Sarnthein Johannes).
  • eegfilt(): fixed typo (from = to ==).
  • timef(): typo in the help message, 'ploterps' -> 'plotersp'.


4.5beta, Sept 13, 2004

  • BIOSIG: The BIOSIG plugin is now part of the standard EEGLAB distribution (see the plugin page).
  • erpimage(): added option to sort by amplitude in a rectangular time/frequency window rather than by amplitude at one time and frequency only. Plotted and output the correct sortvar order for trial sorting by amplitude.
  • eegplot(): added option to hide event duration.
  • eeglab(): added check of consistency between EEG and ALLEEG variables.
  • pop_topoplot(): changed default ordinate orientation for ERPs to positive-up.
  • loadtxt(): fixed reading comma-separated file (thanks to Petr Janata).
  • envtopo(): fixed x-axis label.
  • pop_resample(): can now resample data epochs (not recommended).
  • pop_selectevent(): fixed function crash when multiple events are entered with quotes.
  • plotdata(): fixed Matlab 7 plotting error.
  • erpimage(): fixed Matlab 7 plotting error.
  • pop_prop(): fixed Matlab 7 plotting error.
  • plottopo(): fixed Matlab 7 plotting error.
  • pop_readbdf(): Matlab 7 compatibility (bitand function call). This function is now part of the BIOSIG toolbox.
  • pop_saveset(): under Matlab 7, save dataset files compatible with Matlab 6.
  • eeg_checkset(): fixed event checking procedure for Matlab 7.


4.42stable - Sept 13, 2004

  • pop_eegfilt(): fixed filtering continuous data with break events and Matlab 7.0 compatiblity issue.
  • eeg_insertbound(): fixed error when inserting new boundaries (breaks) to data having boundary from previous EEGLAB versions (thanks to Johannes Sarnthein).
  • pop_rmbase(): fixed text in GUI and header inconsistency about time unit.
  • eegfilt(): fixed minor min filter length problem (thanks to Rami Niazy).
  • pop_prop(): fixed minor typo.


4.41stable - August 12, 2004

  • DIPFIT toolbox: added back missing files (thanks to Hovagim Bakardjian) and updated other files (see plugin revision page).


4.4stable - July 28, 2004

  • Matlab 7 single precision: supporting single-precision float calculation for Matlab 7 (R14) (allows processing of larger datasets). Note that the EEGLAB data import functions have not yet been ported to Matlab 7. Also, some graphic commands of Matlab 7.0.0.xxx are not stable in EEGLAB under Linux (we have not yet tested under Windows), so we recommend to continue using Matlab 6.X while waiting for a more stable version of Matlab 7.
  • headplot(): fixed reading problem under windows.
  • pop_chanevent(): fixed history.


4.4beta - July 9, 2004

    Changes to the EEGLAB tutorials:

  • Event tutorial: a new tutorial covering the ins-and-outs of EEGLAB events (and urevents) has been added.
  • Script writing tutorial: The EEGLAB script writing tutorial has been re-written, with more information and examples.
  • EEGLAB variable appendix: a new tutorial describing in detail the EEG structure and its sub-structures has been added.
  • Main tutorial: The main EEGLAB tutorial has been updated with new screen shots. etc...
  • Main tutorial datasets: Eye electrode locations have been adjusted to be more realistic.
  • Note: Beginning with this version, we are no longer numbering the tutorial pages, but using section numbers and page within section instead. This will allow users to update printed copies by replacing or inserting selected pages, rather than needing to print the entire tutorial volume after future version upgrades.

    Addition to the EEG event structure:

  • EEG.events: added a duration to 'boundary' (break) events. This will allow synchronizing of parallel data streams (such as video, etc.) to dataset data after artifact or other data rejection. NOTE: a 'boundary' event with duration NaN marks the separation of two data portions that were not originally continuous, as when two datasets are concatenated (merged). The event.duration field for other events is 0 by defaults, but can be used for other purposes in the case of ordinary events, e.g. to hold stimulus length, etc.

    Signal processing and plotting functions update:

  • local history: adding save menu and fixing various minor problems including history for binary import functions.
  • binary ICA for Mac OS X: binary ICA has been recompiled for Mac OSX by William Beaudot.
  • plugins: now scan sub-folder of the EEGLAB plugin directory to find "eegplugin_XXX.m" plugin files.
  • eegplot(): fixed the scale problem when selecting a specific number of channels.
  • envtopo(): added (new default) 'sumenv' mode filling the envelope of the summed contribution of the plotted components in the background; fixed pvaf and info printout; added pvaf text to plot. Fixed component selection. Components were plotted based on their relative variance not based on their variance accounted for.
  • erpimage(): fixed vertical line aspect in ERP when data is aligned to experimental events. Made limit output consistent with the 2-D image data returned.
  • headplot(): fixed reading location files from the command line call only (thanks to Clemens Brunner). New full head mesh surface for plotting.
  • timef(): fixed baseboot. Previously the function was using surrogate data from the whole data trial for estimating significance (unlike documented in the header). This resulted in conservative estimation of significance threshold. Now, as default, timef() only uses surrogate data from the baseline period only. To obtain results you were obtaining previously using this function, you must use 'baseboot', 0.
  • topoplot(): added plotting of lower head channels in a 'skirt' outside the cartoon head. Added arguments to control the plotting of the plotting radius ('plotrad'), cartoon head radius ('headrad' - normally 0.5 - level of the head center) and interpolation radius ('interprad'). Fixed slight shrinkage in 'shading', 'interp' mode plotting.
  • dipplot(): added a new 'sphere' mode in which dipole locations are plotted using 3-D spheres. Can now plot the closest MRI slices in non-tight mode.
  • runpca(): fixed bug when more than 50 PCA components (thanks to Yuan Lai).
  • pop_chanedit(): now uses an enriched channel database to look up channel locations (with 385 channels instead of 81). Also support 'skirt' mode (see topoplot above).
  • pop_resample: now take into account breaks in continuous data.
  • pop_editeventvals(): completelly reprogrammed. Fixed history generation for latency editing. Fixed urevent insertion for urevent update. Exchange 'append' and 'insert' buttons (old scripts using this function should still work).
  • pop_runica(): fixed fastica call (thanks to Germán).
  • pop_importevent(): fixed 1 point offset error when importing absolute latencies.
  • pop_chanevent(): more options, can now apply any operation to event channel prior to extracting events.
  • pop_loadbva(): fixed rare file reading problem (thanks to Zoltan Chadaide).
  • pop_loadcnt(): now import keystroke event values.
  • pop_mergeset(): fixed merge problem if datasets do not have 'urevent' fields (thanks to Jed Meltzer).
  • pop_rejmenu(): fixed threshold rejection call (thanks to Zoltan Mari).
  • pop_selectevent(): fixed latency limit selection so that they include limits.
  • pop_epoch(): browse button for selecting event types.
  • pop_topoplot(): fixed command line call (thanks to Vladimir Litvak). Added an edit box to specify plotting options.
  • eegplot(), pop_importepoch(), pop_importevent(), pop_editeventvals(), pop_importpres(), pop_chanevent(): added support for duration of events.

    New functions (command line only):

  • sobi(), acsobiro(): SOBI ICA functions which we slightly modified for processing data epochs. Thanks to A. Cichocki for allowing them to be distributed. The pop_runica() function can now be used as a front end for these functions.
  • eeg_context(): returns information about the urevents of specified type(s) that precede and/or succeed a given events of given type(s). Use eeg_context() to study the relationship between EEG dynamics and the event *context* in which the event occurs. Supercedes eeg_time2prev(), which had bugs and is no longer distributed.
  • eeg_urlatency(): retrieves any event latency in original time frame (event after rejecting portions of data).
  • eeg_eventhist(): this new function computes and optionally plots a histogram of event types and field values in a dataset. See also, pop_eventstat().
  • eeg_matchchans(): new function to compute the closest channel locations in a large EEG.chanlocs array to locations in a smaller EEG.chanlocs array. By default, a plot is also produced illustrating the results.
  • eeg_pvaf(): new function to compute the percent variance accounted for in specified data channels by each independent component


4.311 - February 24, 2004

  • dipplot(): fixed dipole orientation problem when plotting two dipoles.
  • pop_mergeset(): fixed 'urevent' merging.


4.31 - February 13, 2004

  • Tutorial: two new sections (I.2.2 and I.2.3) were added to the channel editing tutorial.
  • Channel location: can now use channels without coordinates (e.g., EYE, EMG...). There are simply ignored when plotting scalp maps. Automatically read channel names from binary files for EEG and BDF files and look up standard channel locations (using menu Edit > Channel location) based on channel labels (assumes 10-20 channel labels). Functions affected are pop_chanedit(), convertlocs(), topoplot(), pop_headplot(), headplot(), plottopo(), pop_loadcnt(), pop_loadeeg(), and pop_loadbdf().
  • spectopo(), spec(): fixed the spectrum computation when the Matlab Signal Processing Toolbox is not present.
  • pop_comperp(): added command line options 'tlim' and 'ylim' (thanks to Stefan Debener's suggestion); fixed the output problem (thanks to William J. Gehring).
  • pop_timef(): fixed multitaper (frequency assignment was wrong).
  • pop_reref(): fixed rare error due to channel location structure.
  • erpimage(): added 'showwin' flag argument to image the sorting window used in sorting by phase, amplitude or value.
  • timef(): added 'erspmax' argument to fix color scaling for ERSP (thanks to Ruey Song Huang).
  • pop_editset(): fixed command line call error when function was called from a subfunction (thanks to Vladimir Litvak).
  • pop_runica(): fixed conflict between 'pca' option and automatic rank lowering (thanks to Teresa Ka Wai Wong); fixed history generation.
  • pop_mergeset(): now adds a discontinuity ('break') event when merging two datasets.
  • pop_loadcnt(), pop_loadeeg(), pop_loadedf(), pop_loadbdf(): now import channel labels.
  • pop_rejmenu(): fixed standard threshold rejection time limits previously interpreted as sec instead of ms (thanks to Zoltan Mari).
  • pop_loadbva(): new function to load Matlab files saved using Brain Vision Analyzer (thanks to Ingmar Gutberlet and Marcel Bastiaansen for their help).
  • pop_copyset(): fixed history generation.
  • pop_chanedit(): fixed local history generation in dataset.
  • pop_topoplot(): fixed history generation.
  • pop_importevent(), pop_importpres(): new option to automatically adjust the sampling rate of the new events so they best align with the closest old event. This may take into account small differences in sampling rates that could lead to big differences by the end of the experiment (e.g., a 0.01% clock difference during would lead to a 360-ms difference after one hour if not corrected). Also, for the Presentation file, users can now select any file fields for event latency and type.
  • pop_rejepoch(): fixed problem when all or no trials were selected for rejection.
  • pop_editset(): fixed command line call error when function was called from a subfunction (thanks to Vladimir Litvak).


4.301 - December 6, 2003

  • missing functions: re-introduced some functions inadvertently omitted from v4.3 (e.g. for calling up help messages from pop-windows, etc...).


4.3 - December 5, 2003

  • EEG.urevent: removed automatic urevent structure building for pre-existing datasets. !!WARNING!!: Datasets created under EEGLAB 4.1 and loaded into 4.2 had an EEG.urevent structure created automatically. IF some data containing events. had been rejected BEFORE this time, then the urevent structure information IS INCOMPLETE (i.e. to some degree wrong!). Most new datasets created under 4.2 had the urevent structure saved correctly when the event information was first added. Be cautious about using urevent information from legacy 4.1 datasets.
  • eeg_time2prev(): first (commandline) function to use urevent information. Returns the delay in ms from each event of one or more specified ('target') type(s) to the last preceding event of one or more specified ('previous') type(s). Uses the EEG.urevent and EEG.event().urevent structures. Useful for selecting event subsets or as an epoch sorting variable ('sortvar') in erpimage().
  • EEG.urchanlocs: Added this structure array and pointers to it (EEG.chanlocs[N].urloc) The purpose of urchanlocs is to preserve the original locations of ALL the original data channels. This should be useful if some channels are later removed. Parallels the EEG.urevent structure.
  • DIPFIT: Added DIPFIT toolbox of Robert Oostenveld as included plug-in. Fits component maps to single or dual-symmetric dipoles in a spherical head model.
  • eeg_hist(): add local history for each EEG dataset.
  • pop_editset(): fixed command line call error (thanks to Vladimir Litvak).
  • pop_chanedit(): fixed history for channel center optmization; updated read electrode file gui; adding "Append" button; updated coordinate conversion buttons; Fixed polhemusx and polhemusy error.
  • pop_headplot(): fixing load file problem under windows.
  • pop_comperp(): fixing function crash for grand ERP in once condition (thanks to Vladimir Litvak).
  • spec(), eegfiltfft(): new functions to suplement the Matlab Signal Processing toolbox for users who do not have it.
  • readneurolocs(): now reads two types of Neuroscan polar location files.
  • eegplugin_besa(): fixed saving dipoles in the multiple dataset structure.
  • spectopo(): uses Matlab pwelch(), units specified (10*log10(uV/Hz) (thanks to Johannes Sarnthein).
  • phasecoher(): now uses angle() instead of obsolete toolbox function phase() (thanks to Chris Jetton).
  • pop_importpres(): now uses presentation fields from data file (instead of stereotyped fields).
  • pop_importevent(): internally reprogrammed.
  • channel location database: added standard 10-10 and 10-20 caps in EEGLAB format ftp://sccn.ucsd.edu/pub/locfiles/eeglab/.
  • loadcnt(): fixing event reading bug for 32-bit continuous Neuroscan files (thanks to Jed Meltzer).
  • readlocs(): if both spherical and 3-D Cartesian coordinates are present, now uses spherical by default and re-converts to 3-D Cartesian.
  • pop_readbdf(): fixed error when using default parameter in graphical interface.
  • eeg_checkset(): fixing minor problem for urevents.
  • envtopo(): fixed compnum problem for pvaf.
  • eeg_eegfilt(): fixed nargin problem (thanks to Petr Janata).
  • tftopo(): fixed significance threshold for visualizing ITC.
  • erpimage(): Changed the graphic style for showing (erp, ersp, itc) significance limits to background (blue) fill. Phase sorting now removes baseline before computing phase (thanks to Rufin VanRullen). Added 'erpalpha' option to plot ERP bootstrap significance limits. This test works as follows: A distribution is computed of surrogate trial averages summing the input trials with randomly flipped signs. The specified (two-sided) significance level is estimated from this distribution, and plotted in red. Made 'auxvar' plotting work with 'ampsort','phasesort', and 'plotamps'. Added argument 'horz' to overplot horizontal lines at indicated epoch numbers. If sorting trials by phase ('phasesort'), now uses circular (wrap-around) smoothing. (-SM)
  • loadcnt(): previous version (v4.2) could not read files with no events; fixed this.
  • pop_epoch(): automatically add time-locking events if no event in data trials. Fix bug when epoching without including time 0.
  • runica(): added 'compvars' (mean component vars) as 3rd output arg; moved activations to 7th output argument.
  • topoplot(): added 'noplot',[radius angle] option to return an interpolated value for a single [missing] channel. Not recommended for use with very many data points, nor for channel locations at/off the edge of the electrode array.


4.2 - August 6, 2003

  • pop_saveset(): by default, now saves an EEG dataset in a single file (EEG.data saved in single-precision). Update your local eeg_options() file if necessary; Use eeg_option (or menu File > Maximize memory) to save EEG data as single floats in a separate .fdt file (as in previous EEGLAB versions).
  • pop_editeventvals(): completely remade and added urevents. Urevents are all the original events imported along with the (often) continuous data. Retaining 'urevents' allows users to categorize events by their preceding event context, even after data rejection. Currently, using urevent info requires a user-written command line script operating on the EEG structure. (Note: 'ur' is German for 'original'.) Also, pop window now allows the user to either insert (<-) or append (->) events.
  • eegplot(): window selection zoom now works as expected; fixed slight inacuracy in scale. Now plots events as colored vertical lines (press "Event types" button to pop-up legend window). Also, speeded up this function. Note: still faster display available from commandline using 'submean','off'.
  • dipplot(): better co-registration of the template anatomical MRI and the sphere/elipsoid that best fits electrode positions. New option to vizualize the MRI slice at which dipoles are located ("Tight view" button). to return the same number of trials as input (e.g., if smoothing>1, decimate=1).
  • main eeglab() window: reorganized the data import menu.
  • timtopo(): fixed Matlab 5.3 compatibility problem.
  • pop_timef(), pop_crossf(): fixed 'tlimit' parameter problem.
  • pop_envtopo(): added 'xactscale' option to scale component scalp map to microvolt.
  • pop_spectopo(): debugging filtering for continuous data with boundaries (thanks to Johannes Sarnthein).
  • pop_plottopo(), pop_plotdata(): allowing to plot an unlimited number of single trials.
  • pop_selectcomps(): now allows user to plot a component subset.
  • pop_comperp(): reprogrammed this "Compare ERPs" function to add more options.
  • pop_read_erpss(): corrected a one-time point inaccuracy for events.
  • read_erpss(): now reads compressed ERPSS raw data files.
  • load_cnt(), pop_loadcnt(): reprogrammed using a different base function for loadcnt() and now allow to import 32-bit Neuroscan data files.
  • pop_reref(), reref(): undoing average reference was not accurate. Completelly reprogrammed the function. Now can re-reference data to several channels (e.g., to linked mastoids).
  • pop_eegthresh(): fixed component index error.
  • pop_resample(): fixed slight inaccuracy in frequency returned for non-integer frequencies.


4.1 - May 22, 2003

  • Tutorial: new Added quick tutorial on rejecting data artifacts with EEGLAB.
  • Main tutorial: corrected numerous small inconsistencies.
  • Download page: the tutorial dataset is now available with (pre-computed) ICA weights. This version can be used for a quick sel-guided overview of EEGLAB capabilities.
  • pop_loadcnt(): new edit box to time subset and optional import of keystroke events.
  • pop_loadeeg(), loadeeg(): added compatibility with 32-bit Neuroscan files (with the kind help of Gaurav Srivastava).
  • pop_export(), pop_expica(): new functions and menus to export dataset info to ASCII files.
  • pop_chanedit(): allowing to export channel data files in 6 different formats.
  • pop_comperp(): fixed command line call.
  • pop_select(): fixed time limits for data scrolling.
  • pop_headplot(), pop_comment(), pop_plotdata(), pop_plottopo(), pop_erpimage(): condense call in history.
  • headplot(): fixed scale for multiple plot, scale limits, command line call problem.
  • plottopo(): fixed "regions" error.
  • timef(), crossf(): can now function without the Matlab signal processing toolbox; fixed is_sccn() function error.
  • erpimage(): added option 'rmerp' to subtract ERP from trials before processing.
  • timef(), crossf(): fixed frequency scale inaccuracy for FFT decompositions when padratio was not 2 (FFT default 2 was OK).


4.091 - April 29, 2003

  • fixed import data function.


4.09 - April 24, 2003

  • pop_comperp(): new function (Menu Plot > Plot/Compare ERPs) to compute grand ERPs for channel or ICA components, grand ERPs differences, ERP significance, etc.
  • eegfilt(): fixed filtering of continuous data to not filter across discontinuities.
  • erpimage(): fixed event-sort problem (causing crash); number of wavelet cycles for phase sorting now 3.
  • spectopo(): new options to tune FFT length, window size and overlap, and to ignore small stretches of continuous data (between breaks caused by data rejection).
  • pop_prop(): component properties: now normalizing component spectrum by RMS of component map.
  • pop_comment(): fixed calling from command line.
  • pop_select(): fixed printf()


4.08 - February 14, 2003

  • made baseline removal function pop up after epoch extraction.
  • added more help info on several "pop" functions.
  • made tutorial available in PDF.
  • allow EEGLAB plugins (see EEGLAB Contributions webpage).
  • in envtopo(), added pvaf (% var. acct. for) of component contributions to the ERP.
  • new GUI for dipole plotting.
  • fixed some GUI history bug for the renorm parameter in pop_erpimage.
  • numerical shrink error fixed in channel editor.
  • read Neuroscan .asc location files (function readneurolocs()).
  • do not always add a 'Time Locking Event' (TLE) to EEG.event in pop_importepoch().
  • Menu item 'Tools > Select data' now can select several portions of a continuous data file and can select electrodes by name. Functions affected: eeg_rejeeg() and pop_select().
  • fixed data loading error if dataset filename is changed after data was saved in a separate file.
  • fixed GUI figure assignment problem if change-of-focus occured while figure was being plotted.
  • added message on how to import Biosemi .EDF and .BDF events.
  • added warning if color depth is too low.
  • automated window rescaling for rejecting components (if less than 35).
  • added output to the eeglab() function for command call consistency (backwards compatible).
  • in pop_newset(), fixed command line call optional argument 'overwrite'.
  • in timef(), electrode names are now displayed.
  • in crossf(), fixed title bug.
  • in erpimage(), adjusted the headplot, added an 'erpstd' option for plotting ERP std. dev..
  • allowed entering several indices in 'Plot > Component properties' and Plot > Channel properties.
  • debugged reading of .ced (chanedit) channel location files.
  • made timtopo() able to plot in subaxes.


4.07 - January 28, 2003

  • debugged menu option "Plot > Remove components" (possibly resulted in shuffled component scalp maps). Now allows retaining specified components.
  • menu selection "Plot > Channel spectra and maps" now allows plotting spectrum of all channels even without known channel locations.
  • fixed a problem with merging epoched datasets.
  • now can import Presentation event files with space characters in the event types.
  • now can import ERPSS binary data format.
  • added notch filter option to the pop_eegfilt() interface.
  • fixed spectopo() bug for Matlab versions 6.0.0.x under Windows.


4.061 - January 17, 2003

  • update main window when deleting dataset.


4.06 - January 16, 2003

  • added eeglab version number to main window.
  • allowed merging of datasets with different event structures.
  • allowed component subtraction when using PCA option of ICA algorithm.
  • do not import all-zero reaction times when reading Neuroscan data.
  • pop_selecdata(): recompute event latencies when selecting time windows.
  • read channel locations: added compatibility with Matlab 5.2.
  • read channel locations: removed dots from electrode labels.
  • avoid redrawing the eeglab main window in front of plots.
  • changed default location for plotting the eegplot window.
  • moved the current dataset name to the title of the eeglab main window.
  • fixed compvar() computation of residual variance of components.


4.05 - January 8, 2003

  • fixed the shuffle option in timef and crossf.
  • fixed a bug that had inverted the coherence angles in the "crossf" coherence analysis function (wavelets only, FFT output was ok).
  • changed default plot titles in erpimage().
  • improved channel location reading function for reading Cartesian EGI .sfp data files and the various formats for BESA .elp files.
  • besaplot() can now plot dipoles with residual variance in a given range.
  • fixed problem when using PCA option in pop_runica().
  • fixed minor problem for file format option box: automatic update in pop_importdata().


4.04 - December 4, 2002

  • fixed import of continuous event information into data epochs.
  • fixed pop_editeventvals() problem if more than two event-sorting variables.
  • fixed binica() 'fig' error in pop_runica().
  • debugged folder separators for MacOSX Matlab 6.
  • read EGI raw data file versions 2-6 and EGI data events.
  • import event types for Neuroscan continuous files.
  • debugged erpimage() spectrum calculation for very long epochs.
  • fixed a small dipole-extent problem when importing dipole info from besa.


4.03 - November 19, 2002

  • corrected a bug in pop_erpimage() for plotting components.
  • corrected the reading problem of the 'mhead.mat' file in headplot() under Windows.
  • spectopo() now returns the component spectrum as output argument.


4.02 - November 18, 2002

  • decreased width of pop_erpimage() function gui window.
  • removed debugging messages from pop_importevent() text output.


4.01 - November 17, 2002

  • added continuous baseline removal (rmbase()) taking into account rejection discontinuities


4.0 - November 15, 2002

  • version 4.0 First release.