Dear all,
I realized that spikes that pass synapses (e.g. stdp_connection) are not processing a "multiplicity" value. However, some other nodes e.g. spikes delivered from the volume_transmitter into the stdp_dopa_connection include such a value. Does this mean, the multiplicity for spike events that pass a synapse is always equal to 1?
Thanks!
Best Regards,
Benedikt
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/47b7e43f72317911b3e285daa9ecd4f4...
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/47b7e43f72317911b3e285daa9ecd4f4...
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
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/47b7e43f72317911b3e285daa9ecd4f4...
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/47b7e43f72317911b3e285daa9ecd4f4...
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
Dear Benedikt,
If time, it might be worth adding this information in the documentation if not available yet, to not trap other people on this.
would you be able to send us a pull request with such information added (or a comment in the code)?
I'm afraid that your initial confusion now kind of qualifies you to judge best where you would have expected to find this ;-)
Cheers, Jochen!
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/47b7e43f72317911b3e285daa9ecd4f4...
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/47b7e43f72317911b3e285daa9ecd4f4...
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@in.tum.demailto:feldotto@in.tum.de
https://www6.in.tum.de/en/people/benedikt-feldotto-msc/ www.neurorobotics.nethttp://www.neurorobotics.net
_______________________________________________ NEST Users mailing list -- users@nest-simulator.orgmailto:users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.orgmailto:users-leave@nest-simulator.org
-- Dr. Jochen Martin Eppler Phone: +49(2461)61-96653 ---------------------------------- Simulation Laboratory Neuroscience Jülich Supercomputing Centre Institute for Advanced Simulation
------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------ Forschungszentrum Juelich GmbH 52425 Juelich Sitz der Gesellschaft: Juelich Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498 Vorsitzender des Aufsichtsrats: MinDir Volker Rieke Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender), Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------