Skip to content

Commit

Permalink
Add STDP synapses with nearest-neighbor spike pairing schemes
Browse files Browse the repository at this point in the history
Add three types of nearest-neighbour STDP: symmetric (but not to be
confused with PR nest#218), presynaptic-centered, and restricted
symmetric. These are worth implementing because described in a highly-
cited review [Morrison A., Diesmann M., and Gerstner W. (2008)
Phenomenological models of synaptic plasticity based on spike timing,
Biol. Cybern. 98, 459--478].

In these models a spike is taken into account in the weight change
rule not with all preceding spikes, but only with some of the
nearest, see the three pairing schemes in Fig. 7 in [Morrison et
al., 2008].

The implementation relies on two additional variables - presynaptic
and postsynaptic traces, like in stdp_synapse. However, their update
rules differ from those of the latter. That's why the archiving_node
was modified to add one more state variable, nearest_neighbor_Kminus.
It is not stored in the node, just computed on the fly when
requested. To return nearest_neighbor_Kminus I changed the
archiving_node.get_K_values() function signature, because, as fas as
I can see, this function is not currently used anywhere.

The tests for all three models reside in a single file (but as three
separate tests), and are the following: generate two Poisson spike
sequences as presynaptic and postsynaptic, feed them to NEST to get
the synaptic weight change, then reproduce the weight change
independently outside of NEST and check whether the expected weight
equals the obtained one.
  • Loading branch information
aserenko committed Dec 6, 2017
1 parent 3d4d2ba commit c59d871
Show file tree
Hide file tree
Showing 10 changed files with 1,430 additions and 8 deletions.
17 changes: 17 additions & 0 deletions models/modelsmodule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,9 @@
#include "static_connection.h"
#include "static_connection_hom_w.h"
#include "stdp_connection.h"
#include "stdp_nn_restr_connection.h"
#include "stdp_nn_symm_connection.h"
#include "stdp_nn_pre-centered_connection.h"
#include "stdp_connection_facetshw_hom.h"
#include "stdp_connection_facetshw_hom_impl.h"
#include "stdp_connection_hom.h"
Expand Down Expand Up @@ -470,6 +473,20 @@ ModelsModule::init( SLIInterpreter* )
.register_connection_model< STDPConnection< TargetIdentifierIndex > >(
"stdp_synapse_hpc" );

kernel()
.model_manager
.register_connection_model< STDPNNRestrConnection< TargetIdentifierPtrRport > >(
"stdp_nn_restr_synapse" );

kernel()
.model_manager
.register_connection_model< STDPNNSymmConnection< TargetIdentifierPtrRport > >(
"stdp_nn_symm_synapse" );

kernel()
.model_manager
.register_connection_model< STDPNNPreCenteredConnection< TargetIdentifierPtrRport > >(
"stdp_nn_pre-centered_synapse" );

/* BeginDocumentation
Name: stdp_pl_synapse_hom_hpc - Variant of stdp_pl_synapse_hom with low
Expand Down
Loading

0 comments on commit c59d871

Please sign in to comment.