Talk:Graphics/Viz
From DANSE
| Table of contents |
Overall comments
Victoria: Thanks for the nice demo of HippoDraw on 4 Aug. 2004. What impressed me most was the interactivity with the Python interpreter. I was impressed when you clicked on a graph, and then coordinates were listed in the interpreter window. This direct interaction with the Python interpreter is valuable. It could allow users to give input to a DANSE analysis network running under the framework, input that could help guide the analysis procedure. HippoDraw is obviously much more interactive with the framework than most standalone packages could be. Finally, I was also impressed that you liked this package so much that you decided to use it yourself! Brent
PGPLOT extension
Note that we (billinge-group) are using a PGPLOT extension program, KUPLOT, written by Thomas Proffen, which turns PGPLOT from a "library" into a "package". It has a command-line interpreter that allows you to build plots using PGPLOT subroutines. It supports scripting so your favorite plots can be reused and modified with new data. It has limited mathematical expressions too, allowing basic data-manipulations.
Strengths:
- Plots are built from scripts so you have great control on the outcome
- Template scripts make repeat plots straigtforward
- Command line driven. No python bindings yet, but should be straightforward.
- Free, open source.
- Publication quality plots.
- CoWritten by Thomas Proffen so we have good access to the original developer
- Reasonably functional zooming and cursor control is possible (e.g., PDFgetN graphics use KUPLOT)
Weaknesses:
- Limitations are the same as PGPLOT. If PGPLOT development stops, KUPLOT stops there too.
- 3D graphics are rather limited
- Command-line interface is no everyone's cup of tea; people used to ORIGIN would be appalled.
Summary: We use this a lot with great success, but that is because we are KUPLOT compliant after Thomas passed through the group. Kind of like UNIX, you have to learn to love it, but when you get used to it, it is great. KUPLOT should probably be assessed alongside GNUPLOT as a simple "workhorse" plotting capability for the hard-core command-line lovers among us.
IDL
- Strengths
- Built in viz capabilities:
- 2D (line plots) and 3D (surface/image/contour plots)
- 4D (volume plots) rendering
- data slicing, mapping, and cuts
- true (24 bit) and/or false (8 bit) color mapping
- animations
- point-and-click interactivity with new "i-tools" a substantial improvement.
- iTools provide a framework which significantly enhances the capabilities to create large interactive and extensible applications.
- iTools constructed entirely using the IDL OOP capabilities.
- Built-in processing capabilities:
- Scripting language with array support. It is optimized for carrying out array-based data manipulations (like MATLAB).
- Math libraries such as LAPACK and many math operations built in.
- Built in GUI builder and toolkit.
- Skilled programmer can write procedures that run quickly relative to other interpreted/byte compiled languages.
- Compiled IDL code written using IDL's built-in array-based operations (with embedded IDL license or running in the IDL Virtual Machine) can run with execution times comparable to C-based code.
- Some ability to extend by dynamically linking. (Code written in C, FORTRAN, and C++)
- The IDL-Java bridge allows access to Java objects within IDL code. Java objects imported into IDL behave like normal IDL objects and their methods can be invoked.
- Application distribution options
- Embedded IDL license with free unlimited distribution. (Requires distribution license agreement-$$). Cost is comparable to a couple of developerss licenses.
- IDL Virtual Machine allows free distribution of code with some limitations (i.e. prohibited use of the EXECUTE command).
- Built in viz capabilities:
- Weaknesses
- GUI builder is ok for laying out user-interfaces but not very good across all platforms. GUI builder is only available for the WINDOWS platform.
- Summary
- Recent advances in the development of the IDL language now make it possible to use IDL as a large scale integration platform. The iTools provide command-line simplicity for complex visualizations with significant improvements in interactivity. The iTools also provide a component framework for developing loosely integrated and extensible specialized modules for visualization, data operations, and data manipulations.--Rdimeo 07:27, 2 Sep 2004 (PDT)
Some additional questions
There are some points about IDL, especially the iTools component framework, that I (Tim Kelley) don't fully understand, perhaps a more experienced IDL user could comment on them:
- How virtual is iTools with respect to components? Can I swap components at run time?
- What support does IDL provide for distributed computing? Is this available to iTools?
- What execution models are supported by iTools?
- Can iTools (or IDL) act as a client to an XMLRPC server? SOAP?
- Is iTools asynchronous?
- Can iTools components be run from outside the iTools GUI? How scriptable is ICF?
- What sorts of streams does iTools support?
- Are there license restrictions on the redistribution of iTools?
--Tim 13:35, 8 Sep 2004 (PDT)
Tim: Richard Azuah and myself (Rob Dimeo) will try to answer your questions here. Please keep in mind that we have just begun to develop with the iTools framework in the past 6 months. First, the iTools are built using the IDL OOP toolkit so they are all written as .PRO files. There are three basic items in the framework: (1) a complete separation between the user-interface and the non-interactive part of the framework, (2) an object identifier system for identifying components and hence creating a hierarchy of objects, and (3) a messaging system allowing one component to respond to changes in another component.
- A single iTool component accepts an input and creates an output so, in that sense, each component is independent. e.g. a rebinning operation. The GUI can be built/customized at runtime based on the user's desires for which components to include.
- IDL provides no support for distributed computing though threads are supported on a multi-processor system. There is an externally-available package (free for non-commercial use) called FastDL that allows IDL programs to be run on distributed memory parallel system (a cluster) as well as on a multi-processor system.
- iTools does not add any new execution models. It is a framework built using the existing IDL OOP toolkit.
- IDL supports RPCs on LINUX only but not XMLRPC or SOAP.
- IDL applications are asynchronous and, since iTools are written in IDL, by default they also are asynchronous.
- iTools components can indeed be run outside of the GUI since the UI is a separate part of the iTools framework. iTools are as scriptable as IDL is. There is nothing special nor restrictive about iTools. In fact a recent addition to the iTools is the ability to "record macros" and replay them. A new messaging system in the iTools framework facilitates this "macro"-like functionality.
- We don't know. It might support them. We have played around with using shared memory and communication between two processes: one IDL process creates data and the other listens and displays the data as it is received. Additionally one of us has written a program which opens up a network socket and receives data on a currently running experiment which is subsequently displayed.
- The same licensing for distributing an IDL application pertains to the iTools. One option is distributing with the free Virtual Machine (which has a few limitations). The other is to pay a licensing fee for unlimited distribution with none of the same limitations as imposed by the Virtual Machine.--Rdimeo 14:08, 10 Sep 2004 (PDT)
Review of Additional Commercial and Existing Packages
While the group is still in the process of reviewing visualization packages, I suggest that the following be considered for review:
- IRIS Explorer
- ISAW
- DAVE
- Others?
Note: moved from Software Engineering Discussion page to Graphics/Viz page 9/7/04 by SDM.
Steve
