// genesis // $Id: newconn.g,v 1.14 1997/08/08 23:42:23 dhb Exp $ // Version EDS21b 96/08/02 // // RCS Log messages at end of file newclass synchannel newclass spiking addaction RESETBUFFER 1001 object synchan Synchan_type Synchan segment channel synchannel \ -author "Mike Vanier 11/94" \ -actions CREATE INIT PROCESS HPROCESS RESET CHECK RECALC SAVE2 RESTORE2 EVENT \ ADDMSGIN DELETEMSGIN MSGINDELETED RESETBUFFER DELETE COPY \ -messages VOLTAGE 0 1 Vm \ ACTIVATION 1 1 activation \ RAND_ACTIVATION 2 2 probability amplitude \ MOD 3 1 modulation \ SPIKE -1 0 \ -readonly activation "driving force for channel conductance" \ -readwrite Ik "channel current" \ -readwrite Gk "conductance of channel" \ -readwrite Ek "reversal potential of channel" \ -readwrite X "internal variable for implementing synaptic conductance" \ -readwrite Y "internal variable for implementing synaptic conductance" \ -hidden xconst1 "internal variable for synaptic conductances" \ -hidden yconst1 "internal variable for synaptic conductances" \ -hidden xconst2 "internal variable for synaptic conductances" \ -hidden yconst2 "internal variable for synaptic conductances" \ -hidden norm "normalization factor for psp amplitude" \ -readwrite tau1 "first time constant of channel activation" \ -readwrite tau2 "second time constant of channel activation" \ -readwrite gmax "peak conductance" \ -readwrite frequency "random activation frequency" 0.0 \ -readonly nsynapses "Number of incoming spike messages" \ -hidden synapse_size "size of synapse in bytes" \ -readonly event_buffer_size "size of event buffer" 0 \ -readonly pending_events "number of pending spike events in buffer" 0 \ -hidden FreeSynapticEvents "free list of synaptic event nodes" \ -hidden PendingSynapticEvents "list of pending synaptic events" \ -readwrite nodes_per_synapse "number of event nodes to allocate per synapse" 1.0 \ -hidden list_alloced "flag for whether the freelist has been allocated" 0 \ -hidden allocednodes "number of nodes that are the head of a malloced block" 0 \ -readwrite synapse "synapse buffer" \ -description "Synaptically activated channel." // This is a duplicate of synchan, for backwards-compatibility: object synchan2 Synchan_type Synchan segment channel synchannel \ -author "Mike Vanier 11/94" \ -actions CREATE INIT PROCESS HPROCESS RESET CHECK RECALC SAVE2 RESTORE2 EVENT \ ADDMSGIN DELETEMSGIN MSGINDELETED RESETBUFFER DELETE COPY \ -messages VOLTAGE 0 1 Vm \ ACTIVATION 1 1 activation \ RAND_ACTIVATION 2 2 probability amplitude \ MOD 3 1 modulation \ SPIKE -1 0 \ -readonly activation "driving force for channel conductance" \ -readonly Ik "channel current" \ -readonly Gk "conductance of channel" \ -readwrite Ek "reversal potential of channel" \ -hidden X "internal variable for implementing synaptic conductance" \ -hidden Y "internal variable for implementing synaptic conductance" \ -hidden xconst1 "internal variable for synaptic conductances" \ -hidden yconst1 "internal variable for synaptic conductances" \ -hidden xconst2 "internal variable for synaptic conductances" \ -hidden yconst2 "internal variable for synaptic conductances" \ -hidden norm "normalization factor for psp amplitude" \ -readwrite tau1 "first time constant of channel activation" \ -readwrite tau2 "second time constant of channel activation" \ -readwrite gmax "peak conductance" \ -readwrite frequency "random activation frequency" 0.0 \ -readonly nsynapses "Number of incoming spike messages" \ -hidden synapse_size "size of synapse in bytes" \ -readonly event_buffer_size "size of event buffer" 0 \ -readonly pending_events "number of pending spike events in buffer" 0 \ -hidden FreeSynapticEvents "free list of synaptic event nodes" \ -hidden PendingSynapticEvents "list of pending synaptic events" \ -readwrite nodes_per_synapse "number of event nodes to allocate per synapse" 1.0 \ -hidden list_alloced "flag for whether the freelist has been allocated" 0 \ -hidden allocednodes "number of nodes that are the head of a malloced block" 0 \ -readwrite synapse "synapse buffer" \ -description "Synaptically activated channel." object hebbsynchan HebbSynchan_type HebbSynchan segment channel synchannel \ -author "Mike Vanier 4/96 Caltech" \ -actions CREATE INIT PROCESS RESET RECALC CHECK SAVE2 RESTORE2 EVENT \ ADDMSGIN DELETEMSGIN MSGINDELETED RESETBUFFER DELETE COPY \ -messages VOLTAGE 0 1 Vm \ ACTIVATION 1 1 activation \ RAND_ACTIVATION 2 2 probability amplitude \ MOD 3 1 modulation \ WEIGHT_CHANGE_MOD 4 1 modulation \ SPIKE -1 0 \ -readonly activation "driving force for channel conductance" \ -readonly Ik "channel current" \ -readonly Gk "conductance of channel" \ -readwrite Ek "reversal potential of channel" \ -hidden X "internal variable for synaptic conductances" \ -hidden Y "internal variable for synaptic conductances" \ -hidden xconst1 "internal constant for synaptic conductances" \ -hidden xconst2 "internal constant for synaptic conductances" \ -hidden yconst1 "internal constant for synaptic conductances" \ -hidden yconst2 "internal constant for synaptic conductances" \ -hidden norm "normalization factor for psp amplitude" \ -readwrite tau1 "first time constant of channel activation" \ -readwrite tau2 "second time constant of channel activation" \ -readwrite gmax "peak conductance" \ -readwrite frequency "random activation frequency" 0.0 \ -readonly nsynapses "Number of incoming spike messages" \ -hidden synapse_size "size of synapse in bytes" \ -readonly event_buffer_size "size of event buffer" 0 \ -readonly pending_events "number of pending spike events in event buffer" 0 \ -hidden FreeSynapticEvents "free list of synaptic event nodes" \ -hidden PendingSynapticEvents "list of pending synaptic events" \ -readwrite nodes_per_synapse "number of event nodes to allocate per synapse" 1.0 \ -hidden list_alloced "flag for whether the freelist has been allocated" 0 \ -hidden allocednodes "number of nodes that are the head of a malloced block" 0 \ -readwrite synapse "synapse buffer" \ -readwrite pre_tau1 "first time constant for presynaptic averaging" 0.010 \ -readwrite pre_tau2 "second time constant for presynaptic averaging" 0.100 \ -readwrite pre_thresh_lo "lower presynaptic threshold" 3.0 \ -readwrite pre_thresh_hi "upper presynaptic threshold" 3.0 \ -hidden pre_xconst "internal constant for presynaptic averaging" \ -hidden pre_yconst1 "internal constant for presynaptic averaging" \ -hidden pre_yconst2 "internal constant for presynaptic averaging" \ -hidden pre_norm "normalization factor for presynaptic averaging" \ -readonly avg_Vm "averaged membrane potential" \ -readwrite post_tau "time constant of postsynaptic averaging" \ -hidden post_const "internal constant for postsynaptic averaging" \ -readwrite post_thresh_lo "lower postsynaptic threshold" -0.065 \ -readwrite post_thresh_hi "upper postsynaptic threshold" -0.065 \ -readwrite post_scale "scaling factor for postsynaptic activities" 0.002 \ -readwrite weight_change_rate "rate of weight change" 1.0 \ -readwrite min_weight "minimum weight" 0.0 \ -readwrite max_weight "maximum weight" 100.0 \ -readwrite change_weights "flag: nonzero means weights can be changed" 1 \ -description "Like synchan, but weights are dynamically modified" \ "according to a function of the pre- and postsynaptic" \ "activations." object spikegen Spikegen_type Spikegen spiking \ -author "M.Wilson Caltech 6/88, Dave Bilitch 1/94" \ -actions PROCESS RESET CHECK \ -readonly state "current state of object" \ -readwrite thresh "threshold for spike generation" \ -readwrite output_amp "amplitude of spike event" 1.0 \ -readwrite abs_refract "absolute refractory period" \ -hidden lastevent "time of last spike" \ -messages INPUT 0 1 input \ THRESH 1 1 threshold \ -description "Performs threshold spike discrimination." \ "Generates an impulse each time an input crosses the" \ "spike threshold at a maximal rate set by abs_refract." object randomspike Randomspike_type Randomspike spiking \ -author "M.Wilson Caltech 6/88, Dave Bilitch 1/94" \ -actions INIT PROCESS RESET SET \ -readonly state "current state of object" \ -readwrite rate "rate of generation of events" \ -readwrite reset "flag for whether to reset after each event" 1 \ -readwrite reset_value "what to reset state to" 0.0 \ -readwrite min_amp "minimum amplitude of event" 1.0 \ -readwrite max_amp "maximum amplitude of event" 1.0 \ -readwrite abs_refract "absolute refractory period" 0.0 \ -hidden lastevent "time of last spike" \ -hidden realrate "rate corrected for refractory period" \ -messages RATE 0 1 rate \ MINMAX 1 2 min max \ -description "Generates a time series of events at a rate" \ "given by the rate parameter. The probability" \ "of an event for a single time step is adjusted" \ "based on the setting of abs_refract such that" \ "the requested rate is maintained. No event will" \ "be generated during the refractory period defined" \ "by abs_refract. When an event has been generated" \ "the amplitude of the event is a random variable" \ "uniformly distributed between min_amp and max_amp." \ "The state field has the value of the event amplitude" \ "if an event has been generated. If an event is not" \ "generated then the value of the state field" \ "depends on the reset field. If reset is non-zero" \ "(the default) then the state takes on the value given in" \ "reset_value. Otherwise the state will behave like a" \ "latch containing the amplitude of the previous event." \ "A reset time, randomspike is initialized to a random" \ "phase of the refractory period to avoid artificial" \ "synchronization at high rate settings." addfunc planardelay PlanarDelay addfunc volumedelay VolumeDelay addfunc syndelay SynDelay addfunc planarweight PlanarWeight addfunc volumeweight VolumeWeight addfunc planarconnect do_planarconnect addfunc volumeconnect do_volumeconnect addfunc normalizeweights NormalizeWeights addfunc getsynindex do_getsynindex int addfunc getsyncount do_getsyncount int addfunc getsynsrc do_getsynsrc char* addfunc getsyndest do_getsyndest char* addfunc resetsynchanbuffers ResetSynchanBuffers addfunc planarweight2 PlanarWeight2 addfunc planardelay2 PlanarDelay2 addfunc volumedelay2 VolumeDelay2 /* ** $Log: newconn.g,v $ ** Revision 1.14 1997/08/08 23:42:23 dhb ** Added SET action for randomspike and updated randomspike ** description to reflect change in handling of rate and abs_refract ** values and resulting spike generation ** ** Revision 1.13 1997/08/04 17:38:27 dhb ** Added HPROCESS to synchan2 actions ** ** Revision 1.12 1997/08/01 18:57:44 dhb ** Fix to randomspike to adjust for the rate damping effect of ** the refractory period. (From Erik De Schutter) ** ** Revision 1.11 1997/07/29 00:58:02 dhb ** Added planardelay2 and volumedelay2 commands ** ** Revision 1.10 1997/07/23 22:01:11 dhb ** Added HPROCESS to synchan actions. ** ** Revision 1.9 1997/05/29 06:52:39 dhb ** Update from Antwerp GENESIS version 21e ** ** Version EDS21b 96/08/02 ** MAEX added field normalize_weights to synchan2 object ** added function planarweight2 ** # Revision 1.8 1996/07/23 00:03:40 dhb # Merged in 1.6.1.1 changes # # Revision 1.7 1995/09/28 00:01:48 venkat # Changes from Mike Vanier: # Removed references to hebbsynchan2. # Reorganized field positions to conform with newconn_struct.h # # Revision 1.6.1.1 1996/07/23 00:00:14 dhb # Changes from Mike Vanier: # synchan2 --> synchan # # Revision 1.6 1995/08/03 20:02:17 dhb # Changed hebbsynchan back to HebbSynchan implementation and commented # hebbsynchan2 object. # # Revision 1.5 1995/08/03 00:53:44 dhb # hebbsynchan is now the HebbSynChan2 version and there is no # hebbsynchan2 object defined. # # Revision 1.4 1995/03/28 02:13:49 mvanier # Cosmetic changes. # # Revision 1.3 1995/03/27 20:36:21 mvanier # Changed order of fields in synchan object to conform # to newconn_struct.h. # # Revision 1.2 1995/02/27 23:04:48 mvanier # Spiking objects are no longer of class membrane. # # Revision 1.1 1995/01/11 23:09:02 dhb # Initial revision # */