sc_neurocore_engine/bindings/
rall_dendrite.rs1use numpy::PyReadonlyArray1;
12use pyo3::prelude::*;
13
14use crate::rall_dendrite;
15
16pub(crate) fn register(module: &Bound<'_, PyModule>) -> PyResult<()> {
18 module.add_class::<PyRallDendrite>()?;
19 Ok(())
20}
21
22#[pyclass(
23 name = "RallDendriteRust",
24 module = "sc_neurocore_engine.sc_neurocore_engine"
25)]
26pub struct PyRallDendrite {
27 inner: rall_dendrite::RallDendriteRust,
28}
29
30#[pymethods]
31impl PyRallDendrite {
32 #[new]
33 fn new(n_branches: usize, branch_length: usize, tau: f64, coupling: f64, dt: f64) -> Self {
34 Self {
35 inner: rall_dendrite::RallDendriteRust::new(
36 n_branches,
37 branch_length,
38 tau,
39 coupling,
40 dt,
41 ),
42 }
43 }
44
45 fn step(&mut self, branch_inputs: PyReadonlyArray1<'_, f64>) -> PyResult<f64> {
46 let inputs = branch_inputs.as_slice()?;
47 Ok(self.inner.step(inputs))
48 }
49
50 fn reset(&mut self) {
51 self.inner.reset();
52 }
53
54 #[getter]
55 fn soma_v(&self) -> f64 {
56 self.inner.soma_v
57 }
58}