Neuronal dendrite calcium wave model (Neymotin et al, 2015)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:168874
"... We developed a reaction-diffusion model of an apical dendrite with diffusible inositol triphosphate (IP3 ), diffusible Ca2+, IP3 receptors (IP3 Rs), endoplasmic reticulum (ER) Ca2+ leak, and ER pump (SERCA) on ER. ... At least two modes of Ca2+ wave spread have been suggested: a continuous mode based on presumed relative homogeneity of ER within the cell; and a pseudo-saltatory model where Ca2+ regeneration occurs at discrete points with diffusion between them. We compared the effects of three patterns of hypothesized IP3 R distribution: 1. continuous homogeneous ER, 2. hotspots with increased IP3R density (IP3 R hotspots), 3. areas of increased ER density (ER stacks). All three modes produced Ca2+ waves with velocities similar to those measured in vitro (~50 - 90µm /sec). ... The measures were sensitive to changes in density and spacing of IP3 R hotspots and stacks. ... An extended electrochemical model, including voltage gated calcium channels and AMPA synapses, demonstrated that membrane priming via AMPA stimulation enhances subsequent Ca2+ wave amplitude and duration. Our modeling suggests that pharmacological targeting of IP3 Rs and SERCA could allow modulation of Ca2+ wave propagation in diseases where Ca2+ dysregulation has been implicated. "
Reference:
1 . Neymotin SA, McDougal RA, Sherif MA, Fall CP, Hines ML, Lytton WW (2015) Neuronal calcium wave propagation varies with changes in endoplasmic reticulum parameters: a computer model. Neural Comput 27:898-924 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Dendrite;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA3 pyramidal GLU cell; Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell;
Channel(s): I T low threshold; I A; I K; I K,Ca; I CAN; I Sodium; I Calcium; I_SERCA; I_KD; Ca pump;
Gap Junctions:
Receptor(s): AMPA;
Gene(s):
Transmitter(s): Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Calcium waves; Reaction-diffusion;
Implementer(s): Neymotin, Sam [Samuel.Neymotin at nki.rfmh.org]; McDougal, Robert [robert.mcdougal at yale.edu]; Sherif, Mohamed [mohamed.sherif.md at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; Hippocampus CA3 pyramidal GLU cell; Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; AMPA; I T low threshold; I A; I K; I K,Ca; I CAN; I Sodium; I Calcium; I_SERCA; I_KD; Ca pump; Glutamate;
/
ca1dDemo
data
readme.txt
cagk.mod *
cal_mig.mod
can_mig.mod
cat_mig.mod
kaprox.mod *
kdrca1.mod *
km.mod *
misc.mod *
na3n.mod *
naf.mod
NMDA.mod
stats.mod *
vecst.mod *
AMPA0.cfg
AMPA150.cfg
analysisCode.py
batch.py
cawave.cfg
cawave.py
conf.py
geneval_cvode.inc *
misc.h *
netcon.inc *
nqs.hoc
nqs.py
plot_fig11.py
setup.hoc *
vector.py *
                            
: $Id: netcon.inc,v 1.16 2010/03/28 16:19:27 billl Exp $

COMMENT
USAGE: for most receptors
 *****************************************************************************
    NEURON {
      POINT_PROCESS NAME
    }

    PARAMETER {
      Cdur	= 1.08	(ms)		: transmitter duration (rising phase)
      Alpha	= 1	(/ms mM)	: forward (binding) rate
      Beta	= 0.02	(/ms)		: backward (unbinding) rate
      Erev	= -80	(mV)		: reversal potential
    }
    
    INCLUDE "netcon.inc"
 *****************************************************************************

USAGE: for NMDA receptor
 *****************************************************************************
    NEURON{ POINT_PROCESS NMDA
      RANGE B 
    }

    PARAMETER {
      mg        = 1.    (mM)     : external magnesium concentration
      Cdur	= 1.	(ms)	 : transmitter duration (rising phase)
      Alpha	= 4.	(/ms mM) : forward (binding) rate
      Beta	= 0.0067 (/ms)	 : backward (unbinding) rate 1/150
      Erev	= 0.	(mV)	 : reversal potential
    }

    ASSIGNED { B }

    INCLUDE "netcon.inc"
    : EXTRA BREAKPOINT MUST BE BELOW THE INCLUDE
    BREAKPOINT {
      rates(v)
      g = g * B : but don't really need to readjust conductance
      i = i * B : i = g*(v - Erev)
    }

    PROCEDURE rates(v(mV)) {
      TABLE B
      DEPEND mg
      FROM -100 TO 80 WITH 180
      B = 1 / (1 + Exp1(0.062 (/mV) * -v) * (mg / 3.57 (mM)))
    }
 *****************************************************************************
ENDCOMMENT

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

NEURON {
  RANGE g, Erev, fflag
  RANGE sid,cid
  NONSPECIFIC_CURRENT i
  GLOBAL Cdur, Alpha, Beta, Rinf, Rtau
}

UNITS {
  (nA) = (nanoamp)
  (mV) = (millivolt)
  (umho) = (micromho)
  (mM) = (milli/liter)
}

PARAMETER {
  fflag = 0
  sid = -1 (1) : synapse id, from cell template
  cid = -1 (1) : id of cell to which this synapse is attached
}

ASSIGNED {
  v		(mV)		: postsynaptic voltage
  i 		(nA)		: current = g*(v - Erev)
  g 		(umho)		: conductance
  Rinf				: steady state channels open
  Rtau		(ms)		: time constant of channel binding
  synon
}

STATE {Ron Roff}

INITIAL {
  PROTECT Rinf = Alpha / (Alpha + Beta)
  PROTECT Rtau = 1 / (Alpha + Beta)
  synon = 0
}

BREAKPOINT {
  SOLVE release METHOD cnexp
  g = (Ron + Roff)*1(umho)
  i = g*(v - Erev)
}

DERIVATIVE release {
  Ron' = (synon*Rinf - Ron)/Rtau
  Roff' = -Beta*Roff
}

: following supports both saturation from single input and
: summation from multiple inputs
: if spike occurs during CDur then new off time is t + CDur
: ie. transmitter concatenates but does not summate
: Note: automatic initialization of all reference args to 0 except first

NET_RECEIVE (weight, on, nspike, r0, t0 (ms)) {
  : flag is an implicit argument of NET_RECEIVE and  normally 0
  if (t>0) { : bug fix so that init doesn't send a false event
    if (flag == 0) { : a spike, so turn on if not already in a Cdur pulse
      nspike = nspike + 1
      if (!on) {
        r0 = r0*Exp1(-Beta*(t - t0))
        t0 = t
        on = 1
        synon = synon + weight
        Ron = Ron + r0
        Roff = Roff - r0
      }
      : come again in Cdur with flag = current value of nspike
      net_send(Cdur, nspike)
    }
    if (flag == nspike) { : if this associated with last spike then turn off
      r0 = weight*Rinf + (r0 - weight*Rinf)*Exp1(-(t - t0)/Rtau)
      t0 = t
      synon = synon - weight
      Ron = Ron - r0
      Roff = Roff + r0
      on = 0
    }
  }
}

FUNCTION Exp1(x) {   
  if (x < -100) {
    Exp1  = 0
  } else if (x > 100) {
    Exp1 = exp(100)
  } else{
    Exp1 = exp(x)
  }
}