NEST  2.6.0,not_revisioned_source_dir@0
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 #include "binary_neuron.h"
27 #include "binary_neuron_impl.h"
28 
29 namespace nest
30 {
31  /* BeginDocumentation
32  Name: mcculloch_pitts_neuron - Binary deterministic neuron with Heaviside activation function.
33 
34  Description:
35  The mcculloch_pitts_neuron is an implementation of a binary
36  neuron that is irregularly updated as Poisson time points [1]. At
37  each update point the total synaptic input h into the neuron is
38  summed up, passed through a gain function g whose output is
39  interpreted as the probability of the neuron to be in the active
40  (1) state.
41  The gain function g used here is g(h) = H(h-theta), with H the
42  Heaviside function. The time constant tau_m is defined as the
43  mean inter-update-interval that is drawn from an exponential
44  distribution with this parameter. Using this neuron to reprodce
45  simulations with asynchronous update [1], the time constant needs
46  to be chosen as tau_m = dt*N, where dt is the simulation time
47  step and N the number of neurons in the original simulation with
48  asynchronous update. This ensures that a neuron is updated on
49  average every tau_m ms. Since in the original paper [1] neurons
50  are coupled with zero delay, this implementation follows this
51  definition. It uses the update scheme described in [3] to
52  maintain causality: The incoming events in time step t_i are
53  taken into account at the beginning of the time step to calculate
54  the gain function and to decide upon a transition. In order to
55  obtain delayed coupling with delay d, the user has to specify the
56  delay d+h upon connection, where h is the simulation time step.
57 
58  Remarks:
59  This neuron has a special use for spike events to convey the
60  binary state of the neuron to the target. The neuron model
61  only sends a spike if a transition of its state occurs. If the
62  state makes an up-transition it sends a spike with multiplicity 2,
63  if a down transition occurs, it sends a spike with multiplicity 1.
64  The neuron accepts several sources of currents, e.g. from a
65  noise_generator.
66 
67  Parameters:
68  tau_m double - Membrane time constant (mean inter-update-interval) in ms.
69  theta double - threshold for sigmoidal activation function mV
70 
71  References:
72  [1] W. McCulloch und W. Pitts (1943). A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, 5:115-133.
73  [2] Hertz Krogh, Palmer. Introduction to the theory of neural computation. Westview (1991).
74  [3] Abigail Morrison, Markus Diesmann. Maintaining Causality in Discrete Time Neuronal Simulations.
75  In: Lectures in Supercomputational Neuroscience, p. 267. Peter beim Graben, Changsong Zhou, Marco Thiel, Juergen Kurths (Eds.), Springer 2008.
76 
77  Sends: SpikeEvent
78  Receives: SpikeEvent, PotentialRequest
79  FirstVersion: February 2013
80  Author: Moritz Helias
81  SeeAlso: pp_psc_delta
82  */
83 
85  {
86  private:
87 
90 
91  public:
92 
95  theta_ ( 0.0 ) // mV
96  {}
97 
98  void get(DictionaryDatum&) const;
99  void set(const DictionaryDatum&);
100 
102  };
103 
104  inline
106  {
107  return h > theta_;
108  }
109 
111 
112  template <>
114 
115 } // namespace nest
116 
117 #endif /* #ifndef MCCULLOCH_PITTS_NEURON_H */
Binary stochastic neuron with linear or sigmoidal gain function.
Definition: binary_neuron.h:48
Definition: lockptrdatum.h:40
const Name h("h")
Summed input to a neuron (Ginzburg neuron)
Definition: nest_names.h:158
nest::binary_neuron< nest::gainfunction_mcculloch_pitts > mcculloch_pitts_neuron
Definition: mcculloch_pitts_neuron.h:110
Definition: mcculloch_pitts_neuron.h:84
gainfunction_mcculloch_pitts()
sets default parameters
Definition: mcculloch_pitts_neuron.h:94
double double_t
Double precision floating point numbers.
Definition: nest.h:93
bool operator()(librandom::RngPtr, double_t h)
Definition: mcculloch_pitts_neuron.h:105
void set(const DictionaryDatum &)
Set values from dicitonary.
Definition: mcculloch_pitts_neuron.cpp:33
double_t theta_
threshold of sigmoidal activation function
Definition: mcculloch_pitts_neuron.h:89
void create()
Create the map.
Definition: recordables_map.h:118