WaveSorter emphasizes dynamic visualization and versatility. Slider controls let the user select any coefficient or sample from any of several transforms, which can then be plotted to either axis of a 2D histogram (scatterplot). Within the waveform space, cursor-based controls let the user select subregions of the waveform space or individual waveforms to view. The user may cluster waveforms manually or via one of several popular clustering programs. The classification along with waveform properties (width, etc.) can be saved to disk in simple text files. WaveSorter is written in C++, utilizes the GNU Scientific Library for all computation, and is highly parallelized; on modern hardware it can handle files containing several 100,000s of waveforms per channel with almost no noticeable loss in GUI fluidity and <1sec lags for files with >1,000,000 waveforms per channel. It can be run in batch mode. It supports a wide array of binary file formats as well as ASCII text.
Waveform metrics: Time(stamp), height, width, slope, and slope of differentiated waveform.
Transforms: PCA, Haar Wavelet, and spline interpolation. Transforms are performed on both raw and differentiated waveforms.
Clustering algorithms: K-Means++, AutoClass C, Super-Paramagnetic Clustering, and KlustaKwik, as well as manual clustering.
Select subsets of waveforms from the 2D scatterplot using either a sliding bar, or one of 3 color-coded resizable disks. Simply slide/drag the bar or disks to the desired regions to inspect the waveforms there.
The time slider allows visualization and clustering to be restricted to a particular time range within the session.
"Movie" option allows you to view an animated playback of the session as you have clustered it. The animation can progress through time or any other dimension.
Supports *.apm (FHC), *nev (Neuroshare), *.plx (Plexon), and *M (REX/MEX) file formats, as well as simple ASCII text.