mosaic.sim.neuron
Class PLPotential

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.Potential
                                            |
                                            +--mosaic.sim.neuron.PLPotential
All Implemented Interfaces:
java.util.EventListener, java.awt.image.ImageObserver, mosaic.sim.kernel.simevent.InputEventListener, java.awt.MenuContainer, mosaic.sim.kernel.ModelComponent, java.io.Serializable, mosaic.sim.kernel.simevent.SimEventListener, mosaic.sim.kernel.simevent.TimeEventListener, mosaic.sim.kernel.variable.Variable, mosaic.sim.kernel.variable.VariableChangeComponent

public class PLPotential
extends Potential

This class represents a neuron potential described by a piecewise linear mathematical function.

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  PLFunction buffer
          This is only a buffer for the mergeSynapseResponse method, used for the enhanced merge sort in there.
protected  PLFunction changes
          This function specifies the future potential development, computed from the received synapse response functions (by mergeSynapseResponse).
protected  int numSegments
          The current number of linear segments in the piecewise linear potential function 'changes'.
 
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
PLPotential(int maxSegments)
          Initializes lastValue and numSegments with 0 and allocates changes and buffer with maxSegements linear segments.
 
Method Summary
 PLFunction getChanges()
          Returns the currently computed piecewiese linear function describing the currently known future potential changes.
 double getCurrentPotential()
          Returns the current potential value (at the current simulation time).
 int getNumSegments()
          Returns the number of piecewiese linear segments that are currently valid in the changes function.
 void mergeSynapseResponse(java.lang.Object change)
          Merges the synaptic response of an input synapse (probably caused by a spike received by that synapse) with the current potential function, thus forming a new potential function.
 void processSimEvent(mosaic.sim.kernel.simevent.SimEvent e)
          This method is called by the simulation framework whenever a time event occurs.
 void reset()
          Overrides the default behaviour of reset by also clearing the internal buffers for the future potential function (actually just setting the length to zero).
 
Methods inherited from class mosaic.sim.neuron.Potential
getValueObject
 
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

changes

protected PLFunction changes
This function specifies the future potential development, computed from the received synapse response functions (by mergeSynapseResponse).

buffer

protected PLFunction buffer
This is only a buffer for the mergeSynapseResponse method, used for the enhanced merge sort in there. It is here to avoid too many dynamic memory allocations.

numSegments

protected int numSegments
The current number of linear segments in the piecewise linear potential function 'changes'. It is needed because changes (and buffer) are allocated with a maximum size (so that they do not need to be re-allocated during simulation) and the real (valid) number of linear segments currently describing the potential function will usually be smaller then this.
See Also:
changes
Constructor Detail

PLPotential

public PLPotential(int maxSegments)
Initializes lastValue and numSegments with 0 and allocates changes and buffer with maxSegements linear segments.
Method Detail

getCurrentPotential

public double getCurrentPotential()
Returns the current potential value (at the current simulation time).
Overrides:
getCurrentPotential in class Potential

mergeSynapseResponse

public void mergeSynapseResponse(java.lang.Object change)
Merges the synaptic response of an input synapse (probably caused by a spike received by that synapse) with the current potential function, thus forming a new potential function. This is a heavily adapted merge-sort algorithm, so it should be quite fast.
Overrides:
mergeSynapseResponse in class Potential

processSimEvent

public void processSimEvent(mosaic.sim.kernel.simevent.SimEvent e)
This method is called by the simulation framework whenever a time event occurs. It is used within PLPotential for clearing the potential function when it has reached a value of zero at some time (this can be the end of the function, but does not have to be).
Overrides:
processSimEvent in class mosaic.sim.kernel.variable.AbstractVariable

getChanges

public PLFunction getChanges()
Returns the currently computed piecewiese linear function describing the currently known future potential changes. Note: The length of the returned array will be of maximum size whereas only a smaller number of segments is valid within the function. Use getNumSegments() to retrieve the real number of valid segements, do not user getChanges().gradients.length !
See Also:
getNumSegments()

getNumSegments

public int getNumSegments()
Returns the number of piecewiese linear segments that are currently valid in the changes function.

reset

public void reset()
Overrides the default behaviour of reset by also clearing the internal buffers for the future potential function (actually just setting the length to zero).
Overrides:
reset in class mosaic.sim.kernel.AbstractModelComponent