Drosophila projection neuron electrotonic structure (Gouwens and Wilson 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:118662
We address the issue of how electrical signals propagate in Drosophila neurons by modeling the electrotonic structure of the antennal lobe projection neurons innervating glomerulus DM1. The readme file contains instructions for running the model.
Reference:
1 . Gouwens NW, Wilson RI (2009) Signal propagation in Drosophila central neurons. J Neurosci 29:6239-49 [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: Drosophila;
Cell Type(s): Drosophila antennal lobe DM1 projection neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Invertebrate; Electrotonus;
Implementer(s): Gouwens, Nathan W [nathan_gouwens at hms.harvard.edu];
/*
 *
 * A neuroConstruct helper file to print out details of a single cell's overall state
 * and a helper function for the current NEURON state
 *
 */

objref mt, ms
mt = new MechanismType(0)
         
double totParamVal[32] // max number params

dummyRevPot = 99999


proc cellInfo() {

    totalDiam = 0 
    totalNseg = 0 
    totalL = 0 
    
    totalRa = 0
    totalCm = 0
    
    numSections = 0 
    
    forall {
    
        totalDiam = totalDiam + diam
        totalNseg = totalNseg + nseg
        totalRa = totalRa + Ra
        totalCm = totalCm + cm
        
        totalL = totalL + L
        numSections = numSections + 1
    }
    
    print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
    
    print "+        Number of sections: ", numSections
    print "+        Total diam:         ", totalDiam
    print "+        Total length        ", totalL
    print "+        Total nseg:         ", totalNseg
    print "+        Total Ra:           ", totalRa
    print "+        Total cm:           ", totalCm
    print "+        "
    
    strdef mname
    strdef pname
    
    totEk = 0
    totko = 0
    totki = 0
    numEk = 0
    totENa = 0
    totnao = 0
    totnai = 0
    numENa = 0
    totECa = 0
    totcai = 0
    totcao = 0
    numECa = 0
    
    forall { 
        if (ismembrane("k_ion")) {
            numEk = numEk +1
            totEk = totEk + ek
            totko = totko + ko
            totki = totki + ki
        }
        if (ismembrane("na_ion")) {
            numENa = numENa +1
            totENa = totENa + ena
            totnao = totnao + nao
            totnai = totnai + nai
        }
        if (ismembrane("ca_ion")) {
            numECa = numECa +1
            totECa = totECa + eca
            totcai = totcai + cai
            totcao = totcao + cao
        }
     }
     
     if ( numEk != 0 ){
        print "+        k ion on ", numEk,"secs, ave rev pot:  ", (totEk/numEk), ", int conc: ",(totki/numEk), ", ext conc: ",(totko/numEk)
     }
     if ( numENa != 0 ){
        print "+        na ion on ", numENa,"secs, ave rev pot:  ", (totENa/numENa), ", int conc: ",(totnai/numENa), ", ext conc: ",(totnao/numENa)
     }
     if ( numECa != 0 ){
        print "+        ca ion on ", numECa,"secs, ave rev pot:  ", (totECa/numECa), ", int conc: ",(totcai/numECa), ", ext conc: ",(totcao/numECa)
     }
    
    print "+        "
    
    for i=0, mt.count()-1 {
         mt.select(i)
         mt.selected(mname)
         numPresent = 0
         ms = new MechanismStandard(mname, 1)
         numParams = ms.count()
         
         
         for j=0, numParams-1 {
            totParamVal[j] = 0
         }
         
         
         forall { 
            if (ismembrane(mname)) {
                numPresent = numPresent + 1
                
                ms.in() // load with values of current section
                
                for j=0, numParams-1 {
                    ms.name(pname, j)
                    //print "Param: ", pname, " value: ", ms.get(pname)
                    
                    totParamVal[j] = totParamVal[j] + ms.get(pname)
                }
            }
         }
         
         if (numPresent>0) {
            print "+        Mechanism:  ", mname, " present on: ", numPresent, "sections, num params: ", numParams, ""
            for j=0, numParams-1 {
                ms.name(pname, j)
                print "+            - ", pname, " AVE value all sections: ", (totParamVal[j]/numPresent)
            }
         }
    }
    
    
    print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++"


}




proc simInfo() {

    print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
    
    
    active = cvode.active()
    
    
    print "+    Simulation temperature:       ", celsius
    print "+    tstop:                        ", tstop
    print "+    dt:                           ", dt
    print "+    Variable time step active:    ", active
    
    print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++"

}

Loading data, please wait...