mosaic.sim.neuron
Class Neuron

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--mosaic.sim.kernel.AbstractModelComponent
                          |
                          +--mosaic.sim.kernel.variable.AbstractVariable
                                |
                                +--mosaic.sim.neuron.ActiveVariable
                                      |
                                      +--mosaic.sim.neuron.NeuronOutputSupport
                                            |
                                            +--mosaic.sim.neuron.Neuron
All Implemented Interfaces:
java.util.EventListener, java.awt.image.ImageObserver, mosaic.sim.kernel.simevent.InputEventListener, java.awt.MenuContainer, mosaic.sim.kernel.ModelComponent, NeuronOutput, java.beans.PropertyChangeListener, java.io.Serializable, mosaic.sim.kernel.simevent.SimEventListener, mosaic.sim.kernel.simevent.TimeEventListener, mosaic.sim.kernel.variable.Variable, mosaic.sim.kernel.variable.VariableChangeComponent, mosaic.sim.kernel.variable.VariableChangeListener

public class Neuron
extends NeuronOutputSupport
implements mosaic.sim.kernel.variable.VariableChangeListener

This class represents a neuron, which is able to fire spike events (thus it implements the NeuronOutput interface) and receive spikes indirectly via Synapses.

See Also:
Serialized Form

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  java.util.ArrayList inputs
          This is the list of Synapses which receive spike events from another NeuronOutput object and forward the event to this Neuron object.
protected  Synapse masterSynapse
          This is a master copy of the synapses that will be used for connecting neurons with each other.
protected  Potential potential
          The inner potential of this neuron.
protected  Threshold threshold
          The inner threshold of this neuron.
 
Fields inherited from class mosaic.sim.neuron.NeuronOutputSupport
outputs
 
Fields inherited from class mosaic.sim.neuron.ActiveVariable
timer
 
Fields inherited from class mosaic.sim.kernel.variable.AbstractVariable
changedTime, definedBy, displayUnit, inCoupler, inputEventComponents, outCouplers, quantity, type, unit, variableChangeListeners
 
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.variable.Variable
CONSTANT, INPUT, OUTPUT, STATE, VARIABLE
 
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
Neuron()
          Default constructor with no arguments.
 
Method Summary
 void addInput(NeuronOutput sender)
          This method adds another input to this Neuron, but the given input object does not have to be a Synpase, it just has to be some object implementing NeuronOutput.
 void addInputSynapse(Synapse synapse)
          Adds a single synapse object to the list of input synapses.
 void addListenerVariable(mosaic.sim.kernel.variable.Variable v)
          This implementation of VariableChangeListener.addListenerVariable does nothing.
 double computeTimeOfFire()
          Computes the next fire time according to the current potential and threshold parameters.
 double getCurrentPotential()
          Returns the current neuron potential.
 Synapse[] getInputSynapses()
          Returns the list of currently registerd input synapses.
 Synapse getMasterSynapse()
          Returns the master synapse object used for creating new synapse objects on the fly in the method addInput().
 Potential getPotential()
          Returns the potential object.
 int getPriority()
          This implementation of VariableChangeListener.getPriority always returns 0.
 Threshold getThreshold()
          Returns the threshold object.
 void processSimEvent(mosaic.sim.kernel.simevent.SimEvent e)
          This method is called by the simulation framework when a time event occurs.
 void propertyChange(java.beans.PropertyChangeEvent e)
          This implementation of VariableChangeListener.propertyChange does nothing.
 boolean removeInput(NeuronOutput sender)
          Removes a NeuronOutput object from the input list of this neuron.
 boolean removeInputSynapse(Synapse synapse)
          Removes a single synapse object from the list of input synapses.
 void removeListenerVariable(mosaic.sim.kernel.variable.Variable v)
          This implementation of VariableChangeListener.removeListenerVariable does nothing.
 void reset()
          This overrides the default behaviour of reset() by also resetting the associated potential and threshold objects.
protected  void scheduleNextFiring()
          This method calculates the next firing time of this neuron (by using the method computeTimeOfFire) and schedules the neuron for activation at this time if a firing occurs or deactivates it if no firing will occur.
 void setInputSynapses(Synapse[] synapses)
          Set the list of registered input synapses.
 void setMasterSynapse(Synapse master)
          Sets the master synapse object used for creating new synapse objects on the fly in the method addInput().
 void setPotential(Potential potential)
          Sets the potential object.
 void setThreshold(Threshold threshold)
          Sets the threshold object.
 void spikeEventFrom(Synapse sy)
          This method is called by the synapses from the inputs list whenever they receive a spike event from their sender object.
 void variableChange(mosaic.sim.kernel.variable.VariableChangeEvent e)
          This method is called by the simulation framework whenever a variable that this object is listening on changes.
 
Methods inherited from class mosaic.sim.neuron.NeuronOutputSupport
addOutput, fireSpikeEvent, getOutputs, getValueObject, removeOutput, setOutputs
 
Methods inherited from class mosaic.sim.neuron.ActiveVariable
activateAt, activateIn, addTimeEventComponent, isActive, passivate, removeTimeEventComponent
 
Methods inherited from class mosaic.sim.kernel.variable.AbstractVariable
addInputEventComponent, addOutCoupler, addSimEventComponent, addVariableChangeListener, clearChangedTime, connect, getChangedTime, getDefinedBy, getDisplayUnit, getInCoupler, getOutCouplers, getQuantity, getUnit, getVariableChangeListener, informOutgoingCouplers, isTypeConstant, isTypeInput, isTypeOutput, isTypeState, isTypeVariable, removeInputEventComponent, removeOutCoupler, removeSimEventComponent, removeVariableChangeListener, setChangedTime, setChangedTime, setDefinedBy, setDisplayUnit, setInCoupler, setQuantity, setType, setTypeConstant, setTypeInput, setTypeOutput, setTypeState, setTypeVariable, setUnit, signalVariableChange, signalVariableChangeDirectly, unconnect
 
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, initialize, isDisabled, isEnabled, paintComponent, printDebugOutput, printDebugOutput, printDebugOutput, printDebugOutput, printErrorOutput, printErrorOutput, printLogOutput, printLogOutput, removeModelComponent, removeModelComponentEventListener, removeModelComponentEventListener, removeNotify, 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.simevent.SimEventListener
addSimEventComponent, removeSimEventComponent
 
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, initialize, isDisabled, isEnabled, removeModelComponent, removeModelComponentEventListener, removeModelComponentEventListener, setEnabled, setParentModelComponent, setSimApplication
 

Field Detail

inputs

protected java.util.ArrayList inputs
This is the list of Synapses which receive spike events from another NeuronOutput object and forward the event to this Neuron object. It should only contain Synapse objects, nothing else.

potential

protected Potential potential
The inner potential of this neuron. It contains the expected future development of the neuron potential and is - in conjunction with the threshold - used to compute the expected next fire time of this Neuron. When one of the input synapses of this Neuron receives a spike event, the potential will be updated to reflect this neuron's response to the incoming spike and a new fire time will be computed.

threshold

protected Threshold threshold
The inner threshold of this neuron. When the potential reaches a value that is equal to or greater than the current threshold value, then this neuron will fire.

masterSynapse

protected Synapse masterSynapse
This is a master copy of the synapses that will be used for connecting neurons with each other. The actual synapses between the neurons will be cloned from this one when the addInput method is used to add a NeuronOutput object to the input list of this neuron.
Constructor Detail

Neuron

public Neuron()
Default constructor with no arguments. It only initializes the input and output lists with emtpy ArrayList objects.
Method Detail

scheduleNextFiring

protected void scheduleNextFiring()
This method calculates the next firing time of this neuron (by using the method computeTimeOfFire) and schedules the neuron for activation at this time if a firing occurs or deactivates it if no firing will occur.
See Also:
computeTimeOfFire()

spikeEventFrom

public void spikeEventFrom(Synapse sy)
This method is called by the synapses from the inputs list whenever they receive a spike event from their sender object. It updates the potential according to the response parameters from the synapse that called this method and (re-)computes the next fire time of this neuron.

computeTimeOfFire

public double computeTimeOfFire()
Computes the next fire time according to the current potential and threshold parameters. The actual computation is performed by the threshold object, using the current potential object.
Returns:
Returns either the absolute time of the next firing event or POSITIVE_INFINITY when no firing will occur with the current potential and threshold functions (when there is no intersection).

processSimEvent

public void processSimEvent(mosaic.sim.kernel.simevent.SimEvent e)
This method is called by the simulation framework when a time event occurs. It is used within the Neuron for firing. Thus the neuron fired (it sends out SpikeEvents) when the time event occurs.
Overrides:
processSimEvent in class mosaic.sim.kernel.variable.AbstractVariable

variableChange

public void variableChange(mosaic.sim.kernel.variable.VariableChangeEvent e)
This method is called by the simulation framework whenever a variable that this object is listening on changes. It is used within the Neuron for listening to changes on the Potential and the Threshold objects associated with the Neuron. The implementation simply calls scheduleNextFiring() because changes in the potential or the threshold objects might cause the next firing time to change.
Specified by:
variableChange in interface mosaic.sim.kernel.variable.VariableChangeListener
See Also:
scheduleNextFiring()

reset

public void reset()
This overrides the default behaviour of reset() by also resetting the associated potential and threshold objects. Of course, the overridden reset method is also called. But, it leaves the synapses alone.
Overrides:
reset in class mosaic.sim.kernel.AbstractModelComponent

addListenerVariable

public void addListenerVariable(mosaic.sim.kernel.variable.Variable v)
This implementation of VariableChangeListener.addListenerVariable does nothing.
Specified by:
addListenerVariable in interface mosaic.sim.kernel.variable.VariableChangeListener

removeListenerVariable

public void removeListenerVariable(mosaic.sim.kernel.variable.Variable v)
This implementation of VariableChangeListener.removeListenerVariable does nothing.
Specified by:
removeListenerVariable in interface mosaic.sim.kernel.variable.VariableChangeListener

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent e)
This implementation of VariableChangeListener.propertyChange does nothing.
Specified by:
propertyChange in interface mosaic.sim.kernel.variable.VariableChangeListener

getPriority

public int getPriority()
This implementation of VariableChangeListener.getPriority always returns 0.
Specified by:
getPriority in interface mosaic.sim.kernel.variable.VariableChangeListener

getCurrentPotential

public double getCurrentPotential()
Returns the current neuron potential.

getThreshold

public Threshold getThreshold()
Returns the threshold object.

setThreshold

public void setThreshold(Threshold threshold)
Sets the threshold object.

getPotential

public Potential getPotential()
Returns the potential object.

setPotential

public void setPotential(Potential potential)
Sets the potential object.

getInputSynapses

public Synapse[] getInputSynapses()
Returns the list of currently registerd input synapses.

setInputSynapses

public void setInputSynapses(Synapse[] synapses)
Set the list of registered input synapses. This removes all synapse objects that were registered before, so this method should only be used during initialization. For adding and removing synapses without removing the other registered objects, use the methods addInputSynapse / removeInputSynapse or addInput / removeInput.
See Also:
addInputSynapse(mosaic.sim.neuron.Synapse), removeInputSynapse(mosaic.sim.neuron.Synapse), addInput(mosaic.sim.neuron.NeuronOutput), removeInput(mosaic.sim.neuron.NeuronOutput)

addInputSynapse

public void addInputSynapse(Synapse synapse)
Adds a single synapse object to the list of input synapses.

removeInputSynapse

public boolean removeInputSynapse(Synapse synapse)
Removes a single synapse object from the list of input synapses.
Returns:
true when the given object was found and could be removed and false when the given object could not be found in the current list of registered input synapses.

addInput

public void addInput(NeuronOutput sender)
This method adds another input to this Neuron, but the given input object does not have to be a Synpase, it just has to be some object implementing NeuronOutput. Because Neurons depend on Synapses as their input, this method will create the needed synapse object by cloning it from the masterSynapse object, which has to be set beforehand. Please note that this method is only suited for easy construction of the neural network structure, it has to be assured that weight, delay and other variables are set before starting the simulation.
See Also:
NeuronOutput, masterSynapse, addInputSynapse(mosaic.sim.neuron.Synapse)

removeInput

public boolean removeInput(NeuronOutput sender)
Removes a NeuronOutput object from the input list of this neuron. This method tries to locate the synapse object that connects the given object with this neuron and removes it from the list of input synapse. It also unregisters the synapse object from the given NeuronOutput object.
Returns:
true when the given object was found and could be removed and false when no synapse object could be found in the input list that connects the given object with this neuron.

getMasterSynapse

public Synapse getMasterSynapse()
Returns the master synapse object used for creating new synapse objects on the fly in the method addInput().

setMasterSynapse

public void setMasterSynapse(Synapse master)
Sets the master synapse object used for creating new synapse objects on the fly in the method addInput().