# EEGLAB revision history version 4

From SCCN

## 4.515stable - June 07, 2005

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

## 4.514stable - June 06, 2005

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

## 4.513stable - June 02, 2005

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

## 4.512stable - December 09, 2004

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

## 4.511stable - November 24, 2004

- (Arno) 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)
- (Arno) topoplot(): now correctly handles style 'blank';

## 4.51stable - November 19, 2004

- (Arno) 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* (Arno) 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.
- (Arno) 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.
- (Arno) erpimage: made the optional spectrum plot and max frequency computations consistent by using the same spectral estimate.
- (Arno) 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!
- (Arno) eeg_getepochevent(): can now process string fields.
- (Arno) pop_selectevents(): fixed boundary event renaming problem (thanks to Andreas Widmann).
- (Arno) pop_topoplot(): fixed dipole plotting error.
- (Arno) topoplot(): added optional argument 'plotchans'.
- (Arno) runica(): fixed block length bug for some very short data lengths (thanks to Julie Onton).
- (Arno) eeglab(), eeg_context(), eegplot(), erpimage(), pop_rejepoch(): adapt all occurrences of && to & and/or || to |, for compatibility with Matlab r12 and older.
- (Arno) 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.
- (Arno) eeg_insertbound(), pop_eegplot(): fixed event latency problem when inserting several boundary events in continuous data with no events (thanks to Elena Orekhova).
- (Arno) tftopo(): new title option.
- (Arno) pop_reref(): fixed channel label problem (thanks to Morgan Hough).
- (Arno) eeg_context(): fixed minor problems.
- (Arno) pop_mergeset(): now insert boundary event in EEG.urevent as well as EEG.event for context searching.
- (Arno) pop_crossf(): fixed "plot coherence phase" button (thanks to Stefan Debener).
- (Arno) timef(): added 'itcphase' output.
- (Arno) pop_loadeeg(): fixed the typo bug ('\' instead of '/') (thanks to Zoltan Mari, Hovagim Bakardjian, and Bernie C. Till).
- (Arno) pop_loadcnt(): fixed 1-point offset error when reading '.cnt' file events (thanks to Andreas Widmann).
- (Arno) loadcnt(): now force to read little endian format (for Solaris, Datastar, ...) (thanks to Timothy Uy).
- (Arno) pop_readegi(): now allow to read portion of segmented data file.
- (Arno) Biosig(): use latest Biosig functions.
- (Arno) Incorporated all minor fixes from == 4.43stable.

## 4.43stable - October 25, 2004

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

## 4.5beta, Sept 13, 2004

- (Arno) BIOSIG: The BIOSIG plugin is now part of the standard EEGLAB distribution (see the plugin page).
- (Arno) 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.
- (Arno) eegplot(): added option to hide event duration.
- (Arno) eeglab(): added check of consistency between EEG and ALLEEG variables.
- (Arno) pop_topoplot(): changed default ordinate orientation for ERPs to positive-up.
- (Arno) loadtxt(): fixed reading comma-separated file (thanks to Petr Janata).
- (Arno) envtopo(): fixed x-axis label.
- (Arno) pop_resample(): can now resample data epochs (not recommended).
- (Arno) pop_selectevent(): fixed function crash when multiple events are entered with quotes.
- (Arno) plotdata(): fixed Matlab 7 plotting error.
- (Arno) erpimage(): fixed Matlab 7 plotting error.
- (Arno) pop_prop(): fixed Matlab 7 plotting error.
- (Arno) plottopo(): fixed Matlab 7 plotting error.
- (Arno) pop_readbdf(): Matlab 7 compatibility (bitand function call). This function is now part of the BIOSIG toolbox.
- (Arno) pop_saveset(): under Matlab 7, save dataset files compatible with Matlab 6.
- (Arno) eeg_checkset(): fixed event checking procedure for Matlab 7.

## 4.42stable - Sept 13, 2004

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

## 4.41stable - August 12, 2004

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

## 4.4stable - July 28, 2004

- (Arno) 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.
- (Arno) headplot(): fixed reading problem under windows.
- (Arno) pop_chanevent(): fixed history.

## 4.4beta - July 9, 2004

**Changes to the EEGLAB tutorials:**

- (Arno) Event tutorial: a new tutorial covering the ins-and-outs of EEGLAB events (and urevents) has been added.
- (Arno) Script writing tutorial: The EEGLAB script writing tutorial has been re-written, with more information and examples.
- (Arno) EEGLAB variable appendix: a new tutorial describing in detail the EEG structure and its sub-structures has been added.
- (Arno) Main tutorial: The main EEGLAB tutorial has been updated with new screen shots. etc...
- (Arno) Main tutorial datasets: Eye electrode locations have been adjusted to be more realistic.
- (Arno) 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:**

- (Arno) 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:**

- (Arno) local history: adding save menu and fixing various minor problems including history for binary import functions.
- (Arno) binary ICA for Mac OS X: binary ICA has been recompiled for Mac OSX by William Beaudot.
- (Arno) plugins: now scan sub-folder of the EEGLAB plugin directory to find "eegplugin_XXX.m" plugin files.
- (Arno) eegplot(): fixed the scale problem when selecting a specific number of channels.
- (Arno) 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.
- (Arno) 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.
- (Arno) headplot(): fixed reading location files from the command line call only (thanks to Clemens Brunner). New full head mesh surface for plotting.
- (Arno) 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.
- (Arno) 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.
- (Arno) 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.
- (Arno) runpca(): fixed bug when more than 50 PCA components (thanks to Yuan Lai).
- (Arno) 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).
- (Arno) pop_resample: now take into account breaks in continuous data.
- (Arno) 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).
- (Arno) pop_runica(): fixed fastica call (thanks to Germán).
- (Arno) pop_importevent(): fixed 1 point offset error when importing absolute latencies.
- (Arno) pop_chanevent(): more options, can now apply any operation to event channel prior to extracting events.
- (Arno) pop_loadbva(): fixed rare file reading problem (thanks to Zoltan Chadaide).
- (Arno) pop_loadcnt(): now import keystroke event values.
- (Arno) pop_mergeset(): fixed merge problem if datasets do not have 'urevent' fields (thanks to Jed Meltzer).
- (Arno) pop_rejmenu(): fixed threshold rejection call (thanks to Zoltan Mari).
- (Arno) pop_selectevent(): fixed latency limit selection so that they include limits.
- (Arno) pop_epoch(): browse button for selecting event types.
- (Arno) pop_topoplot(): fixed command line call (thanks to Vladimir Litvak). Added an edit box to specify plotting options.
- (Arno) eegplot(), pop_importepoch(), pop_importevent(), pop_editeventvals(), pop_importpres(), pop_chanevent(): added support for duration of events.

**New functions (command line only):**

- (Arno) 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.
- (Arno) 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* (Arno) in which the event occurs. Supercedes eeg_time2prev(), which had bugs and is no longer distributed.
- (Arno) eeg_urlatency(): retrieves any event latency in original time frame (event after rejecting portions of data).
- (Arno) eeg_eventhist(): this new function computes and optionally plots a histogram of event types and field values in a dataset. See also, pop_eventstat().
- (Arno) 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.
- (Arno) eeg_pvaf(): new function to compute the percent variance accounted for in specified data channels by each independent component

## 4.311 - February 24, 2004

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

## 4.31 - February 13, 2004

- (Arno) Tutorial: two new sections (I.2.2 and I.2.3) were added to the channel editing tutorial.
- (Arno) 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().
- (Arno) spectopo(), spec(): fixed the spectrum computation when the Matlab Signal Processing Toolbox is not present.
- (Arno) pop_comperp(): added command line options 'tlim' and 'ylim' (thanks to Stefan Debener's suggestion); fixed the output problem (thanks to William J. Gehring).
- (Arno) pop_timef(): fixed multitaper (frequency assignment was wrong).
- (Arno) pop_reref(): fixed rare error due to channel location structure.
- (Arno) erpimage(): added 'showwin' flag argument to image the sorting window used in sorting by phase, amplitude or value.
- (Arno) timef(): added 'erspmax' argument to fix color scaling for ERSP (thanks to Ruey Song Huang).
- (Arno) pop_editset(): fixed command line call error when function was called from a subfunction (thanks to Vladimir Litvak).
- (Arno) pop_runica(): fixed conflict between 'pca' option and automatic rank lowering (thanks to Teresa Ka Wai Wong); fixed history generation.
- (Arno) pop_mergeset(): now adds a discontinuity ('break') event when merging two datasets.
- (Arno) pop_loadcnt(), pop_loadeeg(), pop_loadedf(), pop_loadbdf(): now import channel labels.
- (Arno) pop_rejmenu(): fixed standard threshold rejection time limits previously interpreted as sec instead of ms (thanks to Zoltan Mari).
- (Arno) pop_loadbva(): new function to load Matlab files saved using Brain Vision Analyzer (thanks to Ingmar Gutberlet and Marcel Bastiaansen for their help).
- (Arno) pop_copyset(): fixed history generation.
- (Arno) pop_chanedit(): fixed local history generation in dataset.
- (Arno) pop_topoplot(): fixed history generation.
- (Arno) 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.
- (Arno) pop_rejepoch(): fixed problem when all or no trials were selected for rejection.
- (Arno) pop_editset(): fixed command line call error when function was called from a subfunction (thanks to Vladimir Litvak).

## 4.301 - December 6, 2003

- (Arno) missing functions: re-introduced some functions inadvertently omitted from v== 4.3 (e.g. for calling up help messages from pop-windows, etc...).

## 4.3 - December 5, 2003

- (Arno) 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.
- (Arno) 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().
- (Arno) 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.
- (Arno) 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.
- (Arno) eeg_hist(): add local history for each EEG dataset.
- (Arno) pop_editset(): fixed command line call error (thanks to Vladimir Litvak).
- (Arno) 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.
- (Arno) pop_headplot(): fixing load file problem under windows.
- (Arno) pop_comperp(): fixing function crash for grand ERP in once condition (thanks to Vladimir Litvak).
- (Arno) spec(), eegfiltfft(): new functions to suplement the Matlab Signal Processing toolbox for users who do not have it.
- (Arno) readneurolocs(): now reads two types of Neuroscan polar location files.
- (Arno) eegplugin_besa(): fixed saving dipoles in the multiple dataset structure.
- (Arno) spectopo(): uses Matlab pwelch(), units specified (10*log10(uV/Hz) (thanks to Johannes Sarnthein).
- (Arno) phasecoher(): now uses angle() instead of obsolete toolbox function phase() (thanks to Chris Jetton).
- (Arno) pop_importpres(): now uses presentation fields from data file (instead of stereotyped fields).
- (Arno) pop_importevent(): internally reprogrammed.
- (Arno) channel location database: added standard 10-10 and 10-20 caps in EEGLAB format ftp://sccn.ucsd.edu/pub/locfiles/eeglab/.
- (Arno) loadcnt(): fixing event reading bug for 32-bit continuous Neuroscan files (thanks to Jed Meltzer).
- (Arno) readlocs(): if both spherical and 3-D Cartesian coordinates are present, now uses spherical by default and re-converts to 3-D Cartesian.
- (Arno) pop_readbdf(): fixed error when using default parameter in graphical interface.
- (Arno) eeg_checkset(): fixing minor problem for urevents.
- (Arno) envtopo(): fixed compnum problem for pvaf.
- (Arno) eeg_eegfilt(): fixed nargin problem (thanks to Petr Janata).
- (Arno) tftopo(): fixed significance threshold for visualizing ITC.
- (Arno) 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)
- (Arno) loadcnt(): previous version (v== 4.2) could not read files with no events; fixed this.
- (Arno) pop_epoch(): automatically add time-locking events if no event in data trials. Fix bug when epoching without including time 0.
- (Arno) runica(): added 'compvars' (mean component vars) as 3rd output arg; moved activations to 7th output argument.
- (Arno) 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

- (Arno) 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).
- (Arno) 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.
- (Arno) 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'.
- (Arno) 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).
- (Arno) main eeglab() window: reorganized the data import menu.
- (Arno) timtopo(): fixed Matlab 5.3 compatibility problem.
- (Arno) pop_timef(), pop_crossf(): fixed 'tlimit' parameter problem.
- (Arno) pop_envtopo(): added 'xactscale' option to scale component scalp map to microvolt.
- (Arno) pop_spectopo(): debugging filtering for continuous data with boundaries (thanks to Johannes Sarnthein).
- (Arno) pop_plottopo(), pop_plotdata(): allowing to plot an unlimited number of single trials.
- (Arno) pop_selectcomps(): now allows user to plot a component subset.
- (Arno) pop_comperp(): reprogrammed this "Compare ERPs" function to add more options.
- (Arno) pop_read_erpss(): corrected a one-time point inaccuracy for events.
- (Arno) read_erpss(): now reads compressed ERPSS raw data files.
- (Arno) load_cnt(), pop_loadcnt(): reprogrammed using a different base function for loadcnt() and now allow to import 32-bit Neuroscan data files.
- (Arno) 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).
- (Arno) pop_eegthresh(): fixed component index error.
- (Arno) pop_resample(): fixed slight inaccuracy in frequency returned for non-integer frequencies.

## 4.1 - May 22, 2003

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

## 4.091 - April 29, 2003

- (Arno) fixed import data function.

## 4.09 - April 24, 2003

- (Arno) pop_comperp(): new function (Menu Plot > Plot/Compare ERPs) to compute grand ERPs for channel or ICA components, grand ERPs differences, ERP significance, etc.
- (Arno) eegfilt(): fixed filtering of continuous data to not filter across discontinuities.
- (Arno) erpimage(): fixed event-sort problem (causing crash); number of wavelet cycles for phase sorting now 3.
- (Arno) 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).
- (Arno) pop_prop(): component properties: now normalizing component spectrum by RMS of component map.
- (Arno) pop_comment(): fixed calling from command line.
- (Arno) pop_select(): fixed printf()

## 4.08 - February 14, 2003

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

## 4.07 - January 28, 2003

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

## 4.061 - January 17, 2003

- (Arno) update main window when deleting dataset.

## 4.06 - January 16, 2003

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

## 4.05 - January 8, 2003

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

## 4.04 - December 4, 2002

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

## 4.03 - November 19, 2002

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

## 4.02 - November 18, 2002

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

## 4.01 - November 17, 2002

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

## 4.0 - November 15, 2002

- (Arno) 4.0 First release.