ParaViewWeb: Using ParaView’s Visualization and Data Analysis Capabilities within Web Applications

Background

ParaViewWeb is a collection of components that enable the use of ParaView's visualization and data analysis capabilities within Web applications. More specifically, ParaViewWeb uses ParaView to generate data products on the server-side and to rapidly deliver those data products over the Internet to a Web client.

ParaViewWeb was developed as a framework used to leverage the power of VTK and ParaView in an interactive manner, and it is part of ParaView’s distributed binaries for Linux and Mac. ParaViewWeb relies on HTML 5.0 technologies, such as WebSockets and WebGL, which enable a subset of desktop and mobile Web browsers. ParaViewWeb provides for communication with a ParaView server running on a remote visualization node or cluster using a lightweight JavaScript API. Using this API, Web applications can easily embed interactive 3D visualization components.

ParaViewWeb and Python

ParaViewWeb’s framework leverages Python. Accordingly, ParaViewWeb’s processing and visualization capabilities can be used in any existing python framework, such as iPython. ParaViewWeb uses a simple Python script to expose ParaView’s HPC large data analysis and visualization capabilities through a Web server. ParaViewWeb allows the end-user to perform computationally intensive analysis and visualization tasks within a Web browser by relying on a remote, and possibly distributed, ParaView server for parallel processing and/or rendering.

Framework and Application

ParaViewWeb is both a framework and an application. The application for ParaviewWeb is the WebVisualizer. Essentially, WebVisualizer provides a Web-based front-end to ParaView. WebVisualizer was developed to analyze extremely large datasets using distributed memory computing resources. It can be run on supercomputers to analyze datasets of exascale size, as well as on laptops for smaller data. With WebVisualizer, end-users can quickly build visualizations to analyze their data using qualitative and quantitative techniques. This data exploration can be done interactively in 3D.

 

        Displaying ParaViewWebVisualizer.png

 

Single and Multi-User Deployment

ParaViewWeb can be deployed for one user or multiple users. The figure below illustrates how a single end-user or developer of an existing ParaViewWeb application (e.g., pv_web_visualizer.py) can begin interacting with a local ParaViewWeb server.

 

                              

Single end-user ParaViewWeb technologies and layers.

 

In order to support the connection of several end-users in different visualization sessions, the server must provide a single entry point to establish a connection, as well as a mechanism to start a new visualization session on demand.

The figure below illustrates a multi-user setup where Apache is used as a front-end application to deliver the static content (HTML, JavaScript, CSS, images) and to forward the WebSocket communication to the appropriate back-end visualization session.

 

        

Multi-user ParaViewWeb technologies and layers.

 

A launcher process is used to dynamically start the pvpython process with appropriate arguments for the visualization session. Even though this setup is more complex than the ad-hoc, single end-user setup, it remains easy and practical to implement for a variety of institutions.

Evolution of ParaViewWeb

We recently redesigned ParaViewWeb and made advances to the ParaViewWeb server-side infrastructure, in addition to the Web Visualizer client-side application. Our goals were to make ParaViewWeb easy to build, easy to secure, and easy to deploy. We also wanted ParaViewWeb to be able to leverage new technologies and to enforce best practice for client/server architecture. The redesign has brought many improvements to ParaViewWeb.

One major improvement is the migration from WAMP (Web Application Messaging Protocol) v1 to WAMP v2, using the latest Autobahn Python. This migration allow us to be compatible with Crossbar.io (http://crossbar.io) and leverage the work made on alternative protocols such as long-polling for browsers that do not support WebSockets like IE9. Another major improvement is that the new infrastructure has enhanced security to prevent the evaluation of arbitrary strings (Python “eval”) during server-side proxy creation.

In addition, the server-side proxy management has also been improved to allow clients to get and set nearly any property available to Python scripts on the server. The server-side color management protocols have also been redesigned to support the ability to color by a vector component or by magnitude, as well as to define and choose custom color palettes. Furthermore, the WebVisualizer application UI has been redesigned to take advantage of the many recent server-side improvements and to provide a cleaner look and feel.

While the new architecture allows ad-hoc usage of ParaViewWeb services with distributed binaries, it also makes it simple to embed real-world, 3D visualizations in any Web application!

Questions or comments are always welcome!