Content uploaded by Scott Makeig

Author content

All content in this area was uploaded by Scott Makeig on Mar 09, 2018

Content may be subject to copyright.

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 1

EEGLAB: an open source toolbox for analysis of single-trial EEG

dynamics including independent component analysis

Arnaud Delorme, Scott Makeig

Swartz Center for Computational Neuroscience, Institute for Neural Computation, University of California San

Diego, La Jolla CA 92093-0961; {arno,scott}@sccn.ucsd.edu

Abstract: We have developed a toolbox and graphic user interface, EEGLAB, running under the cross-platform

MATLAB environment (The Mathworks, Inc.) for processing collections of single-trial and/or averaged EEG data

of any number of channels. Available functions include EEG data, channel and event information importing, data

visualization (scrolling, scalp map and dipole model plotting, plus multi-trial ERP-image plots), preprocessing

(including artifact rejection, filtering, epoch selection, and averaging), Independent Component Analysis (ICA) and

time/frequency decompositions including channel and component cross-coherence supported by bootstrap statistical

methods based on data resampling. EEGLAB functions are organized into three layers. Top-layer functions allow

users to interact with the data through the graphic interface without needing to use MATLAB syntax. Menu options

allow users to tune the behavior of EEGLAB to available memory. Middle-layer functions allow users to customize

data processing using command history and interactive ‘pop’ functions. Experienced MATLAB users can use

EEGLAB data structures and stand-alone signal processing functions to write custom and/or batch analysis scripts.

Extensive function help and tutorial information are included. A ‘plug-in’ facility allows easy incorporation of new

EEG modules into the main menu. EEGLAB is freely available (http://www.sccn.ucsd.edu/eeglab/) under the GNU

public license for noncommercial use and open source development, together with sample data, user tutorial and

extensive documentation.

INTRODUCTION

Though computing capabilities of nearly every

electrophysiology laboratory are now sufficient to

allow advanced signal processing of biophysical

signals including high-density electroencephalographic

(EEG) recordings, many researchers continue to rely

on amplitude and latency measures of peaks in EEG

trial averages, termed event related potentials (ERPs).

Historically, the response averaging method was

developed under technical constraints imposed by

hardware initially available for psychophysiological

experiments in 1950s and 1960s. Before digital

computers were available, researchers had to find a

way to summarize event-related activity across several

EEG trials representing brain responses to sensory

stimulations. For this purpose, they first used analog

registers to sum activity across EEG data trials. The

first computerized response averaging computer, the

computer of average transients (CAT, ca. 1962) helped

promote the use of response averaging, called at first

sensory ‘evoked potentials’ (EPs) and later the sensory

/ cognitive ‘event-related potentials’ (ERPs).

Using the fast and low-cost digital computers now

available, technical limitations that constrained

researchers to confine their EEG data analysis to

simple ERP measures and parametric statistics are no

longer relevant. The rationale used to justify response

averaging is that the single-trial EEG data time locked

to some class of experimental events consists of an

average ERP, whose time course and polarity is fixed

across the trials, plus other EEG processes whose time

courses are completely unaffected by the experiment

events. The cortical sources of ERP features may be

assumed to be spatially distinct from sources of

spontaneous EEG activities. However, as we have

demonstrated recently, focusing data analysis on

response averages alone ignores, first, event-related

dynamics that do not appear in, or are poorly

represented in response averages, and second, ignores

ongoing EEG processes that may be partially time and

phase-locked by experimental events, thereby

contributing portions of response averages (Delorme et

al., 2002; Makeig et al., 2002).

In the past decades, pioneer researchers have tried to

apply to EEG data analysis techniques developed in

electrical engineering and information theory,

including time/frequency analysis (Pfurtscheller and

Aranibar, 1979; Bressler and Freeman, 1980; Makeig,

1993; Neuenschwander and Varela, 1993; Tallon-

Baudry et al., 1996; Weiss and Rappelsberger, 1996)

and Independent Component Analysis (ICA) (Makeig

et al., 1996; Makeig et al., 1997; Makeig et al., 1999;

Jung et al., 2001). These techniques have revealed EEG

processes whose dynamic characteristics are also

correlated with behavioral changes, though they cannot

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 2

FIG. 1. Sample EEGLAB session. Screen capture of an EEGLAB user session running under Linux. Users call EEGLAB functions from the

main window menus (center) via ‘pop-up’ parameter selection windows (upper left). Warnings and data processing messages are shown in the

Matlab command line window (lower left), which can also be used to call EEGLAB or other data processing functions directly.

be seen in the averaged ERP. For example, short-term

changes in spectral properties of the ongoing EEG in

specific frequency bands may be correlated with

cognitive processes, e.g. expectancy of a target

stimulus (Makeig et al., 1999) and with visual

awareness (Rodriguez et al., 1999). The sufficiency of

studying average ERPs has also been questioned by

Makeig et al. (2002), who showed that some average

ERP peaks may result from partial synchronization of

oscillatory EEG processes to time locking events in

single data trials.

Currently, most EEG researchers still interpret their

data by measuring peaks in event-locked ERP

averages. Free availability of more general and easy-to-

use signal processing software for EEG data may

encourage the wider adoption of more inclusive

approaches. Our EEGLAB software toolbox for Matlab

(freely available from

http://www.sccn.ucsd.edu/eeglab/) allows processing

of collections of single EEG data epochs using ICA

and spectral analysis as well as data averaging

techniques. Using this toolbox, we have demonstrated

the advantages of combining ICA, time-frequency

analysis, and multi-trial visualization in several

publications (e.g., Makeig et al., 1999; Delorme et al.,

2002; Makeig et al., 2002; Delorme and Makeig,

2003). In EEGLAB, all these functions are available

under a common graphic interface under Matlab, a

widely used multi-platform computing environment.

EEGLAB extends the collection of publicly available

Matlab packages for brain imaging including SPM

(Friston, 1995) and FRMLAB (Duann et al., 2002) for

functional MRI studies and Brainstorm (Baillet et al.,

1999) for EEG/MEG source analysis.

METHODS AND RESULTS

1. Basic functions

The ICA/EEG toolbox of Makeig and colleagues

(1997) included a collection of Matlab functions for

signal processing and visualization of EEG data

including runica(), a function for automated infomax

ICA decomposition (Makeig et al., 1997), ERP-image

plotting (Jung et al., 1999; Makeig et al., 1999), a

method of visualizing time-locked potential variations

across sets of single trials, and time-frequency

decomposition (Makeig, 1993). By 2002, over 5,000

researchers from over 50 countries had downloaded the

ICA/EEG toolbox. However the provided tools could

only be used for EEG analysis by knowledgeable users

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 3

FIG. 2. Data scrolling. The EEGLAB scrolling data review

function, eegplot(), allows the user to review and reject data by

visual inspection. Here, five data epochs (separated by dashed lines)

are plotted at 31 electrode sites (channel names on the left). Other

channels in the dataset can be accessed using the vertical slider on

the left. The arrow buttons (lower left) scroll horizontally through

the data. The user may zoom in on a selected time range and/or

electrode group and may change the plotting parameters using menu

options (upper left). Values of the data point closest to the cursor are

continuously displayed at the bottom of the display. In this example,

two (central) data epochs have been automatically marked for

rejection for out-of-bounds values set by the user in the EEGLAB

data-rejection pop-up window (not shown). The rejection routine

here highlights (in white) the channels containing the outlier values.

The user can further mark (or unmark) data epochs for rejection by

clicking on them. Pressing ‘Update Marks’ (lower right) saves the

a

ccu

m

u

l

ated

r

eject

i

o

n m

a

rkin

gs.

who were prepared to write custom data analysis

scripts. EEGLAB, by contrast, includes a

comprehensive graphic user interface for interactively

calling and viewing results of enhanced and extended

ICA/EEG toolbox functions while further facilitating

the development of custom analysis scripts by prepared

users. Fig.1. shows a screen capture of an EEGLAB

user session running under Linux.

Data preprocessing. EEGLAB allows reading of data,

event information, and channel location files in several

different formats including binary, Matlab, ASCII,

Neuroscan, EGI, Snapmaster, European standard BDF,

and Biosemi EDF. Standard data analysis functions

available in EEGLAB include data filtering, data epoch

extraction, baseline removal, average reference

conversion, data resampling and extraction of data

epochs time locked to specified experimental events

from continuous or epoched data. EEGLAB also

includes methods allowing users to remove data

channels, epochs, and/or components dominated by

non-neural artifacts, by accepting or rejecting visually-

cued EEGLAB recommendations derived from signal

processing and information measures. EEG scalp maps

and channel locations can be converted between

several widely-used Cartesian, polar and spherical

coordinate systems and then visualized in two or three

dimensions. Continuous data and data epochs of any

number of channels can also be scrolled (both

vertically and horizontally).

Data structures and events. EEGLAB uses a single

structure (‘EEG’) to store data, acquisition parameters,

events, channel locations, and epoch information as an

EEGLAB dataset. This structure can also be accessed

directly from the Matlab command line. Text files

containing event and epoch information can be

imported via the EEGLAB menu. The user can also use

the menu to import event and epoch information in any

of several file formats (Presentation, Neuroscan, ASCII

text file), or can read event marker information from

the binary EEG data file (as in, e.g., EGI, Neuroscan,

and Snapmaster data formats). The menu then allows

users to review, edit or transform the event and epoch

information. Event information can be used to extract

data epochs from continuous EEG data, select epochs

from EEG data epochs, or to sort data trials to create

ERP-image plots (Jung et al., 1999; Makeig et al.,

1999). EEGLAB also provides functions to compute

and visualize epoch and event statistics.

To illustrate the utility of EEGLAB, below we employ

a small set of EEG data trials (also available from

http://www.sccn.ucsd.edu/eeglab/) drawn from an

experiment in which the subject covertly attended a

cued location on the computer screen, responding

quickly with a thumb button press each time a target

(filled square) was briefly presented at this location

(Makeig et al., 1999). In different trial blocks, the

attended location was any one of five positions

arranged horizontally on the computer screen above a

fixation cross. The sample dataset consists of 80 3-

second EEG epochs time-locked to targets presented in

the left visual field between 3 and 1.5 degrees of visual

angle. Data from thirty-one scalp electrodes (referred

to the right mastoid) were sampled at 500 Hz (later

reduced for compactness to 125 Hz). Fig. 2 shows five

sample data epochs and illustrates the capabilities of

eegplot(), the EEGLAB data scrolling function.

2. Multi-trial visualization

ERP-image plotting. The field of electrophysiological

data analysis has been dominated by analysis of one-

dimensional averaged event-related potential (ERP)

time series (single channel values across latencies).

The ERP-image is a more general two-dimensional

representation of the data (single channel values within

epochs across latencies) sorted in order of some

relevant measure (e.g., collection time, subject

response, amplitude or phase, etc.). Fig. 3(A) illustrates

the process of constructing ERP-image plots. An ERP

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 4

FIG. 3. ERP image construction. (A) ERP-image plots are constructed by color-coding (grey bars) potential variations occurring in single-trial

epochs (black traces). (B) Vertically stacking thin color-coded horizontal bars, each representing a single trial in an event-related dataset,

produces an ERP image. Here, trials were sorted vertically according to the subject reaction-time (right curving black trace) before applying a 10-

epoch vertical moving average. The trace below the ERP image shows the ERP average of the imaged data epochs. The dot on the scalp map

(top) indicates the scalp position of the channel whose data are imaged. (C) The erpimage() function automates several methods of sorting trials.

Here, EEG phase in a given time/frequency window was used as the sorting variable. For each trial, a 10-Hz wavelet was applied to measure

oscillatory activity in a 3-cycle window centered at time 0. Trials were then sorted (top to bottom) in order of their alpha band frequency phase

values (-π to π) relative to stimulus onset and were displayed as an ERP image, again smoothed by a 10-trial moving average. The data were not

otherwise filtered. The partial inter-trial phase coherence of the data following the stimulus onset is then visible as a change in the slope of the

imaged activity wave fronts to near-vertical after 200 ms. Inter-trial phase coherence (bottom trace) shows that the distribution of alpha activity

phase across trials is non-random (i.e., is partially phase-reset) between 200 and 450 ms (dotted line in lower trace shows p=0.01), resulting in

same alpha activity appearing in the ERP average trace (top panel). The middle trace shows that mean changes in alpha power (in ‘dB’) did not

change significantly (dotted lines) during the epochs. The baseline power level at the analysis frequency (25.9 dB, relative units) is indicated for

possible comparison with other conditions.

image is a colored rectangular image in which each

horizontal line represents a potential time series during

a single experimental trial. Instead of plotting activity

in single trials as left-to-right traces in which potential

is encoded by the ordinate of a data trace, trials are

represented as horizontal lines whose changing color

values indicate the potential at each time point in the

trial. Trials may be plotted in any sorting order of

interest, and a moving average of across adjacent single

trials may be used to highlight trial-to-trial consistency.

Fig. 3(B) illustrates the process of sorting the data trials

by the subject reaction time.

Some features of the visual ERP may be produced by

partial phase-resetting of ongoing EEG activities

following stimulus presentation (Makeig et al., 2002).

Fig. 3(C) illustrates a phase-sorted ERP-image plot, a

visualization tool used to assess whether partial phase

synchronization may account for ERP features. Sorting

by value or spectral amplitude in a given time window,

or by an auxiliary variable are also supported. The

erpimage() function can also plot the response average

ERP, changes in signal power and inter-trial coherence

(as defined below) at a selected frequency, the mean

signal spectrum, and a representative scalp topography.

Although a set of event-locked data trials has just one

ERP average, the number of possible ERP images of a

set of trials is very large since the trials can be sorted,

optionally smoothed, and imaged along any path

(linear or nonlinear), through the possibly high-

dimensional space of trial attributes and/or event

values. However, not all trial sorting orders give equal

insights into the brain dynamics expressed in the data.

It is therefore up to the user to decide which ERP

images to study.

ERP images can also be misinterpreted. For example,

using phase-sorting at one frequency (see Fig. 3(C))

can obscure the presence of oscillatory phenomena at

other frequencies. It is important not to lose sight of the

fact that nearly all activity recorded from scalp

electrodes is the volume conducted sum of activities

originating within a number of cortical domains.

EEGLAB uses independent component analysis (see

below) to separate out these activities under the

assumption that their activities are temporally

independent or at least more temporally independent

than any linear combinations of their signals.

3. Independent component analysis (ICA)

A primary tool of EEGLAB is to facilitate the process

of applying and evaluating the results of independent

component analysis (ICA) of EEG data. ICA

algorithms have proven capable of isolating both

artifactual and neurally generated EEG sources

(Makeig et al., 1999; Jung et al., 2000) whose EEG

contributions, across the training data, are maximally

independent of one another. ICA was first applied to

EEG by Makeig et al. (1996) and is now widely used in

the EEG research community, most often to detect and

remove stereotyped eye, muscle, and line noise

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 5

artifacts (Jung et al., 1999; Jung et al., 2000). The

temporal independence assumption of ICA is readily

understood as a basis for separating artifact sources,

since their activities will ordinarily not be reliably

phase-locked to one another, given enough training

data. In practice, however, ICA also has proved

capable of separating biologically plausible brain

sources whose activity patterns are distinctly linked to

behavioral phenomena. In fact, many of the

biologically plausible sources ICA identifies in EEG

data have scalp maps nearly fitting the projection of a

single equivalent current dipole (Jung et al., 2001;

Makeig et al., 2002), and are therefore quite compatible

with the projection to the scalp electrodes of

synchronous local field activity within a connected

patch of cortex.

EEGLAB contains an automated version, runica()

(Makeig, 1997), of the infomax ICA algorithm (Bell

and Sejnowski, 1995) with several enhancements

(Amari et al., 1996; Lee et al., 1999) both as a Matlab

function and as a stand-alone binary C program that

allows faster and less memory-intensive computation.

The toolbox also allows the user to select any of over

20 available ICA algorithms including JADE (Cardoso

and Souloumiac, 1993) and fixed-point ICA

(Hyvarinen and Oja, 2000).

Though it is not our goal here to describe ICA in detail,

we will try to give some insight about its nature. In

short, ICA finds a coordinate frame in which the data

projections have minimal temporal overlap. The core

mathematical concept of ICA is to minimize the mutual

information among the data projections or maximize

their joint entropy. ICA can be viewed as an alternative

linear decomposition to principal component analysis

(PCA). PCA applied in the temporal domain would

specifically make each successive component account

for as much as possible of the activity uncorrelated

with previously determined components – whereas

ICA seeks maximally independent sources.

This difference in goals leads to dramatic differences in

their results. PCA components are both temporally and

spatially orthogonal, a constraint unrealistic for actual

EEG sources, which arise in domains (spatial regions)

of partially synchronous activity in electrically oriented

cortical neurons (and possibly glia). Because the

density of cortical connections is weighted towards

local connections (<<1 cm), particularly in the network

of inhibitory cells that sustain cortical oscillations

(Pauluis et al., 1999), the partially synchronous

domains giving rise to EEG activity recorded on the

scalp should be mainly compact – though the extent

and density of these partially synchronous activities are

not known. Through simple volume conduction, the

projection of synchronous activity within nearly any

patch of cortex will be widespread on the scalp. Any

electrode will therefore sum contributions of EEG

sources in a large portion of cortex. EEG source

contributions to scalp electrode potentials depend on

source strengths and orientations as much as source

locations. The scalp projections of actual brain EEG

sources, therefore, are nearly always overlapping and

non-orthogonal, contrary to the assumption of PCA.

Indeed, because of the spatial orthogonality constraint,

projections of smaller principal components to the

scalp typically resemble checkerboard maps that could

not represent coherent activity within a connected

patch of cortex.

Therefore, to find biologically plausible sources, PCA

must be followed by an axis rotation procedure.

Previously proposed procedures, such as Promax and

Varimax, were drawn from the factor analysis

literature. ICA can be viewed as a more powerful

rotation method, though in practice ICA is usually

applied to the original data without PCA pre-

processing (for details, see Makeig et al., 1999). ICA

seeks to find component time courses that are mutually

independent, meaning that component cross-

correlations as well as all the higher-order moments of

the signals are zero. ICA is free to adapt to the actual

projection patterns of EEG generators if their activity

time courses are (near) independent of one another.

ICA is now being applied to many biomedical signal

processing problems including decomposing fMRI data

(Duann et al., 2002b) and speech and noise separation

(Park et al., 1999). Performing ICA decomposition is

most appropriate when sources are linearly mixed in

the recorded signals, without differential time delays.

These assumptions are precisely met for brain (and

non-brain) generator processes summed by volume

conduction in scalp EEG data. Because ICA does not

attempt to maximize the variance of each component,

ICA components may account for more equal portions

of the total signals than PCA components. For

example, in 32-channel decompositions ICA

component activities typically account for near 0% to

about 5% of the total signals. ICA may usefully be

applied to data with 128 or 256 channels, though

meaningful results are also possible using 32 or fewer

channels (Makeig et al., 2002).

Some earlier studies applied ICA to collections of ERP

data averages (Makeig et al., 1997; Makeig et al.,

1999). However, this approach requires care and

caution in interpretation of results. To separate two or

more processes, ICA requires that their independence

be expressed in the data. A small set of data averages

may not include enough conditions in the training set to

demonstrate the independence of the underlying

processes. If, for example, several processes are

partially phase reset in similar ways, the resulting

event-locked response averages may not express their

underlying functional and temporal independence. Data

averages, by their nature, contain sums of activities

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 6

FIG. 4. Visualizing independent components. (A) Topographical 2-D scalp maps of the nine independent components (ICs) accounting for the

most EEG variance of the 32 components returned by the ICA algorithm for the sample dataset. The component scalp map values returned by

ICA are proportional to µV (scaling is distributed between the component maps and activity time courses). From its far-frontal scalp map, IC3

appears to account for eye movement artifacts. (B) The ‘Component Properties’ display for IC3 verifies that it accounts for eye artifacts since its

activity spectrum is smoothly decreasing (bottom panel), and prominent eye movement artifacts appear in its activity ERP image (top right

panel). By removing this and other eye movement components (not shown) from the dataset, the user can remove most evidence of eye

movements from the data without removing other activity of interest (Jung et al., 2000).

occurring at similar latencies relative to some class of

events. When two or more sources invariably

contribute to a set of response averages at the same

latency, ICA, trained on these averages, may assign

their summed activities to a single component. Trained

on the unaveraged data however, ICA may use their

relative variability in single trials to separate them. A

second problem with applying ICA to data averages is

that the averaging process nearly cancels out the

activity of many of the EEG sources. Thus applying

ICA to the unaveraged EEG data also allows ICA to

separate ongoing activity of EEG sources even if they

are only partially phase-locked for brief time periods.

This is most useful when there are a sufficient number

of channels to fit the most active EEG and artifact

processes.

Theoretical assumptions underlying the use of ICA to

decompose EEG data include: (1) The data must

contain enough data points for the temporal

independence of the underlying sources to be expressed

(see Discussion). (2) No electrode activity should be a

linear mixture of other electrode activities (as may

occur for, e.g., average-reference data). If so, before

running ICA training, EEGLAB runica() function

automatically performs PCA pre-processing to reduce

the number of data dimensions to the rank of the input

data. (3) ICA assumes that each data source is spatially

stationary throughout the training data. This restriction

may be partially relaxed in more recent ICA methods

(Anemüller et al., 2003). (4) ICA assumes that the

distributions of activation values for each EEG source

are not precisely Gaussian. When a source distribution

is sub-Gaussian (e.g., as with line noise), the extended

option of infomax ICA must be used to separate it. The

current distribution of EEGLAB therefore focuses on

applying ICA directly to continuous EEG data or,

typically, to concatenated collections single EEG data

trials. Fig. 4 illustrates the use of infomax ICA applied

to the 80 EEG epochs of the EEGLAB sample dataset.

The lower the component index returned from runica(),

the more EEG data (neural and/or artifactual) it

accounts for.

To determine which components are behaviorally

relevant and should be selected for further

investigation, EEGLAB allows the user to plot

component contributions to the raw data spectrum

and/or to the trial-average ERP at all (or specified)

channels. Fig. 5(A) shows component contributions at

an alpha frequency to channel POz during the sample

epochs. The function returns the amount contributed by

each component as a percentage of total data power.

Another EEGLAB function for estimating component

contributions to the data, depicted in Fig. 5(B), shows

component contributions to the trial-average ERP in

the -500 to 1000 ms latency range. These and other

visualization functions help users to select which

components to process further using ERP-image

plotting (as described above) or using a variety of

spectral decomposition techniques (discussed below).

4. Time/frequency analysis

To assess event-related spectral amplitude, phase and

coherence perturbations in data recorded from single

electrodes and/or in ICA components, EEGLAB

employs custom spectral decomposition techniques.

Our primary measures are the baseline or epoch-mean

power spectrum and three event-related time/frequency

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 7

FIG. 5. Evaluating independent component contributions. (A) An EEGLAB spectopo() plot showing the components accounting for the

largest portions of 10-Hz activity at electrode POz (middle scalp map). The figure shows the power spectrum of the selected channel (top black

trace), the activity spectra of the projection to that channel of each of the 32 components (lower traces), and the scalp power maps of the four

largest-contributing components (4, 5, 7, 10). (B) An envtopo() plot showing the envelopes (i.e., the min and max values, over all channels, at

each time point) of the five independent components making the largest potential contributions to the ERP. The black thick traces show the

envelope of the (all channel) ERP data and the thin traces, the envelopes of the depicted component contributions to the ERP.

measures: (1) the event-related spectral perturbation

(ERSP), measuring mean event-related changes in the

power spectrum at a data channel or component

(Makeig, 1993), (2) inter-trial coherence (ITC

magnitude and phase, also called phase-locking factor)

at single channels or components, and (3) event-related

cross-coherence (ERCOH, magnitude and phase)

between two data channels or components.

ERSP. Plots of the baseline-normalized spectrogram or

the event-related spectral perturbation (ERSP) are

increasingly used in the EEG literature to visualize

mean event-related changes in spectral power over time

in a broad frequency range. They generalize the

narrow-band event-related desynchronization (ERD)

and synchronization (ERS) measures introduced by

Pfurtscheller and colleagues (Pfurtscheller and

Aranibar, 1979).

Calculating an ERSP requires computing the power

spectrum over a sliding latency window then averaging

across data trials. The color at each image pixel then

indicates power (in dB) at a given frequency and

latency relative to the time locking event. Typically,

for n trials, if ),( tfFk is the spectral estimate of trial

k at frequency f and time t

∑

=

=

n

k

ktfF

n

tfERSP

1

2

),(

1

),( (1)

To compute ),( tfFk EEGLAB uses either the short-

time Fourier transform, a sinusoidal wavelet (short-

time DFT) transform, or a Slepian multitaper

decomposition (Thompson, 1982) that provides a

specified time and frequency resolution. In our

experience, there are no dramatic differences between

these decompositions (though the number of cycles in

each data window can be critical). Most often we use a

version of sinusoidal wavelets in which the number of

cycles is increased slowly with frequency (Fig. 6). This

feature allows us to obtain better frequency resolution

at higher frequencies than a conventional wavelet

approach that uses constant cycle length. This method

is also better matched to the linear scale we use to

visualize frequencies. To visualize power changes

across the frequency range, we subtract the mean

baseline log power spectrum from each spectral

estimate, producing the baseline-normalized ERSP.

Significance of deviations from baseline power is

assessed using a bootstrap method. A surrogate data

distribution is constructed by selecting spectral

estimates for each trial from randomly selected latency

windows in the specified epoch baseline (e.g., prior to

stimulus onset), and then averaging these. Applying

this process several hundred times (default: N=200)

produces a surrogate ‘baseline’ amplitude distribution

whose specified percentiles are then taken as

significance thresholds. If sufficient pre-stimulus data

are not available, the surrogate data may be drawn

from any other part or from the whole epoch. Figs.

6(A) and 6(B) show significant ERPS phenomena for

two independent EEG components.

ITC. Inter-Trial Coherence (ITC) is a frequency-

domain measure of the partial or exact synchronization

of activity at a particular latency and frequency to a set

of experimental events to which EEG data trials are

time locked. The measure was introduced by Tallon-

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 8

FIG. 6. Time/frequency decompositions of independent component activities. Time/frequency decomposition was applied to the activities of

two independent EEG components using sinusoidal wavelet transforms, 3 cycles in length at the lowest frequency (6 Hz), increasing linearly

with frequency up to 9 cycles at the highest plotted frequency (35 Hz). Using this approach, it is possible to obtain reasonable time and frequency

stability at all frequencies. (A-B) Event-related spectral perturbation (ERSP) plots showing mean changes in spectral power during the epoch,

relative to a 1-s pre-stimulus baseline (plotted vertically on the left). Component IC4 shows a transient increase near 12 Hz centered at 500 ms,

while component IC9 shows a power decrease in this range following 500 ms. (C-D) Phase cross-coherence (ERPCOH) magnitude and phase

delay between the two components shown in panels A-B, zero-masked in regions in which cross-coherence magnitude was not significant

(p>0.01). The components appear to become partially synchronized above 10 Hz (coherence ≤ 0.53) during the period 400 to 1000 ms with a

phase offset near -120 degrees. Under the minimum phase assumption, this implies that high-alpha activity of IC9 tends to lead that of IC4

during this period by about 30 ms.

Baudry et al. (1996) and termed a ‘phase locking

factor.’ The term ‘inter-trial coherence’ refers to its

interpretation as the event-related phase coherence

(ITPC) or event-related linear coherence (ITLC)

between recorded EEG activity and an event-phase

indicator function (e.g. a Dirac or cosine function

centered on the time locking event). Using the same

notation as above

Inter-trial phase coherence (2)is defined by

∑

=

=

n

kk

k

tfF

tfF

n

tfITPC

1),(

),(1

),(

and Inter-trial linear coherence (3) by

∑

∑

=

=

=n

k

k

n

i

k

tfFn

tfF

tfITLC

1

2

1

),(

),(

),(

where represents the complex norm. The most

common (and default) version is inter-trial phase

coherence (called ‘phase-locking factor’ by Tallon-

Baudry et al., (1996)). The ITC measure takes values

between 0 and 1. A value of 0 (not expected in practice

based on a finite number of epochs) represents absence

of synchronization between EEG data and the time-

locking events; a value near 1 indicates their perfect

synchronization (i.e. near perfect EEG phase

reproducibility across trials at a given latency). In the

complex 2-D Cartesian coordinate frame, spectral

estimates at given frequencies and times are returned as

complex vectors in the 2-D phase space. The norm and

phase angle of each vector are represented by the

magnitude and phase of the spectral estimate. To

compute inter-trial phase coherence (ITPC), we first

normalize the lengths of each of the trial activity

vectors to 1 and then compute their complex average.

Thus, only the information about the phase of the

spectral estimate of each trial is taken into account.

For linear inter-trial coherence (ITLC), the initial

normalization step is omitted: the vector sum is

computed and then normalized by RMS power in the

single-trial estimates. EEGLAB function erpimage()

computes ITPC at a single frequency for display

beneath an ERP image (Fig. 3(C)); function timef()

computes color-coded ITPC or ITLC images across

frequencies (not shown). As for the ERSP, ITC

significance levels are assessed using surrogate data by

randomly shuffling the single-trial spectral estimates

from different latency windows during the baseline

period.

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 9

ERCOH. EEGLAB function crossf() computes event-

related coherence (ERCOH) between two channel or

component activities in sets of trials to determine the

degree of synchronization between the two activity

measures. As for ITC, both phase coherence

(ERPCOH) and linear coherence (ERLCOH) measures

are supported. Other phase coherence measures have

not (yet) been included in EEGLAB (e.g., Lachaux et

al., 1999). In EEGLAB, for two signals, a and b, and

using the same notation as above

Phase cross-coherence (4) is defined by

∑

=

=

n

kb

k

a

k

b

k

a

k

ba

tfFtfF

tfFtfF

n

tfERPCOH

1

*

,

),(),(

),(),(1

),(

and linear cross-coherence (5) by

∑∑

∑

==

=

=n

k

b

k

n

k

a

k

b

k

n

k

a

k

ba

tfFtfF

tfFtfF

tfERLCOH

1

2

1

2

*

1

,

),(),(

),(),(

),(

Here, *

),( tfF b

k is the complex conjugate of

),( tfF b

k. The magnitude of cross-coherence varies

between 0 and 1, a value of 0 again indicating a

complete absence of synchronization at the given

frequency f in the time window centered on t, and 1

indicating perfect synchronization. As for ITPC, the

normalizing factor in the ERPCOH denominator

ensures that only the relative phase of the two spectral

estimates at each trial is taken into account. Linear

ERCOH (ERLCOH), by contrast, estimates the extent

of complex linear relationship between the two signals

(proportional amplitudes at a fixed delay).

When ERCOH magnitude (i.e., norm of the complex-

valued ERCOH vector) is significantly above its

expected baseline value, the phase of the ERCOH

vector may indicate, under the minimum phase

assumption, which of the two component activities

tends to lead the other at the analysis frequency. The

minimum phase assumption means that the actual

phase lag is les than ±180°. Fig. 6(C) illustrates

significant ERPCOH synchronization between two

components. Even though independent components

were identified by ICA as being (maximally)

independent over the whole time range, they may

exhibit partial but statistically significant

synchronization, within specific event-related

time/frequency windows (Delorme et al., 2002). Here

again, crossf() can assess significance of the observed

ERCOH using the method of surrogate data by

computing the expected ERCOH distribution using

randomly selected data windows from the ‘baseline’

portion of each epoch. Different surrogate data

selection methods are used to estimate ERCOH for the

two processes, either including or excluding any

common spectral amplitude changes and/or partial

phase-locking related to the time-locking experimental

events. These four methods are referred to in EEGLAB

as linear or phase coherence, with or without removal

of common ITC. The preferable method may depend

on several factors that we do not detail here.

5. Menu calls and script writing

The EEGLAB graphic user interface (GUI) is designed

to allow non-experienced Matlab users to apply

advanced signal processing techniques to their data.

However, more experienced users can also use the GUI

to save time in writing custom and/or batch analysis

scripts in Matlab by incorporating menu shortcuts and

EEGLAB history functions. Table I provides examples

of EEGLAB scripts of different levels of complexity.

EEGLAB functions may be roughly divided into three

layers designed to increase ease-of-use for different

types of users:

I. GUI-based use. Naive Matlab users may choose to

interact only with the main EEGLAB window menu,

first to import data into EEGLAB (in any of several

supported formats), and then to call any of a large

number of available data processing and visualization

functions by selecting main-window menu items

organized under five headings: ‘File’ menu functions

read/save data file and data information files. ‘Edit’

menu functions allow editing a dataset, changing its

properties, reviewing and modifying its event and

channel information structures. ‘Tools’ menu functions

extract epochs from continuous data (or sub-epochs

from data epochs), perform frequency filtering,

baseline removal, and ICA, and can assist the user in

performing semi-automated artifact data rejection

based on a variety of statistical methods applied to

activity in the raw electrode channels or their

independent components. ‘Plot’ menu functions allow

users to visualize the data in a variety of formats, via

(horizontally and vertically) scrolling displays or as

trial (ERP), power spectrum, event-related

time/frequency averages, etc. A large number of

visualization functions are dedicated to the display and

review of properties of scalp data channels and

underlying independent data components. The user can

make use of standard Matlab capabilities to edit, print,

and/or save the resulting plots in a variety of formats.

Finally, the user can use ‘Help’ menu functions to call

up documentation on EEGLAB functions and data

structures.

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 10

1. >> pop_erpimage(EEG);

2. >> figure; pop_erpimage(EEG, 1, [1], [], 'Channel 1

erpimage', 10, 1);

3. >> erpimage(EEG.data(1,:), ones(1, EEG.trials ) *

EEG.xmax * 1000, linspace( EEG.xmin * 1000,

EEG.xmax * 1000, EEG.pnts), 'Channel 1 ERP

image', 10, 1, 'topo', {1 EEG.chanlocs }, 'erp',

'cbar');

TABLE I. Sample EEGLAB processing scripts. All scripts assume

that the Matlab data structure ‘EEG’ contains the sample EEGLAB

dataset (described in the EEGLAB tutorial and available for

download). Script 1 calls the EEGLAB (‘pop’) interface function

that in turn calls the erpimage() processing function to compute and

draw an ERP image plot (Jung et al., 1999; Makeig et al., 1999) of a

selected single-channel time record for each trial. Additional plotting

parameters can then be entered manually by the user in the resulting

pop-up window. Script 2 performs the same action, but now the

ERP-image ‘pop’ function is called with specific arguments. The

ERP-image plot then appears directly, with no intervening ‘pop’

window. Each time the user selects an operation from the EEGLAB

menu, the resulting Matlab function call (including all input

parameters) is appended to the EEGLAB session command history.

Subsequently, the user can simply copy and paste commands from

the command history to repeat the same actions. Thus, in Script 3,

the ‘pop’ ERP-image function is bypassed and the eponymous

EEGLAB data processing function, erpimage(), is called directly by

the user script referencing parameters stored in the EEG data

structure. The erpimage() function requires no knowledge of the

EEG data structure used by EEGLAB, and can be applied to any

user-defined data array. If the user selects the supplied default

parameters in the pop_erpimage() pop-up data entry window, the

three scripts will all have the same effect. See the Matlab help

messages for the meaning of the pop_erpimage() and erpimage()

function arguments (also available as HTML pages linked to the

main EEGLAB website).

II. EEGLAB command history. Intermediate level users

may first use the menu to perform a series of data

loading, processing and visualization functions, and

then may take advantage of the EEGLAB command

history functions to easily produce batch scripts for

processing similar data sets. Every EEGLAB menu

item calls a Matlab function that may also be called

from the Matlab command line. These interactive

functions, called ‘pop’ functions, work in two modes.

Called without (or in some cases with few) arguments,

an interactive data-entry window pops up to allow

input of additional parameters. Called with additional

arguments, ‘pop’ functions simply call the eponymous

data processing function, without creating a pop-up

window. For example, function pop_erpimage() calls

erpimage(). When a ‘pop’ function is called by the user

by selecting a menu item in the main EEGLAB

window, the function is called without additional

parameters, bringing up its GUI pop-up window to

allow the user to enter computation parameters. When

the processing function is called by EEGLAB, its

function call is added as a command string to the

EEGLAB session history variable. By copying history

commands to the Matlab command line or embedding

them in Matlab text scripts, users can easily apply

actions taken during a GUI-based EEGLAB session to

a different data set. A comprehensive help message for

each of the ‘pop’ functions allows users to adapt the

commands to new EEG data.

III. Custom EEGLAB scripting. More experienced

Matlab users can take advantage of EEGLAB functions

and dataset structures to perform computations directly

on datasets using their own scripts that call EEGLAB

and any other Matlab functions while referencing

EEGLAB data structures. Since all the EEGLAB data

processing functions are fully documented, they can be

used directly. Experienced users should benefit from

using all three modes of EEGLAB processing: GUI-

based, history-based, and autonomously scripted data

analyses. Such users can take advantage of the data

structure (‘EEG’) in which EEGLAB datasets are

stored. The GUI interface uses a single Matlab

variable, a structure named ‘EEG’ that contains all

dataset information and is always available at the

Matlab command line. This variable can easily be used

and/or modified to perform custom signal processing or

visualizations. Finally, while EEGLAB ‘pop’ functions

(described above) assume that the data are stored in an

EEG data structure, most EEGLAB signal processing

functions accept standard Matlab array arguments.

Thus, it is possible to bypass the EEGLAB interface

and data structures entirely, and directly apply the

signal processing functions to data matrices.

6. Distribution, documentation and support

The EEGLAB toolbox is distributed under the GNU

General Public License (for details see

http://www.gnu.org/licenses/gpl.txt). The source code,

together with web tutorials and function description

help pages, is freely available for download from

http://sccn.ucsd.edu/eeglab/. As the toolbox currently

includes approximately 300 Matlab functions

comprising 50,000 lines of Matlab code, it is not

possible to describe all of its functionality in a journal-

length paper. An extensive user tutorial explains in

detail how to import and process data using EEGLAB,

including the derivation and evaluation of its

independent components. We also provide ‘Frequently

Asked Questions (FAQ)’ and ‘Known Bugs’ web

pages, a support email (eeglab@sccn.ucsd.edu), a

dedicated mailing list for software updates

(eelagbnews@sccn.ucsd.edu), and a discussion mailing

list (eeglablist@sccn.ucsd.edu) which currently reaches

over a thousand EEG researchers.

Open-source EEGLAB functions are not precompiled;

users can read and modify the source code of every

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 11

function. Each EEGLAB function is also documented

carefully using a standardized help-message format and

each function argument is described in detail with links

to related functions. We have attempted to follow

recognized best practice in software design for

developing EEGLAB. The source code of EEGLAB is

extensively documented and is internally under the

Linux revision control system (RCS), which allows us

to easily collaborate with remote researchers on the

development of new functions. Matlab allows

incremental design of functions, so adding new

features to a function can be easily accomplished while

preserving backward compatibility. The EEGLAB

history feature also makes it easy to generate test

scripts that we now launch nightly to maintain

EEGLAB stability.

DISCUSSION

We have developed EEGLAB, a complete interactive

environment for processing EEG (or MEG) data under

Matlab, to provide both standard and advanced EEG

processing functions developed in our own and other

laboratories. EEGLAB is strongly oriented towards

single-trial visualization techniques, ICA and event-

related time/frequency analysis. Because the software

was developed by and for ERP/EEG researchers, we

have taken care to make the data processing as

transparent as possible and to allow users to tune their

parameters as easily as possible. We will now briefly

review a few limitations of EEGLAB and, because the

methods incorporated into EEGLAB are not yet widely

practiced, some limitations of ICA applied to high-

density EEG data.

Limitations of time/frequency decomposition

Filtering methods implemented in EEGLAB take

advantage of linear filtering implemented in the Matlab

Signal Processing toolbox. One of drawback of using

linear filters is that the signal roll-off at the cut-off

frequency is weaker than what it would be using

nonlinear filters. However, with linear filtering, data

phase information is preserved across frequencies.

Time-frequency decomposition in EEGLAB is limited

to FFTs, multi-taper analysis, and a single type of

sinusoidal wavelet, as is standard for EEG analysis.

Other methods, for example the Hilbert method, are not

currently implemented. However quantitative

comparisons show that results on EEG data using

Hilbert transforms do not differ dramatically from

applying sinusoidal wavelets (Le Van Quyen et al.,

2001). Also, bi-coherence between frequencies cannot

yet be assessed within EEGLAB (e.g., von Stein and

Sarnthein, 2000; Lachaux et al., 2003). We intend in

the future to include functions to assess

synchronization (1) of phase at one frequency with

amplitude at another frequency, (2) of phase

synchronization between frequencies, and (3) of

amplitude correlation between frequencies. We

welcome further open source contributions

implementing other time-frequency approaches, and

have added an EEGLAB plug-in facility to promote

and ease development of such contributions.

Significance and statistical comparisons across

subjects or conditions

To assess significance of within-subject measures,

EEGLAB uses non-parametrical methods that do not

assume a known activity distribution. A null hypothesis

distribution, used to determine significance thresholds,

is estimated by accumulating surrogate data, shuffling

the data across latencies alone, latencies and trials, or

trials alone. To compensate for multiple comparisons,

significance thresholds may need to be decreased (e.g.

Bonferroni, 1950; Holm, 1979). Since it is not

reasonable to compute an unlimited amount of

surrogate data to estimate very low probability

thresholds heuristically, we have implemented a

method to fit the observed surrogate data distribution

using a fourth order distribution fit (Ramberg et al.,

1979). This feature will be available in a near-term

release of EEGLAB.

To test significance across conditions or subjects, we

either use parametrical tests or accumulated

significance results from each subject. Our ERP

function pop_comperp() currently uses a t-test to

compare two conditions for several subjects. When

processing spectral decompositions of one channel (or

component class) from different subjects (already been

masked for significance), our tftopo() function applies

a threshold derived by simple statistics on the number

of subjects for which the spectral decomposition is

significant at a give time-frequency point. If not

enough subjects show a significant change at the

specified point, this point is considered non-significant

in the group average. This is a statistically conservative

approach. For further statistical assessment, raw data,

ERP, or independent component weights and activity

can be exported as ASCII to statistical packages such

as Statview (SAS Institute Inc.), SPSS (SPSS Inc.), or

the Matlab Statistics Toolbox (The Mathworks, Inc.).

ICA Stability

Because the infomax ICA algorithm begins with a

random unmixing matrix and then randomly shuffles

the order of the data time points before each training

step, the results of successive ICA decompositions may

be slightly different even when ICA is performed on

the same data. In particular, the scalp maps and activity

time courses of the independent components (and their

order), may differ slightly across runs. Therefore, we

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 12

advise that features of the decomposition that do not

remain stable across decompositions of the same data

should not be interpreted except as irresolvable ICA

‘uncertainty.’ Differences between decompositions

trained on somewhat different data subsets may have

additional causes. We are currently investigating the

stability of ICA methods applied to typical datasets

(Delorme et al., in preparation).

Difference between ICA algorithms

Which is the best ICA algorithm to use for EEG

decomposition? From a theoretical point of view, all

ICA algorithms maximize independence in an

approximate sense (Lee et al., 2000), while the degree

to which EEG data actually fit ICA assumptions is

unknown. Applied to simulated, relatively low

dimensional data sets for which the ICA assumptions

are exactly fulfilled, leading ICA algorithms (including

infomax, JADE, and FastICA) return near-equivalent

components. However, the physiological significance

of any differences in the results of the same or different

ICA algorithms (or of different parameter choices for

the various algorithms) has not been systematically

tested and reported - neither by us nor, as far as we

know, by others. Therefore, different ICA

decompositions may give slightly different results, as

has been shown for neural ensemble data (Laubach et

al., 1999) and fMRI data (Duann et al., 2001; Esposito

et al., 2002). Each ICA algorithm has its own

particularities. The infomax algorithm in its native

form can only separate sources with super-Gaussian

(i.e. peaky, thick-tailed) activity distributions. If there

are strong electrical artifacts in data, it is preferable to

use the ‘extended’ ICA option of runica() (Lee et al.,

1999), to allow the algorithm to detect sources with

sub-gaussian activity distribution, such as line current

artifacts and/or slow activity.

Whereas infomax implicitly uses a combination of

higher-order moments of the data to find independent

components, the JADE algorithm (Cardoso and

Souloumiac, 1993) diagonalizes all the fourth-order

moments explicitly. Although for low numbers of data

channels the JADE algorithm is fast and stable, the

memory required to manipulate all the fourth-order

moments becomes quite impractical with high numbers

of channels. Whereas both infomax and JADE

algorithms find and return all the independent

components at once, the default setting of the fixed-

point ICA algorithm of Hyvärinen (2000) computes

and returns components one by one. The order of the

components it returns, however cannot be known in

advance, and performing a complete decomposition is

not faster than with infomax. Also, in our experience

(see also Esposito et al., 2002) the fixed-point ICA

algorithm may be more less robust than infomax ICA

when applied high-dimensional real data. To

decompose EEG data, therefore, we most often use

infomax or extended infomax ICA. The infomax

algorithm reliably finds independent components that

are physiologically plausible, functionally distinct, and

often have spatial and functional similarities across

data sets, sessions, and subjects (Delorme et al., 2002;

Makeig et al., 2002).

Insufficient data for running ICA

A chief case in which ICA algorithms may not return

reliable results is when too few data are provided to

them. ICA being a statistical method, if the

independence of the functionally distinct EEG

processes is not adequately exhibited in the data, ICA

cannot separate them.

The size of the weight matrix being the square of the

number of channels, a number of time points at least a

few times the square of the number of channels is

usually needed to obtain reliable decompositions.

These data points may be drawn from continuous data

or from several data epochs Of course, additional data

points can only improve the decomposition - when and

if relative stationarity of the spatial structure of the

EEG sources set can be assumed.. In our experience,

using short baseline-zeroed data epochs that include

task-related behavior may give qualitatively more

consistent results than using longer data epochs. Using

short epochs constrains ICA to focus on the task-

relevant portion of the data.

Nonlinearities

Another case in which ICA will fail to extract all the

involved sources occurs when the data are not a linear

sum of the underlying source projections – this chiefly

occurs when the amplifiers become ‘railed’ at high

signal levels, leading to signal ‘clipping’, or when high

signal levels exceed the input range of the A/D

converter, leading to signal ‘wrap-around.’ In either

case, the severe nonlinearity involved will cause linear

ICA algorithms to give spurious results, so such data

epochs must be carefully rejected from the data before

running ICA.

Noise

Finally, when the data contains many more strong

spatial sources than the number of recording channels,

the additional sources must be mixed into the output

components. In particular, this may occur during

‘paroxysmal’ noise which may for instance be

introduced into EEG data during strong head

movements. Else, a loose electrode may introduce a

large noise signal not linearly related to any of the

other electrode signals. In this case, ICA may dedicate

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 13

a single component to the electrode noise, thus

unnecessarily reducing the number of components

available to separate other neural and artifact sources.

Therefore, we find it best to train ICA on carefully

pruned ‘clean’ data epochs, which can, however, retain

spatially stereotyped artifact activity such as eye blinks

and eye movements, repeated muscle activity, etc.

Processing speed

Matlab offers a powerful environment for processing

biophysical data because of (1) the simplicity of its

command line language, (2) the many Matlab functions

made available by The Mathworks, Inc and by

independent researchers, and (3) its high-level

visualization capabilities. However, there are two

possible problems in using Matlab for processing EEG

data. First, though ever-increasing speed of current

workstations continues to make processing time of less

limiting importance for data analysis, interpreted

computer languages are inherently slower than

compiled languages. Matlab has facilities for compiling

and running binary versions of scripted functions, but

their speed may still be suboptimal. For this reason, we

converted to C the most time consuming EEGLAB

function, runica(). Both the Matlab ICA function -

runica() - and the binary C-language ICA function -

binca() - can be called from the EEGLAB GUI. Under

Matlab v4, we observed a speed-up of about 10 for

binica() compared to runica(). However, under Matlab

v6 the speed-up factor seems to be much smaller

(<100%). Most other EEGLAB functions are less

compute intensive.

Memory requirements

Another relative disadvantage of using Matlab to

process high-density EEG data is that Matlab currently

converts all floating-point numbers to 64-bit double-

precision, thus requiring large amounts of main

memory to process large data sets. Though hopefully

some future Matlab versions may allow the option of

processing data in 32-bit floating-point format, we

have taken care to address this issue in EEGLAB by

including various options to minimize memory usage,

such as constraining EEGLAB to work on a single

dataset, or computing the ‘activation’ time courses of

independent components only as needed. However, this

issue remains a serious problem for large datasets:

parts of the toolbox may have to be updated to allow

very large (e.g., long 256-channel) datasets to be

analyzed within the current Linux 2GB/process limit.

One possibility is to use the Matlab MEX language, an

interface between C and Matlab that allows a wider

variety of data types including single precision.

Another possibility is to have EEGLAB load into main

memory only a part of the dataset at a time. However,

as 64-bit processors become more available, the current

data space limits of operating systems and Matlab

should increase, in which case the remaining problem

would only be the burden of purchasing the necessary

RAM.

Current development of EEGLAB focuses on

processing of large datasets (>1 Gb), semi-

automatically grouping independent component across

subjects, and component source localization. EEGLAB

will also be linked to our FMRLAB toolbox

(http://www.sccn.ucsd.edu/fmrlab) to process

simultaneously recording EEG and fMRI data (Duann

et al., 2002a). We also have begun working with co-

developers to increase the range of EEGLAB functions

using the ‘plug-in’ facility, whereby contributors may

easily contribute optional EEGLAB code that is readily

incorporated into the EEGLAB menu. The plug-in

facility is designed so that plug-in functions can be

used and distributed both within EEGLAB and

independently. By this mechanism we hope to

encourage the open source development of

comprehensive EEG (and MEG) signal processing

tools under EEGLAB.

ACKNOWLEDGEMENTS

The authors acknowledge the contributions to

EEGLAB and its hundreds of functions by many

contributors. Principal among these were Colin

Humphries, who wrote the topographic plotting

functions and the first version of the data scrolling

display function, Sigurd Enghoff, who wrote the first

versions of the time/frequency functions and translated

the MATLAB-coded runica() infomax ICA function to

binary, and Tzyy-Ping Jung, who contributed the first

version of the erpimage() function. The runica()

function itself was written by one of us (SM) building

on core ICA code contributed by Tony Bell and Te-

won Lee. Several other members of the Computational

Neurobiology Laboratory at The Salk Institute

contributed other functions. We gratefully

acknowledge the support, collaboration and

encouragement of Terrence Sejnowski at Salk Institute

throughout this research process. We thank Stefan

Debener and anonymous reviewers for suggestions on

this report, which was supported by the National

Institutes of Health USA and by The Swartz

Foundation.

Journal of Neuroscience Methods 134 (2004), 9-21

Delorme and Makeig 14

References

Anemüller J, Sejnowski TJ, Makeig S. Complex Independent

Component Analysis of Frequency-Domain

Electroencephalographic Data. Neural Networks, 2003; in press.

Amari S-I, Cichocki A, Yang HH. A new learning algorithm for

blind source separation. Adv. Neural Inf. Process. Syst., 1996; 8:

757-63.

Baillet S, Mosher JC, Leahy RM, Shattuck DW. BrainStorm: a

Matlab Toolbox for the Processing of MEG and EEG Signals.

Proceedings of the 5th Int. Conf. on Human Brain Map.,

Neuroimage, 1999; 9: 246.

Bell AJ, Sejnowski TJ. An information-maximization approach to

blind separation and blind deconvolution. Neural Comput., 1995;

7: 1129-59.

Bressler SL, Freeman WJ. Frequency analysis of olfactory system

EEG in cat, rabbit, and rat. Electroencephalogr. Clin.

Neurophysiol., 1980; 50: 19-24.

Bonferroni CE. Sulle medie multiple di potenze. Bollettino

dell’Unione Matematica Italiana, 5 third series, 1950; 267–70.

Cardoso J-F, Souloumiac A. Blind beamforming for non gaussian

signals. IEE-Proc.-F, 1993; 140: 362-70.

Delorme A, Makeig S, Fabre-Thorpe M, Sejnowski T. From Single-

trials EEG to Brain Area Dynamics. Neurocomputing, 2002; 44-

46: 1057-64.

Delorme A, Makeig S. EEG changes accompanying learning

regulation of the 12-Hz EEG activity. IEEE Transactions on

Rehabilitation Engineering, 2003; 11: 133-6.

Duann JR, Jung TP, Makeig S, Sejnowski TJ. fMRLAB: An ICA

Toolbox for fMRI Data Analysis. In: Human Brain Mapping,

2002; Sendai, Japan.

Duann JR, Jung TP, Kuo WJ, Yeh S, Makeig S, Hsieh JC, Sejnowski

TJ. Measuring the variability of event-related BOLD signals. In:

Third International Workshop on Independent Component

Analysis and Signal Separation, 2001; San Diego, USA.

Duann JR, Jung TP, Kuo WJ, Yeh TC, Makeig S, Hsieh JC,

Sejnowski TJ. Single-trial variability in event-related BOLD

signals. Neuroimage, 2002b; 15: 823-35.

Esposito F, Formisano E, Seifritz E, Goebel R, Morrone R, Tedeschi

G, Di Salle F. Spatial independent component analysis of

functional MRI time-series: to what extent do results depend on

the algorithm used? Hum. Brain Mapp., 2002; 16: 146-57.

Friston KJ. Statistical parametric mapping: Ontology and current

issues. J. Cereb. Blood Flow Metab., 1995; 15: 361-70.

Holm S. A simple sequentially rejective multiple test procedure.

Scandinavian Journal of Statistics, 1979; 6: 65-70.

Hyvarinen A, Oja E. Independent component analysis: algorithms

and applications. Neural Netw., 2000; 13: 411-30.

Jung TP, Makeig S, Westerfield M, Townsend J, Courchesne E,

Sejnowski TJ. Analyzing and Visualizing Single-trial Event-

related Potentials. Adv. Neural Inf. Process. Syst., 1999; 11: 118-

24.

Jung TP, Makeig S, Westerfield M, Townsend J, Courchesne E,

Sejnowski TJ. Analysis and visualization of single-trial event-

related potentials. Hum. Brain Mapp., 2001; 14: 166-85.

Jung TP, Makeig S, Humphries C, Lee TW, McKeown MJ, Iragui V,

Sejnowski TJ. Removing electroencephalographic artifacts by

blind source separation. Psychophysiology, 2000; 37: 163-78.

Lachaux JP, Rodriguez E, Martinerie J, Varela FJ. Measuring phase

synchrony in brain signals. Hum. Brain Mapp., 1999; 8: 194-208.

Lachaux JP, Chavez M, Lutz A. A simple measure of correlation

across time, frequency and space between continuous brain

signals. J Neurosci Methods, 2003; 123: 175-88.

Laubach M, Shuler M, Nicolelis MA. Independent component

analyses for quantifying neuronal ensemble interactions. J.

Neurosci. Methods, 1999; 94: 141-54.

Le Van Quyen M, Foucher J, Lachaux J, Rodriguez E, Lutz A,

Martinerie J, Varela FJ. Comparison of Hilbert transform and

wavelet methods for the analysis of neuronal synchrony. J

Neurosci Methods, 2001; 111: 83-98.

Lee TW, Girolami M, Sejnowski TJ. Independent component

analysis using an extended infomax algorithm for mixed

subgaussian and supergaussian sources. Neural Comput., 1999;

11: 417-41.

Lee TW, Girolami M, Bell AJ, Sejnowski TJ. A Unifying

Information-theoretic Framework for Independent Component

Analysis. Comput. Math. Appl., 2000; 31: 1-21.

Makeig S. Auditory event-related dynamics of the EEG spectrum and

effects of exposure to tones. Electroencephalogr. Clin.

Neurophysiol., 1993; 86: 283-93.

Makeig S. Response: Event-related brain dynamics - unifying brain

electrophysiology. Trends Neurosci., 2002; 25: 390.

Makeig S, Bell AJ, Jung TP, Sejnowski TJ. Independent component

analysis of electroencephalographic data. In Touretzky D, Mozer

M, Hasselmo M, editors. Adv. Neural Inf. Process. Syst., 1996; 8:

145-51.

Makeig S, Jung TP, Bell AJ, Ghahremani D, Sejnowski TJ. Blind

separation of auditory event-related brain responses into

independent components. Proc. Natl. Acad. Sci. U.S.A., 1997; 94:

10979-84.

Makeig S, Westerfield M, Jung TP, Covington J, Townsend J,

Sejnowski TJ, Courchesne E. Functionally independent

components of the late positive event-related potential during

visual spatial attention. J. Neurosci., 1999; 19: 2665-80.

Makeig S, Westerfield M, Jung TP, Enghoff S, Townsend J,

Courchesne E, Sejnowski TJ. Dynamic brain sources of visual

evoked responses. Science, 2002; 295: 690-4.

Makeig S et al. Matlab Toolbox for analysis of electrophysiological

data. http://www.cnl.salk.edu/~scott/ica.html, 1997.

Neuenschwander S, Varela FJ. Visually triggered neuronal

oscillations in the pigeon: an autocorrelation study of tectal

activity. Eur. J. Neurosci., 1993; 5: 870-81.

Park H-M, Jung H-Y, Lee T-W, Lee S-Y. On Subband-Based Blind

Signal Separation for Noisy Speech Recognition. Electronic

Letters, 1999; 35: 2011-2.

Pauluis Q, Baker SN, Olivier E. Emergent oscillations in a realistic

network: the role of inhibition and the effect of the spatiotemporal

distribution of the input. J. Comput. Neurosci., 1999; 6: 27-48.

Pfurtscheller G, Aranibar A. Evaluation of event-related

desynchronization (ERD) preceding and following voluntary self-

paced movement.PG - 138-46. Electroencephalogr. Clin.

Neurophysiol., 1979; 46.

Ramberg JS, Dudewicz EJ, PTadikalama PR, Mykytka EF. A

probability distribution and its uses in fitting data. Technometrics,

1979; 21.

Rodriguez E, George N, Lachaux JP, Martinerie J, Renault B, Varela

FJ. Perception's shadow: long-distance synchronization of human

brain activity. Nature, 1999; 397: 430-3.

Tallon-Baudry C, Bertrand O, Delpuech C, Pernier J. Stimulus

specificity of phase-locked and non-phase-locked 40 Hz visual

responses in human. J. Neurosci., 1996; 16: 4240-9.

Thompson DJ. Spectrum estimation and harmonic analysis. IEEE

proc., 1982; 70: 1055-96.

von Stein A, Sarnthein J. Different frequencies for different scales of

cortical integration: from local gamma to long range alpha/theta

synchronization. Int J Psychophysiol, 2000; 38: 301-13.

Weiss S, Rappelsberger P. EEG coherence within the 13-18 Hz band

as a correlate of a distinct lexical organisation of concrete and

abstract nouns in humans. Neurosci. Lett., 1996; 209: 17-20.