Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ice-dev] Embedding visualizations across ICE

Thanks Patrick! Yes, it will. I am really looking forward to it and I can't wait to see the implementation for Paraview! (I've got a pretty good idea what the VisIt one will look like.)

Jay

On Fri, Jan 2, 2015 at 4:32 PM, Patrick O'Leary <patrick.oleary@xxxxxxxxxxx> wrote:
This will be very nice when done.

Best regards,
Patrick

On Fri, Jan 2, 2015 at 2:27 PM, Jay Jay Billings <jayjaybillings@xxxxxxxxx> wrote:
Everyone,

Please see the attached photo showing a CSV plot rendered inside the Reflectivity Model's Resource Page. This plot is created and rendered as soon as the Reflectivity Model is loaded in the UI and it does not require using the Visualization Perspective. The platform automatically detects that it can visualize the output file and renders the plot.

I have spent the past three days working to unite three seemingly separate requirements into one usable capability:
1.) Enable embedded visualizations from the visualization engines wherever else they may be needed. (Jay, Jordan)
2.) Create an OSGi service for swapping visualization engines. (Matt, Jay, Hari, Patrick)
3.) Update ICE's Form Editors to automatically visualize output files if possible without loading the visualization perspective. (Danielle, Sreekanth, Jay, Alex, Andrew, Anna)

As it turns out, each one of them is needed to do the Reflectivity Model properly, so I stepped in and provided an initial design and implementation. The major take away from this is that we can now consume our visualizations plugins *ANYWHERE* they are needed in the platform and we can even do crazy things like tile them and stack them.

The plot in the picture is created using ICE's existing CSV plotting capabilities, but they are provided through the new visualization service so that they can be embedded as needed. I didn't write any new CSV plotting code (but I did fix some bugs...) to do this, I just connected to what we already have. The new service has the following interfaces:
IVizServiceFactory - The collection of all visualization services available to the platform. Implementation dynamically loaded at runtime by the OSGi.
IVizService - Implemented by visualization engines such as the CSV plotting tools and, soon, VisIt and Paraview. Used to create IPlots.
IPlot - An embeddable "plot" or visualization created by an IVizService and tied to a specific data source.

IVizServices are registered via OSGi Declarative Services with the IVizServiceFactory, which is in turn registered with any pieces of the platform that need it. At the moment, this is just the ICEFormEditor, which passes it to the ICEResourcePage. Over the next few weeks Jordan will be working to implement these interfaces for VisIt and Paraview, as well as improving my CSV implementation, so that we can start viewing the meshes for Bison and results (silo, exodus, etc.) for all of the supported codes. My initial implementation can be found in the org.eclipse.ice.viz.service and org.eclipse.ice.viz.service.test bundles;

https://github.com/eclipse/ice/tree/jay/reflectivity/src/org.eclipse.ice.viz.service
https://github.com/eclipse/ice/tree/jay/reflectivity/tests/org.eclipse.ice.viz.service.test

The service interfaces are in the widgets bundle until we can clean up the mess that is the visualization bundle;

https://github.com/eclipse/ice/tree/jay/reflectivity/src/org.eclipse.ice.client.widgets/src/org/eclipse/ice/client/widgets/viz/service

Note too that the tests use SWTBot to make sure that the CSVPlot actually creates something. It has been significantly updated over the past three years, so it is time that we start using it on everything. (I even used SWT WindowBuilder for all of the layout stuff! Woohoo!)

These services are also designed so that they can publish properties and be started via the Preferences menu, although I haven't started configuring that yet. This means that it will be possible to switch the default visualization engine and options just like changing the default font color or appearance theme.

As I mentioned, Jordan is going to start development on the VisIt and Paraview VizServices next week since Taylor is transitioning to some HCI work. His goal will be to get them working to the point that he can render the Bison mesh in the area that we have reserved for it and where the RELAP-7 plants are currently rendered. Alex and Andrew will be watching this work to figure out how we can use it to view CAEBAT meshes. After that he will start implementing some downright wild designs that I have in mind for embedding galleries of plots and looking at output data as if it was a photo album. Eventually, once we have all three services connected and have updated the service interfaces to include everything we need, Jordan will rewrite the Visualization Perspective so that it uses the service interfaces too. Anna and I will push forward on the infrastructure side with Bison and the Reflectivity Model to feed him requirements. Anna will most likely help Jordan with his work on this too since she knows all of our requirements.

When Jordan gets to the Visualization Perspective, he will also start trying to integrate DAWNSci in place of our CSV plotter. That can't happen soon enough if you ask me, but Anna and I found some technical problems that we will need to discuss with Matt before that can happen.

All of this is in my Reflectivity branch until I figure out how to get SWTBot working in the build, but I don't have the energy to do that today.

Jay

--
Jay Jay Billings
Oak Ridge National Laboratory
Twitter Handle: @jayjaybillings




--
Jay Jay Billings
Oak Ridge National Laboratory
Twitter Handle: @jayjaybillings

Back to the top