LifNeuronBase Class Reference

A leaky-integrate-and-fire (I&F) neuron. More...

#include <LifNeuron.h>

Inheritance diagram for LifNeuronBase:

Inheritance graph
[legend]
Collaboration diagram for LifNeuronBase:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 LifNeuronBase (float Rm=1e6, float Cm=3e-8, float Vresting=-0.06, float Vthresh=-0.045, float Vreset=-0.06, float Vinit=-0.06, float Trefract=3e-3, float Inoise=0.0, float Iinject=0.0)
virtual ~LifNeuronBase ()
virtual int reset (double dt)
 Reset the leaky I&F neuron.
bool refractoryQ ()
 Returns true iff the neuron is in its absolute refactory period.
virtual void clearSynapticInput (void)=0
virtual double getVm ()
 Get the current membrane voltage.
virtual double getManagedDelay () const
virtual int nSpikeInputPorts () const
virtual int nSpikeOutputPorts () const
virtual int nAnalogInputPorts () const
virtual int nAnalogOutputPorts () const
virtual PortType outputPortType (port_t o) const
virtual PortType inputPortType (port_t i) const
virtual double currentNoiseInput ()

Public Attributes

float Rm
 The membrane resistance $R_m$ [units=Ohm; range=(0,1e30)].
float Cm
 The membrane capacity $C_m$ [range=(0,1); units=F;].
float Vresting
 The resting membrane voltage. [units=V; range=(-1,1);].
float Vthresh
 If $V_m$ exceeds $V_{thresh}$ a spike is emmited. [units=V; range=(-10,100);].
float Vreset
 The voltage to reset $V_m$ to after a spike. [units=V; range=(-1,1);].
float Vinit
 The initial condition for $V_m$ at time $t=0$. [units=V; range=(-1,1);].
float Trefract
 The length of the absolute refractory period. [units=sec; range=(0,1);].
float Inoise
 The standard deviation of the noise to be added each integration time constant. [range=(0,1); units=A;].
float Iinject
 A constant current to be injected into the LIF neuron. [units=A; range=(-1,1);].

Protected Attributes

double Vm
 The membrane voltage $V_m$ [readonly; units=V;].
int nStepsInRefr
 If positive then this counter tells us how many time steps we are still in the absolute refractory period.
double C1
 Internal constants for the exponential Euler integration of Vm.
double C2
double I0
double _dt
 The time step.

Static Protected Attributes

static
ThreadSpecificRandomDistribution
< NormalDistribution
noise_gen
 Random number generator for the noise.


Detailed Description

A leaky-integrate-and-fire (I&F) neuron.

Model

A standard leaky-integrate-and-fire neuron model is implemented where the membrane potential $V_m$ of a neuron is given by

\[ \tau_m \frac{d V_m}{dt} = -(V_m-V_{resting}) + R_m \cdot (I_{syn}(t)+I_{inject}+I_{noise}) \]

where $\tau_m=C_m\cdot R_m$ is the membrane time constant, $R_m$ is the membrane resistance, $I_{syn}(t)$ is the current supplied by the synapses, $I_{inject}$ is a non-specific background current and $I_{noise}$ is a Gaussion random variable with zero mean and a given variance noise.

At time $t=0$ $V_m$ ist set to $V_{init}$. If $V_m$ exceeds the threshold voltage $V_{thresh}$ it is reset to $V_{reset}$ and hold there for the length $T_{refract}$ of the absolute refractory period.

Implementation

The exponential Euler method is used for numerical integration.

Definition at line 43 of file LifNeuron.h.


Constructor & Destructor Documentation

LifNeuronBase::LifNeuronBase ( float  Rm = 1e6,
float  Cm = 3e-8,
float  Vresting = -0.06,
float  Vthresh = -0.045,
float  Vreset = -0.06,
float  Vinit = -0.06,
float  Trefract = 3e-3,
float  Inoise = 0.0,
float  Iinject = 0.0 
)

Definition at line 16 of file LifNeuron.cpp.

virtual LifNeuronBase::~LifNeuronBase (  )  [inline, virtual]

Definition at line 56 of file LifNeuron.h.


Member Function Documentation

int LifNeuronBase::reset ( double  dt  )  [virtual]

Reset the leaky I&F neuron.

Reimplemented from SimObject.

Reimplemented in LIFCurrAlphaNeuron, LIFCurrExpNeuron, LIFCondAlphaNeuron, LIFCondExpNeuron, CompositeNeuron< CbLifNeuron >, and CompositeNeuron< LifNeuron >.

Definition at line 24 of file LifNeuron.cpp.

References SimObject::adjust(), clearSynapticInput(), nStepsInRefr, SingleOutputSpikeSender::reset(), Vinit, and Vm.

Here is the call graph for this function:

bool LifNeuronBase::refractoryQ (  )  [inline]

Returns true iff the neuron is in its absolute refactory period.

Definition at line 65 of file LifNeuron.h.

References nStepsInRefr.

virtual void LifNeuronBase::clearSynapticInput ( void   )  [pure virtual]

Implemented in LifNeuron, and CbLifNeuron.

Referenced by reset().

virtual double LifNeuronBase::getVm (  )  [inline, virtual]

Get the current membrane voltage.

Reimplemented in CbLifNeuron.

Definition at line 98 of file LifNeuron.h.

References Vm.

virtual double LifNeuronBase::getManagedDelay (  )  const [inline, virtual]

Reimplemented from SimObject.

Definition at line 103 of file LifNeuron.h.

virtual int LifNeuronBase::nSpikeInputPorts (  )  const [inline, virtual]

Reimplemented from SimObject.

Reimplemented in CompositeNeuron< CbLifNeuron >, and CompositeNeuron< LifNeuron >.

Definition at line 104 of file LifNeuron.h.

virtual int LifNeuronBase::nSpikeOutputPorts (  )  const [inline, virtual]

Reimplemented from SimObject.

Reimplemented in CompositeNeuron< CbLifNeuron >, and CompositeNeuron< LifNeuron >.

Definition at line 105 of file LifNeuron.h.

virtual int LifNeuronBase::nAnalogInputPorts (  )  const [inline, virtual]

Reimplemented from SimObject.

Reimplemented in DARecvLifNeuron, DARecvCbLifNeuron, CompositeNeuron< CbLifNeuron >, and CompositeNeuron< LifNeuron >.

Definition at line 106 of file LifNeuron.h.

virtual int LifNeuronBase::nAnalogOutputPorts (  )  const [inline, virtual]

Reimplemented from SimObject.

Reimplemented in CompositeNeuron< CbLifNeuron >, and CompositeNeuron< LifNeuron >.

Definition at line 107 of file LifNeuron.h.

virtual PortType LifNeuronBase::outputPortType ( port_t  o  )  const [inline, virtual]

Reimplemented from SimObject.

Reimplemented in CompositeNeuron< CbLifNeuron >, and CompositeNeuron< LifNeuron >.

Definition at line 108 of file LifNeuron.h.

References SimObject::spiking, and SimObject::undefined.

virtual PortType LifNeuronBase::inputPortType ( port_t  i  )  const [inline, virtual]

Reimplemented from SimObject.

Reimplemented in DARecvLifNeuron, and DARecvCbLifNeuron.

Definition at line 112 of file LifNeuron.h.

References SimObject::undefined.

virtual double LifNeuronBase::currentNoiseInput (  )  [inline, virtual]

Definition at line 118 of file LifNeuron.h.

Referenced by CbLifNeuron::advance(), and LifNeuron::advance().


Member Data Documentation

The initial condition for $V_m$ at time $t=0$. [units=V; range=(-1,1);].

Definition at line 85 of file LifNeuron.h.

Referenced by LIFCondAlphaNeuron::LIFCondAlphaNeuron(), LIFCondExpNeuron::LIFCondExpNeuron(), LIFCurrAlphaNeuron::LIFCurrAlphaNeuron(), LIFCurrExpNeuron::LIFCurrExpNeuron(), and reset().

The standard deviation of the noise to be added each integration time constant. [range=(0,1); units=A;].

Definition at line 91 of file LifNeuron.h.

Referenced by CbLifNeuron::advance(), LifNeuron::advance(), LIFCondAlphaNeuron::LIFCondAlphaNeuron(), LIFCondExpNeuron::LIFCondExpNeuron(), LIFCurrAlphaNeuron::LIFCurrAlphaNeuron(), and LIFCurrExpNeuron::LIFCurrExpNeuron().

A constant current to be injected into the LIF neuron. [units=A; range=(-1,1);].

Definition at line 94 of file LifNeuron.h.

Referenced by CbLifNeuron::adjust(), LifNeuron::adjust(), LIFCondAlphaNeuron::LIFCondAlphaNeuron(), LIFCondExpNeuron::LIFCondExpNeuron(), LIFCurrAlphaNeuron::LIFCurrAlphaNeuron(), and LIFCurrExpNeuron::LIFCurrExpNeuron().

The membrane voltage $V_m$ [readonly; units=V;].

Definition at line 125 of file LifNeuron.h.

Referenced by CbLifNeuron::advance(), LifNeuron::advance(), CbLifNeuron::getVm(), getVm(), and reset().

If positive then this counter tells us how many time steps we are still in the absolute refractory period.

Definition at line 128 of file LifNeuron.h.

Referenced by CbLifNeuron::advance(), LifNeuron::advance(), refractoryQ(), and reset().

Internal constants for the exponential Euler integration of Vm.

Definition at line 131 of file LifNeuron.h.

Referenced by CbLifNeuron::adjust(), LifNeuron::adjust(), CbLifNeuron::advance(), and LifNeuron::advance().

Definition at line 131 of file LifNeuron.h.

Referenced by CbLifNeuron::adjust(), LifNeuron::adjust(), and LifNeuron::advance().

The time step.

Definition at line 134 of file LifNeuron.h.

Referenced by CbLifNeuron::adjust(), LifNeuron::adjust(), and CbLifNeuron::advance().

Random number generator for the noise.

Definition at line 137 of file LifNeuron.h.

Referenced by CbLifNeuron::adjust(), LifNeuron::adjust(), CbLifNeuron::advance(), and LifNeuron::advance().


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

Generated on Wed Jul 9 16:34:51 2008 for PCSIM by  doxygen 1.5.5