Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1114,12 +1114,17 @@ void {{ neuronName }}::handle(nest::SpikeEvent &e)
}
else
{
// Get the buffer index for inhibitory port
nestml_buffer_idx = std::get<1>(rport_to_nestml_buffer_idx[e.get_rport()]);
if ( nestml_buffer_idx == {{ neuronName }}::PORT_NOT_AVAILABLE )
if ( nestml_buffer_idx != {{ neuronName }}::PORT_NOT_AVAILABLE )
{
weight = -weight;
}
else
{
// spiking input port with negative weight, no change in the sign of weight
nestml_buffer_idx = std::get<0>(rport_to_nestml_buffer_idx[e.get_rport()]);
}
weight = -weight;
}
{%- endif %}
B_.spike_inputs_[ nestml_buffer_idx - MIN_SPIKE_RECEPTOR ].add_value(
Expand Down
6 changes: 3 additions & 3 deletions tests/nest_tests/input_ports_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,16 +87,16 @@ def test_input_ports(self):
connections = nest.GetConnections(target=neuron)

# corresponds to ``bar += NMDA_spikes + 2 * AMPA_spikes - 3 * GABA_spikes`` in the update block
assert events["bar"][-1] == len(spike_times[0]) * abs(connections.get("weight")[0]) \
assert events["bar"][-1] == len(spike_times[0]) * connections.get("weight")[0] \
+ 2 * len(spike_times[1]) * abs(connections.get("weight")[1]) \
- 3 * len(spike_times[2]) * abs(connections.get("weight")[2])

# corresponds to ``foo_spikes += foo[0] + 5.5 * foo[1]`` in the update block
assert events["foo_spikes"][-1] == len(spike_times[3]) * abs(connections.get("weight")[3]) \
assert events["foo_spikes"][-1] == len(spike_times[3]) * connections.get("weight")[3] \
+ 5.5 * len(spike_times[4]) * abs(connections.get("weight")[4])

# corresponds to ``my_spikes_ip += my_spikes[0] + my_spikes[1] - my_spikes2[1]`` in the update block
assert events["my_spikes_ip"][-1] == len(spike_times[5]) * abs(connections.get("weight")[5]) \
assert events["my_spikes_ip"][-1] == len(spike_times[5]) * connections.get("weight")[5] \
+ len(spike_times[6]) * abs(connections.get("weight")[6]) \
- len(spike_times[7]) * abs(connections.get("weight")[7])

Expand Down
2 changes: 1 addition & 1 deletion tests/nest_tests/resources/iaf_psc_exp_multisynapse.nestml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ model iaf_psc_exp_multisynapse_neuron:
kernel I_kernel2 = (e / tau_syn2) * t * exp(-t / tau_syn2)
kernel I_kernel3 = -exp(-t / tau_syn3)

recordable inline I_syn pA = (convolve(I_kernel1, spikes1) - convolve(I_kernel2, spikes2) + convolve(I_kernel3, spikes3)) * pA
recordable inline I_syn pA = (convolve(I_kernel1, spikes1) + convolve(I_kernel2, spikes2) + convolve(I_kernel3, spikes3)) * pA

V_m' = -(V_m - E_L) / tau_m + (I_syn + I_e + I_stim) / C_m

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ model iaf_psc_exp_multisynapse_vectors_neuron:
kernel I_kernel2 = exp(-1/tau_syn2*t)
kernel I_kernel3 = -exp(-1/tau_syn3*t)

inline I_syn pA = (convolve(I_kernel1, spikes[0]) - convolve(I_kernel2, spikes[1]) + convolve(I_kernel3, spikes[2])) * pA
inline I_syn pA = (convolve(I_kernel1, spikes[0]) + convolve(I_kernel2, spikes[1]) + convolve(I_kernel3, spikes[2])) * pA

V_m' = -(V_m - E_L) / tau_m + (I_syn + I_e + I_stim) / C_m

Expand Down
4 changes: 2 additions & 2 deletions tests/nest_tests/test_multisynapse.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def test_multisynapse(self):
nest.Connect(sg, neuron, syn_spec={"receptor_type": receptor_types["SPIKES1"], "weight": 1000., "delay": 0.1})

sg2 = nest.Create("spike_generator", params={"spike_times": [40., 60.]})
nest.Connect(sg2, neuron, syn_spec={"receptor_type": receptor_types["SPIKES2"], "weight": 1000., "delay": 0.1})
nest.Connect(sg2, neuron, syn_spec={"receptor_type": receptor_types["SPIKES2"], "weight": -1000., "delay": 0.1})

sg3 = nest.Create("spike_generator", params={"spike_times": [30., 70.]})
nest.Connect(sg3, neuron, syn_spec={"receptor_type": receptor_types["SPIKES3"], "weight": 500., "delay": 0.1})
Expand Down Expand Up @@ -150,7 +150,7 @@ def test_multisynapse_with_vector_input_ports(self):
nest.Connect(sg, neuron, syn_spec={"receptor_type": receptor_types["SPIKES_0"], "weight": 1000., "delay": 0.1})

sg2 = nest.Create("spike_generator", params={"spike_times": [40., 60.]})
nest.Connect(sg2, neuron, syn_spec={"receptor_type": receptor_types["SPIKES_1"], "weight": 1000., "delay": 0.1})
nest.Connect(sg2, neuron, syn_spec={"receptor_type": receptor_types["SPIKES_1"], "weight": -1000., "delay": 0.1})

sg3 = nest.Create("spike_generator", params={"spike_times": [30., 70.]})
nest.Connect(sg3, neuron, syn_spec={"receptor_type": receptor_types["SPIKES_2"], "weight": 500., "delay": 0.1})
Expand Down
Loading