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

Hodgkin-Huxley neurons with Traub & Miles algorithm. More...

#include <newNeuronModels.h>

Inheritance diagram for NeuronModels::TraubMiles:
NeuronModels::Base NewModels::Base Snippet::Base NeuronModels::TraubMilesAlt NeuronModels::TraubMilesFast NeuronModels::TraubMilesNStep

Public Types

typedef Snippet::ValueBase< 7 > ParamValues
 
typedef NewModels::VarInitContainerBase< 4 > 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...
 
- 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::StringPairVec getExtraGlobalParams () const
 
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::TraubMilesgetInstance ()
 

Additional Inherited Members

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

Detailed Description

Hodgkin-Huxley neurons with Traub & Miles algorithm.

This conductance based model has been taken from [7] and can be described by the equations:

\begin{eqnarray*} C \frac{d V}{dt} &=& -I_{{\rm Na}} -I_K-I_{{\rm leak}}-I_M-I_{i,DC}-I_{i,{\rm syn}}-I_i, \\ I_{{\rm Na}}(t) &=& g_{{\rm Na}} m_i(t)^3 h_i(t)(V_i(t)-E_{{\rm Na}}) \\ I_{{\rm K}}(t) &=& g_{{\rm K}} n_i(t)^4(V_i(t)-E_{{\rm K}}) \\ \frac{dy(t)}{dt} &=& \alpha_y (V(t))(1-y(t))-\beta_y(V(t)) y(t), \end{eqnarray*}

where $y_i= m, h, n$, and

\begin{eqnarray*} \alpha_n&=& 0.032(-50-V)/\big(\exp((-50-V)/5)-1\big) \\ \beta_n &=& 0.5\exp((-55-V)/40) \\ \alpha_m &=& 0.32(-52-V)/\big(\exp((-52-V)/4)-1\big) \\ \beta_m &=& 0.28(25+V)/\big(\exp((25+V)/5)-1\big) \\ \alpha_h &=& 0.128\exp((-48-V)/18) \\ \beta_h &=& 4/\big(\exp((-25-V)/5)+1\big). \end{eqnarray*}

and typical parameters are $C=0.143$ nF, $g_{{\rm leak}}= 0.02672$ $\mu$S, $E_{{\rm leak}}= -63.563$ mV, $g_{{\rm Na}}=7.15$ $\mu$S, $E_{{\rm Na}}= 50$ mV, $g_{{\rm {\rm K}}}=1.43$ $\mu$S, $E_{{\rm K}}= -95$ mV.

It has 4 variables:

  • V - membrane potential E
  • m - probability for Na channel activation m
  • h - probability for not Na channel blocking h
  • n - probability for K channel activation n

and 7 parameters:

  • gNa - Na conductance in 1/(mOhms * cm^2)
  • ENa - Na equi potential in mV
  • gK - K conductance in 1/(mOhms * cm^2)
  • EK - K equi potential in mV
  • gl - Leak conductance in 1/(mOhms * cm^2)
  • El - Leak equi potential in mV
  • Cmem - Membrane capacity density in muF/cm^2
Note
Internally, the ordinary differential equations defining the model are integrated with a linear Euler algorithm and GeNN integrates 25 internal time steps for each neuron for each network time step. I.e., if the network is simulated at DT= 0.1 ms, then the neurons are integrated with a linear Euler algorithm with lDT= 0.004 ms. This variant uses IF statements to check for a value at which a singularity would be hit. If so, value calculated by L'Hospital rule is used.

Member Typedef Documentation

◆ ParamValues

◆ PostVarValues

◆ PreVarValues

◆ VarValues

Member Function Documentation

◆ getInstance()

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

◆ getParamNames()

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

Gets names of of (independent) model parameters.

Reimplemented from Snippet::Base.

Reimplemented in NeuronModels::TraubMilesNStep.

◆ getSimCode()

virtual std::string NeuronModels::TraubMiles::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.

Reimplemented in NeuronModels::TraubMilesNStep, NeuronModels::TraubMilesAlt, and NeuronModels::TraubMilesFast.

◆ getThresholdConditionCode()

virtual std::string NeuronModels::TraubMiles::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::TraubMiles::getVars ( ) const
inlineoverridevirtual

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

Reimplemented from NewModels::Base.


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