The error message
Code: Select all
SubsetDomainIterator is not a template
in /tmp/nrnLyc69M near line 12111
primary_apical_list_x = new SubsetDomainIterator(primary_apical_list, 0, 0, 0)
suggested that the code that defines the SubsetDomainIterator class was not being executed. The SubsetDomainIterator class is a helper class for the CellBuilder class, and it comes into play during setup of a model cell that has one or more parameters whose values are governed by subset domain iteration.
To determine whether the problem was related to your particular model cell, or whether it was intrinsic to NEURON, I used a CellBuilder to specify a ball and stick model cell in which g_pas in the dendrite ("stick") was governed by subset domain iteration, toggled the CellBuilder's Continuous create button ON (so a top level model cell existed), and attached an ExpSyn to it that was driven by events from a NetStim. No error messages were generated, and simulations ran without problems.
But when I used that CellBuilder (with Continuous Create OFF) as the basis for a model cell contained in an instance of the NetReadyCellGUI class (with an ExpSyn attached to it), then used a NetGUI to set up a toy network in which a presynaptic NetStim drove the ExpSyn, clicking on the NetGUI's Create button produced essentially the same error message that you reported.
So the SubsetDomainIterator class is not being defined when a network specification wrapped in a NetGUI is executed. That's a bug in NEURON that needs to be fixed.
Meanwhile, here's a simple workaround: just execute
load_file("subiter.hoc")
before you click on the NetGUI's Create button. This makes NEURON load the file that defines the SubsetDomainIterator class. You can do that by executing a hoc file that contains these statements
Code: Select all
load_file("nrngui.hoc") // always a good idea
load_file("subiter.hoc")
before you start using the NetGUI tools to set up a network.
You might want to create a short file called initpyr.hoc that contains the statements
Code: Select all
load_file("nrngui.hoc") // always a good idea
load_file("subiter.hoc")
load_file("pyr.ses")
(I'm presuming that the file that contains the ses files for the NetGUI and GUI-defined "network ready cells" is called pyr.ses). Then you can just
nrngui initpyr.hoc
and you're off to the races.