NEST main@caf0ae8
 
Loading...
Searching...
No Matches
sigmoid_rate_gg_1998.h
Go to the documentation of this file.
1/*
2 * sigmoid_rate_gg_1998.h
3 *
4 * This file is part of NEST.
5 *
6 * Copyright (C) 2004 The NEST Initiative
7 *
8 * NEST is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * NEST is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with NEST. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23#ifndef SIGMOID_RATE_GG_1998_H
24#define SIGMOID_RATE_GG_1998_H
25
26// C++ includes:
27#include <cmath>
28
29// Includes from models:
30#include "rate_neuron_ipn.h"
34
35namespace nest
36{
37
38/* BeginUserDocs: neuron, rate
39
40Short description
41+++++++++++++++++
42
43rate model with sigmoidal gain function
44
45Description
46+++++++++++
47
48``sigmoid_rate_gg_1998`` is an implementation of a nonlinear rate model with
49input function as in :footcite:p:`Gancarz1998` :math:`input(h) = ( g \cdot h )^4 / ( .1^4 +( g \cdot h )^4 )`.
50
51It either models a rate neuron with input noise (see ``rate_neuron_ipn``)
52or a rate transformer (see ``rate_transformer_node``).
53Input transformation can either be applied to individual inputs
54or to the sum of all inputs.
55
56The model supports connections to other rate models with either zero or
57non-zero delay, and uses the secondary_event concept introduced with
58the gap-junction framework.
59
60Nonlinear rate neurons can be created by typing
61``nest.Create('sigmoid_rate_gg_1998_ipn')``. Nonlinear rate transformers can be
62created by typing ``nest.Create('rate_transformer_sigmoid_rate_gg_1998')``.
63
64See also :footcite:p:`Hahne2017`, :footcite:p:`Hahne2015`.
65
66Parameters
67++++++++++
68
69The following parameters can be set in the status dictionary. Note
70that some of the parameters only apply to rate neurons and not to rate
71transformers.
72
73================== ======= ==============================================
74 rate real Rate (unitless)
75 tau ms Time constant of rate dynamics
76 mu real Mean input
77 sigma real Noise parameter
78 g real Gain parameter
79 rectify_rate real Rectifying rate
80 linear_summation boolean Specifies type of non-linearity (see above)
81 rectify_output boolean Switch to restrict rate to values >= rectify_rate
82================== ======= ==============================================
83
84
85Note:
86
87The boolean parameter linear_summation determines whether the
88input from different presynaptic neurons is first summed linearly and
89then transformed by a nonlinearity (true), or if the input from
90individual presynaptic neurons is first nonlinearly transformed and
91then summed up (false). Default is true.
92
93References
94++++++++++
95
96.. footbibliography::
97
98Sends
99+++++
100
101InstantaneousRateConnectionEvent, DelayedRateConnectionEvent
102
103Receives
104++++++++
105
106InstantaneousRateConnectionEvent, DelayedRateConnectionEvent,
107DataLoggingRequest
108
109See also
110++++++++
111
112rate_connection_instantaneous, rate_connection_delayed
113
114
115Examples using this model
116+++++++++++++++++++++++++
117
118.. listexamples:: sigmoid_rate_gg_1998
119
120EndUserDocs */
121
123{
124private:
126 double g_;
127
128public:
131 : g_( 1.0 )
132 {
133 }
134
135 void get( Dictionary& ) const;
136 void set( const Dictionary&, Node* node );
137
138 double input( double h ); // non-linearity on input
139 double mult_coupling_ex( double rate ); // factor of multiplicative coupling
140 double mult_coupling_in( double rate ); // factor of multiplicative coupling
141};
142
143inline double
145{
146 return pow( g_ * h, 4. ) / ( pow( .1, 4. ) + pow( g_ * h, 4. ) );
147}
148
149inline double
154
155inline double
160
162void register_sigmoid_rate_gg_1998_ipn( const std::string& name );
163
165void register_rate_transformer_sigmoid_gg_1998( const std::string& name );
166
167
168template <>
170template <>
172
173} // namespace nest
174
175
176#endif /* #ifndef SIGMOID_RATE_GG_1998_H */
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Base class for all NEST network objects.
Definition node.h:99
void create()
Create the map.
Definition recordables_map.h:127
Definition sigmoid_rate_gg_1998.h:123
double mult_coupling_in(double rate)
Definition sigmoid_rate_gg_1998.h:156
void get(Dictionary &) const
Store current values in dictionary.
Definition sigmoid_rate_gg_1998.cpp:47
double input(double h)
Definition sigmoid_rate_gg_1998.h:144
nonlinearities_sigmoid_rate_gg_1998()
sets default parameters
Definition sigmoid_rate_gg_1998.h:130
void set(const Dictionary &, Node *node)
Set values from dictionary.
Definition sigmoid_rate_gg_1998.cpp:53
double mult_coupling_ex(double rate)
Definition sigmoid_rate_gg_1998.h:150
double g_
gain factor of gain function
Definition sigmoid_rate_gg_1998.h:126
Definition rate_neuron_ipn.h:109
Definition rate_transformer_node.h:104
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
rate_transformer_node< nonlinearities_sigmoid_rate_gg_1998 > rate_transformer_sigmoid_gg_1998
Definition sigmoid_rate_gg_1998.h:164
rate_neuron_ipn< nonlinearities_sigmoid_rate_gg_1998 > sigmoid_rate_gg_1998_ipn
Definition sigmoid_rate_gg_1998.h:161
void register_sigmoid_rate_gg_1998_ipn(const std::string &name)
Definition sigmoid_rate_gg_1998.cpp:34
void register_rate_transformer_sigmoid_gg_1998(const std::string &name)
Definition sigmoid_rate_gg_1998.cpp:40