CSIM: VIonGate Class Reference

VIonGate Class Reference

#include <viongate.h>

Inheritance diagram for VIonGate:

IonGate Advancable csimClass AhGate_Hoffman97 AlGate_Korngreen02 AmGate_Hoffman97 AnGate_Korngreen02 CaGate_Yamada98 CALhGate_Destexhe98 CALmGate_Destexhe98 GVD_cT_Gate GVD_Gate HH_h_Gate HH_m_Gate HH_n_Gate HnGate_Stuart98 HVACAuGate_Brown93 HVACAvGate_Brown93 KDnGate_Traub91 KlGate_Korngreen02 KnGate_Korngreen02 MmGate_Wang98 MnGate_Mainen96 MpGate_Mainen96orig NAhGate_Traub91 NAmGate_Traub91 NPmGate_McCormick92 SIChGate_Maciokas02 SICmGate_Maciokas02 Traubs_HH_h_Gate Traubs_HH_m_Gate Traubs_HH_n_Gate List of all members.

Detailed Description

Generic first order kinitics voltage dependend ion gate.

Generic first order kinitics voltage dependend ion gate.

The Model

An ion gate is model via the equation $P(t,V) = p(t,V)^k$ ($k$ is an interger exponent) where the state variable $p(t,V)$ obeys the first order kinetics

\[ \frac{\delta p(t,V)}{\delta t} = \alpha(V)(1-p(t,V)) - \beta(V)p(t,V) \]

with the voltage dependent rate constants $\alpha(V)$ and $\beta(V)$ . This equation can also be written in the (sometimes more convinient) form

\[ \tau(V)\frac{\delta p(t,V)}{\delta t} = -p(t,V) + p_\infty(V) \]

with the following relations between the time ``constant'' $\tau(V)$ and the ``resting'' value $p_\infty(V)$ and the activation and inactivation parameters $\alpha(V)$ and $beta(V)$ .

\[ \tau(V) = \frac{1}{\alpha(V)+\beta(V)} \text{ and } p_\infty(V) = \frac{\alpha(V)}{(\alpha(V)+\beta(V))} \]

\[ \alpha(V) = \frac{p_\infty(V)}{\tau(V)} \text{ and } \beta(v) = \frac{1-p_\infty(V)}{\tau(V)} \]

Implementation

For an efficient computation we precalculate for each value of $V$ the integration parameters $C_1(V)$ and $C_2(V)$ for the numerical solution of the differential equation and store them in a lookup table.

For the exponential Euler integration method these are given by

\[C_1(V)=\exp(-\Delta t / \tau(V))\]

and

\[C_2(V)=(1-C_1(V))\cdot p_\infty(V)\]

.

For the Crank-Nicolson method they are given by

\[C_1(V)= \frac{1 - \Delta t/2*(\alpha(v) + \beta(v))}{1 + \Delta t/2*(\alpha(v) + \beta(v))}\]

and

\[C_2(V)= \frac{\Delta t*\alpha(v)}{1+\Delta t/2*(\alpha(v) + \beta(v))}\]

.

Input/Output Signals

The calculated output of IonGate is $P(t,V)$ . For its computations it needs the membrane voltage and resting potential of the associated object.

Implementig a specific IonGate

To actually implement a specific gate one has to derive a class from this one and implement either the pair of functions alpha(), beta() or the pair tau(), infty(). Not dooing so will cause an infity recursion fo the current implementation of IonGate.

Furthermore it is neccesarry that you include in your class definition of MyIonGate the macro IONGATE_TABLES and you also need in mygate.cpp the following two lines of code:

   double *MyIonGate::C1=0;
   double *MyIonGate::C2=0;
which define your tables for $C_1(V)$ and $C_2(V)$ .

Public Member Functions

  • VIonGate (void)
    The constructor ..
  • virtual void reset (void)
    Set the initial conditions for time $t=0$ : $p(0,V)=p_\infty(V)$ .
  • virtual int updateInternal (void)
    Set the initial conditions for time $t=0$ : $p(0,V)=p_\infty(V)$ .
  • virtual int advance (void)
    Advance one time step using exponential Euler integration.
  • virtual double alpha (double V)
    The activation parameter $\alpha(V) \in [0,1]$.
  • virtual double beta (double V)
    The inactivation parameter $\beta(V) \in [0,1]$.
  • virtual double tau (double V)
    The "time constant" $\tau(V)$.
  • virtual double infty (double V)
    The "resting value" $p_\infty(V)$.
  • virtual void ConnectToMembrane (MembranePatchSimple *m)
    The gate needs to know the membrane voltage which we set with this function.
  • ~VIonGate (void)

Public Attributes

  • int nummethod
    Numerical method for the solution of the differential equation: Exp. Euler = 0, Crank-Nicolson = 1[units=flag; range=(0,1);];.
  • float * Vresting
    A pointer to the relevant resting membrane potential.
  • double * Vm
    A pointer to the relevant membrane potential.
  • float * VmScale
    A pointer to the parameter that defines the difference between Vresting and the Vthresh for the calculation of the iongate tables.
  • double dttable
    Store integration time step for lookup table generation.

Protected Member Functions

  • virtual double * getC1 (void)

Static Protected Attributes

  • static double * C1 = 0
  • static double * C2 = 0

Constructor & Destructor Documentation

VIonGate::~VIonGate void   )  [inline]
 

(at least with gcc 2.95) the virtuals are not called correctly within the destructor


Member Function Documentation

virtual double* VIonGate::getC1 void   )  [inline, protected, virtual]
 

virtual methods to correctly acces the static members C1 and C2

Reimplemented from IonGate.

Reimplemented in HH_n_Gate, HH_m_Gate, HH_h_Gate, MmGate_Wang98, AmGate_Hoffman97, AhGate_Hoffman97, SICmGate_Maciokas02, SIChGate_Maciokas02, AnGate_Korngreen02, AlGate_Korngreen02, KnGate_Korngreen02, KlGate_Korngreen02, NPmGate_McCormick92, MnGate_Mainen96, HnGate_Stuart98, HVACAuGate_Brown93, HVACAvGate_Brown93, CALmGate_Destexhe98, CALhGate_Destexhe98, NAmGate_Traub91, NAhGate_Traub91, KDnGate_Traub91, MpGate_Mainen96orig, Traubs_HH_n_Gate, Traubs_HH_m_Gate, and Traubs_HH_h_Gate.


Member Data Documentation

double * VIonGate::C1 = 0 [static, protected]
 

The look up table for the exponential Euler integration 'constant' $C_1(V)=\exp(-\Delta t / \tau(V))$

Reimplemented from IonGate.

Reimplemented in GVD_Gate, GVD_cT_Gate, HH_n_Gate, HH_m_Gate, HH_h_Gate, CaGate_Yamada98, MmGate_Wang98, AmGate_Hoffman97, AhGate_Hoffman97, SICmGate_Maciokas02, SIChGate_Maciokas02, AnGate_Korngreen02, AlGate_Korngreen02, KnGate_Korngreen02, KlGate_Korngreen02, NPmGate_McCormick92, MnGate_Mainen96, HnGate_Stuart98, HVACAuGate_Brown93, HVACAvGate_Brown93, CALmGate_Destexhe98, CALhGate_Destexhe98, NAmGate_Traub91, NAhGate_Traub91, KDnGate_Traub91, MpGate_Mainen96orig, Traubs_HH_n_Gate, Traubs_HH_m_Gate, and Traubs_HH_h_Gate.

double * VIonGate::C2 = 0 [static, protected]
 

The look up table for the exponential Euler integration 'constant' $C_2(V)=(1-C_1(V))\cdot p_\infty(V)$

Reimplemented from IonGate.

Reimplemented in GVD_Gate, GVD_cT_Gate, HH_n_Gate, HH_m_Gate, HH_h_Gate, CaGate_Yamada98, MmGate_Wang98, AmGate_Hoffman97, AhGate_Hoffman97, SICmGate_Maciokas02, SIChGate_Maciokas02, AnGate_Korngreen02, AlGate_Korngreen02, KnGate_Korngreen02, KlGate_Korngreen02, NPmGate_McCormick92, MnGate_Mainen96, HnGate_Stuart98, HVACAuGate_Brown93, HVACAvGate_Brown93, CALmGate_Destexhe98, CALhGate_Destexhe98, NAmGate_Traub91, NAhGate_Traub91, KDnGate_Traub91, MpGate_Mainen96orig, Traubs_HH_n_Gate, Traubs_HH_m_Gate, and Traubs_HH_h_Gate.


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