begintemplate poolosyncell
// public variables
public is_art, gid, randi, Vrest
public init, topol, basic_shape, subsets, geom, biophys
public pre_list, connect_pre
public soma, apical, basal, axon
public all, basal_list, apical_list, soma_list, axon_list, rad_list, lm_list, dendrite_list
public x, y, z, position, myroot, Vrest
public pyramidalcell_list, axoaxoniccell_list, bistratifiedcell_list, cckcell_list
public ivycell_list, ngfcell_list, olmcell_list, pvbasketcell_list, scacell_list
public eccell_list, ca3cell_list, mscell_list
public NumSoma, NumApical, NumBasal, NumAxon
// strings
strdef myroot
// objects
objref syn, pre_list, templist, rootlist, this
//external variables
external numCellTypes, cellType
// create the sections[segments]
NumSoma=13
NumApical=127
NumBasal=60
NumAxon=2
create soma[NumSoma], apical[NumApical], basal[NumBasal], axon[NumAxon]
// set the initialization code, which is run whenever a new object
// of this class is instantiated
proc init() {
gid = $1
randi = $2
Vrest = -66 // -65 // $3 resting membrane potential in mV
// cell sections: soma, dendrites, axon
append_sections() // append all sections to the section list
connect_sections()// connect soma, dendrites, axon
size_sections1() // set the size dimensions of each section
size_sections2() // set the size dimensions of each section
size_sections3() // set the size dimensions of each section
define_shape()
// subcellular mechanisms: channels, pumps, transporters
mechinit() // local fcn: set values for max conductances and reversal potentials of ion channels and other ephys parameters that are subject to fitting
insert_mechs() // local fcn: insert ion channels and actually set values determined in the mechinit fcn
set_nseg() // set the number of segments in each section
// if this is driven by an error-minimization rule,
// make sure to do it after setting the morphology
// and inserting the mechanisms, as it depends on those
get_root()
rotate_shape()
pre_list = new List() // define a list for the presynaptic connections
define_synapses($3) // local fcn: define all possible synaptic connections received by this cell
}
proc connect_sections() {
soma[0] {connect soma[1] (0), 1
connect basal[0] (0),0
connect basal[20] (0),0
connect basal[23] (0),0
connect basal[41] (0),0}
soma[1] connect soma[2] (0), 1
soma[2] {connect soma[3] (0), 1
connect axon[0](0),0.5}
axon[0] connect axon[1](0),1
soma[3] connect soma[4] (0), 1
soma[4] connect soma[5] (0), 1
soma[5] connect soma[6] (0), 1
soma[6] connect soma[7] (0), 1
soma[7] connect soma[8] (0), 1
soma[8] connect soma[9] (0), 1
soma[9] connect soma[10] (0), 1
soma[10] connect soma[11] (0), 1
soma[11] connect soma[12] (0), 1
soma[12] connect apical[0] (0), 1
apical[0] connect apical[ 1] (0), 1
apical[1] connect apical[ 2] (0), 1
apical[2] {connect apical[121] (0), 1
connect apical[ 3] (0), 1}
apical[3] connect apical[ 4] (0), 1
apical[4] connect apical[ 5] (0), 1
apical[5] {connect apical[ 6] (0), 1
connect apical[113] (0), 1}
apical[6] {connect apical[ 7] (0), 1
connect apical[112] (0), 1}
apical[7] {connect apical[106] (0), 1
connect apical[ 8] (0), 1}
apical[8] {connect apical[ 9] (0), 1
connect apical[105] (0), 1}
apical[9] {connect apical[103] (0), 1
connect apical[ 10] (0), 1}
apical[10] {connect apical[ 11] (0), 1
connect apical[102] (0), 1}
apical[11] {connect apical[101] (0), 1
connect apical[ 12] (0), 1}
apical[12] {connect apical[ 13] (0), 1
connect apical[90] (0), 1}
apical[13] {connect apical[78] (0), 1
connect apical[ 14] (0), 1}
apical[14] {connect apical[76] (0), 1
connect apical[ 15] (0), 1}
apical[15] {connect apical[ 16] (0), 1
connect apical[64] (0), 1}
apical[16] {connect apical[26] (0), 1
connect apical[ 17] (0), 1}
apical[17] connect apical[ 18] (0), 1
apical[18] {connect apical[ 19] (0), 1
connect apical[21] (0), 1}
apical[19] connect apical[ 20] (0), 1
apical[21] {connect apical[ 22] (0), 1
connect apical[23] (0), 1}
apical[23] {connect apical[ 24] (0), 1
connect apical[25] (0), 1}
apical[26] connect apical[ 27] (0), 1
apical[27] {connect apical[ 28] (0), 1
connect apical[39] (0), 1}
apical[28] connect apical[ 29] (0), 1
apical[29] connect apical[ 30] (0), 1
apical[30] {connect apical[ 31] (0), 1
connect apical[38] (0), 1}
apical[31] {connect apical[ 32] (0), 1
connect apical[35] (0), 1}
apical[32] {connect apical[ 33] (0), 1
connect apical[34] (0), 1}
apical[35] {connect apical[ 36] (0), 1
connect apical[37] (0), 1}
apical[39] {connect apical[ 40] (0), 1
connect apical[59] (0), 1}
apical[40] {connect apical[ 41] (0), 1
connect apical[50] (0), 1}
apical[41] {connect apical[ 42] (0), 1
connect apical[49] (0), 1}
apical[42] connect apical[ 43] (0), 1
apical[43] {connect apical[ 44] (0), 1
connect apical[48] (0), 1}
apical[44] {connect apical[ 45] (0), 1
connect apical[47] (0), 1}
apical[45] connect apical[ 46] (0), 1
apical[50] {connect apical[ 51] (0), 1
connect apical[52] (0), 1}
apical[52] {connect apical[ 53] (0), 1
connect apical[56] (0), 1}
apical[53] {connect apical[ 54] (0), 1
connect apical[55] (0), 1}
apical[56] {connect apical[ 57] (0), 1
connect apical[58] (0), 1}
apical[59] {connect apical[ 60] (0), 1
connect apical[61] (0), 1}
apical[61] {connect apical[ 62] (0), 1
connect apical[63] (0), 1}
apical[64] {connect apical[ 65] (0), 1
connect apical[72] (0), 1}
apical[65] {connect apical[ 66] (0), 1
connect apical[71] (0), 1}
apical[66] {connect apical[ 67] (0), 1
connect apical[70] (0), 1}
apical[67] {connect apical[ 68] (0), 1
connect apical[69] (0), 1}
apical[72] connect apical[ 73] (0), 1
apical[73] {connect apical[ 74] (0), 1
connect apical[75] (0), 1}
apical[76] connect apical[ 77] (0), 1
apical[78] {connect apical[ 79] (0), 1
connect apical[80] (0), 1}
apical[80] {connect apical[ 81] (0), 1
connect apical[89] (0), 1}
apical[81] {connect apical[ 82] (0), 1
connect apical[88] (0), 1}
apical[82] {connect apical[ 83] (0), 1
connect apical[87] (0), 1}
apical[83] {connect apical[ 84] (0), 1
connect apical[85] (0), 1}
apical[85] connect apical[ 86] (0), 1
apical[90] {connect apical[ 91] (0), 1
connect apical[100] (0), 1}
apical[91] {connect apical[ 92] (0), 1
connect apical[97] (0), 1}
apical[92] {connect apical[ 93] (0), 1
connect apical[96] (0), 1}
apical[93] {connect apical[ 94] (0), 1
connect apical[95] (0), 1}
apical[97] {connect apical[ 98] (0), 1
connect apical[99] (0), 1}
apical[103] connect apical[ 104] (0), 1
apical[106] {connect apical[ 107] (0), 1
connect apical[109] (0), 1}
apical[107] connect apical[ 108] (0), 1
apical[109] {connect apical[ 110] (0), 1
connect apical[111] (0), 1}
apical[113] {connect apical[ 114] (0), 1
connect apical[120] (0), 1}
apical[114] connect apical[ 115] (0), 1
apical[115] {connect apical[ 116] (0), 1
connect apical[119] (0), 1}
apical[116] connect apical[ 117] (0), 1
apical[117] connect apical[ 118] (0), 1
apical[121] connect apical[ 122] (0), 1
apical[122] {connect apical[ 123] (0), 1
connect apical[126] (0), 1}
apical[123] {connect apical[ 124] (0), 1
connect apical[125] (0), 1}
basal[0] {connect basal[1] (0), 1
connect basal[12] (0), 1}
basal[1] {connect basal[2] (0), 1
connect basal[9] (0), 1}
basal[2] {connect basal[3] (0), 1
connect basal[8] (0), 1}
basal[3] {connect basal[4] (0), 1
connect basal[5] (0), 1}
basal[5] {connect basal[6] (0), 1
connect basal[7] (0), 1}
basal[9] {connect basal[10] (0), 1
connect basal[11] (0), 1}
basal[12] {connect basal[13] (0), 1
connect basal[19] (0), 1}
basal[13] connect basal[14] (0), 1
basal[14] {connect basal[15] (0), 1
connect basal[18] (0), 1}
basal[15] {connect basal[16] (0), 1
connect basal[17] (0), 1}
basal[20] {connect basal[ 21] (0), 1
connect basal[22] (0), 1}
basal[23] {connect basal[ 24] (0), 1
connect basal[38] (0), 1}
basal[24] {connect basal[ 25] (0), 1
connect basal[33] (0), 1}
basal[25] connect basal[ 26] (0), 1
basal[26] {connect basal[ 27] (0), 1
connect basal[32] (0), 1}
basal[27] {connect basal[ 28] (0), 1
connect basal[31] (0), 1}
basal[28] {connect basal[ 29] (0), 1
connect basal[30] (0), 1}
basal[33] {connect basal[ 34] (0), 1
connect basal[37] (0), 1}
basal[34] {connect basal[ 35] (0), 1
connect basal[36] (0), 1}
basal[38] {connect basal[ 39] (0), 1
connect basal[40] (0), 1}
basal[41] {connect basal[ 42] (0), 1
connect basal[59] (0), 1}
basal[42] {connect basal[ 43] (0), 1
connect basal[51] (0), 1}
basal[43] connect basal[ 44] (0), 1
basal[44] {connect basal[ 45] (0), 1
connect basal[50] (0), 1}
basal[45] {connect basal[ 46] (0), 1
connect basal[49] (0), 1}
basal[46] {connect basal[ 47] (0), 1
connect basal[48] (0), 1}
basal[51] {connect basal[ 52] (0), 1
connect basal[54] (0), 1}
basal[52] connect basal[ 53] (0), 1
basal[54] {connect basal[ 55] (0), 1
connect basal[58] (0), 1}
basal[55] {connect basal[ 56] (0), 1
connect basal[57] (0), 1}
}
objref all, basal_list, apical_list, soma_list, axon_list, rad_list, lm_list, dendrite_list
objref pyramidalcell_list, axoaxoniccell_list, bistratifiedcell_list, cckcell_list
objref ivycell_list, ngfcell_list, olmcell_list, pvbasketcell_list, scacell_list
objref eccell_list, ca3cell_list, mscell_list
proc append_sections() { local i
NumSoma=13
NumApical=127
NumBasal=60
NumAxon=2
objref all, basal_list, apical_list, soma_list, axon_list, rad_list, lm_list, dendrite_list
objref pyramidalcell_list, axoaxoniccell_list, bistratifiedcell_list, cckcell_list
objref ivycell_list, ngfcell_list, olmcell_list, pvbasketcell_list, scacell_list
objref eccell_list, ca3cell_list, mscell_list
all = new SectionList()
basal_list = new SectionList()
apical_list = new SectionList()
soma_list = new SectionList()
axon_list = new SectionList()
rad_list = new SectionList()
lm_list = new SectionList()
dendrite_list = new SectionList()
pyramidalcell_list = new SectionList()
axoaxoniccell_list = new SectionList()
bistratifiedcell_list = new SectionList()
cckcell_list = new SectionList()
ivycell_list = new SectionList()
ngfcell_list = new SectionList()
olmcell_list = new SectionList()
pvbasketcell_list = new SectionList()
scacell_list = new SectionList()
eccell_list = new SectionList()
ca3cell_list = new SectionList()
mscell_list = new SectionList()
axon[1] all.append()
axon[1] axon_list.append()
axon[0] all.append()
axon[0] axon_list.append()
for i=0,NumSoma-1 soma[i] { all.append()
soma_list.append()}
for i=0,NumBasal-1 basal[i] { all.append()
basal_list.append()
dendrite_list.append()}
for i=0,NumApical-1 apical[i] { all.append()
apical_list.append()
dendrite_list.append()}
for i=0, 17 apical[i] { rad_list.append()}
for i=26, 28 apical[i] { rad_list.append()}
for i=64, 64 apical[i] { rad_list.append()}
for i=76, 80 apical[i] { rad_list.append()}
for i=90, 126 apical[i] { rad_list.append()}
for i=18, 25 apical[i] { lm_list.append()}
for i=29, 63 apical[i] { lm_list.append()}
for i=65, 75 apical[i] { lm_list.append()}
for i=81, 89 apical[i] { lm_list.append()}
// precell lists
forsec basal_list {pyramidalcell_list.append()}
forsec axon_list {axoaxoniccell_list.append()}
forsec basal_list {bistratifiedcell_list.append()}
forsec rad_list {bistratifiedcell_list.append()}
forsec soma_list {cckcell_list.append()}
forsec basal_list {ivycell_list.append()}
forsec rad_list {ivycell_list.append()}
forsec lm_list {ngfcell_list.append()}
forsec lm_list {olmcell_list.append()}
forsec soma_list {pvbasketcell_list.append()}
forsec basal_list {scacell_list.append()}
forsec rad_list {scacell_list.append()}
forsec lm_list {eccell_list.append()}
forsec lm_list {eccell_list.append()}
forsec lm_list {eccell_list.append()} // append the same list 3 times to weight it more heavily against the basal list for synapse choice for eccells
forsec rad_list {ca3cell_list.append()}
forsec rad_list {mscell_list.append()}
forsec basal_list {eccell_list.append()}
forsec basal_list {ca3cell_list.append()}
}
proc size_sections1() {
axon[0] {nseg=5 diam=1 L=50}
axon[1] {nseg=10 diam=0.7 L=250}
soma[0] {nseg=1 diam= 3.4 L= .5 }
soma[1] {nseg=1 diam= 3.4 L= .1 }
soma[2] {nseg=1 diam= 5.8 L= .5852348 }
soma[3] {nseg=1 diam= 7.4 L= 2.362393 }
soma[4] {nseg=1 diam= 8.4 L= 1.030922 }
soma[5] {nseg=1 diam= 9 L= 5.08973 }
soma[6] {nseg=1 diam= 8.4 L= 2.161421 }
soma[7] {nseg=1 diam= 7.4 L= 1.391761 }
soma[8] {nseg=1 diam= 7 L= .7244999 }
soma[9] {nseg=1 diam= 6.8 L= 1.021421 }
soma[10] {nseg=1 diam= 5.8 L= .8354636 }
soma[11] {nseg=1 diam= 4.8 L= .6500001 }
soma[12] {nseg=1 diam= 4.2 L= 1.947434 }
apical[0] {nseg=1 diam= 3.8 L= 2.715308 }
apical[1] {nseg=1 diam= 3.6 L= 5.401713 }
apical[2] {nseg=1 diam= 3 L= 3.876953 }
apical[3] {nseg=1 diam= 3 L= 4.32302 }
apical[4] {nseg=1 diam= 2.2 L= 9.503437 }
apical[5] {nseg=2 diam= 2 L= 45.0123 }
apical[6] {nseg=1 diam= 2 L= 31.20716 }
apical[7] {nseg=1 diam= 2 L= 22.61171 }
apical[8] {nseg=2 diam= 2 L= 37.90814 }
apical[9] {nseg=1 diam= 2 L= 1.899714 }
apical[10] {nseg=1 diam= 2 L= 2.305321 }
apical[11] {nseg=1 diam= 2 L= 3.767573 }
apical[12] {nseg=2 diam= 2 L= 33.49711 }
apical[13] {nseg=10 diam= 2 L= 70.09814 }
apical[14] {nseg=2 diam= 2 L= 40.81264 }
apical[15] {nseg=1 diam= 2 L= 15.2801 }
apical[16] {nseg=1 diam= 2 L= 17.47857 }
apical[17] {nseg=8 diam= 1 L= 108.7753 }
apical[18] {nseg=1 diam= .8 L= 10.96036 }
apical[19] {nseg=2 diam= .8 L= 16.21915 }
apical[20] {nseg=2 diam= .4 L= 26.14653 }
apical[21] {nseg=6 diam= .4 L= 119.6609 }
apical[22] {nseg=3 diam= .4 L= 39.18561 }
apical[23] {nseg=3 diam= .4 L= 34.66425 }
apical[24] {nseg=2 diam= .4 L= 31.36501 }
apical[25] {nseg=2 diam= .4 L= 29.33217 }
apical[26] {nseg=2 diam= 2 L= 31.1963 }
apical[27] {nseg=4 diam= 1.4 L= 40.56636 }
apical[28] {nseg=1 diam= 1.4 L= 4.73629 }
apical[29] {nseg=5 diam= .8 L= 57.43425 }
apical[30] {nseg=1 diam= .4 L= 21.68407 }
apical[31] {nseg=1 diam= .4 L= 20.0452 }
apical[32] {nseg=3 diam= .4 L= 64.84853 }
apical[33] {nseg=3 diam= .4 L= 58.52066 }
apical[34] {nseg=10 diam= .4 L= 230.365 }
apical[35] {nseg=2 diam= .4 L= 37.58863 }
apical[36] {nseg=4 diam= .4 L= 77.22144 }
apical[37] {nseg=5 diam= .4 L= 112.0059 }
apical[38] {nseg=2 diam= .4 L= 37.58242 }
apical[39] {nseg=8 diam= .8 L= 89.90406 }
apical[40] {nseg=1 diam= .8 L= 5.726318 }
apical[41] {nseg=1 diam= .8 L= 1.514942 }
apical[42] {nseg=2 diam= .8 L= 23.88437 }
apical[43] {nseg=1 diam= .4 L= 3.340797 }
apical[44] {nseg=1 diam= .4 L= 3.250262 }
apical[45] {nseg=4 diam= .4 L= 86.1567 }
apical[46] {nseg=3 diam= .4 L= 46.10009 }
apical[47] {nseg=1 diam= .4 L= 23.62396 }
apical[48] {nseg=4 diam= .4 L= 78.09839 }
apical[49] {nseg=2 diam= .4 L= 41.05293 }
apical[50] {nseg=3 diam= .4 L= 64.45201 }
apical[51] {nseg=6 diam= .4 L= 135.1048 }
apical[52] {nseg=4 diam= .4 L= 70.09399 }
apical[53] {nseg=1 diam= .4 L= 11.29383 }
apical[54] {nseg=3 diam= .4 L= 57.12379 }
apical[55] {nseg=3 diam= .4 L= 51.23798 }
apical[56] {nseg=1 diam= .4 L= .226719 }
apical[57] {nseg=2 diam= .4 L= 42.9783 }
apical[58] {nseg=6 diam= .4 L= 130.2097 }
apical[59] {nseg=2 diam= .4 L= 26.79343 }
apical[60] {nseg=5 diam= .4 L= 125.4406 }
apical[61] {nseg=2 diam= .4 L= 32.70949 }
apical[62] {nseg=2 diam= .4 L= 46.61235 }
apical[63] {nseg=3 diam= .4 L= 55.72121 }
apical[64] {nseg=5 diam= .4 L= 116.3788 }
apical[65] {nseg=1 diam= .4 L= 13.57025 }
apical[66] {nseg=6 diam= .4 L= 118.638 }
apical[67] {nseg=1 diam= .4 L= 24.19888 }
apical[68] {nseg=4 diam= .4 L= 96.23538 }
apical[69] {nseg=3 diam= .4 L= 59.93812 }
apical[70] {nseg=2 diam= .4 L= 64.90414 }
apical[71] {nseg=1 diam= .4 L= .365519 }
apical[72] {nseg=5 diam= .4 L= 118.724 }
apical[73] {nseg=1 diam= .4 L= 5.153612 }
apical[74] {nseg=7 diam= .4 L= 159.0847 }
apical[75] {nseg=3 diam= .4 L= 65.16338 }
apical[76] {nseg=3 diam= .8 L= 32.91693 }
apical[77] {nseg=4 diam= .4 L= 84.05488 }
apical[78] {nseg=3 diam= .8 L= 49.03632 }
apical[79] {nseg=3 diam= .4 L= 65.3413 }
apical[80] {nseg=7 diam= .4 L= 144.8597 }
apical[81] {nseg=1 diam= .4 L= 2.782626 }
apical[82] {nseg=1 diam= .4 L= 10.63182 }
apical[83] {nseg=1 diam= .4 L= 14.79619 }
apical[84] {nseg=1 diam= .4 L= 24.52155 }
apical[85] {nseg=1 diam= .4 L= 19.95786 }
apical[86] {nseg=1 diam= .4 L= 22.937 }
apical[87] {nseg=1 diam= .4 L= 29.18237 }
apical[88] {nseg=4 diam= .4 L= 93.45203 }
apical[89] {nseg=3 diam= .4 L= 82.16525 }
apical[90] {nseg=2 diam= 1 L= 28.88242 }
apical[91] {nseg=1 diam= 1 L= 3.312038 }
apical[92] {nseg=2 diam= 1 L= 31.43214 }
apical[93] {nseg=4 diam= 1 L= 65.21848 }
apical[94] {nseg=4 diam= 1 L= 65.93275 }
apical[95] {nseg=1 diam= .4 L= 2.210091 }
}
proc size_sections2() {
apical[96] {nseg=4 diam= .4 L= 80.05907 }
apical[97] {nseg=1 diam= .4 L= 12.09364 }
apical[98] {nseg=2 diam= .4 L= 40.26765 }
apical[99] {nseg=2 diam= .4 L= 51.40726 }
apical[100] {nseg=5 diam= .4 L= 113.2667 }
apical[101] {nseg=6 diam= .4 L= 149.6538 }
apical[102] {nseg=12 diam= .4 L= 271.828 }
apical[103] {nseg=1 diam= .8 L= 19.2613 }
apical[104] {nseg=5 diam= .4 L= 94.12336 }
apical[105] {nseg=8 diam= .4 L= 170.9137 }
apical[106] {nseg=1 diam= .8 L= 5.102267 }
apical[107] {nseg=1 diam= .8 L= 10.26147 }
apical[108] {nseg=6 diam= .4 L= 117.1293 }
apical[109] {nseg=2 diam= .8 L= 30.43381 }
apical[110] {nseg=4 diam= .4 L= 80.42423 }
apical[111] {nseg=10 diam= .4 L= 202.9251 }
apical[112] {nseg=7 diam= .4 L= 155.1176 }
apical[113] {nseg=1 diam= 1.4 L= 11.20985 }
apical[114] {nseg=1 diam= 1.4 L= 8.052182 }
apical[115] {nseg=1 diam= .4 L= 17.14739 }
apical[116] {nseg=1 diam= .4 L= 17.07239 }
apical[117] {nseg=1 diam= .4 L= 3.802383 }
apical[118] {nseg=4 diam= .4 L= 79.13516 }
apical[119] {nseg=7 diam= .4 L= 132.4294 }
apical[120] {nseg=1 diam= .8 L= 7.493482 }
apical[121] {nseg=1 diam= .8 L= 16.02206 }
apical[122] {nseg=1 diam= .4 L= 2.194287 }
apical[123] {nseg=1 diam= .4 L= 14.77226 }
apical[124] {nseg=4 diam= .4 L= 85.29885 }
apical[125] {nseg=5 diam= .4 L= 108.0732 }
apical[126] {nseg=4 diam= .4 L= 89.57475 }
}
proc size_sections3() {
basal[0] {nseg=1 diam= .8 L= 2.888482 }
basal[1] {nseg=1 diam= .8 L= 12.67608 }
basal[2] {nseg=1 diam= .4 L= 6.226819 }
basal[3] {nseg=2 diam= .4 L= 28.07395 }
basal[4] {nseg=1 diam= .4 L= 19.26636 }
basal[5] {nseg=1 diam= .4 L= 13.94479 }
basal[6] {nseg=5 diam= .4 L= 110.2079 }
basal[7] {nseg=4 diam= .4 L= 75.98547 }
basal[8] {nseg=8 diam= .4 L= 153.798 }
basal[9] {nseg=4 diam= .4 L= 91.32814 }
basal[10] {nseg=3 diam= .4 L= 72.40762 }
basal[11] {nseg=3 diam= .4 L= 68.55269 }
basal[12] {nseg=1 diam= .8 L= 16.80424 }
basal[13] {nseg=1 diam= .8 L= 14.56381 }
basal[14] {nseg=1 diam= .4 L= .4899998 }
basal[15] {nseg=1 diam= .4 L= 5.744193 }
basal[16] {nseg=4 diam= .4 L= 116.2063 }
basal[17] {nseg=3 diam= .4 L= 60.7986 }
basal[18] {nseg=7 diam= .4 L= 140.8884 }
basal[19] {nseg=4 diam= .4 L= 82.97742 }
basal[20] {nseg=2 diam= .4 L= 36.26253 }
basal[21] {nseg=5 diam= .4 L= 100.4919 }
basal[22] {nseg=3 diam= .4 L= 72.16766 }
basal[23] {nseg=1 diam= 1 L= 12.02422 }
basal[24] {nseg=1 diam= .8 L= 4.843154 }
basal[25] {nseg=1 diam= .8 L= 3.307597 }
basal[26] {nseg=1 diam= .4 L= 11.31487 }
basal[27] {nseg=1 diam= .4 L= 25.26186 }
basal[28] {nseg=1 diam= .4 L= 26.09189 }
basal[29] {nseg=3 diam= .4 L= 64 }
basal[30] {nseg=3 diam= .4 L= 70 }
basal[31] {nseg=4 diam= .4 L= 81.94038 }
basal[32] {nseg=7 diam= .4 L= 157.9888 }
basal[33] {nseg=1 diam= .4 L= 12.65634 }
basal[34] {nseg=2 diam= .4 L= 47.59445 }
basal[35] {nseg=4 diam= .4 L= 87.35556 }
basal[36] {nseg=5 diam= .4 L= 92.50491 }
basal[37] {nseg=1 diam= .4 L= 21.87688 }
basal[38] {nseg=4 diam= .4 L= 86.62627 }
basal[39] {nseg=3 diam= .4 L= 74.35841 }
basal[40] {nseg=4 diam= .4 L= 92.61662 }
basal[41] {nseg=1 diam= 1 L= 9.526773 }
basal[42] {nseg=1 diam= 1 L= 3.523762 }
basal[43] {nseg=1 diam= .8 L= 11.17033 }
basal[44] {nseg=1 diam= .4 L= 5.654395 }
basal[45] {nseg=1 diam= .4 L= 10.01039 }
basal[46] {nseg=1 diam= .4 L= 21.26989 }
basal[47] {nseg=2 diam= .4 L= 38.8982 }
basal[48] {nseg=6 diam= .4 L= 125.4449 }
basal[49] {nseg=7 diam= .4 L= 137.2615 }
basal[50] {nseg=3 diam= .4 L= 66.48241 }
basal[51] {nseg=1 diam= 1 L= .5340415 }
basal[52] {nseg=1 diam= 1 L= 7.411953 }
basal[53] {nseg=4 diam= .4 L= 80.27492 }
basal[54] {nseg=1 diam= .8 L= 11.25394 }
basal[55] {nseg=1 diam= .4 L= 7.328401 }
basal[56] {nseg=5 diam= .4 L= 100.9536 }
basal[57] {nseg=2 diam= .4 L= 32.70675 }
basal[58] {nseg=8 diam= .4 L= 165.4767 }
basal[59] {nseg=8 diam= .4 L= 161.9148 }
}
proc rotate_shape() {local i
forsec all {
for i=0,n3d()-1 {
pt3dchange(i, y3d(i), x3d(i), z3d(i), diam3d(i))
}
}
}
external lambda_f
proc set_nseg() {
forsec all { nseg = int((L/(0.1*lambda_f(100))+.9)/2)*2 + 1 }
}
proc mechinit() {
NumSoma=13
NumApical=127
NumBasal=60
NumAxon=2
Rm = 28000 // 5555 //
RmDend = Rm/2
RmSoma = Rm
RmAx = Rm
Cm = 1
CmSoma= Cm
CmAx = Cm
CmDend = Cm*2
celsius = 34.0
RaAll= 150
RaSoma=150
RaAx = 50
ekval = -90
enaval = 55
eHCNval = -30
eleakval = Vrest // not lower than ekval
gNav = 0.032 // Nav conductance in mho/cm2
gNavaxon = 0.064 // axon multiplier for Nav conductance
gKdr = 0.003 // Kdr conductance in mho/cm2
gKvAdist = 0.008 // distal KvA conductance in mho/cm2
gKvAprox = 0.008 // proximal KvA conductance in mho/cm2
gHCN = 0.0006 // hcurrent conductance in mho/cm2 --> 6 pS/um2
}
proc insert_mechs() {
access soma[5]
distance() // calculates the distance between location 0 of the currently accessed section (as the origin) to a second point (but with this usage, it just sets the origin point)
axon[1] {
insert ch_Navaxonp gmax_ch_Navaxonp=gNavaxon
insert ch_Kdrp gmax_ch_Kdrp=gKdr
insert pas e_pas=eleakval g_pas = 1/RmAx Ra=RaAx cm=CmAx
insert ch_KvAproxp gmax_ch_KvAproxp = gKvAprox*0.2
}
axon[0] {
insert ch_Navaxonp gmax_ch_Navaxonp=gNavaxon
insert ch_Kdrp gmax_ch_Kdrp=gKdr
insert pas e_pas=eleakval g_pas = 1/RmAx Ra=RaAx cm=CmAx
insert ch_KvAproxp gmax_ch_KvAproxp = gKvAprox*0.2
}
for i=0,NumSoma-1 soma[i] {
insert ch_HCNp gmax_ch_HCNp=gHCN
vhalfl_ch_HCNp=-82
insert ch_Navp gmax_ch_Navp=gNav
ar2_ch_Navp=1
insert ch_Kdrp gmax_ch_Kdrp=gKdr
insert ch_KvAproxp gmax_ch_KvAproxp = gKvAprox
insert pas e_pas=eleakval g_pas = 1/RmSoma Ra=RaSoma cm=CmSoma
}
for i=0,NumBasal-1 basal[i] {
insert ch_Navp gmax_ch_Navp=gNav
ar2_ch_Navp=1
insert ch_Kdrp gmax_ch_Kdrp=gKdr
insert ch_KvAproxp gmax_ch_KvAproxp = gKvAprox
insert pas e_pas=eleakval g_pas = 1/RmDend Ra=RaAll cm=CmDend
}
for i=0,NumApical-1 apical[i] {
insert pas e_pas=eleakval g_pas = 1/RmDend Ra=RaAll cm=CmDend
if (diam>0.5 && distance(0.5)<500) {
insert ch_HCNp gmax_ch_HCNp = gHCN
insert ch_Navp
ar2_ch_Navp=0.8
gmax_ch_Navp=gNav
insert ch_Kdrp
gmax_ch_Kdrp=gKdr
insert ch_KvAproxp
insert ch_KvAdistp
gmax_ch_KvAproxp=0
gmax_ch_KvAdistp=0
for (x){ xdist = distance(x)
if (xdist>500) {xdist=500}
gmax_ch_HCNp(x) = gHCN*(1+1.5*xdist/100)
if (xdist > 100){
vhalfl_ch_HCNp=-90
gmax_ch_KvAdistp(x) = gKvAdist*(1+xdist/100)
} else {
vhalfl_ch_HCNp=-82
gmax_ch_KvAproxp(x) = gKvAprox*(1+xdist/100)
}
}
}
}
forall {
v=Vrest
if (ismembrane("ch_Navaxonp") || ismembrane("ch_Navp")) {ena=enaval}
if (ismembrane("ch_Kdrp") || ismembrane("ch_KvAproxp") || ismembrane("ch_KvAdistp")) {ek=ekval}
if (ismembrane("ch_HCNp") ) {e_ch_HCNp=eHCNval}
}
}
func is_art() { return 0 }
proc connect_pre() { // $o1 target point process, $o2 returned NetCon
soma $o2 = new NetCon (&v(1), $o1)
$o2.threshold = -10
}
proc position(){ local i
forall {
for i = 0, n3d()-1 {
pt3dchange(i, $1-x+x3d(i), $2-y+y3d(i), $3-z+z3d(i), diam3d(i))
}
}
x = $1 y = $2 z = $3
}
proc get_root() {local i localobj sref
rootlist = new SectionList()
rootlist.allroots()
i=0
forsec all {
for(x,0) { if (diam(x) <=0.01) print "small diameter at ", secname(), diam(x) }
if (L<=0.001) print "small length at: ", secname(), L
sref = new SectionRef()
if (sref.has_parent==0) {
myroot = secname()
i=i+1
}
}
if (i>1) {
print "WARNING: cell ", gid, " has ", i, " root sections!"
}
}
strdef myStr
objref newSecRef, syn
proc define_synapses() {
ind = $1
i = 0
access soma[0]
{distance()}
for celltype = 0, numCellTypes-1 {
templist = new List ()
for r=0, cellType[ind].SynList[celltype].count()-1 {
execute(cellType[ind].SynList[celltype].object(r).NewSynStr, this) // sets newSecRef
forsec newSecRef {
for (x,0) {
execute(cellType[ind].SynList[celltype].object(r).CondStr, this)
if (y==1) {
execute(cellType[ind].SynList[celltype].object(r).SynStr, this)
if (cellType[ind].SynList[celltype].object(r).GABAabFlag==0) {
syn.tau1 = cellType[ind].SynList[celltype].object(r).tau1
syn.tau2 = cellType[ind].SynList[celltype].object(r).tau2
syn.e = cellType[ind].SynList[celltype].object(r).efirst
if (strcmp(cellType[ind].SynList[celltype].object(r).SynType,"MyExp2Sidnw")==0) {
execute(cellType[ind].SynList[celltype].object(r).Scaling, this)
}
} else {
syn.tau1a = cellType[ind].SynList[celltype].object(r).tau1a
syn.tau2a = cellType[ind].SynList[celltype].object(r).tau2a
syn.ea = cellType[ind].SynList[celltype].object(r).ea
syn.tau1b = cellType[ind].SynList[celltype].object(r).tau1b
syn.tau2b = cellType[ind].SynList[celltype].object(r).tau2b
syn.eb = cellType[ind].SynList[celltype].object(r).eb
}
syn.sid = i
templist.append(syn)
i = i + 1
}
}
}
}
pre_list.append(templist)
findme = 1
}
}
endtemplate poolosyncell