Current Source Density (CSD) Interpolation using Spherical Splines

download CSD Toolbox zip archive (43 kB)

© 2003-2011 by Jürgen Kayser

Version 1.1

last updated: February 22, 2011

what's new in this versionoverview of toolbox contentdetailed revision history

Current Version:

( Original MatLab Code: / Original Montage Coordinates: ) CSD toolbox tutorial NYSPI Psychophysiology
common mistakes and errors
frequently asked questions FAQs


Purpose and Prerequisites

The CSD toolbox provides a MatLab implementation of a spherical spline algorithm (Perrin et al., 1989) to compute scalp surface Laplacian or current source density (CSD) estimates for surface potentials (EEG/ERP). Its successful use requires basic knowledge of (or willingness to learn about) electrophysiologic principles (e.g., EEG montage, 10-20-system, volume conduction) and rudimentary mathematics (e.g., fundamental algebra and geometry), as well as access to and basic knowledge of MatLab® software. Without these prerequisites, the use of the CSD toolbox is strongly discouraged.

Authorization and Disclaimer

This software, which is intended for non-profit scientific research, is copyright-protected under the GNU General Public License (see agreement at This applies to all MatLab functions and other content included in the CSD toolbox installation archive. The software is provided 'as is' with no warranty whatsoever. All responsibilities and consequences of using this software are completely with the user (you should know what you are doing). However, any attempt is made to revise and improve the software if bugs or problems are identified. For suggestions, bugs or any other related issues, please contact Jürgen Kayser (email:

Download and Installation

The CSD toolbox consists of a single zip archive. Download this installation archive and extract all files to a local folder on your hard drive while maintaining the archive's subfolder structure. Add this folder with its subfolders to the MatLab search path. A tutorial of how to use the CSD toolbox with EEG/ERP data is posted here. An ensemble of typical errors when applying a CSD transform to EEG/ERP data, along with suggestions of how to avoid them, can be found here. Finally, answers to frequently-asked-questions (FAQs) are given here.

Correct Citation Following Scientific and Ethical Conventions

The original MatLab code was developed in 2003 at the Psychophysiology Laboratory NYSPI Psychophysiology of New York State Psychicatric Institute ( and published as a citable appendix (also accessible here) to:

manuscript in pdf format Kayser, J., Tenke, C.E. (2006a). Principal components analysis of Laplacian waveforms as a generic method for identifying ERP generator patterns: I. Evaluation with auditory oddball tasks. Clinical Neurophysiology, 117(2), 348-368. doi:10.1016/j.clinph.2005.08.034

Please cite at least the above reference if you use this software for any published research.

If you use this software with a low-resolution EEG montage (i.e., less than 64 channels), you should also cite the companion paper to the above article, which is:

manuscript in pdf format Kayser, J., Tenke, C.E. (2006b). Principal components analysis of Laplacian waveforms as a generic method for identifying ERP generator patterns: II. Adequacy of low-density estimates. Clinical Neurophysiology, 117(2), 369-380. doi:10.1016/j.clinph.2005.08.033

The download and use of the CSD toolbox can be acknowledged by referencing its URL as:

Kayser, J. (2009). Current source density (CSD) interpolation using spherical splines - CSD Toolbox (Version 1.1) []. New York State Psychiatric Institute: Division of Cognitive Neuroscience.


The algorithm to interpolate scalp potentials and estimate scalp current densities using spherical splines was originally proposed and described in:

Perrin, F., Pernier, J., Bertrand, O., Echallier, J.F. (1989). Spherical splines for scalp potential and current density mapping. Electroencephalography and Clinical Neurophysiology, 72(2), 184-187. PMID: 2464490

However, the crucial equation for the CSD term contained an error that was corrected in:

Perrin, F., Pernier, J., Bertrand, O., Echallier, J.F. (1990). Corrigenda EEG 02274. Electroencephalography and Clinical Neurophysiology, 76, 565.

The CSD toolbox provides an implementation of theses algorithms in MatLab. To give appropriate credit, these original articles may also be cited in any publications benefitting from these ideas.

The implementation of the spherical angles for 330 extended 10-20-system scalp locations is based on:

Jurcak, V., Tsuzuki, D., Dan, I. (2007). 10/20, 10/10, and 10/5 systems revisited: their validity as relative head-surface-based positioning systems. NeuroImage, 34(4), 1600-1611. PMID: 17207640

During the original 2003 implementation of these algorithms at New York State Psychiatric Institute, Charles L. Brown III provided crucial feedback (acknowledging earlier advice by Patrick Berg at the University of Konstanz), and Craig E. Tenke was instrumental to overcome all quirky glitches and helped to validate the CSD transform. During the 2009 development of the CSD toolbox, Nathan A Gates and Craig E. Tenke invested valuable time in beta testing the (new) CSD toolbox functions and examples and during proof-reading of the these web pages. Since its initial release, several inquiries about the use of the CSD toolbox yielded valuable feedback as well as helpful additions to the frequently-asked-questions (FAQs) page. In July 2010, John J.B. Allen graciously provided sample scripts demonstrating how to use the CSD toolbox with EEGlab. However, the sole responsibility for developing and maintaining the MatLab code (along with the typical dose of bugs and glitches) lies with me, Jürgen Kayser. Please do not hesitate to contact me with all issues regarding this software (email: Any contributions to further develop the functionality of the CSD toolbox are welcome and will be considered as additions to future releases.

Background and Overview

When our research group decided to systematically apply surface Lapcian methods to electrophysiologic data, we needed a more efficient and flexible tool to compute scalp CSD estimates from surface potentials. While initially applying a local Hjorth to our data (e.g., Tenke et al., 1998), which can be derived from a simple linear derivation file constructed for a given EEG montage using NeuroScan software, a spherical model has the appeal of obtaining improved and more reliable estimates at the edge of the EEG montage. In 2003, we therefore implemented the spherical spline algorithm proposed by Perrin et al. (1989) using a Pascal compiler (Borland Delphi). Given our difficulties of correctly implementing this algortihm, and realizing that other labs may also suffer from easy access to this transformation, we published MatLab code of this algorithm as an the appendix of Kayser & Tenke (2006a). However, while this code has been successfully used by some research teams, others were still puzzled by the MatLab code, or how to modify it for their specific purposes. Given a renewed interests in these CSD methods, particularly after our symposium on the merits of the surface Laplacian held at the 15th International Congress on Event-related Potentials of the Brain (EPIC XV) in Bloomington, IN, April 22 – 25, 2009, we decided to provide more functionality in form of a MatLab toolbox, accompanied by a more detailed web page.


A growing number of publications have used the Perrin et al. (1989) spherical spline algorithm implemented in the CSD toolbox. An incomplete publication list of EEG and ERP studies can be found here. If you would like to have your published research included, just let us know (please send an email to: or