/* This port was made from the FORTRAN code into the NEURON enviroment based on Traub RD, Buhl EH, Gloveli T, Whittington MA. Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na(+) Conductance or by Blocking BK Channels.J Neurophysiol. 2003 Feb;89(2):909-21. This port was made by Roger D Traub and Maciej Lazarewicz (mlazarew@seas.upenn.edu) Thanks to Ashlen P Reid for help with porting a morphology of the cell. */ begintemplate pyr3 public comp, Level1, Level2, Level3, Level4, Level5, Level6, Level7, Level8, Level9, Level10, Level11, Level12, Dendrites, Basal, Oblique, Prox, Dist, SD, Soma, inj1_, inj2_ create comp[75] create aux10to13[4], aux69, aux38, aux2to9[8] objref all, Dist, Oblique, Basal, Soma, Axon, Dendrites, SD, Prox objref Aux objref Level0, Level1, Level2, Level3, Level4, Level5, Level6, Level7, Level8, Level9, Level10, Level11, Level12 objref inj1_, inj2_ proc init() { titlePrint() create comp[75] create aux10to13[4], aux69, aux38, aux2to9[8] comp[0] delete_section() objref all, Dist, Oblique, Basal, Soma, Axon, Dendrites, SD, Prox objref Aux objref Level0, Level1, Level2, Level3, Level4, Level5, Level6, Level7, Level8, Level9, Level10, Level11, Level12 objref inj1_, inj2_ shape() geom() if( name_declared("method") != 5 ) method = 1 if( method == 1 ) spinecorr() setupfig( $1 ) set_active() if( method == 2 ) spinecorr() } proc titlePrint() { print "" print "-----" print "" print "Layer 2/3 Cortical Neurons Model based on Traub RD (2003)" print "" print "-----" } // 21 - figure 2, current injection 1.5 nA // 22 - figure 2, current injection 2.5 nA // 41 - figure 4, current injection 2.5 nA // 42 - figure 4, current injection 1.5 nA // 43 - figure 4, current injection 1.1 nA // 44 - figure 4, current injection 0.6 nA // 51 - figure 5, current injection 0.75 nA // 52 - figure 5, current injection 1.3 nA // 61 - figure 6, current injection 0.6 nA // 62 - figure 6, current injection 1.3 nA // 71 - figure 7, uper // 72 - figure 7, middle // 73 - figure 7, bottom proc setupfig() { fig = $1 if ( fig == -1 ) comp[1] { dnap = 0.0 dkc = 1.6 } if ( fig == -2 ) comp[1] { dnap = 1.25 dkc = 1.0 } if ( fig == 21 || fig == 22 ) comp[43] { g_pas = g_pas + 2.5/area(0.5) // in the paper is 20 nS, here is 25 nS inj1_ = new IClamp(0.5) inj1_.dur = 150 inj1_.del = 0 inj1_.amp = -0.15 inj2_ = new IClamp(0.5) inj2_.dur = 800 inj2_.del = 150 if( fig == 21 ) inj2_.amp = 1.5 if( fig == 22 ) inj2_.amp = 2.5 dnap = 0.0 dkc = 1.6 } if ( fig == 41 || fig == 42 || fig == 43 || fig == 44 ) comp[1] { inj1_ = new IClamp(0.5) inj1_.dur = 150 inj1_.del = 0 inj1_.amp = -0.15 inj2_ = new IClamp(0.5) inj2_.dur = 250 inj2_.del = 150 if( fig == 41 ) inj2_.amp = 2.5 if( fig == 42 ) inj2_.amp = 1.5 if( fig == 43 ) inj2_.amp = 1.1 if( fig == 44 ) inj2_.amp = 0.6 dnap = 0.0 dkc = 1.3 } if ( fig == 51 || fig == 52 ) comp[1] { inj1_ = new IClamp(0.5) inj1_.dur = 150 inj1_.del = 0 inj1_.amp = -0.15 inj2_ = new IClamp(0.5) inj2_.dur = 1000 inj2_.del = 150 if( fig == 51 ) inj2_.amp = 0.75 if( fig == 52 ) inj2_.amp = 1.3 dnap = 0 dkc = 1.6 } if ( fig == 61 || fig == 62 ) comp[1] { inj1_ = new IClamp(0.5) inj1_.dur = 150 inj1_.del = 0 inj1_.amp = -0.15 inj2_ = new IClamp(0.5) inj2_.dur = 2500 inj2_.del = 150 if( fig == 61 ) inj2_.amp = 0.6 if( fig == 62 ) inj2_.amp = 1.3 dnap = 0.7 dkc = 1.6 } if ( fig == 71 || fig == 72 || fig == 73 ) comp[1] { inj1_ = new IClamp(0.5) inj1_.dur = 150 inj1_.del = 0 inj1_.amp = -0.15 inj2_ = new IClamp(0.5) inj2_.dur = 2500 inj2_.del = 150 inj2_.amp = 0.7 if( fig == 71 ) dnap = 0 if( fig == 72 ) dnap = 0.7 if( fig == 73 ) dnap = 1.0 dkc = 1.6 } } proc spinecorr() { forsec Dendrites { if (method == 1) { L = L * 2 Ra = Ra / 2 } if (method == 2) { g_pas = g_pas * 2 cm = cm * 2 phi_cad = phi_cad / 2 gbar_naf = gbar_naf * 2 gbar_nap = gbar_nap * 2 gbar_kdr = gbar_kdr * 2 gbar_ka = gbar_ka * 2 gbar_kc = gbar_kc * 2 gbar_kahp = gbar_kahp * 2 gbar_k2 = gbar_k2 * 2 gbar_km = gbar_km * 2 gbar_cat = gbar_cat * 2 gbar_cal = gbar_cal * 2 gbar_ar = gbar_ar * 2 } } print "Spine correction with method: ", method } proc set_active() { forsec Dendrites { insert cad insert naf insert nap insert kdr insert ka insert kc insert kahp insert k2 insert km insert cat insert cal insert ar } forsec Soma { insert cad insert naf insert nap insert kdr insert ka insert kc insert kahp insert k2 insert km insert cat insert cal insert ar } forsec Axon { insert naf insert kdr insert ka insert k2 gbar_naf = 400e-3 gbar_kdr = 400e-3 gbar_ka = 2e-3 gbar_k2 = 0.1e-3 } comp[1] ceiling_cad = 1000 forsec Soma { phi_cad = 52 / 2e-3 beta_cad = 1 / 100 // in the paper beta = 50 [ms] gbar_naf = 150e-3 * 1.25 gbar_nap = dnap * 0.0032 * gbar_naf gbar_kdr = 125e-3 gbar_ka = 30e-3 gbar_kc = dkc * 7.5e-3 // in tha paper 'dkc * 12e-3' gbar_kahp = 0.1e-3 gbar_k2 = 0.1e-3 gbar_km = 2.5 * 1.5e-3 * 2 gbar_cat = 0.1e-3 gbar_cal = 0.5e-3 gbar_ar = 0.25e-3 } forsec Dendrites { phi_cad = 52 / 2e-3 beta_cad = 1 / 20 gbar_naf = 6.25e-3 gbar_nap = dnap * 0.0032 * gbar_naf gbar_kdr = 0 gbar_ka = 2e-3 gbar_kc = 0 gbar_kahp = 0.1e-3 gbar_k2 = 0.1e-3 gbar_km = 2.5 * 1.5e-3 * 2 gbar_cat = 0.1e-3 gbar_cal = 0.5e-3 gbar_ar = 0.25e-3 } forsec Prox { gbar_naf = 75e-3 * 1.25 gbar_nap = dnap * 0.0032 * gbar_naf gbar_kdr = 75e-3 * 1.25 gbar_kc = dkc * 7.5e-3 // in tha paper 'dkc * 12e-3' } forsec Dist { gbar_cal = 3e-3 } comp[38] { gbar_ka = 30e-3 gbar_naf = 125e-3 gbar_nap = dnap * 0.0032 * gbar_naf // in the FORTRAN code 0.004 gbar_kdr = 125e-3 // in tha paper '75e-3 * 1.25' gbar_kc = dkc * 7.5e-3 // in tha paper 'dkc * 12e-3' } forsec Axon { ena = 50 ek = -95 } forsec Dendrites { ena = 50 ek = -95 eca = 125 } forsec Soma { ena = 50 ek = -95 eca = 125 } } proc geom() { //Apical for i=61,68 connect comp[i](0), comp[i-8](1) for i=53,60 connect comp[i](0), comp[i-8](1) for i=49,52 connect comp[i](0), comp[44](1) for i=45,48 connect comp[i](0), comp[43](1) for i=43,44 connect comp[i](0), comp[i-2](1) for i=41,42 connect comp[i](0), comp[40](1) connect comp[40](0), comp[39](1) connect comp[39](0), comp[38](1) // connect comp[38](0), comp[1](1) connect comp[38](0), aux38(1) connect aux38(0), comp[1](0.5) // Oblique apical for i=0,3 connect aux10to13[i](0), comp[38](0.5) for i=0,3 connect comp[i+10](0), aux10to13[i](1) // for i=0,3 connect comp[i+10](0), comp[38](0.5) for i=0,3 connect comp[i+22](0), comp[i+10](1) for i=0,3 connect comp[i+34](0), comp[i+22](1) // Basal for i=0,7 connect aux2to9[i](0), comp[1](0.5) for i=0,7 connect comp[i+2](0), aux2to9[i](1) // for i=0,7 connect comp[i+2](0), comp[1](0) for i=0,7 connect comp[i+14](0), comp[i+2](1) for i=0,7 connect comp[i+26](0), comp[i+14](1) // Axon connect aux69(0), comp[1](0.5) connect comp[69](0), aux69(1) // connect comp[69](0), comp[1](0.5) connect comp[70](0), comp[69](1) for i=0,1 connect comp[71+i*2](0), comp[70](1) for i=0,1 connect comp[72+i*2](0), comp[71+i*2](1) Level0 = new SectionList() for i=69,74 comp[i] Level0.append() Level1 = new SectionList() comp[1] Level1.append() Level2 = new SectionList() for i=2,13 comp[i] Level2.append() Level3 = new SectionList() for i=14,25 comp[i] Level3.append() Level4 = new SectionList() for i=26,37 comp[i] Level4.append() Level5 = new SectionList() comp[38] Level5.append() Level6 = new SectionList() comp[39] Level6.append() Level7 = new SectionList() comp[40] Level7.append() Level8 = new SectionList() for i=41,42 comp[i] Level8.append() Level9 = new SectionList() for i=43,44 comp[i] Level9.append() Level10 = new SectionList() for i=45,52 comp[i] Level10.append() Level11 = new SectionList() for i=53,60 comp[i] Level11.append() Level12 = new SectionList() for i=60,68 comp[i] Level12.append() all = new SectionList() for i=1,74 comp[i] all.append() Axon = new SectionList() for i=69,74 comp[i] Axon.append() Dendrites = new SectionList() for i=2,68 comp[i] Dendrites.append() SD = new SectionList() for i=1,68 comp[i] SD.append() Dist = new SectionList() forsec Level10 Dist.append() forsec Level11 Dist.append() forsec Level12 Dist.append() Basal = new SectionList() for i=2,9 comp[i] Basal.append() for i=14,21 comp[i] Basal.append() for i=26,33 comp[i] Basal.append() Oblique = new SectionList() for i=10,13 comp[i] Oblique.append() for i=22,25 comp[i] Oblique.append() for i=34,37 comp[i] Oblique.append() Prox = new SectionList() forsec Level2 Prox.append() forsec Level6 Prox.append() Soma = new SectionList() comp[1] Soma.append() Aux = new SectionList() for i=0,3 aux10to13[i] Aux.append() aux69 Aux.append() aux38 Aux.append() for i=0,7 aux2to9[i] Aux.append() forsec Dist { diam = 1.6 } forsec Oblique { diam = 1 } forsec Basal { diam = 1 } forsec Soma { L = 15 diam = 16 } forsec Dendrites { L = 50 } forsec Aux { L = 15 / 2 diam = 16 } for i=0,3 aux10to13[i] { L = 50 / 2 diam = 8 } comp[38] { diam = 8 } comp[39] { diam = 8 * 0.9 } comp[40] { diam = 8 * 0.8 } forsec Level8 { diam = 4 } forsec Level9 { diam = 4 } comp[69] { L = 25 diam = 1.8 } comp[70] { L = 50 diam = 1.4 } for i=71,74 comp[i] { L = 50 diam = 1 } forsec Aux { Ra = 250 cm = 0 } forsec Soma { Ra = 250 cm = 0.9 insert pas g_pas = 2e-05 e_pas = -70 } forsec Axon { Ra = 100 cm = 0.9 insert pas g_pas = 0.001 e_pas = -70 } forsec Dendrites { Ra = 250 cm = 0.9 insert pas g_pas = 2e-05 e_pas = -70 } access comp[1] } proc shape() { aux10to13[0] {pt3dclear() pt3dadd(-134, -14, 0, 1) pt3dadd(-104, -14, 0, 1)} aux10to13[1] {pt3dclear() pt3dadd(-134, -14, 0, 1) pt3dadd(-104, -14, 0, 1)} aux10to13[2] {pt3dclear() pt3dadd(-134, -14, 0, 1) pt3dadd(-104, -14, 0, 1)} aux10to13[3] {pt3dclear() pt3dadd(-134, -14, 0, 1) pt3dadd(-104, -14, 0, 1)} aux69 {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux38 {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[0] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[1] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[2] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[3] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[4] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[5] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[6] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} aux2to9[7] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} comp[1] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-134, -14, 0, 1)} comp[38] {pt3dclear() pt3dadd(-134, -14, 0, 1) pt3dadd(-104, -14, 0, 1)} comp[39] {pt3dclear() pt3dadd(-104, -14, 0, 1) pt3dadd(-74, -14, 0, 1)} comp[40] {pt3dclear() pt3dadd(-74, -14, 0, 1) pt3dadd(-44, -14, 0, 1)} comp[41] {pt3dclear() pt3dadd(-44, -14, 0, 1) pt3dadd(-14, 30, 0, 1)} comp[43] {pt3dclear() pt3dadd(-14, 30, 0, 1) pt3dadd(0, 45, 0, 1)} comp[45] {pt3dclear() pt3dadd(0, 45, 0, 1) pt3dadd(45, 75, 0, 1)} comp[46] {pt3dclear() pt3dadd(0, 45, 0, 1) pt3dadd(45, 60, 0, 1)} comp[47] {pt3dclear() pt3dadd(0, 45, 0, 1) pt3dadd(45, 30, 0, 1)} comp[48] {pt3dclear() pt3dadd(0, 45, 0, 1) pt3dadd(45, 15, 0, 1)} comp[53] {pt3dclear() pt3dadd(45, 75, 0, 1) pt3dadd(75, 75, 0, 1)} comp[54] {pt3dclear() pt3dadd(45, 60, 0, 1) pt3dadd(75, 60, 0, 1)} comp[55] {pt3dclear() pt3dadd(45, 30, 0, 1) pt3dadd(75, 30, 0, 1)} comp[56] {pt3dclear() pt3dadd(45, 15, 0, 1) pt3dadd(75, 15, 0, 1)} comp[61] {pt3dclear() pt3dadd(75, 75, 0, 1) pt3dadd(90, 90, 0, 1)} comp[62] {pt3dclear() pt3dadd(75, 60, 0, 1) pt3dadd(90, 75, 0, 1)} comp[63] {pt3dclear() pt3dadd(75, 30, 0, 1) pt3dadd(90, 15, 0, 1)} comp[64] {pt3dclear() pt3dadd(75, 15, 0, 1) pt3dadd(90, 0, 0, 1)} comp[42] {pt3dclear() pt3dadd(-44, -14, 0, 1) pt3dadd(-14, -59, 0, 1)} comp[44] {pt3dclear() pt3dadd(-14, -59, 0, 1) pt3dadd(0, -74, 0, 1)} comp[49] {pt3dclear() pt3dadd(0, -74, 0, 1) pt3dadd(45, -44, 0, 1)} comp[50] {pt3dclear() pt3dadd(0, -74, 0, 1) pt3dadd(45, -59, 0, 1)} comp[51] {pt3dclear() pt3dadd(0, -74, 0, 1) pt3dadd(45, -89, 0, 1)} comp[52] {pt3dclear() pt3dadd(0, -74, 0, 1) pt3dadd(45, -104, 0, 1)} comp[57] {pt3dclear() pt3dadd(45, -44, 0, 1) pt3dadd(75, -44, 0, 1)} comp[58] {pt3dclear() pt3dadd(45, -59, 0, 1) pt3dadd(75, -59, 0, 1)} comp[59] {pt3dclear() pt3dadd(45, -89, 0, 1) pt3dadd(75, -89, 0, 1)} comp[60] {pt3dclear() pt3dadd(45, -104, 0, 1) pt3dadd(75, -104, 0, 1)} comp[65] {pt3dclear() pt3dadd(75, -44, 0, 1) pt3dadd(90, -29, 0, 1)} comp[66] {pt3dclear() pt3dadd(75, -59, 0, 1) pt3dadd(90, -44, 0, 1)} comp[67] {pt3dclear() pt3dadd(75, -89, 0, 1) pt3dadd(90, -104, 0, 1)} comp[68] {pt3dclear() pt3dadd(75, -104, 0, 1) pt3dadd(90, -119, 0, 1)} comp[10] {pt3dclear() pt3dadd(-104, -14, 0, 1) pt3dadd(-119, 0, 0, 1)} comp[22] {pt3dclear() pt3dadd(-119, 0, 0, 1) pt3dadd(-119, 30, 0, 1)} comp[34] {pt3dclear() pt3dadd(-119, 30, 0, 1) pt3dadd(-119, 60, 0, 1)} comp[11] {pt3dclear() pt3dadd(-104, -14, 0, 1) pt3dadd(-89, 0, 0, 1)} comp[23] {pt3dclear() pt3dadd(-89, 0, 0, 1) pt3dadd(-89, 30, 0, 1)} comp[35] {pt3dclear() pt3dadd(-89, 30, 0, 1) pt3dadd(-89, 60, 0, 1)} comp[12] {pt3dclear() pt3dadd(-104, -14, 0, 1) pt3dadd(-119, -29, 0, 1)} comp[24] {pt3dclear() pt3dadd(-119, -29, 0, 1) pt3dadd(-119, -59, 0, 1)} comp[36] {pt3dclear() pt3dadd(-119, -59, 0, 1) pt3dadd(-119, -89, 0, 1)} comp[13] {pt3dclear() pt3dadd(-104, -14, 0, 1) pt3dadd(-89, -29, 0, 1)} comp[25] {pt3dclear() pt3dadd(-89, -29, 0, 1) pt3dadd(-89, -59, 0, 1)} comp[37] {pt3dclear() pt3dadd(-89, -59, 0, 1) pt3dadd(-89, -89, 0, 1)} comp[2] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-164, 30, 0, 1)} comp[14] {pt3dclear() pt3dadd(-164, 30, 0, 1) pt3dadd(-179, 45, 0, 1)} comp[26] {pt3dclear() pt3dadd(-179, 45, 0, 1) pt3dadd(-194, 60, 0, 1)} comp[3] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-179, 30, 0, 1)} comp[15] {pt3dclear() pt3dadd(-179, 30, 0, 1) pt3dadd(-194, 45, 0, 1)} comp[27] {pt3dclear() pt3dadd(-194, 45, 0, 1) pt3dadd(-209, 60, 0, 1)} comp[4] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-194, 15, 0, 1)} comp[16] {pt3dclear() pt3dadd(-194, 15, 0, 1) pt3dadd(-209, 30, 0, 1)} comp[28] {pt3dclear() pt3dadd(-209, 30, 0, 1) pt3dadd(-224, 45, 0, 1)} comp[5] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-194, 0, 0, 1)} comp[17] {pt3dclear() pt3dadd(-194, 0, 0, 1) pt3dadd(-209, 15, 0, 1)} comp[29] {pt3dclear() pt3dadd(-209, 15, 0, 1) pt3dadd(-224, 30, 0, 1)} comp[6] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-194, -29, 0, 1)} comp[18] {pt3dclear() pt3dadd(-194, -29, 0, 1) pt3dadd(-209, -44, 0, 1)} comp[30] {pt3dclear() pt3dadd(-209, -44, 0, 1) pt3dadd(-224, -59, 0, 1)} comp[7] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-164, -59, 0, 1)} comp[19] {pt3dclear() pt3dadd(-164, -59, 0, 1) pt3dadd(-179, -74, 0, 1)} comp[31] {pt3dclear() pt3dadd(-179, -74, 0, 1) pt3dadd(-194, -89, 0, 1)} comp[8] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-194, -44, 0, 1)} comp[20] {pt3dclear() pt3dadd(-194, -44, 0, 1) pt3dadd(-209, -59, 0, 1)} comp[32] {pt3dclear() pt3dadd(-209, -59, 0, 1) pt3dadd(-224, -74, 0, 1)} comp[9] {pt3dclear() pt3dadd(-149, -14, 0, 1) pt3dadd(-179, -59, 0, 1)} comp[21] {pt3dclear() pt3dadd(-179, -59, 0, 1) pt3dadd(-194, -74, 0, 1)} comp[33] {pt3dclear() pt3dadd(-194, -74, 0, 1) pt3dadd(-209, -89, 0, 1)} comp[69] {pt3dclear() pt3dadd(-134, -14, 0, 1) pt3dadd(-134, -44, 0, 1)} comp[70] {pt3dclear() pt3dadd(-134, -44, 0, 1) pt3dadd(-134, -74, 0, 1)} comp[71] {pt3dclear() pt3dadd(-134, -74, 0, 1) pt3dadd(-149, -89, 0, 1)} comp[72] {pt3dclear() pt3dadd(-149, -89, 0, 1) pt3dadd(-149, -129, 0, 1)} comp[73] {pt3dclear() pt3dadd(-134, -74, 0, 1) pt3dadd(-134, -104, 0, 1)} comp[74] {pt3dclear() pt3dadd(-134, -104, 0, 1) pt3dadd(-134, -134, 0, 1)} } endtemplate pyr3