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 *
                            
setuptime = startsw()
{xopen("hoc/defvar.hoc")}

// load balancing implies several runs.
// 0) load balancing just plain off (but will read mcomplex.dat if exists)
// 1) create a mcomplex.dat file (only one cpu needed)
// 2) create single split balance.dat file (any number of cpus can be used)
//  manually: run the balcomp program to create balance.ncpu files
// 3) run with single split load balancing on (ncpu corresponding to files from balcomp)
// add more for whole cell and multisplit load balancing
// 4) create whole cell load balance file
// 5) run with whole cell load balance file
// 6) create multisplit load balance information file
// 7) run using multisplit load balance
default_var("load_balance_phase", 0)

default_var("one_tenth_ncell", 1)
default_var("use_gap", 0)
default_var("use_ectopic", 1)
default_var("use_inject", 1)
default_var("awake", 1)
default_var("default_delay", 0.5)
default_var("ranseedbase", 1)
default_var("use_traubexact", 0) // will be reset to 0 if load balance
default_var("wholecell_prefix", "cxwhole")
default_var("multisplit_prefix", "cx")
default_var("multisplit_nhost", 256)
default_var("msoptfactor", 0.8)
default_var("nthread", 1)
default_var("savestatetest", 0)
default_var("coreneuron", 0)

default_var("spike_compress", 5)
default_var("cacheeffic", 1)  // for multisplit it is always 1
default_var("multisend", 0)
default_var("selfevents", 0)

default_var("fakerank", -1)
default_var("fakenhost", -1)

gfac_AMPA = 1
gfac_NMDA = 1
gfac_GABAA = 1

use_p2c_net_connections = 0 // not 0, requires p2c emitted  map and compmap files

{localloadfile("manage_setup.hoc")}

steps_per_ms = 40
dt = .025
secondorder = 2
default_var("mytstop", 1000)
tstop = mytstop


//{load_file("balanal.hoc")}
//if (pc.nhost >= 128) {thread_per_piece()}

if (0) { pc.runworker()  pc.done() quit() }

//{finitialize(-65) cvode_local(1) cvode.atol(1e-4)} // the finitialze avoids /0 in BREAKPOINT

if (coreneuron) {
    if (nrnpython("")) {
        nrnpython("from neuron import coreneuron")
        nrnpython("coreneuron.enable = True")
        nrnpython("coreneuron.permute = 1")
    } else {
        execerror("coreneuron not installed")
    }
}

prun()

//if (pc.nhost >= 128) {balanalfile("balanal.dat")}

endtime = startsw()

if (pc.id == 0) { print "tstop = ", tstop }
if (pc.id == 0) { print "RunTime: ", runtime }

//{localloadfile("prcellstate.hoc")}
proc pcs() {local spgid
	spgid = thishost_gid($1)
	if (spgid >= 0) prcellstate(load_balance_phase, spgid)
	pc.runworker()  pc.done() quit()
}
//pcs(103)

spike2file()

if (pc.nhost > 5) {cvode_active(1)} // to count equations
{pc.runworker()}

print "Maximum integration interval: ", mindelay()
getstat()
prhist()
print_spike_stat_info()

{pc.done()}

perf2file()
endtime = startsw() - endtime
print "endtime ", endtime

if (!serial) { quit() }