Spike sorting is a common pre-processing step in analysis of single or multi-unit responses. The goal of the procedure is to detect the times at which a single cell generated an action potential based on the extracellular recordings of electric potential close to the cell. In practice, multiple cells can be active simultaneously making it difficult to discriminate the responses of just a single cell. The standard way of doing it is to compare the shapes and amplitudes of detected extracellular spikes and group the ones which look similar (using automatic or manual clustering procedure). The assumption is that different spike shapes reflect acitivities of different cells. More on spike sorting can be found in an article from Scholarpedia.
There are dozens of different (commercial and free) software packages aimed at spike sorting. However, many of them are controlled via GUI interface making them very inflexible. Testing new algorithms or adding support for new data formats usually requires in depth knowledge of the source code of the package (if available) and time-consuming development of extensions (if possible).
Therefore, we developed a new spike sorting library based on dynamic and interactive language (Python) called SpikeSort. While it is still very early in development, it offers many standard and not-so-standard algorithm for spike detection, feature extraction and spike classification. The main design goals of the library is the flexibility and extendibility – user should be able to add new filters/algorithms/etc. without need to recompile or to understand the entire code base. We also put much effort to make working with SpikeSort very interactive and intuitive (a set of modules making it even more interactive will be released soon). Last but not least, we also take care of memory efficiency and performance.