def step_math(self, dt, J, output, voltage, ref, resources, calcium): """Implement the u and x parameters """ x = resources u = calcium LIF.step_math(self, dt, J, output, voltage, ref) #calculate u and x dx = dt * ((1 - x) / self.tau_x - u * x * output) du = dt * ((0.2 - u) / self.tau_u + 0.2 * (1 - u) * output) x += dx u += du
def test_lif_builtin(rng): """Test that the dynamic model approximately matches the rates.""" dt = 1e-3 t_final = 1.0 N = 10 lif = LIF() gain, bias = lif.gain_bias(rng.uniform(80, 100, size=N), rng.uniform(-1, 1, size=N)) x = np.arange(-2, 2, 0.1) J = gain * x[:, None] + bias voltage = np.zeros_like(J) reftime = np.zeros_like(J) spikes = np.zeros((int(t_final / dt),) + J.shape) for i, spikes_i in enumerate(spikes): lif.step_math(dt, J, spikes_i, voltage, reftime) math_rates = lif.rates(x, gain, bias) sim_rates = spikes.mean(0) assert np.allclose(sim_rates, math_rates, atol=1, rtol=0.02)
def test_lif_builtin(rng): """Test that the dynamic model approximately matches the rates.""" dt = 1e-3 t_final = 1.0 N = 10 lif = LIF() gain, bias = lif.gain_bias( rng.uniform(80, 100, size=N), rng.uniform(-1, 1, size=N)) x = np.arange(-2, 2, .1) J = gain * x[:, None] + bias voltage = np.zeros_like(J) reftime = np.zeros_like(J) spikes = np.zeros((int(t_final / dt),) + J.shape) for i, spikes_i in enumerate(spikes): lif.step_math(dt, J, spikes_i, voltage, reftime) math_rates = lif.rates(x, gain, bias) sim_rates = spikes.mean(0) assert np.allclose(sim_rates, math_rates, atol=1, rtol=0.02)