// 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, 10) pt3dadd(15, 0, 0, 10) } dend1 { pt3dclear() pt3dadd(15, 0, 0, 3) pt3dadd(90, 0, 0, 3) } dend2 { pt3dclear() pt3dadd(0, 0, 0, 3) pt3dadd(-74, 0, 0, 3) } axon { pt3dclear() pt3dadd(15, 0, 0, 1.5) pt3dadd(15, 120, 0, 1.5) } } 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*2 //Rm = 1/5e-05 // original forsec all { Ra = 150 cm = 1.6 } soma { insert IA gkAbar_IA = 0.0165 insert Ih gkhbar_Ih = 0.00035*0.1 //gkhbar_Ih = 0.0005 //gkhbar_Ih = 0.001385 insert Ksoma gksoma_Ksoma = 0.0319*1.5 insert Nasoma gnasoma_Nasoma = 0.0107*1.2 gl_Nasoma = 1/Rm el_Nasoma = -67 } dend1 { insert IA gkAbar_IA = 0.004*1.2 //gkAbar_IA = 0.013 //insert Ih //gkhbar_Ih = 0.001385 insert Kdend gkdend_Kdend = 20*0.023 insert Nadend gnadend_Nadend = 2*0.0117 gl_Nadend = 1/Rm el_Nadend = -65 } dend2 { insert IA gkAbar_IA = 0.004*1.2 //gkAbar_IA = 0.013 //insert Ih //gkhbar_Ih = 0.001385 insert Kdend gkdend_Kdend = 20*0.023 insert Nadend gnadend_Nadend = 2*0.0117 gl_Nadend = 1/Rm el_Nadend = -65 } axon { insert Kaxon gkaxon_Kaxon = 0.05104 insert Naaxon gnaaxon_Naaxon = 0.01712 gl_Naaxon = 1/Rm el_Naaxon = -67 } } 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_PC() { /* E0 */ dend1 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA PC syn_.tau1 = 0.3 syn_.tau2 = 0.6 syn_.e = 0 /* E1 */ dend2 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA PC syn_.tau1 = 0.3 syn_.tau2 = 0.6 syn_.e = 0 } proc synapses_CA3() { /* E2 */ dend1 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA CA3 syn_.tau1 = 2.0 syn_.tau2 = 6.3 syn_.e = 0 /* E3 */ dend2 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // AMPA CA3 syn_.tau1 = 2.0 syn_.tau2 = 6.3 syn_.e = 0 } proc synapses_IN() { /* I4 */ dend1 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A Bistratified cells syn_.tau1 = 1.0 syn_.tau2 = 8.0 syn_.e = -75 /* I5 */ dend2 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A Bistratified cells syn_.tau1 = 1.0 syn_.tau2 = 8.0 syn_.e = -75 /* I6 */ dend1 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A OLM syn_.tau1 = 0.25 syn_.tau2 = 7.50 syn_.e = -75 /* I7 */ dend2 syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A OLM syn_.tau1 = 0.25 syn_.tau2 = 7.50 syn_.e = -75 /* I8 */ soma syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A VIP/CR syn_.tau1 = 1.0 syn_.tau2 = 8.0 syn_.e = -75 } proc synapses_SEP() { /* I9 */ soma syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-A Septum syn_.tau1 = 1 syn_.tau2 = 8 syn_.e = -75 /* I10 */ soma syn_ = new Exp2Syn(0.5) pre_list.append(syn_) // GABA-B Septum syn_.tau1 = 35 syn_.tau2 = 100 syn_.e = -75 } proc synapses() { synapses_PC() synapses_CA3() synapses_IN() synapses_SEP() } func is_art() { return 0 } endtemplate OLMCell