GeNN
3.3.0
GPU enhanced Neuronal Networks (GeNN)
|
#include <newNeuronModels.h>
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::Poisson * | getInstance () |
Additional Inherited Members | |
Static Protected Member Functions inherited from NewModels::Base | |
static size_t | getVarIndex (const std::string &varName, const StringPairVec &vars) |
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 potentialSeed
- Seed for random number generationSpikeTime
- Time at which the neuron spiked for the last timeand 4 parameters:
therate
- Firing ratetrefract
- Refractory periodVspike
- Membrane potential at spike (mV)Vrest
- Membrane potential at rest (mV)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.DT
, i.e. the probability of firing is therate
times DT
: . 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.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. typedef Snippet::ValueBase< 4 > NeuronModels::Poisson::ParamValues |
|
inlineoverridevirtual |
Gets names and types (as strings) of additional per-population parameters for the weight update model.
Reimplemented from NeuronModels::Base.
|
inlinestatic |
|
inlineoverridevirtual |
Gets names of of (independent) model parameters.
Reimplemented from Snippet::Base.
|
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.
|
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.
|
inlineoverridevirtual |
Gets names and types (as strings) of model variables.
Reimplemented from NewModels::Base.
|
inlineoverridevirtual |
Is this neuron model the internal Poisson model (which requires a number of special cases)
Reimplemented from NeuronModels::Base.