Hello everyone,
I’m working on a neural network simulation in Brian2, where I have a Poisson input driving a layer of neurons with fixed synaptic weights. My goal is to model realistic excitatory (I_exc
) and inhibitory (I_inh
) synaptic currents without altering the weights during the simulation.
However, I’ve noticed that under certain conditions—like when the number of input neurons is high or their firing rates increase—the synaptic currents (I_exc
and I_inh
) can grow uncontrollably. Sometimes, I_exc
reaches extremely high values (e.g., 80,000 mV), which leads to unphysiological behavior and destabilizes the network.
Here are the constraints and details of my setup:
- Fixed synaptic weights: I want the synaptic weights (
w
) to remain constant throughout the simulation. - High-density connectivity: Many input neurons are connected to the target population.
- Desired solution: I’m looking for strategies to stabilize
I_exc
andI_inh
currents while maintaining the fixed weights and input rates.
I’ve considered options like:
- Clipping the synaptic currents (
I_exc
andI_inh
) globally. - Adding synaptic current decay terms.
- Normalizing the cumulative synaptic input to a fixed range.
However, they didnt work properly.
My Questions:
What are the recommended practices in Brian2 to stabilize synaptic currents while keeping weights fixed?
Here’s a snippet of my current setup for reference:
p_in_v1_l4 = PoissonGroup(512, rates=100*Hz, name='poisson_input_v1_l4')
p_syn_v1_l4 = Synapses(
p_in_v1_l4, L4_v1.neuron_groups["Exc"].group,
model='''w : 1 # Synaptic weight
spike_count : 1 # Tracks spikes for each presynaptic neuron''',
delay=0*ms,
on_pre='''I_exc_post += w*mV # Update postsynaptic current
spike_count += 1 # Track presynaptic spikes''',
method='euler',
name='poisson_syn_v1_l4'
)
p_syn_v1_l4.connect()
p_syn_v1_l4.w = weights # Fixed synaptic weights
scaling_rule = '''
w = clip(w / (1 + spike_count), 0, 1) # Scale weights and keep in [0, 1]
spike_count = 0 # Reset spike counter
'''
p_syn_v1_l4.run_regularly(scaling_rule, dt=defaultclock.dt) # Apply scaling every 0.1 ms
I’d greatly appreciate any suggestions. Thanks in advance for your help!