-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix third-factor plasticity buffering and add third factor plasticity tutorial #1027
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comments on the jupyter notebook:
- The NESTML neuron model name is
iaf_psc_exp_active_dendrite_neuron
, but the kernel used is an alpha kernel. Should the neuron model be renamed? - Why is
I_syn = 0 pA
on the last line of the model? Should the value ofI_syn
be reset when a spike is emitted? - The
run_synapse_test
function says the simulation is run for two neurons of typeneuron_model_name
, but the pre-neuron is aparrot
neuron and the post-neuron isneuron_model_name
. In principle, the pre-neuron can also be of typeneuron_model_name
, right? - Isn't running the simulation for each timestep costly? Can we use the
step_current_generator
for setting theI_dAP
currents instead? - The y-axis for the weight plot in Case 2 is cluttered. Could you fix that?
|
||
In the neuron, no special output port is required; all state variables are accessible for the third factor rules. | ||
|
||
NESTML needs to be invoked so that it generates code for neuron and synapse together. Additionally, specify the ``"post_ports"`` entry to connect the input port on the synapse with the right variable of the neuron (see :ref:`Generating code`). | ||
NESTML needs to be invoked so that it generates code for neuron and synapse together. Additionally, specify the ``"post_ports"`` entry to connect the input port on the synapse with the right variable of the neuron (see :ref:`Generating code`). Passing this as a code generator option facilitates combining models from different sources, where the naming conventions can be different between the neuron and synapse model. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:ref:Generating code
points to the Generating code
section in the Spinnaker target page. Please fix that.
Thanks for the detailed review! The new commits should address all of your comments.
Indeed, I added this because I thought it would make it simpler to make a neuron spike by generating a spike event with a very large weight.
I don´t think it can set the value of the state variable directly. This is just for demonstration purposes on a 2-neuron network, so performance is not so important. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you generate readthedocs and post the link?
Please see: https://nestml--1027.org.readthedocs.build/en/1027/ |
doc/running/running_nest.rst
Outdated
|
||
The implementation corresponds to the event-based update scheme in Fig. 4b of [Stapmanns2021]_. There, the authors observe that the storage and management of such a buffer can be expensive in terms of memory and runtime. In each time step, the value of the current dendritic current (or membrane potential, or other third factor) is appended to the buffer. The maximum length of the buffer depends on the maximum inter-spike interval of any of the presynaptic neurons. | ||
|
||
To generate code for synapses with a (postsynaptic) plasticity factor, NESTML needs to be invoked so that it generates code for neuron and synapse together (as described in :ref:`Generating code for plastic synapses`). Additionally, specify the ``"post_ports"`` entry to connect the input port on the synapse with the right variable of the neuron (see :ref:`Generating code`). Passing this as a code generator option facilitates combining models from different sources, where the naming conventions can be different between the neuron and synapse model. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The link to Generating code
here points to SpiNNaker. Could you fix that?
Could you also resolve the merge conflicts? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for adding this feature!
Cheers! |
Extend and fix issue with third factor plasticity test: it should also be using a buffer for postsynaptic values, alike to the Clopath neuron's buffer for postsynaptic V_m (and derived) values