I was trying to reproduce the mentioned paper. Since the model mostly based on the article Brunel & Wang 2001, which is already reproduced (Example: Brunel_Wang_2001 — Brian 2 2.5.1 documentation) I built my code upon this code. But I can not obtain the figures in Wang 2002 paper. Basically, after stimuli is disappeared (in delay period) I should obtain a elevated persistent activity, but I cannot. Also, just one of the selective population’s activity should reach the threshold while other one disappears, due to the competition. But this is also not happening.
Here I will explain the code step-by-step and compare it with article, so that you may help me more easily.
You can see that on the left, there exist a persistent activity during the delay period (after the second vertical line) for the one of the selective population, while on the right, the other selective population has “lost”, and there is even no ramping activity. (Ramping activity = the activity of left population during the stimuli period, i.e. between vertical lines.)
Since the model is built upon some other article, and that article has already reproduced in Brian2, I first compared the Wang 2002 article with Brunel & Wang 2001 article. I thought that I can use the reproduced code if equations of models are the same.
First, equations from Brunel & Wang 2001, then, Wang 2002.
As far as I noticed, there is only one difference: There is no summation term for s_ext,AMPA in Wang 2002. What is the meaning of it, is it just a typo?
First I will copy-paste the parameters from paper, which is mostly from the last part of the article: “Experimental Procedures”. (bold)
Then I will copy-paste the parameters from the code. (normal font)
τ_AMPA = 2 ms
tau_AMPA = 2. * ms
In the case of external AMPA currents, the spikes are emitted according to a Poisson process with rate V=ext = 2.4 kHz independently from cell to cell.
Rate and external synapses are not explicitly stated in Wang 2002 article, so I found these parameters from Brunel 2001.
rate = 3 * Hz
C_ext = 800
tau_NMDA,decay = 100 ms, a = 0.5 ms^(-1) , and tau_NMDA,rise = 2 ms.
tau_NMDA_rise = 2. * ms
tau_NMDA_decay = 100. * ms
alpha = 0.5 / ms
tau_GABA = 5 ms
tau_GABA = 5. * ms
All synapses have a latency of 0.5 ms.
C_E_E = Synapses(P_E, P_E, model=eqs_glut, on_pre=eqs_pre_glut, method=‘euler’, delay=0.5ms)
C_E_I = Synapses(P_E, P_I, model=eqs_glut, on_pre=eqs_pre_glut, method=‘euler’, delay=0.5ms)
C_I_I = Synapses(P_I, P_I, on_pre=eqs_pre_gaba, method=‘euler’, delay=0.5ms)
C_I_E = Synapses(P_I, P_E, on_pre=eqs_pre_gaba, method=‘euler’, delay=0.5ms)
V_e = 0 mV, V_i = -70 mV.
V_E = 0. * mV
V_I = -70. * mV
[Mg 2+] = 1 mM.
Mg2 = 1.
for pyramidal cells,
g_ext,AMPA = 2.1, g_rec,AMPA = 0.05, g_NMDA = 0.165, and g_GABA = 1.3;
g_ext,AMPA = 1.62, g_rec,AMPA = 0.04, g_NMDA = 0.13, and g_GABA = 1.0.
g_AMPA_ext_E = 2.1 * nS
g_AMPA_rec_E = 0.05 * nS
g_NMDA_E = 0.165 * nS
g_GABA_E = 1.3 * nS
g_AMPA_ext_I = 1.62 * nS
g_AMPA_rec_I = 0.04 * nS
g_NMDA_I = 0.13 * nS
g_GABA_I = 1 * nS
Inside a selective population, w = w+.
Unless specified otherwise, I used w+ = 1.7.
Between two different selective populations, and from the nonselective population to selective ones, w = w-. [w- = 1 - f(w+ - 1)/(1 - f )]
Other connections have w = 1
From Wang 2002:
I wanted to first try to reproduce the model with the more simple case, therefore I considered this statement: “Therefore, external stimuli cannot be the main source of randomness in the decision-making process of this model. To confirm this conclusion, I simulated the model without stochastic fluctuations in the stimuli (std = 0, thus s_A(t) = s_B(t ) = const.). In this case, the network’s behavior is essentially unchanged.” And therefore I made the external inputs constant.
First second: Just background.
Second and third: BG + External
Fourth: Just background.
stimuli1 = TimedArray(np.r_[np.zeros(1), np.ones(2)*45, np.zeros(1)]Hz, dt=1000ms)
stimuli2 = TimedArray(np.r_[np.zeros(1), np.ones(2)*35, np.zeros(1)]Hz, dt=1000ms)
C_selection = int(f * C_ext) (This was not stated in Wang 2002 article, and I also couldn’t find this information in Brunel 2001 article but I should say that I did not spend much time in Brunel 2001. So I just take this line of code from Brunel 2001 reproduction documentation.)
P1 = PoissonGroup(C_selection, rates=‘stimuli1(t)’)
P2 = PoissonGroup(C_selection, rates=‘stimuli2(t)’)
Background Input and I to I connections:
In Wang 2002 article, the figure shows that noise (background input) is only given to excitatory neuron groups, and the interneuron population has no recurrent activity:
But this is not the case in Brunel 2001 article:
Both articles state that they only used AMPA for external inputs for most of the simulations.
About background input:
I always tried with configuration in which both interneurons and excitatory neurons receive background input.
C_P_E = PoissonInput(P_E, ‘s_AMPA_ext’, C_ext, rate, ‘1’)
C_P_I = PoissonInput(P_I, ‘s_AMPA_ext’, C_ext, rate, ‘1’)
About interneuron recurrency:
Although figure of Wang 2002 article doesn’t shows recurrent interneuron connectivity, he states it in plain text: “The network is endowed with pyramid-to-pyramid, pyramid-to-interneuron, interneuron-to-pyramid, and interneuron-to-interneuron connections”
Since the previously reproduced paper is most probably true, and most probably I wrote the parameters true, I think that the problem with this code is either about background or external input. Or maybe the aforementioned missing summation term is not just a typo. I have uploaded the .py file too.
Thank you very much in advance!
Wang2002.py (6.0 KB)