spiketoolkit

Python-based tools for running, curating, evaluating, and comparing popular spike sorting algorithms

https://github.com/alejoe91/spiketoolkit

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 7 committers (14.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.4%) to scientific vocabulary

Keywords from Contributors

electrophysiology neuroscience spike-sorting data-retrieval
Last synced: 10 months ago · JSON representation

Repository

Python-based tools for running, curating, evaluating, and comparing popular spike sorting algorithms

Basic Info
  • Host: GitHub
  • Owner: alejoe91
  • License: gpl-3.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 737 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Fork of samuelgarcia/spiketoolkit
Created over 7 years ago · Last pushed over 7 years ago
Metadata Files
Readme License

README.md

Build Status

Alpha Development Version 0.1.7

SpikeToolkit

SpikeToolkit is a module that was designed to make running, curating, evaluating, and comparing popular spike sorting algorithms as simple as possible.

Its tools and functions are built using spikeextractors objects, allowing for straightforward, standardized analysis and spike sorting.


Getting Started

To get started with SpikeToolkit, you can install it with pip:

shell pip install spiketoolkit You can also install SpikeToolkit locally by cloning the repo into your code base. If you install SpikeToolkit locally, you need to run the setup.py file.

```shell git clone https://github.com/SpikeInterface/spiketoolkit.git

cd spiketoolkit python setup.py install ```

SpikeInterface allows the user to extract data from either raw or spike sorted datasets with a RecordingExtractor or SortingExtractor, respectively.

Run spike sorting algorithms

To run spike sorting algorithm, a RecordingExtractor object needs to be instantiated using the spikeextractors package

In this example from the examples repo, we show how to run several spike sorters on a toy dataset.

Each spike sorter must be installed separately. If one of the spike sorters is not installed, an error message detailing the installation procedure is given. Below is a list spike sorters we have made compatible with SpikeInterface:

SpikeToolkit is designed to make the spike sorting procedure painless and easy. In the following example, 4 spike sorters (Mountainsrt, Spyking Circus, Kilosort and Tridesclous) are run on the same recordings.

```python import spikeextractor as se import spiketoolkit as st

load recording using spikeextractors (e.g. Open Ephys recording)

recording = se.OpenEphysRecordingExtractor('path-to-open-ephys-folder')

run spike sorters (with default parameters)

sortingMS = st.sorters.runmountainsort4(recording) sortingSC = st.sorters.runspykingcircus(recording) sortingKS = st.sorters.runkilosort(recording, kilosortpath='path-to-kilosort-matlab-installation') sortingTDC = st.sorters.run_tridesclous(recording) ```

Curating spike sorting outputs

Manual curation of spike sorting outputs is recommended for all algorithms. This includes visually inspecting the spike waveforms, correlograms, and clusters of each unit found in the recording.

With SpikeToolit you can export any sorting output to the phy template-gui, manually curate the data, and re-import the curated sorting output:

```python

esport Mountainsort output to phy

st.exportToPhy(sorting_MS)

curate the data running: phy template-gui path-to-exported-params.py

reimport curated sorting output

sortingMScurated = se.PhysortingExtractors('path-to-created-phy-folder') ```

Compare sorting outputs

SpikeToolkit is designed to make spike sorting comparison and evaluation easy and straightforward. Using the sorting_MS, sorting_SC, and sorting_SC output from the previous section, one can run pairwise comparisons:

python comparison_MS_SC = st.comparison.SortingComparison(sorting_MS, sorting_SC)

The SortingComparison class finds best matching units based on the fraction of matched spikes. Units that are not matched to any other unit are assigned to -1.

Alternatively, one can run a multi-sorting comparison that finds units in agreement amongst multiple spike sorters:

```python multicomparison = st.comparison.MultiSortingComparison([sortingMS, sortingSC, sortingKS])

extract units shared among all 3 spike sorting outputs

agreementsorting = multicomparison.getAgreementSorting(minimum_match=3) ```

Interactive Example

To experiment with RecordingExtractors, SortingExtractors, and their associated tools, in a pre-installed environment, we have provided a Collaborative environment. If you click on the link and then click on "Open in Collab", you can run the notebook and try out the features of and tools for SpikeInterface.

Run test

pytest

Authors

Alessio Paolo Buccino - Center for Inegrative Neurolasticity (CINPLA), Department of Biosciences, Physics, and Informatics, University of Oslo, Oslo, Norway

Cole Hurwitz - The Institute for Adaptive and Neural Computation (ANC), University of Edinburgh, Edinburgh, Scotland

Jeremy Magland - Center for Computational Biology (CCB), Flatiron Institute, New York, United States

Matthias Hennig - The Institute for Adaptive and Neural Computation (ANC), University of Edinburgh, Edinburgh, Scotland

For any correspondence, contact Alessio Buccino at alessiop.buccino@gmail.com

Contributors

Samuel Garcia - Centre de Recherche en Neuroscience de Lyon (CRNL), Lyon, France

GitHub Events

Total
Last Year

Committers

Last synced: over 3 years ago

All Time
  • Total Commits: 176
  • Total Committers: 7
  • Avg Commits per committer: 25.143
  • Development Distribution Score (DDS): 0.392
Top Committers
Name Email Commits
Alessio Buccino a****7@g****m 107
Samuel Garcia s****e@g****m 38
Jeremy Magland j****d@g****m 17
Cole Hurwitz c****z@g****m 6
Jeremy Magland m****d@u****m 4
colehurwitz s****3@r****k 2
James Jun j****n@g****m 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 2,000 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 13
  • Total versions: 42
  • Total maintainers: 1
pypi.org: spiketoolkit

Python toolkit for analysis, visualization, and comparison of spike sorting output

  • Versions: 42
  • Dependent Packages: 1
  • Dependent Repositories: 13
  • Downloads: 2,000 Last month
Rankings
Dependent repos count: 4.0%
Dependent packages count: 4.7%
Downloads: 15.3%
Average: 18.5%
Forks count: 29.8%
Stargazers count: 38.8%
Maintainers (1)
Last synced: 10 months ago