Skip to main content

sc_neurocore_engine/bindings/population/
mod.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 — Population-model PyO3 binding composition
8
9use pyo3::prelude::*;
10
11mod brunel_network;
12mod brunel_wang;
13mod el_boustani_network;
14mod larter_breakspear;
15mod montbrio_mean_field;
16mod sc_decoupled_adaptation_ion_mass;
17mod tum_network;
18mod wendling;
19mod wilson_cowan_unit;
20mod wong_wang_unit;
21
22pub use brunel_network::PyBrunelNetwork;
23pub use brunel_wang::PyBrunelWangNeuron;
24pub use el_boustani_network::PyElBoustaniNetwork;
25pub use larter_breakspear::PyLarterBreakspearNeuron;
26pub use montbrio_mean_field::PyMontbrioMeanField;
27pub use sc_decoupled_adaptation_ion_mass::PySCDecoupledAdaptationIonMassNeuron;
28pub use tum_network::PyTUMNetwork;
29pub use wendling::PyWendlingNeuron;
30pub use wilson_cowan_unit::PyWilsonCowanUnit;
31pub use wong_wang_unit::PyWongWangUnit;
32
33pub(crate) fn register_brunel_wang(module: &Bound<'_, PyModule>) -> PyResult<()> {
34    brunel_wang::register(module)?;
35    Ok(())
36}
37
38pub(crate) fn register_wilson_cowan_unit(module: &Bound<'_, PyModule>) -> PyResult<()> {
39    wilson_cowan_unit::register(module)?;
40    Ok(())
41}
42
43pub(crate) fn register_wong_wang_unit(module: &Bound<'_, PyModule>) -> PyResult<()> {
44    wong_wang_unit::register(module)?;
45    Ok(())
46}
47
48pub(crate) fn register_neural_mass_tail(module: &Bound<'_, PyModule>) -> PyResult<()> {
49    wendling::register(module)?;
50    larter_breakspear::register(module)?;
51    sc_decoupled_adaptation_ion_mass::register(module)?;
52    Ok(())
53}
54
55/// Register the four model-owned population classes in stable ABI order.
56pub(crate) fn register(module: &Bound<'_, PyModule>) -> PyResult<()> {
57    montbrio_mean_field::register(module)?;
58    brunel_network::register(module)?;
59    tum_network::register(module)?;
60    el_boustani_network::register(module)?;
61    Ok(())
62}