Install & Compatibility
Where this runs
tested against v0.14.4 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.904s · 97.3MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 5.1s · import 0.818s · 94MB
98MB installed
● package 98MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Block
✓ from neo.core import Block
✗ from neo import Block
Block is now in neo.core, not top-level since 0.10.0.
Segment
✓ from neo.core import Segment
✗ from neo import Segment
Segment moved to neo.core.
AnalogSignal
✓ from neo.core import AnalogSignal
✗ from neo import AnalogSignal
AnalogSignal moved to neo.core.
SpikeTrain
✓ from neo.core import SpikeTrain
✗ from neo import SpikeTrain
SpikeTrain moved to neo.core.
Quickstart: creating a basic hierarchical data structure with Block, Segment, AnalogSignal, and SpikeTrain.
import neo
from neo.core import Block, Segment, AnalogSignal, SpikeTrain
import quantities as pq
import numpy as np
# Create a Block with a Segment
block = Block(name='example')
seg = Segment(name='segment1')
block.segments.append(seg)
# Create an AnalogSignal (1 second of data, 100 Hz)
signal = AnalogSignal(np.random.rand(100), sampling_rate=100*pq.Hz, units='mV', name='test')
seg.analogsignals.append(signal)
# Create a SpikeTrain
st = SpikeTrain([0.1, 0.2, 0.3, 0.5]*pq.s, t_stop=1.0*pq.s, units='s', name='test_spikes')
seg.spiketrains.append(st)
print('Block:', block)
print('Signals:', seg.analogsignals)
print('Spike trains:', seg.spiketrains)
Errors
Common errors & fixes
ImportError: cannot import name 'Block' from 'neo'
Block and other core classes moved from neo top-level to neo.core in version 0.10.0.
fixUse 'from neo.core import Block'.
ValueError: Must supply units for AnalogSignal
AnalogSignal requires units parameter as a quantities object.
fixAdd units='mV' or similar using quantities (import quantities as pq).
TypeError: unsupported operand type(s) for /: 'Quantity' and 'Quantity'
Mixing incompatible units in operations.
fixConvert units to a common base before arithmetic, e.g., signal.rescale('mV'). Upgrade
Version history
0.14.4latest on PyPI · released Mar 12, 2026
Audit
Dependencies
numpyrequiredNumerical arrays and mathematical operations
quantitiesrequiredPhysical quantities with units