// Genesis // D. Jaeger 10/15/08 // to be used for cn6c DCN simulation // synaptic input from spike time files // edited by AE Willett 2014 // add inhib synapses to soma function add_soma_syns copy /library/GABA soma/GABAs setfield soma/GABAs gmax {G_GABAs} addmsg soma/GABAs soma CHANNEL Gk Ek addmsg soma soma/GABAs VOLTAGE Vm //set up timetables and input to soma if (!{exists /inputs}) create neutral /inputs end str finame create neutral /inputs/soma randseed 345678 for(i=49; i<=50; i=i+1) finame = "../AST/PC" @ {pcASTfolder} @ "/" @ {PC_spkti} @ {i} @ ".txt" create timetable /inputs/soma/inhib_tt{i} setfield /inputs/soma/inhib_tt{i} \ maxtime {rundur} act_val 1.0 method 4 fname {finame} call /inputs/soma/inhib_tt{i} TABFILL create spikegen /inputs/soma/inhib_spikegen{i} setfield /inputs/soma/inhib_spikegen{i} output_amp 1 thresh 0.5 addmsg /inputs/soma/inhib_tt{i} /inputs/soma/inhib_spikegen{i} INPUT activation addmsg /inputs/soma/inhib_spikegen{i} soma/GABAs SPIKE setfield soma/GABAs synapse[{i-49}].weight 1.0 synapse[{i-49}].delay 0.00001 synapse[{i-49}].preinput_t -1000.0 synapse[{i-49}].Rec_n 1 synapse[{i-49}].Rec_pre 1 end end function add_dend_syns int i,j, astnum, numinputs str mfincomp, pcincomp,num_comp_mf, num_comp_pc,tot_inp_cp_mf, tot_inp_cp_pc,sort_inp_mf,sort_inp_pc str finame if (!{exists /inputs}) create neutral /inputs end // add excitatory synapses to set of compartments from file openfile {MF_infile} r openfile {tot_input_comp_mf} r randseed {MF_seed} for (j = 1; j <= {no_comp}; j = j + 1) mfincomp = {readfile {MF_infile}} // name of compartment tot_inp_cp_mf = {readfile {tot_input_comp_mf}} // list of inputs for this compartment numinputs = {getarg {arglist {tot_inp_cp_mf}} -count} // number of inputs for this compartment if( {getarg {arglist {tot_inp_cp_mf}} -arg 1} > 0 ) // if no inputs in compartment, put 0 in txt file copy /library/AMPA {mfincomp}/AMPAd setfield {mfincomp}/AMPAd gmax {G_AMPAd} addmsg {mfincomp}/AMPAd {mfincomp} CHANNEL Gk Ek addmsg {mfincomp} {mfincomp}/AMPAd VOLTAGE Vm copy /library/fNMDA {mfincomp}/fNMDAd setfield {mfincomp}/fNMDAd gmax {G_fNMDAd} copy /library/Mg_fblock {mfincomp}/Mg_fblockd addmsg {mfincomp}/fNMDAd {mfincomp}/Mg_fblockd CHANNEL Gk Ek addmsg {mfincomp}/Mg_fblockd {mfincomp} CHANNEL Gk Ek addmsg {mfincomp} {mfincomp}/Mg_fblockd VOLTAGE Vm addmsg {mfincomp} {mfincomp}/fNMDAd VOLTAGE Vm copy /library/sNMDA {mfincomp}/sNMDAd setfield {mfincomp}/sNMDAd gmax {G_sNMDAd} copy /library/Mg_sblock {mfincomp}/Mg_sblockd addmsg {mfincomp}/sNMDAd {mfincomp}/Mg_sblockd CHANNEL Gk Ek addmsg {mfincomp}/Mg_sblockd {mfincomp} CHANNEL Gk Ek addmsg {mfincomp} {mfincomp}/Mg_sblockd VOLTAGE Vm addmsg {mfincomp} {mfincomp}/sNMDAd VOLTAGE Vm if(!{exists /inputs/{mfincomp}}) create neutral /inputs/{mfincomp} end for (i = 1; i <= {numinputs}; i = i + 1) astnum = {getarg {arglist {tot_inp_cp_mf}} -arg {i}} finame = "../AST/MF" @ {mfASTfolder} @ "/" @ {MF_spkti} @ {astnum} @ ".txt" create timetable /inputs/{mfincomp}/ex_tt{i} setfield /inputs/{mfincomp}/ex_tt{i} \ maxtime {rundur} act_val 1.0 method 4 fname {finame} call /inputs/{mfincomp}/ex_tt{i} TABFILL create spikegen /inputs/{mfincomp}/ex_spikegen{i} setfield /inputs/{mfincomp}/ex_spikegen{i} output_amp 1 thresh 0.5 addmsg /inputs/{mfincomp}/ex_tt{i} /inputs/{mfincomp}/ex_spikegen{i} INPUT activation addmsg /inputs/{mfincomp}/ex_spikegen{i} {mfincomp}/AMPAd SPIKE addmsg /inputs/{mfincomp}/ex_spikegen{i} {mfincomp}/fNMDAd SPIKE addmsg /inputs/{mfincomp}/ex_spikegen{i} {mfincomp}/sNMDAd SPIKE end end end closefile {MF_infile} closefile {tot_input_comp_mf} // add inhibitory synapses to all or a subset of compartments openfile {PC_infile} r openfile {tot_input_comp_pc} r randseed {PC_seed} for (j = 1; j <= {no_comp}; j = j + 1) pcincomp = {readfile {PC_infile}} tot_inp_cp_pc = {readfile {tot_input_comp_pc} -l} numinputs = {getarg {arglist {tot_inp_cp_pc}} -count} if( {getarg {arglist {tot_inp_cp_pc}} -arg 1} > 0 ) copy /library/GABA {pcincomp}/GABAd setfield {pcincomp}/GABAd gmax {G_GABAd} addmsg {pcincomp}/GABAd {pcincomp} CHANNEL Gk Ek addmsg {pcincomp} {pcincomp}/GABAd VOLTAGE Vm if(!{exists /inputs/{pcincomp}}) create neutral /inputs/{pcincomp} end for (i = 1; i <= {numinputs}; i = i + 1) astnum = {getarg {arglist {tot_inp_cp_pc}} -arg {i}} finame = "../AST/PC" @ {pcASTfolder} @ "/" @ {PC_spkti} @ {astnum} @ ".txt" create timetable /inputs/{pcincomp}/inhib_tt{i} setfield /inputs/{pcincomp}/inhib_tt{i} \ maxtime {rundur} act_val 1.0 method 4 fname {finame} call /inputs/{pcincomp}/inhib_tt{i} TABFILL create spikegen /inputs/{pcincomp}/inhib_spikegen{i} setfield /inputs/{pcincomp}/inhib_spikegen{i} output_amp 1 thresh 0.5 addmsg /inputs/{pcincomp}/inhib_tt{i} /inputs/{pcincomp}/inhib_spikegen{i} INPUT activation addmsg /inputs/{pcincomp}/inhib_spikegen{i} {pcincomp}/GABAd SPIKE setfield {pcincomp}/GABAd synapse[{i-1}].weight 1.0 synapse[{i-1}].delay 0.000001 synapse[{i-1}].preinput_t -1000.0 synapse[{i-1}].Rec_n 1 synapse[{i-1}].Rec_pre 1 end end end closefile {PC_infile} closefile {tot_input_comp_pc} end