Download COMPASS v1.2:
latest version built 11/09/12
Click here to download (redirect to sourceforge)


COMPASS is a MATLAB and EEGLAB based algorithm with the purpose of providing the user with a convenient technique for automatic Independent Component (IC) selection with respect to the contributions of the ICs to a certain ERP.

A documentation is being provided in the *.zip file, an evaluation of the algorithm can be found in

Wessel JR, Ullsperger M (2011). Selection of independent components comprising event-related potentials - A data driven approach for greater objectivity.NeuroImage 54 (3): 2105 - 2115

Basically, what an ICA does is separating a mixture of signals collected via multiple sensors into what are assumed to be the underlying 'independent components', or source signals. The assumption being made is that source signals have certain properties (e.g. non-gaussianity of the associated PDF or maximum joint entropy etc.) that sets them apart from signal mixtures. One can utilize statistical derivatives of these properties in order to analyze any mixture of signals, e.g. speech signals or scalp EEG.

For a vast coverage of ICA on EEG data, visit the EEGlab homepage ( and check out their tutorials to get acquainted with the concept. Also, you might want to read the following papers:

Onton J, Westerfield M, Townsend J, Makeig S. (2006). Imaging human EEG dynamics using independent component analysis.Neurosci Biobehav Rev. 30(6):808-22

Makeig S, Jung TP, Bell AJ, Ghahremani D, Sejnowski TJ. (1998). Blind separation of auditory event-related brain responses into independent components.Proc Natl Acad Sci U S A. 94(20):10979-84

The massive advantage of ICA (it being a Blind Source Separation method) is that it provides a data-driven solution for signal decomposition, based on purely statistical criteria.

Read more about it in these two books:

Stone JV (2004). Independent Component Analysis / A Tutorial Introduction.MIT Press

Hyvaerinen A, Karhunen J, Oja E (2001). Independent Component Analysis. John Wiley and Sons

In order to select Independent Components that represent meaningful parts of a signal (e.g. an Event-Related Potential), and subsequently be able to run analyses on them, researchers mostly rely on a priori assumptions regarding the nature of the IC (based on their knowledge of the ERP in question, e.g. about the topography, time range, frequency composition, polarity and other differential properties).

A number of publications which rely on this IC-based single-trial ERP scoring can be found here:

Debener S, Ullsperger M, Siegel M, Fiehler K, von Cramon DY, Engel AK (2005). Trial-by-Trial Coupling of Concurrent Electroencephalogram and Functional Magnetic Resonance Imaging Identifies the Dynamics of Performance Monitoring.The Journal of Neuroscience 25:11730-11737

Gentsch A, Ullsperger P, Ullsperger M (2009). Dissociable medial frontal negativities from a common monitoring system for self- and externally caused failure of goal achievement.Neuroimage 47:2023-2030.

Roger C, Benar CG, Vidal F, Hasbroucq T, Burle B (2010). Rostral Cingulate Zone and correct response monitoring: ICA and source localization evidences for the unicity of correct- and error-negativitiesNeuroImage

Eichele H, Juvodden HT, Ullsperger M, Eichele T (2010). Mal-adaptation of event-related EEG responses preceding performance errors.Front Hum Neurosci 4.

A top-down technique however, strips the ICA of one of its biggest advantages, namely being a data-driven procedure. COMPASS addresses the question of ERP based Independent Component selection in an 'as much as possible bottom up'-kind of way. The only necessary input (i.e. pre-assumption) that the user has to provide together with the files in question, is a certain time range in which the ERP happens.

Based on that, using a straightforward statistical approach, COMPASS automatically identifies the independent components significantly contributing to this timerange. No input about topography, polarity, frequency or other properties is necessary (though possible). Also, no more visuo-manual IC identification! A flowchart of the algorithm looks like this (click to enlarge)

If you have any suggestions as to the functions and possible implementations, please don't hesitate to write me an email!
I would be particularly interested in ideas on how to

> objectify the size and position of the search window

> find an alternative to the correlation approach to match in the time domain