If you want to set up a framework where each individual is modelled as a network, you could do something like the following:
def ind_network(n_neurons, dimensions):
with nengo.Network() as ind:
ind.input = nengo.Node(size_in=dimensions)
ind.ens_a = nengo.Ensemble(n_neurons, dimensions=dimensions)
ind.ens_b = nengo.Ensemble(n_neurons, dimensions=dimensions)
ind.ens_c = nengo.Ensemble(n_neurons, dimensions=dimensions)
Calling this function will create a network with three ensembles, and you can connect to components of this network by defining connections between e.g.
ind.ens_c and other Nengo objects. You could also, for instance, call this function in a loop with different values for
n_neurons to create a variety of different networks. Other arguments could be used to configure how, e.g., the internal ensembles are connected to one another.
If you want to manipulate sparsity you can set connection weights by using the
transform= argument when creating Connection objects. At the extreme, if you set the transform to be an array of zeros, you will not pass any information over the connection, and the only spiking that occurs downstream will be due to the neuron biases.
That said, many of the design choices here will depend a lot on the functionality you want to implement, but hopefully this is enough to get you started.