Project Status

An Interactive Language

Most of the visible work on the Omega project has been focussed on building the foundations of an interactive language. This is now close to release and will perhaps be made available at the end of March, 1999. This of course will not be the final version of the language and is intended to serve as a vehicle for grounded discussion.

The language offers a rich set of features that make it useful to users with different programming levels and different types of tasks. It facilitates interactive commands, functions &methods, direct access to compiled Java code and, in the near future, will support compilation of scripts and functions to byte-code for efficient execution. Combined with optional type-checking, these facilities allow one to explore ideas and computations casually and then to convert them into reusable software easily. In this way, the language spans the spectrum from scripting languages and shells to compiled languages that offer more structure.

The interpreter is designed to be highly configurable and easily embeddable, allowing it to be used in other applications. This facility can be used interactively or programmatically to evaluate expressions. Additionally, it is thread-safe and reentrant ensuring that multiple evaluators can be in existence and active concurrently. It has been used in the TILE project for providing dynamically created HTML documents (quizzes, reports, forms, etc.) based on what students have discovered previously in a computer lab.

A more complete list of the notable features is provided here.


A few of us are just getting started on the visualization and display graphics module of Omega. Some basic plot types have been developed and support various forms of interaction. The goal is to build sufficiently flexible primitive classes on top of the Java 2D and 3D Graphics APIs so that we and others can explore new vizualization techniques and construct relatively general plots. Two benefits of using Java that we obtain in the graphics module relate to the native support for GUIs. We have a simple but extensible event model on which to build complex interaction, linking, etc. Secondly, the layout of collections of plots can be done by the Java Layout Manager approach rather than the plotting facilities themselves. The latter allows the individual plot classes to handle their contents rather than their relationships to each other. This approach will hopefully allow us to explore configurations such as Trellis in the relatively near future.


Several researchers in the area of statistical modeling have been invited to join in the discussion of developing a new generation of modeling software. As they become involved, more will be described here. Mail can be sent to this group at

Some work has been done on basic linear models. Additionally, we are beginning to turn our attention to defining a formula language. Current thoughts are that this will extend the Rogers &Wilkinson syntax used in languages such as S. The extensions are aimed to include mixed effects, hierarchical and graphical models amongst others. The data structures will hopefully support specification via non-text interfaces (e.g. graphical interfaces).

Dynamic CORBA

The reflectance techniques used in the interpreter were based on earlier work to provide an automated mechanism for 1) invoking methods in remote objects using CORBA, and 2) converting existing objects into CORBA servers, with little effort by the users. This material has been integrated into the Omega source and will be tested within the next month or so and simplifies the interaction with CORBA for the user.

On top of these remote method invocation facilities, we plan to add an intelligent, extensible task manager to allow the distribution of arbitrary tasks. The immediate plan is to distribute C code to different machines and form a cluster in this manner. This will be controlled via the Omega language, allowing for easy interactive specification. Additionally, the Java support for threads, exceptions, etc. sees to provide the basis for a general and reusable framework.

Interfaces With Existing Languages

While Omega does provide facilities not available in many of the other statistical environments (e.g. JDBC, graphics, Java access, language facilities), until the modeling and graphics modules are expanded, Omega does not provide a sufficiently rich environment for performing the day-to-day functions involved in statistical analyses. As a result, it is important the people can explore Omega without committing extensive time and resources to it. Ideally, they can pass computations from Omega back to their chosen language (e.g. S, R) and vice-versa. The CORBA material will facilitate this, but requires CORBA support in those languages. For a variety of reasons, this is less likely to happen than direct support for Omega. Using the Dynamic Java Method Invocation of Omega, the Java Native Interface (JNI), and the embeddable JVM, a mechanism exists to call S functions from Omega and vice-versa.


The primary members of the Omega group are meeting in March at the Conference on Distributed Statistical Computing.

Talks on the project will be given at the Joint Statistical Meetings in Baltimore in August and at the 52nd International Statistical Institute Session the same month.