Biophysically realistic neural modeling of the MEG mu rhythm (Jones et al. 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:136803
"Variations in cortical oscillations in the alpha (7–14 Hz) and beta (15–29 Hz) range have been correlated with attention, working memory, and stimulus detection. The mu rhythm recorded with magnetoencephalography (MEG) is a prominent oscillation generated by Rolandic cortex containing alpha and beta bands. Despite its prominence, the neural mechanisms regulating mu are unknown. We characterized the ongoing MEG mu rhythm from a localized source in the finger representation of primary somatosensory (SI) cortex. Subjects showed variation in the relative expression of mu-alpha or mu-beta, which were nonoverlapping for roughly 50% of their respective durations on single trials. To delineate the origins of this rhythm, a biophysically principled computational neural model of SI was developed, with distinct laminae, inhibitory and excitatory neurons, and feedforward (FF, representative of lemniscal thalamic drive) and feedback (FB, representative of higher-order cortical drive or input from nonlemniscal thalamic nuclei) inputs defined by the laminar location of their postsynaptic effects. ..."
Reference:
1 . Jones SR, Pritchett DL, Sikora MA, Stufflebeam SM, Hämäläinen M, Moore CI (2009) Quantitative analysis and biophysically realistic neural modeling of the MEG mu rhythm: rhythmogenesis and modulation of sensory-evoked responses. J Neurophysiol 102:3554-72 [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;
Cell Type(s): Neocortex V1 L6 pyramidal corticothalamic cell; Neocortex V1 L2/6 pyramidal intratelencephalic cell;
Channel(s): I Na,t; I T low threshold; I K; I h;
Gap Junctions:
Receptor(s): GabaA; GabaB; AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Touch;
Implementer(s):
Search NeuronDB for information about:  Neocortex V1 L6 pyramidal corticothalamic cell; Neocortex V1 L2/6 pyramidal intratelencephalic cell; GabaA; GabaB; AMPA; NMDA; I Na,t; I T low threshold; I K; I h;
begintemplate PNOISE
public setmean
objref r, pp
proc init() {
pp=new IClamp(0.5)
pp.dur=5000
r=new Random()
r.MCellRan4()
}
proc setmean() {
r.poisson($1)
r.play(&pp.amp)
}
endtemplate PNOISE

objref noisyV[X_DIM * Y_DIM * 10]
// Insert Poisson noise into all compartments of the Pyramidal V cells
proc PnoiseV(){local postX, PostY, j
j=0
  for postX=0,XD{
   for postY=0,YD{ forsec PL5[postX][postY].all {noisyV[j]=new PNOISE() noisyV[j].setmean($1) j=j+1 } } } }

objref noisyII[X_DIM * Y_DIM * 10]
// Insert Poisson noise into all compartments of the Pyramidal II/III cells
proc PnoiseII(){local postX, PostY, j
j=0
  for postX=0,XD{
   for postY=0,YD{ forsec PL2[postX][postY].all {noisyII[j]=new PNOISE() noisyII[j].setmean($1) j=j+1 } } } }

objref noisyIPL5[X_DIM * Y_DIM]
// Insert Poisson noise into all compartments of inhibitory LayerV cells
proc PnoiseIPL5(){ local postX, postY, j
j=0
  for postX=0,XD{
   for postY=0,YD{
if (object_id(IPL5[postX][postY]) ){
 IPL5[postX][postY].cell {noisyIPL5[j]=new PNOISE() noisyIPL5[j].setmean($1) j=j+1 } }
 } } }

objref noisyIPL2[X_DIM * Y_DIM]
// Insert Poisson noise into all compartments of inhibitory LayerII/III cells
proc PnoiseIPL2(){ local postX, postY, j
j=0
  for postX=0,XD{
   for postY=0,YD{
if (object_id(IPL2[postX][postY]) ){
 IPL2[postX][postY].cell {noisyIPL2[j]=new PNOISE() noisyIPL2[j].setmean($1) j=j+1 } }
 } } }

begintemplate GNOISE
public setmean
objref r, pp
proc init() {
pp=new IClamp(0.5)
pp.dur=5000
r=new Random()
r.MCellRan4()
}
proc setmean() {
r.normal($1,$2)
r.play(&pp.amp)
}
endtemplate GNOISE

objref GnoisyV[X_DIM * Y_DIM * 10]
// Insert Gaussian noise into all compartments of the Pyramidal V cells
proc GnoiseV(){
j=0
for postX=0,XD{
   for postY=0,YD{ forsec PL5[postX][postY].all {GnoisyV[j]=new GNOISE() GnoisyV[j].setmean($1,$2) j=j+1 } } } }

objref GnoisyII[X_DIM * Y_DIM * 10]
// Insert Gaussian noise into all compartments of the Pyramidal II/III cells
proc GnoiseII(){
j=0
for postX=0,XD{
   for postY=0,YD{ forsec PL2[postX][postY].all {GnoisyII[j]=new GNOISE() GnoisyII[j].setmean($1,$2) j=j+1 } } } }

objref GnoisyIPL5[X_DIM * Y_DIM]
// Insert Gaussian noise into all compartments of inhibitory LayerV cells
proc GnoiseIPL5(){ local postX, postY, j
j=0
 for postX=0,XD{
   for postY=0,YD{
if (object_id(IPL5[postX][postY]) ){
  IPL5[postX][postY].cell {GnoisyIPL5[j]=new GNOISE() GnoisyIPL5[j].setmean($1,$2) j=j+1 } } 
} } }

objref GnoisyIPL2[X_DIM * Y_DIM]
// Insert Gaussian noise into all compartments of inhibitory LayerII/III cells
proc GnoiseIPL2(){ local postX, postY, j
j=0
 for postX=0,XD{
   for postY=0,YD{
if (object_id(IPL2[postX][postY]) ){
  IPL2[postX][postY].cell {GnoisyIPL2[j]=new GNOISE() GnoisyIPL2[j].setmean($1,$2) j=j+1 } } 
} } }

begintemplate UNOISE
public setmean
objref r, pp
proc init() {
pp=new IClamp(0.5)
pp.dur=5000
r=new Random()
r.MCellRan4()
}
proc setmean() {
r.uniform($1,$2)
r.play(&pp.amp)
}
endtemplate UNOISE

objref UnoisyV[X_DIM * Y_DIM * 10]
// Insert Uniform noise into all compartments of the Pyramidal V cells
proc UnoiseV(){
j=0
for postX=0,XD{
   for postY=0,YD{ forsec PL5[postX][postY].all {UnoisyV[j]=new UNOISE() UnoisyV[j].setmean($1,$2) j=j+1 } } } }

objref UnoisyII[X_DIM * Y_DIM * 10]
// Insert Uniform noise into all compartments of the Pyramidal II/III cells
proc UnoiseII(){
j=0
for postX=0,XD{
   for postY=0,YD{ forsec PL2[postX][postY].all {UnoisyII[j]=new UNOISE() UnoisyII[j].setmean($1,$2) j=j+1 } } } }

objref UnoisyIPL5[X_DIM * Y_DIM]
// Insert Uniform noise into all compartments of inhibitory LayerV cells
proc UnoiseIPL5(){
j=0
 for postX=0,XD{
   for postY=0,YD{
if (object_id(IPL5[postX][postY]) ){
 IPL5[postX][postY].cell {UnoisyIPL5[j]=new UNOISE() UnoisyIPL5[j].setmean($1,$2) j=j+1 } } 
} } }

objref UnoisyIPL2[X_DIM * Y_DIM]
// Insert Uniform noise into all compartments of inhibitory LayerII/III cells
proc UnoiseIPL2(){
j=0
 for postX=0,XD{
   for postY=0,YD{
if (object_id(IPL2[postX][postY]) ){
 IPL2[postX][postY].cell {UnoisyIPL2[j]=new UNOISE() UnoisyIPL2[j].setmean($1,$2) j=j+1 } } 
} } }