Model of the cerebellar granular network (Sudhakar et al 2017)

 Download zip file 
Help downloading and running models
"The granular layer, which mainly consists of granule and Golgi cells, is the first stage of the cerebellar cortex and processes spatiotemporal information transmitted by mossy fiber inputs with a wide variety of firing patterns. To study its dynamics at multiple time scales in response to inputs approximating real spatiotemporal patterns, we constructed a large-scale 3D network model of the granular layer. ..."
1 . Sudhakar SK, Hong S, Raikov I, Publio R, Lang C, Close T, Guo D, Negrello M, De Schutter E (2017) Spatiotemporal network coding of physiological mossy fiber inputs by the cerebellar granular layer. PLoS Comput Biol 13:e1005754 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Cerebellum;
Cell Type(s): Cerebellum golgi cell;
Channel(s): I A; I Calcium; I K; I K,Ca; I Na,t; I h; I Na,p; I T low threshold;
Gap Junctions: Gap junctions;
Receptor(s): AMPA; NMDA; Gaba;
Transmitter(s): Glutamate; Gaba;
Simulation Environment: NEURON;
Model Concept(s): Spatio-temporal Activity Patterns; Oscillations; Synchronization; Winner-take-all;
Implementer(s): Hong, Sungho [shhong at]; Guo, Daqing [dqguo at]; Raikov, Ivan [ivan.g.raikov at]; Publio, Rodrigo [publio at]; De Schutter, Erik [erik at];
Search NeuronDB for information about:  AMPA; NMDA; Gaba; I Na,p; I Na,t; I T low threshold; I A; I K; I h; I K,Ca; I Calcium; Gaba; Glutamate;
// Template for connections from cerebellar granule to Golgi cells
// Written by Shyam Kumar Sudhakar, Ivan Raikov, Tom Close, Rodrigo Publio, Daqing Guo, and Sungho Hong
// Computational Neuroscience Unit, Okinawa Institute of Science and Technology, Japan
// Supervisor: Erik De Schutter
// Correspondence: Sungho Hong (
// September 16, 2017

begintemplate GCtoGoC
external GranulePop,GolgiPop, step_time,numDendGolgi,numAMPAGolgiPF,numAMPAGolgiGC,gseed,CV_gmax,GoC_Ad_nseg,GoC_Bd_nseg,AA_GoC_con
objref  excNCelem,pc

proc init() { local i,j,count,axonid,pfid localobj nc,ncm,cell,dendrite,nc1,dendritenmda,r

    print "Connecting GCtoGoC"
    r=new Random(gseed)
    numGC  = GranulePop.nCells
    numGoC = GolgiPop.nCells

    mAMPA= 200e-6 //uS
    mNMDA=(800e-6)/2 //uS
    SDAMPA  = mAMPA*CV_gmax
    SDNMDA  = mNMDA*CV_gmax
    mAMPA1  = 240e-6
    SDAMPA1  = mAMPA1*CV_gmax

    del = 20
    thresh = -10

    pc = new ParallelContext()
    objref excNCelem
    excNCelem = new List()

    // Connect ascending axons to dendrites at the GL

    for (; i < numGoC; i +=pc.nhost) {

    cell = pc.gid2cell(i+GolgiPop.startindex)

    if(cell.AxonID.size()>1){ // At least 1 PF connection

        for j=0, cell.AxonID.size()-1 {

           axonid        = cell.AxonID.x(j)

           if (AA_GoC_con == 1) { //for brep connectivity
           dendno        = cell.AAdend.x(j)
           segno         = cell.AAseg.x(j)

           if (dendno<3) { //Ascending axons to Basal dendrites

           objpos        = ((dendno-1)*GoC_Bd_nseg)+segno-1
           dendrite	 = cell.AAampa.object(objpos)
           dendritenmda  = cell.AAnmda.object(objpos)

           }else{  // Ascending axons to apical
           objpos        = ((dendno-3)*GoC_Ad_nseg)+segno-1
           dendrite      = cell.PFampa.object(objpos)
           dendritenmda  = cell.PFnmda.object(objpos)
           }else{ //for hoc connectivity
           dendno        = r.discunif(1,2) // pick a random dendrite
           segno         = r.discunif(1,GoC_Bd_nseg) // pick a random segment no
           objpos        = ((dendno-1)*GoC_Bd_nseg)+segno-1 // pick the object position from the list
           dendrite	 = cell.AAampa.object(objpos)
           dendritenmda  = cell.AAnmda.object(objpos)

           nc            = pc.gid_connect(axonid,dendrite)
           //nc1         = pc.gid_connect(axonid,dendritenmda)

           if (cell.Axondel.x(j)<=step_time){
                nc.delay =  step_time + step_time/10
             // nc1.delay = step_time + step_time/10
                nc.delay = cell.Axondel.x(j)
             // nc1.delay = cell.Axondel.x(j)


            wAMPA        = r.normal(mAMPA,SDAMPA*SDAMPA)
            wNMDA        = r.normal(mNMDA,SDNMDA*SDNMDA)

            nc.weight    = wAMPA
            // nc1.weight = wNMDA
            // excNCelem.append(nc1)


    // Connect PF to dendrites at the ML

    for (; i < numGoC; i +=pc.nhost) {

    cell = pc.gid2cell(i+GolgiPop.startindex)

    if (cell.PFID.size()>1) { // At least 1 MF connection

        for j=0, cell.PFID.size()-1 {
        pfid          = cell.PFID.x(j)
        dendno        = cell.PFdend.x(j)
        segno         = cell.PFseg.x(j)
        objpos        = ((dendno-3)*GoC_Ad_nseg)+segno-1

        dendrite      = cell.PFampa.object(objpos)
        dendritenmda  = cell.PFnmda.object(objpos)

        nc = pc.gid_connect(pfid,dendrite)
        // nc1 = pc.gid_connect(pfid,dendritenmda)

        if (cell.PFdel.x(j)<=step_time) {
           nc.delay   = step_time + step_time/10
        // nc1.delay  = step_time + step_time/10

           nc.delay   = cell.PFdel.x(j)
        // nc1.delay  = cell.PFdel.x(j)


            wAMPA     = r.normal(mAMPA,SDAMPA*SDAMPA)
            wNMDA     = r.normal(mNMDA,SDNMDA*SDNMDA)

            if (cell.PFID.size()>5800) { // Extra scaling for some dangerously over-connected cells
                nc.weight = wAMPA*(4750/6200)
            } else {
                nc.weight = wAMPA

         // nc1.weight= wNMDA
         // excNCelem.append(nc1)


} // end init
endtemplate GCtoGoC

objref ncGCtoGoC[1]
ncGCtoGoC[0] = new GCtoGoC()

Loading data, please wait...