// set the pointers for AMPA, NMDA, GABA_A or GABA_B synapses
// to a defined location
econ.xopen_library("Terrence","find-gmax")
proc salloc() { local nmdaR
// $o1 and $o2 are the first 2 arguments to this function
// They should be an AMPA and NMDA synapse or a
// GABA_A and GABA_B synapse
// .loc() places them at a normalized and segment-resolved position [0..1]
// along the section
$o1.loc($3)
$o2.loc($3)
// here we call a library function to figure out the maximum AMPA
// conductance which should be used at this synapse based on synapse
// tunings calculated from a previously run tuning experiments
// this number will be anywhere from 0.5nS to 5nS depending on what
// was required to generate a 5mV local depolarization
$o1.gmax = find_gmax($3)
// next we decide what the NMDA-AMPA gmax ratio should be --- ie,
// a Mainen-Sejnowski article suggested that maximum NMDA should be
// (0.6)*gbar_AMPA.
nmdaR = deduce_ratio()
// Assuming (and expecting and hoping!) that the first object passed in
// was an AMPA synapse and the second object passed in was an NMDA
// synapse, then the NMDA synapses' gbar_NMDA is now changed by a factor
// of nmdaR
$o2.gmax=$o1.gmax*nmdaR
// printf("ampa: %g nmda: %g * %g\n", $o1.gmax, $o1.gmax, nmdaR)
}
// This is a variation of the above designed to work with
// GABA syns as well as AMPA syns.
// It is a work in progress.
proc SALLOC() { local ratio, ampa_flag
ampa_flag=0
ampa_flag=$4
$o1.loc($3)
$o2.loc($3)
if (ampa_flag) {
$o1.gmax=find_gmax($3)
nmdaR=deduce_ratio()
$o2.gmax=$o1.gmax*nmdaR
// printf("ampa: %g nmda: %g * %g\n", $o1.gmax, $o1.gmax, nmdaR)
} else {
$o1.gmax=GABA_AMPA_RATIO*find_gmax($3)
nmdaR=deduce_ratio()
$o2.gmax=GABAB_GABAA_RATIO*$o1.gmax
// printf("gabaa: %g gabab: %g * %g\n", $o1.gmax, $o1.gmax, GABAB_GABAA_RATIO)
}
}
// same for GABAa synapses
proc SALLOC_GABAa() { local flag
flag=0
flag=$3
$o1.loc($2)
if (flag){
$o1.gmax=GABA_AMPA_RATIO*find_gmax($2) // as a function of ampa conductance
} else {
$o1.gmax = $4
}
// printf("gabaa: %g\n", $o1.gmax)
}
// same for GABAb synapses
proc SALLOC_GABAb() { local flag
flag=0
flag=$3
$o1.loc($2)
if (flag){
$o1.gmax=GABAb_GABAa_RATIO*(GABA_AMPA_RATIO*find_gmax($2)) // as a function of ampa conductance
} else {
$o1.gmax = $4
}
// printf("gabab: %g\n", $o1.gmax)
}
// display synaptic locations on a graph
proc salloc2() {
/*
$o1.loc($3)
$o2.loc($3)
$o1.gmax=find_gmax($3)
$o2.gmax=$o1.gmax*deduce_ratio()
print $o1, $o1.gmax
print $o2, $o2.gmax
*/
salloc($o1,$o2,$3)
if ($4) {
$o5.point_mark($o1,$6)
}
}