Auryn simulator  v0.8.1-206-gb56e451
Plastic Spiking Neural Network Simulator
IafPscExpGroup.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 IAFPSCEXPGROUP_H_
27 #define IAFPSCEXPGROUP_H_
28 
29 #include "auryn_definitions.h"
30 #include "AurynVector.h"
31 #include "NeuronGroup.h"
32 #include "ExpCubaSynapse.h"
33 #include "System.h"
34 
35 namespace auryn {
36 
46 {
47 private:
48 
49  unsigned short refractory_time;
50 
51  AurynFloat tau_mem, r_mem, c_mem;
52  AurynFloat tau_syn;
53  AurynFloat scale_mem;
54 
55  AurynFloat * t_mem;
56  unsigned short * t_ref;
57 
58  void init();
59  void calculate_scale_constants();
60  inline void integrate_state();
61  inline void check_thresholds();
62  virtual string get_output_line(NeuronID i);
63  virtual void load_input_line(NeuronID i, const char * buf);
64 
65  void virtual_serialize(boost::archive::binary_oarchive & ar, const unsigned int version );
66  void virtual_serialize(boost::archive::binary_iarchive & ar, const unsigned int version );
67 public:
69 
72 
75 
77 
80 
83 
86 
88  virtual ~IafPscExpGroup();
89 
92 
94  void set_tau_mem(AurynFloat taum);
95 
97  void set_r_mem(AurynFloat rm);
98 
100  void set_c_mem(AurynFloat cm);
101 
103  void set_tau_syn(AurynFloat tau);
104 
106  void clear();
107 
111  void evolve();
112 };
113 
114 }
115 
116 #endif /*IAFPSCEXPGROUP_H_*/
117 
AurynStateVector * temp
Temp vector.
Definition: IafPscExpGroup.h:79
AurynVector< unsigned short > * ref
Vector holding neuronspecific state of refractory period.
Definition: IafPscExpGroup.h:82
Simple LIF neuron model with absolute refractoriness and current based synapses.
Definition: IafPscExpGroup.h:45
IafPscExpGroup(NeuronID size)
The default constructor of this NeuronGroup.
Definition: IafPscExpGroup.cpp:30
AurynFloat thr
Definition: IafPscExpGroup.h:68
virtual ~IafPscExpGroup()
The default destructor.
Definition: IafPscExpGroup.cpp:83
double AurynDouble
Higher precision floating point datatype.
Definition: auryn_definitions.h:158
AurynStateVector * bg_current
Vector holding neuronspecific background currents.
Definition: IafPscExpGroup.h:71
AurynStateVector * syn_current
Vector holding neuronspecific synaptic currents.
Definition: IafPscExpGroup.h:74
void clear()
Resets all neurons to defined and identical initial state.
Definition: IafPscExpGroup.cpp:70
void set_refractory_period(AurynDouble t)
Setter for refractory time [s].
Definition: IafPscExpGroup.cpp:173
Definition: ABSConnection.h:38
void set_tau_syn(AurynFloat tau)
Sets the exponential time constant for current based synapses.
Definition: IafPscExpGroup.cpp:167
Implements an exponential current-based synapse model.
Definition: ExpCubaSynapse.h:45
void set_c_mem(AurynFloat cm)
Sets the membrane capacitance (default 200pF)
Definition: IafPscExpGroup.cpp:136
float AurynFloat
Low precision floating point datatype.
Definition: auryn_definitions.h:157
void evolve()
Integrates the NeuronGroup state.
Definition: IafPscExpGroup.cpp:92
NeuronID size
Stores the size of the group.
Definition: SpikingGroup.h:119
Abstract base class for all neuron groups.
Definition: NeuronGroup.h:45
Default AurynVectorFloat class for performance computation.
Definition: AurynVector.h:796
void set_tau_mem(AurynFloat taum)
Sets the membrane time constant (default 20ms)
Definition: IafPscExpGroup.cpp:123
void set_r_mem(AurynFloat rm)
Sets the membrane resistance (default 100 M-ohm)
Definition: IafPscExpGroup.cpp:129
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
AurynFloat e_rest
Definition: IafPscExpGroup.h:68
ExpCubaSynapse * synapse_model
Definition: IafPscExpGroup.h:76