sc_neurocore_engine/bindings/rate/
astrocyte_model.rs1use pyo3::prelude::*;
10use pyo3::types::PyDict;
11
12use crate::neurons;
13
14#[pyclass(
15 name = "AstrocyteModel",
16 module = "sc_neurocore_engine.sc_neurocore_engine"
17)]
18#[derive(Clone)]
19pub struct PyAstrocyteModel {
20 inner: neurons::AstrocyteModel,
21}
22
23#[pymethods]
24impl PyAstrocyteModel {
25 #[new]
26 fn new() -> Self {
27 Self {
28 inner: neurons::AstrocyteModel::new(),
29 }
30 }
31
32 fn step(&mut self, current: f64) -> f64 {
33 self.inner.step(current)
34 }
35
36 fn reset(&mut self) {
37 self.inner.reset();
38 }
39
40 fn get_state(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
41 let d = PyDict::new(py);
42 d.set_item("ca", self.inner.ca)?;
43 d.set_item("h", self.inner.h)?;
44 d.set_item("ip3", self.inner.ip3)?;
45 Ok(d.into_any().unbind())
46 }
47}
48
49pub(super) fn register(module: &Bound<'_, PyModule>) -> PyResult<()> {
50 module.add_class::<PyAstrocyteModel>()?;
51 Ok(())
52}