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

 Download zip file 
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]
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
Pyramidal
NEURON_code
README.txt
AXNODE.mod *
xtra.mod *
anat_type10.hoc
anat_type10sym.hoc
anat_type11.hoc
anat_type12.hoc
anat_type12sym.hoc
anat_type13.hoc
anat_type13sym.hoc
anat_type14.hoc
anat_type14sym.hoc
anat_type15.hoc
anat_type9.hoc
anat_type9sym.hoc
calcrxc.hoc *
field.hoc *
fixnseg.hoc *
initpulsecomp.hoc
initstrdur.hoc
initxcstim.hoc
interpxyz.hoc *
moveandstimtype10.hoc
moveandstimtype10sym.hoc
moveandstimtype11.hoc
moveandstimtype12.hoc
moveandstimtype12sym.hoc
moveandstimtype13.hoc
moveandstimtype13sym.hoc
moveandstimtype14.hoc
moveandstimtype14sym.hoc
moveandstimtype15.hoc
moveandstimtype9.hoc
moveandstimtype9sym.hoc
pulsecompA.hoc
pulsecompB.hoc
rigc.ses *
setpointers.hoc *
stim.hoc *
stimbipolar.hoc *
strdurA.hoc
strdurB.hoc
strdurC.hoc
strdurD.hoc
                            
// $Id: stim.hoc,v 1.5 2009/02/24 00:55:27 ted Exp ted $
/* The stimulus is constructed from a waveform template 
that is copied to a Vector.
For each section that has the xtra mechanism, this Vector 
is used to drive is_xtra.
The transfer resistance rx_xtra takes care of the 
amplitude and sign of the local extracellular field.
*/


// create basic stimulus waveform
// for this example use a simple rectangular pulse 

// default values
DEL = 1  // ms
DUR = 1
AMP = -0.05  // mA

// this works with fixed dt and adaptive integration
objref stim_amp, stim_time
stim_amp = new Vector()
stim_time = new Vector()

proc stim_waveform() {
  // this uses interpolated play
  // index    0  1    2    3        4        5
  // stim vec 0, 0,   1,   1,       0        0
  // time vec 0, DEL, DEL, DEL+DUR, DEL+DUR, DEL+DUR+1
  //  really  0, $1,  $1,  $1+$2,   $1+$2,   $1+$2+1
  // first the stim vector
  stim_amp.resize(8)
  stim_amp.fill(0)
  stim_amp.x[2]=1
  stim_amp.x[3]=1
  stim_amp.x[4]=-1
  stim_amp.x[5]=-1
  stim_amp.x[6]=0
  stim_amp.x[7]=0
  stim_amp.mul($3)
  // now the time vector
  stim_time.resize(8)
  stim_time.x[1]=$1
  stim_time.x[2]=$1
  stim_time.x[3]=$1+$2
  stim_time.x[4]=$1+$2
  stim_time.x[5]=$1+$2+$2
  stim_time.x[6]=$1+$2+$2
  stim_time.x[7]=$1+$2+$2+$2
}


ATTACHED__ = 0

proc attach_stim() {
// since is_xtra is GLOBAL, we only need to specify Vector.play()
// for one instance of xtra, i.e. at just one internal node
// of only one section that contains xtra
  forall {  // check each section to find one that has xtra
    if (ATTACHED__ == 0) {  // don't bother if stim is already attached to something
      if (ismembrane("xtra")) {
        stim_amp.play(&is_xtra, stim_time, 1) // "interpolated" play
        ATTACHED__ = 1
      }
    }
  }
}


proc setstim() {
  del = $1
  dur = $2
  amp = $3
  stim_waveform(del, dur, amp)
  attach_stim()
}


setstim(DEL, DUR, AMP)

print "Use setstim(del, dur, amp) to change latency (ms), duration (ms),"
print "and amplitude (mA) of extracellular stimulus current."

xpanel("Extracellular Stimulus Current", 0)
  xvalue("del (ms)", "DEL", 1, "setstim(DEL,DUR,AMP)", 0, 1)
  xvalue("dur (ms)", "DUR", 1, "setstim(DEL,DUR,AMP)", 0, 1)
  xvalue("amp (mA)", "AMP", 1, "setstim(DEL,DUR,AMP)", 0, 1)
xpanel(73,497)

Loading data, please wait...