This isn't an error message--it's just a reminder to execute setpointers() after any manipulation that might add new compartments that contain the xtra mechanism.Sami.B wrote:"After any change to cell geometry or nseg, be sure to invoke setpointers()"
Code: Select all
nrniv: dend not an array variable
in rigc.ses near line 64
dend[77] rvp_.begin(1)
and one of the changes did away with dend[77], causing this error message.we've made geometrical changes to the original cell.ses file that you've created.
How to fix this problem? First, make sure that you are using a revision control system (or at the very least are working with copies of the original files) so you can back out of any changes that break anything.
Next discover occurrences of dend[77] that are likely to cause problems--
grep dend *ses | grep 77
reveals the following:
rigc.ses:dend[77] rvp_.begin(1)
rigc.ses:dend[77] rvp_.begin(1)
rigc.ses:dend[77] rvp_.begin(1)
rigc.ses:dend[77] rvp_.begin(1)
rigxc.ses:dend[77] rvp_.begin(1)
Examine rigc.ses to find that two of these pertain to a graph that contains RangeVarPlots of v and v($1)+vext($1), and another two are from a graph that shows RangeVarPlots of vext and e_extracellular. You can eliminate these graphs by identifying the blocks of code that create each of them, and commenting them out. The block of code for the first graph is
Code: Select all
{
save_window_ = new Graph(0)
save_window_.size(-376.823,328.433,-80,40)
. . .
objectvar rvp_
rvp_ = new RangeVarPlot("v")
dend[77] rvp_.begin(1)
. . .
objectvar rvp_
rvp_ = new RangeVarPlot("v($1)+vext($1)")
dend[77] rvp_.begin(1)
. . .
save_window_.addobject(rvp_, 3, 7, 0.64984, 0.880831)
}
Code: Select all
/*
{
save_window_ = new Graph(0)
save_window_.size(-376.823,328.433,-80,40)
. . .
save_window_.addobject(rvp_, 3, 7, 0.64984, 0.880831)
}
*/
That leaves one last instance of dend[77], in rigxc.ses. Check out that file and note that it is merely the code that creates the graph that shows the RangeVarPlot of er_xtra. Do you even need to see that? If not, you could just comment out the
load_file("rigxc.ses")
statement in initxstim.hoc, and that will eliminate the last source of dend[77]-related error msgs.
You should now be able to run initxstim.hoc. If you miss the range variable plots of v, vext, etc., you can easily create new ones appropriate for your new model cell--see
How to plot a variable vs. distance
in the Forum's Hot tips area. Once you have what you like, use the Print & File Window Manager to save your new range variable plots to a new ses file and then add a load_file statement to initxstim.hoc (a good place for this would be right after the load_file("rigc.ses" line) so that NEURON will set them up the next time you run initxstim.hoc
It is only necessary to call setpointers() if you change cell geometry or nseg after the model specification code has been executed. load_file("cell.ses") makes NEURON read and execute the model specification code. Everything in initxstim.hoc after that statement is instrumentation or user interface code. Once the RunControl panel and the various graphs and other panels appear on the screen, the model specification code has already been executed.Our question is: where, when, and how many times
do we invoke setpointers() when using our modified cell.ses?