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
net
durand.hoc *
groucho.hoc
groucho_gapbld.hoc *
groucho_gapbld_mix.hoc *
network_specification_interface.hoc *
serial_or_par_wrapper.hoc *
synaptic_compmap_construct.hoc *
synaptic_map_construct.hoc *
                            
objref compmap, allow, x

obfunc synaptic_compmap_construct () { local nrow, ncol  localobj f, s, tmpmap
/*
***************************************************************
Parameter, Description:
$1 thisno, maybe this double will be replaced in NEURON?
$2 num_postsynaptic_cells,  another double
// returned compmap(i,j), Matrix object=compartment #on postsyn cell j for ith presyn input
$3 num_presyninputs_perpostsyn_cell, a double 
$4 num_allowcomp, another double
$o5 allow, a Vector object of allowed postsyn compartments
$6 display, another double

c Construct a map of compartments at connections of one presynaptic
c cell to type to a postsynaptic cell type.
c compmap (i,j) = compartment number on postsynaptic cell j of its
c  i'th presynaptic input.
c display is an integer flag.  If display = 1, print compmap

        INTEGER thisno,
     &   num_postsynaptic_cells,
     &   num_presyninputs_perpostsyn_cell,
     &   compmap (num_presyninputs_perpostsyn_cell, 
     &                  num_postsynaptic_cells),
     &   num_allowcomp, allow(num_allowcomp)
c num_allowcomp = number of different allowed compartments
c allow = list of allowed compartments
        INTEGER i,j,k,l,m,n,o,p
        INTEGER display

        double precision seed, x(1)
***************************************************************
*/
//	print "arrived"
//	objref seed
	seed = new Vector()
        seed.append(377.e0)

        num_postsynaptic_cells = $2
	ncol=$2
        num_presyninputs_perpostsyn_cell = $3
	nrow=$3
	num_allowcomp = $4
	objref allow
	allow = $o5
	display = $6

	objref compmap
	compmap = new Matrix(num_presyninputs_perpostsyn_cell+1, num_postsynaptic_cells+1)
  if (!use_p2c_net_connections) {
//            map = 0
            k = 1
// print "num_postsynaptic_cells, num_presyninputs_perpostsyn_cell = ",num_postsynaptic_cells, num_presyninputs_perpostsyn_cell
// print "matrix size = ",compmap.nrow(),compmap.ncol()

        for ii = 1, num_postsynaptic_cells {
        for jj = 1, num_presyninputs_perpostsyn_cell {
            x = durand (seed, k, x)
// c This defines a compartment     
           LL = int ( x.x[0] * (num_allowcomp) ) + 1
//	 print "jj,ii: ",jj,ii, " LL=",LL
        if (LL > num_allowcomp) {
		print " unnexpected boundary issue in synaptic_compmap_construct()"
		LL = num_allowcomp
	}
// print allow.x(L)
           compmap.x[jj][ii] = allow.x[LL]

        }
        }

	thisno = $1
// c Possibly print out map when done.
       if ((display == 1) && (thisno == 0)) {
	print "SYNAPTIC COMPARTMENT MAP "
        for i = 1, num_postsynaptic_cells {
         printf("%6d %6d %6d\n", compmap.x(1,i), compmap.x(2,i), \
         compmap.x(num_presyninputs_perpostsyn_cell,i))               

        }
       }
  }else{
	// read from file created by port2colossus
	s = new String()
	sprint(s.s, "../../p2c/compmap/%s.dat", $s7)
//printf("%s %d %d\n", s.s, nrow, ncol)
	f = new File()
	f.ropen(s.s)
	tmpmap = new Matrix(ncol, nrow) // need to transpose
	tmpmap.scanf(f, ncol, nrow)
	tmpmap = tmpmap.transpose
	tmpmap.bcopy(0,0,nrow, ncol, 1, 1, compmap)
  }
       return compmap
}