Rhesus Monkey Young and Aged L3 PFC Pyramidal Neurons (Rumbell et al. 2016)

 Download zip file 
Help downloading and running models
Accession:184497
A stereotypical pyramidal neuron morphology with ion channel parameter combinations that reproduce firing patterns of one young and one aged rhesus monkey L3 PFC pyramidal neurons. Parameters were found through an automated optimization method.
Reference:
1 . Rumbell TH, Draguljic D, Yadav A, Hof PR, Luebke JI, Weaver CM (2016) Automated evolutionary optimization of ion channel conductances and kinetics in models of young and aged rhesus monkey pyramidal neurons. J Comput Neurosci 41:65-90 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s): Neocortex L2/3 pyramidal GLU cell;
Channel(s): I Na,p; I Na,t; I A; I K; I M; I h; I K,Ca; I Sodium; I Calcium; I Potassium; I_AHP; I Cl, leak;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Ion Channel Kinetics; Parameter Fitting; Detailed Neuronal Models; Aging/Alzheimer`s;
Implementer(s):
Search NeuronDB for information about:  Neocortex L2/3 pyramidal GLU cell; I Na,p; I Na,t; I A; I K; I M; I h; I K,Ca; I Sodium; I Calcium; I Potassium; I_AHP; I Cl, leak;
load_file("nrngui.hoc")

CELL=2
model_index=0
param_index=0

objref model_params, transvec, pyr3_
objref g,g00,g01,g10,g11,g20,g21
strdef parstr,gstr

transvec = new Vector()

func go_button() {
	printf("CELL=%d\nmodel_index=%d\nparam_index=%6\nRUN()!!!\n",CELL,model_index,param_index)
	//xopen("re_init.hoc")
	if (object_id(pyr3_)) {
		// just do some things to the existing model
	} else {
		reload_model_with_MRF()
	}
	model_params = set_model_parameters()
	set_one_param_set(model_params.getrow(param_index))
	return 1
}

func graphs_button() {
	printf("CELL=%d\nmodel_index=%d\nparam_index=%6\nRUN()!!!\n",CELL,model_index,param_index)	
	if (object_id(pyr3_)) {
		// just do some things to the existing model
	} else {
		reload_model()
	}
	model_params = set_model_parameters()
	set_one_param_set(model_params.getrow(param_index))
	plot_all_6_graphs()
	return 1
}

proc reload_model_with_MRF() {
	// CONTROLS
	MODEL = 1
	MRFflag = 5
	strdef PARENTDIR
	PARENTDIR = getcwd()
	
	xopen("model/pyr3.hoc")
	load_file("optmz/mulfit.hoc")
	xopen("setup/setupMRF.hoc")
	
	set_conds()
	set_kins()
	
	INITDUR = 50
	if (CELL == 2) {
		V0 = -70
	} else if (CELL == 3) {
		V0 = -68.5
	}
	xopen("custominit.hoc")
}

proc reload_model() {
	xopen("load_a_neuron.hoc")
}

obfunc set_model_parameters() {local num_pars	 localobj parsmat, pv1, pv2, pv3
	
	if (model_index == 0) {
		num_pars = 10
	} else if (model_index == 1) {
		num_pars = 23
	}
	
	parsmat = new Matrix (3, NP)
	
	pv1 = new Vector()
	pv2 = new Vector()
	pv3 = new Vector()
	
	// CELL 2 is young, 3 is aged; model_index 0 is 3 channel, 1 is 7 channel
	if (CELL == 2) {
		if (model_index == 0) {
			pv1.append(0.042469, 0.1588, 0.018732, 0, 0, 0, 0, 26000, 0.01, 1.8803, 7.2627, 19.638, 0.074761, 1, 1, 1, 1, -10.878, -5.5365, -36.019, 0, 0, 0)
			pv2.append(0.040602, 0.14696, 0.018498, 0, 0, 0, 0, 26000, 0.01, 0.89685, 8.158, 19.707, 0.075253, 1, 1, 1, 1, -10.446, -3.8257, -37.33, 0, 0, 0)
			pv3.append(0.034759, 0.25409, 0.015924, 0, 0, 0, 0, 26000, 0.01, 0.94647, 6.5159, 18.611, 0.12813, 1, 1, 1, 1, -9.8252, -5.7391, -29.665, 0, 0, 0)
		} else if (model_index == 1) {
			pv1.append(0.042039,	0.31611,	0.0047585,	0.010658,	0.0037284,	0.00015574,	9.0673e-05,	830.25,	0.0097944,	1.7771,	8.3288,	18.631,	4.1197,	9.4392,	6.0591,	13.646,	1.1585,	-15.304,	-14.901,	-29.992,	0.43005,	-36.416,	-29.279)
			pv2.append(0.042802,	0.38121,	0.0074711,	0.0065173,	0.0036778,	0.0001199,	0.0001111,	736.04,	0.0099149,	2.084,	8.2943,	18.156,	3.0562,	12.087,	15.652,	12.51,	1.4208,	-15.248,	-16.265,	-34.251,	3,	-34.01,	-31.586)
			pv3.append(0.041768,	0.14555,	0.0082385,	0.010291,	0.0050655,	6.6648e-05,	8.8751e-05,	298.08,	0.0097699,	1.6815,	7.2567,	18.566,	2.5945,	16.806,	11.124,	14.507,	1.7094,	-15.111,	-11.65,	-35.18,	-21.203,	-27.749,	-21.756)
		}
	} else if (CELL == 3) {
		if (model_index == 0) {
			pv1.append(0.014614, 0.28229, 0.0015206, 0, 0, 0, 0, 26000, 0.01, 5.0436, 12.413, 9.4201, 1.2383, 1, 1, 1, 1, 3.2483, -5.4921, -9.359)
			pv2.append(0.014106, 0.23089, 0.0010673, 0, 0, 0, 0, 26000, 0.01, 5.4559, 14.935, 8.8672, 1.7077, 1, 1, 1, 1, 3.1506, -4.7809, -7.3687)
			pv3.append(0.011448, 0.21266, 0.0017112, 0, 0, 0, 0, 26000, 0.01, 4.2565, 17.386, 7.7921, 1.8011, 1, 1, 1, 1, 4.0508, -5.5383, -9.23210)
		} else if (model_index == 1) {
			pv1.append(0.088676, 0.28209, 0.0054771, 0.019922, 0.0006571, 6.0722e-06, 0.0009996499999999999, 47479, 0.0020877, 6.2912, 2.3057, 3.2847, 2.313, 1.3855, 4.7349, 11.179, 1.9527, -5.4739, -36.983, -4.842, -15.314, 10.517, -10.809)
			pv2.append(0.021656,	0.022436,	0.012717,	0.016599,	0.00093677,	0.00029288,	0.00055053,	34627,	0.0097155,	4.0338,	3.2426,	10.043,	11.298,	14.579,	11.132,	16.244,	1.0253,	-8.8705,	-10.17,	-21.948,	-19.727,	-35.308,	-32.771)
			pv3.append(0.088802,	0.21798,	0.0049884,	0.019907,	0.00067711,	4.5122e-06,	0.00099362,	51753,	0.0026811,	6.235,	2.3197,	9.0452,	2.2796,	1.4942,	6.0396,	8.3907,	1.9444,	-4.9373,	-34.492,	-4.3734,	-14.967,	10.106,	-10.889)
		}
	}
	
	parsmat.setrow(0,pv1)
	parsmat.setrow(1,pv2)
	parsmat.setrow(2,pv3)

	return parsmat
}

proc set_one_param_set() {
	// set parameters
	dgnaf	= $o1.x[0]
	dgkdr 	= $o1.x[1]
	dgkm	= $o1.x[2]
	dgka	= $o1.x[3]
	dgkahp	= $o1.x[4]
	dgnap	= $o1.x[5]
	dgcal	= $o1.x[6]
	dphi_cad	= $o1.x[7]
	dbeta_cad	= $o1.x[8]
	dtmmnaf	= $o1.x[9]
	dtmhnaf	= $o1.x[10]
	dtmkdr	= $o1.x[11]
	dtmkm	= $o1.x[12]
	dtmmka	= $o1.x[13]
	dtmhka	= $o1.x[14]
	dtmnap	= $o1.x[15]
	dtmcal	= $o1.x[16]
	dvsnaf	= $o1.x[17]
	dvskdr	= $o1.x[18]
	dvskm	= $o1.x[19]
	dvska	= $o1.x[20]
	dvsnap	= $o1.x[21]
	dvscal	= $o1.x[22]

	//adjust conductances
	set_conds()
	//adjust kinetics
	set_kins()
}

proc plot_all_6_graphs() {local i,j
	// loop through, setting up graphs for all 6 plots
	// low input in top row: best, pp, fr
	// high input in bottom row: best, pp, fr
	
	for (i=0; i<3; i=i+1) {
		set_one_param_set(model_params.getrow(i))
		for (j=0; j<2; j=j+1) {

			sprint(gstr,"g%d%d = new Graph(0)",i,j)
			execute(gstr)

			sprint(gstr,"g%d%d.size(0,2015,-80,40)",i,j)
			execute(gstr)

			sprint(gstr,"g%d%d.view(0,-80,2015,130,%d*319,171+(%d*251),300.48,200.32)",i,j,i,j)
			execute(gstr)

			graphList[0].remove_all()

			sprint(gstr,"graphList[0].append(g%d%d)",i,j)
			execute(gstr)

			if (i==0) {
				sprint(gstr,"g%d%d.addvar(\"best fit,",i,j)
			} else if (i==1) {
				sprint(gstr,"g%d%d.addvar(\"PP fit,",i,j)
			} else if (i==2) {
				sprint(gstr,"g%d%d.addvar(\"FR fit,",i,j)
			}
	
			if (j==0) {
				sprint(gstr,"%s low current\"",gstr)
			} else if (j==1) {
				sprint(gstr,"%s high current\"",gstr)
			}

			if (i==0) {
				sprint(gstr,"%s,\"pyr3_.comp[1].v( 0.5 )\", 4, 2)",gstr) 
			} else if (i==1) {
				sprint(gstr,"%s,\"pyr3_.comp[1].v( 0.5 )\", 5, 2)",gstr) 
			} else if (i==2) {
				sprint(gstr,"%s,\"pyr3_.comp[1].v( 0.5 )\", 3, 2)",gstr)
			}
			execute(gstr)

			if (j==0) {
				if (CELL==2) {
					pyr3_.inj1_.amp = 0.23
				} else if (CELL==3) {
					pyr3_.inj1_.amp = 0.08
				}
			} else if (j==1) {
				pyr3_.inj1_.amp = 0.38
			}

			init()
			run()
		}
	}
}

load_file("make_gui.hoc")


Loading data, please wait...