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

Initialises connectivity with a fixed number of random synapses per row. More...

#include <initSparseConnectivitySnippet.h>

Inheritance diagram for InitSparseConnectivitySnippet::FixedNumberPostWithReplacement:
InitSparseConnectivitySnippet::Base Snippet::Base

Public Member Functions

 DECLARE_SNIPPET (InitSparseConnectivitySnippet::FixedNumberPostWithReplacement, 1)
 
 SET_ROW_BUILD_CODE ("if(c == 0) {\ " $(endRow);\" "}\" "const scalar u=$(gennrand_uniform);\" "x+=(1.0 - x) *(1.0 - pow(u, 1.0/(scalar) c));\" "unsigned int postIdx=(unsigned int)(x *$(num_post));\" "postIdx=(postIdx< $(num_post)) ? postIdx :($(num_post) - 1);\" "$(addSynapse, postIdx+$(id_post_begin));\" "c--;\")
 
 SET_ROW_BUILD_STATE_VARS ({{"x", "scalar", 0.0},{"c", "unsigned int", "$(rowLength)"}})
 
virtual StringVec getParamNames () const override
 Gets names of of (independent) model parameters. More...
 
 SET_CALC_MAX_ROW_LENGTH_FUNC ([](unsigned int, unsigned int, const std::vector< double > &pars) { return(unsigned int) 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,(unsigned int) pars[0] *numPre, 1.0/(double) numPost);})
 
- Public Member Functions inherited from InitSparseConnectivitySnippet::Base
virtual std::string getRowBuildCode () const
 
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 DerivedParamVec getDerivedParams () const
 
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 number of random synapses per row.

The postsynaptic targets of the synapses can be initialised in parallel by sampling from the discrete uniform distribution. However, to sample connections in ascending order, we sample from the 1st order statistic of the uniform distribution – Beta[1, Npost] – essentially the next smallest value. In this special case this is equivalent to the exponential distribution which can be sampled in constant time using the inversion method.

Member Function Documentation

◆ DECLARE_SNIPPET()

InitSparseConnectivitySnippet::FixedNumberPostWithReplacement::DECLARE_SNIPPET ( InitSparseConnectivitySnippet::FixedNumberPostWithReplacement  ,
 
)

◆ getParamNames()

virtual StringVec InitSparseConnectivitySnippet::FixedNumberPostWithReplacement::getParamNames ( ) const
inlineoverridevirtual

Gets names of of (independent) model parameters.

Reimplemented from Snippet::Base.

◆ SET_CALC_MAX_COL_LENGTH_FUNC()

InitSparseConnectivitySnippet::FixedNumberPostWithReplacement::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,(unsigned int) pars[0] *numPre, 1.0/(double) numPost);}  )

◆ SET_CALC_MAX_ROW_LENGTH_FUNC()

InitSparseConnectivitySnippet::FixedNumberPostWithReplacement::SET_CALC_MAX_ROW_LENGTH_FUNC ( [] (unsigned int, unsigned int, const std::vector< double > &pars) { return(unsigned int) pars[0];}  )

◆ SET_ROW_BUILD_CODE()

InitSparseConnectivitySnippet::FixedNumberPostWithReplacement::SET_ROW_BUILD_CODE ( )

◆ SET_ROW_BUILD_STATE_VARS()

InitSparseConnectivitySnippet::FixedNumberPostWithReplacement::SET_ROW_BUILD_STATE_VARS ( {{"x", "scalar", 0.0},{"c", "unsigned int", "$(rowLength)"}}  )

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