What is Vish?
Vish stands for The Visualization Shell. It is a highly flexible software environment for processing and visualizing spatio-temporal data sets. Vish provides highly interactive visualization and visually assisted numerical data processing features to present, analye and explore small and big (i.e. larger-than-RAM) data sets. Due to its modular and generic design data sets of different types and stemming from different sources can be combined, allowing for direct comparison of computational and observational data or any such combinations. Vish has been used in multiple scientific disciplines ranging from Astro-Physics, Medical Imaging, Compuational Fluid Dynamics, Gescience, Oil Spill Research, flooding simulations, and more.
Vish is designed to couple components through simple abstraction layers and thereby allows complex modules to interact with each other without interference. For instance, I/O, graphical user interface, rendering are completely separated plugin components. A Vish Object, the core component of all functionality in Vish, would only be concerned with one of those aspects but benefit from the availability of an advanced infrastructure in the background. This allows for easy implementation of state-of-the-art data processing and rendering algorithms made available in an end-user ready environment and applicable to real-world data. Vish thereby incorporates many visualization techniques that cannot be found elsewhere and comes with a unique look and insight potential to data sets.
How is Vish used?
Depending on the use case scenario, its graphical user interface, qVish, allows handling different levels of complexity:
- For mere presentation purposes, the Vish Viewer provides ready-to-use 3D rendering for preprocessed data sets with minimal user interaction while allowing interactive navigation in 3D space.
- For data analysis, the Vish Tools offer means to analyze specific properties of a dataset, for instance visually assisted classification of points on behalf of their neighborhood information.
- For the most challenging task of exploring new datasets with yet unknown properties, theVish Framework offers an extensive set of tools that can be applied alternatively or complementary, allowing to possible find and identify yet unexpected data features.
- Complementing the graphical user interface, Vish allows to store all data processing and visualization setups in a script which can then also be executed from the command line in batch mode. Certain customizations for using Vish within another application are possible as well.
How does Vish work?
Vish provides a highly modular infrastructure to implement visualization (and more) algorithms, composed of a microkernels managing plugins. All complex functionality is provided in plugins. The atomic element of a plugin is a Vish Object, a data structure with input , output and the ability to execute some procedure on these data. The Vish “microkernel” defines objects and their relationships. Typical “plugins” provide OpenGL rendering, data I/O layers and the graphical user interface. The input and output types of Vish objects are types as defined in C++, either native types such as int or double, or user-defined data structures. The graphical user interface and the scripting interface allows to create such Vish objects and to connect object inputs with compatible object outputs, thereby creating a pool of Vish objects bundled through a graph defining the path of data flowing along the stream of directed connections.
Data management in Vish
The data handling in VISH is based on mathematical theories:
- Differential Geometry
- Geometric Algebra
- Fiber Bundles
- VISH is organized around Grids and Fields. The end-user operates only on Grid objects and Fields
- Strong encapsulation between components. An abstract interface that allows to integrate VISH components into existing applications. Special attention is given to interactive exploration of large datasets, using state-of-the art features of modern graphics cards. – Source code is available for academic and personal use.