Compatible Technology¶
Supported File Formats¶
Currently, we support many popular file formats for both raw and sorted extracellular datasets. Given the standardized, modular design of our recording and sorting extractors, adding new file formats is straightforward so we expect this list to grow in future versions.
We are also integrating extractors based on NEO
Raw Data Formats¶
For raw data formats, we currently support:
- BlackRock - BlackRockRecordingExtractor
- Binary - BinDatRecordingExtractor
- Biocam HDF5 - BiocamRecordingExtractor
- CED - CEDRecordingExtractor
- Experimental Directory Structure (Exdir) - ExdirRecordingExtractor
- Intan - IntanRecordingExtractor
- Klusta - KlustaRecordingExtractor
- MaxOne - MaxOneRecordingExtractor
- MCSH5 - MCSH5RecordingExtractor
- MEArec - MEArecRecordingExtractor
- Mountainsort MDA - MdaRecordingExtractor
- Neurodata Without Borders - NwbRecordingExtractor
- Neuroscope - NeuroscopeRecordingExtractor
- NIX - NIXIORecordingExtractor
- Neuralynx - NeuralynxRecordingExtractor
- Open Ephys - OpenEphysRecordingExtractor
- Phy/Kilosort - PhyRecordingExtractor/KilosortRecordingExtractor
- Plexon - PlexonRecordingExtractor
- Shybrid - SHYBRIDRecordingExtractor
- SpikeGLX - SpikeGLXRecordingExtractor
- Spyking Circus - SpykingCircusRecordingExtractor
Sorted Data Formats¶
For sorted data formats, we currently support:
- BlackRock - BlackRockSortingExtractor
- Combinato - CombinatoSortingExtractor
- Cell Explorer - CellExplorerSortingExtractor
- Experimental Directory Structure (Exdir) - ExdirSortingExtractor
- HerdingSpikes2 - HS2SortingExtractor
- JRClust - JRCSortingExtractor
- Kilosort/Kilosort2 - KiloSortSortingExtractor
- Klusta - KlustaSortingExtractor
- MEArec - MEArecSortingExtractor
- Mountainsort MDA - MdaSortingExtractor
- Neurodata Without Borders - NwbSortingExtractor
- Neuroscope - NeuroscopeSortingExtractor
- NPZ (created by SpikeInterface) - NpzSortingExtractor
- Open Ephys - OpenEphysSortingExtractor
- Shybrid - SHYBRIDSortingExtractor
- Spyking Circus - SpykingCircusSortingExtractor
- Trideclous - TridesclousSortingExtractor
- YASS - YassSortingExtractor
Installed Extractors¶
To check which extractors are useable in a given python environment, one can print the installed recording extractor list and the installed sorting extractor list. An example from a newly installed miniconda3 environment is shown below,
First, import the spikeextractors package,
import spikeextractors as se
Then you can check the installed RecordingExtractor list,
se.installed_recording_extractor_list
which outputs,
[spikeextractors.extractors.mdaextractors.mdaextractors.MdaRecordingExtractor,
spikeextractors.extractors.biocamrecordingextractor.biocamrecordingextractor.BiocamRecordingExtractor,
spikeextractors.extractors.bindatrecordingextractor.bindatrecordingextractor.BinDatRecordingExtractor,
spikeextractors.extractors.spikeglxrecordingextractor.spikeglxrecordingextractor.SpikeGLXRecordingExtractor,
spikeextractors.extractors.phyextractors.phyextractors.PhyRecordingExtractor,
spikeextractors.extractors.maxonerecordingextractor.maxonerecordingextractor.MaxOneRecordingExtractor]
and the installed SortingExtractors list,
se.installed_sorting_extractor_list
which outputs,
[spikeextractors.extractors.mdaextractors.mdaextractors.MdaSortingExtractor,
spikeextractors.extractors.hs2sortingextractor.hs2sortingextractor.HS2SortingExtractor,
spikeextractors.extractors.klustasortingextractor.klustasortingextractor.KlustaSortingExtractor,
spikeextractors.extractors.kilosortsortingextractor.kilosortsortingextractor.KiloSortSortingExtractor,
spikeextractors.extractors.phyextractors.phyextractors.PhySortingExtractor,
spikeextractors.extractors.spykingcircussortingextractor.spykingcircussortingextractor.SpykingCircusSortingExtractor,
spikeextractors.extractors.npzsortingextractor.npzsortingextractor.NpzSortingExtractor]
When trying to use an extractor that has not been installed in your environment, an installation message will appear indicating which python packages must be installed as a prerequisite to using the extractor,
exdir_file = 'path_to_exdir_file'
recording = se.ExdirRecordingExtractor(exdir_file)
throws the error,
----> 1 se.ExdirRecordingExtractor(exdir_file) ~/spikeextractors/spikeextractors/extractors/exdirextractors/exdirextractors.py in __init__(self, exdir_file) 22 23 def __init__(self, exdir_file): ---> 24 assert HAVE_EXDIR, "To use the ExdirExtractors run:nn pip install exdirnn" 25 RecordingExtractor.__init__(self) 26 self._exdir_file = exdir_file AssertionError: To use the ExdirExtractors run: pip install exdir
So to use either of the Exdir extractors, you must install the python package exdir. The python packages that are required to use of all the extractors can be installed as below,
pip install exdir h5py pyintan MEArec pyopenephys tridesclous
Dealing with Non-Supported File Formats¶
Many users store their datasets in custom file formats that are not general enough to create new extractors. To allow these users to still utilize SpikeInterface with their data, we built two in-memory Extractors: the NumpyRecordingExtractor and the NumpySortingExtractor.
The NumpyRecordingExtractor can be instantiated with a numpy array that contains the underlying extracellular traces (channels x frames), the sampling frequency, and the probe geometry (optional). Once instantiated, the NumpyRecordingExtractor can be used like any other RecordingExtractor.
The NumpySortingExtractor does not need any data during instantiation. However, after instantiation, it can be filled with data using its built-in functions (load_from_extractor, set_times_labels, and add_unit). After sorted data is added to the NumpySortingExtractor, it can be used like any other SortingExtractor.
With these two objects, we hope that any user can access SpikeInterface regardless of the nature of their underlying file format. If you feel like a non-supported file format should be included in SpikeInterface as an actual extractor, please leave an issue in the spikeextractors repository.
Supported Spike Sorters¶
Currently, we support many popular semi-automatic spike sorters. Given the standardized, modular design of our sorters, adding new ones is straightforward so we expect this list to grow in future versions.
- HerdingSpikes2 - HerdingspikesSorter
- IronClust - IronClustSorter
- Kilosort - KilosortSorter
- Kilosort2 - Kilosort2Sorter
- Klusta - KlustaSorter
- Mountainsort4 - Mountainsort4Sorter
- SpyKING Circus - SpykingcircusSorter
- Tridesclous - TridesclousSorter
- Wave clus - WaveClusSorter
Installed Sorters¶
To check which sorters are useable in a given python environment, one can print the installed sorters list. An example is shown in a pre-defined miniconda3 environment.
First, import the spikesorters package,
import spikesorters as ss
Then you can check the installed Sorter list,
ss.installed_sorters()
which outputs,
['herdingspikes',
'klusta',
'mountainsort4',
'spykingcircus',
'tridesclous']
When trying to use an sorter that has not been installed in your environment, an installation message will appear indicating how to install the given sorter,
recording = sorters.run_ironclust(recording)
throws the error,
AssertionError: This sorter ironclust is not installed.
Please install it with:
To use IronClust run:
>>> git clone https://github.com/jamesjun/ironclust
and provide the installation path by setting the IRONCLUST_PATH
environment variables or using IronClustSorter.set_ironclust_path().