def update(self, _t, _dt): refractory = (_t - self.t_last_spike) <= self.tau_ref V = self.integral(self.V, _t, self.input, dt=_dt) V = bm.where(refractory, self.V, V) spike = self.V_th <= V self.t_last_spike.value = bm.where(spike, _t, self.t_last_spike) self.V.value = bm.where(spike, self.V_reset, V) self.refractory.value = bm.logical_or(refractory, spike) self.spike.value = spike self.input[:] = 0.
def update(self, _t, _dt): ref = (_t - self.t_last_spike) <= self.t_refractory V = self.integral(self.V, _t, self.input) V = bm.where(ref, self.V, V) spike = (V >= self.V_th) self.V.value = bm.where(spike, self.V_reset, V) self.spike.value = spike self.t_last_spike.value = bm.where(spike, _t, self.t_last_spike) self.refractory.value = bm.logical_or(spike, ref) self.input[:] = 0.