Auryn simulator  v0.8.1-206-gb56e451
Plastic Spiking Neural Network Simulator
IzhikevichGroup.h
Go to the documentation of this file.
1 /*
2 * Copyright 2014-2018 Friedemann Zenke
3 *
4 * This file is part of Auryn, a simulation package for plastic
5 * spiking neural networks.
6 *
7 * Auryn is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * Auryn is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Auryn. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * If you are using Auryn or parts of it for your work please cite:
21 * Zenke, F. and Gerstner, W., 2014. Limits to high-speed simulations
22 * of spiking neural networks using general-purpose computers.
23 * Front Neuroinform 8, 76. doi: 10.3389/fninf.2014.00076
24 */
25 
26 #ifndef IZHIKEVICHGROUP_H_
27 #define IZHIKEVICHGROUP_H_
28 
29 #include "auryn_definitions.h"
30 #include "AurynVector.h"
31 #include "NeuronGroup.h"
32 #include "System.h"
33 
34 namespace auryn {
35 
53 {
54 private:
55  AurynStateVector * adaptation_vector;
56  AurynStateVector * temp_vector;
57  AurynStateVector * cur_exc, * cur_inh;
58 
59  AurynFloat e_rev_gaba,thr;
60  AurynFloat tau_ampa,tau_gaba;
61  AurynFloat scale_ampa, scale_gaba;
62 
63  void init();
64  void calculate_scale_constants();
65  inline void integrate_state();
66  inline void check_thresholds();
67  virtual string get_output_line(NeuronID i);
68  virtual void load_input_line(NeuronID i, const char * buf);
69 
70  void virtual_serialize(boost::archive::binary_oarchive & ar, const unsigned int version );
71  void virtual_serialize(boost::archive::binary_iarchive & ar, const unsigned int version );
72 public:
75  virtual ~IzhikevichGroup();
76 
85  void set_tau_ampa(AurynFloat tau);
86 
89 
91  void set_tau_gaba(AurynFloat tau);
92 
95 
97  void clear();
98 
102  void evolve();
103 };
104 
105 }
106 
107 #endif /*IZHIKEVICHGROUP_H_*/
108 
IzhikevichGroup(NeuronID size)
The default constructor of this NeuronGroup.
Definition: IzhikevichGroup.cpp:30
AurynFloat dvar
Definition: IzhikevichGroup.h:80
void evolve()
Integrates the NeuronGroup state.
Definition: IzhikevichGroup.cpp:91
void set_tau_ampa(AurynFloat tau)
Sets the exponential time constant for the AMPA channel (default 5ms)
Definition: IzhikevichGroup.cpp:153
This NeuronGroup implements the Izhikevich neuron model with conductance based AMPA and GABA synapses...
Definition: IzhikevichGroup.h:52
AurynFloat get_tau_gaba()
Gets the exponential time constant for the GABA channel.
Definition: IzhikevichGroup.cpp:170
virtual ~IzhikevichGroup()
Definition: IzhikevichGroup.cpp:67
void clear()
Resets all neurons to defined and identical initial state.
Definition: IzhikevichGroup.cpp:58
AurynFloat avar
Definition: IzhikevichGroup.h:77
Definition: ABSConnection.h:38
AurynFloat bvar
Definition: IzhikevichGroup.h:78
float AurynFloat
Low precision floating point datatype.
Definition: auryn_definitions.h:157
NeuronID size
Stores the size of the group.
Definition: SpikingGroup.h:119
AurynFloat cvar
Definition: IzhikevichGroup.h:79
Abstract base class for all neuron groups.
Definition: NeuronGroup.h:45
Default AurynVectorFloat class for performance computation.
Definition: AurynVector.h:796
AurynFloat get_tau_ampa()
Gets the exponential time constant for the AMPA channel.
Definition: IzhikevichGroup.cpp:159
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
void set_tau_gaba(AurynFloat tau)
Sets the exponential time constant for the GABA channel (default 10ms)
Definition: IzhikevichGroup.cpp:164