|
27 | 27 | "PLOT_ONLY_FROM_EQUILIBRIUM=True\n", |
28 | 28 | "BIN_SIZE_FIRING_RATE = 10\n", |
29 | 29 | "USE_SYNAPSE_PROBS = True\n", |
30 | | - "USE_DENDRITE_MODEL = True\n", |
| 30 | + "USE_DENDRITE_MODEL = False\n", |
31 | 31 | "\n", |
32 | 32 | "\n", |
33 | 33 | "index_to_ntype_dict = {\n", |
|
55 | 55 | "duration = 3*second # Total simulation time\n", |
56 | 56 | "sim_dt = 0.1*ms # Integrator/sampling step\n", |
57 | 57 | "\n", |
58 | | - "N_sst = 34 # Number of SST neurons (inhibitory)\n", |
59 | | - "N_pv = 46 # Number of PV neurons (inhibitory)\n", |
| 58 | + "N_sst = 34 # Number of SST neurons (inhibitory)\n", |
| 59 | + "N_pv = 46 # Number of PV neurons (inhibitory)\n", |
60 | 60 | "N_cc = 275 # Number of CC neurons (excitatory)\n", |
61 | | - "N_cs = 45 # Number of CS neurons (excitatory)\n", |
| 61 | + "N_cs = 45 # Number of CS neurons (excitatory)\n", |
62 | 62 | "N = [N_cs, N_cc, N_sst, N_pv]\n", |
63 | 63 | "\n", |
64 | 64 | "### Neuron parameters\n", |
|
197 | 197 | " dg_is/dt = -g_is/tau_I : siemens\n", |
198 | 198 | "\n", |
199 | 199 | " I_s = g_es*(E_e - v_s) + g_is*(E_i - v_s) : amp\n", |
| 200 | + " K : 1\n", |
200 | 201 | "'''" |
201 | 202 | ] |
202 | 203 | }, |
|
277 | 278 | " pv_input_i = PoissonInput(pv_neurons, 'g_e', N=1, rate=lambda_pv, weight=f'I_ext_pv(t, {n_idx})')\n", |
278 | 279 | "\n", |
279 | 280 | " # CS Neurons\n", |
280 | | - " cs_neurons = NeuronGroup(N_cs, model=eqs_exc_with_dendrite, threshold='v_s > V_t',\n", |
281 | | - " reset='v_s = E_l', refractory=8.3 * ms, method='euler')\n", |
282 | | - " cs_neurons.v_s = 'E_l + rand()*(V_t-E_l)'\n", |
283 | | - " cs_neurons.v_d = -70 * mV\n", |
| 281 | + " if USE_DENDRITE_MODEL:\n", |
| 282 | + " cs_neurons = NeuronGroup(N_cs, model=eqs_exc_with_dendrite, threshold='v_s > V_t',\n", |
| 283 | + " reset='v_s = E_l', refractory=8.3 * ms, method='euler')\n", |
| 284 | + " cs_neurons.v_s = 'E_l + rand()*(V_t-E_l)'\n", |
| 285 | + " cs_neurons.v_d = -70 * mV\n", |
| 286 | + " else:\n", |
| 287 | + " cs_neurons = NeuronGroup(N_cs, model=eqs_exc_without_dendrite, threshold='v_s > V_t',\n", |
| 288 | + " reset='v_s = E_l', refractory=8.3 * ms, method='euler')\n", |
| 289 | + " cs_neurons.v_s = 'E_l + rand()*(V_t-E_l)'\n", |
284 | 290 | "\n", |
285 | 291 | " ## Poisson input to CS neurons\n", |
286 | 292 | " for n_idx in range(N_cs):\n", |
287 | 293 | " cs_input_i = PoissonInput(cs_neurons, 'g_es', N=1, rate=lambda_cs, weight=f'I_ext_cs(t, {n_idx})')\n", |
288 | 294 | "\n", |
289 | 295 | " # CC Neurons\n", |
290 | | - " cc_neurons = NeuronGroup(N_cc, model=eqs_exc_with_dendrite, threshold='v_s > V_t',\n", |
291 | | - " reset='v_s = E_l', refractory=8.3 * ms, method='euler')\n", |
292 | | - " cc_neurons.v_s = 'E_l + rand()*(V_t-E_l)'\n", |
293 | | - " cc_neurons.v_d = -70 * mV\n", |
| 296 | + " if USE_DENDRITE_MODEL:\n", |
| 297 | + " cc_neurons = NeuronGroup(N_cc, model=eqs_exc_with_dendrite, threshold='v_s > V_t',\n", |
| 298 | + " reset='v_s = E_l', refractory=8.3 * ms, method='euler')\n", |
| 299 | + " cc_neurons.v_s = 'E_l + rand()*(V_t-E_l)'\n", |
| 300 | + " cc_neurons.v_d = -70 * mV\n", |
| 301 | + " else:\n", |
| 302 | + " cc_neurons = NeuronGroup(N_cc, model=eqs_exc_without_dendrite, threshold='v_s > V_t',\n", |
| 303 | + " reset='v_s = E_l', refractory=8.3 * ms, method='euler')\n", |
| 304 | + " cc_neurons.v_s = 'E_l + rand()*(V_t-E_l)'\n", |
294 | 305 | "\n", |
295 | 306 | " ## Poisson input to CC neurons\n", |
296 | 307 | " for n_idx in range(N_cc):\n", |
|
336 | 347 | " conn_CCsoma_PV.w = conn_weights[CCsoma_PV]\n", |
337 | 348 | " \n", |
338 | 349 | " # SST => PYR dendrite\n", |
339 | | - " ## target CS dendrite\n", |
340 | | - " SST_CSdendrite = 3\n", |
341 | | - " conn_SST_CSdendrite = Synapses(sst_neurons, cs_neurons, model='w: 1', on_pre='g_id+=w*nS', name='SST_CSdendrite') # inhibitory\n", |
342 | | - " conn_SST_CSdendrite_prob = conn_probs[SST_CSdendrite] * sst_dendrite_conn_weight\n", |
343 | | - " conn_SST_CSdendrite.connect(p=conn_SST_CSdendrite_prob) # prob divided between soma & dendrite\n", |
344 | | - " conn_SST_CSdendrite.w = conn_weights[SST_CSdendrite]\n", |
345 | | - "\n", |
346 | | - " ## target CC dendrite\n", |
347 | | - " SST_CCdendrite = 8\n", |
348 | | - " conn_SST_CCdendrite = Synapses(sst_neurons, cc_neurons, model='w: 1', on_pre='g_id+=w*nS', name='SST_CCdendrite') # inhibitory\n", |
349 | | - " conn_SST_CCdendrite_prob = conn_probs[SST_CCdendrite] * sst_dendrite_conn_weight\n", |
350 | | - " conn_SST_CCdendrite.connect(p=conn_SST_CCdendrite_prob) # prob divided between soma & dendrite\n", |
351 | | - " conn_SST_CCdendrite.w = conn_weights[SST_CCdendrite]\n", |
| 350 | + " if USE_DENDRITE_MODEL:\n", |
| 351 | + " ## target CS dendrite\n", |
| 352 | + " SST_CSdendrite = 3\n", |
| 353 | + " conn_SST_CSdendrite = Synapses(sst_neurons, cs_neurons, model='w: 1', on_pre='g_id+=w*nS', name='SST_CSdendrite') # inhibitory\n", |
| 354 | + " conn_SST_CSdendrite_prob = conn_probs[SST_CSdendrite] * sst_dendrite_conn_weight # prob divided between soma & dendrite\n", |
| 355 | + " conn_SST_CSdendrite.connect(p=conn_SST_CSdendrite_prob) \n", |
| 356 | + " conn_SST_CSdendrite.w = conn_weights[SST_CSdendrite]\n", |
| 357 | + "\n", |
| 358 | + " ## target CC dendrite\n", |
| 359 | + " SST_CCdendrite = 8\n", |
| 360 | + " conn_SST_CCdendrite = Synapses(sst_neurons, cc_neurons, model='w: 1', on_pre='g_id+=w*nS', name='SST_CCdendrite') # inhibitory\n", |
| 361 | + " conn_SST_CCdendrite_prob = conn_probs[SST_CCdendrite] * sst_dendrite_conn_weight # prob divided between soma & dendrite\n", |
| 362 | + " conn_SST_CCdendrite.connect(p=conn_SST_CCdendrite_prob) \n", |
| 363 | + " conn_SST_CCdendrite.w = conn_weights[SST_CCdendrite]\n", |
352 | 364 | "\n", |
353 | 365 | " # SST <=> PYR soma\n", |
354 | 366 | " ## target CS soma\n", |
355 | 367 | " SST_CSsoma = 3\n", |
356 | 368 | " conn_SST_CSsoma = Synapses(sst_neurons, cs_neurons, model='w: 1', on_pre='g_is+=w*nS', name='SST_CSsoma') # inhibitory (optional connection)\n", |
357 | | - " conn_SST_CSsoma_prob = conn_probs[SST_CSsoma] * sst_soma_conn_weight\n", |
358 | | - " conn_SST_CSsoma.connect(p=conn_SST_CSsoma_prob) # prob divided between soma & dendrite\n", |
| 369 | + " conn_SST_CSsoma_prob = conn_probs[SST_CSsoma] * sst_soma_conn_weight if USE_DENDRITE_MODEL else conn_probs[SST_CSsoma] # prob divided between soma & dendrite only if `USE_DENDRITE_MODEL` \n", |
| 370 | + " conn_SST_CSsoma.connect(p=conn_SST_CSsoma_prob) \n", |
359 | 371 | " conn_SST_CSsoma.w = conn_weights[SST_CSsoma]\n", |
360 | 372 | "\n", |
361 | 373 | " CSsoma_SST = 1\n", |
|
366 | 378 | " ## taget CC soma\n", |
367 | 379 | " SST_CCsoma = 8\n", |
368 | 380 | " conn_SST_CCsoma = Synapses(sst_neurons, cc_neurons, model='w: 1', on_pre='g_is+=w*nS', name='SST_CCsoma') # inhibitory (optional connection)\n", |
369 | | - " conn_SST_CCsoma_prob = conn_probs[SST_CCsoma] * sst_soma_conn_weight\n", |
370 | | - " conn_SST_CCsoma.connect(p=conn_SST_CCsoma_prob) # prob divided between soma & dendrite\n", |
| 381 | + " conn_SST_CCsoma_prob = conn_probs[SST_CCsoma] * sst_soma_conn_weight if USE_DENDRITE_MODEL else conn_probs[SST_CCsoma] # prob divided between soma & dendrite only if `USE_DENDRITE_MODEL` \n", |
| 382 | + " conn_SST_CCsoma.connect(p=conn_SST_CCsoma_prob)\n", |
371 | 383 | " conn_SST_CCsoma.w = conn_weights[SST_CCsoma]\n", |
372 | 384 | "\n", |
373 | 385 | " CCsoma_SST = 6\n", |
|
0 commit comments