← Back

Module lib

<p>Joule Standard Library - Spiking Neural Networks Neuromorphic computing with biologically-inspired neuron models Energy-efficient computation via event-driven processing</p>

struct Spike

A spike event at a specific time

Source: lib.joule:16

fn new(neuron_id: usize, time: f64) -> Self

Source: lib.joule:24

struct SpikeTrain

Spike train: a sequence of spikes from one or more neurons

Source: lib.joule:30

fn new(duration: f64) -> Self

Create an empty spike train

Source: lib.joule:37

fn from_times(neuron_id: usize, times: &[f64], duration: f64) -> Self

Create from list of spike times for a single neuron

Source: lib.joule:42

fn add_spike(&mut self, spike: Spike)

Add a spike

Source: lib.joule:50

fn firing_rate(&self, neuron_id: usize) -> f64

Get firing rate (Hz)

Source: lib.joule:55

fn isi(&self, neuron_id: usize) -> Vec<f64>

Get inter-spike intervals

Source: lib.joule:63

trait NeuronModel

Trait for neuron models

Source: lib.joule:81

fn membrane_potential(&self) -> f64;

Get current membrane potential

Source: lib.joule:83

fn update(&mut self, input_current: f64, dt: f64) -> Option<Spike>;

Update neuron state with input current

Source: lib.joule:86

fn reset(&mut self);

Reset to resting state

Source: lib.joule:89

struct LIF

Leaky Integrate-and-Fire (LIF) neuron Simple, computationally efficient, widely used

Source: lib.joule:94

fn new(id: usize) -> Self

Create a new LIF neuron with default parameters

Source: lib.joule:117

fn with_params(

Create with custom parameters

Source: lib.joule:132

fn id(&self) -> usize

Get the neuron ID

Source: lib.joule:155

fn membrane_potential(&self) -> f64

Source: lib.joule:161

fn update(&mut self, input_current: f64, dt: f64) -> Option<Spike>

Source: lib.joule:166

fn reset(&mut self)

Source: lib.joule:188

struct Izhikevich

Izhikevich neuron model Rich dynamics, can reproduce many biological patterns

Source: lib.joule:196

fn regular_spiking(id: usize) -> Self

Regular spiking (RS) neuron

Source: lib.joule:215

fn intrinsically_bursting(id: usize) -> Self

Intrinsically bursting (IB) neuron

Source: lib.joule:228

fn chattering(id: usize) -> Self

Chattering (CH) neuron

Source: lib.joule:241

fn fast_spiking(id: usize) -> Self

Fast spiking (FS) neuron

Source: lib.joule:254

fn low_threshold_spiking(id: usize) -> Self

Low-threshold spiking (LTS) neuron

Source: lib.joule:267

fn membrane_potential(&self) -> f64

Source: lib.joule:281

fn update(&mut self, input_current: f64, dt: f64) -> Option<Spike>

Source: lib.joule:286

fn reset(&mut self)

Source: lib.joule:305

struct HodgkinHuxley

Hodgkin-Huxley neuron model Biophysically detailed, includes ion channel dynamics

Source: lib.joule:313

fn new(id: usize) -> Self

Source: lib.joule:327

fn membrane_potential(&self) -> f64

Source: lib.joule:339

fn update(&mut self, input_current: f64, dt: f64) -> Option<Spike>

Source: lib.joule:344

fn reset(&mut self)

Source: lib.joule:348

struct Synapse

Synapse connecting two neurons

Source: lib.joule:361

fn new(pre: usize, post: usize, weight: f64) -> Self

Source: lib.joule:373

fn with_delay(pre: usize, post: usize, weight: f64, delay: f64) -> Self

Source: lib.joule:377

fn excitatory(pre: usize, post: usize, weight: f64) -> Self

Excitatory synapse

Source: lib.joule:382

fn inhibitory(pre: usize, post: usize, weight: f64) -> Self

Inhibitory synapse

Source: lib.joule:387

trait PlasticityRule

Trait for synaptic plasticity rules

Source: lib.joule:397

fn update(&self, synapse: &mut Synapse, pre_spike: f64, post_spike: f64);

Source: lib.joule:398

struct STDP

Spike-Timing-Dependent Plasticity (STDP)

Source: lib.joule:402

fn new() -> Self

Create STDP with default parameters

Source: lib.joule:419

fn asymmetric() -> Self

Asymmetric STDP (stronger LTD)

Source: lib.joule:431

fn update(&self, synapse: &mut Synapse, pre_spike: f64, post_spike: f64)

Source: lib.joule:445

struct RewardSTDP

Reward-modulated STDP (R-STDP)

Source: lib.joule:461

fn new() -> Self

Source: lib.joule:468

fn apply_reward(&self, synapse: &mut Synapse, eligibility: f64, reward: f64)

Source: lib.joule:477

struct SpikingNetwork

Spiking neural network

Source: lib.joule:488

fn new() -> Self

Create a new network

Source: lib.joule:496

fn add_neuron(&mut self, neuron: N) -> usize

Add a neuron

Source: lib.joule:505

fn add_synapse(&mut self, synapse: Synapse)

Add a synapse

Source: lib.joule:512

fn connect(&mut self, pre: usize, post: usize, weight: f64)

Connect two neurons

Source: lib.joule:517

fn with_plasticity<P: PlasticityRule + 'static>(mut self, rule: P) -> Self

Set plasticity rule

Source: lib.joule:522

fn num_neurons(&self) -> usize

Get number of neurons

Source: lib.joule:528

fn num_synapses(&self) -> usize

Get number of synapses

Source: lib.joule:533

fn reset(&mut self)

Reset all neurons

Source: lib.joule:538

fn feedforward<N: NeuronModel, F: Fn(usize) -> N>(

Source: lib.joule:551

fn reservoir<N: NeuronModel, F: Fn(usize) -> N>(

Source: lib.joule:561

fn small_world<N: NeuronModel, F: Fn(usize) -> N>(

Source: lib.joule:572

enum SNNBackend

Backend for SNN simulation

Source: lib.joule:587

struct SNNSimulator

SNN Simulator

Source: lib.joule:599

fn new(backend: SNNBackend) -> Self

Create a new simulator

Source: lib.joule:606

fn with_dt(mut self, dt: f64) -> Self

Set time step (for clock-driven)

Source: lib.joule:611

fn run<N: NeuronModel>(

Source: lib.joule:618

fn estimate_energy<N: NeuronModel>(

Estimate energy cost

Source: lib.joule:628

fn rate(value: f64, duration: f64, max_rate: f64) -> SpikeTrain

Source: lib.joule:658

fn temporal(value: f64, max_value: f64, max_time: f64) -> SpikeTrain

Source: lib.joule:664

fn population(value: f64, num_neurons: usize, sigma: f64, duration: f64) -> SpikeTrain

Source: lib.joule:670

fn rank_order(values: &[f64]) -> SpikeTrain

Source: lib.joule:676

fn phase(value: f64, oscillation_freq: f64, duration: f64) -> SpikeTrain

Source: lib.joule:682

fn rate(spikes: &SpikeTrain, neuron_id: usize, max_rate: f64) -> f64

Source: lib.joule:693

fn first_spike(spikes: &SpikeTrain, neuron_id: usize, max_time: f64) -> f64

Source: lib.joule:699

fn population(spikes: &SpikeTrain, neuron_ids: &[usize]) -> f64

Source: lib.joule:705