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:
- The data files comprise our knowledge of a particular model.
- A specifications file defines the data files which make up the object and the tools which apply to them.
- A directory of extensions lists objects which inherit some features of the current
object.
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