def test_alif(Simulator): """Test ALIF and ALIFRate by comparing them to each other""" n = 100 max_rates = 50 * np.ones(n) intercepts = np.linspace(-0.99, 0.99, n) encoders = np.ones((n, 1)) nparams = dict(tau_n=1, inc_n=10e-3) eparams = dict(n_neurons=n, max_rates=max_rates, intercepts=intercepts, encoders=encoders) model = nengo.Network() with model: u = nengo.Node(output=0.5) a = nengo.Ensemble(neuron_type=nengo.AdaptiveLIFRate(**nparams), dimensions=1, **eparams) b = nengo.Ensemble(neuron_type=nengo.AdaptiveLIF(**nparams), dimensions=1, **eparams) nengo.Connection(u, a, synapse=0) nengo.Connection(u, b, synapse=0) ap = nengo.Probe(a, "spikes", synapse=0) bp = nengo.Probe(b, "spikes", synapse=0) dt = 1e-3 sim = Simulator(model, dt=dt) sim.run(2.) t = sim.trange() a_rates = sim.data[ap] / dt spikes = sim.data[bp] b_rates = rates_kernel(t, spikes) tmask = (t > 0.1) & (t < 1.7) rel_rmse = rms(b_rates[tmask] - a_rates[tmask]) / rms(a_rates[tmask]) with Plotter(Simulator) as plt: ax = plt.subplot(311) implot(plt, t, intercepts[::-1], a_rates.T, ax=ax) ax.set_ylabel('input') ax = plt.subplot(312) implot(plt, t, intercepts[::-1], b_rates.T, ax=ax) ax.set_ylabel('input') ax = plt.subplot(313) implot(plt, t, intercepts[::-1], (b_rates - a_rates)[tmask].T, ax=ax) ax.set_xlabel('time [s]') ax.set_ylabel('input') plt.savefig('test_neurons.test_alif.pdf') plt.close() assert rel_rmse < 0.07
def test_rates(Simulator): functions = [ ('isi_zero', lambda t, s: rates_isi( t, s, midpoint=False, interp='zero')), ('isi_midzero', lambda t, s: rates_isi( t, s, midpoint=True, interp='zero')), ('isi_linear', lambda t, s: rates_isi( t, s, midpoint=False, interp='linear')), ('isi_midlinear', lambda t, s: rates_isi( t, s, midpoint=True, interp='linear')), ('kernel_expon', lambda t, s: rates_kernel(t, s, kind='expon')), ('kernel_gauss', lambda t, s: rates_kernel(t, s, kind='gauss')), ('kernel_expogauss', lambda t, s: rates_kernel( t, s, kind='expogauss')), ('kernel_alpha', lambda t, s: rates_kernel(t, s, kind='alpha')), ] print("\ntest_rates:") for name, function in functions: rel_rmse = _test_rates(Simulator, function, name) print("%20s relative rmse: %0.3f" % (name, rel_rmse))
def test_rates(Simulator, plt, seed): functions = [ ('isi_zero', lambda t, s: rates_isi( t, s, midpoint=False, interp='zero')), ('isi_midzero', lambda t, s: rates_isi( t, s, midpoint=True, interp='zero')), ('isi_linear', lambda t, s: rates_isi( t, s, midpoint=False, interp='linear')), ('isi_midlinear', lambda t, s: rates_isi( t, s, midpoint=True, interp='linear')), ('kernel_expon', lambda t, s: rates_kernel(t, s, kind='expon')), ('kernel_gauss', lambda t, s: rates_kernel(t, s, kind='gauss')), ('kernel_expogauss', lambda t, s: rates_kernel( t, s, kind='expogauss')), ('kernel_alpha', lambda t, s: rates_kernel(t, s, kind='alpha')), ] print("\ntest_rates:") for name, function in functions: rel_rmse = _test_rates(Simulator, function, plt, seed, name) print("%20s relative rmse: %0.3f" % (name, rel_rmse))
def test_rates(Simulator, seed, logger): pytest.importorskip('scipy') functions = [ ('isi_zero', lambda t, s: rates_isi( t, s, midpoint=False, interp='zero')), ('isi_midzero', lambda t, s: rates_isi( t, s, midpoint=True, interp='zero')), ('isi_linear', lambda t, s: rates_isi( t, s, midpoint=False, interp='linear')), ('isi_midlinear', lambda t, s: rates_isi( t, s, midpoint=True, interp='linear')), ('kernel_expon', lambda t, s: rates_kernel(t, s, kind='expon')), ('kernel_gauss', lambda t, s: rates_kernel(t, s, kind='gauss')), ('kernel_expogauss', lambda t, s: rates_kernel( t, s, kind='expogauss')), ('kernel_alpha', lambda t, s: rates_kernel(t, s, kind='alpha')), ] for name, function in functions: rel_rmse = _test_rates(Simulator, function, None, seed) logger.info('rate estimator: %s', name) logger.info('relative RMSE: %0.4f', rel_rmse)
def test_rates(Simulator, seed, logger): pytest.importorskip('scipy') functions = [ ('isi_zero', lambda t, s: rates_isi(t, s, midpoint=False, interp='zero')), ('isi_midzero', lambda t, s: rates_isi(t, s, midpoint=True, interp='zero')), ('isi_linear', lambda t, s: rates_isi(t, s, midpoint=False, interp='linear')), ('isi_midlinear', lambda t, s: rates_isi(t, s, midpoint=True, interp='linear')), ('kernel_expon', lambda t, s: rates_kernel(t, s, kind='expon')), ('kernel_gauss', lambda t, s: rates_kernel(t, s, kind='gauss')), ('kernel_expogauss', lambda t, s: rates_kernel(t, s, kind='expogauss')), ('kernel_alpha', lambda t, s: rates_kernel(t, s, kind='alpha')), ] for name, function in functions: rel_rmse = _test_rates(Simulator, function, None, seed) logger.info('rate estimator: %s', name) logger.info('relative RMSE: %0.4f', rel_rmse)