// nFit // (c) Charles CH Cohen, 2014-present // this software is released to the public under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 // International license (CC BY-NC-ND 4.0, in English). // for any questions, please email c.cohen@gmx.com // average spine density in apical and basal compartments. // may depende on species and cell type or location. // L5tt, mouse, S1, dens_sp = 0.45 (Knott et al. 2006) // L5tt, rat, V1, dens_sp = 1.65 (Larkman 1991) // L5tt, rat, S1, dens_sp = 0.5 (age-adjusted, Romand et al. 2011) dens_sp = 0.5 // avg surface area of avg spine. // L2/3, mouse, S1, asp = 0.99 (Knott et al. 2006) // L2/3, human, TeAC, asp = 3.9 (Eyal et al 2016) // L5tt, mouse, S1, asp = 1.44 (Knott et al. 2006) asp = 2 // dependence of spine location from soma // L2/3, rat, V1, basal/oblique 20um, apical trunk 75um (Larkman 1991) // L2/3, human, TeAC, basal/oblique 60um, apical trunk 100 um (Benavides-Piccione et al. 2013) // L5tt, rat, V1, basal/oblique 20um, apical trunk 100um (Larkman 1991) distbas_sp = 20 distapic_sp = 20 distaptrunk_sp = 100 // Get basal and apical length and area to which spinescaling applies. lbas_sp = 0 lapic_sp = 0 abas_sp = 0 aapic_sp = 0 // for the remainder of apical after removal of trunk objref xaptrunk proc defsps() {local iNseg, seg, l, lsec // get applicable abas forsec basal { iNseg = nseg for seg = 1, iNseg { soma distance(0, 0.5) l = distance((2*seg-1)/(2*iNseg)) if (l > distbas_sp) { abas_sp += area((2*seg-1)/(2*iNseg)) } } } // get applicable lbas forsec basal { iNseg = nseg for seg = 1,iNseg { soma distance(0, 0.5) l = distance((2*seg-1)/(2*iNseg)) if (l > distbas_sp) { seg = iNseg lsec = distance((2*seg-1)/(2*iNseg)) lbas_sp += lsec - l } } } // ensure aptrunk is at least 100 um ltrunk = 0 forsec aptrunk ltrunk += L if (ltrunk < distaptrunk_sp) print "apical trunk SectionList too short. Consider reducing distaptrunk_sp." // create sectionlist ex-aptrunk xaptrunk = new SectionList() // xaptrunk.append(apical) // xaptrunk.remove(aptrunk) forsec apical { xaptrunk.append() } forsec aptrunk { xaptrunk.remove() } if (ltrunk >= distaptrunk_sp) { // get applicable abas forsec apical { ifsec aptrunk { iNseg = nseg for seg = 1,iNseg { soma distance(0, 0.5) l = distance((2*seg-1)/(2*iNseg)) if (l > distaptrunk_sp) { aapic_sp += area((2*seg-1)/(2*iNseg)) } } } ifsec xaptrunk { iNseg = nseg for seg = 1,iNseg { soma distance(0, 0.5) l = distance((2*seg-1)/(2*iNseg)) if (l > distapic_sp) { aapic_sp += area((2*seg-1)/(2*iNseg)) } } } } // get applicable lapic forsec apical { ifsec aptrunk { iNseg = nseg for seg = 1,iNseg { soma distance(0, 0.5) l = distance((2*seg-1)/(2*iNseg)) if (l > distaptrunk_sp) { seg = iNseg lsec = distance((2*seg-1)/(2*iNseg)) lapic_sp += lsec - l } } } ifsec xaptrunk { iNseg = nseg for seg = 1,iNseg { soma distance(0, 0.5) l = distance((2*seg-1)/(2*iNseg)) if (l > distapic_sp) { seg = iNseg lsec = distance((2*seg-1)/(2*iNseg)) lapic_sp += lsec - l } } } } } }