Auryn simulator

Simulator for spiking neural networks with synaptic plasticity

User Tools

Site Tools


tutorials:multiple_synaptic_state_variables

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
tutorials:multiple_synaptic_state_variables [2014/12/15 09:18] zenketutorials:multiple_synaptic_state_variables [2015/02/09 10:02] – [Tutorial: Multiple Synaptic State Variables] zenke
Line 2: Line 2:
  
 Let's assume you would like to write a plasticity model in which induced changes to a synapse require some time to percolate through. Consider that inserting for instance additional AMPA receptors into a postsynaptic density takes time... Let's assume you would like to write a plasticity model in which induced changes to a synapse require some time to percolate through. Consider that inserting for instance additional AMPA receptors into a postsynaptic density takes time...
 +
 +**Update** As of Auryn 0.5 synapse models with multiple states can be implemented more easily using synaptic state vectors -- see for [[examples:sim_bg_lowpass]] in the example directory to get an idea.
 +
  
 ===== Aims ===== ===== Aims =====
Line 66: Line 69:
 This change will now propagate weights stored in ''lpw'', but so far these weights are not plastic, which we will change in the next step. For now it is a good idea to save the changes and try compiling the new class again to see if everything runs without error. This change will now propagate weights stored in ''lpw'', but so far these weights are not plastic, which we will change in the next step. For now it is a good idea to save the changes and try compiling the new class again to see if everything runs without error.
  
-==== Evolve function ====+==== Implementing the evolve function to do the low-pass filtering ====
  
 So far the values stored in ''lpw'' do not change over time. We are now going to change that by implementing the method ''evolve()'' which will do the actual low-pass filtering of ''w'' and store the results in ''lpw''. Since this function is called in every simulation time step and it affects all the weights (~O(N^2)) is is a good idea to wrap slow processes in a construct that only runs them every so many time steps. To do this we start by adding the following lines to the header .h file. So far the values stored in ''lpw'' do not change over time. We are now going to change that by implementing the method ''evolve()'' which will do the actual low-pass filtering of ''w'' and store the results in ''lpw''. Since this function is called in every simulation time step and it affects all the weights (~O(N^2)) is is a good idea to wrap slow processes in a construct that only runs them every so many time steps. To do this we start by adding the following lines to the header .h file.
Line 95: Line 98:
 } }
 </code> </code>
-which now implements the low-pass filter. Importantly, the update off all ''lpw'' values is only run when the condition ''sys->get_clock()%timestep_lp == 0'' is fulfilled (every timestep_lp time steps).+which now implements the low-pass filter. Importantly, the update off all ''lpw'' values is only run when the condition ''sys->get_clock()%timestep_lp == 0'' is fulfilled (every timestep_lp time steps). Note, the important computation happens in the line ''AurynFloat dw = ( *wval - *lpwval ) * delta_lp;'' which could be modified by additional functions to achieve non-linear filtering effects such as could be caused by finite availability of for instance AMPA receptors or scaffolding proteins necessary to implement plastic changes.
tutorials/multiple_synaptic_state_variables.txt · Last modified: 2016/08/18 16:58 by zenke