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

 Download zip file   Auto-launch 
Help downloading and running models
Accession:45539
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.
References:
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]
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;
Gene(s):
Transmitter(s):
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
/
nrntraub
cells
dat
hoc
mod
net
README
balanal.hoc *
balcomp.hoc *
cell_templates.hoc *
clear.hoc *
finit.hoc *
fortmap.hoc *
gidcell.hoc *
gidcell.ses *
init.hoc
manage_setup.hoc
mosinit.hoc *
onecell.hoc *
onecell.ses *
prcellstate.hoc *
printcon.hoc *
savestatetest.sh
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)
	f.ropen(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)
		f.ropen(s.s)
		gmat[i].scanf(f, vmat.nrow, vmat.ncol)
	}
	gmat[5] = new Matrix(100*tf-1, numcomp+1)
	gmat[5].setcol(0,gmat[0].getcol(0))

	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] {
		rsav.append(Ra)
		insert cal  insert ar  insert cat_a
		Ra = 1e9
		c = new SEClamp(.5)
		c.dur1 = 1e9
		c.rs = .01
		clist.append(c)

		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))
			goutlist[j].append(vv)
		}

		vv = new Vector()
		vv.record(&v(.5))
		voutlist.append(vv)

		vv = vmat.getcol(i)
		vv.play(&c.amp1, tin, 1)
		vinlist.append(vv)
	}
	stdinit()
	continuerun(tf)
	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) {
goutlist[2].object(i-1).add(goutlist[3].object(i-1))
			}
			vv = vinlist.object(i-1).c.sub(y)
			gmat[j].setcol(i, gmat[j].getcol(i).mul(vv))
			goutlist[j].object(i-1).mul(area(.5)/100)
		}
	}
	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)))
			goutlist[5].object(j-1).add(goutlist[i].object(j-1))
		}
	}
	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()
   gg.erase_all()
   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) }
   gg.label(.5,.8,s.s,2,1,0,0,1)
   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)")
	xpanel()
}

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
}

Loading data, please wait...