ModelDB is moving. Check out our new site at https://modeldb.science. The corresponding page is https://modeldb.science/185513.

Cerebellar nuclear neuron (Sudhakar et al., 2015)

 Download zip file 
Help downloading and running models
Accession:185513
"... In this modeling study, we investigate different forms of Purkinje neuron simple spike pause synchrony and its influence on candidate coding strategies in the cerebellar nuclei. That is, we investigate how different alignments of synchronous pauses in synthetic Purkinje neuron spike trains affect either time-locking or rate-changes in the downstream nuclei. We find that Purkinje neuron synchrony is mainly represented by changes in the firing rate of cerebellar nuclei neurons. ..."
Reference:
1 . Sudhakar SK, Torben-Nielsen B, De Schutter E (2015) Cerebellar Nuclear Neurons Use Time and Rate Coding to Transmit Purkinje Neuron Pauses. PLoS Comput Biol 11:e1004641 [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 deep nucleus neuron;
Channel(s): I Na,p; I T low threshold; I h; I Sodium;
Gap Junctions:
Receptor(s): NMDA; Glutamate; Gaba;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Rate-coding model neurons; Rebound firing;
Implementer(s):
Search NeuronDB for information about:  NMDA; Glutamate; Gaba; I Na,p; I T low threshold; I h; I Sodium; Gaba; Glutamate;
/
SudhakarEtAl2015
readme.html
CaConc.mod *
CaHVA.mod *
CaL.mod
CalConc.mod *
CaLVA.mod *
DCNsyn.mod *
DCNsynGABA.mod
DCNsynNMDA.mod *
fKdr.mod *
GammaStim.mod *
h.mod *
Ifluct8.mod *
NaF.mod *
NaP.mod *
pasDCN.mod *
SK.mod *
sKdr.mod *
TNC.mod
vecevent.mod *
cellids.dat
cellids_n.dat
datasp_ex1.dat
datasp1.dat
DCN_init_model1.hoc
DCN_init_model2.hoc
DCN_init_model2_highgain.hoc
DCN_init_model2_lowgain.hoc
DCN_init_model2_medgain.hoc
DCN_init_model3.hoc
DCN_mechs1.hoc *
DCN_mechs2.hoc
DCN_morph.hoc *
DCN_params.hoc
l_ex1.dat
l1.dat
model1_params.hoc
model2_params.hoc
model2_params_highgain.hoc
model2_params_lowgain.hoc
model2_params_medgain.hoc
model3_params.hoc
mosinit.hoc
pausebeg.dat
pausebeg_n.dat
screenshot.png
                            
// CN model used in Saak V Ovsepian, Volker Steuber, Marie Le 
// Berre, Liam O'Hara, Valerie B O'Leary, and J. Oliver Dolly 
// (2013). A Defined Heteromeric KV1 Channel Stabilizes the 
// Intrinsic Pacemaking and Regulates the Efferent Code of Deep 
// Cerebellar Nuclear Neurons to Thalamic Targets. Journal of 
// Physiology (epub ahead of print). 
//
// written by Johannes Luthman, modified by Volker Steuber
//
// cell mechanisms for the simulations that replicate Figure 9E,F
// in Ovsepian et al. (2013)

objref ampa[EXCTOTALSYNAPSES]
objref fnmda[EXCTOTALSYNAPSES]
objref snmda[EXCTOTALSYNAPSES]
objref gaba[INHTOTALSYNAPSES]
objref axIS_cip
objref soma_cip1
objref soma_cip2
objref ouinoise

proc DCNmechs() {
    setBiophysics()
    insertChannels()
    insertSynapses()
    insertIClamp()
    insertOUCurrentNoise()
    fixCaIons()
}

proc setBiophysics() {

    // insert biophysics common to all compartments
    forall {
        cm = CM
        Ra = RA

        insert pasDCN
        gbar_pasDCN = PASSCOND
    }

    // Change conductance and resistivity of the axon, the only compartment type with
    // "non-standard" conductance and resistivity.
    forsec axNode {
        cm = CMMYEL
        gbar_pasDCN = PASSCONDMYEL
    }
}

proc insertOUCurrentNoise() {


    soma {
	ouinoise = new Ifluct8(0.5)
	ouinoise.i0 = 0.0 //0.0 // nA
	ouinoise.tau = 2 // ms
	ouinoise.std = 0.2 //0.1 // nA
    }
}

proc insertIClamp() {

    // insert current clamp stimulus into soma and axon initial segment
    // used to replicate data from Ovsepian 

    soma {
	soma_cip1 = new IClamp(0.5)
	soma_cip1.del = SOMACIP1DEL
	soma_cip1.dur = SOMACIP1DUR
	soma_cip1.amp = SOMACIP1AMP
	soma_cip2 = new IClamp(0.5)
	soma_cip2.del = SOMACIP2DEL
	soma_cip2.dur = SOMACIP2DUR
	soma_cip2.amp = SOMACIP2AMP
    }

    axIS[9] {
	axIS_cip = new IClamp(0.5)
	axIS_cip.del = AXISCIPDEL
	axIS_cip.dur = AXISCIPDUR
	axIS_cip.amp = AXISCIPAMP
    }
}

proc insertChannels() {

    // For each type of compartment, insert NMODL mechanisms
    // (ion channels and ca-concentration).

    // The qdeltat variable is GLOBAL in the NMODLs, meaning that it only needs to be
    // specified once for each mechanism, here in the soma (which contains a copy of
    // each mechanism).
    soma {

        insert NaF
        gbar_NaF = gNaFsoma
        qdeltat_NaF = QdTchannelGating

        insert NaP
        gbar_NaP = gNaPsoma
        qdeltat_NaP = QdTchannelGating

        ena = SodiumRevPot

        insert fKdr
        gbar_fKdr = gfKdrsoma
        qdeltat_fKdr = QdTchannelGating

        insert sKdr
        gbar_sKdr = gsKdrsoma
        qdeltat_sKdr = QdTchannelGating

        insert SK
        gbar_SK = gSKsoma
        qdeltat_SK = QdTchannelGating

        ek = PotassiumRevPot


        insert h
        gbar_h = gHsoma
        qdeltat_h = QdTchannelGating
        eh_h = hRevPot


        insert TNC
        gbar_TNC = gTNCsoma
        eTNC_TNC = TNCrevPot


        // calcium channels - they use the Goldman-Hodgkin-Katz (GHK) current equation
        // and so don't have a set reversal potential.
        insert CaLVA
        perm_CaLVA = permCaLVAsoma
        qdeltat_CaLVA = QdTchannelGating

        insert CaHVA
        perm_CaHVA = permCaHVAsoma
        qdeltat_CaHVA = QdTchannelGating


        // insert a hypothetical shell below the membrane of the cell to keep track of the
        // calcium entering the cell through the CaHVA and CaLVA channels, respectively.
        // The resulting calcium concentration is used to calculate the current flow through
        // through those channels.

        // For the CaHVA channel:

        insert CaConc
        tauCa_CaConc = tauCaConcSoma
        kCa_CaConc = kCaCaConcSoma

        // For the soma, the calculation of shell thickness is different from
        // the dendrites since it is a sphere in GENESIS and a cylinder
        // in NEURON. See how it's done in GENESIS file cn_comp_dj10.g and
        // divide that expression by the surface area of the NEURON soma to get
        // the following expression:
        depth_CaConc = SHELLTHICK - 2*SHELLTHICK^2/diam + \
                4*SHELLTHICK^3/(3*diam^2) // =0.196215


        // For the CaLVA channel:

        insert CalConc
        tauCal_CalConc = tauCaConcSoma
        kCal_CalConc = kCaCaConcSoma
        depth_CalConc = SHELLTHICK - 2*SHELLTHICK^2/diam + \
                4*SHELLTHICK^3/(3*diam^2) // =0.196215
    }

    forsec axHillock {
        insert NaF
        gbar_NaF = gNaFaxHill
        ena = SodiumRevPot

        insert fKdr
        gbar_fKdr = gfKdraxHill
        insert sKdr
        gbar_sKdr = gsKdraxHill
        ek = PotassiumRevPot

        insert TNC
        gbar_TNC = gTNCaxHill
        eTNC_TNC = TNCrevPot
    }

    forsec axIniSeg {
        insert NaF
        gbar_NaF = gNaFaxIniSeg
        ena = SodiumRevPot

        insert fKdr
        gbar_fKdr = gfKdraxIniSeg
        insert sKdr
        gbar_sKdr = gsKdraxIniSeg
        ek = PotassiumRevPot

        insert TNC
        gbar_TNC = gTNCaxIniSeg
        eTNC_TNC = TNCrevPot
    }

    // No channels in the axon.
    // forsec axNode {
    // }

    forsec proxDend {
        insert NaF
        gbar_NaF = gNaFpDend
        ena = SodiumRevPot

        insert fKdr
        gbar_fKdr = gfKdrpDend
        insert sKdr
        gbar_sKdr = gsKdrpDend
        insert SK
        gbar_SK = gSKpDend
        ek = PotassiumRevPot

        insert h
        gbar_h = gHpDend
        eh_h = hRevPot

        insert TNC
        gbar_TNC = gTNCpDend
        eTNC_TNC = TNCrevPot

        insert CaLVA
        perm_CaLVA = permCaLVAdend

        insert CaHVA
        perm_CaHVA = permCaHVAdend

        insert CaConc
        kCa_CaConc = kCaCaConcDend
        depth_CaConc = SHELLTHICK - (SHELLTHICK*SHELLTHICK/diam)

        insert CalConc
        kCal_CalConc = kCaCaConcDend
        depth_CalConc = SHELLTHICK - (SHELLTHICK*SHELLTHICK/diam)
    }

    forsec distDend {
        insert SK
        gbar_SK = gSKdDend
        ek = PotassiumRevPot

        insert h
        gbar_h = gHdDend
        eh_h = hRevPot

        insert CaLVA
        perm_CaLVA = permCaLVAdend

        insert CaHVA
        perm_CaHVA = permCaHVAdend

        insert CaConc
        kCa_CaConc = kCaCaConcDend
        depth_CaConc = SHELLTHICK - (SHELLTHICK*SHELLTHICK/diam)

        insert CalConc
        kCal_CalConc = kCaCaConcDend
        depth_CalConc = SHELLTHICK - (SHELLTHICK*SHELLTHICK/diam)
    }
} // end proc insertChannels()

proc insertSynapses() {

    // GABAergic synapses
    // If the short term depression variant of the GABA synapse is used, then calculate
    // the depression level to start out with. Set the level to that reached at steady state
    // with the present input frequency, using the equation from DCNsynGABA.mod giving "relProbSS".
    if (useGABAsyndep == 1) {
        initDeprLevel = 0.08 + 0.60*exp(-2.84*inhibitoryHz) + 0.32*exp(-0.02*inhibitoryHz)
    }
    
    c = 0
    forsec inhSynapseComps {
        if (useGABAsyndep == 1) {
            gaba[c] = new DCNsynGABA(0.5)
            gaba[c].startDeprLevel = initDeprLevel
        } else {
            gaba[c] = new DCNsyn(0.5)
        }
        gaba[c].tauRise = tauRiseGABA
        gaba[c].tauFall = tauFallGABA
        gaba[c].e = GABARevPot
        c+=1
    }

    // Excitatory synapses
    c = 0
    forsec excSynapseComps {

        ampa[c] = new DCNsyn(0.5)
        ampa[c].tauRise = tauRiseAMPA
        ampa[c].tauFall = tauFallAMPA
        ampa[c].e = ExcitSynRevPot

        fnmda[c] = new DCNsynNMDA(0.5)
        fnmda[c].tauRise = tauRisefNMDA
        fnmda[c].tauFall = tauFallfNMDA
        fnmda[c].e = ExcitSynRevPot
        fnmda[c].MgFactor = MgFactorfNMDA
        fnmda[c].gamma = gammafNMDA

        snmda[c] = new DCNsynNMDA(0.5)
        snmda[c].tauRise = tauRisesNMDA
        snmda[c].tauFall = tauFallsNMDA
        snmda[c].e = ExcitSynRevPot
        snmda[c].MgFactor = MgFactorsNMDA
        snmda[c].gamma = gammasNMDA

        c+=1
    }
} // end of proc insertSynapses()


proc fixCaIons() {
    // Set some specifications for the Ca and Cal ions. The following ion_style
    // statements don't affect the behaviour of the model but compared to not giving
    // them, speed up the simulation ca 5%, probably due to preventing eca from being
    // calculated each dt. ion_style has to be set for each compartment where the Ca ion
    // is used but gives no error when set for those compartments that don't use the ion.
    forall {
        ion_style("ca_ion", 2, 0, 0, 0, 1)
    }
    forall {
        ion_style("cal_ion", 2, 0, 0, 0, 1)
    }
    // Set the extracellular calcium concentrations (mM):
    cao0_ca_ion = 2
    calo0_cal_ion = 2
}

//DCNmechs()

Loading data, please wait...