//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // // NOTICE OF COPYRIGHT AND OWNERSHIP OF SOFTWARE // // Copyright 2010, The University Of Michigan // // All rights reserved. // For research use only; commercial use prohibited. // No Distribution without permission of William Stacey // wstacey@umich.edu // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // Definition of the synaptic properties in the network begintemplate SynParam public preCell, postCell, synName, tao1, tao2, Erev, synLocSec, synLoc, Npre, gmax, gmaxUnits, delay, synID, globalID, modFileName, r strdef preCell, postCell, synName, modFileName proc init() { preCell = $s1 // Name of the presynaptic cell, e.g. Pyr postCell = $s2 // Name of the postsynaptic cell, e.g Pyr synName = $s3 // Usually the type of the synamse eg. AMPA tao1 = $4 tao2 = $5 Erev = $6 modFileName = $s7 // name of the used mod file, it is used in the syn.tmp synLocSec = $8 // ID 0->soma, 1->dendrite synLoc = $9 // [0-1] Npre = $10 // Number of the presynaptic connections from Pyr gmax = $11 // gmax for connections from Pyr gmaxUnits = $12 // gmax for connections from Pyr delay = $13 // delay for connections from Pyr r = $14 // NMDA/AMPA ratio synID = -2 //$14 // synaptic ID used to define the connections in the conn.dat files globalID = $15 // Global ID to identify the entity in SynParamSet } endtemplate SynParam // This object keeps the description of synapses in the public list "synSet" begintemplate SynParamSet public synSet objref synSet strdef preCell, postCell, synName, tmpstr, tmpstr2, modFileName proc init() { local i localobj fo, strFun tao1 = 0 tao2 = 0 Erev = 0 synLocSec = 0 synLoc = 0 Npre = 0 gmax = 0 gmaxUnits = 0 delay = 0 r = 0 synSet = new List() strFun = new StringFunctions() // READ synapses fo = new File("parameters/synapses.par") fo.ropen() while(!fo.eof()) { fo.gets(tmpstr) // Find in tmpstr all that follows non-blank character, and store it in tmpstr2 strFun.tail(tmpstr, "[^\t]", tmpstr2) // Remove end of the line strFun.head(tmpstr2, "\n", tmpstr2) // Process data if nonepty line if (strFun.len(tmpstr2)>0 && strFun.substr(tmpstr, "//")==-1) { sscanf(tmpstr, "%[^,], %[^,], %[^,], %lf, %lf, %lf, %[^,], %d, %lf, %d, %lf, %d, %*lf, %*lf\n", preCell, postCell, synName, &tao1, &tao2, &Erev, modFileName, &synLocSec, &synLoc, &Npre, &gmax, &gmaxUnits) sscanf(tmpstr, "%*[^,], %*[^,], %*[^,], %*lf, %*lf, %*lf, %*[^,], %*d, %*lf, %*d, %*lf, %*d, %lf\n, %lf", &delay, &r) synSet.append(new SynParam( preCell, postCell, synName, tao1, tao2, Erev, modFileName, synLocSec, synLoc, Npre, gmax, gmaxUnits, delay, r, synSet.count())) //printf("%s, %s, %s, %lf, %lf, %lf, %s, %d, %lf, %d, %lf, %d, %lf\n", preCell, postCell, synName, tao1, tao2, Erev, modFileName, synLocSec, synLoc, Npre, gmax, gmaxUnits, delay, synSet.count()) } } fo.close() } endtemplate SynParamSet