MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
moose::AdExIF Class Reference

#include <AdExIF.h>

+ Inheritance diagram for moose::AdExIF:
+ Collaboration diagram for moose::AdExIF:

Public Member Functions

 AdExIF ()
 
double getA0 (const Eref &e) const
 
double getB0 (const Eref &e) const
 
double getTauW (const Eref &e) const
 
double getW (const Eref &e) const
 
void setA0 (const Eref &e, double val)
 
void setB0 (const Eref &e, double val)
 
void setTauW (const Eref &e, double val)
 
void setW (const Eref &e, double val)
 
void vProcess (const Eref &e, ProcPtr p)
 
void vReinit (const Eref &e, ProcPtr p)
 
virtual ~AdExIF ()
 
- Public Member Functions inherited from moose::ExIF
 ExIF ()
 
double getDeltaThresh (const Eref &e) const
 
double getVPeak (const Eref &e) const
 
void setDeltaThresh (const Eref &e, double val)
 
void setVPeak (const Eref &e, double val)
 
void vProcess (const Eref &e, ProcPtr p)
 
void vReinit (const Eref &e, ProcPtr p)
 
virtual ~ExIF ()
 
- Public Member Functions inherited from moose::IntFireBase
void activation (double val)
 
double getLastEventTime (const Eref &e) const
 
double getRefractoryPeriod (const Eref &e) const
 
double getThresh (const Eref &e) const
 
double getVReset (const Eref &e) const
 
bool hasFired (const Eref &e) const
 
 IntFireBase ()
 
void setRefractoryPeriod (const Eref &e, double val)
 
void setThresh (const Eref &e, double val)
 
void setVReset (const Eref &e, double val)
 
virtual ~IntFireBase ()
 
- Public Member Functions inherited from moose::Compartment
void cable ()
 
 Compartment ()
 
virtual double vGetCm (const Eref &e) const
 
virtual double vGetEm (const Eref &e) const
 
virtual double vGetIm (const Eref &e) const
 
virtual double vGetInitVm (const Eref &e) const
 
virtual double vGetInject (const Eref &e) const
 
virtual double vGetRa (const Eref &e) const
 
virtual double vGetRm (const Eref &e) const
 
virtual double vGetVm (const Eref &e) const
 
void vHandleAxial (double Vm)
 
void vHandleChannel (const Eref &e, double Gk, double Ek)
 
void vHandleRaxial (double Ra, double Vm)
 
void vInitProc (const Eref &e, ProcPtr p)
 
void vInitReinit (const Eref &e, ProcPtr p)
 
void vInjectMsg (const Eref &e, double current)
 
void vRandInject (const Eref &e, double prob, double current)
 
virtual void vSetCm (const Eref &e, double Cm)
 
virtual void vSetEm (const Eref &e, double Em)
 
virtual void vSetInitVm (const Eref &e, double initVm)
 
virtual void vSetInject (const Eref &e, double Inject)
 
virtual void vSetRa (const Eref &e, double Ra)
 
virtual void vSetRm (const Eref &e, double Rm)
 
virtual void vSetVm (const Eref &e, double Vm)
 
virtual ~Compartment ()
 
- Public Member Functions inherited from moose::CompartmentBase
void cable ()
 
 CompartmentBase ()
 
void displace (double dx, double dy, double dz)
 Displaces compartment by specified distance vector. More...
 
double getCm (const Eref &e) const
 
double getDiameter () const
 
double getEm (const Eref &e) const
 
double getIm (const Eref &e) const
 
double getInitVm (const Eref &e) const
 
double getInject (const Eref &e) const
 
double getLength () const
 
double getRa (const Eref &e) const
 
double getRm (const Eref &e) const
 
double getVm (const Eref &e) const
 
double getX () const
 
double getX0 () const
 
double getY () const
 
double getY0 () const
 
double getZ () const
 
double getZ0 () const
 
void handleAxial (double Vm)
 
void handleChannel (const Eref &e, double Gk, double Ek)
 
void handleRaxial (double Ra, double Vm)
 
void initProc (const Eref &e, ProcPtr p)
 
void initReinit (const Eref &e, ProcPtr p)
 
void injectMsg (const Eref &e, double current)
 
void process (const Eref &e, ProcPtr p)
 
void randInject (const Eref &e, double prob, double current)
 
bool rangeWarning (const string &field, double value)
 
void reinit (const Eref &e, ProcPtr p)
 
void setCm (const Eref &e, double Cm)
 
void setDiameter (double diameter)
 
void setEm (const Eref &e, double Em)
 
void setGeomAndElec (const Eref &e, double length, double dia)
 Scales electrical values along with setting length, dia. More...
 
void setInitVm (const Eref &e, double initVm)
 
void setInject (const Eref &e, double Inject)
 
void setLength (double length)
 
void setRa (const Eref &e, double Ra)
 
void setRm (const Eref &e, double Rm)
 
void setVm (const Eref &e, double Vm)
 
void setX (double value)
 
void setX0 (double value)
 
void setY (double value)
 
void setY0 (double value)
 
void setZ (double value)
 
void setZ0 (double value)
 
void updateLength ()
 
virtual void vSetSolver (const Eref &e, Id hsolve)
 
virtual ~CompartmentBase ()
 

Static Public Member Functions

static const CinfoinitCinfo ()
 
- Static Public Member Functions inherited from moose::ExIF
static const CinfoinitCinfo ()
 
- Static Public Member Functions inherited from moose::IntFireBase
static const CinfoinitCinfo ()
 
static SrcFinfo1< double > * spikeOut ()
 Message src for outgoing spikes. More...
 
- Static Public Member Functions inherited from moose::Compartment
static const CinfoinitCinfo ()
 
- Static Public Member Functions inherited from moose::CompartmentBase
static const CinfoinitCinfo ()
 
static SrcFinfo1< double > * VmOut ()
 
static void zombify (Element *orig, const Cinfo *zClass, Id hsolve)
 

Private Attributes

double a0_
 
double b0_
 
double tauW_
 
double w_
 

Additional Inherited Members

- Protected Attributes inherited from moose::ExIF
double deltaThresh_
 
double vPeak_
 
- Protected Attributes inherited from moose::IntFireBase
double activation_
 
bool fired_
 
double lastEvent_
 
double refractT_
 
double threshold_
 
double vReset_
 
- Protected Attributes inherited from moose::Compartment
double A_
 
double B_
 
double Cm_
 
double Em_
 
double Im_
 
double initVm_
 
double inject_
 
double lastIm_
 
double Ra_
 
double Rm_
 
double sumInject_
 
double Vm_
 

Detailed Description

The IntFire class sets up an integrate-and-fire compartment.

Definition at line 19 of file AdExIF.h.

Constructor & Destructor Documentation

AdExIF::AdExIF ( )

Definition at line 89 of file AdExIF.cpp.

References a0_, b0_, tauW_, and w_.

90 {w_ = 0.0;
91 tauW_ = 1.0;
92 a0_ = 0.0;
93 b0_ = 0.0;}
double b0_
Definition: AdExIF.h:54
double w_
Definition: AdExIF.h:51
double a0_
Definition: AdExIF.h:53
double tauW_
Definition: AdExIF.h:52
AdExIF::~AdExIF ( )
virtual

Definition at line 95 of file AdExIF.cpp.

96 {;}

Member Function Documentation

double AdExIF::getA0 ( const Eref e) const

Definition at line 170 of file AdExIF.cpp.

References a0_.

Referenced by initCinfo().

171 {
172  return a0_;
173 }
double a0_
Definition: AdExIF.h:53

+ Here is the caller graph for this function:

double AdExIF::getB0 ( const Eref e) const

Definition at line 180 of file AdExIF.cpp.

References b0_.

Referenced by initCinfo().

181 {
182  return b0_;
183 }
double b0_
Definition: AdExIF.h:54

+ Here is the caller graph for this function:

double AdExIF::getTauW ( const Eref e) const

Definition at line 160 of file AdExIF.cpp.

References tauW_.

Referenced by initCinfo().

161 {
162  return tauW_;
163 }
double tauW_
Definition: AdExIF.h:52

+ Here is the caller graph for this function:

double AdExIF::getW ( const Eref e) const

Definition at line 150 of file AdExIF.cpp.

References w_.

Referenced by initCinfo().

151 {
152  return w_;
153 }
double w_
Definition: AdExIF.h:51

+ Here is the caller graph for this function:

const Cinfo * AdExIF::initCinfo ( )
static

Initializes the class info.

Definition at line 20 of file AdExIF.cpp.

References AdExIFCinfo, getA0(), getB0(), getTauW(), getW(), moose::ExIF::initCinfo(), setA0(), setB0(), setTauW(), and setW().

21 {
22  static string doc[] =
23  {
24  "Name", "AdExIF",
25  "Author", "Aditya Gilra",
26  "Description", "Leaky Integrate-and-Fire neuron with Exponential spike rise"
27  " and adaptation via an adapting current w."
28  "Rm*Cm * dVm/dt = -(Vm-Em) + deltaThresh * exp((Vm-thresh)/deltaThresh) + Rm*I - w "
29  "tau_w * d w /dt = a0*(Vm-Em) - w "
30  "at each spike, w -> w + b0 "
31  };
32 
34  "w",
35  "adaptation current with time constant tauW",
36  &AdExIF::setW,
38  );
39 
41  "tauW",
42  "time constant of adaptation current w",
45  );
46 
48  "a0",
49  "factor for voltage-dependent term in evolution of adaptation current: "
50  "tau_w dw/dt = a0*(Vm-Em) - w",
53  );
54 
56  "b0",
57  "b0 is added to w, the adaptation current on each spike",
60  );
61 
62  static Finfo* AdExIFFinfos[] = {
63  &w, // Value
64  &tauW, // Value
65  &a0, // Value
66  &b0, // Value
67  };
68 
69  static Dinfo< AdExIF > dinfo;
70  static Cinfo AdExIFCinfo(
71  "AdExIF",
73  AdExIFFinfos,
74  sizeof( AdExIFFinfos ) / sizeof (Finfo*),
75  &dinfo,
76  doc,
77  sizeof(doc)/sizeof(string)
78  );
79 
80  return &AdExIFCinfo;
81 }
void setW(const Eref &e, double val)
Definition: AdExIF.cpp:145
double getA0(const Eref &e) const
Definition: AdExIF.cpp:170
double getB0(const Eref &e) const
Definition: AdExIF.cpp:180
Definition: Dinfo.h:60
double getW(const Eref &e) const
Definition: AdExIF.cpp:150
void setB0(const Eref &e, double val)
Definition: AdExIF.cpp:175
static const Cinfo * initCinfo()
Definition: ExIF.cpp:19
double getTauW(const Eref &e) const
Definition: AdExIF.cpp:160
void setA0(const Eref &e, double val)
Definition: AdExIF.cpp:165
static const Cinfo * AdExIFCinfo
Definition: AdExIF.cpp:83
void setTauW(const Eref &e, double val)
Definition: AdExIF.cpp:155
Definition: Cinfo.h:18
Definition: Finfo.h:12

+ Here is the call graph for this function:

void AdExIF::setA0 ( const Eref e,
double  val 
)

Definition at line 165 of file AdExIF.cpp.

References a0_.

Referenced by initCinfo().

166 {
167  a0_ = val;
168 }
double a0_
Definition: AdExIF.h:53

+ Here is the caller graph for this function:

void AdExIF::setB0 ( const Eref e,
double  val 
)

Definition at line 175 of file AdExIF.cpp.

References b0_.

Referenced by initCinfo().

176 {
177  b0_ = val;
178 }
double b0_
Definition: AdExIF.h:54

+ Here is the caller graph for this function:

void AdExIF::setTauW ( const Eref e,
double  val 
)

Definition at line 155 of file AdExIF.cpp.

References tauW_.

Referenced by initCinfo().

156 {
157  tauW_ = val;
158 }
double tauW_
Definition: AdExIF.h:52

+ Here is the caller graph for this function:

void AdExIF::setW ( const Eref e,
double  val 
)

Definition at line 145 of file AdExIF.cpp.

References w_.

Referenced by initCinfo().

146 {
147  w_ = val;
148 }
double w_
Definition: AdExIF.h:51

+ Here is the caller graph for this function:

void AdExIF::vProcess ( const Eref e,
ProcPtr  p 
)
virtual

The process function does the object updating and sends out messages to channels, nernsts, and so on.

Implements moose::IntFireBase.

Definition at line 102 of file AdExIF.cpp.

References a0_, moose::Compartment::A_, moose::IntFireBase::activation_, b0_, moose::Compartment::B_, moose::Compartment::Cm_, ProcInfo::currTime, moose::ExIF::deltaThresh_, ProcInfo::dt, moose::Compartment::Em_, moose::IntFireBase::fired_, moose::IntFireBase::lastEvent_, moose::IntFireBase::refractT_, moose::Compartment::Rm_, moose::IntFireBase::spikeOut(), moose::Compartment::sumInject_, tauW_, moose::IntFireBase::threshold_, moose::Compartment::Vm_, moose::CompartmentBase::VmOut(), moose::ExIF::vPeak_, moose::Compartment::vProcess(), moose::IntFireBase::vReset_, and w_.

103 {
104  fired_ = false;
105  if ( p->currTime < lastEvent_ + refractT_ ) {
106  Vm_ = vReset_;
107  A_ = 0.0;
108  B_ = 1.0 / Rm_;
109  sumInject_ = 0.0;
110  VmOut()->send( e, Vm_ );
111  } else {
112  // activation can be a continous variable (graded synapse).
113  // So integrate it at every time step, thus *dt.
114  // For a delta-fn synapse, SynHandler-s divide by dt and send activation.
115  // See: http://www.genesis-sim.org/GENESIS/Hyperdoc/Manual-26.html#synchan
116  // for this continuous definition of activation.
117  Vm_ += activation_ * p->dt;
118  activation_ = 0.0;
119  if ( Vm_ >= vPeak_ ) {
120  Vm_ = vReset_;
121  w_ += b0_;
122  lastEvent_ = p->currTime;
123  fired_ = true;
124  spikeOut()->send( e, p->currTime );
125  VmOut()->send( e, Vm_ );
126  } else {
127  Vm_ += ( deltaThresh_ * exp((Vm_-threshold_)/deltaThresh_) - Rm_*w_ )
128  *p->dt/Rm_/Cm_;
129  w_ += (-w_ + a0_*(Vm_-Em_)) * p->dt/tauW_;
130  Compartment::vProcess( e, p ); // this sends out Vm message also,
131  // so do calculations before
132  }
133  }
134 }
double vPeak_
Definition: ExIF.h:48
double b0_
Definition: AdExIF.h:54
double currTime
Definition: ProcInfo.h:19
void vProcess(const Eref &e, ProcPtr p)
double dt
Definition: ProcInfo.h:18
double w_
Definition: AdExIF.h:51
static SrcFinfo1< double > * spikeOut()
Message src for outgoing spikes.
Definition: IntFireBase.cpp:17
double a0_
Definition: AdExIF.h:53
double deltaThresh_
Definition: ExIF.h:47
static SrcFinfo1< double > * VmOut()
double tauW_
Definition: AdExIF.h:52

+ Here is the call graph for this function:

void AdExIF::vReinit ( const Eref e,
ProcPtr  p 
)
virtual

The reinit function reinitializes all fields.

Implements moose::IntFireBase.

Definition at line 136 of file AdExIF.cpp.

References moose::IntFireBase::activation_, moose::IntFireBase::fired_, moose::IntFireBase::lastEvent_, moose::IntFireBase::refractT_, moose::Compartment::vReinit(), and w_.

137 {
138  activation_ = 0.0;
139  w_ = 0.0;
140  fired_ = false;
141  lastEvent_ = -refractT_; // Allow it to fire right away.
142  Compartment::vReinit( e, p );
143 }
void vReinit(const Eref &e, ProcPtr p)
double w_
Definition: AdExIF.h:51

+ Here is the call graph for this function:

Member Data Documentation

double moose::AdExIF::a0_
private

Definition at line 53 of file AdExIF.h.

Referenced by AdExIF(), getA0(), setA0(), and vProcess().

double moose::AdExIF::b0_
private

Definition at line 54 of file AdExIF.h.

Referenced by AdExIF(), getB0(), setB0(), and vProcess().

double moose::AdExIF::tauW_
private

Definition at line 52 of file AdExIF.h.

Referenced by AdExIF(), getTauW(), setTauW(), and vProcess().

double moose::AdExIF::w_
private

Definition at line 51 of file AdExIF.h.

Referenced by AdExIF(), getW(), setW(), vProcess(), and vReinit().


The documentation for this class was generated from the following files: