Parametric computation and persistent gamma in a cortical model (Chambers et al. 2012)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:144579
Using the Traub et al (2005) model of the cortex we determined how 33 synaptic strength parameters control gamma oscillations. We used fractional factorial design to reduce the number of runs required to 4096. We found an expected multiplicative interaction between parameters.
Reference:
1 . Chambers JD, Bethwaite B, Diamond NT, Peachey T, Abramson D, Petrou S, Thomas EA (2012) Parametric computation predicts a multiplicative interaction between synaptic strength parameters that control gamma oscillations. Front Comput Neurosci 6:53 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Axon; Synapse; Channel/Receptor; Dendrite;
Brain Region(s)/Organism:
Cell Type(s): Neocortex V1 L6 pyramidal corticothalamic GLU cell; Neocortex V1 L2/6 pyramidal intratelencephalic GLU cell; Neocortex V1 interneuron basket PV GABA cell; Neocortex fast spiking (FS) interneuron; Neocortex spiny stellate cell; Neocortex spiking regular (RS) neuron; Neocortex spiking low threshold (LTS) neuron;
Channel(s): I A; I K; I K,leak; I K,Ca; I Calcium; I_K,Na;
Gap Junctions: Gap junctions;
Receptor(s): GabaA; AMPA; NMDA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Oscillations; Parameter sensitivity;
Implementer(s): Thomas, Evan [evan at evan-thomas.net]; Chambers, Jordan [jordandchambers at gmail.com];
Search NeuronDB for information about:  Neocortex V1 L6 pyramidal corticothalamic GLU cell; Neocortex V1 L2/6 pyramidal intratelencephalic GLU cell; Neocortex V1 interneuron basket PV GABA cell; GabaA; AMPA; NMDA; I A; I K; I K,leak; I K,Ca; I Calcium; I_K,Na; Gaba; Glutamate;
/
FRBGamma
net
durand.hoc *
groucho.hoc
groucho_gapbld.hoc *
groucho_gapbld_mix.hoc *
groucho_traub.hoc
network_specification_interface.hoc *
serial_or_par_wrapper.hoc *
synaptic_compmap_construct.hoc *
synaptic_map_construct.hoc *
                            
objref map, x

obfunc synaptic_map_construct (){ localobj f, s, tmpmap
	/* $1 thisno,
	$2 num_presynaptic_cells,
	$3 num_postsynaptic_cells,
	// no more $o4 map(i,j), Matrix object = cell # of ith presyn input to jth postsyn cell
	$4 num_presyninputs_perpostsyn_cell, 
	$5 display
	$s6 map file base name
	*/

	// Construct a map of presynaptic cells of one type to postsyn.
	//  cells of some type. 
	// display is an integer flag.  If display = 1, print gjtable

	//        INTEGER thisno, num_presynaptic_cells,
	//     &   num_postsynaptic_cells,
	//     &   num_presyninputs_perpostsyn_cell,
	//     &   map (num_presyninputs_perpostsyn_cell,
	//     &          num_postsynaptic_cells) 
	//        INTEGER i,j,k,l,m,n,o,p
	//       INTEGER display

	//        double precision seed, x(1)
	thisno = $1
	num_presynaptic_cells = $2
	num_postsynaptic_cells = $3
	objref map
	//map = $o4 // dosen't matter
	num_presyninputs_perpostsyn_cell = $4
	display = $5
	// objref seed
	seed = new Vector()
	seed.append(297.e0)
	map = new Matrix( num_presyninputs_perpostsyn_cell+1, num_postsynaptic_cells+1 )

  if (!use_p2c_net_connections) {
	k = 1

	for ii = 1, num_postsynaptic_cells {
	//	print " Constructing map for cell #",ii
		for j = 1, num_presyninputs_perpostsyn_cell {
	        	x = durand (seed, k, x)
			// This defines a presynaptic cell
		
		        LL = int ( x.x(0) * num_presynaptic_cells ) + 1
		        if (LL > num_presynaptic_cells) {
				print " unnexpected boundary issue in synaptic_map_construct()"
				LL = num_presynaptic_cells
			}

		        map.x[j][ii] = LL
	
		}
	}

	// Possibly print out map when done.
	if ((display == 1) && (thisno == 0)) {
		print "SYNAPTIC MAP"
	        for i = 1, num_postsynaptic_cells {
         		printf("%6d %6d %6d \n",map.x(1,i), map.x(2,i), \
			map.x(num_presyninputs_perpostsyn_cell,i))
		}
	}
  }else{
	// read from file created by port2colossus
	s = new String()
	sprint(s.s, "../../p2c/map/%s.dat", $s6)
//printf("%s %d %d\n", s.s, map.nrow-1, map.ncol-1)
	f = new File()
	f.ropen(s.s)
	tmpmap = new Matrix(map.nrow-1, map.ncol-1)
	tmpmap.scanf(f, map.nrow-1, map.ncol-1)
	tmpmap.bcopy(0,0,map.nrow-1, map.ncol-1, 1, 1, map)
  }
	return map
}