//**************************************** // GC-Ball.hoc Josef Bischofberger // modified by JM Schulz 2020 //**************************************** // simple model of a young DG granule cell // Passive parameters from Heigele et al. 2016, Nature Neuroscience 19:263-70 // Cap = 25 pF // Rin = 4 GOhm with Rm = 100000 Ohm cm^2 // debug_mode = 0 load_file("fixnseg.hoc") somaSurface = 0 denSurface= 0 proxSurface = 0 midSurface = 0 distSurface = 0 axonSurface = 0 totalSurface = 0 axonGC = 1 denSomaL = 10 // um somaLongL = 15 somaShortL = 10 axonL = 20 // 50 um denD0 = 2.5 // um soma border denD1 = 1.5 // proximal diam um denD2 = 1.5 // mid denD3 = 1.2 // dist denD4 = 0.75 fA1=0.4 // fraction of prox dendritic membrane fA2=0.3 // mid fA3=0.3 // distal gen1 = ndend // number of prox branches gen2 = 2 // mid gen3 = 2 // distal //********************************************* // Topology //********************************************* //dendrites: prox + middle + distal objref proxDen, middleDen, distalDen //, periSoma //periSoma = new SectionList() proxDen = new SectionList() middleDen = new SectionList() distalDen = new SectionList() nSections = gen1 + gen1*gen2 + gen1*gen2*gen3 create soma[4], dendrite[nSections],axon, AIS soma[0] connect soma[1](0), 1 soma[1] connect soma[2](0), 1 soma[2] connect soma[3](0), 1 //for (i=0; i<4; i=i+1){soma[i] periSoma.append()} // proximal dendrites connect to soma for i =0,gen1-1 {soma[3] connect dendrite[i](0), 1 dendrite[i] proxDen.append() } // middle dendrites for i =0,gen1-1 { for j =0, gen2-1{ dendrite[i] connect dendrite[gen1+(gen2*i)+j](0), 1 dendrite[gen1+(gen2*i)+j] middleDen.append() } } // distal dendrites for i =0, (gen1*gen2 -1) { for j =0, gen3-1{ dendrite[i+gen1] connect dendrite[gen1+gen1*gen2+(gen3*i)+j](0), 1 dendrite[gen1+gen1*gen2+(gen3*i)+j] distalDen.append() } } /*print "prox" forsec proxDen print secname() print "middle" forsec middleDen print secname() print "distal" forsec distalDen print secname()*/ soma[0] connect AIS(0), 0 AIS connect axon(0), 1 //forall{Ra = Rint } //************************************************************* // Geometry //************************************************************** // mature cell: dendrite 250 µm, diam 1.5:0.7, AIS nseg= 11, axon nseg = 101 // Cap = 100 ms/ 4GOhm = 25 pF => 2500 um^2 => ; L = 79.61 um // Cm = 1 uF/cm^2 = 0.01 uF/mm^2 = 0.01 pF/um^2 // lenght Cylinder = Area / 2PI r proc adjustL() { denMemArea=0 somMemArea=0 //*************** soma **************** firstDiam =0 lastDiam =0 soma[1] { pt3dclear() for i = -99, 97{ yi = sqrt(1-i*i/10000) //circle x^2 + y^2 = 1 pt3dadd(somaLongL/2*i/100,0,0,yi*somaShortL ) } firstDiam = sqrt(1-99*99/10000)*somaShortL lastDiam = yi*somaShortL nseg=11 } soma[0] {nseg=1 L = 0.1 diam(0:1) = firstDiam:firstDiam} //2.3 soma[2] {nseg=3 L = 3 diam(0:1) = lastDiam:denD0} soma[3] {nseg=11 L = denSomaL diam(0:1) = denD0:denD1} if (axonGC) { AIS {nseg=11 L = 32 diam(0:0.3) = firstDiam:1 //1.2 diam(0.3:1) = 1:0.3 } axon {nseg=11 L = axonL diam = 0.3} }else{ AIS {nseg =1 L=0.01 diam = 0.3} axon {nseg =1 L=0.01 diam = 0.3} } // to do : axon surface if (axonGC) { AIS {axonSurface = secArea() } axon {axonSurface = axonSurface + secArea()} } somaSurface = 0 for i = 0,3 { soma[i] { somaSurface = somaSurface +secArea()} } //*************** dendrites ************** //CylinderL = (1-propDendrite)*100*Cap/(12.00 *PI) //Length of a 12um Cylinder //calculate dendritic Area after substracting a constant soma-dend compartment denMemArea = 100*Cap - somaSurface - axonSurface L1 = fA1*denMemArea/(PI*(denD1+denD2)/2) /gen1 L2 = fA2*denMemArea/(PI*(denD2+denD3)/2) /(gen1*gen2) L3 = fA3*denMemArea/(PI*(denD3+denD4)/2) /(gen1*gen2*gen3) TDL = denSomaL + gen1*L1 + gen1*gen2*L2 + gen1*gen2*gen3*L3 // check better: // TDL = 0 // forall {TDL=TDL+L} forsec proxDen {nseg=11 L = L1 diam(0:1) = denD1 :denD2} forsec middleDen {nseg=11 L = L2 diam(0:1) = denD2 :denD3} forsec distalDen {nseg=11 L = L3 diam(0:1) = denD3 :denD4} //if (mature == 1){geom_nseg_shared()} // readjust nseg according to d_lambda(1kHz) denSurface= 0 forsec proxDen {proxSurface = proxSurface + secArea() //print secname() //print "Area =", secArea() } print "prox denSurface = ", proxSurface forsec middleDen {midSurface = midSurface + secArea()} print "middle denSurface = ", midSurface forsec distalDen {distSurface= distSurface+ secArea()} print "distal denSurface = ", distSurface denSurface= proxSurface + midSurface + distSurface totalSurface = somaSurface+ axonSurface + denSurface access soma[1] print "" print "relative contribution of dendrites to Cell membrane = ", denSurface/totalSurface print "" printf("Dendrites L1=%.2f um, L2=%.2f um, L3=%.2f um, TDL=%.2f um \n", L1, L2, L3, TDL) print "\nmeasured Surface of Dendrites = ", denSurface, "um^2" print "predicted Surface of Dendrites = ", denMemArea, "um^2" if (axonGC) { print "measured Surface of axon = ", axonSurface, "um^2" } print "\nmeasured Cell Surface = ", totalSurface , "um^2" print "required total Cap = ", Cap, "pF" } adjustL() // initialize Morphology which is updated later