The Eclipse Community continues to grow in new ways in interesting areas, including through the formation of a suite of Working Groups that focus on everything from embedded systems to the advanced location aware technologies. Talks at both FOSS4GNA and the EclipseCons in recent years have revealed a startling amount of visualization technologies as part of this growth. Most recently, cross-working group discussions at EclipseCon NA uncovered a desire to formalize development around some of these activities into a new Eclipse project dedicated to Visualization. Further discussions across the Science, LocationTech and Internet of Things (IoT) Working Groups have helped refine the scope and identify the multi-instutional team that will work on the project.
The scope of this project will include, but may not be limited to, the following areas:
- 1D & 2D Plotting
- Advanced 2D and 3D visualization for data analysis and post-processing
- Time series visualizations in multiple dimensions
- Constructive modeling tools for building 3D geometries and meshes
- Constructive modeling tools for building molecules and materials models
- Domain-specific scientific visualizations
Many in the community use SWT-XY-GRAPH from Eclipse Nebula for 1D & 2D plotting, but several teams have extensions and other features that either enhance or replace it and there is dedicated development in low-dimension plotting on several existing Eclipse RCP-based projects.
Imaging is of particular interest to the working groups and others in the Foundation. This project plans to develop an open-source, friendly-licensed alternative to the Java Advanced Imaging (JAI) API.
Visualization is a critical part of science and engineering projects and has roles in both setting up problems and post-processing results. The input or "construction" side can include things like constructing 3D geometries or volume meshes of physical space and the post-processing side can include everything from visualizing those geometries and meshes to plotting results to analyzing images to visualizing real data to almost everything else imagineable. There are numerous technologies for performing these tasks and most of them, with the exception of SWT-XY-GRAPH, are unavailable natively in the Eclipse ecosystem.
This work proposes to develop new visualization technologies based on the needs of projects in the working groups and to provide a framework for integrating these and third-party visualization technologies seemlessly with the workbench. The integration framework, which is part of the initial contribution that will be moved from the Eclipse Integrated Computational Environment (ICE), uses pluggable OSGi services to standardize the way that all integrated visualization products interact with the platform. Several abstractions are made for common elements such as plots and construction canvases and editable properties are provided by the implementations. Each visualization service realizes a standard interface (IVizService) that provides factory methods for constructing the widgets.
This work also proposes to develop a standalone, executable Eclipse product (flavor), complete with its own perspective and views, that can be downloaded by users and in which all of the integrated capabilities may be used in a pure visualization context. This insures that the project will be able to stand as its own product without being a kind of hidden project that is integrated into other projects.
Development of Swing/AWT Widget
The development of Swing/AWT widgets is beyond the scope of this work, although there is nothing in the design that fundamentally prevents such a development. Contributions from the community that extend the platform to support Swing/AWT widgets are welcome but will not be pursued.
The picture below shows some of the proposed capabilities that would be part of this project. The collage shows a 3D constructive solid geometry created interactively in the top left, a domain-specific view of a nuclear reactor plant in the bottom left, 2D plots of neutron scattering data in the top right and a 3D view of a prismatic cell battery, commonly used in phones and laptops, with its temperature as a function of time color mapped onto it in the bottom right.
The plot of neutron scattering data is rendered using SWT-XY-GRAPH, but all of the other images are provided by third party services that are integrated with the visualization service framework. The view of the battery is actually rendered by VisIt, a third party tool for 3D visualization and post-processing that is written in C/C++ and executes as a separate process.
The next picture shows some of the proposed imaging capabilities in the initial contribution, courtesy of Marcel Austenfeld from his Bio7 project (http://bio7.org/). It shows a standard United States National Institutes of Health sample image for ImageJ, specifically, according to their website:
"This image is made from a Molecular Probes demo slide:
Cells: bovine pulmonary arthery endothelial cells
Blue: nucleus stained with DAPI
Green: Tubulin stained with Bodipy FL goat anti-mouse IgG
Red: F-Actin stained with Texas Red X-Phalloidin"
This project was identified by members of the Eclipse Community, specifically the working groups, as a project that would give us a common area to work and allow us the opportunity to benefit from significant re-use and shared development of visualization technologies.
This project will also expand Eclipse support into a new area: Scientific Visualization.
As far as the proposers know, no one owns the trademark to the project name.
Many, if not all, of the third-party dependencies in the initial contribution have already received preliminary approval in Contribution Questionnaires (CQs) filed by existing Eclipse projects.
We have selected both EDL and EPL for licenses because technology such this will most likely be in demand by many scientific institutions, some of which may not want to use it under the terms of the EPL. The project lead is willing to provide a justification letter for the IP-Team, Executive Director and the Board if required. For its part of the initial contribution, Oak Ridge National Laboratory/UT-Battelle, LLC approves of the dual licensing.
Since most of the third-party libraries on which this project depend have already been approved, piggyback CQs can be used and only a minimal amount of addition IP work is necessary. The initial contribution is already working in two existing projects, suggesting that only a minimal amount of code development will be required. Thus we expect that a relatively quick incubation of six months will be required for the first release. The proposed project schedule is as follows:
- 6 Months - 1.0 release to Eclipse project site
- 6-9 Months - First talk or demo at EclipseCon
- 1 Year - First look at and prototypes of 2.0 release from requirements based on community feedback
- 1 Year - First peer-reviewed publication
The first twelve months will focus on deployment of the existing technologies and prototyping of new capabilities based on community feedback. New functionality includes:
- ImageJ2 support
- 3D mesh editing
- 3D molecule builder/editor
- Additional implementations of visualization services (IVizServices) for existing functionality
- Functionality required by LocationTech and IoT (since most of the proposed is based on the Science Working Group)
- Improved User Experience
- Integration of IDataset from DAWNSci where appropriate
This project will have broad applications in the general community, so in addition to proposing tutorials and talks at the EclipseCons we will build community by reaching out to the traditional visualization community and conferences as well as submit a peer-reviewed journal article.