import numpy as np
import make_timetables as mp
import subprocess
synparams_file = 'MScell/SynParamsCtx.g'
gaba_delays = [0.015,0.025,0.04,0.05,0.1]
digits = ['0','1','2','3','4','5','6','7','8','9','.']
sim_name = 'Different_gaba_delay_stimulation'
text_sim_1 = '''
include SimParams.g //simulation control parameters, can be overridden in this file
include MScell/globals.g
include MScell/Ca_constants.g
include MScell/SynParamsCtx.g
include MScell/spineParams.g
include MScell/MScellSynSpines // access make_MS_cell
include InOut/add_output.g //functions for ascii file output
include InOut/IF.g //function to create pulse generator for current injection, also IF & IV curves
include InOut/HookUp.g
setclock 0 {simdt}
setclock 1 {outputclock}
str DA = "UI"
str Location = "tertdend1_1"
str jitter = "No"
int jitter_int = 0
int seedvalue = 5757538
'''
#here Protocol and Timing
text_sim_2 = """
GABAYesNo = 1
str diskpath="SimData/"@{Protocol}@"_"@{DA}@"_"@{Timing}@"_"@{Location}@"_randseed_"@{seedvalue}@"_high_res"
int totspine={make_MS_cell_SynSpine {neuronname} {pfile} {spinesYesNo} {DA}}
reset
Vmhead={add_outputVm {comps} {Vmfile} {neuronname}}
if ({CaOut})
if ( {calciumdye} == 0)
Cafile = "Ca_plasticity"
elif ( {calciumdye} == 1)
Cafile = "Ca_Fura_2_plasticity"
elif ( {calciumdye} == 2)
Cafile = "Ca_Fluo_5f_plasticity"
elif ( {calciumdye} == 3)
Cafile = "Ca_Fluo_4_plasticity"
else
Cafile = "Ca_unnkown_dye_plasticity"
end
Cahead={add_outputCal {comps} {CaBufs} {Cafile} {neuronname}}
else
Cafile="X_plasticity"
Cahead=""
end
if ({GkOut})
Gkfile="Gk_plasticity"
Gkhead={add_outputGk {comps} {chans} {Gkfile} {neuronname}}
else
Gkfile="X_plasticity"
Gkhead=""
end
str stimcomp= {Location}
str spinefile="spine_plasticity"
ce /
"""
#here include paradigm
text_sim_3 = '''
float newTrainFreq = {burstFreq}/{numbursts}
echo {newTrainFreq}
HookUp {prestim} {Protocol} {Timing} {stimcomp} {diskpath} {numAP} {inject} {AP_durtime} {APinterval} {ISI} {pulseFreq} {pulses} {burstFreq} {numbursts} {newTrainFreq} 1 {jitter_int}
reset
step 1.5 -time
fileFLUSH {Vmfile}
fileFLUSH {Cafile}
fileFLUSH {Gkfile}
fileFLUSH {spinefile}
fileFLUSH {somainjfile}
'''
if __name__ == '__main__':
for delay in [0.04]:
mp.change_in_file(synparams_file,'GABAdelay = ',delay)
params = mp.read_file('SimParams.g')
gabaYesNo = mp.find_value(params,'GABAYesNo','Pre')
spines = mp.find_string(params,'whichSpines','Pre')
stim_start = mp.find_value(params,'initSim','Pre')
too_fast = mp.find_value(params,'TooFast','Pre')
print gabaYesNo, spines, stim_start, too_fast
protocols = ['InOut/Fino.g']#,'InOut/1_AP.g']
timings = ['Pre','Post']
paradigm_names = ['Fino']#,'1_AP']
for timing in timings:
for i, protocol in enumerate(protocols):
text = mp.read_file(protocol)
#find pulseFreq
freq = mp.find_value(text, 'pulseFreq',timing)
npulses = mp.find_value(text, 'pulses',timing)
nbursts = mp.find_value(text, 'numbursts',timing)
burstfreq = mp.find_value(text, 'burstFreq',timing)
ntrains = mp.find_value(text, 'numtrains',timing)
trainfreq = mp.find_value(text, 'trainFreq',timing)
print freq, npulses, nbursts, burstfreq, ntrains, trainfreq
if npulses == None:
npulses = 1
fname_base = paradigm_names[i]+'_'+timing+'_stimulation_spine_'
spine_list = spines.split(',')[0]
if npulses > 1:
if freq > too_fast:
spine_list = spines.split(',')
mp.distribute(freq,npulses,burstfreq,nbursts,trainfreq,ntrains,stim_start,fname_base,spine_list)
if gabaYesNo:
spine_list = ['']
fname_base = paradigm_names[i]+'_'+timing+'_gaba'
dela = mp.find_value(mp.read_file('MScell/SynParamsCtx.g'),'GABAdelay =','')
print delay, dela
mp.distribute(freq,npulses,burstfreq,nbursts,trainfreq,ntrains,stim_start+delay,fname_base,spine_list)
sim_file = sim_name+'_'+paradigm_names[i]+'_timing_'+timing+'_gaba_delay_'+str(delay)+'.g'
fil = open(sim_file,'w')
fil.write(text_sim_1)
fil.write('str Protocol = "'+paradigm_names[i]+'"\n')
fil.write('str Timing = "'+timing+'"\n')
fil.write(text_sim_2)
fil.write("include "+protocol+'\n')
fil.write(text_sim_3)
fil.close()
process = subprocess.Popen(['/home/asia/genesis-2.4/chemesis','-nox','-notty','-batch',sim_file])
ret = process.wait()