ModelDB is moving. Check out our new site at https://modeldb.science. The corresponding page is https://modeldb.science/187604.

Hippocampal CA1 NN with spontaneous theta, gamma: full scale & network clamp (Bezaire et al 2016)

 Download zip file 
Help downloading and running models
Accession:187604
This model is a full-scale, biologically constrained rodent hippocampal CA1 network model that includes 9 cells types (pyramidal cells and 8 interneurons) with realistic proportions of each and realistic connectivity between the cells. In addition, the model receives realistic numbers of afferents from artificial cells representing hippocampal CA3 and entorhinal cortical layer III. The model is fully scaleable and parallelized so that it can be run at small scale on a personal computer or large scale on a supercomputer. The model network exhibits spontaneous theta and gamma rhythms without any rhythmic input. The model network can be perturbed in a variety of ways to better study the mechanisms of CA1 network dynamics. Also see online code at http://bitbucket.org/mbezaire/ca1 and further information at http://mariannebezaire.com/models/ca1
References:
1 . Bezaire MJ, Raikov I, Burk K, Vyas D, Soltesz I (2016) Interneuronal mechanisms of hippocampal theta oscillations in a full-scale model of the rodent CA1 circuit. Elife [PubMed]
2 . Bezaire M, Raikov I, Burk K, Armstrong C, Soltesz I (2016) SimTracker tool and code template to design, manage and analyze neural network model simulations in parallel NEURON bioRxiv
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA1 interneuron oriens alveus GABA cell; Hippocampus CA1 basket cell; Hippocampus CA1 stratum radiatum interneuron; Hippocampus CA1 bistratified cell; Hippocampus CA1 axo-axonic cell; Hippocampus CA1 PV+ fast-firing interneuron;
Channel(s): I Na,t; I K; I K,leak; I h; I K,Ca; I Calcium;
Gap Junctions:
Receptor(s): GabaA; GabaB; Glutamate; Gaba;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON; NEURON (web link to model);
Model Concept(s): Oscillations; Methods; Connectivity matrix; Laminar Connectivity; Gamma oscillations;
Implementer(s): Bezaire, Marianne [mariannejcase at gmail.com]; Raikov, Ivan [ivan.g.raikov at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; Hippocampus CA1 interneuron oriens alveus GABA cell; GabaA; GabaB; Glutamate; Gaba; I Na,t; I K; I K,leak; I h; I K,Ca; I Calcium; Gaba; Glutamate;
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

Loading data, please wait...