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)