python-neo

Neo is a package for representing electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats

https://github.com/neuralensemble/python-neo

Science Score: 62.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    17 of 112 committers (15.2%) from academic institutions
  • Institutional organization owner
    Organization neuralensemble has institutional domain (neuralensemble.org)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.7%) to scientific vocabulary

Keywords from Contributors

neuroscience gtk qt tk wx neuroimaging closember bids meg eeg
Last synced: 6 months ago · JSON representation ·

Repository

Neo is a package for representing electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats

Basic Info
Statistics
  • Stars: 347
  • Watchers: 31
  • Forks: 259
  • Open Issues: 146
  • Releases: 13
Created almost 14 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct Citation Authors Codemeta

README.rst

===
Neo
===

Neo is a Python package for working with electrophysiology data in Python, together
with support for reading a wide range of neurophysiology file formats, including
Spike2, NeuroExplorer, AlphaOmega, Axon, Blackrock, Plexon, Tdt, and support for
writing to a subset of these formats plus non-proprietary formats including HDF5.

The goal of Neo is to improve interoperability between Python tools for
analyzing, visualizing and generating electrophysiology data by providing a common,
shared object model. In order to be as lightweight a dependency as possible,
Neo is deliberately limited to represention of data, with no functions for data
analysis or visualization.

Neo is used by a number of other software tools, including
SpykeViewer_ (data analysis and visualization), Elephant_ (data analysis),
the G-node_ suite (databasing), PyNN_ (simulations), tridesclous_ (spike sorting)
and ephyviewer_ (data visualization).
OpenElectrophy_ (data analysis and visualization) uses an older version of neo.

Neo implements a hierarchical data model well adapted to intracellular and
extracellular electrophysiology and EEG data with support for multi-electrodes
(for example tetrodes). Neo's data objects build on the quantities package,
which in turn builds on NumPy by adding support for physical dimensions. Thus
Neo objects behave just like normal NumPy arrays, but with additional metadata,
checks for dimensional consistency and automatic unit conversion.

A project with similar aims but for neuroimaging file formats is `NiBabel`_.
Neo is a `NumFocus Affiliated Project`_.

Code status
-----------

.. image:: https://img.shields.io/pypi/v/neo.svg
   :target: https://pypi.python.org/pypi/neo
   :alt: PyPI Release Version
.. image:: https://github.com/NeuralEnsemble/python-neo/actions/workflows/core-test.yml/badge.svg?event=push&branch=master
   :target: https://github.com/NeuralEnsemble/python-neo/actions?query=event%3Apush+branch%3Amaster
   :alt: Core Test Status (Github Actions)
.. image:: https://github.com/NeuralEnsemble/python-neo/actions/workflows/io-test_trigger.yml/badge.svg?event=push&branch=master
   :target: https://github.com/NeuralEnsemble/python-neo/actions?query=event%3Apush+branch%3Amaster
   :alt: IO Test Status (Github Actions)
.. image:: https://coveralls.io/repos/NeuralEnsemble/python-neo/badge.png
   :target: https://coveralls.io/r/NeuralEnsemble/python-neo
   :alt: Unit Test Coverage

More information
----------------

- Home page: http://neuralensemble.org/neo
- Mailing list: http://neuralensemble.org/community
- Documentation: http://neo.readthedocs.io/
- Bug reports: https://github.com/NeuralEnsemble/python-neo/issues

For installation instructions, see doc/source/install.rst

To cite Neo in publications, see CITATION.txt

:copyright: Copyright 2010-2025 by the Neo team, see doc/source/authors.rst.
:license: 3-Clause Revised BSD License, see LICENSE.txt for details.

Funding
-------

Development of Neo has been partially funded by the European Union Sixth Framework Program (FP6) under
grant agreement FETPI-015879 (FACETS), by the European Union Seventh Framework Program (FP7/2007­-2013)
under grant agreements no. 269921 (BrainScaleS) and no. 604102 (HBP),
and by the European Union’s Horizon 2020 Framework Programme for
Research and Innovation under the Specific Grant Agreements No. 720270 (Human Brain Project SGA1),
No. 785907 (Human Brain Project SGA2) and No. 945539 (Human Brain Project SGA3),
and by the European Union's Research and Innovation Program Horizon Europe Grant Agreement No. 101147319 (EBRAINS 2.0).

.. _OpenElectrophy: https://github.com/OpenElectrophy/OpenElectrophy
.. _Elephant: http://neuralensemble.org/elephant
.. _G-node: http://www.g-node.org/
.. _Neuroshare: http://neuroshare.org/
.. _SpykeViewer: https://spyke-viewer.readthedocs.org/en/latest/
.. _NiBabel: http://nipy.sourceforge.net/nibabel/
.. _PyNN: http://neuralensemble.org/PyNN
.. _quantities: http://pypi.python.org/pypi/quantities
.. _`NeuralEnsemble mailing list`: http://neuralensemble.org/community
.. _`issue tracker`: https://github.c
.. _tridesclous: https://github.com/tridesclous/tridesclous
.. _ephyviewer: https://github.com/NeuralEnsemble/ephyviewer
.. _`NumFocus Affiliated Project`: https://numfocus.org/sponsored-projects/affiliated-projects

Owner

  • Name: NeuralEnsemble
  • Login: NeuralEnsemble
  • Kind: organization

Citation (CITATION.txt)

To cite Neo in publications, please use:

    Garcia S., Guarino D., Jaillet F., Jennings T.R., Pröpper R., Rautenberg P.L.,
    Rodgers C., Sobolev A.,Wachtler T., Yger P. and Davison A.P. (2014)
    Neo: an object model for handling electrophysiology data in multiple formats.
    Frontiers in Neuroinformatics 8:10: doi:10.3389/fninf.2014.00010

A BibTeX entry for LaTeX users is::

    @article{neo14,
        author = {Garcia S. and Guarino D. and Jaillet F. and Jennings T.R. and Pröpper R. and
                  Rautenberg P.L. and Rodgers C. and Sobolev A. and Wachtler T. and Yger P.
                  and Davison A.P.},
        doi = {10.3389/fninf.2014.00010},
        full_text = {http://www.frontiersin.org/Journal/10.3389/fninf.2014.00010/abstract},
        journal = {Frontiers in Neuroinformatics},
        month = {February},
        title = {Neo: an object model for handling electrophysiology data in multiple formats},
        volume = {8:10},
        year = {2014}
    }

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "license": "https://spdx.org/licenses/BSD-3-Clause",
  "codeRepository": "https://github.com/NeuralEnsemble/python-neo",
  "contIntegration": "https://github.com/NeuralEnsemble/python-neo/actions",
  "dateModified": "2025-10-13",
  "downloadUrl": "https://files.pythonhosted.org/packages/12/74/2906034ce92f7fb76dac5f095dcbb2b061f55b1f6eda53fc45335c1689e2/neo-0.14.3.tar.gz",
  "issueTracker": "https://github.com/NeuralEnsemble/python-neo/issues",
  "name": "Neo",
  "version": "0.14.3",
  "identifier": "RRID:SCR_000634",
  "description": "Neo is a Python package for working with electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats, including Spike2, NeuroExplorer, AlphaOmega, Axon, Blackrock, Plexon, Tdt, and support for writing to a subset of these formats plus non-proprietary formats including HDF5.\n\nThe goal of Neo is to improve interoperability between Python tools for analyzing, visualizing and generating electrophysiology data by providing a common, shared object model. In order to be as lightweight a dependency as possible, Neo is deliberately limited to represention of data, with no functions for data analysis or visualization.\n\nNeo is used by a number of other software tools, including SpykeViewer (data analysis and visualization), Elephant (data analysis), the G-node suite (databasing), PyNN (simulations), tridesclous_ (spike sorting) and ephyviewer (data visualization).\n\nNeo implements a hierarchical data model well adapted to intracellular and extracellular electrophysiology and EEG data with support for multi-electrodes (for example tetrodes). Neo's data objects build on the quantities package, which in turn builds on NumPy by adding support for physical dimensions. Thus Neo objects behave just like normal NumPy arrays, but with additional metadata, checks for dimensional consistency and automatic unit conversion.",
  "applicationCategory": "neuroscience",
  "releaseNotes": "https://neo.readthedocs.io/en/latest/releases/0.14.3.html",
  "funding": "https://cordis.europa.eu/project/id/945539",
  "developmentStatus": "active",
  "referencePublication": "https://doi.org/10.3389/fninf.2014.00010",
  "funder": {
    "@type": "Organization",
    "name": "European Commission"
  },
  "programmingLanguage": [
    "Python"
  ],
  "operatingSystem": [
    "Linux",
    "Windows",
    "macOS"
  ],
  "softwareRequirements": [
    "Python (version 3.9+)",
    "see https://github.com/NeuralEnsemble/python-neo/blob/master/pyproject.toml"
  ],
  "relatedLink": [
    "https://neo.readthedocs.io",
    "https://neuralensemble.org/community"
  ],
  "author": [
    {
      "@type": "Person",
      "givenName": "Samuel",
      "familyName": "Garcia"
    },
    {
      "@type": "Person",
      "@id": "http://orcid.org/0000-0002-4793-7541",
      "givenName": "Andrew P.",
      "familyName": "Davison"
    },
    {
      "@type": "Person",
      "givenName": "Chris",
      "familyName": "Rodgers"
    },
    {
      "@type": "Person",
      "givenName": "Pierre",
      "familyName": "Yger"
    },
    {
      "@type": "Person",
      "givenName": "Yann",
      "familyName": "Mahnoun"
    },
    {
      "@type": "Person",
      "givenName": "Luc",
      "familyName": "Estabanez"
    },
    {
      "@type": "Person",
      "givenName": "Andrey",
      "familyName": "Sobolev"
    },
    {
      "@type": "Person",
      "givenName": "Thierry",
      "familyName": "Brizzi"
    },
    {
      "@type": "Person",
      "givenName": "Florent",
      "familyName": "Jaillet"
    },
    {
      "@type": "Person",
      "givenName": "Philipp",
      "familyName": "Rautenberg"
    },
    {
      "@type": "Person",
      "givenName": "Thomas",
      "familyName": "Wachtler"
    },
    {
      "@type": "Person",
      "givenName": "Cyril",
      "familyName": "Dejean"
    },
    {
      "@type": "Person",
      "givenName": "Robert",
      "familyName": "Prpper"
    },
    {
      "@type": "Person",
      "givenName": "Domenico",
      "familyName": "Guarino"
    },
    {
      "@type": "Person",
      "givenName": "Achilleas",
      "familyName": "Koutsou"
    },
    {
      "@type": "Person",
      "givenName": "Erik",
      "familyName": "Li"
    },
    {
      "@type": "Person",
      "givenName": "Georg",
      "familyName": "Raiser"
    },
    {
      "@type": "Person",
      "givenName": "Joffrey",
      "familyName": "Gonin"
    },
    {
      "@type": "Person",
      "givenName": "Kyler",
      "familyName": "Brown"
    },
    {
      "@type": "Person",
      "givenName": "Mikkel Elle",
      "familyName": "Lepperd"
    },
    {
      "@type": "Person",
      "givenName": "C Daniel",
      "familyName": "Meliza"
    },
    {
      "@type": "Person",
      "givenName": "Michael",
      "familyName": "Denker"
    },
    {
      "@type": "Person",
      "givenName": "Julia",
      "familyName": "Sprenger"
    },
    {
      "@type": "Person",
      "givenName": "Maximilian",
      "familyName": "Schmidt"
    },
    {
      "@type": "Person",
      "givenName": "Johanna",
      "familyName": "Senk"
    },
    {
      "@type": "Person",
      "givenName": "Carlos",
      "familyName": "Canova"
    },
    {
      "@type": "Person",
      "givenName": "Hlissande",
      "familyName": "Fragnaud"
    },
    {
      "@type": "Person",
      "givenName": "Mark",
      "familyName": "Hollenbeck"
    },
    {
      "@type": "Person",
      "givenName": "Mieszko",
      "familyName": "Grodzicki"
    },
    {
      "@type": "Person",
      "givenName": "Rick",
      "familyName": "Gerkin"
    },
    {
      "@type": "Person",
      "givenName": "Matthieu",
      "familyName": "Snoville"
    },
    {
      "@type": "Person",
      "givenName": "Chadwick",
      "familyName": "Boulay"
    },
    {
      "@type": "Person",
      "givenName": "Bjrn",
      "familyName": "Mller"
    },
    {
      "@type": "Person",
      "givenName": "William",
      "familyName": "Hart"
    },
    {
      "@type": "Person",
      "alternateName": "erikli(github)"
    },
    {
      "@type": "Person",
      "givenName": "Jeffrey",
      "familyName": "Gill"
    },
    {
      "@type": "Person",
      "givenName": "Lucas",
      "alternateName": "lkoelman@github"
    },
    {
      "@type": "Person",
      "givenName": "Mark",
      "familyName": "Histed"
    },
    {
      "@type": "Person",
      "givenName": "Mike",
      "familyName": "Sintsov"
    },
    {
      "@type": "Person",
      "givenName": "Scott W",
      "familyName": "Harden"
    },
    {
      "@type": "Person",
      "givenName": "Chek Yin",
      "familyName": "Choi",
      "alternateName": "hkchekc@github"
    },
    {
      "@type": "Person",
      "givenName": "Corentin",
      "familyName": "Fragnaud"
    },
    {
      "@type": "Person",
      "givenName": "Alexander",
      "familyName": "Kleinjohann"
    },
    {
      "@type": "Person",
      "givenName": "Christian",
      "familyName": "Kothe"
    },
    {
      "@type": "Person",
      "alternateName": "rishidhingra@github"
    },
    {
      "@type": "Person",
      "givenName": "Hugo",
      "familyName": "van Kemenade"
    },
    {
      "@type": "Person",
      "givenName": "Aitor",
      "familyName": "Morales-Gregorio"
    },
    {
      "@type": "Person",
      "givenName": "Peter N",
      "familyName": "Steinmetz"
    },
    {
      "@type": "Person",
      "givenName": "Shashwat",
      "familyName": "Sridhar"
    },
    {
      "@type": "Person",
      "givenName": "Alessio",
      "familyName": "Buccino"
    },
    {
      "@type": "Person",
      "givenName": "Regimantas",
      "familyName": "Jurkus"
    },
    {
      "@type": "Person",
      "givenName": "Steffen",
      "familyName": "Buergers"
    },
    {
      "@type": "Person",
      "givenName": "Etienne",
      "familyName": "Combrisson"
    },
    {
      "@type": "Person",
      "givenName": "Ben",
      "familyName": "Dichter"
    },
    {
      "@type": "Person",
      "givenName": "Elodie",
      "familyName": "Legoue"
    },
    {
      "@type": "Person",
      "givenName": "Heberto",
      "familyName": "Mayorquin"
    },
    {
      "@type": "Person",
      "givenName": "Thomas",
      "familyName": "Perret"
    },
    {
      "@type": "Person",
      "givenName": "Zach",
      "familyName": "McKenzie"
    },
    {
      "@type": "Person",
      "givenName": "Moritz Alexander",
      "familyName": "Kern"
    },
    {
      "@type": "Person",
      "givenName": "Joscha",
      "familyName": "Schmiedt"
    },
    {
      "@type": "Person",
      "givenName": "Daniel P.",
      "familyName": "Crepeau"
    },
    {
      "@type": "Person",
      "givenName": "Divyansh",
      "familyName": "Gupta"
    },
    {
      "@type": "Person",
      "givenName": "Nate",
      "familyName": "Dolensek"
    },
    {
      "@type": "Person",
      "givenName": "Philipp",
      "familyName": "Hornauer"
    },
    {
      "@type": "Person",
      "givenName": "Robert",
      "familyName": "Wolff"
    },
    {
      "@type": "Person",
      "givenName": "Jules",
      "familyName": "Lebert"
    },
    {
      "@type": "Person",
      "givenName": "Benjamin",
      "familyName": "Heasly"
    },
    {
      "@type": "Person",
      "givenName": "Baptiste",
      "familyName": "Grimaud"
    },
    {
      "@type": "Person",
      "givenName": "Cody",
      "familyName": "Baker"
    },
    {
      "@type": "Person",
      "givenName": "Fernando J.",
      "familyName": "Chaure"
    },
    {
      "@type": "Person",
      "alternateName": "Filipe@github"
    },
    {
      "@type": "Person",
      "givenName": "Matthias",
      "familyName": "Klumpp"
    },
    {
      "@type": "Person",
      "givenName": "Greg",
      "familyName": "Knoll"
    },
    {
      "@type": "Person",
      "givenName": "Chris",
      "familyName": "Halcrow"
    },
    {
      "@type": "Person",
      "givenName": "Szonja",
      "familyName": "Weigl"
    },
    {
      "@type": "Person",
      "givenName": "Teo",
      "familyName": "Lohrer"
    },
    {
      "@type": "Person",
      "givenName": "Kyu Hun",
      "familyName": "Lee"
    },
    {
      "@type": "Person",
      "givenName": "Xin",
      "familyName": "Niu"
    },
    {
      "@type": "Person",
      "givenName": "Anthony",
      "familyName": "Pinto"
    },
    {
      "@type": "Person",
      "givenName": "Chris",
      "familyName": "Heydrick"
    },
    {
      "@type": "Person",
      "givenName": "Nikhil",
      "familyName": "Chandra"
    },
    {
      "@type": "Person",
      "givenName": "Luigi",
      "familyName": "Petrucco"
    },
    {
      "@type": "Person",
      "givenName": "Tommaso",
      "familyName": "Lambresa"
    },
    {
      "@type": "Person",
      "givenName": "Rmi",
      "familyName": "Proville"
    },
    {
      "@type": "Person",
      "givenName": "Nina",
      "familyName": "Kudryashova"
    },
    {
      "@type": "Person",
      "givenName": "Paul",
      "familyName": "Adkisson"
    },
    {
      "@type": "Person",
      "givenName": "Akshaj",
      "familyName": "Verma"
    },
    {
      "@type": "Person",
      "givenName": "Letizia",
      "familyName": "Signorelli"
    },
    {
      "@type": "Person",
      "givenName": "Daniel",
      "familyName": "Parthier"
    }
  ]
}

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 3,175
  • Total Committers: 112
  • Avg Commits per committer: 28.348
  • Development Distribution Score (DDS): 0.861
Top Committers
Name Email Commits
Samuel Garcia s****e@g****m 441
Andrew Davison a****n@u****r 318
sgarcia s****a@a****a 259
Julia Sprenger j****r@r****e 218
Björn Müller b****r@f****e 199
Achilleas Koutsou a****k@g****m 158
sprenger j****r@u****r 152
Todd Jennings t****n@g****m 132
Peter N. Steinmetz P****z@s****g 124
Samuel Garcia s****e@g****m 70
kleinjohann a****n@f****e 68
Andrew Davison a****n@c****r 64
apdavison a****n@a****a 60
Jeffrey Gill j****l@g****m 57
Alessio Buccino a****7@g****m 55
Michael Denker m****r@f****e 51
Mikkel Elle Lepperød l****k@g****m 50
crodger c****r@a****a 47
Elodie Legouée e****e@u****r 45
Thomas Perret t****t@i****r 35
teogale c****d@g****m 28
Robert Pröpper r****r@g****m 27
ygordon y****n@a****a 26
Chadwick Boulay c****y@g****m 26
mgr0dzicki m****b@g****m 25
sbuergers s****s@g****m 24
Regimantas Jurkus r****s@g****m 22
h-mayorquin h****n@g****m 22
amchagas a****s@g****m 21
Chek Yin Choi c****7@g****m 20
and 82 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 282
  • Total pull requests: 583
  • Average time to close issues: over 1 year
  • Average time to close pull requests: about 1 month
  • Total issue authors: 138
  • Total pull request authors: 59
  • Average comments per issue: 3.55
  • Average comments per pull request: 3.09
  • Merged pull requests: 425
  • Bot issues: 1
  • Bot pull requests: 60
Past Year
  • Issues: 56
  • Pull requests: 175
  • Average time to close issues: 12 days
  • Average time to close pull requests: 3 days
  • Issue authors: 33
  • Pull request authors: 26
  • Average comments per issue: 2.89
  • Average comments per pull request: 1.79
  • Merged pull requests: 110
  • Bot issues: 1
  • Bot pull requests: 29
Top Authors
Issue Authors
  • JuliaSprenger (44)
  • zm711 (15)
  • apdavison (14)
  • h-mayorquin (14)
  • samuelgarcia (14)
  • luiztauffer (5)
  • rgutzen (4)
  • mdenker (4)
  • bendichter (4)
  • nikhilchandra (3)
  • PeterNSteinmetz (3)
  • sanjayankur31 (3)
  • eduardosand (3)
  • alejoe91 (3)
  • RobertoDF (3)
Pull Request Authors
  • zm711 (154)
  • h-mayorquin (64)
  • github-actions[bot] (60)
  • JuliaSprenger (60)
  • alejoe91 (46)
  • apdavison (36)
  • PeterNSteinmetz (24)
  • samuelgarcia (22)
  • luiztauffer (8)
  • cboulay (8)
  • nikhilchandra (7)
  • mahlzahn (6)
  • easy-electrophysiology (5)
  • guptadivyansh (5)
  • gkBCCN (4)
Top Labels
Issue Labels
bug (99) enhancement (49) IO (44) Documentation (16) Core (13) good-for-beginners (7) needs-input (6) question (5) continuous-integration (4) New IO Class (4) discussion (3) blocker (2) task (2)
Pull Request Labels
IO (37) enhancement (26) Documentation (18) bug (16) continuous-integration (15) Core (14) defect (9) New IO Class (8) discussion (3) task (3) needs-input (2) work-in-progress (1)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 57,320 last-month
  • Total docker downloads: 94
  • Total dependent packages: 34
    (may contain duplicates)
  • Total dependent repositories: 171
    (may contain duplicates)
  • Total versions: 44
  • Total maintainers: 6
pypi.org: neo

Neo is a package for representing electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats

  • Versions: 33
  • Dependent Packages: 32
  • Dependent Repositories: 170
  • Downloads: 57,320 Last month
  • Docker Downloads: 94
Rankings
Dependent packages count: 0.6%
Dependent repos count: 1.2%
Average: 1.4%
Downloads: 1.6%
Docker downloads count: 2.3%
Last synced: 6 months ago
conda-forge.org: python-neo
  • Versions: 11
  • Dependent Packages: 2
  • Dependent Repositories: 1
Rankings
Forks count: 12.2%
Dependent packages count: 19.6%
Average: 20.1%
Stargazers count: 24.4%
Dependent repos count: 24.4%
Last synced: 6 months ago

Dependencies

doc/requirements_docs.txt pypi
  • docutils <0.18
  • numpy >=1.16.1
  • quantities >=0.12.1
setup.py pypi
  • numpy >=1.18.5
  • packaging *
  • quantities >=0.12.1
.github/workflows/core-test.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/ebrains.yml actions
  • wei/git-sync v3 composite
.github/workflows/io-test.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/caches_cron_job.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • conda-incubator/setup-miniconda v2.2.0 composite
pyproject.toml pypi
  • numpy >=1.19.5
  • packaging *
  • quantities >=0.14.1