Download the compressed folder to run the simulation in Matlab: zip_files.
The main file “cluster_competition” calls several functions to build a structure of clusters and the relative connections. In a way this is the equivalent of the simulations presented in the mean field example, where this time we have a cluster of spiking neurons per each single unit simulating the mean field activity.
In particular, note the functions:
- “mat_creator”, which is used to generate a structure of matrix to be used as connections weights for the cluster as well as for inter-cluster connectivity. Note that if the second argument is =1 (e.g. see mat_inp_l1), the structure will be used for parallel connectivity.
- “layer_creator”, which initialises a group of clusters (defined in 2nd argument), with a specified numerosity (3rd), a structure of parameters for the matrix of connections within each clusters (4th: it will be used by a “mat_creator” called within the function), a structure of parameters for the matrix of connections among all clusters (5th, again used by a “mat_creator” called within the function), general decay for all units (5th), level of noise in action potential of all units (6th), and basal activation of the cluster as a whole (7th, which establishes the number of units that randomly fire -if not receiving any other input- per time interval). The basal activation of the units (-70 mV) and the threshold to overcome to trigger a spike (-55 mV) are defined in this function and considered as constant through the whole simulation.
- “layer_step”, the usual step function updating the activity of all units in all clusters in a layer. It processes up to 3 inputs per layer: the arguments of the function for these inputs have to be considered in couple. 3rd and 4th arguments respectively refer to activity and relative connections of the first input. Then 5th and 6th arguments for the second input and finally 7th and 8th argument for the third input. Unused inputs will be represented by a value uqual to 0, as in this example.
The numerosity of the cluster is particularly important for two reason. First, any number below 50/75 units per cluster easily ends in generating synchronous spiking. Secondly, the relation between an input cluster and the target cluster is essential in determining the final effect in terms of excitation and inhibition, as much as the strength of the connections linking the two. In the present example, input clusters are characterised by a number of units that is twice the one of the target structure (parallel connections).
The final result (see image below) is quite noisy given the chosen parameters. A better result may be acquired simply increasing the parameter regulating the number of casual connection among clusters in the layer (layer_mat.perc_conn from 0.15 to e.g. 0.5). This alteration results in a better defined winner-take-all competition, but would be biologically implausible, as for n>0.25 (parameter defining the intrinsic connectivity of a cluster in the example) the connections among cluster would be more frequent than connections within clusters.