// -------------------------------------------------------------- // Select which dendrites get na/kd channels // -------------------------------------------------------------- n_axon_seg = 5 // n_axon_seg = 25 create myelin[n_axon_seg],node[n_axon_seg] objectvar active, apical, basal, distal, dend, axon soma distance() dend = new SectionList() forsec "dend" dend.append() // distal dendrites distal = new SectionList() forsec "dend9" if (distance(0) > 550) distal.append() // apical apical = new SectionList() forsec "dend9" apical.append() // basal dendrites basal = new SectionList() forsec "dend" basal.append() forsec apical basal.remove() axon = new SectionList() hill axon.append() iseg axon.append() forsec "myelin" axon.append() forsec "node" axon.append() // active sections active = new SectionList() forall active.append() forsec "myelin" active.remove() // -------------------------------------------------------------- // Other geometry-specific locations // -------------------------------------------------------------- objref dsite dend9[76] dsite = new SectionRef() site_loc = 0.5 // distance = 416 um // synapses objref synloc synloc = new SectionList() forsec distal synloc.append() // along ap objref path path = new SectionList() dend9[76] path.append() dend9[72] path.append() dend9[68] path.append() dend9[62] path.append() dend9[56] path.append() dend9[50] path.append() dend9[48] path.append() dend9[38] path.append() dend9[30] path.append() dend9[24] path.append() dend9[8] path.append() dend9[0] path.append() // oblique objref oblique oblique = new SectionList() forsec apical oblique.append() forsec distal oblique.remove() forsec path oblique.remove() // -------------------------------------------------------------- // correct diameter of apical // -------------------------------------------------------------- double x[199],y[199],z[199],d[199] proc diam_interp() { local d0,d1 d0 = $1 d1 = $2 for i=0,n3d()-1 { x[i]=x3d(i) y[i]=y3d(i) z[i]=z3d(i) } if (numarg() > 2) { n = $3 } else { n = n3d() } max = n3d() pt3dclear() for i=0,n-1 { pt3dadd(x[i],y[i],z[i],i/n*d1+(1-i/n)*d0) } for i=n,max-1 { pt3dadd(x[i],y[i],z[i],i/n*d1+(1-i/n)*d0) } } proc shrink() { local factor factor = $1 n = n3d() for i=0,n-1 { x[i]=x3d(i) y[i]=y3d(i) z[i]=z3d(i) d[i]=diam3d(i) } pt3dclear() for i=0,n-1 { pt3dadd(x[i]*factor,y[i]*factor,z[i]*factor,d[i]*factor) } } // -------------------------------------------------------------- // discretization // -------------------------------------------------------------- max_len_dend = 50 forsec dend { n = L / max_len_dend if (n < 1) n = 1 nseg = n+1 } // give more segments to path max_len_path = 10 forsec path { n = L / max_len_path if (n < 1) n = 1 nseg = n+1 } // -------------------------------------------------------------- // Axon geometry // -------------------------------------------------------------- // hillock // hillock is only a few microns long (2-4) and tapered diam from 4 to 1-2 um // then initial segment follows, can be 100-150 um long with diam of ~ 1 um // myelin starts after initial segment // initial segment // Farinas & DeFelipe J Comp Neurol 1991: // L diam // cocallosal 21.6 +- 4.10 1.06 +- 0.18 // ispsilateral 22.24 +- 1.58 1.06 +- 0.12 hill { L = 10 nseg = 10 diam(0:1) = 4:1 // taper } iseg { // initial segment between hillock + myelin L = 15 nseg = 10 // for(x) diam(x) = 3.5*exp(-(x*L+hill.L)/5)+.5 diam = 1 } // construct myelinated axon with nodes of ranvier for i=0,n_axon_seg-1 { myelin[i] { // myelin element nseg = 25 L = 100 diam = 1.5 } node[i] { // nodes of Ranvier nseg = 1 L = 1.0 diam = 1.0 // nodes are thinner than axon } } iseg connect myelin[0](0), 1 myelin[0] connect node[0](0), 1 for i=0,n_axon_seg-2 { node[i] connect myelin[i+1](0), 1 myelin[i+1] connect node[i+1](0), 1 } access soma // -------------------------------------------------------------- // Spines // -------------------------------------------------------------- fold_spines = 0 spine_area = 0.83 // um^2 -- Harris // spines per linear um // Larkman (1991) JCN sd_apical = 6.3 sd_oblique = 1.5 sd_basal = 1.43 sd_distal = 0.91 proc add_spines() { local a spine_dens = $2 forsec $o1 { a =0 for(x) a=a+area(x) if (fold_spines) { // Folding factor // Jack et al (1989), Marjor et al (1994) F = (L*spine_area*spine_dens + a)/a L = L * F^(2/3) for(x) diam(x) = diam(x) * F^(1/3) } else { F = 1 + L*spine_area*spine_dens/a cm = c_m * F g_pas = F/rm } } }