Simpleclust – manual spike sorting in matlab

In my work, I often need to maximize the number of identified neurons I can record from simultaneously, so I do all my spike sorting manually.

While there are a bunch of good free options, none quite fit my workflow, so I started writing a pretty ad-hoc matlab user interface just for my own use. The initial implementation was very simple, so I called it ‘simple_clust’. The main idea behind the program is to make the manual sorting as fast as possible by displaying all information on one screen and eliminating context menus etc. It works pretty well for me and has been adopted by some other people in the lab, but the structure might not be for everyone.



  • Support for single electrode, stereotrode and tetrode files in the Neuralynx and Matclust formats. Plexon support should be very easy to add in using plexon’s matlab code.
  • High quality waveform displays.
  • Sort by hand-picked waveform samples or run PCA on parts of waveforms.
  • Sufficiently fast on a modern desktop machine, but its matlab, so its not as snappy as some other programs.
  • Automatic noise rejection based on co-occurrence of spikes in too many channels.
  • Re-compute PCA (or other features) on subsets of spikes.
  • Display and sort non-stationary clusters.
  • Wavelet features (see Rodrigo Quian Quiroga’s excellent wave_clus).
  • Batch pre-processing and batch sorting.

Disclaimer: I wrote this software for my own use, and little time was spent testing it in different scenarios, or in making the code pretty. Simpleclust is released under the GNU GPL.

Get simpleclust on Github.
To just get the lastest release, click on the ‘zip’ icon, or here

This entry was posted in Matlab, Technical things. Bookmark the permalink.

Comments are closed.