Computational model of cerebellar tDCS (Zhang et al., 2021)

 Download zip file 
Help downloading and running models
Accession:267189
This archive contains models used in (Zhang et al. 2021) and simulates Purkinje cell, granule cell, and deep cerebellar neuron activities under cerebellar tDCS (transcranial direct current stimulation).
Reference:
1 . Zhang X, Hancock R, Santaniello S (2021) Transcranial Direct Current Stimulation of Cerebellum Alters Spiking Precision in Cerebellar Cortex: A Modeling Study of Cellular Responses. PLoS Comp Biol 17(12):e1009609 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Cerebellum;
Cell Type(s): Cerebellum Purkinje GABA cell; Cerebellum interneuron granule GLU cell; Cerebellum deep nucleus neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s):
Implementer(s):
Search NeuronDB for information about:  Cerebellum Purkinje GABA cell; Cerebellum interneuron granule GLU cell;
// Zang Y, Dieudonné S, De Schutter E (2018) Voltage- and Branch-Specific Climbing Fiber Responses in Purkinje Cells Cell Reports 24(6):1536-1549

/* assumes
1. sections to be innervated have been appended to a SectionList called seclist
2. synaptic density is in units of number/(length in um)
3. geometry specification has been completed, including spatial discretization
4. total number of synapses to distribute is called NUMSYN
https://www.neuron.yale.edu/phpBB/viewtopic.php?f=8&t=2264
*/
numsegs = 0 // will be total number of segments
forsec cf {numsegs+=nseg}
objref mvec
mvec = new Vector(numsegs) // will hold cumulative sums of segment length
// each element in mvec corresponds to a segment in seclist

ii = 0 // to iterate over mvec
mtotal = 0 // will be total length in seclist
forsec cf {
  for (x,0) { // iterate over internal nodes of current section
    mtotal += L/nseg // or area(x) if density is in (number)/area
    mvec.x[ii] = mtotal
    ii += 1
  }
}
/*
now mvec.x[ii] is the sum of segment lengths (or areas)
for all segments up to and including segment ii
*/

objref nvec
nvec = new Vector(numsegs, 0) // fill elements with 0
// each element in nvec corresponds to a segment in seclist
// when done, each element will hold the number of synaptic mechanisms
// that are to be attached to the corresponding segment

access soma
objref sl2
sl2 = new SectionList()
sl2.wholetree()
// objref ss
// ss = new Shape(sl2)

//wopen("file.dat")
NUMSYN = 500
for ii=1,NUMSYN {
  x = mtotal/NUMSYN*(ii-1) //value drawn from uniform distribution over [0,mtotal]
  jj = mvec.indwhere(">=", x) // the first element in mvec that is >=x 
  // this is the index of the segment that should get the synapse
  nvec.x[jj] += 1
}

objref synlist
synlist = new List()
ii = 0
forsec cf {
  for (x, 0) {
    num = nvec.x[ii]
    if (num>0) {
      for jj=1,num synlist.append(new syn2(x))
      // to keep this entirely generic
      // defer param specification until later
    }
    ii += 1 // we're moving on to the next segment,
      // so move on to the next element of nvec
  }
}
for i=0,synlist.count()-1 {
    synlist.object(i).onset = 400
    synlist.object(i).tau0 = 0.3
    synlist.object(i).tau1 = 3
    synlist.object(i).e = 0
    synlist.object(i).gmax = 1.2251821e-3
//    ss.point_mark(synlist.object(i),2)
//ss.point_mark(synlist.object(i),2,4, 4)
    // ss.point_mark(synlist.object(i),2,4, 2)
}

Loading data, please wait...