00001 #ifndef DAMODULATEDSTDPSYNAPSE_H_
00002 #define DAMODULATEDSTDPSYNAPSE_H_
00003
00004 #include "GenericDAModulatedSTDPSynapse.h"
00005 #include "GenericFroemkeDanStdpSynapse.h"
00006 #include "GenericEachPairStdpSynapse.h"
00007 #include "GenericStaticSpikingSynapse.h"
00008 #include "GenericCurrentBasedSpikingSynapse.h"
00009 #include "ExponentialDecaySpikeResponse.h"
00010 #include "SquarePulseSpikeResponse.h"
00011
00012 class DAModulatedStaticStdpSynapse : public GenericDAModulatedSTDPSynapse<
00013 GenericFroemkeDanStdpSynapse<
00014 GenericEachPairStdpSynapse<
00015 GenericStaticSpikingSynapse<
00016 GenericCurrentBasedSpikingSynapse<
00017 ExponentialDecaySpikeResponse
00018 >
00019 >
00020 >
00021 >
00022 > {
00023 SIMOBJECT( DAModulatedStaticStdpSynapse, AdvancePhase::SpikeDriven )
00024 public:
00025
00026 DAModulatedStaticStdpSynapse(
00027 const float Winit = 1e-9,
00028 const float tau = 3e-3,
00029 const float delay = 1e-3,
00030 const bool useFroemkeDanSTDP = true,
00031 const float tauspost = 50e-3,
00032 const float tauspre = 50e-3,
00033 const float taupos = 50e-3,
00034 const float tauneg = 50e-3,
00035 const float STDPgap=2e-3,
00036 const bool activeDASTDP = true,
00037 const float Wex = 10e-9,
00038 const float Aneg = -0.2e-9,
00039 const float Apos = 0.2e-9,
00040 const float mupos = 0.0,
00041 const float muneg = 0.0,
00042 const float back_delay = 0.0,
00043 const float DAStdpRate = 1,
00044 const float DATraceDelay = 0.0,
00045 FiniteSpikeResponse const * daTraceResponse = NULL)
00046 {
00047 this->Winit = Winit;
00048 this->tau = tau;
00049 this->delay = delay;
00050 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00051 this->tauspost = tauspost;
00052 this->tauspre = tauspre;
00053 this->taupos = taupos;
00054 this->tauneg = tauneg;
00055 this->STDPgap = STDPgap;
00056 this->activeDASTDP = activeDASTDP;
00057 this->activeSTDP = 1;
00058 this->Wex = Wex;
00059 this->Aneg = Aneg;
00060 this->Apos = Apos;
00061 this->mupos = mupos;
00062 this->muneg = muneg;
00063 this->back_delay = back_delay;
00064 this->DAStdpRate = DAStdpRate;
00065 this->DATraceDelay = DATraceDelay;
00066 bool created = false;
00067 if (daTraceResponse == NULL) {
00068 created = true;
00069 daTraceResponse = new ExponentialDecaySpikeResponse( 1.0 );
00070 }
00071 this->da_trace_response = dynamic_cast<FiniteSpikeResponse *>(daTraceResponse->create());
00072 if (created)
00073 delete daTraceResponse;
00074 };
00075 };
00076
00077 class DAModulatedDynamicStdpSynapse : public GenericDAModulatedSTDPSynapse<
00078 GenericFroemkeDanStdpSynapse<
00079 GenericEachPairStdpSynapse<
00080 GenericDynamicSpikingSynapse<
00081 GenericCurrentBasedSpikingSynapse<
00082 ExponentialDecaySpikeResponse
00083 >
00084 >
00085 >
00086 >
00087 > {
00088 SIMOBJECT( DAModulatedDynamicStdpSynapse, AdvancePhase::SpikeDriven )
00089 public:
00090
00091 DAModulatedDynamicStdpSynapse(
00092 const float Winit = 1e-9,
00093 const float tau = 3e-3,
00094 const float delay = 1e-3,
00095 const float U = 0.2,
00096 const float D = 0.1,
00097 const float F = 0.4,
00098 const float u0 = 0.2,
00099 const float r0 = 1.0,
00100 const float f0 =-1.0,
00101 const bool useFroemkeDanSTDP = true,
00102 const float tauspost = 50e-3,
00103 const float tauspre = 50e-3,
00104 const float taupos = 50e-3,
00105 const float tauneg = 50e-3,
00106 const float STDPgap=2e-3,
00107 const bool activeDASTDP = true,
00108 const float Wex = 10e-9,
00109 const float Aneg = -0.2e-9,
00110 const float Apos = 0.2e-9,
00111 const float mupos = 0.0,
00112 const float muneg = 0.0,
00113 const float back_delay = 0.0,
00114 const float DAStdpRate = 1,
00115 const float DATraceDelay = 0.0,
00116 FiniteSpikeResponse const * daTraceResponse = NULL)
00117 {
00118 this->Winit = Winit;
00119 this->tau = tau;
00120 this->delay = delay;
00121 this->U = U;
00122 this->D = D;
00123 this->F = F;
00124 this->u0 = u0;
00125 this->r0 = r0;
00126 this->f0 = f0;
00127 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00128 this->tauspost = tauspost;
00129 this->tauspre = tauspre;
00130 this->taupos = taupos;
00131 this->tauneg = tauneg;
00132 this->STDPgap = STDPgap;
00133 this->activeDASTDP = activeDASTDP;
00134 this->activeSTDP = 1;
00135 this->Wex = Wex;
00136 this->Aneg = Aneg;
00137 this->Apos = Apos;
00138 this->mupos = mupos;
00139 this->muneg = muneg;
00140 this->back_delay = back_delay;
00141 this->DAStdpRate = DAStdpRate;
00142 this->DATraceDelay = DATraceDelay;
00143 bool created = false;
00144 if (daTraceResponse == NULL) {
00145 created = true;
00146 daTraceResponse = new ExponentialDecaySpikeResponse( 1.0 );
00147 }
00148 this->da_trace_response = dynamic_cast<FiniteSpikeResponse *>(daTraceResponse->create());
00149 if (created)
00150 delete daTraceResponse;
00151 };
00152 };
00153
00154 class DAModStdpDynamicCurrExpSynapse : public GenericDAModulatedSTDPSynapse<
00155 GenericFroemkeDanStdpSynapse<
00156 GenericEachPairStdpSynapse<
00157 GenericDynamicSpikingSynapse<
00158 GenericCurrentBasedSpikingSynapse<
00159 ExponentialDecaySpikeResponse
00160 >
00161 >
00162 >
00163 >
00164 > {
00165 SIMOBJECT( DAModStdpDynamicCurrExpSynapse, AdvancePhase::SpikeDriven )
00166 public:
00167
00168 DAModStdpDynamicCurrExpSynapse(
00169 const float Winit = 1e-9,
00170 const float tau = 3e-3,
00171 const float delay = 1e-3,
00172 const float U = 0.2,
00173 const float D = 0.1,
00174 const float F = 0.4,
00175 const float u0 = 0.2,
00176 const float r0 = 1.0,
00177 const float f0 =-1.0,
00178 const bool useFroemkeDanSTDP = true,
00179 const float tauspost = 50e-3,
00180 const float tauspre = 50e-3,
00181 const float taupos = 50e-3,
00182 const float tauneg = 50e-3,
00183 const float STDPgap=2e-3,
00184 const bool activeDASTDP = true,
00185 const float Wex = 10e-9,
00186 const float Aneg = -0.2e-9,
00187 const float Apos = 0.2e-9,
00188 const float mupos = 0.0,
00189 const float muneg = 0.0,
00190 const float back_delay = 0.0,
00191 const float DAStdpRate = 1,
00192 const float DATraceDelay = 0.0,
00193 FiniteSpikeResponse const * daTraceResponse = NULL)
00194 {
00195 this->Winit = Winit;
00196 this->tau = tau;
00197 this->delay = delay;
00198 this->U = U;
00199 this->D = D;
00200 this->F = F;
00201 this->u0 = u0;
00202 this->r0 = r0;
00203 this->f0 = f0;
00204 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00205 this->tauspost = tauspost;
00206 this->tauspre = tauspre;
00207 this->taupos = taupos;
00208 this->tauneg = tauneg;
00209 this->STDPgap = STDPgap;
00210 this->activeDASTDP = activeDASTDP;
00211 this->activeSTDP = 1;
00212 this->Wex = Wex;
00213 this->Aneg = Aneg;
00214 this->Apos = Apos;
00215 this->mupos = mupos;
00216 this->muneg = muneg;
00217 this->back_delay = back_delay;
00218 this->DAStdpRate = DAStdpRate;
00219 this->DATraceDelay = DATraceDelay;
00220 bool created = false;
00221 if (daTraceResponse == NULL) {
00222 created = true;
00223 daTraceResponse = new ExponentialDecaySpikeResponse( 1.0 );
00224 }
00225 this->da_trace_response = dynamic_cast<FiniteSpikeResponse *>(daTraceResponse->create());
00226 if (created)
00227 delete daTraceResponse;
00228 };
00229 };
00230
00231
00232
00233 class DAModStdpSquarePulseSynapse : public GenericDAModulatedSTDPSynapse<
00234 GenericFroemkeDanStdpSynapse<
00235 GenericEachPairStdpSynapse<
00236 GenericStaticSpikingSynapse<
00237 GenericCurrentBasedSpikingSynapse<
00238 SquarePulseSpikeResponse
00239 >
00240 >
00241 >
00242 >
00243 >
00244 {
00245 SIMOBJECT( DAModStdpSquarePulseSynapse, AdvancePhase::SpikeDriven )
00246 public:
00247
00248
00249 DAModStdpSquarePulseSynapse(
00250 const float Winit = 1e-9,
00251 const float A = 1,
00252 const float tau = 1e-3,
00253 const float delay = 1e-3,
00254 const bool useFroemkeDanSTDP = true,
00255 const float tauspost = 50e-3,
00256 const float tauspre = 50e-3,
00257 const float taupos = 50e-3,
00258 const float tauneg = 50e-3,
00259 const float STDPgap=2e-3,
00260 const bool activeDASTDP = true,
00261 const float Wex = 10e-9,
00262 const float Aneg = -0.2e-9,
00263 const float Apos = 0.2e-9,
00264 const float mupos = 0.0,
00265 const float muneg = 0.0,
00266 const float back_delay = 0.0,
00267 const float DAStdpRate = 1.0,
00268 const float DATraceDelay = 0.0,
00269 FiniteSpikeResponse const * daTraceResponse = NULL
00270 )
00271 {
00272 this->Winit = Winit;
00273 this->A = A;
00274 this->tau = tau;
00275 this->delay = delay;
00276 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00277 this->tauspost = tauspost;
00278 this->tauspre = tauspre;
00279 this->taupos = taupos;
00280 this->tauneg = tauneg;
00281 this->STDPgap = STDPgap;
00282 this->activeDASTDP = activeDASTDP;
00283 this->activeSTDP = 1;
00284 this->Wex = Wex;
00285 this->Aneg = Aneg;
00286 this->Apos = Apos;
00287 this->mupos = mupos;
00288 this->muneg = muneg;
00289 this->back_delay = back_delay;
00290 this->DAStdpRate = DAStdpRate;
00291 this->DATraceDelay = DATraceDelay;
00292 bool created = false;
00293 if (daTraceResponse == NULL) {
00294 created = true;
00295 daTraceResponse = new ExponentialDecaySpikeResponse( 1.0 );
00296 }
00297 this->da_trace_response = dynamic_cast<FiniteSpikeResponse *>(daTraceResponse->create());
00298 if (created)
00299 delete daTraceResponse;
00300 };
00301 };
00302
00303
00304 class DAModStdpStaticCondExpSynapse : public GenericDAModulatedSTDPSynapse<
00305 GenericFroemkeDanStdpSynapse<
00306 GenericEachPairStdpSynapse<
00307 GenericStaticSpikingSynapse<
00308 GenericConductanceBasedSpikingSynapse<
00309 ExponentialDecaySpikeResponse
00310 >
00311 >
00312 >
00313 >
00314 > {
00315 SIMOBJECT( DAModStdpStaticCondExpSynapse, AdvancePhase::SpikeDriven )
00316 public:
00317
00318 DAModStdpStaticCondExpSynapse(
00319 const float Winit = 1e-9,
00320 const float Erev=0e-3,
00321 const float tau = 3e-3,
00322 const float delay = 1e-3,
00323 const bool useFroemkeDanSTDP = true,
00324 const float tauspost = 50e-3,
00325 const float tauspre = 50e-3,
00326 const float taupos = 50e-3,
00327 const float tauneg = 50e-3,
00328 const float STDPgap=2e-3,
00329 const bool activeDASTDP = true,
00330 const float Wex = 10e-9,
00331 const float Aneg = -0.2e-9,
00332 const float Apos = 0.2e-9,
00333 const float mupos = 0.0,
00334 const float muneg = 0.0,
00335 const float back_delay = 0.0,
00336 const float DAStdpRate = 1.0,
00337 const float DATraceDelay = 0.0,
00338 FiniteSpikeResponse const * daTraceResponse = NULL
00339 )
00340 {
00341 this->Winit = Winit;
00342 this->Erev = Erev;
00343 this->tau = tau;
00344 this->delay = delay;
00345 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00346 this->tauspost = tauspost;
00347 this->tauspre = tauspre;
00348 this->taupos = taupos;
00349 this->tauneg = tauneg;
00350 this->STDPgap = STDPgap;
00351 this->activeDASTDP = activeDASTDP;
00352 this->activeSTDP = 1;
00353 this->Wex = Wex;
00354 this->Aneg = Aneg;
00355 this->Apos = Apos;
00356 this->mupos = mupos;
00357 this->muneg = muneg;
00358 this->back_delay = back_delay;
00359 this->DAStdpRate = DAStdpRate;
00360 this->DATraceDelay = DATraceDelay;
00361 bool created = false;
00362 if (daTraceResponse == NULL) {
00363 created = true;
00364 daTraceResponse = new ExponentialDecaySpikeResponse( 1.0 );
00365 }
00366 this->da_trace_response = dynamic_cast<FiniteSpikeResponse *>(daTraceResponse->create());
00367 if (created)
00368 delete daTraceResponse;
00369 };
00370 };
00371
00372
00373 class DAModStdpDynamicCondExpSynapse : public GenericDAModulatedSTDPSynapse<
00374 GenericFroemkeDanStdpSynapse<
00375 GenericEachPairStdpSynapse<
00376 GenericDynamicSpikingSynapse<
00377 GenericConductanceBasedSpikingSynapse<
00378 ExponentialDecaySpikeResponse
00379 >
00380 >
00381 >
00382 >
00383 > {
00384 SIMOBJECT( DAModStdpDynamicCondExpSynapse, AdvancePhase::SpikeDriven )
00385
00386 public:
00387 DAModStdpDynamicCondExpSynapse(
00388 const float Winit = 1e-9,
00389 const float Erev=0e-3,
00390 const float tau = 3e-3,
00391 const float delay = 1e-3,
00392 const float U = 0.2,
00393 const float D = 0.1,
00394 const float F = 0.4,
00395 const float u0 = 0.2,
00396 const float r0 = 1.0,
00397 const float f0 =-1.0,
00398 const bool useFroemkeDanSTDP = true,
00399 const float tauspost = 50e-3,
00400 const float tauspre = 50e-3,
00401 const float taupos = 50e-3,
00402 const float tauneg = 50e-3,
00403 const float STDPgap=2e-3,
00404 const bool activeDASTDP = true,
00405 const float Wex = 10e-9,
00406 const float Aneg = -0.2e-9,
00407 const float Apos = 0.2e-9,
00408 const float mupos = 0.0,
00409 const float muneg = 0.0,
00410 const float back_delay = 0.0,
00411 const float DAStdpRate = 1.0,
00412 const float DATraceDelay = 0.0,
00413 FiniteSpikeResponse const * daTraceResponse = NULL
00414 )
00415 {
00416 this->Winit = Winit;
00417 this->Erev = Erev;
00418 this->tau = tau;
00419 this->delay = delay;
00420 this->U = U;
00421 this->D = D;
00422 this->F = F;
00423 this->u0 = u0;
00424 this->r0 = r0;
00425 this->f0 = f0;
00426 this->useFroemkeDanSTDP = useFroemkeDanSTDP;
00427 this->tauspost = tauspost;
00428 this->tauspre = tauspre;
00429 this->taupos = taupos;
00430 this->tauneg = tauneg;
00431 this->STDPgap = STDPgap;
00432 this->activeDASTDP = activeDASTDP;
00433 this->activeSTDP = 1;
00434 this->Wex = Wex;
00435 this->Aneg = Aneg;
00436 this->Apos = Apos;
00437 this->mupos = mupos;
00438 this->muneg = muneg;
00439 this->back_delay = back_delay;
00440 this->DAStdpRate = DAStdpRate;
00441 this->DATraceDelay = DATraceDelay;
00442 bool created = false;
00443 if (daTraceResponse == NULL) {
00444 created = true;
00445 daTraceResponse = new ExponentialDecaySpikeResponse( 1.0 );
00446 }
00447 this->da_trace_response = dynamic_cast<FiniteSpikeResponse *>(daTraceResponse->create());
00448 if (created)
00449 delete daTraceResponse;
00450 };
00451 };
00452
00453
00454
00455
00456 #endif