1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! Spiking Neural Networks (SNN)
//!
//! This module provides biologically plausible spiking neuron models,
//! synaptic dynamics, learning rules, and full SNN simulation infrastructure.
//!
//! ## Modules
//!
//! | Module | Contents |
//! |---------------------|----------|
//! | [`neuron_models`] | LIF, AdEx, Izhikevich, Hodgkin-Huxley neurons |
//! | [`synapse`] | Exponential, Alpha, STDP synapses; delay buffers |
//! | [`stdp`] | STDP, Triplet STDP, BCM, Oja learning rules |
//! | [`snn_layer`] | `SpikingLayer`, `SpikingNetwork` |
//! | [`population_coding`] | Spike encoding / decoding schemes |
//!
//! ## Quick Start
//!
//! ```rust
//! use scirs2_neural::snn::{
//! neuron_models::{LIFConfig, LIFNeuron},
//! snn_layer::SpikingNetwork,
//! };
//!
//! let config = LIFConfig::default();
//! let mut net = SpikingNetwork::new(&[4, 8, 2], &config, 10.0, 0.1).expect("operation should succeed");
//!
//! // Build input: 50 time steps, 4 input channels alternating
//! let input: Vec<Vec<bool>> = (0..50)
//! .map(|t| (0..4).map(|i| (t + i) % 3 == 0).collect())
//! .collect();
//!
//! let record = net.simulate(&input, 50).expect("operation should succeed");
//! println!("Total spikes: {}", scirs2_neural::snn::snn_layer::SpikingNetwork::count_spikes(&record));
//! ```
// Re-exports for convenience
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;