Object Type: synchan Description: Synaptically activated channel. Author: Mike Vanier 11/94 ----------------------------------------------------------------------------ELEMENT PARAMETERS DataStructure: Synchan_type Size: 200 bytes Fields: channel activation [in src/newconn/newconn_struct.h] driving force (transmitter) for conductance channel current time varying channel conductance reversal potential of channel first time constant of channel activation second time constant of channel Ik Gk Ek tau1 tau2 activation gmax frequency peak channel conductance random activation frequency (default = nsynapses number of incoming spike messages 0) (readonly) event_buffer_size size of event buffer (readonly) pending_events number of pending spike events in event buffer (readonly) nodes_per_synapse number of event nodes to allocate per synapse (default 1) synapse synapse buffer ----------------------------------------------------------------------------SIMULATION PARAMETERS Function: Synchan Classes: segment channel synchannel Actions: CREATE INIT PROCESS RESET RECALC [in src/newconn/synchan.c] set synapse_size hidden field assign activation = 0 update Gk, calculate Ik assign activation = 0, Gk = 0; calculate time-step-dependent coefficients recalculate time-step-dependent coefficients CHECK VOLTAGE make sure tau1>0, tau2>0; make sure a message is present (in order to calculate Ik) SAVE2 called by the save command RESTORE2 called by the restore command EVENT put a spike event into the event buffer ADDMSGIN DELETEMSGIN MSGINDELETED RESETBUFFER reset size of event buffer to (nodes_per_synapse * nsynapses) nodes DELETE delete the element COPY copies the element Messages: VOLTAGE Vm ACTIVATION activation RAND_ACTIVATION probability amplitude MOD modulation SPIKE ----------------------------------------------------------------------------Notes: Simulates a time dependent synaptically activated ionic channel. A variable channel conductance Gk is activated by the application of transmitter. This conductance then changes with damped second-order characteristics with a time course given by two time constants tau1 and tau2. This gives rise to an alpha function/dual exponential conductance waveform for an impulse spike input. The channel also calculates channel current Ik and therefore needs the membrane state (Vm). Each SPIKE message to a synchan establishes a synaptic connection and increments nsynapses. The synapses are numbered starting with 0, and each contains a field for a synaptic weight and a propagation delay. For example, the weight of the first synaptic connection is held in the field "synapse[0].weight" while the delay is "synapse[0].delay". Gk reaches a value gmax*weight for a single event delivered with a SPIKE message. Note that even though synapses are not elements, they do have fields that can be accessed individually. They can be thought of as "sub-elements" or substructures of the element. Any number of spike events can be pending per synapse. synchan stores all spike events in a buffer until they are scheduled to occur. If enough events come in to overload the buffer, the buffer will dynamically expand to enable storage of all events. The size of the buffer in events is stored in the "event_buffer_size" field which is readonly. The number of actual spikes in the buffer which have not yet hit the channel are stored in the "pending_events" field (also readonly). The "nodes_per_synapse" field controls how many large the event buffer is initially. The default is to have one node per synapse, but if you expect a lot of events or very few events you can change this number to be greater or less than the default (1), respectively. This will speed up the simulation slightly in the first case and save memory in the second. If you leave this field alone the object will still work fine. The "resetsynchanbuffers" command will cause all the buffers in all synchan and derived objects to be reset to a size of nodes_per_synapse*nsynapses (which will also cause all pending events to be flushed). The "copy" command will fail for any synchan or hebbsynchan which is receiving SPIKE messages. The correct way to set up simulations is to set up prototype cells which do not receive any SPIKE messages on their synchans, copy these cells, and then add the appropriate SPIKE messages (by hand or by using planarconnect or volumeconnect). We are working on a more "intelligent" copy command which will permit copying of synchans with SPIKE messages, but for now, don't do it. This object used to be called synchan2 in genesis 2.0.1. Since it does everything that the old synchan does without the limitations of that object we have retired the old synchan and renamed synchan2 to be synchan. "synchan2" is now just an alias for synchan -- they are identical. Example: Scripts/tutorials/tutorial4.g See also: resetsynchanbuffers, Connections, NewSynapticObjects