by ted » Fri Feb 20, 2009 7:34 pm
Now I see what's going on.
When artificial spiking cells were first added to NEURON, they were implemented as point processes, and like any other point process, they had to be attached to a "dummy" or "host" section (nseg = 1, no membrane properties other than cm). The Network Builder tools would automatically create this host section, and hoc code exported from the Netword Builder would include a statement that created the host section (notice the "create acell_home_" statement at the start of Listing 11.2 on page 325). That's how things worked when Chapter 11 was written.
However, since that time a new NMODL keyword for artificial spiking cells was added, called ARTIFICIAL_CELL. By definition, the state variables of an ARTIFICIAL_CELL are described by equations that have analytical solutions, so that, given their present values, their future trajectories are known. In other words, their activity can be calculated algebraically, without having to perform numerical integration. Also, an ARTIFICIAL_CELL does _not_ need to be attached to a host section.
So for at least a couple of years now, if you use the Network Builder to set up a net that involves nothing but ARTIFICIAL_CELLs, the Network Builder does not automatically create a host section, nor does it export a hoc file that contains a create statement.
"Fine. What's that got to do with local variable timestep integration?"
If you have a network model that consists entirely of artificial spiking cells, there are no differential equations that have to be integrated, so there is nothing to be gained by using the local variable timestep method. Remember that in NEURON each artificial spiking cell imposes a computational burden (its states are updated) only when it receives an event, so time steps as such are irrelevant to them.
In principle, I'd think that local variable timestep is relevant only for networks that involve two or more biophysical model cells. However, apparently it is possible to select lvardt even if there is only one biophysical model cell. And the reason that I could select it on Feb. 18 was that the code I was executing was old and contained a statement that created a host cell. When I used the code that you sent me, and when I started from scratch and followed the instructions that you were following, I couldn't select local variable time steps either.
So--not a bug, but yet one more thing to be revised for any future edition of The NEURON Book. Thanks for bringing this to my attention!