// genesis
// allows one to document the numbers of afferent synapses to selected neuron types
// rmaex  March 2017

int number_of_neurons, selected_neuron
int msgcountin, msgindex 
int i, j, sum, nsynapses, population_sum
int nafferents = 0
str list, name, sender_PF 
str output 


/*   MLI synapses onto Purkinje cells */

/*
  number_of_neurons = 50 // PCs
  list = ""
  output = "Purk_stell_nsynapses.dat"
  population_sum = 0

  for (i = 1; {i <= number_of_neurons}; i = i + 1)
       list = (list) @ {i} @ " "
       ce /Purkinje_layer/Purkinje[{i-1}]
       sum = 0
       foreach name ({el ./##[][TYPE=compartment]/stell})
         ce {name}
         nsynapses = {getfield . nsynapses}
         sum = {sum} + {nsynapses}
       end
       echo {i} {sum}
       list = (list) @ {sum} @ " " @ {chr 10}
       population_sum = {population_sum + sum}
  end
  echo total number of stell synapses on PCs = {population_sum}
  echo {list}  > {output} // {source_list}
*/


/*  retrograde PC synapses onto Purkinje cells */

/*
  number_of_neurons = 50 // PCs
  list = ""
  output = "Purk_purk_nsynapses.dat"
  population_sum = 0

  for (i = 1; {i <= number_of_neurons}; i = i + 1)
       list = (list) @ {i} @ " "
       ce /Purkinje_layer/Purkinje[{i-1}]
       sum = 0
       foreach name ({el ./[][TYPE=compartment]/purk})
         ce {name}
         nsynapses = {getfield . nsynapses}
         sum = {sum} + {nsynapses}
       end
       echo {i} {sum}
       list = (list) @ {sum} @ " " @ {chr 10}
       population_sum = {population_sum + sum}
  end
  echo total number of purk synapses on PCs = {population_sum}
  echo {list}  > {output} // {source_list}
*/


/*   PF synapses onto Purkinje cells */

/*
  population_sum = 0
  number_of_neurons = 50 // PCs
  list = ""
  str output = "Purk_pfAMPA_nsynapses.dat"

  for (i = 0; {i < number_of_neurons}; i = i + 1)

       list = (list) @ {i} @ " "
       ce /Purkinje_layer/Purkinje[{i}]
       sum = 0
       foreach name ({el ./##[][TYPE=compartment]/par})
             ce {name}
             nsynapses = {getfield . nsynapses}
             sum = {sum} + {nsynapses}
       end
       echo {i} {sum}
       list = (list) @ {sum} @ " " @ {chr 10}
       population_sum = {population_sum + sum}
  end
  echo total number of parallel fibre synapses on PCs = {population_sum}
  echo {list}  > {output} // {source_list}
*/


/*   PF synapses onto MLIs */

  population_sum = 0
  number_of_neurons = 800 // MLIs
  list = ""
  str output = "Stell_pfAMPA_nsynapses_torus.dat"

  for (i = 1; {i <= number_of_neurons}; i = i + 1)

       list = (list) @ {i} @ " "
       ce /molecular_layer/Stellate[{i-1}]
       sum = 0
       foreach name ({el ./##[]/pf_AMPA})
             ce {name}
             nsynapses = {getfield . nsynapses}
             echo  {name} {nsynapses}
             sum = {sum} + {nsynapses}
       end
       list = (list) @ {sum} @ " " @ {chr 10}
       population_sum = {population_sum + sum}
  end
  echo total number of parallel fibre synapses on stcs = {population_sum}
  echo {list}  > {output} // {source_list}


/*   MLI synapses onto MLIs */

  population_sum = 0
  number_of_neurons =  800 // MLIs
  list = ""
  str output = "Stell_GABAA_nsynapses_torus.dat"

  for (i = 1; {i <= number_of_neurons}; i = i + 1)

       list = (list) @ {i} @ " "
       ce /molecular_layer/Stellate[{i-1}]
       sum = 0
       foreach name ({el ./##[]/GABAA})
             ce {name}
             nsynapses = {getfield . nsynapses}
             echo  {name} {nsynapses}
             sum = {sum} + {nsynapses}
       end
       list = (list) @ {sum} @ " " @ {chr 10}
       population_sum = {population_sum + sum}
  end
  echo total number of GABAA synapses on stcs = {population_sum}
  echo {list}  > {output} // {source_list}