Phase 3

Code Manual

You have implemented the neuronal dynamics of different LIF neuron’s variants so far. Now, You have to make sure that the vectorized computations are flawless and examine creation of neural populations of shape (n,), where n > 1. You also need to consider the is_inhibitory attribute or any equivalent entity you want to propose. Three options have been provided (you can come up with any other idea you find effective, too):

  • The default definition of the neural populations include an is_inhibitory boolean attribute and we have proposed that the populations are going to be homogeneous. This means that all neurons in the population are either inhibitory or excitatory. So you would have to follow instructions in part a of question 1 in the description. You will have to make use of this additional attribute and make suitable branches in neuronal dynamics to specify how the dynamics change in case of inhibitory neurons.

  • Alternatively, you can change the behavior of is_inhibitory to act as a tensor of boolean values, showing which neurons in the population are inhibitory and which ones are excitatory. So it will enable you to define inhomogeneous populations and you would have to follow instructions in part b of question 1. Then you have to change the dynamics respectively to handle the behavior of inhibitory neurons as well as the excitatory ones.

  • To build inhomogeneous populations, another option would be to replace the is_inhibitory attribute with a inhibitory_rate one, indicating the rate of inhibitory neurons in the population. Then you will have to make appropriate modifications to handle the required behavior.

You will need to modify LIFPopulation, ELIFPopulation, and AELIFPopulation in cnsproject.network.neural_populations module in this project. As in previous phases, you also need to implement the required plotting functions/classes in cnsproject.plotting.plotting module and use monitor objects to track the required variables.