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;
#!/usr/local/bin/css -f

float SEM(float* vals, float avg, int n) {
  float sd = 0;
  int i;
  for(i=0;i<n;i++) {
    float d = vals[i] - avg;
    sd += d * d;
  }
  return sqrt(sd / (float)(n-1)) / sqrt(n);
}

void Anal(String fnm) {
  fstream istrm;
  istrm.open(fnm, ios::in);

  fstream ostrm;
  ostrm.open(fnm + ".dt", ios::out);

  float sse[1000];
  int i;

  while(!istrm.eof() && istrm.good()) {
    String_Array& col = ReadLine(istrm);
    if(istrm.eof() || istrm.bad()) break;
    if(col[0].contains("_H:"))
      continue;
    sse[i]=8.33*col[3]; // convert from errors out of 12 to percent
    i++;
  }

  for (i=0;i<1000;i++)

    ostrm << "_D:" << "\t" << 10*(i%20) << "\t" << sse[i] << "\n";
    
  istrm.close();
  ostrm.close();
  cout << fnm << ".dt:\n";
  system("more " + fnm + ".dt");
  cout << "\n";
}

void Main() {
  int i;
  for(i=1;i<argc;i++) {
    Anal(argv[i]);
  }
}

Main();