I also thought that y-z variation would not be important, but I got concerned after running a simple model. A 0.1x1.0 µm fold at one end of a substantially larger muscle cell. Inject 100 pA at extracellular end of fold. Voltage falls to resting V at the point where fold meets muscle - 1 µm away. So, entire V drop occurs over 1 µm. If the y width of the fold is 2 µm, I would guess that including this would make a difference. But, I am really new at using Neuron, so I might be goofing up something. Here is the session file that recreates my scenario.
Code: Select all
{load_file("nrngui.hoc")}
objectvar save_window_, rvp_
objectvar scene_vector_[7]
objectvar ocbox_, ocbox_list_, scene_, scene_list_
{ocbox_list_ = new List() scene_list_ = new List()}
{pwman_place(0,0,0)}
//Begin CellBuild[0]
{
load_file("celbild.hoc", "CellBuild")
}
{ocbox_ = new CellBuild(1)}
{object_push(ocbox_)}
{
version(5.7)
continuous = 1
}
{object_push(topol)}
{
first = 0
slist.remove_all()
sname = "fold"
objref tobj
}
{
tobj = new CellBuildSection("muscle",0, 0, tobj, 0) slist.append(tobj)
tobj.position(0,0,15,0) tobj.lx=7.45543 tobj.ly=-14.1869 tobj.i3d=0
tobj = new CellBuildSection("fold",0, 0, tobj, 0) slist.append(tobj)
tobj.parent=slist.object(0)
tobj.position(0,0,0,135) tobj.lx=-27.5527 tobj.ly=67.4987 tobj.i3d=0
all_init()
}
for i=0, slist.count-1 {slist.object(i).rdses()}
{object_pop()}
{
}
{object_push(subsets)}
{first = 0}
{ tobj = snlist.object(0)}
{consist()}
{object_pop()}
{
}
{object_push(geom)}
{
first = 0
tobj = new GeoSpec(7)
tobj.value = 0.1
bild.subsets.snlist.object(0).geo.append(tobj)
tobj = new GeoSpec(2)
tobj.value = 1000
bild.topol.slist.object(0).geo.append(tobj)
tobj = new GeoSpec(3)
tobj.value = 6
bild.topol.slist.object(0).geo.append(tobj)
tobj = new GeoSpec(2)
tobj.value = 1
bild.topol.slist.object(1).geo.append(tobj)
tobj = new GeoSpec(3)
tobj.value = 0.1
bild.topol.slist.object(1).geo.append(tobj)
set_default()
}
{object_pop()}
{
}
{object_push(memb)}
{first=0}
{
tobj = new FakeMechStan(0)
tobj.value = 125
tobj.set_default()
tobj = new MStanWrap(tobj, 0)
bild.subsets.snlist.object(0).ml.append(tobj)
}
{
tobj = new FakeMechStan(1)
tobj.value = 1
tobj.set_default()
tobj = new MStanWrap(tobj, 0)
bild.subsets.snlist.object(0).ml.append(tobj)
}
{
tobj = new MechanismStandard("pas")
tobj.set("g_pas", 0.00133333, 0)
tobj.set("e_pas", -80, 0)
tobj = new MStanWrap(tobj, 1)
bild.subsets.snlist.object(0).ml.append(tobj)
}
{object_pop()}
{
}
{object_push(manage)}
{
first = 0
classname = "Cell"
etop=1 esub=1 egeom=1 emem=1
itop=1 isub=0 igeom=0 imem=0
bild.topol.names_off = 0
bild.topol.circles_off = 0
output_index = 0 output_x = 1
thresh = 10
}
{object_pop()}
{
cexport()
}
{object_pop()}
{
save_window_=ocbox_.gtopol
save_window_.size(-200,200,-150,150)
scene_vector_[2] = save_window_
ocbox_.gtopol = save_window_
save_window_.save_name("ocbox_.gtopol")
}
{
ocbox_.map("CellBuild[0]", 521, 2, 766.08, 374.4)
}
objref ocbox_
//End CellBuild[0]
//Begin PointProcessManager
{
load_file("pointman.hoc")
}
{
fold ocbox_ = new PointProcessManager(0)
}
{object_push(ocbox_)}
{
mt.select("IClamp") i = mt.selected()
ms[i] = new MechanismStandard("IClamp")
ms[i].set("del", 1, 0)
ms[i].set("dur", 1.2, 0)
ms[i].set("amp", 0.1, 0)
mt.select("AlphaSynapse") i = mt.selected()
ms[i] = new MechanismStandard("AlphaSynapse")
ms[i].set("onset", 0.5, 0)
ms[i].set("tau", 1, 0)
ms[i].set("gmax", 0.05, 0)
ms[i].set("e", 0, 0)
mt.select("IClamp") i = mt.selected() maction(i)
hoc_ac_ = 1
sec.sec move() d1.flip_to(0)
}
{object_pop() doNotify()}
{
ocbox_ = ocbox_.v1
ocbox_.map("PointProcessManager", 1284, 0, 365.76, 509.76)
}
objref ocbox_
//End PointProcessManager
{
xpanel("RunControl", 0)
v_init = -80
xvalue("Init","v_init", 1,"stdinit()", 1, 1 )
xbutton("Init & Run","run()")
xbutton("Stop","stoprun=1")
runStopAt = 10
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 = 2
xvalue("t","t", 2 )
tstop = 4
xvalue("Tstop","tstop", 1,"tstop_changed()", 0, 1 )
dt = 0.015625
xvalue("dt","dt", 1,"setdt()", 0, 1 )
steps_per_ms = 32
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(805,589)
}
{
save_window_ = new Graph(0)
save_window_.size(0,4,-80,40)
scene_vector_[4] = save_window_
{save_window_.view(0, -80, 4, 120, 1314, 557, 300.48, 200.32)}
graphList[0].append(save_window_)
save_window_.save_name("graphList[0].")
save_window_.addexpr("fold.v( 1 )", 2, 1, 0.346326, 0.976676, 2)
save_window_.addvar("fold.v( 0.5 )", 1, 1, 0.333547, 0.9623, 2)
save_window_.addexpr("fold.v( 0 )", 4, 1, 0.355911, 0.928758, 2)
}
{
save_window_ = new PlotShape(0)
save_window_.size(-2.60217,2.22617,-1.54092,3.27992)
save_window_.variable("v")
scene_vector_[5] = save_window_
{save_window_.view(-2.60217, -1.54092, 4.82833, 4.82083, 101, 167, 200.64, 200.32)}
fast_flush_list.append(save_window_)
save_window_.save_name("fast_flush_list.")
}
{
save_window_ = new Graph(0)
save_window_.size(-1,2.23517e-08,-80,40)
scene_vector_[6] = save_window_
{save_window_.view(-1, -80, 1, 120, 57, 435, 300.48, 200.32)}
flush_list.append(save_window_)
save_window_.save_name("flush_list.")
objectvar rvp_
rvp_ = new RangeVarPlot("v")
fold rvp_.begin(1)
muscle rvp_.end(0)
rvp_.origin(0)
save_window_.addobject(rvp_, 2, 1, 0.8, 0.9)
}
objectvar scene_vector_[1]
{doNotify()}