Thalamic interneuron multicompartment model (Zhu et al. 1999)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:116862
This is an attempt to recreate a set of simulations originally performed in 1994 under NEURON version 3 and last tested in 1999. When I ran it now it did not behave exactly the same as previously which I suspect is due to some minor mod file changes on my side rather than due to any differences among versions. After playing around with the parameters a little bit I was able to get something that looks generally like a physiological trace in J Neurophysiol, 81:702--711, 1999, fig. 8b top trace. This sad preface is simply offered in order to encourage anyone who is interested in this model to make and post fixes. I'm happy to help out. Simulation by JJ Zhu To run nrnivmodl nrngui.hoc
References:
1 . Zhu JJ, Uhlrich DJ, Lytton WW (1999) Burst firing in identified rat geniculate interneurons. Neuroscience 91:1445-60 [PubMed]
2 . Zhu JJ, Lytton WW, Xue JT, Uhlrich DJ (1999) An intrinsic oscillation in interneurons of the rat lateral geniculate nucleus. J Neurophysiol 81:702-11 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Thalamus;
Cell Type(s):
Channel(s): I Na,t; I L high threshold; I T low threshold; I K,leak; I h; I K,Ca; I CAN;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Bursting; Oscillations;
Implementer(s): Zhu, J. Julius [jjzhu at virginia.edu];
Search NeuronDB for information about:  I Na,t; I L high threshold; I T low threshold; I K,leak; I h; I K,Ca; I CAN;
/
b09jan13
readme.html
AMPA.mod
cadecay.mod
clampex.mod *
cp.mod *
cp2.mod *
GABAA.mod
GABAB.mod
HH2.mod *
Iahp.mod *
Ican.mod *
Ih.mod *
IL.mod
IL3.mod *
IT.mod *
IT2.mod *
kdr2.mod *
kleak.mod *
kmbg.mod
naf2.mod *
nap.mod *
NMDA.mod
nthh.mod *
ntIh.mod *
ntleak.mod
ntt.mod *
pregencv.mod
vecst.mod
batch_.hoc
bg_cvode.inc
misc.h
mosinit.hoc *
netcon.inc
screenshot.jpg
                            
: $Id: netcon.inc,v 1.13 2008/02/14 20:47:20 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
  NONSPECIFIC_CURRENT i
  GLOBAL Cdur, Alpha, Beta, Rinf, Rtau
}

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

PARAMETER {
  fflag = 0
}

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 {
  Rinf = Alpha / (Alpha + Beta)
  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)
  }
}

Loading data, please wait...