This is a collection of tools & resources related to 'spikes' in neuroscience (action potentials recorded from individual neurons).
This list covers single-unit and multi-unit data, including data management, spike sorting, and available tools and analyses.
To contribute a new link to a tool or resource, open an issue mentioning it, or a pull request with a link.
Note that single-unit datasets are listed in the OpenData list.
Single-unit data can be recorded with various different amplifiers and recording systems from different companies.
This section lists companies that make recording systems for single-unit recordings.
Data from different recording system are often stored in proprietary file formats.
This section collects tools and resources related to data management for neural recordings of single- an multi-unit data.
NWB is a standardized data schema that can be used to store single-unit data.
NWB includes a broad ecosystem of related tools for working with NWB files, as described on the NWB overview page.
This ecosystem includes the following tools developed by NWB:
- PyNWB, a Python interface for NWB files
- MatNWB, a Matlab interface for NWB files
- NWBinspector for inspecting NWB files for compliance
- NWBwidgets for interactive visualizations of NWB files in notebooks
In addition, there are other available tools related to NWB, including:
- neuroconv, which provides tools for converting and combining data into NWB
- CellExplorer, which is a Matlab tool providing a GUI for exploring and classifying single cells
Other tools related to data management for single-unit data include:
- NEO, a Python tool for reading neurophysiology file formats
Spike sorting is the process of the grouping spikes into clusters, that relate to putative individual neurons. There have been many proposed algorithms for spike sorting. This section lists tools and resources related to spike sorting.
Spike sorting tutorials:
- A brief overview of spike sorting from the Simons Foundation
- A collection of tutorials from Spike Interface
- A tutorial from cambridge neurotech
- A tutorial from CBBM
- A brief lesson on spike sorting from a class
- A brief, standalone tutorial on spike sorting
SpikeInterface is a Python module for performing spike sorting and associated processes.
SpikeInterface can be used to run multiple available spike-sorting algorithms, including this list of spike sorters.
SpikeInterface includes multiple sub-modules, including:
comparison
for comparing and benchmarking sorting outputsextractors
for interfacing with data filestoolkit
for pre- & post-processing related to spike sortingsorters
for running supported spike sorterswidgets
for using widgets for visualizations
Spike sorters that can be used on single-channel / microwire recordings, such as in human data:
- combinato, in Python
- klusta, in Python
- tridesclous, in Python
- waveclus, in Matlab
- OSort, in Matlab
- HDsort, in Matlab
- MountainSort, in C++
Spike sorters that can be used on multi-channel / high density recordings, such as in animal data:
- HerdingSpikes2, in Python
- YASS, in Python
- SpykingCircus, in Python
- kilosort3, in Matlab
- IronClust, in Matlab
Spike sorting solutions can vary, and in general requires quality control procedures to ensure that sorting solution are robust and adequately reflect isolated units. Different spike sorters can give different solutions, and it may be useful to compare different spike sorters to each other.
The following are guides to quality control for spike sorting:
- A quality metrics guide from the Allen institute
- Notes on spike sorting metrics from Ed Merricks
The following are systematic comparisons of different spike sorters:
- SpikeForrest is a project that systematically compares multiple spike sorting algorithms.
The following collects tools and resources for analyzing (sorted) single neuron data.
General Tools:
- spiketools is a Python package for analyzing spike data
- pynapple, the PYthon Neural Analysis Package, has some tools for working with spike data
- Spykes is a Python toolbox for spike data analysis & visualizations
- elephant, the electrophysiology analysis toolkit, which uses neo
- Phy is a Python tool providing a graphical interface for visualization and manual curation of large-scale electrophysiology data
- Brainstorm, a general purpose, Matlab toolbox, has tools for processing ephys data
The following are tools and utilities for simulating spiking data:
- MEArec, a Python toolbox for simulating extra-cellular recordings on multi-unit arrays
- PyRates, a Python framework for rate-based neural simulations
- Brian2, a Python toolbox for simulating spiking neural networks
The following are dedicated tutorials for single-cell analyses:
The following are tools and resources for particular analyses:
- A collection of grid scores for grid cell analysis
The following are code repositories for individual analyses / projects / papers:
- Replay trajectory classification code
- Code for ictal recruitment in human single-unit activity
- Matlab code for a project on egocentric boundary cells
The following are collections of available code from individual labs:
- Code repositories (Matlab) from the Buzsaki lab
- Includes the 'buzcode' collection of analysis code
- Code repositories (mostly Matlab) from the Giocomo Lab
- Code repositories (mostly Python) from the Frank Lab
- Code repositories (mostly Python) from the Nolan Lab
- Includes analysis code for spatial ephys analysis