CSIM: MembranePatchSimple Class Reference

MembranePatchSimple Class Reference

#include <membranepatchsimple.h>

Inheritance diagram for MembranePatchSimple:

MembranePatch CbNeuron CbHHOuINeuron CbHHOuNeuron CbNeuronSt HHNeuron TraubsHHNeuron bNACNeuron cACNeuron CbStOuNeuron dNACNeuron bNACOUNeuron cACOUNeuron dNACOUNeuron List of all members.

Detailed Description

A a path of membrane with an arbitrary number of channels and current supplying synapses.

Model

The membrane voltage $V_m$ is governed by

\[ C_m \frac{V_m}{dt} = -\frac{V_m-E_m}{R_m} - \sum_{c=1}^{N_c} g_c(t) ( V_m - E_{rev}^c ) + \sum_{s=1}^{N_s} I_s(t) + I_{inject} \]

with the following meanings of symbols

  • $C_m$ membrane capacity (Farad)
  • $E_m$ reversal potential of the leak current (Volts)
  • $R_m$ membrane resistance (Ohm)
  • $N_c$ total number of channels (active + synaptic)
  • $g_c(t)$ current conductance of channel $c$ (Siemens)
  • $E_{rev}^c(t)$ reversal potential of channel $c$ (Volts)
  • $N_s$ total number of current supplying synapses
  • $I_s(t)$ current supplied by synapse $s$ (Ampere)
  • $I_{inject}$ injected current (Ampere)

At time $t=0$ $V_m$ ist set to $V_{init}$ .

The value of $E_m$ is calculated to compensate for ionic currents such that $V_m$ actually has a resting value of $V_\mathit{resting}$ .

Spiking and reseting the membrane voltage

If the membrane voltage $V_m$ exceeds the threshold $V_{tresh}$ the MembranePatchSimple sends a spike to all its outgoing synapses.

The membrane voltage is reseted and clamped during the absolute refractory period of length $T_{refract}$ to $V_{reset}$ if the flag doReset=1. This is similar to a LIF neuron (see LifNeuron).

If the flag doReset=0 the membrane voltage is not reseted and the above equation is also applied during the absolute refractory period but the event of threshold crossing is transmitted as a spike to outgoing synapses. This is usfull if one includes channels which produce a real action potential (see HH_K_Channel and HH_Na_Channel ) but one still just wants to communicate the spikes as events in time.

Implementation

The exponential Euler method is used for numerical integration.

Public Member Functions

  • virtual void reset (void)
    Reset the MembranePatchSimple.
  • virtual void IandGtot (double *i, double *g)
    Calculate the new membrane voltage and check wheter Vm exceeds the threshold V_thresh.

Public Attributes

  • float Cm
    The membrane capacity $C_m$ [range=(0,1); units=F;].
  • float Rm
    The membrane resistance $R_m$ [units=Ohm; range=(0,1e30)].
  • double Em
    The reversal potential of the leakage channel [readonly; units=V; range=(-1,1)].
  • float Vresting
    The resting membrane voltage. [units=V; range=(-1,1);].
  • float Vinit
    Initial condition for$V_m$ at time $t=0$ . [units=V; range=(-1,1);].
  • float VmScale
    Defines the difference between Vresting and the Vthresh for the calculation of the iongate tables and the ionbuffer Erev. [units=V; range=(0,1e5);].
  • double Vm
    The membrane voltage [readonly; units=V;].
  • float Inoise
    Variance of the noise to be added each integration time constant. [range=(0,1); units=W^2;].
  • float Iinject
    Constant current to be injected into the CB neuron. [units=A; range=(-1,1);].

Protected Member Functions

Protected Attributes

Friends


Member Function Documentation

void MembranePatchSimple::reset void   )  [virtual]
 

Reset the MembranePatchSimple.

  • $V_m$ is set to $V_{init}$

  • $E_m$ is calculated such that for no input $V_m$ relaxes to $V_{resting}$ :
    • $E_m = R_m \cdot \left( V_{resting} G_{tot} - I_{ch} \right) $
    • $G_{tot} = \frac{1}{R_m} + \sum_{c=1}^{N_c} g_\infty(V_{resting})$
    • $I_{ch} = \sum_{c=1}^{N_c} g_\infty(V_{resting}) E_{rev}^c $

Reimplemented in CbNeuron, and MembranePatch.


Member Data Documentation

float MembranePatchSimple::Vresting
 

The resting membrane voltage. [units=V; range=(-1,1);].

The value of $E_m$ is calculated to compensate for ionic currents such that $V_m$ actually has a resting value of $V_\mathit{resting}$ . This is done in reset().


 
(C) 2003, Thomas Natschläger last modified 07/10/2006