pub struct MATNeuron {}Expand description
Complete MAT* dynamic state and configuration.
Voltage is relative to rest and is never reset. Units are millivolts, milliseconds, nanoamps, and megaohms. The defaults are the regular-spiking example in Kobayashi, Tsubo, and Shinomoto (2009), not a universal cell fit.
Fields§
§v: f64Membrane voltage relative to rest, in mV.
theta1: f64Fast spike-history threshold contribution, in mV.
theta2: f64Slow spike-history threshold contribution, in mV.
refractory_remaining: f64Remaining absolute refractory interval, in ms.
omega: f64Baseline threshold omega, in mV.
tau_m: f64Membrane time constant, in ms.
tau_1: f64Fast threshold-history time constant, in ms.
tau_2: f64Slow threshold-history time constant, in ms.
alpha_1: f64Fast post-spike threshold increment, in mV.
alpha_2: f64Slow post-spike threshold increment, in mV.
resistance: f64Membrane resistance, in megaohms.
refractory_period: f64Absolute refractory duration, in ms.
dt: f64Euler integration step, in ms.
Implementations§
Source§impl MATNeuron
impl MATNeuron
Sourcepub fn intrinsically_bursting() -> Self
pub fn intrinsically_bursting() -> Self
Return the paper’s intrinsically-bursting example profile.
Sourcepub fn fast_spiking() -> Self
pub fn fast_spiking() -> Self
Return the paper’s fast-spiking example profile.
Sourcepub fn try_step(&mut self, current: f64) -> Result<i32, &'static str>
pub fn try_step(&mut self, current: f64) -> Result<i32, &'static str>
Advance one atomic MAT* step.
Voltage uses forward Euler and both threshold-history terms use exact exponential decay. A spike never resets voltage. Invalid input or a candidate outside the safety envelope returns an error without mutation.
Trait Implementations§
impl StructuralPartialEq for MATNeuron
Auto Trait Implementations§
impl Freeze for MATNeuron
impl RefUnwindSafe for MATNeuron
impl Send for MATNeuron
impl Sync for MATNeuron
impl Unpin for MATNeuron
impl UnsafeUnpin for MATNeuron
impl UnwindSafe for MATNeuron
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Scalar for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.