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 [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 *
                            
{localloadfile("nrngui.hoc")}
{localloadfile("loadbal.hoc")}

objref gidvec, cvec, splitxlist, splitixlist, cpu, splitcplx, splitindex, bal
objref splitbres, splitbrlist
bal = new LoadBalance()

gidvec = new Vector()
cvec = new Vector()
splitxlist = new List()
splitixlist = new List()
splitbrlist = new List()
cpu = new Vector()
splitcplx = new Vector()
splitindex = new Vector()
splitbres = new Vector()

proc rdat() {local i, j, k, n1, n2, n3, c, n3 localobj f, vecx, vecix, vecb
	f = new File()
	f.ropen($s1)
	
	n1 = f.scanvar()
	for i=0, n1-1 {
		n2 = f.scanvar()
		for j=0, n2-1 {
			f.scanvar()
			gid = f.scanvar()
			c = f.scanvar()
			n3 = f.scanvar()
			gidvec.append(gid)
			cvec.append(c)
			vecx = new Vector(n3)
			vecix = new Vector(n3)
			vecb = new Vector(n3)
			for k = 0, n3-1 {
				vecx.x[k] = f.scanvar()
				vecix.x[k] = f.scanvar()
				vecb.x[k] = f.scanvar()
			}
			splitxlist.append(vecx)
			splitixlist.append(vecix)
			splitbrlist.append(vecb)
		}
	}
}


func balance() {local i, err  localobj f, si, s
	s =new String()
	sprint(s.s, "%s.dat", $s2)
	rdat(s.s)
	err = bal.distrib($1, cvec, splitxlist, splitixlist, \
		cpu, splitcplx, splitindex, splitbrlist, splitbres)
	f = new File()
	sprint(s.s, "%s.%d", $s2, $1)
	f.wopen(s.s)
	f.printf("%d\n", gidvec.size)
	si = cpu.sortindex
	for i=0, gidvec.size-1 {
		f.printf("%d %d %d %d %d %d\n", cpu.x[si.x[i]], \
			gidvec.x[si.x[i]], splitindex.x[si.x[i]], \
			splitbres.x[si.x[i]], \
			splitcplx.x[si.x[i]], cvec.x[si.x[i]], \
			bal.cplx.x[cpu.x[si.x[i]]] )
	}
	f.close()
	return err
}

objref pc
pc = new ParallelContext()
ncpu = 32*2^(pc.id)
percenterr = balance(ncpu, "balance")
//bal.cplx.printf
//print cvec.sum
//print bal.cplx.sum
{printf("ncpu=%d load balance error = %d%% average load = %d   max load = %d\n", ncpu, percenterr, cvec.sum/ncpu, bal.cplx.max)}

proc chkbal() {local i localobj ix, split
	ix = new Vector()
	split= new Vector()
	for i=0, cpu.max-1 {
		ix.indvwhere(cpu, "==", i)
		split.index(splitindex, ix)
		if (split.indvwhere("!=", 0).size > 1) {
			printf("cpu %d with %d\n", i, split.size)
		}
	}
}
chkbal()
{pc.runworker()}
{pc.done()}
quit()