// Data from Saraga et al. (2003) paper // changed morphology and some channel densities (BPG 12-1-09) // OLM_Cell begintemplate OLMCell public is_art public init, topol, basic_shape, subsets, geom, biophys, geom_nseg public pre_list, connect2target public soma, dend1, dend2, axon public all objref pre_list proc init() { topol() subsets() geom() biophys() geom_nseg() pre_list = new List() synapses() } create soma, dend1, dend2, axon proc topol() { local i connect dend1(0), soma(1) connect dend2(0), soma(0) connect axon(0), soma(1) basic_shape() } proc basic_shape() { soma {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(15, 0, 0, 1)} dend1 {pt3dclear() pt3dadd(15, 0, 0, 1) pt3dadd(90, 0, 0, 1)} dend2 {pt3dclear() pt3dadd(0, 0, 0, 1) pt3dadd(-74, 0, 0, 1)} axon {pt3dclear() pt3dadd(15, 0, 0, 1) pt3dadd(15, 120, 0, 1)} } objref all proc subsets() { local i objref all all = new SectionList() soma all.append() dend1 all.append() dend2 all.append() axon all.append() } proc geom() { forsec all { } soma { L = 20 diam = 10 } dend1 { L = 250 diam = 3 } dend2 { L = 250 diam = 3 } axon { L = 150 diam = 1.5 } } external lambda_f proc geom_nseg() { forsec all { nseg = int((L/(0.1*lambda_f(100))+.9)/2)*2 + 1 } } proc biophys() { Rm = 20000 //Rm = 1/5e-05 // original forsec all { Ra = 150 cm = 1.3 } soma { insert IA gkAbar_IA = 0.0165 insert Ih gkhbar_Ih = 0.0005 // gkhbar_Ih = 0.001385 insert Ksoma gksoma_Ksoma = 0.0319 insert Nasoma gnasoma_Nasoma = 0.0107 gl_Nasoma = 1/Rm el_Nasoma = -70 } dend1 { insert IA gkAbar_IA = 0.004 //gkAbar_IA = 0.013 //insert Ih //gkhbar_Ih = 0.001385 insert Kdend gkdend_Kdend = 2*0.023 insert Nadend gnadend_Nadend = 2*0.0117 gl_Nadend = 1/Rm el_Nadend = -70 } dend2 { insert IA gkAbar_IA = 0.004 //gkAbar_IA = 0.013 //insert Ih //gkhbar_Ih = 0.001385 insert Kdend gkdend_Kdend = 2*0.023 insert Nadend gnadend_Nadend = 2*0.0117 gl_Nadend = 1/Rm el_Nadend = -70 } axon { insert Kaxon gkaxon_Kaxon = 0.05104 insert Naaxon gnaaxon_Naaxon = 0.01712 gl_Naaxon = 1/Rm el_Naaxon = -70 } } obfunc connect2target() { localobj nc //$o1 target point process, optional $o2 returned NetCon soma nc = new NetCon(&v(1), $o1) nc.threshold = -10 if (numarg() == 2) { $o2 = nc } // for backward compatibility return nc } objref syn_ proc synapses() { /* E0 */ dend2 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA PC syn_.tau1 = 0.5 syn_.tau2 = 3 /* E1 */ dend1 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA PC syn_.tau1 = 0.5 syn_.tau2 = 3 /* I2 */ soma syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A Septum syn_.tau1 = 1 syn_.tau2 = 8 syn_.e = -75 /* I3 */ soma syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-B Septum syn_.tau1 = 35 syn_.tau2 = 100 syn_.e = -75 } func is_art() { return 0 } endtemplate OLMCell