MEG of Somatosensory Neocortex (Jones et al. 2007)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:113732
"... To make a direct and principled connection between the SI (somatosensory primary neocortex magnetoencephalography) waveform and underlying neural dynamics, we developed a biophysically realistic computational SI model that contained excitatory and inhibitory neurons in supragranular and infragranular layers. ... our model provides a biophysically realistic solution to the MEG signal and can predict the electrophysiological correlates of human perception."
Reference:
1 . Jones SR, Pritchett DL, Stufflebeam SM, Hämäläinen M, Moore CI (2007) Neural correlates of tactile detection: a combined magnetoencephalography and biophysically based computational modeling study. J Neurosci 27:10751-64 [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:
Cell Type(s): Neocortex L5/6 pyramidal GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell;
Channel(s): I T low threshold; I K; I M; I K,Ca; I Sodium; I Calcium; I R;
Gap Junctions:
Receptor(s): GabaA; GabaB; AMPA; NMDA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Magnetoencephalography; Touch;
Implementer(s): Sikora, Michael [Sikora at umn.edu];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; GabaA; GabaB; AMPA; NMDA; I T low threshold; I K; I M; I K,Ca; I Sodium; I Calcium; I R; Gaba; Glutamate;
begintemplate DipoleForCell
public bd, seclist, rotmat 
//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)	
		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
			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