A single column thalamocortical network model (Traub et al 2005)

 Download zip file   Auto-launch 
Help downloading and running models
To better understand population phenomena in thalamocortical neuronal ensembles, we have constructed a preliminary network model with 3,560 multicompartment neurons (containing soma, branching dendrites, and a portion of axon). Types of neurons included superficial pyramids (with regular spiking [RS] and fast rhythmic bursting [FRB] firing behaviors); RS spiny stellates; fast spiking (FS) interneurons, with basket-type and axoaxonic types of connectivity, and located in superficial and deep cortical layers; low threshold spiking (LTS) interneurons, that contacted principal cell dendrites; deep pyramids, that could have RS or intrinsic bursting (IB) firing behaviors, and endowed either with non-tufted apical dendrites or with long tufted apical dendrites; thalamocortical relay (TCR) cells; and nucleus reticularis (nRT) cells. To the extent possible, both electrophysiology and synaptic connectivity were based on published data, although many arbitrary choices were necessary.
1 . Traub RD, Contreras D, Cunningham MO, Murray H, LeBeau FE, Roopun A, Bibbig A, Wilent WB, Higley MJ, Whittington MA (2005) Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. J Neurophysiol 93:2194-232 [PubMed]
2 . Traub RD, Contreras D, Whittington MA (2005) Combined experimental/simulation studies of cellular and network mechanisms of epileptogenesis in vitro and in vivo. J Clin Neurophysiol 22:330-42 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Neocortex; Thalamus;
Cell Type(s): Thalamus geniculate nucleus/lateral principal GLU cell; Thalamus reticular nucleus GABA cell; Neocortex U1 L6 pyramidal corticalthalamic GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Neocortex fast spiking (FS) interneuron; Neocortex spiking regular (RS) neuron; Neocortex spiking low threshold (LTS) neuron;
Channel(s): I Na,p; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I Calcium; I A, slow;
Gap Junctions: Gap junctions;
Receptor(s): GabaA; AMPA; NMDA;
Simulation Environment: NEURON; FORTRAN;
Model Concept(s): Activity Patterns; Bursting; Temporal Pattern Generation; Oscillations; Simplified Models; Epilepsy; Sleep; Spindles;
Implementer(s): Traub, Roger D ;
Search NeuronDB for information about:  Thalamus geniculate nucleus/lateral principal GLU cell; Thalamus reticular nucleus GABA cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Neocortex U1 L6 pyramidal corticalthalamic GLU cell; GabaA; AMPA; NMDA; I Na,p; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I Calcium; I A, slow;
Files displayed below are from the implementation
balanal.hoc *
balcomp.hoc *
cell_templates.hoc *
clear.hoc *
finit.hoc *
fortmap.hoc *
gidcell.hoc *
gidcell.ses *
mosinit.hoc *
onecell.hoc *
onecell.ses *
prcellstate.hoc *
printcon.hoc *
spkplt.hoc *
vclampg.hoc *
vcompclamp.hoc *
vcompsim.hoc *
objref gnamelist
gnamelist = new List()
gnamelist.append(new String("gna"))
gnamelist.append(new String("gk"))
gnamelist.append(new String("gca"))
gnamelist.append(new String("gca_high"))
gnamelist.append(new String("gar"))
gnamelist.append(new String("total"))

objref vmat, gmat[gnamelist.count], voutlist, vinlist
objref goutlist[gnamelist.count], tout, tin

proc vclampg() { local i, j, y, numcomp  localobj vv, f, s, clist, c, rsav, cdvdt
	s = new String()
	voutlist = new List()
	vinlist = new List()
	for i=0, gnamelist.count-1 {
		goutlist[i] = new List()
	clist = new List()

	f = new File()
	numcomp=0 forsec cell.all numcomp += 1
	vmat = new Matrix(100*tf-1, numcomp+1)
	classname(cell, s.s)
	sprint(s.s, "../p2c/state/v_%s.dat", s.s)
	vmat.scanf(f, vmat.nrow, vmat.ncol)

	for i=0, gnamelist.count-2 {
		gmat[i] = new Matrix(100*tf-1, numcomp+1)
		classname(cell, s.s)
		sprint(s.s, "../p2c/state/%s_%s.dat", gnamelist.object(i).s, s.s)
		gmat[i].scanf(f, vmat.nrow, vmat.ncol)
	gmat[5] = new Matrix(100*tf-1, numcomp+1)

	i = 1
	tout = new Vector()
	cell.comp[1] {tout.record(&t)}
	tin = vmat.getcol(0)
	rsav = new Vector()
	for i=1, vmat.ncol-1 cell.comp[i] {
		insert cal  insert ar  insert cat_a
		Ra = 1e9
		c = new SEClamp(.5)
		c.dur1 = 1e9
		c.rs = .01

		for j=0, gnamelist.count-2 {
			vv = new Vector()
			if (j == 0) vv.record(&ina(.5))
			if (j == 1) vv.record(&ik(.5))
			if (j == 2) vv.record(&i_cat_a(.5))
			if (j == 3) vv.record(&ica_cal(.5))
			if (j == 4) vv.record(&i_ar(.5))

		vv = new Vector()

		vv = vmat.getcol(i)
		vv.play(&c.amp1, tin, 1)
	for i=1, vmat.ncol-1 cell.comp[i] {
		for j=0, gnamelist.count-2 {
			if (j == 0) y = ena(.5)
			if (j == 1) y = ek(.5)
			if (j == 2) y = 125
			if (j == 3) y = 125
			if (j == 4) y = erev_ar(.5)
			if (j == 2) {
			vv = vinlist.object(i-1).c.sub(y)
			gmat[j].setcol(i, gmat[j].getcol(i).mul(vv))
	for j=1, gmat[0].ncol-1 {
		goutlist[5].append(new Vector(goutlist[0].object(j-1).size))
		for case(&i, 0, 1, 2, 4) {
			gmat[5].setcol(j, gmat[5].getcol(j).add(gmat[i].getcol(j)))
	for i=1, vmat.ncol-1 cell.comp[i] {
		Ra = rsav.x[i-1] // but no longer is traub_exact
	seefv(2, 0)
proc seefv() {localobj s
   s = new String()
   seetype = $2
   if (seetype > 5) { seetype = 5 }
   if (seetype < 0) { seetype = 0 }
   seewhich = $1
   if (seewhich > voutlist.count) {seewhich = voutlist.count}
   if (seewhich < 1) { seewhich = 1 }
   cell.comp[seewhich] { sprint(s.s,"%s(.5) %s", secname(), gnamelist.object(seetype).s) }
   gmat[seetype].getcol(seewhich).line(gg, tin, 2, 1)
   goutlist[seetype].object(seewhich-1).line(gg, tout) 

proc mkseefv() {
	xpanel("compare compartment currents")
	xvalue("type na=0 k=1", "seetype", 1, "seefv(seewhich, seetype)")
	xvalue("which", "seewhich", 1, "seefv(seewhich, seetype)")

func maxdiff() {local i localobj gf, gn, r
	gf = gmat[$1]
	gn = goutlist[$1]
	r = new Vector(gn.count)
	for i=0,r.size-1 {
		r.x[i] = gn.object(i).c.interpolate(tin, tout).sub(gf.getcol(i+1)).sumsq
	print r.max
	return r.max_ind