nasiryahm / SNNSimulatorComparison

Comparison of Spiking Neural Network Simulator Performance
20 stars 9 forks source link

Understanding Parameters in GeNN comparison #2

Closed denniskb closed 5 years ago

denniskb commented 5 years ago

I'm trying to understand the 'parameters.h' files for VA and Brunel inside the GeNN comparison.

Thank you for clarifying!

denniskb commented 5 years ago

I understand now that the timestep in Brunel is in milliseconds, so the whole params.h file makes perfect sense. I still can't wrap my head around the timestep and the synaptic weights in VA though.

nasiryahm commented 5 years ago

Hi Dennis,

Glad to hear the Brunel parameters make sense.

In the case of the synaptic parameters for the VA model, the effect on membrane voltage is equal to the synaptic current times the membrane resistance. In turn the membrane resistance can be calculated:

membrane resistance = membrane time constant / membrane capacitance

This capacitance and time constant parameters are located here: https://github.com/nasiryahm/SNNSimulatorComparison/blob/master/Benchmarks/VogelsAbbott/genn/model.cc#L32

Once you multiply these through, it works out to an impact on the voltage in the mV scale. You should also note that the Brunel benchmark doesn't need these conversions since the synapses are voltage based.

Does that all make sense?

denniskb commented 5 years ago

Dear Nasir, thank you for the clarifications. I built your code (genn-vogels), ran a 20s long simulation, outputted the spikes to a txt file and visualized them with Matlab. I noticed a pretty high network activity, so I calculated the average firing rate as:

number of spikes per sim. step / number of steps / number of neurons

which came out to ~0.14 or 14%. Shouldn't this be capped to 2% due the refractory period of 50 timesteps?

denniskb commented 5 years ago

It seems to me that the timestep inside the VA parameters.h file should be 0.1 instead of 1.0.

nasiryahm commented 5 years ago

Hi Dennis,

It's rather strange that you are getting high firing rates. Especially since in the iPython notebook in this repository, I check all firing rates and ISIs. You can see the notebook:

https://github.com/nasiryahm/SNNSimulatorComparison/blob/master/Benchmarks/VogelsAbbott/_results/SimulatorComparisons.ipynb

Can you check that you are using the same version of GeNN that is a submodule in this repository?

As for the time step, you are quite right, that should be 0.1. However, I am not actually using that parameter at the moment. I instead directly set the time step in the model.cc file in the GeNN folder. I should make that more transparent.

denniskb commented 5 years ago

I accidentally replaces setDT(0.1 with setDT(params::timestep)!

nasiryahm commented 5 years ago

Ah okay! Glad to hear it worked out :) - I'll fix that in the repository later today so that the parameter is used and is set to 0.1ms.

Thank for pointing it out!