Skip to main content

sc_neurocore_engine/
lib.rs

1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Commercial license available
3// © Concepts 1996–2026 Miroslav Šotek. All rights reserved.
4// © Code 2020–2026 Miroslav Šotek. All rights reserved.
5// ORCID: 0009-0009-3560-0851
6// Contact: www.anulum.li | protoscience@anulum.li
7// SC-NeuroCore — Engine Crate Root
8
9#![allow(
10    clippy::useless_conversion,
11    clippy::needless_range_loop,
12    clippy::too_many_arguments,
13    deprecated
14)]
15
16use pyo3::prelude::*;
17
18pub mod adc_to_spike;
19#[path = "bindings/adc_to_spike.rs"]
20mod adc_to_spike_binding;
21pub mod analysis;
22pub mod attention;
23pub mod bitstream;
24#[path = "bindings/bitstream.rs"]
25mod bitstream_binding;
26#[path = "bindings/brunel.rs"]
27mod brunel_binding;
28#[path = "bindings/escape_rate.rs"]
29mod escape_rate_binding;
30#[path = "bindings/evolution.rs"]
31mod evolution_binding;
32#[path = "bindings/exp_if.rs"]
33mod exp_if_binding;
34#[path = "bindings/hdc.rs"]
35mod hdc_binding;
36pub use hdc_binding::PyBitStreamTensor;
37pub mod brunel;
38#[path = "bindings/coba_lif.rs"]
39mod coba_lif_binding;
40pub mod connectome;
41pub mod conv;
42pub mod cordiv;
43#[path = "bindings/cordiv.rs"]
44mod cordiv_binding;
45pub mod cortical_column;
46#[path = "bindings/cortical_column.rs"]
47mod cortical_column_binding;
48pub mod cortical_inject;
49#[path = "bindings/cortical_inject.rs"]
50mod cortical_inject_binding;
51#[path = "bindings/dcls.rs"]
52mod dcls_binding;
53#[path = "bindings/dense_layer.rs"]
54mod dense_layer_binding;
55pub mod dna;
56pub mod ei_network;
57#[path = "bindings/ei_network.rs"]
58mod ei_network_binding;
59pub mod encoder;
60pub mod evo;
61pub mod fault;
62#[path = "bindings/fault.rs"]
63mod fault_binding;
64#[path = "bindings/fixed_point_lif.rs"]
65mod fixed_point_lif_binding;
66pub mod fusion;
67#[cfg(feature = "gpu")]
68pub mod gpu;
69pub mod grad;
70pub mod graph;
71#[path = "bindings/iqif.rs"]
72mod iqif_binding;
73pub mod ir;
74#[path = "bindings/izhikevich2007.rs"]
75mod izhikevich2007_binding;
76#[path = "bindings/izhikevich.rs"]
77mod izhikevich_binding;
78#[path = "bindings/kuramoto.rs"]
79mod kuramoto_binding;
80pub mod layer;
81pub(crate) mod learning_bindings;
82pub mod lgssm;
83#[path = "bindings/lgssm.rs"]
84mod lgssm_binding;
85#[path = "bindings/matrix_inputs.rs"]
86mod matrix_inputs_binding;
87#[path = "bindings/mixed_dense.rs"]
88mod mixed_dense_binding;
89pub mod network_runner;
90#[path = "bindings/network_runner.rs"]
91mod network_runner_binding;
92pub mod neuron;
93pub mod neurons;
94#[path = "bindings/ollivier_ricci.rs"]
95mod ollivier_ricci_binding;
96pub mod optimizer;
97#[path = "bindings/optimizer.rs"]
98mod optimizer_binding;
99pub mod partition;
100#[path = "bindings/partition.rs"]
101mod partition_binding;
102pub mod phi;
103#[path = "bindings/phi.rs"]
104mod phi_binding;
105pub mod photonic;
106pub mod ping;
107#[path = "bindings/ping.rs"]
108mod ping_binding;
109#[path = "bindings/poisson.rs"]
110mod poisson_binding;
111pub mod predictive_coding;
112#[path = "bindings/predictive_coding.rs"]
113mod predictive_coding_binding;
114pub mod pyo3_neurons;
115pub mod quantum;
116pub mod rall_dendrite;
117#[path = "bindings/rall_dendrite.rs"]
118mod rall_dendrite_binding;
119pub mod recorder;
120pub mod recurrent;
121pub mod rk4_neurons;
122#[path = "bindings/runtime_control.rs"]
123mod runtime_control_binding;
124pub mod sc_inference;
125#[path = "bindings/sc_inference.rs"]
126mod sc_inference_binding;
127pub mod scpn;
128#[path = "bindings/scpn_metrics.rs"]
129mod scpn_metrics_binding;
130pub mod simd;
131pub mod sobol;
132#[path = "bindings/stdp_synapse.rs"]
133mod stdp_synapse_binding;
134#[cfg(feature = "z3")]
135pub mod supervisor;
136pub mod synapses;
137pub mod topology;
138pub mod wilson_cowan;
139#[path = "bindings/wilson_cowan.rs"]
140mod wilson_cowan_binding;
141pub mod wong_wang;
142
143/// SC-NeuroCore ─ High-Performance Rust Engine
144
145#[pymodule]
146fn sc_neurocore_engine(m: &Bound<'_, PyModule>) -> PyResult<()> {
147    m.add("__version__", env!("CARGO_PKG_VERSION"))?;
148    runtime_control_binding::register(m)?;
149    bitstream_binding::register(m)?;
150    fixed_point_lif_binding::register(m)?;
151    dcls_binding::register(m)?;
152    mixed_dense_binding::register(m)?;
153    adc_to_spike_binding::register(m)?;
154    sc_inference_binding::register(m)?;
155    wilson_cowan_binding::register(m)?;
156    dense_layer_binding::register(m)?;
157    #[cfg(feature = "gpu")]
158    m.add_class::<gpu::PyGpuDenseLayer>()?;
159    #[cfg(feature = "gpu")]
160    m.add_class::<gpu::PyGpuLifBatch>()?;
161    #[cfg(feature = "gpu")]
162    m.add_class::<gpu::PyGpuKuramoto>()?;
163    #[cfg(feature = "gpu")]
164    m.add_class::<gpu::PyGpuIzhikevichBatch>()?;
165    stdp_synapse_binding::register(m)?;
166    learning_bindings::register(m)?;
167    kuramoto_binding::register(m)?;
168    scpn_metrics_binding::register(m)?;
169    hdc_binding::register(m)?;
170    brunel_binding::register(m)?;
171    izhikevich_binding::register(m)?;
172    ir::bindings::register(m)?;
173    exp_if_binding::register(m)?;
174    pyo3_neurons::register_neuron_classes(m)?;
175    network_runner_binding::register(m)?;
176    #[cfg(feature = "z3")]
177    m.add_class::<supervisor::PySpikingControllerPool>()?;
178    ei_network_binding::register(m)?;
179    m.add_function(wrap_pyfunction!(rk4_neurons::py_rk4_neuron_simulate, m)?)?;
180    cordiv_binding::register(m)?;
181    predictive_coding_binding::register(m)?;
182    phi_binding::register(m)?;
183    cortical_column_binding::register(m)?;
184    rall_dendrite_binding::register(m)?;
185    analysis::bindings::register(m)?;
186    dna::bindings::register(m)?;
187    quantum::bindings::register(m)?;
188    // Photonic NoC acceleration
189    photonic::bindings::register(m)?;
190    optimizer_binding::register(m)?;
191    evolution_binding::register(m)?;
192    lgssm_binding::register(m)?;
193    ollivier_ricci_binding::register(m)?;
194    coba_lif_binding::register(m)?;
195    escape_rate_binding::register(m)?;
196    poisson_binding::register(m)?;
197    iqif_binding::register(m)?;
198    izhikevich2007_binding::register(m)?;
199    fault_binding::register(m)?;
200    partition_binding::register(m)?;
201    ping_binding::register(m)?;
202    cortical_inject_binding::register(m)?;
203    Ok(())
204}