Skip to main content

Spike-native transport for neuromorphic systems

Project description

SpikeLink

Spike-native transport for neuromorphic systems.

PyPI Python License Tests


Note on representation
SpikeLink does not replace digital computation. It operates post-binary within digital systems by transporting spike symbols without forcing early binary collapse.


Why SpikeLink?

Traditional Transport SpikeLink
SPIKE → ADC → BITS → DAC → SPIKE SPIKE → SPIKELINK → SPIKE
Conversion overhead Native transport
Cliff-edge failure Graceful degradation
Precision loss Symbol magnitude continuity

Key Properties:

  • Spike-native: No ADC/DAC conversion stages
  • Graceful degradation: Precision loss under noise, not data loss
  • EBRAINS compatible: Validated against Neo, Elephant, PyNN workflows
  • Time-coherent: Bounded timing, predictable behavior

Install

pip install spikelink

With EBRAINS ecosystem support:

pip install spikelink[neo]      # Neo adapter
pip install spikelink[elephant] # Neo + Elephant
pip install spikelink[full]     # Everything

Quick Start

from spikelink import SpikeTrain, SpikelinkCodec

# Create a spike train
train = SpikeTrain(times=[0.1, 0.2, 0.3, 0.4, 0.5])

# Encode to packets
codec = SpikelinkCodec()
packets = codec.encode_train(train)

# Decode back
recovered = codec.decode_packets(packets)

print(f"Original:  {train.times}")
print(f"Recovered: {recovered.times}")

Convenience API

import spikelink

# One-liner encode/decode
packets = spikelink.encode([0.1, 0.2, 0.3, 0.4, 0.5])
recovered = spikelink.decode(packets)

# Verify round-trip
passed = spikelink.verify(original, recovered)

Neo Integration

from spikelink.adapters import NeoAdapter
from spikelink import SpikelinkCodec
import neo
import quantities as pq

# From Neo SpikeTrain
neo_train = neo.SpikeTrain([0.1, 0.2, 0.3] * pq.s, t_stop=1.0 * pq.s)
our_train = NeoAdapter.from_neo(neo_train)

# Transport through SpikeLink
codec = SpikelinkCodec()
packets = codec.encode_train(our_train)
recovered = codec.decode_packets(packets)

# Back to Neo
recovered_neo = NeoAdapter.to_neo(recovered)

Verification

from spikelink import VerificationSuite, DegradationProfiler

# Run verification suite
suite = VerificationSuite()
results = suite.run_all(original_train)
suite.print_results(results)

# Profile degradation under noise
profiler = DegradationProfiler()
profile = profiler.profile(train, noise_levels=[0, 0.1, 1.0, 10.0])
profiler.print_profile(profile)

Graceful Degradation

SpikeLink degrades proportionally under noise — precision loss, not data loss:

Noise % Decimals Preserved
0.0% 6
0.1% 5
1.0% 4
10.0% 3

✓ Monotonic degradation confirmed (confidence never inflates)


Documentation


External Verification

SpikeLink has been externally verified against EBRAINS workflows:

  • Neo-compatible: SpikeTrain round-trip verified
  • Elephant-verified: Statistical fidelity confirmed
  • PyNN stress-tested: 380 neurons, 13,344 spikes, 100% preservation
  • Ready for integration with SpiNNaker and BrainScaleS

License

Apache 2.0 — See LICENSE for details.


About

Lightborne Intelligence
Truth > Consensus · Sovereignty > Control · Coherence > Speed

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

spikelink-0.1.1.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

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

spikelink-0.1.1-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

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