New York

xScheme suite

The xScheme suite includes: (i) a high performance scientific data viewer (xScheme Viewer), (ii) a user interface builder (xScheme Builder), (iii) a Data Base manager (xScheme DBM), and (iv) a batch processor (xScheme CFlex). Green/blue links, interactive/btatch data flow. Red links support either mode.
Viewer : interactive visualization    Builder : UI design    CFlex : batch processor

xScheme is an integrated development environment for the design of complex scientifc applications. The product is particularly effective with applications requiring to: view complex data sets, handle a large number of parameters, and interactively control the flow of execution. As shown in the figure, the xScheme core is an open architecture high performance scientific data viewer, xScheme viewer The viewer operates on data generated in a wide range of scientific applications, i.e. computational fluid dynamics, computational mechanics, medical imaging or biomedical imaging, to name just a few. In order to facilitate the handling of such a diverse data set, the suite holds its graphic objects in a data base. Data import/export to/from this data base is supported by a command line manager, xScheme DBM which comes free of charges with the purchase of any major component of the xScheme suite.

The viewer is built on top of OpenGL, xMotif, and XtIntrinsic libraries. When possible it takes advantage of specialized graphic processing units (GPUs). It supports the display of most data formats encountered in Science and Engineering, and includes facilities to: generate complex scenes with lighting & material properties, data acquisition with mouse click, and animation.

Most important is the viewer's open architecture. As shown in the Figure in addition to load data from the DB, the viewer can launch processes (right of computer icon) that generate new data or make transformations on data already displayed. The product comes with a small number of these, but a customer can augment the process list by linking the viewer with processes pulled from our library. Indeed most of our products are offered through this mechanism.

The viewer could be purchased with the Builder, which function is to incorporate user-defined processes. Together the two packages considitute a powerful Integrated Development Environment (IDE). The builder includes functionality to link code wrote with any procedural language to the viewer, and to supplement this one with an elaborate User Interface (UI). Specifically, the parameters and action buttons controlling the flow of execution of an application are termed the instruction set , and the windows hosting them, the instruction windows . The graphic data are displayed in other windows termed the panoramas . The builder includes functionality to design both the instructions and panoramas. Furthermore this one automatically link: (i) text fields in instruction windows to parameters in the code, (ii) action buttons in instructions windows to label in the codes, (iii) graphic objects displayed in panoramas to structures in the code. Similarly for any other component of a dialogue. Such that the development efforts to generate the UI are minimal

The interface between the user-defined code and the viewer is supported by a special routine called the exchanger (right of the computer icon). This code is essentially a hub, and is wrote by the developer. This code receives signals from the viewer, and based on them makes call to user-defined routines (right of exchanger in the Figure) or return control to the viwer. To minimize development efforts, the builder automatically link code components to elements of the UI. Technically this is achieved by instrumenting the exchanger with specially marked comments. This way input/output fields, buttons, graphic objects, and any other UI components in the viewer are match to code items. From this information the builder generates tables that are linked with the code, where an effortless and seamless integration.

The exchanger himself can be linked with any other scientific library, like any code. Therefore as illustrated in the Figure the viewer's functionality could become quite extensive. Indeed a developer could exploit this open architecture IDE to test the components of a large applications targeted to run on High Performance Computing (HPC) platforms. Indeed the viewer can play several roles in HPC. Prepare data for simulations, view complex simulation results, mine the data set, or test several components of a large applications. Finally, it could be a great tool to facilitate the dialogue between multiple scientists involved in a elaborate project.

From a developer's perspective there are great advantages because this one can design an interactive application including the display of complex data sets, acquisition of parameters, and the control of the flow of execution without spending any efforts on the underlying components. All his/her efforts can be devoted to the development of the specialized processes required by his/her application.

A last component of the suite is a batch processor that we call Cflex for Control FLow of EXecution. When defining parameters, processes, and action buttons, a developer defines components of a language to perform a computational task. Thus a sequence of instructions to execute the task in question can be listed in a text file, or if one prefers a script. The batch processor, recognizes the language define by the developer. Indeed it can read a sequence of instructions, the same difned in the UI plus others generic instruction to control the flow of execution, from a text file and timely launch user-deind processes.

Finally the Data Base Manager, is a relatively small command line module to import/export data from the data base. It comes free of charges with the purchase of any component of the xScheme suite. It comes with a scripting language and a library. Scripting is useful to automate data import/export to the DB. Developers appreciate the library since they can directly interact with the DB from their application and this make their application easier to operate.