// This function turns on a given number of excitatory synapses contained within a // given SectionList. This function is analogous to the activateInhibition() // proc but does not do anything genotype-specific. // // !!NOTE!!: this function does not attempt to turn off // all synapses before activating the desired synapses. It merely sets a // subset of synapses to "on", agnostic to whether they were previously on // or not. Note, however, that this function can be called twice to first // turn all synapses off, and then turn on only the desired synapses. See // notes below. // // This function can also be used to toggle off synapses in the following way: // A) to shut off all synapses in a given SectionList, set $2<0. // B) to shut off all synapses in all sections, set $2<0 and set $o2 to be // the whole tree. // // Also, to activate all synapses in a given region, just set $2 to be a huge // number; this will activate all of the synapses in the desired region. // // INPUT: // $o1: SectionList instance. Sections to draw from. // $2: variable. Number of synapses to activeate. // $3: variable. The seed to assign. // // OUTPUT: // the .isOn flag is toggled as desired for the synapses selected. // strdef curGenStr obfunc activateExcitation() {local ii localobj allSyns,theSec,finalSyns allSyns = new Vector() // all (potential) synapses that qualify for activation finalSyns = new Vector() // vector of synapse indices that will be activated // interate over all synapses, adding those that are in the right // domain. for ii=0,nExc-1{ synAmpa[ii].get_loc() theSec = new SectionRef() if(sectionRefInList(theSec,$o1)){ allSyns.append(ii) } pop_section() } if($2<0){ // Want to shut off all synapses in the provided region. for ii=0,allSyns.size()-1{ synAmpa[allSyns.x[ii]].isOn = 0 synNmda[allSyns.x[ii]].isOn = 0 } return finalSyns }else{ // Choose random indices from desired subset. finalSyns = sampleNoReplace(allSyns,$2,$3) // supply non-random seed // Activate these synapses. for ii=0,finalSyns.size()-1{ synAmpa[finalSyns.x[ii]].isOn=1 synNmda[finalSyns.x[ii]].isOn=1 } // Give a final printout. print "Activated ",finalSyns.size,"excitatory inputs" return finalSyns } }