Copyright © 2007 SLAC
This document describes a required feature of the SLAC Eclipse Applications Lab (SEAL). The purpose of this feature is to help interactive applications make graphs of data. That is, it will be used to make such plots as scatter-plots (1d), surface plots (2d), histograms, feather plots, parametric plots, stair-step plots etc. It's emphasis is not in drawing graphical widgets as might be done by a "graphics package", but rather in data analysis.
This section describes the status of this document at the time of its publication.
This draft has been reviewed and edited by Chris Larrieu, the implementer. It is not expected that this requirements document will be formally reviewed by the group, though comments are welcome.
It is required that a very broad range of data plot styles is supported, including 1-d point and line, including fitted functions and error bars, 2-d (3-d surface plots), histograms, contour plots etc (see Functionality below). Therefore, it seems reasonable to expect that this facility will be built on top of an existing established scientific plotting system such as Matlab or Gnuplot.
Ideally the plotting mechanism to be used would be the one presently used for scripted applications - Matlab. However, matlab is expensive. Therefore, part of this project is to evaluate the cost and benefit of using Matlab, for instance using the Matlab Java compiler, which makes matlab commands available from Java programs. The matlab java compiler is described in [MATJAVA].
A relatively cheap Matlab solution would be preferable to a free GNUPlot one, in order to keep consistency with Matlab apps. This will increase user confidence and allow concentration of expertise.
Speed. It should be possible to generate and display a scatter plot (no fitting) of 1000 pts in 0.25s. This may require that a plot object has already been created with no data, and then populated with the data. Certainly the re-display of some plot with new data (for instance when cycling through the list of acquired device value arrays when you want to look at all 100 of them against the same time range, should be very quick, ~.25s. Some more time may be given for a new unique plot.
A single plotting package should be used to fulfill this functionality requirement, not a collection of 3rd party utilities.
It is not necessary, though would be marginally preferred, for the plotting window to be manageable as an Eclipse View (and thereby "inside" the application window and dockable/undockable. Creating an external window for each plot is fine.
However, if an external window is used, it should manage window proliferation. That is, previously used windows should be deleted automatically in some stack, say 3 deep (the 4th most previously generated window deleted).
Drawing graphical shapes or widgets such as dials, or constructing graphical pictures, is not in scope.
Drag and drop data is not in scope. There is no need to support selection of a graph object and dropping it into a spreadsheet or other application.
The programmer of an application in the SEAL system must be able to find the programmers guide and javadoc for scientific plotting, and use the API within the context of a SEAL application development. Any user of that application (within SEAL) must get a plot. If the application requires a 3rd party package to be installed on a users desktop, it must be very clear in the SEAL documentation where to get that package and how to install it.
Total time: 9-42 days, assuming 8 hour days minus 2 hours overhead. The range is broad owing to significant uncertainty about which technologies will prove most apt. For example, it may take some extensive evalutation to discover that MATLAB is not a viable solution. Having spent time on that, we'll be back at phase 1 with Octave or Gnuplot, or whatever other tools might also prove viable. We should revise the time estimate as we progress, more accurately to reflect lessons learned.
Deliver the matlab cost/benefit analysis to Greg, Ron and Hamid.
Deliver design proposal to the software group.