Metadata-Version: 2.4
Name: spikeinterface
Version: 0.103.0
Summary: Python toolkit for analysis, visualization, and comparison of spike sorting output
Author-email: Alessio Buccino <alessiop.buccino@gmail.com>, Samuel Garcia <sam.garcia.die@gmail.com>
Project-URL: homepage, https://github.com/SpikeInterface/spikeinterface
Project-URL: repository, https://github.com/SpikeInterface/spikeinterface
Project-URL: documentation, https://spikeinterface.readthedocs.io/
Project-URL: changelog, https://spikeinterface.readthedocs.io/en/latest/whatisnew.html
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Classifier: Operating System :: OS Independent
Requires-Python: <3.14,>=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.20; python_version < "3.13"
Requires-Dist: numpy>=2.0.0; python_version >= "3.13"
Requires-Dist: threadpoolctl>=3.0.0
Requires-Dist: tqdm
Requires-Dist: zarr<3,>=2.18
Requires-Dist: neo>=0.14.1
Requires-Dist: probeinterface>=0.3.0
Requires-Dist: packaging
Requires-Dist: pydantic
Requires-Dist: numcodecs<0.16.0
Provides-Extra: extractors
Requires-Dist: MEArec>=1.8; extra == "extractors"
Requires-Dist: pynwb>=2.6.0; extra == "extractors"
Requires-Dist: hdmf-zarr>=0.11.0; extra == "extractors"
Requires-Dist: pyedflib>=0.1.30; extra == "extractors"
Requires-Dist: sonpy; python_version < "3.10" and extra == "extractors"
Requires-Dist: lxml; extra == "extractors"
Requires-Dist: scipy; extra == "extractors"
Requires-Dist: ibllib>=3.4.1; python_version >= "3.10" and extra == "extractors"
Requires-Dist: pymatreader>=0.0.32; extra == "extractors"
Requires-Dist: zugbruecke>=0.2; sys_platform != "win32" and extra == "extractors"
Provides-Extra: streaming-extractors
Requires-Dist: ibllib>=3.4.1; python_version >= "3.10" and extra == "streaming-extractors"
Requires-Dist: pynwb>=2.6.0; extra == "streaming-extractors"
Requires-Dist: fsspec; extra == "streaming-extractors"
Requires-Dist: aiohttp; extra == "streaming-extractors"
Requires-Dist: requests; extra == "streaming-extractors"
Requires-Dist: hdmf-zarr>=0.11.0; extra == "streaming-extractors"
Requires-Dist: remfile; extra == "streaming-extractors"
Requires-Dist: s3fs; extra == "streaming-extractors"
Provides-Extra: preprocessing
Requires-Dist: scipy; extra == "preprocessing"
Provides-Extra: full
Requires-Dist: h5py; extra == "full"
Requires-Dist: pandas; extra == "full"
Requires-Dist: scipy; extra == "full"
Requires-Dist: scikit-learn; extra == "full"
Requires-Dist: networkx; extra == "full"
Requires-Dist: distinctipy; extra == "full"
Requires-Dist: matplotlib>=3.6; extra == "full"
Requires-Dist: cuda-python; platform_system != "Darwin" and extra == "full"
Requires-Dist: numba>=0.59; extra == "full"
Requires-Dist: skops; extra == "full"
Requires-Dist: huggingface_hub; extra == "full"
Provides-Extra: widgets
Requires-Dist: matplotlib; extra == "widgets"
Requires-Dist: ipympl; extra == "widgets"
Requires-Dist: ipywidgets; extra == "widgets"
Requires-Dist: sortingview>=0.12.0; extra == "widgets"
Provides-Extra: qualitymetrics
Requires-Dist: scikit-learn; extra == "qualitymetrics"
Requires-Dist: scipy; extra == "qualitymetrics"
Requires-Dist: pandas; extra == "qualitymetrics"
Requires-Dist: numba; extra == "qualitymetrics"
Provides-Extra: test-core
Requires-Dist: pytest<8.4.0; extra == "test-core"
Requires-Dist: pytest-dependency; extra == "test-core"
Requires-Dist: psutil; extra == "test-core"
Requires-Dist: pytest-mock; extra == "test-core"
Provides-Extra: test-extractors
Requires-Dist: pooch>=1.8.2; extra == "test-extractors"
Requires-Dist: datalad>=1.0.2; extra == "test-extractors"
Provides-Extra: test-preprocessing
Requires-Dist: ibllib>=3.4.1; python_version >= "3.10" and extra == "test-preprocessing"
Requires-Dist: torch; extra == "test-preprocessing"
Provides-Extra: test
Requires-Dist: pytest<8.4.0; extra == "test"
Requires-Dist: pytest-dependency; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: psutil; extra == "test"
Requires-Dist: ibllib>=3.4.1; python_version >= "3.10" and extra == "test"
Requires-Dist: s3fs; extra == "test"
Requires-Dist: pynapple; extra == "test"
Requires-Dist: numba<0.61.0; python_version < "3.13" and extra == "test"
Requires-Dist: numba>=0.61.0; python_version >= "3.13" and extra == "test"
Requires-Dist: hdbscan>=0.8.33; extra == "test"
Requires-Dist: sortingview>=0.12.0; extra == "test"
Requires-Dist: torch; extra == "test"
Requires-Dist: skops; extra == "test"
Requires-Dist: huggingface_hub; extra == "test"
Requires-Dist: pytest-mock; extra == "test"
Provides-Extra: docs
Requires-Dist: Sphinx; extra == "docs"
Requires-Dist: sphinx_rtd_theme>=1.2; extra == "docs"
Requires-Dist: sphinx-gallery; extra == "docs"
Requires-Dist: sphinx-design; extra == "docs"
Requires-Dist: numpydoc; extra == "docs"
Requires-Dist: ipython; extra == "docs"
Requires-Dist: sphinxcontrib-jquery; extra == "docs"
Requires-Dist: MEArec; extra == "docs"
Requires-Dist: pandas; extra == "docs"
Requires-Dist: hdbscan>=0.8.33; extra == "docs"
Requires-Dist: numba; extra == "docs"
Requires-Dist: networkx; extra == "docs"
Requires-Dist: skops; extra == "docs"
Requires-Dist: scikit-learn; extra == "docs"
Requires-Dist: huggingface_hub; extra == "docs"
Provides-Extra: dev
Requires-Dist: spikeinterface[test]; extra == "dev"
Requires-Dist: spikeinterface[test_core]; extra == "dev"
Requires-Dist: spikeinterface[docs]; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Dynamic: license-file

# SpikeInterface: a unified framework for spike sorting

<table>
<tr>
  <td>Latest Release</td>
  <td>
    <a href="https://pypi.org/project/spikeinterface/">
    <img src="https://img.shields.io/pypi/v/spikeinterface.svg" alt="latest release" />
    </a>
  </td>
</tr>
<tr>
  <td>Documentation</td>
  <td>
    <a href="https://spikeinterface.readthedocs.io/">
    <img src="https://readthedocs.org/projects/spikeinterface/badge/?version=latest" alt="latest documentation" />
    </a>
  </td>
</tr>
<tr>
  <td>License</td>
  <td>
    <a href="https://github.com/SpikeInterface/spikeinterface/blob/master/LICENSE">
    <img src="https://img.shields.io/pypi/l/spikeinterface.svg" alt="license" />
    </a>
</td>
</tr>
<tr>
  <td>Build Status</td>
  <td>
    <a href="https://github.com/SpikeInterface/spikeinterface/actions/workflows/full-test-with-codecov.yml/badge.svg">
    <img src="https://github.com/SpikeInterface/spikeinterface/actions/workflows/full-test-with-codecov.yml/badge.svg" alt="CI build status" />
    </a>
  </td>
</tr>
<tr>
	<td>Codecov</td>
	<td>
		<a href="https://codecov.io/github/spikeinterface/spikeinterface">
		<img src="https://codecov.io/gh/spikeinterface/spikeinterface/branch/main/graphs/badge.svg" alt="codecov" />
		</a>
	</td>
</tr>
</table>

[![Twitter](https://img.shields.io/badge/@spikeinterface-%231DA1F2.svg?style=for-the-badge&logo=Twitter&logoColor=white)](https://twitter.com/spikeinterface) [![Mastodon](https://img.shields.io/badge/-@spikeinterface-%232B90D9?style=for-the-badge&logo=mastodon&logoColor=white)](https://fosstodon.org/@spikeinterface)


> :rocket::rocket::rocket:
> **New features!**: after months of development and testing, we are happy to announce that
> the latest release (0.101.0) includes a major API improvement: the `SortingAnalyzer`!
> To read more about why we did this, checkout the
> [SpikeInterface Enhancement Proposal](https://github.com/SpikeInterface/spikeinterface/issues/2282).
> Please follow this guide to transition from the old API to the new one:
> [Updating from legacy](https://spikeinterface.readthedocs.io/en/0.101.0/tutorials/waveform_extractor_to_sorting_analyzer.html).


SpikeInterface is a Python framework designed to unify preexisting spike sorting technologies into a single code base.

Please [Star](https://github.com/SpikeInterface/spikeinterface/stargazers) the project to support us and [Watch](https://github.com/SpikeInterface/spikeinterface/subscription) to always stay up-to-date!


With SpikeInterface, users can:

- read/write many extracellular file formats.
- pre-process extracellular recordings.
- run many popular, semi-automatic spike sorters (also in Docker/Singularity containers).
- post-process sorted datasets.
- compare and benchmark spike sorting outputs.
- compute quality metrics to validate and curate spike sorting outputs.
- visualize recordings and spike sorting outputs in several ways (matplotlib, sortingview, jupyter, ephyviewer)
- export a report and/or export to phy
- offer a powerful Qt-based viewer in a separate package [spikeinterface-gui](https://github.com/SpikeInterface/spikeinterface-gui)
- have powerful sorting components to build your own sorter.


## Documentation

Detailed documentation of the latest PyPI release of SpikeInterface can be found [here](https://spikeinterface.readthedocs.io/en/stable).

Detailed documentation of the development version of SpikeInterface can be found [here](https://spikeinterface.readthedocs.io/en/latest).

Several tutorials to get started can be found in [spiketutorials](https://github.com/SpikeInterface/spiketutorials).

Checkout our YouTube channel for video tutorials: [SpikeInterface YouTube Channel](https://www.youtube.com/@Spikeinterface).

There are also some useful notebooks [on our blog](https://spikeinterface.github.io) that cover advanced benchmarking
and sorting components.

You can also have a look at the [spikeinterface-gui](https://github.com/SpikeInterface/spikeinterface-gui).


## How to install spikeinterface

You can install the latest version of `spikeinterface` version with pip (using quotes ensures `pip install` works in all terminals/shells):

```bash
pip install "spikeinterface[full]"
```

The `[full]` option installs all the extra dependencies for all the different sub-modules.

To install all interactive widget backends, you can use:

```bash
 pip install "spikeinterface[full,widgets]"
```


To get the latest updates, you can install `spikeinterface` from source:

```bash
git clone https://github.com/SpikeInterface/spikeinterface.git
cd spikeinterface
pip install -e .
cd ..
```


## Citation

If you find SpikeInterface useful in your research, please cite:

```bibtex
@article{buccino2020spikeinterface,
  title={SpikeInterface, a unified framework for spike sorting},
  author={Buccino, Alessio Paolo and Hurwitz, Cole Lincoln and Garcia, Samuel and Magland, Jeremy and Siegle, Joshua H and Hurwitz, Roger and Hennig, Matthias H},
  journal={Elife},
  volume={9},
  pages={e61834},
  year={2020},
  publisher={eLife Sciences Publications Limited}
}
```

Please also cite other relevant papers for the specific components you use.
For a full list of references, please check the [references](https://spikeinterface.readthedocs.io/en/latest/references.html) page.
