mosaic.sim.neuron.netoutputs
Class TemporalCodedOutput

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--mosaic.sim.kernel.AbstractModelComponent
                          |
                          +--mosaic.sim.kernel.BasicModel
                                |
                                +--mosaic.sim.kernel.BasicActiveModel
                                      |
                                      +--mosaic.sim.neuron.netoutputs.TemporalCodedOutput
All Implemented Interfaces:
mosaic.sim.util.artificialidentifier.ArtificialIDOwner, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, mosaic.sim.kernel.ModelComponent, java.beans.PropertyChangeListener, java.io.Serializable, mosaic.sim.kernel.simevent.SimEventComponent, mosaic.sim.kernel.simevent.SimEventListener, mosaic.sim.kernel.simevent.TimeEventComponent, mosaic.sim.kernel.simevent.TimeEventListener, mosaic.sim.kernel.variable.VariableChangeListener

public class TemporalCodedOutput
extends mosaic.sim.kernel.BasicActiveModel

This class implements a system output class. It is a converter between spike events at its inputs and analog vectors at its output. The spike events have to be coded temporally, e.g. from a TemporalCodedInput. For a description of temporal coding, please look at TemporalCodedInput.

See Also:
TemporalCodedInput, Serialized Form

Inner Class Summary
protected  class TemporalCodedOutput.Input
          This inner class implements the inputs of TemporalCodedOutput, i.e. the objects receiving the spike events from the system.
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent, javax.swing.JComponent.ActionStandin, javax.swing.JComponent.IntVector, javax.swing.JComponent.KeyboardState
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.AWTTreeLock
 
Field Summary
protected  boolean cycleActive
          This boolean variable is set to true whenever an output cycle is currently active.
protected  java.util.ArrayList inputs
          The inputs which receive the spike series.
protected  java.util.ArrayList listeners
          The listeners which should receive outputEvents sent by this class.
protected  double maxCycleTime
          This is the maximum time that an input cycle is allow to take.
protected  double multiplicator
          Multiplicator for computing the analog value depending on the delay between the received spikes.
protected  TemporalCodedOutput.Input reference
          An optional reference input representing the analog value "0".
 
Fields inherited from class mosaic.sim.kernel.BasicActiveModel
activeVar, artificialID, deltaT, initTime, selectOrder, stopped, timeEvent, timeEventListeners, tl, tn
 
Fields inherited from class mosaic.sim.kernel.BasicModel
listenerVariables, priority, simEventComponents
 
Fields inherited from class mosaic.sim.kernel.AbstractModelComponent
application, components, enabled, label, parentModelComponent, sCESupport
 
Fields inherited from class javax.swing.JComponent
_bounds, accessibleContext, actionMap, ACTIONMAP_CREATED, alignmentX, alignmentY, ANCESTOR_INPUTMAP_CREATED, ANCESTOR_USING_BUFFER, ancestorInputMap, ancestorNotifier, autoscroller, border, changeSupport, clientProperties, CREATED_DOUBLE_BUFFER, flags, FOCUS_INPUTMAP_CREATED, focusInputMap, HAS_FOCUS, htmlKey, htmlView, inputVerifier, IS_DOUBLE_BUFFERED, IS_OPAQUE, IS_PAINTING_TILE, IS_PRINTING, IS_PRINTING_ALL, KEY_EVENTS_ENABLED, KEYBOARD_BINDINGS_KEY, listenerList, maximumSize, minimumSize, NEXT_FOCUS, paintImmediatelyClip, paintingChild, preferredSize, readObjectCallbacks, REQUEST_FOCUS_DISABLED, tmpRect, TOOL_TIP_TEXT_KEY, ui, uiClassID, UNDEFINED_CONDITION, verifyInputWhenFocusTarget, vetoableChangeSupport, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW, WHEN_IN_FOCUSED_WINDOW_BINDINGS, WIF_INPUTMAP_CREATED, windowInputMap
 
Fields inherited from class java.awt.Container
component, containerListener, containerSerializedDataVersion, dbg, dispatcher, layoutMgr, listeningBoundsChildren, listeningChildren, maxSize, ncomponents, printing, printingThreads, serialVersionUID
 
Fields inherited from class java.awt.Component
actionListenerK, adjustmentListenerK, appContext, background, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, componentListener, componentListenerK, componentOrientation, componentSerializedDataVersion, containerListenerK, cursor, dropTarget, eventMask, focusListener, focusListenerK, font, foreground, graphicsConfig, hasFocus, height, hierarchyBoundsListener, hierarchyBoundsListenerK, hierarchyListener, hierarchyListenerK, incRate, inputMethodListener, inputMethodListenerK, isInc, isPacked, itemListenerK, keyListener, keyListenerK, LEFT_ALIGNMENT, locale, LOCK, metrics, minSize, mouseListener, mouseListenerK, mouseMotionListener, mouseMotionListenerK, name, nameExplicitlySet, newEventsOnly, ownedWindowK, parent, peer, peerFont, popups, prefSize, privateKey, RIGHT_ALIGNMENT, textListenerK, TOP_ALIGNMENT, valid, visible, width, windowClosingException, windowListenerK, x, y
 
Fields inherited from interface mosaic.sim.kernel.ModelComponent
INF, INFINITY, NEGATIVE_INFINITY, NEGINF, NEGINFINITY, POSITIVE_INFINITY
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
TemporalCodedOutput(int num, double multiplicator, boolean useReferenceInput, double maxCycleTime)
          Creates a TemporalCodedOuput object and initializes the input objects.
 
Method Summary
 void addVectorOutputListener(VectorOutputListener l)
          Adds an output event listener.
 NeuronInput getInput(int index)
          Returns the input object with the given index.
 NeuronInput getReferenceInput()
          Returns the reference input.
 void processSimEvent(mosaic.sim.kernel.simevent.SimEvent e)
          This method is called by the simulation framework whenever a time event for this object occurs.
 boolean removeOutputEventListener(VectorOutputListener l)
          Removes an output event listener.
protected  void spikeEventOccured()
          This method is called by the input objects whenever a spike event has been received.
 
Methods inherited from class mosaic.sim.kernel.BasicActiveModel
activate, activateAt, activateIn, addActiveListener, addSimEventComponent, addSimEventListener, addTimeEventComponent, addTimeEventListener, before, getArtificialID, getInitTime, getSelectOrder, getTL, getTN, initialize, isActive, isNextToFire, isPassive, isStopped, jbInit, passivate, registerEvent, removeActiveListener, removeSimEventComponent, removeSimEventListener, removeTimeEventComponent, removeTimeEventListener, restart, setActive, setInitTime, setSelectOrder, setStopped, setTL, setTN, stop, triggerEvent, unregisterEvent
 
Methods inherited from class mosaic.sim.kernel.BasicModel
addListenerVariable, getListenerVariables, getNthListenerVariable, getPriority, propertyChange, removeListenerVariable, setPriority, variableChange
 
Methods inherited from class mosaic.sim.kernel.AbstractModelComponent
addModelComponent, addModelComponentEventListener, addModelComponentEventListener, addNotify, containsModelComponent, disable, enable, findParentModelComponent, fireModelComponentAdded, fireModelComponentChanged, fireModelComponentChanged, fireModelComponentDisabled, fireModelComponentEnabled, fireModelComponentGotContinuous, fireModelComponentGotDiscrete, fireModelComponentRemoved, getInfo, getLabel, getMinimumSize, getModelComponents, getParentModelComponent, getPreferredSize, getSimApplication, getTime, isDisabled, isEnabled, paintComponent, printDebugOutput, printDebugOutput, printDebugOutput, printDebugOutput, printErrorOutput, printErrorOutput, printLogOutput, printLogOutput, removeModelComponent, removeModelComponentEventListener, removeModelComponentEventListener, removeNotify, reset, setEnabled, setLabel, setParentModelComponent, setSimApplication
 
Methods inherited from class javax.swing.JComponent
_paintImmediately, , addAncestorListener, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, adjustPaintFlags, alwaysOnTop, checkIfChildObscuredBySibling, clearFocusOwners, componentInputMapChanged, computeVisibleRect, computeVisibleRect, compWriteObjectNotify, contains, createToolTip, enableSerialization, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperties, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getCreatedDoubleBuffer, getDebugGraphicsOptions, getFlag, getGraphics, getHeight, getInputMap, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getNextFocusableComponent, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getUIClassID, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paintWithBuffer, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyBindings, processKeyBindingsForAllComponents, processKeyEvent, processMouseMotionEvent, putClientProperty, readObject, rectangleIsObscured, rectangleIsObscuredBySibling, registerKeyboardAction, registerKeyboardAction, registerWithKeyboardManager, registerWithKeyboardManager, removeAncestorListener, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setCreatedDoubleBuffer, setDebugGraphicsOptions, setDoubleBuffered, setFlag, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPaintingChild, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, shouldDebugGraphics, superProcessMouseMotionEvent, unregisterKeyboardAction, unregisterWithKeyboardManager, unregisterWithKeyboardManager, update, updateUI, writeObject
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, adjustListeningChildren, applyOrientation, checkGD, countComponents, createChildHierarchyEvents, createHierarchyEvents, deliverEvent, dispatchEventImpl, dispatchEventToSelf, doLayout, eventEnabled, findComponentAt, findComponentAt, findComponentAt, getAccessibleAt, getAccessibleChild, getAccessibleChildrenCount, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents_NoClientCode, getComponents, getLayout, getMouseEventTarget, getWindow, initIDs, insets, invalidate, invalidateTree, isAncestorOf, layout, lightweightPaint, lightweightPrint, list, list, locate, minimumSize, nextFocus, numListening, paintComponents, paintHeavyweightComponents, postProcessKeyEvent, postsOldMouseEvents, preferredSize, preProcessKeyEvent, printComponents, printHeavyweightComponents, processContainerEvent, processEvent, proxyEnableEvents, proxyRequestFocus, remove, remove, removeAll, removeContainerListener, setFocusOwner, setLayout, transferFocus, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, areInputMethodsEnabled, bounds, checkImage, checkImage, checkWindowClosingException, coalesceEvents, constructComponentName, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getAccessibleIndexInParent, getAccessibleStateSet, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont_NoClientCode, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen_NoTreeLock, getLocationOnScreen, getName, getNativeContainer, getParent_NoClientCode, getParent, getPeer, getSize, getToolkit, getToolkitImpl, getTreeLock, getWindowForObject, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabledImpl, isLightweight, isRecursivelyVisible, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resetGC, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 
Methods inherited from interface mosaic.sim.kernel.ModelComponent
addModelComponent, addModelComponentEventListener, addModelComponentEventListener, containsModelComponent, disable, enable, fireModelComponentAdded, fireModelComponentChanged, fireModelComponentChanged, fireModelComponentDisabled, fireModelComponentEnabled, fireModelComponentGotContinuous, fireModelComponentGotDiscrete, fireModelComponentRemoved, getInfo, getLabel, getModelComponents, getParentModelComponent, getSimApplication, getTime, isDisabled, isEnabled, removeModelComponent, removeModelComponentEventListener, removeModelComponentEventListener, reset, setEnabled, setParentModelComponent, setSimApplication
 

Field Detail

listeners

protected java.util.ArrayList listeners
The listeners which should receive outputEvents sent by this class.

inputs

protected java.util.ArrayList inputs
The inputs which receive the spike series.

reference

protected TemporalCodedOutput.Input reference
An optional reference input representing the analog value "0".

multiplicator

protected double multiplicator
Multiplicator for computing the analog value depending on the delay between the received spikes.
See Also:
TemporalCodedInput.multiplicator

maxCycleTime

protected double maxCycleTime
This is the maximum time that an input cycle is allow to take. After this time has passed (after receiving the first spike event in the input cycle), all inputs that have not received any spike are set to a value NEGATIVE_INFINITY.

cycleActive

protected boolean cycleActive
This boolean variable is set to true whenever an output cycle is currently active.
Constructor Detail

TemporalCodedOutput

public TemporalCodedOutput(int num,
                           double multiplicator,
                           boolean useReferenceInput,
                           double maxCycleTime)
Creates a TemporalCodedOuput object and initializes the input objects.
Parameters:
num - The number of inputs. It is equal to the length of the analog vectors sent in the output events.
multiplicator - The multiplicator.
useReferenceInput - When set to true, the class uses a reference input representing the analog input value "0".
Method Detail

spikeEventOccured

protected void spikeEventOccured()
This method is called by the input objects whenever a spike event has been received. It checks if the output cycle is complete and sends the output events if it is.

processSimEvent

public void processSimEvent(mosaic.sim.kernel.simevent.SimEvent e)
This method is called by the simulation framework whenever a time event for this object occurs. The only purpose in this class is to decouple the receiption of the last spike event (completing the output cycle) and sending of the output event. This way, the event handlers of the classes which caused the spike events to be sent in the first place (e.g. a TemporalCodedInput object) can complete before this output event is sent. This was necessary to get a test example working, but it seems a lot cleaner anyway. The output event is sent at the same simulation time (because the class activates itself upon completion of the output cycle with activateIn(0) ), but not during the executing of other time event, but after them.
Overrides:
processSimEvent in class mosaic.sim.kernel.BasicActiveModel

getInput

public NeuronInput getInput(int index)
Returns the input object with the given index.
Parameters:
index - The number of the input object to return.
See Also:
inputs

getReferenceInput

public NeuronInput getReferenceInput()
Returns the reference input.

addVectorOutputListener

public void addVectorOutputListener(VectorOutputListener l)
Adds an output event listener.
Parameters:
l - The listener that should be added to the list of listeners receiving output events by this class.
See Also:
listeners

removeOutputEventListener

public boolean removeOutputEventListener(VectorOutputListener l)
Removes an output event listener.
Parameters:
l - The listener that should be removed from the list of listeners receiving output events by this class.
See Also:
listeners