GeNN  4.9.0
GPU enhanced Neuronal Networks (GeNN)
InitSparseConnectivitySnippet::FixedProbability Class Reference

#include <initSparseConnectivitySnippet.h>

Inheritance diagram for InitSparseConnectivitySnippet::FixedProbability:
InitSparseConnectivitySnippet::FixedProbabilityBase InitSparseConnectivitySnippet::Base Snippet::Base

Public Member Functions

 DECLARE_SNIPPET (InitSparseConnectivitySnippet::FixedProbability, 1)
 
 SET_ROW_BUILD_CODE ("const scalar u = $(gennrand_uniform);\ "prevJ+=(1+(int)(log(u) *$(probLogRecip)));\" "if(prevJ< $(num_post)) {\" " $(addSynapse, prevJ+$(id_post_begin));\" "}\" "else {\" " $(endRow);\" "}\")
 
- Public Member Functions inherited from InitSparseConnectivitySnippet::FixedProbabilityBase
virtual std::string getRowBuildCode () const override=0
 
 SET_ROW_BUILD_STATE_VARS ({{"prevJ", "int", -1}})
 
virtual StringVec getParamNames () const override
 Gets names of of (independent) model parameters. More...
 
virtual DerivedParamVec getDerivedParams () const override
 
 SET_CALC_MAX_ROW_LENGTH_FUNC ([](unsigned int numPre, unsigned int numPost, const std::vector< double > &pars) { const double quantile=pow(0.9999, 1.0/(double) numPre);return binomialInverseCDF(quantile, numPost, pars[0]);})
 
 SET_CALC_MAX_COL_LENGTH_FUNC ([](unsigned int numPre, unsigned int numPost, const std::vector< double > &pars) { const double quantile=pow(0.9999, 1.0/(double) numPost);return binomialInverseCDF(quantile, numPre, pars[0]);})
 
- Public Member Functions inherited from InitSparseConnectivitySnippet::Base
virtual ParamValVec getRowBuildStateVars () const
 
virtual std::string getColBuildCode () const
 
virtual ParamValVec getColBuildStateVars () const
 
virtual std::string getHostInitCode () const
 
virtual CalcMaxLengthFunc getCalcMaxRowLengthFunc () const
 Get function to calculate the maximum row length of this connector based on the parameters and the size of the pre and postsynaptic population. More...
 
virtual CalcMaxLengthFunc getCalcMaxColLengthFunc () const
 Get function to calculate the maximum column length of this connector based on the parameters and the size of the pre and postsynaptic population. More...
 
virtual CalcKernelSizeFunc getCalcKernelSizeFunc () const
 Get function to calculate kernel size required for this conenctor based on its parameters. More...
 
boost::uuids::detail::sha1::digest_type getHashDigest () const
 Update hash from snippet. More...
 
void validate () const
 Validate names of parameters etc. More...
 
- Public Member Functions inherited from Snippet::Base
virtual ~Base ()
 
virtual EGPVec getExtraGlobalParams () const
 
size_t getExtraGlobalParamIndex (const std::string &paramName) const
 Find the index of a named extra global parameter. More...
 

Additional Inherited Members

- Public Types inherited from InitSparseConnectivitySnippet::Base
typedef std::function< unsigned int(unsigned int, unsigned int, const std::vector< double > &)> CalcMaxLengthFunc
 
typedef std::function< std::vector< unsigned int >const std::vector< double > &)> CalcKernelSizeFunc
 
- Public Types inherited from Snippet::Base
typedef std::vector< std::string > StringVec
 
typedef std::vector< EGPEGPVec
 
typedef std::vector< ParamValParamValVec
 
typedef std::vector< DerivedParamDerivedParamVec
 
- Protected Member Functions inherited from Snippet::Base
void updateHash (boost::uuids::detail::sha1 &hash) const
 
void validate () const
 Validate names of parameters etc. More...
 
- Static Protected Member Functions inherited from Snippet::Base
template<typename T >
static size_t getNamedVecIndex (const std::string &name, const std::vector< T > &vec)
 

Detailed Description

Initialises connectivity with a fixed probability of a synapse existing between a pair of pre and postsynaptic neurons.

Whether a synapse exists between a pair of pre and a postsynaptic neurons can be modelled using a Bernoulli distribution. While this COULD be sampled directly by repeatedly drawing from the uniform distribution, this is inefficient. Instead we sample from the geometric distribution which describes "the probability distribution of the number of Bernoulli trials needed to get one success" – essentially the distribution of the 'gaps' between synapses. We do this using the "inversion method" described by Devroye (1986) – essentially inverting the CDF of the equivalent continuous distribution (in this case the exponential distribution)

Member Function Documentation

◆ DECLARE_SNIPPET()

InitSparseConnectivitySnippet::FixedProbability::DECLARE_SNIPPET ( InitSparseConnectivitySnippet::FixedProbability  ,
 
)

◆ SET_ROW_BUILD_CODE()

InitSparseConnectivitySnippet::FixedProbability::SET_ROW_BUILD_CODE ( )

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