Free-ware spike sorting
A David Redish
This page updated 9 June 2016.
Latest build = 4.4.04 on 13 June 2016.
Contact A. David Redish (redish AT umn.edu) with questions, bug-reports, etc.
If you would like to be included on an MClust-4.0 email list of bug reports, please send an email to ADR with MClust-4.0-registration in the header. The only messages that will go to this email list will be sent by ADR and will refer to data-level bugs in MClust.
Code and distributions
MClust-4.4 (winzip format)
We recommend that all users use MClust-4.4.
MClust has a completely rebuilt engine that is now compatible with the latest versions of Matlab (2012a+). Unfortunately, it is not compatible with earlier versions of Matlab.
o Version 4.4 contains the addition of SPC clustering.
o Version 4.2 contains bug fixes.
· Note: MClust assumes that data is stored in Matlab double format.
· Note: MClust should work with >4-trode data, but I have not tested it yet.
· Loading Engines
Neuralynx .dat format, tetrodes [included in current distribution]
Neuralynx .dat format, singe electrodes [included in current distribution]
· MClust-4.1 now includes a (Tucker-Davis Technologies [TDT]) loading engine. Using this loading engine requires additional programs from TDT to read the raw data formats. Contact TDT for download and password information.
· ginputSmooth.m - Rather than storing the mouse position for every click, the user clicks once to start and the mouse position is stored continuously until the button is released. This works well with a mouse, but is also great with a pen mouse and tablet. (From Ben Kanter (Kentros Lab).) To use, replace [xg,yg] = ginput(); with [xg,yg] = ginputSmooth(); in MClust\+MClust\@Cutter\DrawPolygonOnAxes.m
(These contain some small data sets. I have made no attempt to find “the best examples”, but they should load in appropriately. They can be used to test loading, cutting, and saving functions.)
· TT-sample.Ntt (Load with LoadTT_NeuralynxNT)
· SE-sample.Nse (Load with LoadSE_NeuralynxNT)
· Original MClust by A. David Redish (ADR, current address, University of Minnesota, Minneapolis MN).
Modifications that have been incorporated into version 3.2 were made by
· Peter Lipa (PL, University of Arizona, Tucson AZ)
· Stephen Cowen (SLC, University of Arizona, Tucson AZ),
· Jadin Jackson (JCJ, University of Minnesota, Minneapolis MN),
· Neil Schmitzer-Torbert (NCST, University of Minnesota, Minneapolis MN),
· Francesco Battaglia (batta, University of Arizona, Tucson AZ).
External components shipped with the current distribution include
· BubbleClust (automated spike-sorter, version 0.8) by Peter Lipa (University of Arizona, Tucson AZ).
· Contact Neuralynx for future versions of BubbleClust.
· KlustaKwik (automated spike-sorter) by (Ken Harris, Rutgers University, Newark NJ).
[From Vadim Frolov
(NTNU): ]We noticed that starting from Matalb 2014b
(when Mathworks changed the graphics engine) adding
limits to clusters during manual cut started to be very slow and unresponsive.
The problem is in ginput function acting on a
figure with lots of points. A fix (which I applied and which seems to work) is
to set ‘HitTest’ property of displayed objects to
‘off’. For example, in file MClust\+MClust\+ClusterTypes\@
h = scatter(ax,x_temp,y_temp,self.
o h.HitTest = 'off';
The same should be done to ‘plot’ functions in the same
file and also in MClust\+MClust\+ClusterTypes\ @DisplayableCluster\PlotSelf.m
MClust versions we tested this in were 4.1 and 4.3.
[ADR: This is not faster in earlier versions of matlab (2012a-2014a), but might be faster in 2014b+.]
This version incorporates changes from previous versions and is now compatible with the latest versions of Matlab (2007a +). Unfortunately, it is not compatible with earlier versions of Matlab.
[64-bit .mex64 files for XP64 and Vista64 operating systems. (Thanks to Jadin Jackson for compiling these.)] To use these, add them where the mex32 files are. It is not necessary to replace the .mex32 files with the corresponding .mex64 files. Matlab will use the correct ones.
[.mexmaci files for 64bit Mac operating systems. (Thanks to Martin Vinck for compiling these.)] To use these, add them where the mex32 files are. It is not necessary to replace the .mex32 files with the corresponding .mex64 files. Matlab will use the correct ones.
To use these, add them where the mex32 files are. It is not necessary to replace the .mex32 files with the corresponding .mex64 files. Matlab will use the correct ones.
Neuralynx’s Cheetah 5.X has a deeper bit-depth than earlier versions of Cheetah. To accommodate this bit depth, you need to change the global variable MClust_AverageWaveform_ylim in MClustResetGlobals to 16* its old value.
· MClust-3.4.beta.zip (winzip format)
We recommend using MClust-3.4 for all users of Matlab versions earlier than 2007a.
Jadin Jackson (University of Amsterdam) has developed a new version of MClust 3.4 with multi-step undo and incorporated ICA.
· MClust-3.5 Extras. Extra features and additional components for MClust-3.5.
· A number of extra components are included in various subdirectories under “Extras”. Simply move these from the “Extras” directory to their respective parent directory to use.
23 April 2015
· Ben Kanter (Kentros Lab)
- ginputSmooth.m - Rather than storing the mouse position for every click, the user clicks once to start and the mouse position is stored continuously until the button is released. This works well with a mouse, but is also great with a pen mouse and tablet.
18 July 2012
· Balazs Hangya (Cold Spring Harbor)
· Matthijs van der Meer (University of Minnesota)
- RemoveDoubles – removes double-counted spikes. To use, put in the @mccluster directory.
(University of Amsterdam)
- new GeneralizedCutterOptions
[including CloseAllNonEssentialFigs, ShowAllWaveforms, SortClustersByColor]
- new ClusterOptions
[including CutOnBestProjection, FindBestCQProjections]
These extras have not been tested with MClust-3.5.
Recent additions include
· new GeneralizedCutterOptions [including ShowAllAverageWaveforms, ShowAllXCorrs, ViewAllDimensionPairs]
· new Loading Engine (allowing >32 samples from Neuralynx 32-kHz CSCs) from Michael Krause [Baylor College of Medicine, Houston]
· new Loading Engines from Frank Schaupp [Institut fur Neurobiologie, Berlin]
· new Loading Engine from Shane Heiney [Washington University in St. Louis]
· new version of options from Baldwin Goodell [Montana State University]
· Linux-compatible LoadSE and LoadST engines for Neuralynx-compatible data. [Courtesy Josh Jacobs, Brandeis University]
· new GeneralizedCutterOptions
· new features [Courtesy Baldwin Goodell, Montana State University]
· mclustlinux.tgz. Port to Linux. Done by Nathaniel Daw, Carnegie Mellon University. (28 August 2002)
Written by A. David Redish
· PDF format.
· It is critical that any loading engine pull data in as Matlab “double” format floating point data. (This is the usual format that Matlab uses for floating point numbers.) If data is stored in a different format (say as unsigned ints or as single-floats) then some of the mex-files may segfault. I have added code-checks to ensure that data formats are doubles. I believe that the currently supplied loading engines produce these formats.
· The latest versions of Neuralynx can create very large timestamps. To ensure that your data can be saved with those large timestamps, change the MClust Extension flag to “.t64”. This will save t-files using 64-bit uints and will use the “.t64” extension to label them as such.
· To change the compare average waveforms using overlapped waveforms between clusters and separated waveforms for each cluster, change the OnePlot flag in +MClust\@Cutter\CutterOtion_CompareAverageWaveforms.m to true.
· If you need the full resolution of 64-bit from Neuralynx (or some other engine), you can save data as “.t64”. Just change the extension in MClustSettings.