begintemplate GranuleSpine public init, sup_deep_flag public head, neck create head, neck proc sup_deep_flag() { if($1) { forall {gbar_kdrmt=0.004 gbar_nax=0.04} } else { forall {gbar_kdrmt=0.005 gbar_nax=0.027 } } } proc init() { neck { L = 2 diam = .1 } head { L = 1 diam = 1 } connect head(0), neck(1) memb() } proc memb() { local taum taum = 27300 forall { insert pas insert nax insert kdrmt insert kamt Ra = 2.5 cm = 1.8 g_pas = 1/(taum/cm) e_pas = -55 ek = -80 ena = 50 gbar_nax =0.04 sh_nax=5 gbar_kdrmt=0.004 gbar_kamt =0.008 } } endtemplate GranuleSpine begintemplate Granule public segments, memb, init, setRN, sup_deep_flag public soma, priden, priden2, ns create soma, priden, priden2[1] objref rng[7], ns[7] proc sup_deep_flag() { if($1) { forall {gbar_kdrmt=0.004 gbar_nax =0.04} } else { forall {gbar_kdrmt=0.005 gbar_nax=0.027 } } } proc default() { soma { L = 8 diam=8 } priden { L = 400 diam=1.2 } priden2[0] { L = 400 diam=0.6 } connect priden(0), soma(1) connect priden2[0](0), priden(1) } proc segments() { forsec "priden" nseg = 1 //int(L/20)+1 forsec "soma" nseg = 1 } proc memb() { local taum taum = 27300 forall { insert pas insert nax insert kdrmt insert kamt Ra = 2.5 cm = 1.8 g_pas = 1/(taum/cm) e_pas = -55 ek = -80 ena = 50 gbar_nax =0.04 sh_nax=5 gbar_kdrmt=0.004 gbar_kamt =0.008 } } func setRN() { local rn, y0, a, b y0 = 38.8925 a = 579.4570 rn = $1 if(rn < (603-3*37) || rn > (603+3*37)) return 0 perc=1/((rn-y0)/a) priden.diam = perc * 1.2 priden2[0].diam = perc * 0.6 return 1 } proc init() { local i default() segments() memb() } endtemplate Granule