AnimatLab  2
Test
CsNeuronGroup.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 namespace AnimatCarlSim
10 {
11 
28  class ANIMAT_CARL_SIM_PORT CsNeuronGroup : public AnimatSim::Node, public SpikeMonitor
29  {
30  protected:
33 
35  unsigned int m_uiNeuronCount;
36 
37  //The type of these neurons. Either EXCITATORY_NEURON or INHIBITORY_NEURON
38  int m_iNeuralType;
39 
42 
44  float m_fltA;
45 
47  float m_fltStdA;
48 
50  float m_fltB;
51 
53  float m_fltStdB;
54 
56  float m_fltC;
57 
59  float m_fltStdC;
60 
62  float m_fltD;
63 
65  float m_fltStdD;
66 
70 
72  float m_fltTauAMPA;
73 
75  float m_fltTauNMDA;
76 
79 
82 
85 
87  float m_fltU;
88 
91 
94 
97 
99  float m_fltMaxLTP;
100 
102  float m_fltTauLTP;
103 
105  float m_fltMaxLTD;
106 
108  float m_fltTauLTD;
109 
110 
113 
116 
121 
124 
126  CStdMap<int, int> m_aryCollectSpikeData;
127 
129  std::multimap<int, unsigned long> m_arySpikeTimes;
130 
132  unsigned long m_lLastUpdateTime;
133 
134  unsigned long m_lTotalSpikesCollected;
135 
136 #ifndef STD_DO_NOT_ADD_BOOST
137  boost::interprocess::interprocess_mutex m_AccessRecentSpikes;
139 #endif
140 
141 
142  public:
143  CsNeuronGroup();
144  virtual ~CsNeuronGroup();
145 
146  virtual void SetCARLSimulation();
147 
148  CsNeuralModule *GetCsModule() {return m_lpCsModule;};
149 
150  virtual void NeuronCount(unsigned int iVal);
151  virtual unsigned int NeuronCount();
152 
153  virtual void NeuralType(std::string strType);
154  virtual void NeuralType(int iVal);
155  virtual int NeuralType();
156 
157  virtual void GroupID(int iVal);
158  virtual int GroupID();
159 
160  virtual void A(float fltVal);
161  virtual float A();
162 
163  virtual void StdA(float fltVal);
164  virtual float StdA();
165 
166  virtual void B(float fltVal);
167  virtual float B();
168 
169  virtual void StdB(float fltVal);
170  virtual float StdB();
171 
172  virtual void C(float fltVal);
173  virtual float C();
174 
175  virtual void StdC(float fltVal);
176  virtual float StdC();
177 
178  virtual void D(float fltVal);
179  virtual float D();
180 
181  virtual void StdD(float fltVal);
182  virtual float StdD();
183 
184  virtual void EnableCOBA(bool bVal);
185  virtual bool EnableCOBA();
186 
187  virtual void TauAMPA(float fltVal);
188  virtual float TauAMPA();
189 
190  virtual void TauNMDA(float fltVal);
191  virtual float TauNMDA();
192 
193  virtual void TauGABAa(float fltVal);
194  virtual float TauGABAa();
195 
196  virtual void TauGABAb(float fltVal);
197  virtual float TauGABAb();
198 
199  virtual void EnableSTP(bool bVal);
200  virtual bool EnableSTP();
201 
202  virtual void U(float fltVal);
203  virtual float U();
204 
205  virtual void TauDepression(float fltVal);
206  virtual float TauDepression();
207 
208  virtual void TauFacilitation(float fltVal);
209  virtual float TauFacilitation();
210 
211  virtual void EnableSTDP(bool bVal);
212  virtual bool EnableSTDP();
213 
214  virtual void MaxLTP(float fltVal);
215  virtual float MaxLTP();
216 
217  virtual void TauLTP(float fltVal);
218  virtual float TauLTP();
219 
220  virtual void MaxLTD(float fltVal);
221  virtual float MaxLTD();
222 
223  virtual void TauLTD(float fltVal);
224  virtual float TauLTD();
225 
226  virtual void CollectFromWholePopulation(bool bVal);
227  virtual bool CollectFromWholePopulation();
228 
229  virtual std::multimap<int, unsigned long> *SpikeTimes();
230 
231 #ifndef STD_DO_NOT_ADD_BOOST
232  boost::interprocess::interprocess_mutex *AccessRecentSpikes() {return &m_AccessRecentSpikes;};
234 
235  boost::signals2::signal<void (int, int, long)> MonitoredSpikeEvent;
236 #endif
237 
238  virtual void IncrementCollectSpikeDataForNeuron(int iIdx);
239  virtual void DecrementCollectSpikeDataForNeuron(int iIdx);
240  virtual bool CollectingSpikeDataForNeuron(int iIdx);
241 
242  virtual void update(CpuSNN* s, int grpId, unsigned int* NeuronIds, unsigned int *timeCounts, unsigned int total_spikes, float firing_Rate);
243 
244  virtual void AddExternalNodeInput(int iTargetDataType, float fltInput);
245  virtual void Copy(CStdSerialize *lpSource);
246 
247  virtual void SetSystemPointers(Simulator *lpSim, Structure *lpStructure, NeuralModule *lpModule, Node *lpNode, bool bVerify);
248  virtual void VerifySystemPointers();
249  virtual void Initialize();
250  virtual void StepSimulation();
251  virtual void ResetSimulation();
252 
253 #pragma region DataAccesMethods
254  virtual bool SetData(const std::string &strDataType, const std::string &strValue, bool bThrowError = true);
255  virtual void QueryProperties(CStdPtrArray<TypeProperty> &aryProperties);
256  virtual float *GetDataPointer(const std::string &strDataType);
257 #pragma endregion
258 
259  virtual void Load(CStdXml &oXml);
260  };
261 
262 } //AnimatCarlSim
float m_fltMaxLTD
the max magnitude for LTD change for STDP
Contains the classes for a firing rate neural model.
Definition: CsAdapter.cpp:14
bool m_bEnableSTDP
Tells whether this group of neurons exhibits spike-timing dependent plasticity.
Definition: CsNeuronGroup.h:96
std::multimap< int, unsigned long > m_arySpikeTimes
A map for keeping track of a spike times in ms for individual neurons in this group throughout the cu...
unsigned int m_uiNeuronCount
The number of neurons in this group.
Definition: CsNeuronGroup.h:35
float m_fltStdC
The standard deviation for Izhikevich parameter C.
Definition: CsNeuronGroup.h:59
float m_fltTauNMDA
Time constant of NMDA decay (ms); for example, 150.0.
Definition: CsNeuronGroup.h:75
float m_fltTauFacilitation
the time constant for facilitation term for STP
Definition: CsNeuronGroup.h:93
float m_fltMaxLTP
the max magnitude for LTP change for STDP
Definition: CsNeuronGroup.h:99
int m_iGroupID
The group ID of this set of neurons.
Definition: CsNeuronGroup.h:41
float m_fltTauGABAa
Time constant of GABAa decay (ms); for example, 6.0.
Definition: CsNeuronGroup.h:78
float m_fltTauLTD
the decay time constant for LTD change for STDP
float m_fltGroupTotalSpikes
The total number of spikes generated by this group of neurons in the last time slice.
Firing rate neural module.
float m_fltC
The Izhikevich C parameter.
Definition: CsNeuronGroup.h:56
float m_fltB
The Izhikevich B parameter.
Definition: CsNeuronGroup.h:50
CsNeuralModule * m_lpCsModule
Pointer to parent CsNeuralModule.
Definition: CsNeuronGroup.h:32
float m_fltStdB
The standard deviation for Izhikevich parameter B.
Definition: CsNeuronGroup.h:53
Firing Rate Neuron model.
Definition: CsNeuronGroup.h:28
float m_fltStdD
The standard deviation for Izhikevich parameter D.
Definition: CsNeuronGroup.h:65
float m_fltD
The Izhikevich D parameter.
Definition: CsNeuronGroup.h:62
float m_fltTauGABAb
Time constant of GABAb decay (ms); for example, 150.0.
Definition: CsNeuronGroup.h:81
CStdMap< int, int > m_aryCollectSpikeData
An array of neuron indices for individual neurons we want to collect spike data for throughout the cu...
float m_fltTauLTP
the decay time constant for LTP change for STDP
Base class for body parts and neural network nodes.
Definition: Node.h:25
unsigned long m_lLastUpdateTime
The last time step for which the monitor method ran.
float m_fltA
The Izhikevich A parameter.
Definition: CsNeuronGroup.h:44
float m_fltU
the increment of u due to a spike for STP
Definition: CsNeuronGroup.h:87
can be used to create a custom spike monitor
Definition: snn.h:265
bool m_bEnableSTP
Tells whether this group of neurons exhibits Short term plasticity.
Definition: CsNeuronGroup.h:84
float m_fltTauDepression
the time constant for depression term for STP
Definition: CsNeuronGroup.h:90
float m_fltStdA
The standard deviation for Izhikevich parameter A.
Definition: CsNeuronGroup.h:47
float m_fltTauAMPA
Time constant of AMPA decay (ms); for example, 5.0.
Definition: CsNeuronGroup.h:72
int m_iCollectWholePopulation
If > 0 it collects data from the whole population. This is an iterator keeping track of how many thin...
Contains all of CARLsim's core functionality.
Definition: snn.h:619
float m_fltGroupFiringRate
The firing rate of this entire group of neurons.