Comparison of Spike Sorting Software

links and descriptions of publicly available code for spike sorting

This project is maintained by Simon Kornblith

Last Updated Feb. 20, 2017

DOI

Software Language Detection Feature Extraction Clustering Drift Overlap Large-scale MEA Publications Comments
BinaryPursuitSpikeSorting MATLAB binary pursuit N/A binary pursuit No Yes No A model-based spike sorting algorithm for removing correlation artifacts in multi-neuron recordings
bpsort MATLAB binary pursuit, raw signal threshold with alignment (initialization) PCA (initialization) t-distribution MM (initialization) Yes Yes Yes
CBPSpikesortDemo MATLAB continuous basis pursuit continuous basis pursuit continuous basis pursuit No Yes Yes? A unified framework and method for automatic neural spike identification
ClusterLizard C++ raw signal threshold wavelets + Lillifors test Euclidean distance Yes No No An unsupervised online spike-sorting framework
Combinato Python raw signal threshold with alignment wavelets superparamagnetic clustering + template matching Yes No No Reliable analysis of single-unit recordings from the human brain under noisy conditions: tracking neurons over hours GUI for inspecting clusters
EToS C++ raw signal threshold multimodality-weighted PCA, multimodality pick-up algorithm, Graph Laplacian features, PCA Variational Bayes and EM t-distribution and Gaussian mixture model No No No Spike sorting of heterogeneous neuron types by multimodality-weighted PCA and explicit robust variational Bayes, Accurate spike sorting for multi-unit recording
FMMSpikeSorter MATLAB raw signal threshold focused mixture model focused mixture model Yes? No Yes? Multichannel electrophysiological spike sorting via joint dictionary learning and mixture modeling
gpu_python Python N/A N/A Generalized Polya urn dependent Dirichlet process MM Yes No No Dependent dirichlet process spike sorting
KFMM MATLAB N/A N/A Kalman filter EM GMM Yes No No Kalman filter mixture model for spike sorting of non-stationary data
KiloSort MATLAB, CUDA C Spatiotemporal SVD Template matching via stochastic batch optimization No Yes Yes Kilosort: realtime spike-sorting for extracellular electrophysiology with hundreds of channels
MoDT MATLAB, CUDA C N/A PCA Mixture of drifting t-distributions Yes No No Model-based spike sorting with a mixture of drifting t-distributions
moksm MATLAB N/A N/A Mixture of drifting t-distributions Yes No No EM for a mixture of drifting t-distributions
opass MATLAB gamma process model PCA gamma process model Yes Yes Yes? Real-time inference for a gamma process model of neural spiking
OpenElectrophy Python raw signal threshold, MTEO PCA, ICA, wavelets EM GMM, K-means, mean-shift No No No GUI for manual clustering and inspecting results
OSort MATLAB local energy threshold with alignment N/A template matching Yes No No Online detection and sorting of extracellularly recorded action potentials in human medial temporal lobe recordings, in vivo
pebble C++, MATLAB ? PCA ISO-SPLIT No No No Unimodal clustering using isotonic regression: ISO-SPLIT
phy (previously klustakwik) Python raw signal threshold with alignment PCA EM GMM, masked EM GMM No No Yes Spike sorting for large, dense electrode arrays, High-dimensional cluster analysis with the Masked EM Algorithm GUI for inspecting sorting results. Large, active community
spikesort MATLAB raw signal threshold (height + width) PCA, factor analysis, sparse PCA, t-SNE 1D GMM, 1D k-means No No No Claims "99.5% accuracy." Only supports clustering into two units.
SpikeSorter.jl Julia hidden markov model spike width, trough to valley ratio hidden markov model No No No Algorithm described in Spike sorting with hidden Markov models
SpikeSorting.jl Julia raw signal threshold, power, nonlinear energy, alignment PCA OSort-style template matching Yes? No No Many options planned; see documentation
spyke Python raw signal threshold with alignment PCA, ICA gradient ascent (mean-shift variant) No No Yes Spike sorting for polytrodes: a divide and conquer approach, Python for large-scale electrophysiology GUI
SpyKING Circus Python raw signal threshold + iterative template matching PCA local density clustering (Rodriguez & Laio) + template matching No Yes Yes Fast and accurate spike sorting in vitro and in vivo for up to thousands of electrodes
trisdesclous Python raw signal threshold with alignment PCA EM GMM, k-means No No No
Wave_clus MATLAB raw signal threshold with alignment wavelets + Lillifors test superparamagnetic No No No Unsupervised spike detection and sorting with wavelets and superparamagnetic clustering