class NeuronModels::Izhikevich

Overview

Izhikevich neuron with fixed parameters izhikevich2003simple. More…

#include <neuronModels.h>

class Izhikevich: public NeuronModels::Base
{
public:
    // typedefs

    typedef Snippet::ValueBase<4> ParamValues;
    typedef Models::VarInitContainerBase<2> VarValues;
    typedef Models::VarInitContainerBase<0> PreVarValues;
    typedef Models::VarInitContainerBase<0> PostVarValues;

    // methods

    static const NeuronModels::Izhikevich* getInstance();
    virtual std::string getSimCode() const;
    virtual std::string getThresholdConditionCode() const;
    virtual StringVec getParamNames() const;
    virtual VarVec getVars() const;
};

// direct descendants

class IzhikevichVariable;

Inherited Members

public:
    // typedefs

    typedef std::vector<std::string> StringVec;
    typedef std::vector<EGP> EGPVec;
    typedef std::vector<ParamVal> ParamValVec;
    typedef std::vector<DerivedParam> DerivedParamVec;
    typedef std::vector<Var> VarVec;

    // structs

    struct DerivedParam;
    struct EGP;
    struct ParamVal;
    struct Var;

    // methods

    virtual ~Base();
    virtual StringVec getParamNames() const;
    virtual DerivedParamVec getDerivedParams() const;
    virtual VarVec getVars() const;
    virtual EGPVec getExtraGlobalParams() const;
    size_t getVarIndex(const std::string& varName) const;
    size_t getExtraGlobalParamIndex(const std::string& paramName) const;
    virtual std::string getSimCode() const;
    virtual std::string getThresholdConditionCode() const;
    virtual std::string getResetCode() const;
    virtual std::string getSupportCode() const;
    virtual Models::Base::ParamValVec getAdditionalInputVars() const;
    virtual bool isAutoRefractoryRequired() const;

Detailed Documentation

Izhikevich neuron with fixed parameters izhikevich2003simple.

It is usually described as

\[\begin{split}\begin{eqnarray*} \frac{dV}{dt} &=& 0.04 V^2 + 5 V + 140 - U + I, \\ \frac{dU}{dt} &=& a (bV-U), \end{eqnarray*}\end{split}\]

I is an external input current and the voltage V is reset to parameter c and U incremented by parameter d, whenever V >= 30 mV. This is paired with a particular integration procedure of two 0.5 ms Euler time steps for the V equation followed by one 1 ms time step of the U equation. Because of its popularity we provide this model in this form here event though due to the details of the usual implementation it is strictly speaking inconsistent with the displayed equations.

Variables are:

  • V - Membrane potential
  • U - Membrane recovery variable

Parameters are:

  • a - time scale of U
  • b - sensitivity of U
  • c - after-spike reset value of V
  • d - after-spike reset value of U

Methods

virtual std::string getSimCode() const

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.

virtual std::string getThresholdConditionCode() const

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

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

virtual StringVec getParamNames() const

Gets names of of (independent) model parameters.

virtual VarVec getVars() const

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