// Experiment with 2-component axon extention tail, and Na-K channels
// in all compartments
// nrngui stuff and ion chans
load_file("inc-first.ses")
strdef file_name, ses_file
file_name = "ext-axon-70um-10alphasynapses"
sprint(ses_file, "neuron-CB-ext-axon-2pieces-chans-%s.ses", file_name)
//load CellBuilder
{load_file(ses_file)}
{
xpanel("RunControl", 0)
v_init = -60
xvalue("Init","v_init", 1,"stdinit()", 1, 1 )
xbutton("Init & Run","run()")
xbutton("Stop","stoprun=1")
runStopAt = 5
xvalue("Continue til","runStopAt", 1,"{continuerun(runStopAt) stoprun=1}", 1, 1 )
runStopIn = 1
xvalue("Continue for","runStopIn", 1,"{continuerun(t + runStopIn) stoprun=1}", 1, 1 )
xbutton("Single Step","steprun()")
t = 200
xvalue("t","t", 2 )
tstop = 20
xvalue("Tstop","tstop", 1,"tstop_changed()", 0, 1 )
dt = 0.025
xvalue("dt","dt", 1,"setdt()", 0, 1 )
steps_per_ms = 40
xvalue("Points plotted/ms","steps_per_ms", 1,"setdt()", 0, 1 )
screen_update_invl = 0.1
xvalue("Scrn update invl","screen_update_invl", 1,"", 0, 1 )
realtime = 1.12
xvalue("Real Time","realtime", 0,"", 0, 1 )
xpanel(893,777)
}
// load common funcs
load_file("fitfuncs.hoc")
print_elec_cell()
// calc morph stats
load_file("stats.hoc")
load_file("v-graph-bigger-axon-2pieces.ses")
load_file("neuron-PointProcessMgr-ext-axon-2pieces-chans-ext-axon-70um-10alphasynapses.ses")
load_file("vclamp_soma_-60mV.ses")
// save state in this file
sprint(state_file_name, "state-neuron-CB+act+elec+ext-axon-2piece-chans-%s.bin", file_name)
// small adjustments
// loop and set random timing for synapses
// use NetStim and NetCon
// use ExpSyn object
objref ns, nc, syn
/*
iterator set_syn() { local i
for i = 1, numarg()-1 {
access $oi.sec
syn = new ExpSyn(0.5)
syn.tau = 0.1
syn.e = 0
iterator_statement
}
}
for set_syn(dendrite[685] sec) print secname()
// => doesn't work
// Create SectionList
objref synsecs
synsecs = new SectionList()
// Add preselected sections
dendrite[685] synsecs.append()
dendrite[524] synsecs.append()
dendrite[520] synsecs.append()
dendrite[626] synsecs.append()
dendrite[205] synsecs.append()
dendrite[357] synsecs.append()
dendrite[464] synsecs.append()
dendrite[588] synsecs.append()
dendrite[513] synsecs.append()
dendrite[48] synsecs.append()
// Loop over sections and add synapse
forsec synsecs {
print secname()
syn = new ExpSyn(0.5)
syn.tau = 0.1
syn.e = 0
}
*/
// OR do like this:
// http://www.neuron.yale.edu/phpbb/viewtopic.php?f=2&t=2423
// Use VecStim defined in examples:
// /usr/local/nrn/share/nrn/examples/nrniv/netcon/vecevent.*
// select some spike times
objref vs, syntimes, aynrand, pc
aynrand = new Random()
pc = new ParallelContext()
aynrand.ACG(pc.time())
NUMSYNEVENTS = 1
syntimes = new Vector(NUMSYNEVENTS)
// set vector elements
proc set_times() { local i
for i = 2, numarg() {
$o1.x[i-2] = $i
}
}
set_times(syntimes, 10)
vs = new VecStim()
vs.play(syntimes)
// BUG: there was a Neuron bug here.
objref eventvec
/*
* normalEventTimes(num, mean, var) - Returns a vector of normally distributed events.
* Paramaters:
* num: number of events
* mean, var: normal distritbution parameters in ms.
*/
proc normalEventTimes() { local i
eventvec = new Vector($1)
aynrand.normal($2, $3)
eventvec.setrand(aynrand)
/*for (i=0; i < $1; i = i + 1) {
eventvec.x[i] = aynrand.repick()
print "event time = ", eventvec.x[i]
}*/
//return eventvec
}
iterator set_syn() { local i
for i = 1, numarg() {
access dendrite[$i]
syn = new ExpSyn(0.5)
syn.tau = 0.1 // tau
syn.e = 0 // reversal
vs = new VecStim()
normalEventTimes(3,10,1)
vs.play(eventvec)
//vs.play(syntimes)
ns = new NetCon(vs, syn)
ns.weight = 1
iterator_statement
}
}
/*
* synapses:
* top dend: 685, 524, 520, 626
* bot dend: 205, 357, 464, 588, 513, 48
*/
for set_syn(685, 205) print secname()
/* TODO:
X use SectionList instead of iterator
X better choose locations randomly? [for now assume these are mega-synapses]
- Take length of each segment into account while using random numbers?
*/
// choose 10 locations
/*dendrite[685] syn1 = new ExpSyn(0.5)
syn.tau = 0.1
syn.e = 0
nc = new NetStim(.5)
nc.interval = 1
nc.number = 3
nc.start = 1
nc.noise = 0
ns = new NetCon(nc, syn)
ns.weight = 1
*/