In either case (i.e., whether you connect `nengo.Connection(pre.neurons, post.neurons, ...)`

or `nengo.Connection(pre, post, ...)`

the two are effectively fully-connected. The reason I say “effectively” is because if you are doing a decode followed by an encode, then by linearity those two matrix multiplies are functionally equivalent to a single all-to-all weight matrix multiply. Mathematically, $E(Dx(t)) = Wx(t)$ where $W = ED$ is your weight matrix (the outer product of the encoders and the decoders).

May also be relevant to mention that Nengo does support sparse transforms if you know the connection matrix is sparse and you want to take advantage of that for efficiency (certain hardware such as Loihi can take advantage of this).

For your actual question I’m not sure what you are mean by “the role of the neuron model”? Spikes are delivered to the neuron model, typically after they are filtered by the synapse (or dendritic compartments in the case of more biologically detailed models). In `nengo.LIF`

, the variable `J`

is the current source that is obtained by filtering a weighted summation of incoming spikes over time (as defined by the decoders from the pre population and the encoders of the post population). And so the physiological significance of `J`

here is as a standard current that has been normalized according to the response curve of the LIF neuron.

Great questions by the way! Thanks and welcome.