/*--------------------------------------------------------
Start simulation with a passive model, placing 9 equally spaced
synapses on a basal dendrite and activating them in two opposite
sequences (IN and OUT) at increasing stimulation intervals (0-5 ms)
Synapse location: synapse_loc.dat (syn 0 is most distal)
Stimulation sequence: order_single.dendrite.dat
Tiago Branco (2010)
--------------------------------------------------------*/
//load cell morphology and add passive and active properties
xopen("./rc19.hoc")
xopen("./init_biophys.hoc")
xopen("./init_synapses.hoc")
init_params()
init_passive()
//init_active_params() //uncoment to make model active
//init_active() //uncoment to make model active
init_syn_params()
//add synapses
nsyn = mloc.nrow
init_syns(nsyn)
tstop = 200
//start panels and graphs
proc PlotV() {
newPlot (0, tstop, $1, $2)
graphItem.save_name("graphList[0].")
graphList[0].append(graphItem)
graphItem.addexpr("v(.5)")
}
PlotV(v_init-5, -30)
nrncontrolmenu()
// read file with stimulation order
objref morder, forder
forder = new File("./synapse_order.dat")
forder.ropen()
morder = new Matrix()
morder.scanf(forder)
nTs = 9 //number of time intervals
nSeq = morder.nrow //number of different sequences to test
//setup recording vectors
objref storev, recv, storeMes
storev = new Matrix(tstop/dt, nTs*nSeq) //to store the somatic voltage trace for different intervals on one sequence
recv = new Vector()
recv.record(&soma.v(0.5))
storeMes = new Matrix(nTs, nSeq) //to store the EPSP peak for each condition
objref r
r = new Random()
//go for it
for n = 0, nSeq-1 {
print n
access soma
for ti = 0, nTs-1 {
tonset = 50
for od=0, nsyn-1 {
s = morder.x[n][od]
jitter = r.uniform(-0, 0) //to introduce jitter as in Fig. S14
cAMPA[s].onset = tonset+od*ti + jitter
PRE[s].del_rel = tonset+od*ti + jitter
}
run()
for t = 0, storev.nrow-1 {
storev.x[t][ti+n*nTs] = recv.x[t]
recv.x[t] = recv.x[t] - v_init
}
storeMes.x[ti][n] = recv.max()
}
}
//save data
objref savv, savm
savv = new File()
savm = new File()
savv.wopen("./tempV.dat")
savm.wopen("./tempM.dat")
storev.fprint(0, savv, "%f ")
storeMes.fprint(0, savm, "%f ")
savv.close()
savm.close()