123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- //
- // C++ Implementation: layerfactory
- //
- // Description:
- //
- //
- // Author: Frank Michler,,, <frank@pc13365>, (C) 2010
- //
- // Copyright: See COPYING file that comes with this distribution
- //
- //
- #include "sys.hpp" // for libcwd
- #include "debug.hpp" // for libcwd
- #include "layer.hpp"
- #include "layer/iaf_psc_exp.h"
- #include "layerfactory.hpp"
- layer* createDecoLifLayer(int Size, NeuronPhysioType NPType);
-
- layer* createIzhikevich8Layer(int Size, NeuronPhysioType NPType);
- layer* createIzhikevich8Layer_Default(int Size);
- layer* createIzhikevich8Layer_Integrator(int Size);
-
- layer* createIzhikevich9Layer(int Size, NeuronPhysioType NPType);
- layer* createIzhikevich9Layer_Default(int Size);
- layer* createIzhikevich9Layer_Integrator(int Size);
- layer* createLayer_iaf_psc_exp(int size);
- layer* createLayer(int Size, NeuronModelType MType, NeuronPhysioType NPType)
- {
- layer* RetLayer=NULL;
- switch (MType) {
- case NMType_DecoLif:
- RetLayer = createDecoLifLayer(Size, NPType );
- break;
- case NMType_Izhikevich8:
- RetLayer = createIzhikevich8Layer(Size, NPType);
- break;
- case NMType_iaf_psc_exp:
- RetLayer = createLayer_iaf_psc_exp(Size);
- break;
- default:
- RetLayer=NULL;
- break;
- }
- return RetLayer;
- }
- layer* createDecoLifLayer(int Size, NeuronPhysioType NPType)
- {
- layer* RetLayer=NULL;
- switch (NPType) {
- case NPType_Excitatory:
- {
- float NmdaAmpaRatio=0.3;
- DecoLifLayer* tmplayer = new DecoLifLayer(Size, DecoParaExcitatory);
- const float DECO_LIF_NOISE_3_HZ = 0.05294; // Noise: 3 Hz Background Firing Rate
- tmplayer->SetNoiseAmplitude(DECO_LIF_NOISE_3_HZ);
- tmplayer->SetNmdaAmpaRatio(NmdaAmpaRatio);
- RetLayer = tmplayer;
- }
- break;
- default: RetLayer=NULL;
- }
- return RetLayer;
- }
- layer* createIzhikevich8Layer(int Size, NeuronPhysioType NPType)
- {
- layer* RetLayer=NULL;
- switch (NPType) {
- case NPType_Integrator:
- RetLayer = createIzhikevich8Layer_Integrator(Size);
- break;
- case NPType_Excitatory:
- default:
- RetLayer = createIzhikevich8Layer_Default(Size);
- break;
- }
- return RetLayer;
- }
- layer* createIzhikevich8Layer_Default(int Size)
- {
- const float NmdaAmpaRatio=0.3;
- izh8layer* tmplayer = new izh8layer(Size, IzhParaRegularSpiking);
- tmplayer->SetTauGaba(13.5, 100);
- tmplayer->SetTauAmpa(0.5, 2.4);
- tmplayer->SetTauNmda(10, 100);
- tmplayer->SetNoiseAmplitude(0.259545);
- tmplayer->SetBalancedInhibition(1.58025);
- tmplayer->SetNmdaAmpaRatio(NmdaAmpaRatio);
- return tmplayer;
- }
- layer* createIzhikevich8Layer_Integrator(int Size)
- {
- const float NmdaAmpaRatio=0.3;
- izh8layer* tmplayer = new izh8layer(Size, IzhParaIntegrator2);
- tmplayer->SetTauGaba(13.5, 100);
- tmplayer->SetTauAmpa(0.5, 2.4);
- tmplayer->SetTauNmda(10, 100);
- tmplayer->SetNoiseAmplitude(0.172989);
- tmplayer->SetBalancedInhibition(1.48085);
- tmplayer->SetNmdaAmpaRatio(NmdaAmpaRatio);
- return tmplayer;
- }
- layer* createIzhikevich9Layer(int Size, NeuronPhysioType NPType)
- {
- layer* RetLayer=NULL;
- switch (NPType) {
- case NPType_Integrator:
- RetLayer = createIzhikevich9Layer_Integrator(Size);
- break;
- case NPType_Excitatory:
- default:
- RetLayer = createIzhikevich9Layer_Default(Size);
- break;
- }
- return RetLayer;
- }
- /** never used
- */
- layer* createIzhikevich9Layer_Default(int Size)
- {
- const float NmdaAmpaRatio=0.3;
- izh9layer* tmplayer = new izh9layer(Size, IzhParaRegularSpiking);
- tmplayer->SetTauAmpa(0.5, 2.4);
- tmplayer->SetTauNmda(10, 100);
- tmplayer->SetNoiseAmplitude(0.259545);
- tmplayer->SetBalancedInhibition(1.58025);
- tmplayer->SetNmdaAmpaRatio(NmdaAmpaRatio);
- return tmplayer;
- }
- layer* createIzhikevich9Layer_Integrator(int Size)
- {
- float NmdaAmpaRatio=0.3;
- izh9layer* tmplayer = new izh9layer(Size, IzhParaIntegrator2);
- tmplayer->SetTauAmpa(0.5, 2.4);
- tmplayer->SetTauNmda(10, 100);
- tmplayer->SetNoiseAmplitude(0.172989);
- tmplayer->SetBalancedInhibition(2.07651);
- tmplayer->SetNmdaAmpaRatio(NmdaAmpaRatio);
- return tmplayer;
- }
- layer* createLayer_iaf_psc_exp(int size)
- {
- iaf_psc_exp* tmplayer = new iaf_psc_exp(size);
- double Tau = 20.;
- double C = 1.0;
- double t_ref = 2.0;
- double U0 = 0;
- double I_e = 0.;
- double Theta = 20; // V_th
- double V_reset = 10;
- double tau_ex = 2.0;
- double tau_in = 2.0;
- tmplayer->P_.set(Tau, C, t_ref, U0, I_e, Theta, V_reset, tau_ex, tau_in);
- tmplayer->calibrate();
- return tmplayer;
- }
|