NEST main@caf0ae8
 
Loading...
Searching...
No Matches
mcculloch_pitts_neuron.h
Go to the documentation of this file.
1/*
2 * mcculloch_pitts_neuron.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 MCCULLOCH_PITTS_NEURON_H
24#define MCCULLOCH_PITTS_NEURON_H
25
26// Includes from models:
27#include "binary_neuron.h"
28
29namespace nest
30{
31
32/* BeginUserDocs: neuron, binary
33
34Short description
35+++++++++++++++++
36
37Binary deterministic neuron with Heaviside activation function
38
39Description
40+++++++++++
41
42The ``mcculloch_pitts_neuron`` is an implementation of a binary
43neuron that is irregularly updated as Poisson time points :footcite:p:`McCulloch1943`. At
44each update point the total synaptic input h into the neuron is
45summed up, passed through a Heaviside gain function :math:`g(h) = H(h-\theta)`,
46whose output is either 1 (if input is above) or 0 (if input is below
47threshold theta).
48
49The time constant :math:`\tau_m` is defined as the
50mean inter-update-interval that is drawn from an exponential
51distribution with this parameter. Using this neuron to reproduce
52simulations with asynchronous update :footcite:p:`McCulloch1943`, the time constant needs
53to be chosen as :math:`\tau_m = dt \times N`, where :math:`dt` is the simulation time
54step and :math:`N` the number of neurons in the original simulation with
55asynchronous update. This ensures that a neuron is updated on
56average every :math:`\tau_m` ms. Since in the original paper :footcite:p:`McCulloch1943` neurons
57are coupled with zero delay, this implementation follows this
58definition. It uses the update scheme described in :footcite:p:`Morrison2007b` to
59maintain causality: The incoming events in time step :math:`t_i` are
60taken into account at the beginning of the time step to calculate
61the gain function and to decide upon a transition. In order to
62obtain delayed coupling with delay :math:`d`, the user has to specify the
63delay :math:`d+h` upon connection, where :math:`h` is the simulation time step.
64
65See also :footcite:p:`Hertz1991`.
66
67Parameters
68++++++++++
69
70======= ======= ====================================================
71 tau_m ms Membrane time constant (mean inter-update-interval)
72 theta mV Threshold for sigmoidal activation function
73======= ======= ====================================================
74
75
76.. admonition:: Special requirements for binary neurons
77
78 As the ``mcculloch_pitts_neuron`` is a binary neuron, the user must
79 ensure that the following requirements are observed. NEST does not
80 enforce them. Breaching the requirements can lead to meaningless
81 results.
82
83 1. Binary neurons must only be connected to other binary neurons.
84
85 #. No more than one connection must be created between any pair of
86 binary neurons. When using probabilistic connection rules, specify
87 ``'allow_autapses': False`` to avoid accidental creation of
88 multiple connections between a pair of neurons.
89
90 #. Binary neurons can be driven by current-injecting devices, but
91 *not* by spike generators.
92
93 #. Activity of binary neurons can only be recored using a ``spin_detector``
94 or ``correlospinmatrix_detector``.
95
96
97References
98++++++++++
99
100.. footbibliography::
101
102Receives
103++++++++
104
105CurrentEvent
106
107
108See also
109++++++++
110
111
112Examples using this model
113+++++++++++++++++++++++++
114
115.. listexamples:: mcculloch_pitts_neuron
116
117EndUserDocs */
118
120{
121private:
123 double theta_;
124
125public:
128 : theta_( 0.0 ) // mV
129 {
130 }
131
132 void get( Dictionary& ) const;
133 void set( const Dictionary&, Node* node );
134
135 bool operator()( RngPtr, double h );
136};
137
138inline bool
140{
141 return h > theta_;
142}
143
145void register_mcculloch_pitts_neuron( const std::string& name );
146
147
148template <>
150
151} // namespace nest
152
153#endif /* #ifndef MCCULLOCH_PITTS_NEURON_H */
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Base class for RNG engine wrappers.
Definition random_generators.h:67
Base class for all NEST network objects.
Definition node.h:99
void create()
Create the map.
Definition recordables_map.h:127
Binary stochastic neuron with linear or sigmoidal gain function.
Definition binary_neuron.h:76
Definition mcculloch_pitts_neuron.h:120
gainfunction_mcculloch_pitts()
sets default parameters
Definition mcculloch_pitts_neuron.h:127
void get(Dictionary &) const
Store current values in dictionary.
Definition mcculloch_pitts_neuron.cpp:42
bool operator()(RngPtr, double h)
Definition mcculloch_pitts_neuron.h:139
void set(const Dictionary &, Node *node)
Set values from dictionary.
Definition mcculloch_pitts_neuron.cpp:48
double theta_
threshold of sigmoidal activation function
Definition mcculloch_pitts_neuron.h:123
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
binary_neuron< gainfunction_mcculloch_pitts > mcculloch_pitts_neuron
Definition mcculloch_pitts_neuron.h:144
void register_mcculloch_pitts_neuron(const std::string &name)
Definition mcculloch_pitts_neuron.cpp:35