Do you have any insight or guidance into how to reach my goal?
http://postimg.org/image/4htm23lml/
Code: Select all
//=================== creating cell object ==========================
load_file("stdlib.hoc")
load_file("nrngui.hoc")
load_file("ranstream.hoc")
objref cvode
cvode = new CVode()
cvode.active(1)
load_file("import3d.hoc")
objref L5PC
strdef morphology_file
morphology_file = "../morphologies/cell1.asc"
load_file("../models/L5PCbiophys3.hoc")
load_file("../models/L5PCtemplate.hoc")
L5PC = new L5PCtemplate(morphology_file)
//-------------------parameters-----------------------//
v_init = -80
eNSNUM = 15000 // how many NetStims to create (total, excite + inhib, so # of excitatory synapses is eNSNUM - iNSNUM)
iNSNUM = 4500 //nuber of inhibitory synapses
MAXSTREAM = 1000
tstop = 3000 // length of simulation
dendnseg = 83 // as determind by the original model
//-------------------parameters for NetStim-----------//
// this generates a presynaptic train of stimuli
spikeint = 1000 // (ms) mean time between spikes, 1000(ms) to get 1 Hz
i_spikeinit = 200 // inhibitory 200 (ms) to get 5 Hz
nspikes = 50 // average number of spikes, that NetStim will produce.
spikeonset = 500 // start time (ms) of first spike (delay)
noise = 1 // set to 1 for poisson mode
//-------------------parameters for Exp2Syn-----------//
// S = 1 / Ohms. G is in microOhms
// TAU1 and TAU2 parameters for L5PC in a paper
TAU1 = 0.20
TAU2 = 1.7
i_excite = 1 //current (nA), (original: 1), multiplier -> 10
e_excite = 0 //revesral potential
i_inhibit = 0.5 // current (nA), original (original: 0.5) multiplier -> 10
e_inhibit = -60 //leak reversal potential
//-------------------parameters for NetCon------------//
// not sure what parameters to set for this setion. arbitrarily picked
THRESHOLD = 10
DELAY = 0.8
WEIGHT = 0.1
//-------------------MODEL SETUP-----------------------//
objref nslist, rslist, eslist, nclist
nslist = new List() // NetStim list
rslist = new List() // RandStream list
eslist = new List() // Exp2Syn list
//----- make_stims create excitatory synapses, all firing randomly-----//
proc syn_excite() { local i localobj ns, rs, es, r
nslist = new List()
rslist = new List()
eslist = new List()
random_stream_offset_ = MAXSTREAM
for i = 0, $1-1 {
ns = new NetStim()
nslist.append(ns)
rs = new RandomStream(i)
rslist.append(rs)
ns.noiseFromRandom(rs.r)
rs.r.negexp(1) // must specify negexp distribution with mean = 1
rs.start() // makes random noise and writes results in list
}
r = new Random()
for i = 0, $1-1 {
s1dend= 1 //s1 dendrite, in our case, we only have 1 dend
s1comp= r.uniform(0, dendnseg) //s1 compartment --- choose a random (discunif = discrete uniform) compartment of dendrites
s1coord= s1comp / dendnseg //s1 coordinate, remember dendnseg is 1 by original cell model
L5PC.dend[s1dend] {
es = new Exp2Syn(s1coord) //places Exp2Syn on dend in compartment with coordinate s1
eslist.append(es)
}
}
}
syn_excite(eNSNUM)
//this changes the last few EXP2SYN's parameters to be inhibitory (number of inhibitory synapses is iNSNUM)
proc setparams() {local i, j
for i = 0,nslist.count()-iNSNUM {
nslist.o(i).interval = spikeint
nslist.o(i).number = nspikes
nslist.o(i).start = spikeonset
nslist.o(i).noise = noise
}
for i = nslist.count()-iNSNUM, nslist.count()-1{
nslist.o(i).interval = i_spikeinit
nslist.o(i).number = nspikes
nslist.o(i).start = spikeonset
nslist.o(i).noise = noise
}
for i = 0,eslist.count()-iNSNUM {
eslist.o(i).tau1 = TAU1 //rise time (ms)
eslist.o(i).tau2 = TAU2 //delay time (ms)
eslist.o(i).e = e_excite //reversal potential, change this to make it inhibitory
eslist.o(i).i = i_excite
}
for i = eslist.count()-iNSNUM, eslist.count()-1{
eslist.o(i).tau1 = TAU1 //rise time (ms)
eslist.o(i).tau2 = TAU2 //delay time (ms)
eslist.o(i).e = e_inhibit //reversal potential, change this to make it inhibitory
eslist.o(i).i = i_inhibit
}
}
setparams() // default is deterministic spike times (NOISE = 0)
//-------------------instrumentation-----------------------//
// this is where NetCon is caled and connects the NetStim and EXP2SYN
objref nclist, tvec, idvec
idvec = new Vector()
tvec = new Vector()
nclist = new List()
proc instrumentation() { local i localobj nc, inc
for i = 0,nslist.count()-1 {
nc = new NetCon(nslist.o(i), eslist.o(i), THRESHOLD, DELAY, WEIGHT)
nclist.append(nc)
nc.record(tvec, idvec, i)
}
}
instrumentation()
//======================= plot settings ============================
objref gV, tempVec
gV = new Graph()
gV.size(0,tstop,-80,40)
graphList[0].append(gV)
gV.addvar("soma","L5PC.soma.v(0.5)",1,1)
objref vvec, r_tvec
vvec = new Vector()
r_tvec = new Vector()
cvode.record(&v(0.5), vvec, r_tvec)
//-------------------starting simulation-----------------------//
run()
print "done!"
//-------------------save settings----------------------------//
objref savv
strdef str1
count = 16
savv = new File()
sprint(str1,"v_cell_%d.txt", count)
savv.wopen(str1)
vvec.printf(savv)
r_tvec.printf(savv)
savv.close()