struct Spike
A spike event at a specific time
Source: lib.joule:16
struct SpikeA spike event at a specific time
Source: lib.joule:16
fn new(neuron_id: usize, time: f64) -> SelfSource: lib.joule:24
struct SpikeTrainSpike train: a sequence of spikes from one or more neurons
Source: lib.joule:30
fn new(duration: f64) -> SelfCreate an empty spike train
Source: lib.joule:37
fn from_times(neuron_id: usize, times: &[f64], duration: f64) -> SelfCreate 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) -> f64Get firing rate (Hz)
Source: lib.joule:55
fn isi(&self, neuron_id: usize) -> Vec<f64>Get inter-spike intervals
Source: lib.joule:63
trait NeuronModelTrait 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 LIFLeaky Integrate-and-Fire (LIF) neuron Simple, computationally efficient, widely used
Source: lib.joule:94
fn new(id: usize) -> SelfCreate 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) -> usizeGet the neuron ID
Source: lib.joule:155
fn membrane_potential(&self) -> f64Source: 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 IzhikevichIzhikevich neuron model Rich dynamics, can reproduce many biological patterns
Source: lib.joule:196
fn regular_spiking(id: usize) -> SelfRegular spiking (RS) neuron
Source: lib.joule:215
fn intrinsically_bursting(id: usize) -> SelfIntrinsically bursting (IB) neuron
Source: lib.joule:228
fn chattering(id: usize) -> SelfChattering (CH) neuron
Source: lib.joule:241
fn fast_spiking(id: usize) -> SelfFast spiking (FS) neuron
Source: lib.joule:254
fn low_threshold_spiking(id: usize) -> SelfLow-threshold spiking (LTS) neuron
Source: lib.joule:267
fn membrane_potential(&self) -> f64Source: 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 HodgkinHuxleyHodgkin-Huxley neuron model Biophysically detailed, includes ion channel dynamics
Source: lib.joule:313
fn new(id: usize) -> SelfSource: lib.joule:327
fn membrane_potential(&self) -> f64Source: 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 SynapseSynapse connecting two neurons
Source: lib.joule:361
fn new(pre: usize, post: usize, weight: f64) -> SelfSource: lib.joule:373
fn with_delay(pre: usize, post: usize, weight: f64, delay: f64) -> SelfSource: lib.joule:377
fn excitatory(pre: usize, post: usize, weight: f64) -> SelfExcitatory synapse
Source: lib.joule:382
fn inhibitory(pre: usize, post: usize, weight: f64) -> SelfInhibitory synapse
Source: lib.joule:387
trait PlasticityRuleTrait 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 STDPSpike-Timing-Dependent Plasticity (STDP)
Source: lib.joule:402
fn new() -> SelfCreate STDP with default parameters
Source: lib.joule:419
fn asymmetric() -> SelfAsymmetric STDP (stronger LTD)
Source: lib.joule:431
fn update(&self, synapse: &mut Synapse, pre_spike: f64, post_spike: f64)Source: lib.joule:445
struct RewardSTDPReward-modulated STDP (R-STDP)
Source: lib.joule:461
fn new() -> SelfSource: lib.joule:468
fn apply_reward(&self, synapse: &mut Synapse, eligibility: f64, reward: f64)Source: lib.joule:477
struct SpikingNetworkSpiking neural network
Source: lib.joule:488
fn new() -> SelfCreate a new network
Source: lib.joule:496
fn add_neuron(&mut self, neuron: N) -> usizeAdd 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) -> SelfSet plasticity rule
Source: lib.joule:522
fn num_neurons(&self) -> usizeGet number of neurons
Source: lib.joule:528
fn num_synapses(&self) -> usizeGet 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 SNNBackendBackend for SNN simulation
Source: lib.joule:587
struct SNNSimulatorSNN Simulator
Source: lib.joule:599
fn new(backend: SNNBackend) -> SelfCreate a new simulator
Source: lib.joule:606
fn with_dt(mut self, dt: f64) -> SelfSet 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) -> SpikeTrainSource: lib.joule:658
fn temporal(value: f64, max_value: f64, max_time: f64) -> SpikeTrainSource: lib.joule:664
fn population(value: f64, num_neurons: usize, sigma: f64, duration: f64) -> SpikeTrainSource: lib.joule:670
fn rank_order(values: &[f64]) -> SpikeTrainSource: lib.joule:676
fn phase(value: f64, oscillation_freq: f64, duration: f64) -> SpikeTrainSource: lib.joule:682
fn rate(spikes: &SpikeTrain, neuron_id: usize, max_rate: f64) -> f64Source: lib.joule:693
fn first_spike(spikes: &SpikeTrain, neuron_id: usize, max_time: f64) -> f64Source: lib.joule:699
fn population(spikes: &SpikeTrain, neuron_ids: &[usize]) -> f64Source: lib.joule:705