neo
Neo is a package for representing electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats
What it is and what it does
Neo is a data representation layer for electrophysiology research, built on top of NumPy and the quantities package to add physical units and dimensional consistency to neural recording data. It defines a hierarchical object model (Block, Segment, ChannelIndex, Unit, etc.) that maps naturally to intracellular, extracellular, and multi-electrode recordings, and provides I/O support for both proprietary formats (Spike2, Plexon, Blackrock, Tdt, AlphaOmega, NeuroExplorer, Axon) and open formats like HDF5.
Neo is deliberately designed as a lightweight data container with no analysis or visualization functions—its role is to standardize how electrophysiology data is represented so that other tools (like Elephant for analysis, SpykeViewer for visualization, or PyNN for simulations) can work with a common object model. Data stored in Neo objects behave like NumPy arrays but carry metadata, enforce unit compatibility, and support automatic conversion between measurement scales.
Use it for:
- Load multi-format neurophysiology recordings into a single standardized Python object for downstream analysis pipelines.
- Convert between proprietary spike recording formats (Spike2, Plexon, Blackrock) to enable cross-platform data sharing.
- Build analysis workflows that accept Neo data objects from multiple recording systems without format-specific parsing code.
- Store electrophysiology data with physical units and dimensional metadata to prevent unit conversion errors in calculations.
- Integrate electrophysiology data with simulation frameworks like PyNN that expect Neo-compatible data structures.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Neo provides a unified data model for representing electrophysiology and EEG data in Python, with built-in support for reading and writing multiple neurophysiology file formats including Spike2, NeuroExplorer, AlphaOmega, Axon, Blackrock, Plexon, and Tdt.
Yes. Neo is actively maintained, has no known security vulnerabilities, uses a permissive license, and is the de facto standard data model for electrophysiology in Python. Install it if you work with neural recordings, need to read multiple file formats, or want to integrate with other neuroscience tools that depend on Neo's object model.
Install
neo on PyPI
pip
pip install neouv
uv add neopoetry
poetry add neoInstalling neo
Before you install
Installation is straightforward with low friction; the package has three runtime dependencies (packaging, numpy, quantities) and is actively maintained with a recent release within the last 50 days.
License in practice
BSD-3-Clause is permissive, allowing commercial use, modification, and distribution with minimal restrictions beyond retaining the license notice.
Quickstart
pip install neo
import neo
block = neo.Block(name="recording")
segment = neo.Segment(name="trial_1")
block.segments.append(segment)
Requires Python 3.10 or later; numpy and quantities packages must be installed as runtime dependencies.
Verify before relying
- Whether the package supports reading and writing all listed formats equally well or if some are read-only.
- Performance characteristics when working with large multi-electrode datasets.
- Whether unit conversion and dimensional consistency checks have measurable overhead.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — packaging, numpy, quantities |
| Maintenance | actively maintained — 50 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 126,420/month — #11,776 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: neo-0.14.5-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
mne-bidsMNE-BIDS reads and writes neuroimaging datasets…
permissive · top 15,000 on PyPI
pynwbPyNWB provides a high-level Python API for…
permissive · top 15,000 on PyPI
mneMNE-Python provides tools for exploring,…
permissive · top 5,000 on PyPI
nibabelNiBabel reads and writes neuroimaging file…
permissive · top 5,000 on PyPI
nilearnNilearn provides statistical and…
permissive · top 15,000 on PyPI
pyEDFlibpyEDFlib reads and writes EDF+/BDF+ biomedical…
permissive · top 15,000 on PyPI
edfioedfio reads and writes EDF, EDF+C, BDF, and…
permissive · top 15,000 on PyPI
pybidsPyBIDS provides a Python interface to query,…
permissive · top 15,000 on PyPI
fiftyone-brainFiftyOne Brain provides AI/ML capabilities for…
permissive · top 15,000 on PyPI
nipypeNipype provides a uniform Python interface to…
permissive · top 15,000 on PyPI