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 GLU cell; Neocortex V1 L2/6 pyramidal intratelencephalic GLU 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 GLU cell; Neocortex V1 L2/6 pyramidal intratelencephalic GLU cell; GabaA; GabaB; AMPA; NMDA; I Na,t; I T low threshold; I K; I h;
begintemplate DipoleForCell
public bd, seclist, rotmat 
external total_process_dipole
//external fill_ztan
objref bd,  seclist, point, rotmat //rotmat is incase I want a rotation matx

proc init() {
	//rotmat = new Matrix(3,3)
	//rotmat.ident
	point = new Vector(3)
	seclist = new SectionList()
	seclist.wholetree
	bd=new List()
	forsec seclist {
		insert dipole
		bd.append(new Dipole(1))
	}
	setup_dipole() // must be called whenever nseg changes
	fill_ztan() //must also be called whenever nseg changes?
}


proc setup_dipole() { local i, j, x, xold  localobj d
	j=0
	forsec seclist {
		d= bd.object(j) //branch point (1) dipoles via point processes 
		j += 1
		d.ri=ri(1)
		setpointer d.pv,v(0.999)	
		setpointer d.Qtotal, total_process_dipole
		i += 1
		//ri_dipole below is non branch point 
		//dipoles via density mechanisms
		xold=0
		for(x, 0) {// runs over non branch point dipoles via suffix
			ri_dipole(x)=ri(x) // ri avail for use: diameters taken 
			setpointer pv_dipole(x),v(xold) //points pv to parent 
			setpointer Qsum_dipole(x), d.Qsum
			setpointer Qtotal_dipole(x), total_process_dipole
			xold=x
		}
	}
}

proc fill_ztan() {local i, j, x  localobj xvec, z3dvec, a3dvec, d  
	j=0
	forsec seclist {
   		xvec = new Vector(nseg+2)  // a vec of L*x values for a single section
  		z3dvec = new Vector(n3d()) // the 3-d z points for a single section
  		a3dvec = new Vector(n3d()) // the 3-d arc pos for a single section
   		i = 0
   		for(x) { 
			xvec.x[i] = x*L   //Is L a global thingy??
			i += 1 
		}    		
		for i=0, n3d()-1 { 
			point.x[0] = x3d(i)
			point.x[1] = y3d(i)
			point.x[2] = z3d(i)
			//rotmat.mulv(point, point)
			z3dvec.x[i] = point.x[1]   //**THIS IS Y DIRECTION FOR NOW
			a3dvec.x[i] = arc3d(i) 
		}
   		z3dvec.interpolate(xvec, a3dvec) // now it is z for the centers,0and1
		z3dvec.deriv(1,1) // now it is dz with nseg-1 (nseg+2-1)?? elements
  		i = 0
   		for (x, 0) { ztan_dipole(x) = z3dvec.x[i]   i += 1 }
		d= bd.object(j)
		j += 1
		d.ztan = z3dvec.x[i]
	} //end forsec
}


endtemplate DipoleForCell