Roles of subthalamic nucleus and DBS in reinforcement conflict-based decision making (Frank 2006)

 Download zip file 
Help downloading and running models
Deep brain stimulation (DBS) of the subthalamic nucleus dramatically improves the motor symptoms of Parkinson's disease, but causes cognitive side effects such as impulsivity. This model from Frank (2006) simulates the role of the subthalamic nucleus (STN) within the basal ganglia circuitry in decision making. The STN dynamically modulates network decision thresholds in proportion to decision conflict. The STN ``hold your horses'' signal adaptively allows the system more time to settle on the best choice when multiple options are valid. The model also replicates effects in Parkinson's patients on and off DBS in experiments designed to test the model (Frank et al, 2007).
1 . Frank MJ (2006) Hold your horses: a dynamic computational role for the subthalamic nucleus in decision making. Neural Netw 19:1120-36 [PubMed]
2 . Frank MJ, Samanta J, Moustafa AA, Sherman SJ (2007) Hold your horses: impulsivity, deep brain stimulation, and medication in parkinsonism. Science 318:1309-12 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Connectionist Network;
Brain Region(s)/Organism:
Cell Type(s): Neostriatum medium spiny direct pathway GABA cell; Substantia nigra pars compacta DA cell; Subthalamus nucleus projection neuron; Globus pallidus neuron;
Gap Junctions:
Transmitter(s): Dopamine; Gaba; Glutamate;
Simulation Environment: Emergent/PDP++;
Model Concept(s): Simplified Models; Synaptic Plasticity; Rate-coding model neurons; Parkinson's; Reinforcement Learning; Action Selection/Decision Making; Deep brain stimulation; Rebound firing;
Implementer(s): Frank, Michael [mfrank at];
Search NeuronDB for information about:  Neostriatum medium spiny direct pathway GABA cell; Substantia nigra pars compacta DA cell; Dopamine; Gaba; Glutamate;

int snc_size = .layers.SNc.units.size;
float k = 1.0*.processes.Train_Prob.init_procs[0].s_args[0]/.layers.SNc.n_units;
// k is percentage of intact SNC units

UnitSpec* us = .specs.FixedBiasUnitSpec.LearnBiasUnitSpec.matrisom_unitspec;

int max_monval = .processes.Cycle_Prob.final_stats.size;
// number of monitor value statistics

int j;
for (j=0;j<max_monval;j++) .processes.Cycle_Prob.final_stats[j].mod.flag=0;
// don't monitor activities in plus phase (only care about activities during resp selection, in minus phase)

if ((k>0)&&(owner[0].se.val<0.5)) {
  int i; 
  for (i=0;i<snc_size;i++) {
//DA on Rew
  .layers.SNc.units[i].ext=1.0; }

  us.act.gain=k*10000; // bigger gain (for D1 contrast effect)


else {

int i;
 for (i=0;i<snc_size;i++) {
   owner.owner.cur_event.patterns[2].value[i]=0.027; // smaller dip: simulates DA meds
   .layers.SNc.units[i].ext=0.027; // 

 us.act.gain=600-k*300; // smaller gain (contrast)


.processes.Settle_Prob.cycle.max=30; // burst/dip shouldn't last that long in plus phase!

float act0 = .layers."Motor Cortex".units[0].act_m;
float act1 = .layers."Motor Cortex".units[1].act_m;

// check to see which motor resp was most active in minus phase and clamp on in plus phase (so that learns about response just selected, whether good or bad)

if (act0 > act1) {
  owner.owner.cur_event.patterns[3].value[0] = 1.0;
  owner.owner.cur_event.patterns[3].value[1] = 0;
  owner.owner.cur_event.patterns[3].value[2] = 1.0;
  owner.owner.cur_event.patterns[3].value[3] = 0;

if (act1 > act0) {
  owner.owner.cur_event.patterns[3].value[0] = 0;
  owner.owner.cur_event.patterns[3].value[1] = 1.0;
  owner.owner.cur_event.patterns[3].value[2] = 0;
  owner.owner.cur_event.patterns[3].value[3] = 1.0;


Loading data, please wait...