/*--------------------------------------------------------------------------
Author: Thomas Nowotny
Institute: Institute for Nonlinear Dynamics
University of California San Diego
La Jolla, CA 92093-0402
email to: tnowotny@ucsd.edu
initial version: 2005-08-17
--------------------------------------------------------------------------*/
#ifndef CN_ABSYNAPSE_SMSTDP1_CC
#define CN_ABSYNAPSE_SMSTDP1_CC
#include "CN_absynapse_smSTDP.cc"
// This is the constructor to be used directly ...
absynapse_smSTDP1::absynapse_smSTDP1(neuron *insource, neuron *intarget,
double inEsyn, double inEpre,
double inasyn,
double inbsyn, double inVslope,
double indecay, double ingmax,
double ing0, double ingdecay,
double inAp, double inAm,
double intaup, double intaum
):
absynapse_smSTDP(insource, intarget, SMSTDPIVARNO, SMSTDP1PNO, SMSTDP1)
{
p[0]= inEsyn; // Esyn reversal potential in mV
p[1]= inEpre; // Epre presyn threshold potential in mV
p[2]= inasyn; // alpha timescale in 1/msec
p[3]= inbsyn; // beta timescale in 1/msec
p[4]= inVslope; // steepness of activation curve as func of Vpre
p[5]= indecay;
p[6]= ingmax;
p[7]= ing0;
p[8]= ingdecay;
p[9]= inAp;
p[10]= inAm;
p[11]= intaup;
p[12]= intaum;
}
absynapse_smSTDP1::absynapse_smSTDP1(neuron *insource, neuron *intarget, double *inp):
absynapse_smSTDP(insource, intarget, SMSTDPIVARNO, SMSTDP1PNO, SMSTDP1)
{
set_p(inp);
}
absynapse_smSTDP1::~absynapse_smSTDP1()
{
}
// simple fit to Bi and Poo
double absynapse_smSTDP1::stdp_fn(double dt)
{
if (dt > 0.0) {
return p[9]*dt*exp(-dt/p[11]);
}
else {
return p[10]*dt*exp(dt/p[12]);
}
}
#endif
|