Dynamic dopamine modulation in the basal ganglia: Learning in Parkinson (Frank et al 2004,2005)

 Download zip file 
Help downloading and running models
Accession:79488
See README file for all info on how to run models under different tasks and simulated Parkinson's and medication conditions.
Reference:
1 . Frank MJ (2005) Dynamic dopamine modulation in the basal ganglia: a neurocomputational account of cognitive deficits in medicated and nonmedicated Parkinsonism. J Cogn Neurosci 17:51-72 [PubMed]
2 . Frank MJ, Seeberger LC, O'reilly RC (2004) By carrot or by stick: cognitive reinforcement learning in parkinsonism. Science 306:1940-3 [PubMed]
Citations  Citation Browser
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): Neostriatum medium spiny direct pathway GABA cell;
Channel(s): I Na,t; I K,leak; I Cl,Ca;
Gap Junctions:
Receptor(s): D1; D2; Glutamate; Gaba;
Gene(s):
Transmitter(s): Dopamine; Gaba; Glutamate;
Simulation Environment: Emergent/PDP++;
Model Concept(s): Simplified Models; Synaptic Plasticity; Pathophysiology; Rate-coding model neurons; Parkinson's; Reinforcement Learning; Action Selection/Decision Making; Hebbian plasticity;
Implementer(s): Frank, Michael [mfrank at u.arizona.edu];
Search NeuronDB for information about:  Neostriatum medium spiny direct pathway GABA cell; D1; D2; Glutamate; Gaba; I Na,t; I K,leak; I Cl,Ca; Dopamine; Gaba; Glutamate;

int snc_size = .layers.SNc.units.size;
float k = 1.0*.processes.Train_Prob.init_procs[3].s_args[0]/.layers.SNc.n_units;
UnitSpec* us = .specs.FixedBiasUnitSpec.LearnBiasUnitSpec.matrisom_unitspec;


int max_monval = .processes.Cycle_Prob.final_stats.size;
int j;
for (j=0;j<max_monval;j++) .processes.Cycle_Prob.final_stats[j].mod.flag=0;

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

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

}

else {

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

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

}	

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

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

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;
}




GetMyTrialProc().SetCurLrate();