Help varying membrane voltage fluxuation
Posted: Thu Apr 14, 2016 11:38 pm
I am trying to reproduce some of the results of Alain Destexhe in his paper "High-Conductance State of Neocortical Neurons In Vivo (image below), in particular Fig. C1)." If I am trying to vary the membrane voltage fluctuation (SD = ~4 mV) of my system, what parameters would I theoretically change? I have added inhibitory synapses now to my code (attached below) and have tried changing the variables of: EXP2SYNS.i and the WEIGHT parameters, because this affects the synaptic inputs. These changes does not seem to have an apparent effect.
Do you have any insight or guidance into how to reach my goal?
http://postimg.org/image/4htm23lml/
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()