// // fsInputFromFile.g // // Johannes Hjorth, hjorth@csc.kth.se // December 2005 // // Updated february 2009, moved parts of fsInsignalGenerator.g here // (the functions that were used to connect input to the synapes) // // Functions to read noise and insignal data from file to timetables // // Please note that readInputFromFile assumes that the files are numbered // from 1 and up, whereas the input naming convention starts from 0 function readInputFromFile(inputName, filePath, fileNum) str inputName str filePath int fileNum str inputBasePath = "/input" int ctr str inputPath = {inputBasePath}@"/"@{inputName} if({maxTime} == 0) echo "readInputFromFile: Error, maxTime is set to 0" quit end if(!{exists {inputBasePath}}) create neutral {inputBasePath} end echo "Reading from "{filePath}" files 1 to "{fileNum} echo "Connecting input to "{inputPath}[0]" to "[{{fileNum}-1}] for(ctr = 0; ctr < {fileNum}; ctr = ctr + 1) create timetable {inputPath}[{ctr}] setfield {inputPath}[{ctr}] maxtime {maxTime} \ method 4 \ act_val 1.0 \ fname {filePath}{{ctr}+1} call {inputPath}[{ctr}] TABFILL create spikegen {inputPath}[{ctr}]/spikes setfield {inputPath}[{ctr}]/spikes \ output_amp 1 thresh 0.5 abs_refract 0.0001 addmsg {inputPath}[{ctr}] {inputPath}[{ctr}]/spikes \ INPUT activation end end ////////////////////////////////////////////////////////////////////////////// // // Connects insignal objects to the synapses of the cells // // if the fsNetworkPath ends with [], eg /fs[] then all cells in the /fs // path will get connected to the insignal specified. If it only says /fs then // just the first cell /fs[0] will get connected. // ////////////////////////////////////////////////////////////////////////////// function connectFsInsignalToCell(fsNetworkPath, fsInsignalPath, channelTypes) str fsNetworkPath str fsInsignalPath str channelTypes str fsName, compName int insignalCtr = 0 // We assume that there are enough insignals in the path str channelType int dCtr, densityMax if({strlen channelTypes} == 0) echo "The function connectFsInsignal in fsInsignalGenerator.g" echo "has been updated! Please add channelType argument to call." echo " " echo "eg. connectFsInsignal /fs /insignal \"AMPA GABA \"" echo " " echo "Aborting genesis." quit end foreach fsName ({el {fsNetworkPath}}) // Loop through network cells if [] // Connect to soma AMPA+GABA, later also NMDA foreach channelType ({arglist {channelTypes}}) // Add NMDA later echo "Connecting "{channelType}" inputs to "{fsName}" starting at "{fsInsignalPath}" (#"{insignalCtr}")" densityMax = {getfield {fsName} somaDensity{channelType}} for(dCtr = 0; dCtr < densityMax; dCtr = dCtr + 1) // echo "* soma ("{insignalCtr}") addmsg {fsInsignalPath}[{insignalCtr}]/spikes \ {fsName}/soma/{channelType}_channel SPIKE insignalCtr = {insignalCtr + 1} end // Connect to primary dendrites densityMax = {getfield {fsName} primDensity{channelType}} foreach compName ({el {fsName}/primdend#} \ {el {fsName}/primdend#/prim_dend#}) for(dCtr = 0; dCtr < densityMax; dCtr = dCtr + 1) // echo "* "{compName}" starting from input "{insignalCtr} addmsg {fsInsignalPath}[{insignalCtr}]/spikes \ {compName}/{channelType}_channel SPIKE insignalCtr = {insignalCtr + 1} end end // Connect to secondary dendrites densityMax = {getfield {fsName} secDensity{channelType}} foreach compName ({el {fsName}/secdend#} \ {el {fsName}/secdend#/sec_dend#}) for(dCtr = 0; dCtr < densityMax; dCtr = dCtr + 1) // echo "* "{compName}" starting from input "{insignalCtr} addmsg {fsInsignalPath}[{insignalCtr}]/spikes \ {compName}/{channelType}_channel SPIKE insignalCtr = {insignalCtr + 1} end end // Connect to tertiary dendrites densityMax = {getfield {fsName} tertDensity{channelType}} foreach compName ({el {fsName}/tertdend#} \ {el {fsName}/tertdend#/tert_dend#}) for(dCtr = 0; dCtr < densityMax; dCtr = dCtr + 1) // echo "* "{compName}" starting from input "{insignalCtr} addmsg {fsInsignalPath}[{insignalCtr}]/spikes \ {compName}/{channelType}_channel SPIKE insignalCtr = {insignalCtr + 1} end end end end end ////////////////////////////////////////////////////////////////////////////// function connectFsInsignal(fsNetworkPath, fsInsignalPath, channelTypes) str fsNetworkPath str fsInsignalPath str channelTypes connectFsInsignalToCell {fsNetworkPath}[] {fsInsignalPath} {channelTypes} end