/*----------------------------------------------------------------------------
Simplified model of fast-spiking cortical neuron
================================================
Single-compartment model of "fast-spiking" cortical neurons,
which is the most commonly encountered electrophysiological type
of inhibitory (interneuron) cell in cortex. The model is based
on the presence of two voltage-dependent currents:
- INa, IK: action potentials
(no spike-frequency adaptation in this model)
Model described in:
Pospischil, M., Toledo-Rodriguez, M., Monier, C., Piwkowska, Z.,
Bal, T., Fregnac, Y., Markram, H. and Destexhe, A.
Minimal Hodgkin-Huxley type models for different classes of
cortical and thalamic neurons.
Biological Cybernetics 99: 427-441, 2008.
The model was taken from a thalamocortical model, described in:
Destexhe, A., Contreras, D. and Steriade, M.
Mechanisms underlying the synchronizing action of corticothalamic
feedback through inhibition of thalamic relay cells.
J. Neurophysiol. 79: 999-1016, 1998.
Alain Destexhe, CNRS, 2009
http://cns.iaf.cnrs-gif.fr
----------------------------------------------------------------------------*/
//----------------------------------------------------------------------------
// load and define general graphical procedures
//----------------------------------------------------------------------------
load_file("stdrun.hoc")
objectvar g[20] // max 20 graphs
ngraph = 0
proc addgraph() { local ii // define subroutine to add a new graph
// addgraph("variable", minvalue, maxvalue)
ngraph = ngraph+1
ii = ngraph-1
g[ii] = new Graph()
g[ii].size(tstart,tstop,$2,$3)
g[ii].xaxis()
g[ii].yaxis()
g[ii].addvar($s1,1,0)
g[ii].save_name("graphList[0].")
graphList[0].append(g[ii])
}
proc addtext() { local ii // define subroutine to add a text graph
// addtext("text")
ngraph = ngraph+1
ii = ngraph-1
g[ii] = new Graph()
g[ii].size(0,tstop,0,1)
g[ii].xaxis(3)
g[ii].yaxis(3)
g[ii].label(0.1,0.8,$s1)
g[ii].save_name("graphList[0].")
graphList[0].append(g[ii])
text_id = ii
}
proc addline() { // to add a comment to the text window
// addline("text")
g[text_id].label($s1)
}
nrnmainmenu() // create main menu
nrncontrolmenu() // crate control menu
//----------------------------------------------------------------------------
// transient time
//----------------------------------------------------------------------------
trans = 0000
print " "
print ">> Transient time of ",trans," ms"
print " "
//----------------------------------------------------------------------------
// create IN cells
//----------------------------------------------------------------------------
print " "
print "<<==================================>>"
print "<< CREATE CELLS >>"
print "<<==================================>>"
print " "
xopen("sIN_template") // read geometry file
ncells = 1 // nb of cells in each layer <<>>
objectvar IN[ncells]
for i=0,ncells-1 {
IN[i] = new sIN()
}
//----------------------------------------------------------------------------
// insert electrode in each IN cell
//----------------------------------------------------------------------------
if(ismenu==0) {
load_file("electrod.hoc") // electrode template
ismenu = 1
}
objectvar El[ncells] // create electrodes
CURR_AMP = 0.5
for i=0,ncells-1 { // insert one in each cell
IN[i].soma El[i] = new Electrode()
IN[i].soma El[i].stim.loc(0.5)
El[i].stim.del = 300
El[i].stim.dur = 400
El[i].stim.amp = CURR_AMP
}
electrodes_present=1
//----------------------------------------------------------------------------
// setup simulation parameters
//----------------------------------------------------------------------------
Dt = 0.1 // macroscopic time step <<>>
npoints = 10000
dt = 0.1 // must be submultiple of Dt
tstart = trans
tstop = trans + npoints * Dt
runStopAt = tstop
steps_per_ms = 5
celsius = 36
v_init = -70
//----------------------------------------------------------------------------
// add graphs
//----------------------------------------------------------------------------
strdef gtxt
if(batch == 0) {
for i=0,ncells-1 {
sprint(gtxt,"IN[%d].soma.v(0.5)",i)
addgraph(gtxt,-120,40)
}
}
//----------------------------------------------------------------------------
// add text
//----------------------------------------------------------------------------
access IN[0].soma
proc text() {
sprint(gtxt,"%d IN cells",ncells)
addtext(gtxt)
sprint(gtxt,"Passive: gleak=%g Eleak=%g",IN.soma.g_pas,IN.soma.e_pas)
addline(gtxt)
sprint(gtxt,"HH: gNa=%g, gK=%g, vtraub=%g",IN.soma.gnabar_hh2,\
IN.soma.gkbar_hh2,IN.soma.vtraub_hh2)
addline(gtxt)
}