Direct recruitment of S1 pyramidal cells and interneurons via ICMS (Overstreet et al., 2013)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:147460
Study of the pyramidal cells and interneurons recruited by intracortical microstimulation in primary somatosensory cortex. Code includes morphological models for seven types of pyramidal cells and eight types of interneurons, NEURON code to simulate ICMS, and an artificial reconstruction of a 3D slab of cortex implemented in MATLAB.
Reference:
1 . Overstreet CK, Klein JD, Helms Tillery SI (2013) Computational modeling of direct neuronal recruitment during intracortical microstimulation in somatosensory cortex. J Neural Eng 10:066016 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Axon;
Brain Region(s)/Organism:
Cell Type(s): Neocortex U1 L6 pyramidal corticalthalamic GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Neocortex bitufted interneuron;
Channel(s): I Na,p; I_Ks;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; MATLAB;
Model Concept(s): Intracortical Microstimulation;
Implementer(s): Overstreet, Cynthia [cynthiakoverstreet at gmail.com];
Search NeuronDB for information about:  Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Neocortex U1 L6 pyramidal corticalthalamic GLU cell; I Na,p; I_Ks;
/
OverstreetEtAl2013
Interneuron
NEURON_code
README.txt
AXNODE.mod *
xtra.mod *
anat_type1.hoc
anat_type2.hoc
anat_type3.hoc
anat_type4.hoc
anat_type5.hoc
anat_type6.hoc
anat_type7.hoc
anat_type8.hoc
calcrxc.hoc *
field.hoc *
fixnseg.hoc *
initxcstim.hoc
interpxyz.hoc *
moveandstimtype1.hoc
moveandstimtype2.hoc
moveandstimtype3.hoc
moveandstimtype4.hoc
moveandstimtype5.hoc
moveandstimtype6.hoc
moveandstimtype7.hoc
moveandstimtype8.hoc
rigc.ses *
setpointers.hoc *
stim.hoc *
stimbipolar.hoc *
vrecc.ses
                            
// $Id: interpxyz.hoc,v 1.2 2005/09/10 23:02:15 ted Exp $
/* Computes xyz coords of nodes in a model cell 
   whose topology & geometry are defined by pt3d data.
   Expects sections to already exist, and that the xtra mechanism has been inserted
 */


// original data, irregularly spaced
objref xx, yy, zz, length
// interpolated data, spaced at regular intervals
objref xint, yint, zint, range

proc grindaway() { local ii, nn, kk, xr
	forall {
	  if (ismembrane("xtra")) {
		// get the data for the section
		nn = n3d()
		xx = new Vector(nn)
		yy = new Vector(nn)
		zz = new Vector(nn)
		length = new Vector(nn)

		for ii = 0,nn-1 {
			xx.x[ii] = x3d(ii)
			yy.x[ii] = y3d(ii)
			zz.x[ii] = z3d(ii)
			length.x[ii] = arc3d(ii)
		}

		// to use Vector class's .interpolate() 
		// must first scale the independent variable
		// i.e. normalize length along centroid
		length.div(length.x[nn-1])

		// initialize the destination "independent" vector
		range = new Vector(nseg+2)
		range.indgen(1/nseg)
		range.sub(1/(2*nseg))
		range.x[0]=0
		range.x[nseg+1]=1

		// length contains the normalized distances of the pt3d points 
		// along the centroid of the section.  These are spaced at 
		// irregular intervals.
		// range contains the normalized distances of the nodes along the 
		// centroid of the section.  These are spaced at regular intervals.
		// Ready to interpolate.

		xint = new Vector(nseg+2)
		yint = new Vector(nseg+2)
		zint = new Vector(nseg+2)
		xint.interpolate(range, length, xx)
		yint.interpolate(range, length, yy)
		zint.interpolate(range, length, zz)

		// for each node, assign the xyz values to x_xtra, y_xtra, z_xtra
//		for ii = 0, nseg+1 {
// don't bother computing coords of the 0 and 1 ends
// also avoid writing coords of the 1 end into the last internal node's coords
		for ii = 1, nseg {
			xr = range.x[ii]
			x_xtra(xr) = xint.x[ii]
			y_xtra(xr) = yint.x[ii]
			z_xtra(xr) = zint.x[ii]
		}
	  }
	}
}