GeNN  3.3.0
GPU enhanced Neuronal Networks (GeNN)
NeuronModels::Poisson Class Reference

Poisson neurons. More...

#include <newNeuronModels.h>

Inheritance diagram for NeuronModels::Poisson:
NeuronModels::Base NewModels::Base Snippet::Base

Public Types

typedef Snippet::ValueBase< 4 > ParamValues
 
typedef NewModels::VarInitContainerBase< 3 > VarValues
 
typedef NewModels::VarInitContainerBase< 0 > PreVarValues
 
typedef NewModels::VarInitContainerBase< 0 > PostVarValues
 
- Public Types inherited from Snippet::Base
typedef std::function< double(const std::vector< double > &, double)> DerivedParamFunc
 
typedef std::vector< std::string > StringVec
 
typedef std::vector< std::pair< std::string, std::string > > StringPairVec
 
typedef std::vector< std::pair< std::string, std::pair< std::string, double > > > NameTypeValVec
 
typedef std::vector< std::pair< std::string, DerivedParamFunc > > DerivedParamVec
 

Public Member Functions

virtual std::string getSimCode () const override
 Gets the code that defines the execution of one timestep of integration of the neuron model. More...
 
virtual std::string getThresholdConditionCode () const override
 Gets code which defines the condition for a true spike in the described neuron model. More...
 
virtual StringVec getParamNames () const override
 Gets names of of (independent) model parameters. More...
 
virtual StringPairVec getVars () const override
 Gets names and types (as strings) of model variables. More...
 
virtual StringPairVec getExtraGlobalParams () const override
 
virtual bool isPoisson () const override
 
- Public Member Functions inherited from NeuronModels::Base
virtual std::string getResetCode () const
 Gets code that defines the reset action taken after a spike occurred. This can be empty. More...
 
virtual std::string getSupportCode () const
 Gets support code to be made available within the neuron kernel/funcion. More...
 
virtual NewModels::Base::NameTypeValVec getAdditionalInputVars () const
 
- Public Member Functions inherited from NewModels::Base
size_t getVarIndex (const std::string &varName) const
 Find the index of a named variable. More...
 
- Public Member Functions inherited from Snippet::Base
virtual ~Base ()
 
virtual DerivedParamVec getDerivedParams () const
 

Static Public Member Functions

static const NeuronModels::PoissongetInstance ()
 

Additional Inherited Members

- Static Protected Member Functions inherited from NewModels::Base
static size_t getVarIndex (const std::string &varName, const StringPairVec &vars)
 

Detailed Description

Poisson neurons.

Poisson neurons have constant membrane potential (Vrest) unless they are activated randomly to the Vspike value if (t- SpikeTime ) > trefract.

It has 3 variables:

  • V - Membrane potential
  • Seed - Seed for random number generation
  • SpikeTime - Time at which the neuron spiked for the last time

and 4 parameters:

  • therate - Firing rate
  • trefract - Refractory period
  • Vspike - Membrane potential at spike (mV)
  • Vrest - Membrane potential at rest (mV)
Note
The initial values array for the Poisson type needs three entries for V, Seed and SpikeTime and the parameter array needs four entries for therate, trefract, Vspike and Vrest, in that order.
Internally, GeNN uses a linear approximation for the probability of firing a spike in a given time step of size DT, i.e. the probability of firing is therate times DT: $ p = \lambda \Delta t $. This approximation is usually very good, especially for typical, quite small time steps and moderate firing rates. However, it is worth noting that the approximation becomes poor for very high firing rates and large time steps. An unrelated problem may occur with very low firing rates and small time steps. In that case it can occur that the firing probability is so small that the granularity of the 64 bit integer based random number generator begins to show. The effect manifests itself in that small changes in the firing rate do not seem to have an effect on the behaviour of the Poisson neurons because the numbers are so small that only if the random number is identical 0 a spike will be triggered.
GeNN uses a separate random number generator for each Poisson neuron. The seeds (and later states) of these random number generators are stored in the seed variable. GeNN allocates memory for these seeds/states in the generated allocateMem() function. It is, however, currently the responsibility of the user to fill the array of seeds with actual random seeds. Not doing so carries the risk that all random number generators are seeded with the same seed ("0") and produce the same random numbers across neurons at each given time step. When using the GPU, seed also must be copied to the GPU after having been initialized.

Member Typedef Documentation

◆ ParamValues

◆ PostVarValues

◆ PreVarValues

◆ VarValues

Member Function Documentation

◆ getExtraGlobalParams()

virtual StringPairVec NeuronModels::Poisson::getExtraGlobalParams ( ) const
inlineoverridevirtual

Gets names and types (as strings) of additional per-population parameters for the weight update model.

Reimplemented from NeuronModels::Base.

◆ getInstance()

static const NeuronModels::Poisson* NeuronModels::Poisson::getInstance ( )
inlinestatic

◆ getParamNames()

virtual StringVec NeuronModels::Poisson::getParamNames ( ) const
inlineoverridevirtual

Gets names of of (independent) model parameters.

Reimplemented from Snippet::Base.

◆ getSimCode()

virtual std::string NeuronModels::Poisson::getSimCode ( ) const
inlineoverridevirtual

Gets the code that defines the execution of one timestep of integration of the neuron model.

The code will refer to for the value of the variable with name "NN". It needs to refer to the predefined variable "ISYN", i.e. contain , if it is to receive input.

Reimplemented from NeuronModels::Base.

◆ getThresholdConditionCode()

virtual std::string NeuronModels::Poisson::getThresholdConditionCode ( ) const
inlineoverridevirtual

Gets code which defines the condition for a true spike in the described neuron model.

This evaluates to a bool (e.g. "V > 20").

Reimplemented from NeuronModels::Base.

◆ getVars()

virtual StringPairVec NeuronModels::Poisson::getVars ( ) const
inlineoverridevirtual

Gets names and types (as strings) of model variables.

Reimplemented from NewModels::Base.

◆ isPoisson()

virtual bool NeuronModels::Poisson::isPoisson ( ) const
inlineoverridevirtual

Is this neuron model the internal Poisson model (which requires a number of special cases)

Reimplemented from NeuronModels::Base.


The documentation for this class was generated from the following file: