 # What is the input to an ensemble?

I probed the input to a nengo.Ensemble like:

net.probe = nengo.Probe(net.ens.neurons, 'input')


What do these values represent biologically? Concentrations of neurotransmitter? Post-synaptic voltage? For example, I know the decoded_output is simply spiking information.

Looking at the Nengo code base, it looks like input is the (combined) post-synaptic current J being fed into the neuron non-linearity.

The step function of the LIF provides an example of how this input current is put through the neuron non-linearity to calculate the neuron membrane voltage, which then determines if the neuron has spiked or not.

EDIT: Just a point of clarification, when you probe the .neurons attribute of an ensemble, you are getting at the properties associated with the individual neurons in the ensemble. However, if you are just probing the ensemble (e.g, nengo.Probe(net.ens)), you’ll be probing the properties associated with the ensemble as a whole.

1 Like

Ok, that makes sense, but as a follow up I’m wondering why probing the output of a neural connection is different from probing the input of a neural ensemble, for example:

import nengo
import numpy as np

model = nengo.Network()

with model:
a = nengo.Ensemble(2, dimensions=1)
b = nengo.Ensemble(2, dimensions=1)
c = nengo.Ensemble(2, dimensions=1)
a_to_c = nengo.Connection(a.neurons, c.neurons, transform=np.ones((2,2)))
b_to_c = nengo.Connection(b.neurons, c.neurons, transform=np.ones((2,2)))

model.c_input_probe = nengo.Probe(c.neurons, 'input')
model.a_to_c_output_probe = nengo.Probe(a_to_c, 'output')
model.b_to_c_output_probe = nengo.Probe(b_to_c, 'output')

with nengo.Simulator(model) as sim:
sim.run(.01)
p1 = sim.data[model.c_input_probe]
p2 = sim.data[model.a_to_c_output_probe]
p3 = sim.data[model.b_to_c_output_probe]
print(p1)
print(p2)
print(p3)


prints 3 different arrays. If the input is the post-synaptic current going into the neuron, what would the outputs of the incoming connections to the neural ensemble represent? They don’t add up to the overall input.

The output of the connections represent the filtered spiking outputs (scaled by the connection weights) of the a and b ensembles. And the input of c would be the combined post-synaptic current going into the neurons in c. The total current going into the c neurons is computed as: $input \times gain + bias$, where $gain$ and $bias$ are the gain and bias values (the gain and bias values can also be determined by the neuron’s max_rates and intercepts) for the neurons in c.

Here is a script that does a quick comparison between the different probed values. It includes the computed current going into c, which matches the values recorded by the input to c:
test_probe_neurons.py (1.8 KB)