Paired turbulence and light effect on calcium increase in Hermissenda (Blackwell 2004)

 Download zip file 
Help downloading and running models
The sea slug Hermissenda learns to associate light and hair cell stimulation, but not when the stimuli are temporally uncorrelated...These issues were addressed using a multi-compartmental computer model of phototransduction, calcium dynamics, and ionic currents of the Hermissenda photoreceptor...simulations show that a potassium leak channel, which closes with an increase in calcium, is required to produce both the untrained LLD and the enhanced LLD due to the decrease in voltage dependent potassium currents.
1 . Blackwell KT (2004) Paired turbulence and light do not produce a supralinear calcium increase in Hermissenda. J Comput Neurosci 17:81-99 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Electrogenic pump;
Brain Region(s)/Organism:
Cell Type(s): Hermissenda photoreceptor Type B;
Channel(s): I A; I K,leak; I h; I K,Ca; I Sodium; I Calcium; I Potassium;
Gap Junctions:
Receptor(s): GabaA; GabaB; IP3;
Transmitter(s): Gaba;
Simulation Environment: Chemesis;
Model Concept(s): Temporal Pattern Generation; Invertebrate; Signaling pathways; Calcium dynamics;
Implementer(s): Blackwell, Avrama [avrama at];
Search NeuronDB for information about:  GabaA; GabaB; IP3; I A; I K,leak; I h; I K,Ca; I Sodium; I Calcium; I Potassium; Gaba;
/* calcium units are mmole */
function cytpumpcomp (cytcomp, extracell,pumptype, ncyl, vmax, km, power, unit)
float vmax, km, unit
str cytcomp, pumptype, extracell
int ncyl

float area, pumprate
int cyl

  for (cyl=1; cyl<=ncyl; cyl=cyl+1)

/* compute value of cytosolic pump from area */

	area = {getfield {cytcomp}[{cyl}] SAout}
	pumprate = vmax *  area

/* create cytosolic mmpump */

	create mmpump {cytcomp}[{cyl}]/{pumptype}
	setfield ^ \
		power {power} \
		half_conc {km} \
		max_rate {pumprate} \
		units {unit}

	addmsg {cytcomp}[{cyl}] {cytcomp}[{cyl}]/{pumptype} CONC Conc
	addmsg {cytcomp}[{cyl}]/{pumptype} {cytcomp}[{cyl}] RXN0MOLES moles_out
/* create leak from extracellular space to cytoplasm, if not already created */

     if (!{exists {cytcomp}[{cyl}]/cytleak})
	create cicrflux {cytcomp}[{cyl}]/cytleak
	setfield ^ power 1 maxflux 1 units {unit}

	addmsg {cytcomp}[{cyl}] {cytcomp}[{cyl}]/cytleak CONC1 Conc
	addmsg {extracell} {cytcomp}[{cyl}]/cytleak CONC2 Conc
	addmsg {cytcomp}[{cyl}] {cytcomp}[{cyl}]/cytleak IP3R 1
	addmsg {cytcomp}[{cyl}]/cytleak {cytcomp}[{cyl}] RXN0MOLES deltaflux1


/* calcium units are mmole */
function ncxcomp (cacomp, vcomp, extracell, startcyl, endcyl, vmax, kmca)
str cacomp, vcomp, extracell
int startcyl, endcyl
float vmax, kmca

float pumprate, area
int cyl

  for (cyl=startcyl; cyl<=endcyl; cyl=cyl+1)

   /* compute value of cytosolic pump from area */
    area = {getfield {cacomp}[{cyl}] SAout}
	pumprate = {vmax} *  area

   /* create cytosolic ncx */
    create ncx {cacomp}[{cyl}]/ncx
    setfield ^ \
        T 293 \
        ncxtype 0 \
        Na_msg 0 \
        stoich 4 \
        hill 1 \
        Vunits 1e-3 \
        Na_int 40 \
        Na_ext 440 \
        Kmca {kmca} \
        Gbar {pumprate}

    addmsg {cacomp}[{cyl}] {cacomp}[{cyl}]/ncx CAINT Conc
    addmsg {extracell} {cacomp}[{cyl}]/ncx CAEXT Conc
    addmsg {vcomp} {cacomp}[{cyl}]/ncx VM Vm
    addmsg {cacomp}[{cyl}]/ncx {cacomp}[{cyl}] CURRENT valence I
    addmsg {cacomp}[{cyl}]/ncx {vcomp} CHANNEL Gcurrent Vnaca
function setcytpumpleak(cytpath, excell, ncyls, Vpmca, Kpmca, Vncx, Kncx)
  str cytpath, excell
  float Vpmca, Kpmca, Vncx, Kncx
  int ncyls

  float ncxrate, pmcarate
  float pca, tca, Iflux
  float leak1, leak2, leak, leakrate
  float unit
  float area, Ceq, Caext
  int cyl

  for (cyl=1; cyl<= ncyls; cyl=cyl+1)

   /* first area and equilibrium calcium of compartment.*/
    	area = {getfield {cytpath}[{cyl}] SAout}
    	Ceq = {getfield {cytpath}[{cyl}] Cinit}
	Caext = {getfield {excell} Cinit}
	leak1 = 0
	leak2 = 0

   /* next, set value of pmca pump and ncx exchange */

	pmcarate = Vpmca*{area}
	if ({exists {cytpath}[{cyl}]/pmca})
   		setfield {cytpath}[{cyl}]/pmca max_rate {pmcarate} half_conc {Kpmca}

	ncxrate = Vncx*{area}
	if ({exists {cytpath}[{cyl}]/ncx})
	   	setfield {cytpath}[{cyl}]/ncx Gbar {ncxrate} Kmca {Kncx}

    if (cyl==1)
        echo "IN setcytpumpleak" "Ceq=" {Ceq} "kpmca=" {Kpmca} "kncx=" {Kncx}
        echo {cytpath}[{cyl}] "area="{area} "Vpmca="{pmcarate} "Vncx="{ncxrate}

/* reset will compute the resting values of the pump */
    call {cytpath}[{cyl}]/pmca RESET
    call {cytpath}[{cyl}]/ncx RESET

/* compute the molecules of calcium pumped out at rest */

    leak1 = {getfield {cytpath}[{cyl}]/pmca moles_out}
    leak2 = -1.02*{getfield {cytpath}[{cyl}]/ncx I}*1e-12*6.023e23/(-2*96485)

   /* next, compute flux from calcium currents */
	if ({exists {cytpath}[{cyl}]/persist_ghk_ica})
		pca = {getfield {cytpath}[{cyl}]/persist_ghk_ica I}
		pca = 0

	if ({exists {cytpath}[{cyl}]/trans_ghk_ica})
		tca = {getfield {cytpath}[{cyl}]/trans_ghk_ica I}
		tca = 0

	Iflux = -(pca+tca) *1e-12*6.023e23/(2*96495)
    if (cyl==1)
        echo "pca=" {pca} "tca=" {tca} "flux=" {Iflux}

   /* compute Leak value s.t. when C = Ceq = Cinit, leak + Ica = total pump value */
	unit = {getfield {cytpath}[{cyl}]/cytleak units}
	leak = -(leak1 + leak2 + Iflux)/(Caext - Ceq)/({unit}*6.023e23)

	if (leak < 0); leak=0; end
    leakrate = {leak} / {area}
    if (cyl==1)
        echo "leak1="{leak1} "leak2="{leak2} "maxflux="{leak} "leakrate="{leakrate}
   	setfield {cytpath}[{cyl}]/cytleak maxflux {leak}