Protected parts |
last update september 2007OSortSpike sorting package "OSort" - an online spike sorting algorithm![]() Spike sorting is the process of attributing each action potential (spike) recorded with an electrode to a particular neuron. This way, it is possible to extract the signals of single neurons even if (as is usual) spikes from multiple units are recorded. Spike sorting is essentially an unsupervised clustering problem. One of the major problem is that it is at priori not known how many clusters there are. There are many approaches in the literature that solve this problem. However, most of these are either supervised (manual) and are computationally very expensive. In addition, these algorithms are batch processing algorithms - that is, all data must be available before they can run. We have large amounts of data acquired from many channels in parallel. Manual sorting is thus not an option. Also, we would like to develop experiments that adapt themself to the neural response in realtime. Thus we needed an algorithm that can sort spikes as they are recorded - spike by spike. The clusters are built and adapted iteratively over the course of the recording. Below you can find the implementation of our online spike sorting algorithm as well as various simulated and real datasets we used to evaluate the performance of our and other algorithms. A note of caution: spike sorting is a complicated process. While it is easy to just run this software on your data, it is important that you understand it's results and limits to avoid missinterpretation. Please consult the paper for details and make careful use of the statistical tests provided. The algorithm is documented in the following paper. Please cite it if you use our work. Online detection and sorting of extracellularly recorded action potentials in human medial temporal lobe recordings, in vivo U. Rutishauser, E. M. Schuman, A.N. Mamelak Journal of Neuroscience Methods, 2006, 154:204-224, 2006 (pdf). In the paper, we compare performance to the following two algorithms: Wave_clus, KlustaKwik The code includes functions to export data to this algorithms for easy comparison. For a general introduction to the problem of spike sorting, see the following review paper: Lewicki, M. S. (1998). "A review of methods for spike sorting: the detection and classification of neural action potentials." Network 9(4): R53-78. (pubmed) DocumentationPlease see the readme file included in the distribution for how to install OSort. It requires matlab, the statistics toolbox, signal processing toolbox and, for some cases, the wavelet toolbox. It runs on any platform that matlab runs on (I personally use it on linux and windows). DownloadsVersion 2.1 (matlab) (Released Sept07, minor bugfixes Dec07): Tutorial for v2, Code, Datasets, Source documentation (m2html) - online version Screenshot of v2: ![]() Version 1 (matlab):Data files (~250Mb) Code Please see the readme.txt file for documentation and installation instructions. The basic algorithm didn't change between version 1 and 2. However, version 2 includes a small GUI that is useful for adjusting parameters. However, in most cases we still prefer to use the command line version for automatic processing of data. Also, it includes additional methods for peak alignment and spike detection (wavelet based detection methods). Authors and Contact InfoWe welcome your feedback, suggestions, improvements etc. Please email urut (-at-) caltech.edu with any queries. OSort was initially written by Ueli Rutishauser, in collaboration with E.M. Schuman and A.N. Mamelak (all Caltech). The GUI was initially written by Matthew McKinley (MIT). Everything on this page is Copyright (c) 2004-2007 by the authors and the California Institute of Technology. This research has been funded by grants from the Gimbel Discovery Fund and the Howard Hughes Medical Institute. See the Schuman Laboratory webpage for more information. |