// DECLARE OBJECTS TO BE ASSIGNED DURING initChannels() CALL objref osec[10] // LOAD PARAMETERS FOR CHANNELS { load_file("channelParameters.hoc") } proc initChannels(){ // add in voltage-gated channels { forall { insert pas g_pas=1/(Rm) Ra=global_ra e_pas=Vleak insert id } soma.sec { insert nax gbar_nax=gnaSoma insert kdr gkdrbar_kdr=gkdr insert kap gkabar_kap=gkap insert kad gkabar_kad=0 insert pas e_pas=Vleak g_pas=1/Rm Ra=global_ra cm=Cm } forsec basalList { insert pas e_pas=Vleak Ra=global_ra for (x) { xdist=distance(x) if (xdist <= spinelimit) { g_pas(x) = 1/Rm cm(x) = Cm } else { g_pas(x) = spinefactor/Rm cm(x) = spinefactor*Cm } } insert nax insert kdr gkdrbar_kdr=gkdr insert kap insert kad gkabar_kap = 0 gkabar_kad = 0 for (x) { xdist = distance(x) xdistNoLimit = xdist if (xdist > dlimit) { xdist = dlimit } gkabar_kap(x) = 0 gkabar_kad(x) = 0 if (xdist > dprox) { gkabar_kad(x) = gkad*(1+xdist*dslope) } else { gkabar_kap(x) = gkap*(1+xdist*dslope) } } } soma.sec { area(0.5) distance() } forsec apicalList { insert pas e_pas=Vleak Ra=global_ra for (x) { xdist=distance(x) if (xdist <= spinelimit) { g_pas(x) = 1/Rm cm(x) = Cm } else { g_pas(x) = spinefactor/Rm cm(x) = spinefactor*Cm } } insert nax insert kdr gkdrbar_kdr=gkdr insert kap insert kad gkabar_kap = 0 gkabar_kad = 0 for (x) { xdist = distance(x) xdistNoLimit = xdist if (xdist > dlimit) { xdist = dlimit } gkabar_kap(x) = 0 gkabar_kad(x) = 0 if (xdist > dprox) { gkabar_kad(x) = gkad*(1+xdist*dslope) } else { gkabar_kap(x) = gkap*(1+xdist*dslope) } } } forsec obliqueList { for (x) { odist = distance(x) // odist is the distance of each segment along the oblique branch pdist_k = dlimit gkabar_kap(x) = gkap*(1+pdist_k*dslope+odist*okslope) gkabar_kad(x) = gkad*(1+pdist_k*dslope+odist*okslope) } } forsec tuftList { gbar_nax = gnaSlm } forsec ca3List { gbar_nax = gnaSr } soma.sec { gbar_nax = gnaSoma } soma.sec { distance() } } }