GeNN  2.2.3
GPU enhanced Neuronal Networks (GeNN)
synapseModels.h
Go to the documentation of this file.
1 
2 #ifndef SYNAPSEMODELS_H
3 #define SYNAPSEMODELS_H
4 
5 #include "dpclass.h"
6 
7 #include <string>
8 #include <vector>
9 
10 using namespace std;
11 
12 
17 {
18 public:
19  string simCode;
20  string simCodeEvnt;
21  string simLearnPost;
22  string evntThreshold;
23  string synapseDynamics;
27  vector<string> varNames;
28  vector<string> varTypes;
29  vector<string> pNames;
30  vector<string> dpNames;
34  bool needPreSt;
35  bool needPostSt;
36 
39 };
40 
41 
42 // Synapse Types
43 extern vector<weightUpdateModel> weightUpdateModels;
44 extern unsigned int NSYNAPSE;
45 extern unsigned int NGRADSYNAPSE;
46 extern unsigned int LEARN1SYNAPSE;
47 const unsigned int SYNTYPENO = 4; // maximum number of synapse types: SpineML needs to know this
48 
49 
50 //--------------------------------------------------------------------------
54 //--------------------------------------------------------------------------
55 
56 class pwSTDP : public dpclass
57 {
58 public:
59  double calculateDerivedParameter(int index, vector<double> pars, double dt = 1.0) {
60  switch (index) {
61  case 0:
62  return lim0(pars, dt);
63  case 1:
64  return lim1(pars, dt);
65  case 2:
66  return slope0(pars, dt);
67  case 3:
68  return slope1(pars, dt);
69  case 4:
70  return off0(pars, dt);
71  case 5:
72  return off1(pars, dt);
73  case 6:
74  return off2(pars, dt);
75  }
76  return -1;
77  }
78 
79  double lim0(vector<double> pars, double dt) {
80  return (1/pars[4] + 1/pars[1]) * pars[0] / (2/pars[1]);
81  }
82 
83  double lim1(vector<double> pars, double dt) {
84  return -((1/pars[3] + 1/pars[1]) * pars[0] / (2/pars[1]));
85  }
86 
87  double slope0(vector<double> pars, double dt) {
88  return -2*pars[5]/(pars[1]*pars[0]);
89  }
90 
91  double slope1(vector<double> pars, double dt) {
92  return -1*slope0(pars, dt);
93  }
94 
95  double off0(vector<double> pars, double dt) {
96  return pars[5]/pars[4];
97  }
98 
99  double off1(vector<double> pars, double dt) {
100  return pars[5]/pars[1];
101  }
102 
103  double off2(vector<double> pars, double dt) {
104  return pars[5]/pars[3];
105  }
106 };
107 
108 
109 //--------------------------------------------------------------------------
112 //--------------------------------------------------------------------------
113 
115 
116 #endif // SYNAPSEMODELS_H
vector< string > pNames
Names of (independent) parameters of the model.
Definition: synapseModels.h:29
double slope1(vector< double > pars, double dt)
Definition: synapseModels.h:91
vector< string > varNames
Names of the variables in the postsynaptic model.
Definition: synapseModels.h:27
string simCode_supportCode
Support code is made available within the synapse kernel definition file and is meant to contain user...
Definition: synapseModels.h:24
TODO This class definition may be code-generated in a future release.
Definition: synapseModels.h:56
const unsigned int SYNTYPENO
Definition: synapseModels.h:47
dpclass * dps
Definition: synapseModels.h:33
string synapseDynamics
Simulation code for synapse dynamics independent of spike detection.
Definition: synapseModels.h:23
string simCodeEvnt
Simulation code that is used for spike events (all the instances where event threshold condition is m...
Definition: synapseModels.h:20
bool needPostSt
Whether postsynaptic spike times are needed or not.
Definition: synapseModels.h:35
vector< string > extraGlobalSynapseKernelParameters
Additional parameter in the neuron kernel; it is translated to a population specific name but otherwi...
Definition: synapseModels.h:31
string simCode
Simulation code that is used for true spikes (only one time step after spike detection) ...
Definition: synapseModels.h:19
double lim0(vector< double > pars, double dt)
Definition: synapseModels.h:79
unsigned int LEARN1SYNAPSE
Variable attaching the name LEARN1SYNAPSE to the the primitive STDP model for learning.
Definition: synapseModels.cc:34
double off0(vector< double > pars, double dt)
Definition: synapseModels.h:95
double off2(vector< double > pars, double dt)
Definition: synapseModels.h:103
string simLearnPost_supportCode
Support code is made available within the synapse kernel definition file and is meant to contain user...
Definition: synapseModels.h:25
Definition: dpclass.h:10
unsigned int NSYNAPSE
Variable attaching the name NSYNAPSE to the non-learning synapse.
Definition: synapseModels.cc:32
double calculateDerivedParameter(int index, vector< double > pars, double dt=1.0)
Definition: synapseModels.h:59
string evntThreshold
Simulation code for spike event detection.
Definition: synapseModels.h:22
Class to hold the information that defines a weightupdate model (a model of how spikes affect synapti...
Definition: synapseModels.h:16
bool needPreSt
Whether presynaptic spike times are needed or not.
Definition: synapseModels.h:34
double off1(vector< double > pars, double dt)
Definition: synapseModels.h:99
unsigned int NGRADSYNAPSE
Variable attaching the name NGRADSYNAPSE to the graded synapse wrt the presynaptic voltage...
Definition: synapseModels.cc:33
vector< string > extraGlobalSynapseKernelParameterTypes
Additional parameters in the neuron kernel; they are translated to a population specific name but oth...
Definition: synapseModels.h:32
string synapseDynamics_supportCode
Support code is made available within the synapse kernel definition file and is meant to contain user...
Definition: synapseModels.h:26
void prepareWeightUpdateModels()
Function that prepares the standard (pre) synaptic models, including their variables, parameters, dependent parameters and code strings.
Definition: synapseModels.cc:42
vector< weightUpdateModel > weightUpdateModels
Global C++ vector containing all weightupdate model descriptions.
Definition: synapseModels.cc:31
double slope0(vector< double > pars, double dt)
Definition: synapseModels.h:87
string simLearnPost
Simulation code which is used in the learnSynapsesPost kernel/function, where postsynaptic neuron spi...
Definition: synapseModels.h:21
vector< string > varTypes
Types of the variable named above, e.g. "float". Names and types are matched by their order of occurr...
Definition: synapseModels.h:28
vector< string > dpNames
Names of dependent parameters of the model.
Definition: synapseModels.h:30
double lim1(vector< double > pars, double dt)
Definition: synapseModels.h:83