In [56]:
import nengo
threshold = 0.725
n_eval_points = 500
eval_point_margin = 0.01
eval_points = nengo.utils.distributions.Uniform(
threshold + eval_point_margin, 1 + eval_point_margin
).sample(n_eval_points).reshape(-1, 1)
model = nengo.Network()
with model:
a = nengo.Ensemble(n_neurons=250, dimensions=1,
intercepts=nengo.utils.distributions.Uniform(threshold, threshold+0.1),
max_rates=nengo.utils.distributions.Uniform(100, 200),
encoders=nengo.utils.distributions.Choice([[1]]),
eval_points=eval_points)
output = nengo.Node(lambda t, x: None, size_in=1)
conn = nengo.Connection(a, output)
sim = nengo.Simulator(model)
In [57]:
d = sim.model.params[conn].decoders
import nengo.utils.ensemble
x = np.linspace(0.5,1,100)
x.shape = 100,1
x, a = nengo.utils.ensemble.tuning_curves(a, sim, eval_points=x)
subplot(2,1,1)
plot(x,a)
subplot(2,1,2)
plot(x, np.dot(a, d.T)*sim.model.dt)
axvline(threshold)
show()
In [ ]: