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.
Reference:
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;
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 *
                            
use_load_balance = (load_balance_phase == 3 || load_balance_phase == 5 || load_balance_phase == 7)

{load_file("nrngui.hoc")}
{localloadfile("fortmap.hoc")}
{localloadfile("hoc/parlib.hoc")}
if (fakerank >= 0) pnm.myid += fakerank
if (fakenhost >= 0) pnm.nhost = fakenhost
// til the shift bug in the mod files are fixed (table depends on range variable)
if (1) {
usetable_naf2 = 0
usetable_naf = 0
usetable_naf_tcr = 0
usetable_napf = 0
usetable_napf_spinstell = 0
usetable_napf_tcr = 0
}

calculate_mechanism_complexity(load_balance_phase == 1)
if (load_balance_phase == 1) { pc.runworker() pc.done() quit() }

if (load_balance_phase == 3) {
	read_load_balance_info("splitbal")
}else if (load_balance_phase == 5) {
	read_wholecell_info(wholecell_prefix)
}else if (load_balance_phase == 7) {
	read_multisplit_info(multisplit_prefix)
}

{localloadfile("finit.hoc")}

serial = 0 // override serial set in parlib.hoc
pmesg = 1 && (pc.id == 0)
small_model = 0 // 0 for full model, set to 1 for 40 cells each type
if (use_load_balance) { use_traubexact = 0 } // cannot use with load balance
{localloadfile("hoc/traubcon.hoc")}

{localloadfile("cell_templates.hoc")}
{localloadfile("net/network_specification_interface.hoc")}
if (!serial) {localloadfile("hoc/parlib2.hoc")}
{localloadfile("net/serial_or_par_wrapper.hoc")}
{localloadfile("net/groucho.hoc")}

proc cxrun() {localobj f
	f = new File()
	for pnm.serialize() {
		f.aopen("cxrun.dat")
		f.printf("%d %g\n", pnm.myid, tdat_.x[5])		
		printf("%d %g\n", pnm.myid, tdat_.x[5])		
		f.close
	}
	execerror("stop", "")
}

if (load_balance_phase == 2) {
	print_single_split_load_balance_info("splitbal.dat")
	pc.runworker() pc.done() quit()
}else if (load_balance_phase == 4) {
	print_wholecell_info(wholecell_prefix)
	pc.runworker() pc.done() quit()
}else if (load_balance_phase == 6) {
	print_multisplit_info(multisplit_prefix, multisplit_nhost)
	//execerror("stop", "")
	pc.runworker() pc.done() quit()
}else{
	print_load_balance_info(0)
	if (fakerank >= 0) {cxrun() pc.runworker() pc.done() quit()}
}

want_all_spikes()
mkhist(50)

objref fihprog_
if (pc.id == 0 && pc.nhost < 20) fihprog_ = new FInitializeHandler("progress()")
proc progress() {
	print "t=",t
	cvode.event(t+1, "progress()")
}

if (nthread > 1 && pc.nhost == 1) { pc.nthread(nthread, 1) }

if (use_traubexact) {
	localloadfile("hoc/traubcon_net.hoc")
	if (pc.id == 0) {
		print "before setting traub exact connection coefficients, setuptime = ", startsw() - setuptime
	}
	define_shape() // force all internal structures to be valid
	reset_connection_coefficients()
}

proc methods() {
	pc.spike_compress(spike_compress, spike_compress != 0, multisend)
	cvode.queue_mode(spike_compress != 0, selfevents)
	cvode.cache_efficient(cacheeffic)
}
methods()

if (load_balance_phase == 7) { pc.multisplit() }

setuptime = startsw() - setuptime
if (pc.id == 0) {print "SetupTime: ", setuptime}