CompositeLifNeuron.h

Go to the documentation of this file.
00001 #ifndef COMPOSITELIFNEURON_H_
00002 #define COMPOSITELIFNEURON_H_
00003 
00004 #include "LifNeuron.h"
00005 #include "CompositeNeuron.h"
00006 #include "StaticSpikingSynapse.h"
00007 
00008 class LIFCurrAlphaNeuron : public CompositeNeuron< LifNeuron > 
00009 {
00010         SIMOBJECT( LIFCurrAlphaNeuron, AdvancePhase::One )
00011 public:
00012         LIFCurrAlphaNeuron( float taum     = 3e-2,
00013                             float Cm       = 3e-8,
00014                         float Vresting =-0.06,
00015                         float Vthresh  =-0.045,
00016                         float Vreset   =-0.06,
00017                         float Vinit    =-0.06,
00018                         float Trefract = 3e-3,
00019                         float Inoise   = 0.0,
00020                         float Iinject  = 0.0, 
00021                         float TauSynExc= 3e-3,
00022                                                 float TauSynInh= 3e-3) :
00023                   CompositeNeuron< LifNeuron >(StaticCurrAlphaSynapse(1.0, TauSynExc),
00024                                                StaticCurrAlphaSynapse(1.0, TauSynInh)) 
00025    {
00026                 this->Rm = taum/Cm;
00027                 this->taum = taum;
00028                 this->Cm = Cm;
00029                 this->Vresting = Vresting;
00030                 this->Vthresh = Vthresh;
00031                 this->Vreset = Vreset;
00032                 this->Vinit = Vinit;
00033                 this->Trefract = Trefract;
00034                 this->Inoise = Inoise;
00035                 this->Iinject = Iinject;        
00036                 this->TauSynExc = TauSynExc;
00037                 this->TauSynInh = TauSynInh;                                                    
00038    }
00039    
00040    virtual int reset(double dt)
00041    {
00042                 this->Rm = taum/Cm;
00043                 dynamic_cast<StaticCurrAlphaSynapse*>(getInnerSynapse(0))->tau = TauSynExc;
00044                 dynamic_cast<StaticCurrAlphaSynapse*>(getInnerSynapse(1))->tau = TauSynInh;
00045                 return CompositeNeuron< LifNeuron >::reset(dt);
00046    }
00047    
00049    float taum;
00050    
00052    float TauSynExc;
00053    float TauSynInh;
00054 };
00055 
00056 class LIFCurrExpNeuron : public CompositeNeuron< LifNeuron > 
00057 {
00058         SIMOBJECT( LIFCurrExpNeuron, AdvancePhase::One )
00059 public:
00060  
00061 
00062         LIFCurrExpNeuron( float taum      = 3e-2,
00063                           float Cm        = 3e-8,
00064                       float Vresting  =-0.06,
00065                       float Vthresh   =-0.045,
00066                       float Vreset    =-0.06,
00067                       float Vinit     =-0.06,
00068                       float Trefract  = 3e-3,
00069                       float Inoise    = 0.0,
00070                       float Iinject   = 0.0, 
00071                       float TauSynExc = 3e-3,
00072                       float TauSynInh = 3e-3 ) :
00073                   CompositeNeuron< LifNeuron >(StaticCurrExpSynapse(1.0, TauSynExc),
00074                                                StaticCurrExpSynapse(1.0, TauSynInh) ) 
00075    {
00076                 this->Rm = taum/Cm;
00077                 this->taum = taum;
00078                 this->Cm = Cm;
00079                 this->Vresting = Vresting;
00080                 this->Vthresh = Vthresh;
00081                 this->Vreset = Vreset;
00082                 this->Vinit = Vinit;
00083                 this->Trefract = Trefract;
00084                 this->Inoise = Inoise;
00085                 this->Iinject = Iinject;
00086                 this->TauSynExc = TauSynExc;
00087                 this->TauSynInh = TauSynInh;                                                                            
00088    }
00089    
00090    virtual int reset(double dt)
00091    {
00092                 this->Rm = taum/Cm;
00093                 dynamic_cast<StaticCurrExpSynapse*>(getInnerSynapse(0))->tau = TauSynExc;
00094                 dynamic_cast<StaticCurrExpSynapse*>(getInnerSynapse(1))->tau = TauSynInh;
00095                 return CompositeNeuron< LifNeuron >::reset(dt);
00096    }
00097    
00099    float taum;
00100    
00102    float TauSynExc;
00103    
00105    float TauSynInh;
00106 };
00107 
00108 
00109 class LIFCondAlphaNeuron : public CompositeNeuron< CbLifNeuron > 
00110 {
00111         SIMOBJECT( LIFCondAlphaNeuron, AdvancePhase::One )
00112 public:
00113         LIFCondAlphaNeuron( float taum     = 3e-2,
00114                             float Cm       = 3e-8,
00115                         float Vresting =-0.06,
00116                         float Vthresh  =-0.045,
00117                         float Vreset   =-0.06,
00118                         float Vinit    =-0.06,
00119                         float Trefract = 3e-3,
00120                         float Inoise   = 0.0,
00121                         float Iinject  = 0.0,
00122                         float ErevExc     = 0.0,
00123                         float ErevInh     = -80e-3,
00124                         float TauSynExc   = 3e-3,
00125                         float TauSynInh   = 3e-3) :
00126                   CompositeNeuron< CbLifNeuron >(StaticCondAlphaSynapse(1.0, ErevExc, TauSynExc),
00127                                                StaticCondAlphaSynapse(1.0, ErevInh, TauSynInh) ) 
00128    {
00129                 this->Rm = taum/Cm;
00130                 this->taum = taum;
00131                 this->Cm = Cm;
00132                 this->Vresting = Vresting;
00133                 this->Vthresh = Vthresh;
00134                 this->Vreset = Vreset;
00135                 this->Vinit = Vinit;
00136                 this->Trefract = Trefract;
00137                 this->Inoise = Inoise;
00138                 this->Iinject = Iinject;        
00139                 this->TauSynExc = TauSynExc;
00140                 this->TauSynInh = TauSynInh;
00141                 this->ErevExc = ErevExc;
00142                 this->ErevInh = ErevInh;
00143    }
00144    
00145    virtual int reset(double dt)
00146    {
00147                 this->Rm = taum/Cm;
00148                 dynamic_cast<StaticCondAlphaSynapse*>(getInnerSynapse(0))->tau = TauSynExc;
00149                 dynamic_cast<StaticCondAlphaSynapse*>(getInnerSynapse(1))->tau = TauSynInh;
00150                 dynamic_cast<StaticCondAlphaSynapse*>(getInnerSynapse(0))->Erev = ErevExc;
00151                 dynamic_cast<StaticCondAlphaSynapse*>(getInnerSynapse(1))->Erev = ErevInh;
00152                 return CompositeNeuron< CbLifNeuron >::reset(dt);
00153    }
00154    
00156    float taum;
00157    
00159    float TauSynExc;
00161    float TauSynInh;
00162    
00164    float ErevExc;
00165    
00167    float ErevInh;
00168 };
00169 
00170 
00171 class LIFCondExpNeuron : public CompositeNeuron< CbLifNeuron > 
00172 {
00173         SIMOBJECT( LIFCondExpNeuron, AdvancePhase::One )
00174 public:
00175         LIFCondExpNeuron( float taum       = 3e-2,
00176                             float Cm       = 3e-8,
00177                         float Vresting =-0.06,
00178                         float Vthresh  =-0.045,
00179                         float Vreset   =-0.06,
00180                         float Vinit    =-0.06,
00181                         float Trefract = 3e-3,
00182                         float Inoise   = 0.0,
00183                         float Iinject  = 0.0,
00184                         float ErevExc     = 0.0,
00185                         float ErevInh     = -80e-3,
00186                         float TauSynExc   = 3e-3,
00187                         float TauSynInh   = 3e-3) :
00188                   CompositeNeuron< CbLifNeuron >(StaticCondExpSynapse(1.0, ErevExc, TauSynExc),
00189                                                StaticCondExpSynapse(1.0, ErevInh, TauSynInh) ) 
00190    {
00191                 this->Rm = taum/Cm;
00192                 this->taum = taum;
00193                 this->Cm = Cm;
00194                 this->Vresting = Vresting;
00195                 this->Vthresh = Vthresh;
00196                 this->Vreset = Vreset;
00197                 this->Vinit = Vinit;
00198                 this->Trefract = Trefract;
00199                 this->Inoise = Inoise;
00200                 this->Iinject = Iinject;        
00201                 this->TauSynExc = TauSynExc;
00202                 this->TauSynInh = TauSynInh;
00203                 this->ErevExc = ErevExc;
00204                 this->ErevInh = ErevInh;
00205    }
00206    
00207    virtual int reset(double dt)
00208    {
00209                 this->Rm = taum/Cm;
00210                 dynamic_cast<StaticCondExpSynapse*>(getInnerSynapse(0))->tau = TauSynExc;
00211                 dynamic_cast<StaticCondExpSynapse*>(getInnerSynapse(1))->tau = TauSynInh;
00212                 dynamic_cast<StaticCondExpSynapse*>(getInnerSynapse(0))->Erev = ErevExc;
00213                 dynamic_cast<StaticCondExpSynapse*>(getInnerSynapse(1))->Erev = ErevInh;
00214                 return CompositeNeuron< CbLifNeuron >::reset(dt);
00215    }
00216    
00218    float taum;
00219    
00221    float TauSynExc;
00222    
00224    float TauSynInh;
00225    
00227    float ErevExc;
00228    
00230    float ErevInh;
00231 };
00232 
00233 
00234 
00235 
00236 #endif /*COMPOSITELIFNEURON_H_*/

Generated on Wed Jul 9 16:34:38 2008 for PCSIM by  doxygen 1.5.5