-def simulate(a1, a2):
- for i in range(steps):
- gain = a1.gains[i] + a2.gains[i] - 1
- bias = a1.biass[i] + a2.biass[i] - 1
- logging.info(f"gain: {fmt_num(gain)}, bias: {fmt_num(bias)}")
- with nengo.Network() as net:
- # Nodes
- time_node = nengo.Node(output=time_function)
- noise_wm_node = nengo.Node(output=noise_bias_function)
- noise_decision_node = nengo.Node(
- output=noise_decision_function)
-
- # Ensembles
- wm = nengo.Ensemble(neurons_wm, 2)
- wm.gain = np.full(wm.n_neurons, gain)
- wm.bias = np.full(wm.n_neurons, bias)
- decision = nengo.Ensemble(neurons_decide, 2)
- inputs = nengo.Ensemble(neurons_inputs, 2)
- output = nengo.Ensemble(neurons_decide, 1)
-
- # Connections
- nengo.Connection(time_node, inputs[1], synapse=None)
- nengo.Connection(inputs, wm, synapse=tau_wm,
- function=inputs_function)
- wm_recurrent = nengo.Connection(wm, wm, synapse=tau_wm)
- nengo.Connection(noise_wm_node, wm.neurons, synapse=tau_wm,
- transform=np.ones((neurons_wm, 1)) * tau_wm)
- wm_to_decision = nengo.Connection(
- wm[0], decision[0], synapse=tau)
- nengo.Connection(noise_decision_node,
- decision[1], synapse=None)
- nengo.Connection(decision, output, function=decision_function)
-
- # Probes
- probes_wm = nengo.Probe(wm[0], synapse=0.01)
- probe_output = nengo.Probe(output, synapse=None)
-
- # Run simulation
- with nengo.Simulator(net, dt=dt, progress_bar=False) as sim:
- sim.run(t_cue + t_delay)
+class Simulation():
+ def __init__(self):
+ self.a1 = Alpha1()
+ self.a2 = Alpha2()
+
+ def run(self):
+ for i in range(steps):
+ gain = self.a1.gains[i] + self.a2.gains[i] - 1
+ bias = self.a1.biass[i] + self.a2.biass[i] - 1
+ logging.info(f"gain: {fmt_num(gain)}, bias: {fmt_num(bias)}")
+
+ with nengo.Network() as net:
+ # Nodes
+ time_node = nengo.Node(output=time_function)
+ noise_wm_node = nengo.Node(output=noise_bias_function)
+ noise_decision_node = nengo.Node(
+ output=noise_decision_function)
+
+ # Ensembles
+ wm = nengo.Ensemble(neurons_wm, 2)
+ wm.gain = np.full(wm.n_neurons, gain)
+ wm.bias = np.full(wm.n_neurons, bias)
+ decision = nengo.Ensemble(neurons_decide, 2)
+ inputs = nengo.Ensemble(neurons_inputs, 2)
+ output = nengo.Ensemble(neurons_decide, 1)
+
+ # Connections
+ nengo.Connection(time_node, inputs[1], synapse=None)
+ nengo.Connection(inputs, wm, synapse=tau_wm,
+ function=inputs_function)
+ wm_recurrent = nengo.Connection(wm, wm, synapse=tau_wm)
+ nengo.Connection(noise_wm_node, wm.neurons, synapse=tau_wm,
+ transform=np.ones((neurons_wm, 1)) * tau_wm)
+ wm_to_decision = nengo.Connection(
+ wm[0], decision[0], synapse=tau)
+ nengo.Connection(noise_decision_node,
+ decision[1], synapse=None)
+ nengo.Connection(decision, output, function=decision_function)
+
+ # Probes
+ probes_wm = nengo.Probe(wm[0], synapse=0.01)
+ probe_output = nengo.Probe(output, synapse=None)
+
+ # Run simulation
+ with nengo.Simulator(net, dt=dt, progress_bar=False) as sim:
+ sim.run(t_cue + t_delay)