classes active postloc preloc valid delay pre record wcnt event precell syn weight postcell precelllist synlist x postcelllist prelist threshold
section netcon = new NetCon(&v(x), target, threshold, delay, weight)
netcon = new NetCon(source, target, threshold, delay, weight)
section netcon = new NetCon(&v(x), target)
netcon = new NetCon(source, target)
If the optional threshold, delay, and weight arguments are not specified, their default values are 10, 1, and 0 respectively. In any case, their values can be specified after the netcon has been constucted, see threshold weight and delay .
The target must be a PointProcess that defines a NET_RECEIVE procedure. The number of NET_RECEIVE procedure arguments define a weight vector whose elements can be accessed with through the NetCon.weight ( weight )variable but the weight argument in the above constructors specify the value of the first argument, with the normal interpretation of weight or maximum conductance. On initialization, all weight elements with index > 0 are set to 0 unless the NET_RECEIVE block contains an INITIAL block. In the latter case, that block is executed on a call to finitialize and allows non-zero initialization of netcon "states" --- args not initialized in the INITIAL block would be analogous to a Parameter except that it can have a different value for different NetCon instances and can be set to a desired value with weight .
The target is allowed to be nil (NULLObject) in which case the NetCon is always inactive. However this can be useful for recording (see record ) the spike train from an output cell.
The source is normally a reference to a membrane potential which is watched during simulation for passage past threshold. The currently accessed section is required by the local variable time step method in order to determine the source "cell". Any range variable may be a source variable but I suspect that membrane potential is the only practical one.
The source may also be a PointProcess with a NET_RECEIVE block which contains a call to net_event. PointProcesses like this serve as entire artificial cells.
The source may also be a PointProcess which contains a "x" variable which is watched for threshold crossing, but this is obsolete since NET_RECEIVE blocks which explicitly call net_event are much more efficient since they avoid the overhead of threshold detection at every time step.
The source may be a NULLObject. In this case events can only occur by calling event from hoc. (It is also used by NEOSIM to implement its own delivery system.)
A source used by multiple NetCon instances is shared by those instances to allow faster threshold detection (ie on a per source basis instead of a per NetCon basis) Therefore, there is really only one threshold for all NetCon objects that share a source. However, delay and weight are distinct for each NetCon object.
From a NetCon instance, various lists of NetCon's can be created with the same target, precell, or postcell. See netconlist for creation of NetCon lists from a target, precell, or postcell pattern or object.
NetCon
boolean = netcon.valid()
NetCon
boolean = netcon.active(boolean)
boolean = netcon.active()
NetCon
netcon.event(tdeliver)
NetCon
target_object = netcon.syn()
NetCon
source_object = netcon.pre()
NetCon
{x = netcon.preloc() ... pop_section()}
NetCon
{x = netcon.postloc() ... pop_section()}
NetCon
cellobj = netcon.precell()
NetCon
cellobj = netcon.postcell()
NetCon
List = netcon.prelist()
List = netcon.prelist(List)
NetCon
List = netcon.synlist()
List = netcon.synlist(List)
NetCon
List = netcon.postcelllist()
List = netcon.postcelllist(List)
NetCon
List = netcon.precelllist()
List = netcon.precelllist(List)
NetCon
del = netcon.delay
netcon.delay = del
NetCon
n = netcon.wcnt()
NetCon
w = netcon.weight
netcon.weight = w
x = netcon.weight[i]
netcon.weight[i] = x
NetCon
th = netcon.threshold
netcon.threshold = th
NetCon
x = netcon.x
netcon.x = x
NetCon
netcon.record(Vector)
netcon.record()
With no argument, no recording at the source takes place.
The vector is resized to 0 when finitialize is called.
NB: Recording takes place on a per source, not a per netcon basis, and the source only records into one vector at a time.
If a source is recording a vector, that source is not destroyed when the last netcon connecting to it is destroyed and it continues to record. The source is notified when the vector it is recording ceases to exist---at that time it will be destroyed if no netcons currently connect to it. To do a recording of a source, the following idiom works:
The source will continue to record events until record is called with another netcon connecting to the source or until the vec is destroyed. Notice that this idiom allows recording from output cells (which normally have no connecting netcons) as well as simplifying the management of recording from cells.objref vec, netcon, nil vec = new Vector() netcon = new NetCon(source, nil) netcon.record(vec) objref netcon
Note that NetCon.event(t) events are NOT recorded.