Basal ganglia network model of subthalamic deep brain stimulation (Hahn and McIntyre 2010)

 Download zip file 
Help downloading and running models
Accession:127388
Basal ganglia network model of parkinsonian activity and subthalamic deep brain stimulation in non-human primates from the article Instructions are provided in the README.txt file. Contact hahnp@ccf.org if you have any questions about the implementation of the model. Please include "ModelDB - BGnet" in the subject heading.
Reference:
1 . Hahn PJ, McIntyre CC (2010) Modeling shifts in the rate and pattern of subthalamopallidal network activity during deep brain stimulation. J Comput Neurosci 28:425-41 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Basal ganglia;
Cell Type(s): Subthalamus nucleus projection neuron; Globus pallidus neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s): Dopamine; Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Bursting; Parkinson's; Deep brain stimulation;
Implementer(s): Hahn, Philip [hahnp at ccf.org];
Search NeuronDB for information about:  Dopamine; Gaba; Glutamate;
//proc setMPTPinput()
//proc setNORMALinput()
//proc setPROBinput()
//proc saveData(indx, resVec)
//proc setDBS(bSTNflag, bGPiFlag)



//-----------------------------------------------------------------------------------------------------
proc setMPTPinput() {local i
//---------------

probCtxSTN.fill(.25)
probStrGPe.fill(.25)
probStrGPi.fill(.25)

imnCtxSTN = 75
imnStrGPe = 75
imnStrGPi = 150

gDA_CtxSTN = 1.25
gDA_StrGPe = 1.25
gDA_StrGPi = 1
gDA_STNGPe = 1.25
gDA_STNGPi = 1
gDA_GPeSTN = 1.25
gDA_GPeGPe = 1
gDA_GPeGPi = 1.25

INPupdateWeights()
CONupdateWeights()

}


//-----------------------------------------------------------------------------------------------------
proc setNORMALinput() {local i
//---------------

probCtxSTN.fill(.05)
probStrGPe.fill(.05)
probStrGPi.fill(.05)

imnCtxSTN = 100
imnStrGPe = 100
imnStrGPi = 100

gDA_CtxSTN = 1
gDA_StrGPe = 1
gDA_StrGPi = 1
gDA_STNGPe = 2
gDA_STNGPi = 1
gDA_GPeSTN = 1
gDA_GPeGPe = 1
gDA_GPeGPi = 1

INPupdateWeights()
CONupdateWeights()

}


//-----------------------------------------------------------------------------------------------------
proc setPROBinput() {local i
//---------------

probCtxSTN.fill($1)
probStrGPe.fill($1)
probStrGPi.fill($1)

INPupdateWeights()

}



strdef str

//-----------------------------------------------------------------------------------------------------
proc saveData() {local i	localobj resVec, f		//(indx, resVec)
//---------------
//Append line of result vector values to filename encoding numeric value indx - eg stats000.txt

resVec = $o2

f = new File()

sprint(str, "stats%03d.txt", $1)

f.aopen(str)

for i=0,resVec.size-1 {
	f.printf("%f\t", resVec.x(i))
}
f.printf("\n")

f.close()

}



//-----------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------


objref r2
r2 = new Random(seedVal)

//-----------------------------------------------------------------------------------------------------
proc setDBS() {local i,j,k,p		//(bSTNflag, bGPiFlag)
//---------------
//Set DBS flags to stimulate bSTNflag percent of STN axons and bGPiFlag percent of GPi axons
//... and then turn on DBS inputs if any flags were actually set
dbsRESET()

if ($1 > 0) {
	if ($1 > 1) {
		p = 1
	} else {
		p = $1
	}

	// p% central block of STN

	j = ((1-p)/2)*numSTN
	k = j + p*numSTN - 1
	for i=int(j),int(k) {
		dbsONflags[DBS_STN].append(i)
	}
}

if ($2 > 0) {
	if ($2 > 1) {
		p = 1
	} else {
		p = $2
	}

	// p% randomly chosen GPi

	for i=0,numGPi-1 {
		if (r2.repick() < p) {
			dbsONflags[DBS_GPiTha].append(i)
		}
	}
}


if ($1 || $2) {

	//Override current DBS parameters with the following values
	//... if not otherwise save, the old values will be lost

	dbs_del = 0
	dbs_dur = tstop
	dbs_direct_amp = 10
	dbs_direct_pw = .25
	dbs_ad_amp = .15
	dbs_ad_pw = 2
	dbs_period = 7.35		// _136_ Hz	STIupdateWeights()

	dbsON()
}


}


//-----------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------



Loading data, please wait...