Hi Hans Ekkehard,
thanks for the quick response and code check!
The
stdp_dopa_connection::process_dopa_spikes_()
actually only considers the spike timing, but calls another function to
update the dopamine concentration in
stdp_dopa_connection::update_dopamine_()
Here, the multiplicity is indeed considered:
n_ = n_ * std::exp( minus_dt / cp.tau_n_) + dopa_spikes[
dopa_spikes_idx_ ].multiplicity_/ cp.tau_n_;
So I think it's not a bug, but just a little tricky to grasp when
looking at the code in first place.
My question is still be answered in the issue and your explanation you
posted, namely that spike multiplicities are dissolved into individual
spikes between neuron nodes.
So thanks for the explanation and also the hint with the devices to
volume_transmitters, it is actually a set up I am using in this way and
I should check again if correct. If time, it might be worth adding this
information in the documentation if not available yet, to not trap other
people on this.
Best Regards,
Benedikt
On 01.02.21 08:24, Hans Ekkehard Plesser wrote:
Hi Benedikt,
You may have hit on a bug here. I am not an expert in volume transmitter matters, but a
quick look through the code reveals that volume_transmitter::update() stores spike
multiplicity here
https://github.com/nest/nest-simulator/blob/47b7e43f72317911b3e285daa9ecd4f…
but that stdp_dopa_connection::process_dopa_spikes_() does not read the multiplicity
information in its dopa_spikes argument:
https://github.com/nest/nest-simulator/blob/47b7e43f72317911b3e285daa9ecd4f…
Could you create an issue on Github, ideally providing a minimal reproducer/test for this
issue?
Multiplicity handling between neurons is discussed in this issue
https://github.com/nest/nest-simulator/issues/77#issuecomment-148995091
Multiplicity is resolved properly in any case when "normal" neurons send spikes
to each other, because those spikes are transmitted via send_remote(), which always
unrolls multiplicity. Spike trains from devices (any network node class for which
has_proxies() returns false) send spikes with multiplicity. So if you connect, e.g., a
poisson_generator directly to a volume_transmitter, multiplicity will be ignored if my
reading of the code above is right. If you put a parrot_neuron between the
poisson_generator and the volume_transmitter, multiplicity should be handled correctly.
Best,
Hans Ekkehard
--
Benedikt Feldotto M.Sc.
Research Assistant
Human Brain Project - Neurorobotics
Technical University of Munich
Department of Informatics
Chair of Robotics, Artificial Intelligence and Real-Time Systems
Room HB 2.02.20
Parkring 13
D-85748 Garching b. München
Tel.: +49 89 289 17628
Mail: feldotto(a)in.tum.de
https://www6.in.tum.de/en/people/benedikt-feldotto-msc/
www.neurorobotics.net