include(MODULE_FOLDER_PATH."side_release_list_for_entry.php") ?>
日本生理学会実習書に記載したNEURONシミュレーターを利用したシミュレーション実習用のmodelcell.hocです(小泉周 2011)。
以下の部分を新規のテキストファイルに、cut and pasteし、modelcell.hocという名前で保存してください。
-------------------------------ここから下の全て-------------------------------------------
/*生理学実習書用 modelcell.hoc generated by Amane Koizumi, 2011*/
load_file("nrngui.hoc")
nnode = 20
ndend = 3
axonlength = 500
nodelength = 10
dendlength = 200
hillocklength = 25
diamaxon = 5
v_init = -65 // mV
//////////////////////////////////////////////////
/* ************ CELL STRUCTURE   ************** */
//////////////////////////////////////////////////
// CELL TOPOLOGY
create soma, hillock, axon[nnode], node[nnode], dend[ndend]
access soma
connect hillock(0), soma(1)
connect axon[0](0), hillock(1)
connect node[0](0), axon[0](1)
for i=1, nnode-1 {
    connect axon[i](0), node[i-1](1)
    connect node[i](0), axon[i](1)
}
for i=0, ndend-1 {
    connect dend[i](0), soma(0)
}
// GEOMETRY
soma {
    L = 100 // um
    diam = 100
    nseg = 10
}
hillock {
    L= hillocklength
    diam = diamaxon
    nseg = 10
}
axon[0] {
    L= 100
    diam = diamaxon
    nseg = 10
}
for i=1, nnode-1 {
    axon[i] {
        L= axonlength
        diam = diamaxon
        nseg = 10
    }
}
for i=0, nnode-1 {
    node[i] {
        L= nodelength
        diam = diamaxon
        nseg = 4
    }
}
for i=0, ndend-1 {
    dend[i] {
        L= dendlength
        diam = 5
        nseg = 20
    }
}
// BIOPHYSICS
forall {
    Ra = 100
    cm = 1
}
/* Hodgkin-Huxley settings */ 
gnabar_init = 0.12
gkbar_init = 0.036
gl_init = 0.0003 
el_init = -54.3
soma {
    insert hh
    gnabar_hh= gnabar_init 
    gkbar_hh= gkbar_init  
    gl_hh= gl_init
    el_hh= el_init
}
hillock {
    insert hh
    gnabar_hh=gnabar_init 
    gkbar_hh=gkbar_init  
    gl_hh=gl_init
    el_hh=el_init
}
for i=0, nnode-1 {
    node[i] {
        insert hh
        gnabar_hh=gnabar_init 
        gkbar_hh=gkbar_init  
        gl_hh=gl_init
        el_hh=el_init
    }
}
for i=0, ndend-1 {
    dend[i] {
        insert pas
        g_pas = 0.0002
        e_pas = v_init
    }
}
for i=0, nnode-1 {
    axon[i] {
        insert hh
        gnabar_hh=gnabar_init 
        gkbar_hh=gkbar_init  
        gl_hh=gl_init
        el_hh=el_init
        insert pas
        g_pas = 0.0002 // default
        e_pas = v_init
    }
}
//////////////////////////////////////////////////
/* ************ AXON myelination ************** */
//////////////////////////////////////////////////
myelination_flag = 1 // 0 non-myelinated, 1  myelinated
proc myelination_axon() {local i
    for i=0, nnode-1 {
        axon[i] {
            gnabar_hh=0
            gkbar_hh=0
            gl_hh=0
            g_pas = 0
            cm = 1
            if (myelination_flag == 0) { // myelinated
                gnabar_hh=gnabar_init 
                gkbar_hh=gkbar_init  
                gl_hh=gl_init
            } else {                     // non-myelinated
                g_pas = 0.0002 / 10
                cm = 1 / 200
            }
        }
    }
}
myelination_axon()
{
xpanel("MyelinationControl", 0)
xcheckbox("Myelinated",&myelination_flag,"myelination_axon()")
xpanel(250,250)
}
//////////////////////////////////////////////////
/* ************ Synapse settings ************** */
//////////////////////////////////////////////////
/* Alpha Synapses on dendrites */
nsyn = ndend
objectvar syn[nsyn] // 3 synapses
double locsyn[3]
{
    locsyn[0] = 0.5
    locsyn[1] = 0.5
    locsyn[2] = 0.5
}
// synapse parameters
dend[0] syn[0] = new AlphaSynapse(locsyn[0])
syn[0].onset = 1
syn[0].tau = 0.1
dend[1] syn[1] = new AlphaSynapse(locsyn[1])
syn[1].onset = 1
syn[1].tau = 0.1
dend[2] syn[2] = new AlphaSynapse(locsyn[2])
syn[2].onset = 1
syn[2].tau = 0.1
synamp=0.12
e_syn0 = 0
e_syn1 = 0
e_syn2 = 0
proc synset() {
    syn[0].gmax = synamp
    syn[1].gmax = synamp
    syn[2].gmax = synamp
    syn[0].e = e_syn0
    syn[1].e = e_syn1
    syn[2].e = e_syn2
}
synset()
{
xpanel("SynapseControl", 0)
xvalue("Synapse G max","synamp", 0.12, "synset()", 0, 1)
xvalue("Synapse #1 Esyn (mV)","e_syn0", 0, "synset()")
xvalue("Synapse #2 Esyn (mV)","e_syn1", 0, "synset()")
xvalue("Synapse #3 Esyn (mV)","e_syn2", 0, "synset()")
xpanel(400,250)
}
////////////////////////////////////////////////////
/* ************ Procedure settings ************** */
////////////////////////////////////////////////////
run_time = 20
/* Run Control */
proc run_control() {
xpanel("RunControl", 0)
xvalue("Init","v_init", 1,"stdinit()", 1, 1 )
xbutton("Init & Run","run()")
xbutton("Stop","stoprun=1")
runStopAt = run_time
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 = 0
xvalue("t","t", 2 )
tstop = run_time
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.05
xvalue("Scrn update invl","screen_update_invl", 1,"", 0, 1 )
realtime = 0
xvalue("Real Time","realtime", 0,"", 0, 1 )
xpanel(377,289)
}
run_control()
/* Graph */
objref g1, g2, g3
g1 = new Graph ()
addplot(g1, 0)
g1.size(0, run_time, -80, 40)
g1.addvar("hillock.v(0.5)", 1, 1, 0.6, 0.9, 2)
g1.addvar("node[19].v(0.5)", 2, 1, 0.6, 0.9, 2)
g2 = new Graph ()
addplot(g2, 0)
g2.size(0, run_time/2, -80, 40)
g2.addvar("dend[0].v(locsyn[0])", 1, 1, 0.6, 0.9, 2)
g2.addvar("dend[1].v(locsyn[1])", 2, 1, 0.6, 0.9, 2)
g2.addvar("dend[2].v(locsyn[2])", 3, 1, 0.6, 0.9, 2)
g3 = new Graph ()
addplot(g3, 0)
g3.size(0, run_time/2, -80, 40)
g3.addvar("soma.v(0.5)", 1, 1, 0.6, 0.9, 2)