Table of Contents

The Virtual Laboratory Environment

Quick Contents of this Page

What is a Virtual Laboratory

The Virtual Laboratory is an interactive environment for creating and conducting simulated experiments: a playground for experimentation. It consists of domain-dependent simulation programs, experimental units called objects that encompass data files, tools that operate on these objects, and a reference book. Current release is focused on graphical applications of L-systems, with an emphasis on the generation of fractals and the modeling of plants. It uses a modeling and simulation program called cpfg (plant and fractal generator with continuous parameters). The objects are organized, accessed and manipulated using domain-independent vlab system programs. The user can expand the laboratory by adding new objects, creating new experiments and composing them into hypertext documents.

Installation Procedures

The Virtual Laboratory programs, documentation and file system may be obtained by anonymous ftp. Installation instructions are found in the Vlab Installation document.

Organization of the Lab

The domain-independent framework for the Virtual Laboratory consists of: A laboratory object is defined as a directory containing two types of files and a subdirectory: This definition is compatible with the UNIX hierarchical file system. Thus the object-oriented file structure (object database) which provides the basis for lab operation can be represented by a hierarchy of UNIX directories and files, as shown in Figure 1.

Figure 1 - The object-oriented file structure

The path of subdirectories leading to an object establishes the inheritance structure of the lab. Inheritance is based on the idea of specifying new objects in reference to objects which already exist. The old object is the prototype and the new one is its extension. The extension contains only those files which are different from the corresponding files in the prototype. Files that remain the same are inherited from the prototype using symbolic links. Thus the object directory contains those files that are unique to the object, and links to files that are inherited from its prototype. This approach saves space, facilitates creation of objects similar to the prototype and allows a single change in the prototype to propagate through all descendents.

Key components of the Lab

The Object Browser

A user may browse through the objects in the lab by following the hierarchy induced by the prototype-extension relation. The object browser provides a visual interface for navigating through the hierarchy. The browser also makes it possible to move, copy, delete and rename objects. At any time, the user may request that the browser invoke the object manager to place a selected object on the lab table.

The Lab Table

Upon invocation of the object manager, all files that make up the selected object are copied to a temporary location called the lab table. Consequently, manipulation of object parameters does not affect the stored version. When the experiment is completed, the user may save the results by overwriting the original object or by creating an extension. In the latter case, the files on the lab table are compared with those in the prototype object; those files that differ from the prototype are saved, and links to the remaining files are established automatically.

The Object Manager

Objects are manipulated using a vlab system program called the object manager, manifested as an icon with an associated menu of operations. The menu lists the tools and utilities available for experimenting with the object, and allows the user to select them dynamically. The user may manipulate the object as a whole, without detailed knowledge of the programs involved or the component files. The content of the menus is given in the specifications file, which is a mandatory file in each object.

The Panel Manager

The ability to easily manipulate the parameters of an experiment is an important feature of the Virtual Laboratory. All parameters of an experiment are represented in the object's data files. Parameter modification can be performed using virtual control panels. A general-purpose panel manager creates panels according to definition files also included in the object. A panel definition file itemizes the appearance of each control button or slider in the panel, and the format of the message to be sent as a result of control manipulation. These messages are used to edit the data files. As a control on the panel is manipulated, the corresponding parameter in the data file will be updated. The application may then reread the data file to obtain the new values.

The Hypertext System

In many cases models separated in the prototype-extension hierarchy are related conceptually and should be associated for presentation purposes. Such associations are maintained by metatext, a simple Unix-based hypertext system. Metatext makes it possible to invoke objects and access related textual information in a manner independent of the hierarchical organization of the lab.

The data flow in the Virtual Laboratory is illustrated by Figure 2.

Figure 2 - Data flow in the Virtual Laboratory

The Virtual Laboratory Daemon

The vlab daemon is invoked automatically by other processes, and thus remains invisible to the end-user. However, the information on its operation and the format of messages is essential to implementing extensions of the Virtual Laboratory framework. Main functions are: support of communication between components and launching of objects (i.e.: invocation of the object manager).

Communication between vlab system programs and the vlab daemon is shown in Figure 3. Each process has a separate communication channel to the daemon. The daemon transparently forwards any message sent by an active vlab component to multiple receivers, which simplifies communication patterns compared to direct bilateral communication between pairs of components.

Figure 3 - Communication between vlab system components

References

L. Mercer. The Virtual Laboratory. Master's thesis, University of Regina, Regina, Canada, 1991.

L. Mercer, P. Prusinkiewicz, J. Hanan. The concept and design of a Virtual Laboratory. In Graphics Interface '90 Conference proceedings, pages 149-155. Canadian Information Processing Society, 1990.

E. Lowe - Extensions to the Virtual Laboratory. Master's thesis, University of Calgary, Calgary, Canada, 1995.

H. Lieberman. Using prototypical objects to implement shared behavior in object oriented systems. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages and Applications, pages 214-223, New York, 1986, Association for Computing Machinery.


Credits

L. Mercer, P. Prusinkiewicz, J. Hanan - the concept of the Virtual Laboratory

L. Mercer - the first vlab implementation

E. Lowe - redesign of communication centered on the vlab daemon

I. Hernadi, L. Mercer, P. Prusinkiewicz - Virtual Laboratory Environment documentation


Contact Information

Please direct all feedback, bug reports, and so on to vlab@cpsc.ucalgary.ca.

Last updated Feb. 27, 1996 by Istvan Hernadi