00001 #ifndef STDPSYNAPSE_H_
00002 #define STDPSYNAPSE_H_
00003
00004 #include "GenericFroemkeDanStdpSynapse.h"
00005 #include "GenericEachPairStdpSynapse.h"
00006 #include "GenericOnePairStdpSynapse.h"
00007 #include "GenericStaticSpikingSynapse.h"
00008 #include "GenericDynamicSpikingSynapse.h"
00009 #include "GenericCurrentBasedSpikingSynapse.h"
00010 #include "ExponentialDecaySpikeResponse.h"
00011
00013
00035 class StaticStdpSynapse : public GenericFroemkeDanStdpSynapse< GenericEachPairStdpSynapse< GenericStaticSpikingSynapse< GenericCurrentBasedSpikingSynapse< ExponentialDecaySpikeResponse > > > >
00036 {
00037 SIMOBJECT( StaticStdpSynapse, AdvancePhase::SpikeDriven )
00038
00039 public:
00040 StaticStdpSynapse(
00041 const float Winit = 1e-9,
00042 const float tau = 3e-3,
00043 const float delay = 1e-3,
00044 const bool useFroemkeDanSTDP = true,
00045 const float tauspost = 50e-3,
00046 const float tauspre = 50e-3,
00047 const float taupos = 50e-3,
00048 const float tauneg = 50e-3,
00049 const float STDPgap=2e-3,
00050 const int activeSTDP=1,
00051 const float Wex = 10e-9,
00052 const float Aneg = -0.2e-9,
00053 const float Apos = 0.2e-9,
00054 const float mupos = 0.0,
00055 const float muneg = 0.0,
00056 const float back_delay = 0.0
00057 )
00058 {
00059 this->Winit = Winit;
00060 this->tau = tau;
00061 this->delay = delay;
00062 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00063 this->tauspost = tauspost;
00064 this->tauspre = tauspre;
00065 this->taupos = taupos;
00066 this->tauneg = tauneg;
00067 this->STDPgap = STDPgap;
00068 this->activeSTDP = activeSTDP ;
00069 this->Wex = Wex;
00070 this->Aneg = Aneg;
00071 this->Apos = Apos;
00072 this->mupos = mupos;
00073 this->muneg = muneg;
00074 this->back_delay = back_delay;
00075 };
00076 };
00077
00079
00101 class DynamicStdpSynapse : public GenericFroemkeDanStdpSynapse< GenericEachPairStdpSynapse< GenericDynamicSpikingSynapse< GenericCurrentBasedSpikingSynapse< ExponentialDecaySpikeResponse > > > >
00102 {
00103 SIMOBJECT( DynamicStdpSynapse, AdvancePhase::SpikeDriven )
00104
00105 public:
00106 DynamicStdpSynapse(
00107 const float Winit = 1e-9,
00108 const float tau = 3e-3,
00109 const float delay = 1e-3,
00110 const float U = 0.2,
00111 const float D = 0.1,
00112 const float F = 0.4,
00113 const float u0 = 0.2,
00114 const float r0 = 1.0,
00115 const float f0 =-1.0,
00116 const bool useFroemkeDanSTDP = true,
00117 const float tauspost = 50e-3,
00118 const float tauspre = 50e-3,
00119 const float taupos = 50e-3,
00120 const float tauneg = 50e-3,
00121 const float STDPgap=2e-3,
00122 const int activeSTDP=1,
00123 const float Wex = 10e-9,
00124 const float Aneg = -0.2e-9,
00125 const float Apos = 0.2e-9,
00126 const float mupos = 0.0,
00127 const float muneg = 0.0,
00128 const float back_delay = 0.0
00129 )
00130 {
00131 this->Winit = Winit;
00132 this->tau = tau;
00133 this->delay = delay;
00134 this->U = U;
00135 this->D = D;
00136 this->F = F;
00137 this->u0 = u0;
00138 this->r0 = r0;
00139 this->f0 = f0;
00140 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00141 this->tauspost = tauspost;
00142 this->tauspre = tauspre;
00143 this->taupos = taupos;
00144 this->tauneg = tauneg;
00145 this->STDPgap = STDPgap;
00146 this->activeSTDP = activeSTDP ;
00147 this->Wex = Wex;
00148 this->Aneg = Aneg;
00149 this->back_delay = back_delay;
00150 this->Apos = Apos;
00151 this->mupos = mupos;
00152 this->muneg = muneg;
00153 };
00154 };
00155
00157 class StaticIzhiStdpSynapse : public GenericFroemkeDanStdpSynapse< GenericOnePairStdpSynapse< GenericStaticSpikingSynapse< GenericCurrentBasedSpikingSynapse< ExponentialDecaySpikeResponse > > > >
00158 {
00159 SIMOBJECT( StaticIzhiStdpSynapse, AdvancePhase::SpikeDriven )
00160
00161 public:
00162 StaticIzhiStdpSynapse(
00163 const float Winit = 1e-9,
00164 const float tau = 3e-3,
00165 const float delay = 1e-3,
00166 const bool useFroemkeDanSTDP = false,
00167 const float tauspost = 50e-3,
00168 const float tauspre = 50e-3,
00169 const float taupos = 50e-3,
00170 const float tauneg = 50e-3,
00171 const float STDPgap=2e-3,
00172 const int activeSTDP=1,
00173 const float Wex = 10e-9,
00174 const float Aneg = -0.2e-9,
00175 const float Apos = 0.2e-9,
00176 const float mupos = 0.0,
00177 const float muneg = 0.0,
00178 const float back_delay = 0.0
00179 )
00180 {
00181 this->Winit = Winit;
00182 this->tau = tau;
00183 this->delay = delay;
00184 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00185 this->tauspost = tauspost;
00186 this->tauspre = tauspre;
00187 this->taupos = taupos;
00188 this->tauneg = tauneg;
00189 this->STDPgap = STDPgap;
00190 this->activeSTDP = activeSTDP ;
00191 this->Wex = Wex;
00192 this->Aneg = Aneg;
00193 this->Apos = Apos;
00194 this->mupos = mupos;
00195 this->muneg = muneg;
00196 this->back_delay = back_delay;
00197 };
00198 };
00199
00200
00202 class DynamicIzhiStdpSynapse : public GenericFroemkeDanStdpSynapse< GenericOnePairStdpSynapse< GenericDynamicSpikingSynapse< GenericCurrentBasedSpikingSynapse< ExponentialDecaySpikeResponse > > > >
00203 {
00204 SIMOBJECT( DynamicIzhiStdpSynapse, AdvancePhase::SpikeDriven )
00205
00206 public:
00207 DynamicIzhiStdpSynapse(
00208 const float Winit = 1e-9,
00209 const float tau = 3e-3,
00210 const float delay = 1e-3,
00211 const float U = 0.2,
00212 const float D = 0.1,
00213 const float F = 0.4,
00214 const float u0 = 0.2,
00215 const float r0 = 1.0,
00216 const float f0 =-1.0,
00217 const bool useFroemkeDanSTDP = true,
00218 const float tauspost = 50e-3,
00219 const float tauspre = 50e-3,
00220 const float taupos = 50e-3,
00221 const float tauneg = 50e-3,
00222 const float STDPgap=2e-3,
00223 const int activeSTDP=1,
00224 const float Wex = 10e-9,
00225 const float Aneg = -0.2e-9,
00226 const float Apos = 0.2e-9,
00227 const float mupos = 0.0,
00228 const float muneg = 0.0,
00229 const float back_delay = 0.0
00230 )
00231 {
00232 this->Winit = Winit;
00233 this->tau = tau;
00234 this->delay = delay;
00235 this->U = U;
00236 this->D = D;
00237 this->F = F;
00238 this->u0 = u0;
00239 this->r0 = r0;
00240 this->f0 = f0;
00241 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00242 this->tauspost = tauspost;
00243 this->tauspre = tauspre;
00244 this->taupos = taupos;
00245 this->tauneg = tauneg;
00246 this->STDPgap = STDPgap;
00247 this->activeSTDP = activeSTDP ;
00248 this->Wex = Wex;
00249 this->Aneg = Aneg;
00250 this->Apos = Apos;
00251 this->mupos = mupos;
00252 this->muneg = muneg;
00253 this->back_delay = back_delay;
00254 };
00255 };
00256
00257 class StaticStdpSquareSynapse : public GenericFroemkeDanStdpSynapse< GenericEachPairStdpSynapse< GenericStaticSpikingSynapse< GenericCurrentBasedSpikingSynapse< SquarePulseSpikeResponse > > > >
00258 {
00259 SIMOBJECT( StaticStdpSquareSynapse, AdvancePhase::SpikeDriven )
00260
00261 public:
00262 StaticStdpSquareSynapse(
00263 const float Winit = 1e-9,
00264 const float A = 1,
00265 const float tau = 1e-3,
00266 const float delay = 1e-3,
00267 const bool useFroemkeDanSTDP = true,
00268 const float tauspost = 50e-3,
00269 const float tauspre = 50e-3,
00270 const float taupos = 50e-3,
00271 const float tauneg = 50e-3,
00272 const float STDPgap=2e-3,
00273 const int activeSTDP=1,
00274 const float Wex = 10e-9,
00275 const float Aneg = -0.2e-9,
00276 const float Apos = 0.2e-9,
00277 const float mupos = 0.0,
00278 const float muneg = 0.0,
00279 const float back_delay = 0.0
00280 )
00281 {
00282 this->Winit = Winit;
00283 this->A = A;
00284 this->tau = tau;
00285 this->delay = delay;
00286 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00287 this->tauspost = tauspost;
00288 this->tauspre = tauspre;
00289 this->taupos = taupos;
00290 this->tauneg = tauneg;
00291 this->STDPgap = STDPgap;
00292 this->activeSTDP = activeSTDP;
00293 this->activeSTDP = 1;
00294 this->Wex = Wex;
00295 this->Aneg = Aneg;
00296 this->Apos = Apos;
00297 this->mupos = mupos;
00298 this->muneg = muneg;
00299 this->back_delay = back_delay;
00300 };
00301 };
00302
00303 class StaticStdpCondExpSynapse : public GenericFroemkeDanStdpSynapse< GenericEachPairStdpSynapse<
00304 GenericStaticSpikingSynapse< GenericConductanceBasedSpikingSynapse< ExponentialDecaySpikeResponse > > > >
00305 {
00306 SIMOBJECT( StaticStdpCondExpSynapse, AdvancePhase::SpikeDriven )
00307
00308 public:
00309 StaticStdpCondExpSynapse(
00310 const float Winit = 1e-9,
00311 const float tau = 3e-3,
00312 const float delay = 1e-3,
00313 const float Erev = 0e-3,
00314 const bool useFroemkeDanSTDP = true,
00315 const float tauspost = 50e-3,
00316 const float tauspre = 50e-3,
00317 const float taupos = 50e-3,
00318 const float tauneg = 50e-3,
00319 const float STDPgap=2e-3,
00320 const int activeSTDP=1,
00321 const float Wex = 10e-9,
00322 const float Aneg = -0.2e-9,
00323 const float Apos = 0.2e-9,
00324 const float mupos = 0.0,
00325 const float muneg = 0.0,
00326 const float back_delay = 0.0
00327 )
00328 {
00329 this->Winit = Winit;
00330 this->tau = tau;
00331 this->delay = delay;
00332 this->Erev = Erev;
00333 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00334 this->tauspost = tauspost;
00335 this->tauspre = tauspre;
00336 this->taupos = taupos;
00337 this->tauneg = tauneg;
00338 this->STDPgap = STDPgap;
00339 this->activeSTDP = activeSTDP ;
00340 this->Wex = Wex;
00341 this->Aneg = Aneg;
00342 this->Apos = Apos;
00343 this->mupos = mupos;
00344 this->muneg = muneg;
00345 this->back_delay = back_delay;
00346 };
00347
00348 };
00349
00350 class DynamicStdpCondExpSynapse : public GenericFroemkeDanStdpSynapse< GenericEachPairStdpSynapse<
00351 GenericDynamicSpikingSynapse< GenericConductanceBasedSpikingSynapse< ExponentialDecaySpikeResponse > > > >
00352 {
00353 SIMOBJECT( DynamicStdpCondExpSynapse, AdvancePhase::SpikeDriven )
00354
00355 public:
00356 DynamicStdpCondExpSynapse(
00357 const float Winit = 1e-9,
00358 const float tau = 3e-3,
00359 const float delay = 1e-3,
00360 const float Erev = 0e-3,
00361 const float U = 0.2,
00362 const float D = 0.1,
00363 const float F = 0.4,
00364 const float u0 = 0.2,
00365 const float r0 = 1.0,
00366 const float f0 =-1.0,
00367 const bool useFroemkeDanSTDP = true,
00368 const float tauspost = 50e-3,
00369 const float tauspre = 50e-3,
00370 const float taupos = 50e-3,
00371 const float tauneg = 50e-3,
00372 const float STDPgap=2e-3,
00373 const int activeSTDP=1,
00374 const float Wex = 10e-9,
00375 const float Aneg = -0.2e-9,
00376 const float Apos = 0.2e-9,
00377 const float mupos = 0.0,
00378 const float muneg = 0.0,
00379 const float back_delay = 0.0
00380 )
00381 {
00382 this->Winit = Winit;
00383 this->tau = tau;
00384 this->delay = delay;
00385 this->Erev = Erev;
00386 this->U = U;
00387 this->D = D;
00388 this->F = F;
00389 this->u0 = u0;
00390 this->r0 = r0;
00391 this->f0 = f0;
00392 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00393 this->tauspost = tauspost;
00394 this->tauspre = tauspre;
00395 this->taupos = taupos;
00396 this->tauneg = tauneg;
00397 this->STDPgap = STDPgap;
00398 this->activeSTDP = activeSTDP ;
00399 this->Wex = Wex;
00400 this->Aneg = Aneg;
00401 this->Apos = Apos;
00402 this->mupos = mupos;
00403 this->muneg = muneg;
00404 this->back_delay = back_delay;
00405 };
00406
00407 };
00408
00409
00410 #endif