massive input weights get processed as if they are 0.
georghinkel opened this issue · 11 comments
I am a bit confused about the Poisson spike sources and how they connect to other neurons. I tried this minimal setup using the PyPy-version of sPyNNaker8:
import pyNN.spiNNaker as sim
sim.setup()
poisson = sim.Population(1, sim.SpikeSourcePoisson(duration=1.0e10, rate=0.0, start=0.0))
receiver = sim.Population(1, sim.IF_curr_exp())
conn = sim.AllToAllConnector()
syn = sim.StaticSynapse(weight=100.0, delay=1.0)
sim.Projection(presynaptic_population=poisson, postsynaptic_population=receiver, connector=conn, synapse_type=syn, receptor_type="excitatory")
receiver.record("v")
poisson.record("spikes")
sim.run(20.0)
poisson.set(rate=1000.0)
sim.run(20.0)
voltages = receiver.spinnaker_get_data("v")
spikes = poisson.spinnaker_get_data("spikes")
sim.end()
print voltages
print spikes
The result shows a couple of spikes between 20ms and 40ms simulation time, but no movement on the receiver neuron. What am I doing wrong?
I have not tried the full developer setup, yet, but I thought some example like this should work out of the box, otherwise I see no point to use Poisson spike generators in spinnaker.
I am using a small board (Spinn-3) connected via Ethernet and PyNN 0.8.3, should that be of relevance.
The same script simulated with nest yields a significant effect to the connected IF_curr_exp neuron that spikes a couple of times in the 20ms timeframe.
Hi George.
I ran your script and plotted your spikes and membrane protentials. The poisson indeed fires, so that is not the issue here.
The issue is that when you use such large weights (which id believe is unrealistic biology speaking) that it breaks somewhere in the reception code. We are looking into this and therefore im renaming your issue.
regards
Alan
to give you some realistic weights, please look at our examples found here:
https://github.com/SpiNNakerManchester/PyNN8Examples
Actually, I tried with several different weights and did not get see any changes in the membrane voltage of the connected neuron. I tried the weights 0.00015, 0.15 and 100.0.
Weights are more usually values around 1.0 - have you tried a weight of 1.5? Aside from the problem with weight=100.0 (which as Alan says is biologically unrealistic) which we are looking at, I've tried your script with weights 0.00015 and 0.15 and it does give a response in the membrane voltage in both cases (it's extremely small in the case of 0.00015).
[This is against the current master version of the software toolchain, so it's plausible that we have inadvertently fixed an error from the pip release version. I'll have a look at your script using the release version and get back to you...]
its possible master fixed the neuron param passing between calls to run. given we had that seed issue a while back. might be we fixed both with the same fix.
try your script without 2 runs, if that works, you need to move up to development version, or await our next release cycle.
well that implies the release works as well. and that its just a massive weight issue. nothing to do with little weights nor posson issues.
I just realized i tested the smaller weights only recording spikes. The fact that I couldn't see any was the main reason to put larger weights. I get roughly the same plot for a weight of 0.15. The threshold seems to be 10.0. Anything below that works.
funny that, with the standard synfire, i found the threshold to be around 80. guess it must be based off rate of fire as well. but now we're jsut spit balling.
Don't think this is an issue at the moment, but please reopen if it is.