From QIF equations to a working Brian2 implementation

Hi @nvar. This is a very abstract model that is convenient for analytical results, but not so much for simulation. For example, the membrane potential is supposed to be reset to -∞, and a spike happens when it goes to +∞… From a quick look at the paper they cite, it seems that as if for actual simulations they use values of ±100 instead of ∞. The “refractory period” is the time it takes from 100 to ∞ and from -∞ to -100, which apparently is 2/Vk “time units”. I discussed abstract equations that do not have actual time quantities in seconds in this post: Coupled Van der Pol oscillators - #2 by mstimberg
The same applies here. In models like this, the membrane potential would not be in volt, but just a dimensionless quantity – a number of Brian examples use this approach as well: Example: non_reliability — Brian 2 2.5.0.3 documentation Having the value squared is not a problem then.
Regarding the refractoriness, this is also expressed relative to some time unit. In principle there’d be ways to make this dependent on the exact value of the membrane potential when it crossed the threshold, but I guess just using the value of the threshold should be good enough (I think the 2/Vk kind of assumes this, in fact).

The on_pre statement is the most straightforward: this is actually the same as in the simple LIF examples, each spike makes the membrane potential jump up by the given amount. There is an additional normalization term, but you could simply include this in the weight.

Hope that helps a bit!

1 Like