Conflict Between SubsetDomainIterator and NetWork Builder

Moderator: wwlytton

Post Reply
gw240
Posts: 2
Joined: Wed Feb 26, 2020 10:32 am

Conflict Between SubsetDomainIterator and NetWork Builder

Post by gw240 »

Hello,

I am having a few problems with SubsetDomainIterator when implementing it into cells that I use for a network build, I would appreciate if anyone could give me some pointers on what might be going wrong.

I have implemented a SubsetDomain iterator to change g_pas as a function of path length from the root (the soma), this seems to work fine, the model initializes correctly to the top level with continuous create with no errors, and when checking values of individual segments g_pas appears to change as expected. However, when I use this CellBuilder model to create a network with one artificial cell sending presynaptic events to it and tick create I get the following error:

Code: Select all

oc>/Applications/NEURON-7.7/nrn/x86_64/bin/nrniv: SubsetDomainIterator is not a template
 in /tmp/nrnLyc69M near line 12111
   primary_apical_list_x = new SubsetDomainIterator(primary_apical_list, 0, 0, 0)
                                                                                ^
        xopen("/tmp/nrnLyc69M")
      NetGUI[0].execute("xopen("/tm...")
    NetGUI[0].create1()
I can recreate this error with a simple ball and stick model by following the same steps as above. I am running NEURON on Mac OS and have yet to have a chance to test this on any other operating system to test if this is a problem with the NEURON install/Mac.

I appreciate any guidance anyone can give on this matter
ted
Site Admin
Posts: 6286
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Conflict Between SubsetDomainIterator and NetWork Builder

Post by ted »

Zip up the files needed to reproduce the error and email them to
ted dot carnevale at yale dot edu
and I'll let you know what I find out.

What version of NEURON are you running (what is the first line that the interpreter prints out when NEURON starts), and what version of Mac OS (or whatever the company currently known as Apple is calling its OS these days)?
gw240
Posts: 2
Joined: Wed Feb 26, 2020 10:32 am

Re: Conflict Between SubsetDomainIterator and NetWork Builder

Post by gw240 »

Thanks Ted, I've sent you an email with the zipped up files

I'm running NEURON 7.7.2 I believe, this is the first line of the interpreter:

Code: Select all

NEURON -- VERSION 7.7.2 7.7 (2b7985ba) 2019-06-20
I'm running Mac OS version 10.11.6 (El Capitan, don't get me started on their interesting naming scheme)
ted
Site Admin
Posts: 6286
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Conflict Between SubsetDomainIterator and NetWork Builder

Post by ted »

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.
Post Reply