Spike propagation in dendrites with stochastic ion channels (Diba et al. 2006)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:125385
"We investigate the effects of the stochastic nature of ion channels on the faithfulness, precision and reproducibility of electrical signal transmission in weakly active, dendritic membrane under in vitro conditions. ... We numerically simulate the effects of stochastic ion channels on the forward and backward propagation of dendritic spikes in Monte-Carlo simulations on a reconstructed layer 5 pyramidal neuron. We report that in most instances there is little variation in timing or amplitude for a single BPAP, while variable backpropagation can occur for trains of action potentials. Additionally, we find that the generation and forward propagation of dendritic Ca2+ spikes are susceptible to channel variability. This indicates limitations on computations that depend on the precise timing of Ca2+ spikes."
Reference:
1 . Diba K, Koch C, Segev I (2006) Spike propagation in dendrites with stochastic ion channels. J Comput Neurosci 20:77-84 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Channel/Receptor;
Brain Region(s)/Organism: Neocortex;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Active Dendrites; Action Potentials;
Implementer(s): Diba, Kamran [diba at andromeda.rutgers.edu];
TITLE skm95.mod  
 
COMMENT
----------------------------------------------------------------
Stochastic version of km.mod

Potassium channel, Hodgkin-Huxley style kinetics
Based on I-M (muscarinic K channel)
Slow, noninactivating

Author: Zach Mainen, Salk Institute, 1995, zach@salk.edu
19 May 2002 Kamran Diba.  Changed gamma and deterministic from GLOBAL to RANGE.
----------------------------------------------------------------
ENDCOMMENT

INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}

UNITS {
    (mA) = (milliamp)
    (mV) = (millivolt)
    (pS) = (picosiemens)
    (um) = (micron)
} 

NEURON {
    SUFFIX skm
    USEION k READ ek WRITE ik
    RANGE gk, gamma, deterministic,reff
    RANGE N,eta
    GLOBAL ninf, ntau,a,b, P_a,P_b
    GLOBAL Rb, Ra
    GLOBAL vmin, vmax, q10, temp, tadj
    GLOBAL DONT_VECTORIZE   : prevent vectorization to agree with RNG.mod
}
   
PARAMETER {
    v           (mV)
    dt      (ms)
    area
    
    gamma = 40       (pS)    : 0.03 mho/cm2
    eta = 0.25       (1/um2)                                 
    tha  = -30  (mV)        : v 1/2 for inf
    qa   = 9    (mV)        : inf slope       
    
    Ra   = 0.001    (/ms)       : max act rate  (slow)
    Rb   = 0.001    (/ms)       : max deact rate  (slow)
    
    celsius     (degC)
    temp = 23   (degC)      : original temp     
    q10  = 2.3          : temperature sensitivity
    
    deterministic = 0   : if non-zero, will use deterministic version
    vmin = -120 (mV)    : range to construct tables for
    vmax = 100  (mV)
    DONT_VECTORIZE      : required declaration
} 

ASSIGNED {
    a       (/ms)
    b       (/ms)
    ik      (mA/cm2)
    gk      (pS/um2)
    ek      (mV)
    ninf        : steady-state value
    ntau (ms)   : time constant for relaxation
    tadj

    N 
    reff    (pS/um2)
    scale_dens (pS/um2) 
    P_a     : probability of one channel making alpha transition
    P_b     : probability of one channel making beta transition
}
 

STATE {
    n         : state variable of deterministic description
    N0 N1       : N states populations
    n0_n1 n1_n0 : number of channels moving from one state to the other 
}
: ----------------------------------------------------------------
: initialization
INITIAL { 
    trates(v)
    n = ninf
    scale_dens = gamma/area
    reff = eta*gamma
    N = floor(eta*area + 0.5)
        
    N1 = floor(n * N+ 0.5)
    N0 = N-N1       : any round off into non-conducting state
    
    n0_n1 = 0
    n1_n0 = 0
}

: ----------------------------------------------------------------
: Breakpoint for each integration step
BREAKPOINT {
  SOLVE states
  
    if (deterministic) { 
        if (deterministic-1){
    gk = n*reff*tadj
    } else {
    gk = floor(n*N + 0.5) * scale_dens*tadj}
    } else{
    gk =  strap(N1) * scale_dens * tadj
    }
    ik = (1e-4) * gk * (v - ek)
} 
       

: ----------------------------------------------------------------
: states - updates number of channels in each state
PROCEDURE states() {

VERBATIM
    extern double BnlDev_RNG();
ENDVERBATIM

    trates(v)
    
    : deterministic versions of state variables
    : integrated by relaxing toward steady-state
    n = n + (1 - exp(-dt/ntau)) * (ninf-n)

    P_a = strap(a*dt)
    P_b = strap(b*dt)

    : check that will represent probabilities when used
    ChkProb( P_a)
    ChkProb( P_b)
    
    : transitions
:    if (deterministic) {
:    n0_n1 = P_a*N0
:    n1_n0 = P_b*N1
:    }
:    else{    
    n0_n1 = BnlDev_RNG(P_a, N0)
    n1_n0 = BnlDev_RNG(P_b, N1)
:    }
    : move the channels
    N0    = strap(N0 - n0_n1 + n1_n0)
    N1    = N - N0
}

PROCEDURE trates(v) {  :Computes rate and other constants at current v.
                      :Call once from HOC to initialize inf at resting v.

        TABLE ninf, ntau, a, b, tadj
    DEPEND  celsius, temp, Ra, Rb, tha, qa,q10
    FROM vmin TO vmax WITH 199

        tadj = q10^((celsius - temp)/10) 
        a = Ra * (v - tha) / (1 - exp(-(v - tha)/qa))
    a = a * tadj                    
        b = -Rb * (v - tha) / (1 - exp((v - tha)/qa))
    b = b * tadj                     
        ntau = 1/(a+b)
        ninf = a/(a+b)
}             

: ----------------------------------------------------------------
: sign trap - trap for negative values and replace with zero
FUNCTION strap(x) {
    if (x < 0) {
        strap = 0
VERBATIM
        fprintf (stderr,"skm.mod:strap: negative state");
ENDVERBATIM
    } else {
        strap = x
    }
}

: ----------------------------------------------------------------
: ChkProb - Check that number represents a probability
PROCEDURE ChkProb(p) {
  if (p < 0.0 || p > 1.0) {
VERBATIM
    fprintf(stderr, "skm.mod:ChkProb: argument not a probability.\n");
ENDVERBATIM
  }
}

Loading data, please wait...