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

 Download zip file 
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 [rtraub at us.ibm.com];
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 *
                            
load_file("nrngui.hoc")
load_file("hoc/defvar.hoc")
load_file("hoc/traubcon.hoc")
load_file("fortmap.hoc")
load_file("cell_templates.hoc")

// til the shift bug in the mod files are fixed (table depends on range variable)
usetable_naf2 = 0
usetable_naf = 0
usetable_napf_spinstell = 0
usetable_napf_tcr = 0

objref runinfo_, choice_, cell, nil, stim1, stim2, mchoice_
runinfo_ = new List()
strdef tstr1, tstr2
for i=1,14 {getstr(tstr1) runinfo_.append(new String(tstr1))}
deepaxax	0 0.4
deepbask 	0 0.3
deepLTS		0 0.4
nontuftRS	0 0.8
nRT		0 0.3
spinstell	0 -0.25 10 0.25
supaxax		0 0.4
supbask		0 0.4
supLTS		0 0.4
suppyrFRB	0 0.0 10 0.4
suppyrRS	0 0.0 5 0.75
TCR		0 -0.9 100 0.5
tuftIB		0 0 10 1.5
tuftRS		0 -0.4 50 0.8

//for i=0, runinfo_.count-1 {print runinfo_.object(i).s}

proc mkpanel() {local i
	exact_ = 0  normal_ = 1
	choice_ = new Vector(runinfo_.count)
	xpanel("Cell Run")
	for i=0, runinfo_.count-1 {
		sscanf(runinfo_.object(i).s, "%s", tstr1)
		sprint(tstr2, "runcell(%d) run()", i)
		xcheckbox(tstr1, &choice_.x[i], tstr2)
	}
	xlabel("")
	xcheckbox("NEURON style ri", &normal_, "exact(0)")
	xcheckbox("Exact traub style ri", &exact_, "exact(1)")
	if (name_declared("showtstspk")) {
		xlabel("")
		xbutton("Raster for test sim", "showtstspk()")
	}
	xpanel(20, 80, 0)
}
mkpanel()

proc mkpanel2() {local i
	exact_ = 0  normal_ = 1
	mchoice_ = new Vector(runinfo_.count)
	xpanel("Cell Make")
	for i=0, runinfo_.count-1 {
		sscanf(runinfo_.object(i).s, "%s", tstr1)
		sprint(tstr2, "mkcell(%d) run()", i)
		xcheckbox(tstr1, &mchoice_.x[i], tstr2)
	}
	xlabel("")
	xpanel(20, 500, 0)
}
//mkpanel2()

load_file("onecell.ses")

proc exact() {
	normal_ = ($1 == 0)
	exact_ = ($1 != 0)
	runcell(cellnum)
}

proc runcell() {local i, t1,a1,t2,a2  localobj vvec, tvec, f, g
	cellnum = $1
	choice_.fill(0)
	choice_.x[$1] = 1
	t2 = 1e9   a2 = 0
	i = sscanf(runinfo_.object($1).s, "%s %lf %lf %lf %lf", tstr1, \
		&t1, &a1, &t2, &a2)
//	print tstr1, t1, a1, t2, a2
	cell = nil
	sprint(tstr2, "cell = new %s()", tstr1)
	execute(tstr2)
	access cell.comp[1]
	define_shape()
	g = Graph[0]
	g.erase_all
	f = new File()
	sprint(tstr2, "dat/%s_v_F.dat", tstr1)
//	sprint(tstr2, "../p2c/data/GROUCHO110.%s", tstr1)
	clipboard_retrieve(tstr2)
	tvec = hoc_obj_[1]
	vvec = hoc_obj_[0]
	vvec.line(g, tvec, 2, 1)
	g.exec_menu("Keep Lines")
	g.exec_menu("Keep Lines")
	stim1 = nil
	stim2 = nil
	stim1 = new IClamp(.5)
	stim2 = new IClamp(.5)
	stim1.del = t1  stim2.del = t2
	stim1.amp = .3  stim2.amp = 0
	stim1.dur = 50  stim2.dur = 1e9
	sprint(tstr2, "cell.comp[%d].v(.5)", cell.presyn_comp)
	g.addvar(tstr2)
	if (exact_) { traubexact(cell, tci) }
}

runcell(0)

objref cell2

proc mkcell() {local i, t1,a1,t2,a2  localobj vvec, tvec, f, g
	cellnum = $1
	mchoice_.fill(0)
	mchoice_.x[$1] = 1
	t2 = 1e9   a2 = 0
	i = sscanf(runinfo_.object($1).s, "%s %lf %lf %lf %lf", tstr1, \
		&t1, &a1, &t2, &a2)
//	print tstr1, t1, a1, t2, a2
	cell2 = nil
	sprint(tstr2, "cell2 = new %s()", tstr1)
	execute(tstr2)
}

objref fih0_, fih1_
fih0_ = new FInitializeHandler(0, "finit0()")
fih1_ = new FInitializeHandler(1, "finit1()")

proc finit0() { local ix
	if (cell != nil) {
		ix = cell.type()
		forsec cell.all { v = type_vinit.x[ix] }
		if (ix == TCRtype) {
			forsec cell.all { v = -85 }
		}
	}
	if (cell2 != nil) {
		ix = cell2.type()
		forsec cell2.all { v = type_vinit.x[ix] }
		if (ix == TCRtype) {
			forsec cell2.all { v = -85 }
		}
	}
}

proc finit1() { local ix
	if (cell != nil) {
		ix = cell.type()
		if (ix == TCRtype) {
			forsec cell.all { v = type_vinit.x[ix] }
		}
	}
	if (cell2 != nil) {
		ix = cell2.type()
		forsec cell2.all { v = type_vinit.x[ix] }
		if (ix == TCRtype) {
			forsec cell2.all { v = type_vinit.x[ix] }
		}
	}
}


Loading data, please wait...