Emergence of physiological oscillation frequencies in neocortex simulations (Neymotin et al. 2011)

 Download zip file 
Help downloading and running models
"Coordination of neocortical oscillations has been hypothesized to underlie the "binding" essential to cognitive function. However, the mechanisms that generate neocortical oscillations in physiological frequency bands remain unknown. We hypothesized that interlaminar relations in neocortex would provide multiple intermediate loops that would play particular roles in generating oscillations, adding different dynamics to the network. We simulated networks from sensory neocortex using 9 columns of event-driven rule-based neurons wired according to anatomical data and driven with random white-noise synaptic inputs. ..."
1 . Neymotin SA, Lee H, Park E, Fenton AA, Lytton WW (2011) Emergence of physiological oscillation frequencies in a computer model of neocortex. Front Comput Neurosci 5:19 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; Neocortex V1 interneuron basket PV GABA cell; Neocortex fast spiking (FS) interneuron; Neocortex spiny stellate cell;
Gap Junctions:
Receptor(s): GabaA; AMPA; NMDA; Gaba;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Oscillations; Synchronization; Laminar Connectivity;
Implementer(s): Lytton, William [bill.lytton at downstate.edu]; Neymotin, Sam [Samuel.Neymotin at nki.rfmh.org];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; Neocortex V1 interneuron basket PV GABA cell; GabaA; AMPA; NMDA; Gaba; Gaba; Glutamate;
misc.mod *
nstim.mod *
stats.mod *
declist.hoc *
decmat.hoc *
decnqs.hoc *
decvec.hoc *
default.hoc *
drline.hoc *
grvec.hoc *
init.hoc *
labels.hoc *
local.hoc *
nqs.hoc *
nqsnet.hoc *
nrnoc.hoc *
python.hoc *
pywrap.hoc *
simctrl.hoc *
spkts.hoc *
stats.hoc *
syncode.hoc *
xgetargs.hoc *
// finish_run.hoc

objref nqp[numcols][2],nqps[numcols][2] // stores NQS objects containing PSD of multiunit activity vectors

//nrnpsd - calculates PSD and returns as an NQS object
obfunc nrnpsd () { local sampr localobj vec,nqp
  vec=$o1 sampr=$2
  nqp=new NQS("f","pow")
  return nqp

// getpsd - gets and draws raw/smoothed PSD in two separate graphs
proc getpsd () { local i,j,I,boxsz
  print "calculating/drawing MUA PSD..."
  if(drawraw) myg[2]=new Graph()
  myg[3]=new Graph()
  for i=0,numcols-1 for I=0,1 {
    {vec.resize(nqCO.v.size) vec.fill(0)}
    for j=0,CTYPi-1 if(col.numc[j] && ice(j)==I) vec.add(nqCTY[i].v[j]) // forms E and I MUA separately
    vec.sub(vec.mean) // remove mean

//    {nqsdel(nqp[i][I]) nqp[i][I]=pypsd(vec,sampr)} // get PSD using python matplotlib psd function -- requires matplotlib
// and NEURON compiled with python. matplotlib available here: http://http://matplotlib.sourceforge.net/. pypsd function in pywrap.hoc

//    {nqsdel(nqp[i][I]) nqp[i][I]=pypmtm(vec,sampr)} // use python mtspec library pmtm function -- requires python mtspec install
// and NEURON compiled with python. python mtspec available here: http://pypi.python.org/pypi/mtspec. pypmtm function in pywrap.hoc

    {nqsdel(nqp[i][I]) nqp[i][I]=nrnpsd(vec,sampr)}//get PSD with NEURON spctrm Vector function: default since in all NEURONs
    if(drawraw){nqp[i][I].v[1].plot(myg[2],nqp[i][I].v[0],I+2,1) myg[2].exec_menu("View = plot")} // plot raw PSD

    boxsz = MAXxy(boxszdef*nqp.v.size/512,4) // smoothing level for PSD box filter

    {nqsdel(nqps[i][I])  nqps[i][I]=new NQS() nqps[i][I].cp(nqp[i][I])} // get/plot smoothed PSD
    {boxfilt(nqps[i][I].v[1],boxsz) nqps[i][I].v[1].plot(myg[3],nqps[i][I].v[0],I+2,1) myg[3].exec_menu("View = plot")}

proc finish_run() {

run() // run simulation of 9 columns for mytstop milliseconds

{skipsnq=0 binsz=5 sampr=1e3/binsz initAllMyNQs()} // setup spike counts per time

//draw raster from 1 column
print "drawing raster..."
{gg() gvmarkflag=1 snq.marksym="O" snq.gr("id","t",0,1,4) myg[0]=g gvmarkflag=0 myg[0].size(1e3,2e3,0,470) rasterlines()}

// draw LFP from 1 column
print "drawing LFP..."
{myg[1]=new Graph() nqLFP.v.sub(nqLFP.v.mean) nqLFP.v.label("LFP") nqLFP.v.plot(myg[1],vdt_INTF6) myg[1].size(1e3,2e3,-1500,3000)}

//variables for controlling getpsd
 drawraw = 0 // whether to draw raw PSD -- set it before calling getpsd()
 boxszdef = 21 // default PSD smoothing for 20 s sim -- set it before calling getpsd()

Loading data, please wait...