Could you please post some example code in which events from a source cell's compartment with an arbitrary threshold for the membrane potential are sent to some target cell's synapse?
The following articles are authoritative and most illustrative of good programming practice. The first is the most "tutorial" in nature. The code for the second paper shows a very nice factorization of a network implementation into two kinds of components: those that are specific to the particular details of the model cells that are used, and those that pertain entirely to network architecture--so that it is possible to "plug" in different kinds of model cells into a given network architecture, and see how this affects network performance. All three papers are available from
http://www.neuron.yale.edu/neuron/nrnpubs, and their source code is available from ModelDB.
Hines, M.L. and Carnevale, N.T. Translating network models to parallel hardware in NEURON. J. Neurosci. Methods 169:425-455, 2008.
Brette, R., Rudolph, M., Carnevale, T., Hines, M., Beeman, D., Bower, J.M., Diesmann, M., Goodman, P.H., Harris, F.C.J., Zirpe, M., Natschläger, T., Pecevski, D., Ermentrout, B., Djurfeldt, M., Lansner, A., Rochel, O., Vieville, T., Muller, E., Davison, A., El Boustani, S., and Destexhe, A. Simulation of networks of spiking neurons: a review of tools and strategies. J. Comput. Neurosci. 23:349-398, 2007.
Migliore, M, Cannia, C., Lytton, W.W., Markram, H. and Hines, M.L. Parallel network simulations with NEURON. Journal of Computational Neuroscience 21:119-129, 2006.
When this code runs with the -mpi flag, i.e. cells are on different machines, there is no signal transmitted from source to target cell.
Is it because target of the NetCon object stored in the source cell has a NULLobject as target which makes this NetCon inactive
I can see how the NetCon class documentation might lead to such an inference. The NetCon with NULLobject target is merely being used as a "spike detector." The "active" vs. "inactive" distinction applies only to whether a NetCon does or doesn't deliver spikes to a target; spike detection always works.
By the way, a program that has been parallelized correctly will produce the same result regardless of:
--whether it is executed on serial or parallel hardware
--whether it is executed with or without mpi
--the number of processors that are used or how the cells are distributed over the processors
--how many times it has been run
Code: Select all
// from mitral.tem see modeldb Davison 2003
. . .
src_netcons_glom.append(new NetCon
It is not necessary or always desirable to include NetCons into a cell class definition. I can see why it was done in this particular model, which involves dendrodendritic synapses, but an alternative implementation is possible in which no cell class has a built-in NetCon, and all synaptic connections (including dendrodendritic) are set up separately, i.e. a model setup strategy that preserves separation of
define cell classes
create all cell instances
connect cell instances
I think it is important to note that the threshold for event detection must be set in the NetCon object owned by the source cell . . .
The NetCon that does the spike detection is the one that is attached to the presynaptic neuron. The threshold parameter that matters is the one that belongs to this NetCon. The threshold parameters of the NetCons that deliver events to targets are irrelevant, because those NetCons can't discover the values of range variables in the presynaptic cell--they might not even be on the same processor as the presynaptic cell.
On the other hand, as you note, the weight parameters that matter are those that belong to the NetCons that are attached to targets. The NetCon attached to the presynaptic cell has no way to know whether the threshold crossings it detects are ever communicated to anything. And even if it did, it would make no sense for it to manage the synaptic weights because that would require mpi to communicate a lot more data (not just the time of the presynaptic threshold crossing, but also the weight(s)).
Delays of both NetCons will be summed to a total delay.
Does that work? It should be guaranteed not to work, that is, the total latency between the presynaptic threshold crossing and event delivery should be controlled entirely by the NetCons that handle event delivery, i.e. those that deliver events to "real" targets such as synaptic mechanisms or artificial spiking cells. The spike detecting NetCon's delay parameter should have no effect at all.
Finally, you'll probably notice that the first two papers cited above don't use the ParallelNetManager. The software patterns that they demonstrate seem easier to deal with.