edu.udo.cs.yale.gui.plotter.som
Class SOMPlotter

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by edu.udo.cs.yale.gui.plotter.PlotterAdapter
                      extended by edu.udo.cs.yale.gui.plotter.som.SOMPlotter
All Implemented Interfaces:
DataTableListener, Plotter, ProgressListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class SOMPlotter
extends PlotterAdapter
implements ProgressListener

This is the main class for the SOMPlotter. It uses the KohonenNet class for generating a self-organizing map. Different properties of the resulting map may be shown as background while the examples are shown as points. There are different styled visualizations of the properties.

Version:
$Id: SOMPlotter.java,v 1.12 2006/09/24 13:05:06 ingomierswa Exp $
Author:
Sebastian Land, Ingo Mierswa
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class edu.udo.cs.yale.gui.plotter.PlotterAdapter
PlotterAdapter.LineStyle, PlotterAdapter.LineStyleIcon
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  javax.swing.JButton approveButton
           
private  int colorColumn
           
private  SOMMatrixColorizer[] colorizer
           
private  javax.swing.JComboBox colorSelection
           
private  java.lang.String currentToolTip
           
private  RandomDataContainer data
           
private  DataTable dataTable
           
private  int[] dimensions
           
private  javax.swing.JTextField dimensionX
           
private  javax.swing.JTextField dimensionY
           
private  java.util.ArrayList<ExamplePlotterPoint> exampleCoordinates
           
private  boolean examplesApplied
           
private  java.awt.image.BufferedImage image
           
private static int IMAGE_HEIGHT
           
private static int IMAGE_WIDTH
           
private  int jitterAmount
           
private  javax.swing.JComboBox matrixSelection
           
private  double maxP
           
private  double maxU
           
private  double maxUStar
           
private  KohonenNet net
           
private  double[][] pMatrix
           
private  javax.swing.JProgressBar progressBar
           
private  javax.swing.JTextField radiusSelection
           
private  javax.swing.JTextField roundSelection
           
private static long serialVersionUID
           
private  boolean show
           
private  int showColor
           
private  int showMatrix
           
private  double toolTipX
           
private  double toolTipY
           
private  double[][] uMatrix
           
private  double[][] uStarMatrix
           
 
Fields inherited from class edu.udo.cs.yale.gui.plotter.PlotterAdapter
GRID_COLOR, LABEL_FONT, LINE_COLORS, LINE_STROKES, LINE_STYLE_ICONS, LINE_STYLES, MARGIN, POINTSIZE, TOOLTIP_COLOR, WEIGHT_BORDER_WIDTH
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface edu.udo.cs.yale.gui.plotter.Plotter
MULTIPLE_SELECTION, NO_SELECTION, SINGLE_SELECTION
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SOMPlotter()
           
 
Method Summary
 boolean canHandleJitter()
          Returns true.
private  void createMatrices()
           
private  void drawToolTip(java.awt.Graphics2D g)
           
private  double[] getDoubleArrayFromRow(DataTableRow row, DataTable table)
           
 java.lang.String getIdForPos(int x, int y)
          Returns null.
 javax.swing.JComponent getOptionsComponent(int index)
          Returns null.
 boolean getPlotColumn(int dimension)
          Returns false.
 java.lang.String getPlotName()
          Returns null.
 PlotterCondition getPlotterCondition()
          Returns a BasicPlotterCondition allowing for all DataTables.
private  ExamplePlotterPoint getPlotterPointForPos(int x, int y)
           
private  double[][] getPMatrix(KohonenNet net, RandomDataContainer data, int[] dimensions)
           
private  double[][] getUMatrix(KohonenNet net, int[] dimensions)
           
private  double[][] getUStarMatrix(double[][] uMatrix, double[][] pMatrix, double meanP, double maxP, int[] dimensions)
           
private  void interpolateRect(java.awt.image.BufferedImage image, int posX, int posY, double width, double height, double[][] matrix, int matrixX, int matrixY, double colorScale, SOMMatrixColorizer colorizer)
           
 void paintComponent(java.awt.Graphics graphics)
          Invokes super method and sets correct color schemes.
private  void prepareSOM(DataTable dataTable, double adaptionRadius, int trainRounds)
           
 void progressFinished()
           
private  void recalculateBackgroundImage()
           
 void setDataTable(DataTable dataTable)
          Since this method already adds this object as a listener, all methods overriding this one should invoke the super method.
 void setJitter(int jitter)
          Sets the level of jitter and initiates a repaint.
 void setMousePosInDataSpace(int x, int y)
          Sets the mouse position in the shown data space.
 void setPlotColumn(int column, boolean plot)
          Does nothing.
 void setProgress(int value)
           
private  void setToolTip(java.lang.String toolTip, double x, double y)
           
 
Methods inherited from class edu.udo.cs.yale.gui.plotter.PlotterAdapter
canHandleZooming, dataTableUpdated, drawLegend, drawLegend, drawPoint, drawToolTip, drawWeightRectangle, getAxis, getAxisName, getIcon, getInitialZoomFactor, getMaxWeight, getNumberOfAxes, getNumberOfPlots, getNumericalTicSize, getPlotter, getPointColor, getPointColor, getPointColorValue, getPositionInDataSpace, getTicSize, getValuePlotSelectionType, getWeightColor, hasOptionsDialog, hasSaveImageButton, isProvidingCoordinates, isSaveable, save, setAxis, setDragBounds, setDrawRange, setKey, setZooming, showOptionsDialog
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface edu.udo.cs.yale.gui.plotter.Plotter
addMouseListener, addMouseMotionListener
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

IMAGE_WIDTH

private static final int IMAGE_WIDTH
See Also:
Constant Field Values

IMAGE_HEIGHT

private static final int IMAGE_HEIGHT
See Also:
Constant Field Values

dimensions

private int[] dimensions

exampleCoordinates

private java.util.ArrayList<ExamplePlotterPoint> exampleCoordinates

examplesApplied

private boolean examplesApplied

uMatrix

private double[][] uMatrix

maxU

private double maxU

pMatrix

private double[][] pMatrix

maxP

private double maxP

uStarMatrix

private double[][] uStarMatrix

maxUStar

private double maxUStar

dataTable

private DataTable dataTable

show

private boolean show

currentToolTip

private java.lang.String currentToolTip

toolTipX

private double toolTipX

toolTipY

private double toolTipY

showMatrix

private int showMatrix

showColor

private int showColor

colorColumn

private int colorColumn

data

private RandomDataContainer data

net

private KohonenNet net

approveButton

private javax.swing.JButton approveButton

matrixSelection

private javax.swing.JComboBox matrixSelection

colorSelection

private javax.swing.JComboBox colorSelection

roundSelection

private javax.swing.JTextField roundSelection

radiusSelection

private javax.swing.JTextField radiusSelection

dimensionX

private javax.swing.JTextField dimensionX

dimensionY

private javax.swing.JTextField dimensionY

progressBar

private javax.swing.JProgressBar progressBar

colorizer

private SOMMatrixColorizer[] colorizer

jitterAmount

private int jitterAmount

image

private java.awt.image.BufferedImage image
Constructor Detail

SOMPlotter

public SOMPlotter()
Method Detail

getPlotterCondition

public PlotterCondition getPlotterCondition()
Description copied from class: PlotterAdapter
Returns a BasicPlotterCondition allowing for all DataTables. Subclasses should override this method in order to indicate that they might not be able to handle certain data tables.

Specified by:
getPlotterCondition in interface Plotter
Overrides:
getPlotterCondition in class PlotterAdapter


paintComponent

public void paintComponent(java.awt.Graphics graphics)
Description copied from class: PlotterAdapter
Invokes super method and sets correct color schemes. Should be overwritten by children, but invokation of this super method must still be performed in order to get correct color schemes.

Overrides:
paintComponent in class PlotterAdapter


setDataTable

public void setDataTable(DataTable dataTable)
Description copied from class: PlotterAdapter
Since this method already adds this object as a listener, all methods overriding this one should invoke the super method.

Specified by:
setDataTable in interface Plotter
Overrides:
setDataTable in class PlotterAdapter


canHandleJitter

public boolean canHandleJitter()
Returns true.

Specified by:
canHandleJitter in interface Plotter
Overrides:
canHandleJitter in class PlotterAdapter


setJitter

public void setJitter(int jitter)
Sets the level of jitter and initiates a repaint.

Specified by:
setJitter in interface Plotter
Overrides:
setJitter in class PlotterAdapter


prepareSOM

private void prepareSOM(DataTable dataTable,
                        double adaptionRadius,
                        int trainRounds)

createMatrices

private void createMatrices()

recalculateBackgroundImage

private void recalculateBackgroundImage()

interpolateRect

private void interpolateRect(java.awt.image.BufferedImage image,
                             int posX,
                             int posY,
                             double width,
                             double height,
                             double[][] matrix,
                             int matrixX,
                             int matrixY,
                             double colorScale,
                             SOMMatrixColorizer colorizer)

getDoubleArrayFromRow

private double[] getDoubleArrayFromRow(DataTableRow row,
                                       DataTable table)

getUMatrix

private double[][] getUMatrix(KohonenNet net,
                              int[] dimensions)

getPMatrix

private double[][] getPMatrix(KohonenNet net,
                              RandomDataContainer data,
                              int[] dimensions)

getUStarMatrix

private double[][] getUStarMatrix(double[][] uMatrix,
                                  double[][] pMatrix,
                                  double meanP,
                                  double maxP,
                                  int[] dimensions)

getOptionsComponent

public javax.swing.JComponent getOptionsComponent(int index)
Description copied from class: PlotterAdapter
Returns null. Subclasses might override this method in order to provide additional option components.

Specified by:
getOptionsComponent in interface Plotter
Overrides:
getOptionsComponent in class PlotterAdapter


setPlotColumn

public void setPlotColumn(int column,
                          boolean plot)
Description copied from class: PlotterAdapter
Does nothing. Subclasses should override this method if they want to allow plot column selection. In this case, the method PlotterAdapter.getPlotColumn(int) should also be overriden.

Specified by:
setPlotColumn in interface Plotter
Overrides:
setPlotColumn in class PlotterAdapter


getPlotColumn

public boolean getPlotColumn(int dimension)
Description copied from class: PlotterAdapter
Returns false. Subclasses should override this method and return true for the columns which should be plotted.

Specified by:
getPlotColumn in interface Plotter
Overrides:
getPlotColumn in class PlotterAdapter


getPlotName

public java.lang.String getPlotName()
Description copied from class: PlotterAdapter
Returns null. Subclasses might return another name more fitting the plot selection box or list.

Specified by:
getPlotName in interface Plotter
Overrides:
getPlotName in class PlotterAdapter


setProgress

public void setProgress(int value)
Specified by:
setProgress in interface ProgressListener

progressFinished

public void progressFinished()
Specified by:
progressFinished in interface ProgressListener

getIdForPos

public java.lang.String getIdForPos(int x,
                                    int y)
Description copied from class: PlotterAdapter
Returns null. Subclasses which are able to derive a point from a mouse position should return a proper Id which can be used for object visualizers.

Specified by:
getIdForPos in interface Plotter
Overrides:
getIdForPos in class PlotterAdapter


getPlotterPointForPos

private ExamplePlotterPoint getPlotterPointForPos(int x,
                                                  int y)

setMousePosInDataSpace

public void setMousePosInDataSpace(int x,
                                   int y)
Sets the mouse position in the shown data space.

Specified by:
setMousePosInDataSpace in interface Plotter
Overrides:
setMousePosInDataSpace in class PlotterAdapter


setToolTip

private void setToolTip(java.lang.String toolTip,
                        double x,
                        double y)

drawToolTip

private void drawToolTip(java.awt.Graphics2D g)


Copyright © 2001-2006