Auryn simulator  v0.8.1-206-gb56e451
Plastic Spiking Neural Network Simulator
AIFGroup.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 AIFGROUP_H_
27 #define AIFGROUP_H_
28 
29 #include "auryn_definitions.h"
30 #include "AurynVector.h"
31 #include "NeuronGroup.h"
32 #include "System.h"
33 
34 namespace auryn {
35 
37 class AIFGroup : public NeuronGroup
38 {
39 private:
40  void free();
41 
42 protected:
48 
52 
53 
57 
58  void init();
59  void vector_scale( float mul, auryn_vector_float * v );
61  void integrate_membrane();
62  void check_thresholds();
63 public:
65 
67  virtual ~AIFGroup();
68  void set_tau_mem(AurynFloat taum);
70  void set_tau_ampa(AurynFloat tau);
71  void set_tau_gaba(AurynFloat tau);
72  void set_tau_nmda(AurynFloat tau);
73  void set_tau_adapt(AurynFloat tau);
78  void random_adapt(AurynState mean, AurynState sigma);
79  void set_ampa_nmda_ratio(AurynFloat ratio);
81 
82 
83  void clear();
84  void evolve();
85 };
86 
87 }
88 
89 #endif /*AIFGROUP_H_*/
90 
AurynFloat get_tau_ampa()
Definition: AIFGroup.cpp:193
AurynFloat scale_thr
Definition: AIFGroup.h:49
AurynFloat tau_ampa
Definition: AIFGroup.h:55
void calculate_scale_constants()
Definition: AIFGroup.cpp:37
Tries to make a smart choice.
Definition: SpikingGroup.h:51
AurynFloat dg_adapt1
Definition: AIFGroup.h:64
AurynFloat get_tau_nmda()
Definition: AIFGroup.cpp:215
void check_thresholds()
Definition: AIFGroup.cpp:154
AurynFloat tau_mem
Definition: AIFGroup.h:54
void evolve()
Virtual pure evolve function which needs to be implemented by derived classes.
Definition: AIFGroup.cpp:172
AurynStateVector * t_exc
Definition: AIFGroup.h:45
void integrate_linear_nmda_synapses()
Definition: AIFGroup.cpp:110
void clear()
Definition: AIFGroup.cpp:72
AIFGroup(NeuronID size, NodeDistributionMode distmode=AUTO)
Definition: AIFGroup.cpp:31
AurynFloat scale_ampa
Definition: AIFGroup.h:49
void random_adapt(AurynState mean, AurynState sigma)
Definition: AIFGroup.cpp:85
virtual ~AIFGroup()
Definition: AIFGroup.cpp:105
void init()
Definition: AIFGroup.cpp:45
void set_tau_mem(AurynFloat taum)
Definition: AIFGroup.cpp:180
AurynFloat scale_gaba
Definition: AIFGroup.h:49
AurynFloat A_ampa
Definition: AIFGroup.h:56
AurynFloat tau_gaba
Definition: AIFGroup.h:55
AurynFloat tau_thr
Definition: AIFGroup.h:54
AurynStateVector * g_adapt1
Definition: AIFGroup.h:47
void set_ampa_nmda_ratio(AurynFloat ratio)
Definition: AIFGroup.cpp:232
Definition: ABSConnection.h:38
void vector_scale(float mul, auryn_vector_float *v)
AurynFloat AurynState
Type for Auryn state variables (default single precision since it needs to be compatible with auryn_v...
Definition: auryn_definitions.h:160
void integrate_membrane()
Integrate the internal state.
Definition: AIFGroup.cpp:139
AurynFloat e_rev
Definition: AIFGroup.h:54
AurynFloat get_tau_adapt()
Definition: AIFGroup.cpp:226
float AurynFloat
Low precision floating point datatype.
Definition: auryn_definitions.h:157
A simple extension of IFGroup with spike triggered adaptation.
Definition: AIFGroup.h:37
AurynFloat A_nmda
Definition: AIFGroup.h:56
AurynFloat tau_nmda
Definition: AIFGroup.h:55
AurynFloat e_rest
Definition: AIFGroup.h:54
AurynStateVector * t_inh
Definition: AIFGroup.h:46
void set_tau_adapt(AurynFloat tau)
Definition: AIFGroup.cpp:220
AurynFloat thr_rest
Definition: AIFGroup.h:54
void set_tau_gaba(AurynFloat tau)
Definition: AIFGroup.cpp:198
AurynFloat scale_adapt1
Definition: AIFGroup.h:50
void set_tau_nmda(AurynFloat tau)
Definition: AIFGroup.cpp:209
NeuronID size
Stores the size of the group.
Definition: SpikingGroup.h:119
AurynFloat tau_adapt1
Definition: AIFGroup.h:51
Abstract base class for all neuron groups.
Definition: NeuronGroup.h:45
AurynStateVector * dmem
Definition: AIFGroup.h:43
Default AurynVectorFloat class for performance computation.
Definition: AurynVector.h:796
AurynFloat get_tau_mem()
void set_tau_ampa(AurynFloat tau)
Definition: AIFGroup.cpp:187
unsigned int NeuronID
NeuronID is an unsigned integeger type used to index neurons in Auryn.
Definition: auryn_definitions.h:151
AurynFloat get_tau_gaba()
Definition: AIFGroup.cpp:204
AurynFloat dthr
Definition: AIFGroup.h:54
NodeDistributionMode
Specifies howto distribute different neurons across ranks when simulation is run in parallel...
Definition: SpikingGroup.h:50
AurynStateVector * t_leak
Definition: AIFGroup.h:44