Skip to main content

Generate spike trains (Poisson, gamma renewal, regular, inhomogeneous) in pure Python with zero dependencies.

Project description

spikegen

spikegen logo

PyPI CI License: MIT

Generate spike trains in pure Python with zero dependencies. Poisson, gamma renewal, regular, and inhomogeneous processes, returned as plain sorted lists of spike times, with explicit seeds for reproducibility.

Install

pip install spikegen

30-second example

from spikegen import homogeneous_poisson, regular, gamma_renewal, with_refractory

homogeneous_poisson(rate=50.0, duration=2.0, seed=0)   # Poisson spikes in [0, 2)
regular(rate=10.0, duration=1.0)                        # [0.0, 0.1, 0.2, ...]
gamma_renewal(rate=20.0, shape=2.0, duration=1.0, seed=0)  # more regular than Poisson

spikes = homogeneous_poisson(rate=80.0, duration=1.0, seed=0)
with_refractory(spikes, refractory=0.002)              # enforce a 2 ms refractory period

Times are in the same units as 1 / rate (seconds if rate is in Hz). Seeded processes are reproducible: the same seed gives the same train.

Why this exists

Generating synthetic spike trains is a daily need, but the generators live inside heavy frameworks: elephant requires neo and quantities, pyspike is NumPy-based, and other options are old or partial. spikegen is a small, dependency-free generator that returns plain lists of floats, so reproducible spike trains are one import away. It pairs with spikedist: generate trains, then measure the distance between them.

Processes

  • regular(rate, duration): evenly spaced spikes. Deterministic.
  • homogeneous_poisson(rate, duration, seed): constant-rate Poisson process.
  • inhomogeneous_poisson(rate_fn, max_rate, duration, seed): time-varying rate by thinning.
  • gamma_renewal(rate, shape, duration, seed): gamma inter-spike intervals; shape 1 is Poisson, larger shape is more regular.
  • with_refractory(times, refractory): drop spikes within a minimum interval.

All parameters are keyword-only and explicit.

Testing

pip install -e ".[dev]"
pytest

Tests cover exact values for the deterministic generators, seeded reproducibility, the rate-bound and ordering invariants, and the validation paths, with property tests via Hypothesis.

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spikegen-0.1.0.tar.gz (658.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spikegen-0.1.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file spikegen-0.1.0.tar.gz.

File metadata

  • Download URL: spikegen-0.1.0.tar.gz
  • Upload date:
  • Size: 658.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for spikegen-0.1.0.tar.gz
Algorithm Hash digest
SHA256 62a9db68db66e6574084052acbac16157737e763548f14f00ffadb925148b31e
MD5 1fe6b275fb81dc6d2bfb4a96e1241cf6
BLAKE2b-256 4dd81149d6e5ce459e22aee9a794a2b0c6bbb945c18f353b00c91366e16af15a

See more details on using hashes here.

File details

Details for the file spikegen-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: spikegen-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for spikegen-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c4d6117eeab6ac89a45188661cb241af2d6b87986d346dddc0765fe376aba769
MD5 6630e6cab40e2600563de8184f411422
BLAKE2b-256 049a9985316eb225acab60acf1cd8e3dc9465392d2359c3df16152c3f2780552

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page