00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef BASICNEURON_H
00023 #define BASICNEURON_H
00024
00025 #include <amygdala/neuron.h>
00026
00039 class BasicNeuron : public Neuron {
00040 public:
00041 BasicNeuron(AmIdInt neuronId);
00042 virtual ~BasicNeuron();
00043
00052 virtual float* InitializeLookupTable(int index);
00053
00062 virtual float* GetTableParams(int index, int& numParams);
00063
00065 virtual const char* ClassId() { return "BasicNeuron"; }
00066
00067 protected:
00068
00069
00082 virtual void InputSpike(SynapseItr& inSynapse,
00083 AmTimeInt inTime,
00084 unsigned int numSyn = 0);
00085
00092 virtual int SetLookupTables(FunctionLookup* funcRef);
00093
00099 virtual int FillLookupTables(int index);
00100
00109 virtual void SetMaxScaledWeight();
00110
00111 private:
00117 inline void PspKernel(float calcTime, float* pspElement);
00118
00122 inline void DPspKernel(float calcTime, float* dPspElement);
00123
00132 inline void CalcState(float& state, float& deriv,
00133 const AmTimeInt& calcTime,
00134 const AmTimeInt& historySize);
00135
00136
00137
00138
00139
00140
00141 float* pspLookup;
00142 float* dPspLookup;
00143
00144 friend class Network;
00145 };
00146
00147 #endif