begintemplate Temperature external strf, cellList public init, reset, correct proc init() { q10_g_pas = 1.98 // simulations. Passive membrane parameters (Ra, cm, g_pas) q10_Ra = 0.80 // have no built-in temperature dependence. Instead, they q10_cm = 0.96 // will be scaled when calling membrane.hoc using Q10 values // according to: // Trevelyan AJ, Jack JJB (2002), J Physiol 539:623-636 // Note that these Q10 values have been obtained for LII/III // pyramidal cells, not for granule cells. // defaults: // celsius = 24 (our recording temperature) // q10_g_pas = 1.98 // q10_Ra = 0.80 // q10_cm = 0.96 /*if (strf.is_name("celsius_init")) { celsius = celsius_init }else{ celsius = 25 // This is to roughly account for the effects of temperature on }*/ } proc reset() { local CELLINDEX for CELLINDEX = 0,cellList.count()-1 { if (cellList.o(CELLINDEX).is_artificial == 0) { forsec cellList.o(CELLINDEX).allreg { if (ismembrane("pas")) { g_pas = g_pas / q10_g_pas^((celsius-24)/10) Ra = Ra / q10_Ra^((celsius-24)/10) cm = cm / q10_cm^((celsius-24)/10) } } } } } proc correct() { local CELLINDEX //forsec reg_tree_all { celsius = $1 for CELLINDEX = 0,cellList.count()-1 { if (cellList.o(CELLINDEX).is_artificial == 0) { forsec cellList.o(CELLINDEX).allreg { if (ismembrane("pas")) { g_pas = g_pas * q10_g_pas^((celsius-24)/10) Ra = Ra * q10_Ra^((celsius-24)/10) cm = cm * q10_cm^((celsius-24)/10) } } } } } endtemplate Temperature proc addsurf_spines() { for CELLINDEX = 0,cellList.count()-1 { if (cellList.o(CELLINDEX).is_artificial == 0) { forsec cellList.o(CELLINDEX).allreg { if (ismembrane("spines")) { if (scale_spines > 0) { g_pas = g_pas * scale_spines cm = cm * scale_spines /*if (ismembrane("Kir32")) { gkbar_Kir32 = gkbar_Kir32 * scale_spines } if (ismembrane("ichan3")) { gkabar_ichan3 = gkabar_ichan3 * scale_spines } */ }else{ if (density_spines > 0) { x1 = arc3d(0) for i=1, n3d()-1 { x1 += arc3d(i) } g_pas = g_pas * (1 + density_spines * x1 * 1.2 / area(0.5) ) cm = cm * (1 + density_spines * x1 * 1.2 / area(0.5) ) print "spine factor: ", 1+ density_spines * x1 * 1.2 / area(0.5) }else{ if (count_spines > 0) { cm = cm * (1 + count_spines * 1.2 / area(0.5) ) g_pas = g_pas * (1 + count_spines * 1.2 / area(0.5) ) print "spine factor: ", 1+ count_spines * 1.2 / area(0.5) } } } } } } } }