Chimera

chi-me-ra or chi-mae-ra
[L chimaera, fr. Gk chimaira she-goat, chimera; akin to Gk cheimo-n winter - more at HIBERNATE]
1a cap: a fire-breathing she-monster in Greek mythology having a lion's head, a goat's body and a serpent's tail
1b: an imaginary monster compounded of incongruous parts
2: an illusion or fabrication of the mind; esp: an unrealizable dream (a fancy, a chimera in my brain, troubles me in my prayer -- John Donne)
3: an individual, organ, or part consisting of tissues of diverse genetic constitution and occurring esp. in plants at a graft union

Introduction

MidasPlus is a molecular graphics package in use in the Computer Graphics Laboratory since 1989. Over the past few years, we have learned quite a few things from developing MidasPlus and from user comments. Many factors have convinced us that, to improve our modeling environment, it will be more fruitful to build a redesigned system from scratch than to continue to modify MidasPlus. These factors include:
the age of the MidasPlus design (parts of which date back to 1980)
the need for a graphical user interface and an improved command language
the need for faster and more thorough access to data for auxiliary programs

One of the primary features of the new system, which is called Chimera, is its extensibility. The MidasPlus delegate extension mechanism has shown that the incorporation of user-written programs greatly enhances the functionality of the modeling environment as a whole. For this reason, the Chimera extension architecture provides facilities for both users and programmers.

Core Functionality

One of the design criteria for Chimera is to provide all the functionality that is currently available in MidasPlus. However, instead of putting all this functionality into a single program, we have selected a subset which will form the core of Chimera, and will implement the remainder as extensions. For example, the graphical display obviously needs to be part of the core, while the ability to swap amino acids will be an extension. The three major groups of core functionality are the graphical display, the user interface and the extension mechanisms.

Chimera provides a more comprehensive set of graphical primitives than MidasPlus, mainly because its graphics will be based on OpenInventor, which is now available for workstations from Silicon Graphics, Digital Equipment Corporation, Hewlett-Packard and IBM. In addition to the vector graphics available in MidasPlus, Chimera is able to display ball-and-stick and ribbon-style representations of molecules interactively. For non-molecular graphics, Chimera is able to draw points, vectors, markers, spheres, cylinders and polygons. All these graphical representations may be colored using either standard coloring methods or texture mapping, combined with translucency. A comprehensive set of graphical primitives makes creating presentation graphics a simpler task in Chimera than in MidasPlus.

One of the main complaints about MidasPlus is its arcane (and archaic) text-based user interface. However, one of the main strengths of MidasPlus is also the expressive power of its command language and its ability to execute command scripts. For Chimera, we will use an embedded command interpreter for Python which enables user to define their own commands that use and update internal data structure of Chimera. For example, it is possible to selectively change the colors of atoms based on their temperature factors and occupancy.

In addition to the command line interface, we have also added a graphical user interface. Our last attempt, MidasMenu, has taught us an important lesson: the graphical user interface should not mirror the command line interface; instead, it should provide an alternative style for command construction that is targeted for interactive use.

Extension Mechanisms

One of the cornerstones of Chimera is its multiple extension mechanisms. By having a variety of ways to augment Chimera functionality, users can tailor the modeling environment to suit their needs. The Chimera command language, Python, can be used to implement extensions directly since, unlike the MidasPlus command language, it is a full-fledged programming language with control flow constructs, subroutines, etc. and has access to most Chimera data. However, there are times when it is better to use programs to implement extensions, perhaps due to performance considerations, programming language familiarity, or the need to interface to existing applications.

Chimera will support both the MidasPlus pdbrun and delegate mechanisms. A pdbrun extension is a program that reads PDB format input and generates commands for Chimera to execute; Chimera will wait for the pdbrun extension to terminate before continuing user interaction. A delegate extension is a program that runs in parallel with Chimera, reading user commands and issuing Chimera commands; Chimera can interact with the user while the delegate extension is busy. Delegates are more powerful than pdbrun extensions because they retain state between user commands. Both types of extension mechanisms have proven useful in MidasPlus, as shown by the conic, ribbonjr, discern, density and noeshow extensions. In Chimera, such extensions will be able to run on other hosts via a network link.

While we have discussed providing shared-memory extension mechanisms, there appear to be few applications that both need and can take advantage of them. Shared memory is useful when communications bandwidth is a concern, and few applications generate data in real-time and need to be able to visualize the data in real-time. For example, molecular dynamics simulation can produce massive volumes of data, but the data analysis is usually better done off-line, at least currently. As processor speed increases and real-time data processing becomes more feasible, we will add the shared-memory extensions.

An important aspect of extensions is how they are integrated into the overall user interface. Most of Chimera's user interface is customizable, so extensions can integrate themselves into the existing interface, e.g., as part of the tool bar or menus. If, however, the Chimera user interface is inappropriate, extensions can present their own user interfaces using the X Windows Motif and tk libraries of Python. For example, we implemented a Kinemage viewer extension for Chimera that presents its own Motif panel.

Systems of Extensions

Many of the capabilities currently available in MidasPlus will be implemented as extensions in Chimera. However, rather than adding single extensions at a time, we would like to see entire systems of extensions developed to address specific problem domains, such as molecular mechanics and molecular dynamics.

Molecular mechanics and molecular dynamics are commonly used tools in molecular modeling. One of the main weaknesses of MidasPlus, when compared to commercial software, is its lack of interface with software that provides this functionality. However, rather then incorporating the functionality into Chimera, it makes much more sense to employ one of the extension mechanisms to executing an external program. A major advantage is that, as long as the application interface of the external program remains unchanged, Chimera and the external program may be maintained independently by different groups.

We can imagine several other systems that will aid our users, e.g., for NMR and drug design. By making Chimera the core for these systems, we can also provide some continuity when they are used sequentially or simultaneously.

Questions and Answers

When will Chimera be available?
We anticipate completing core functionality in three to six months. To provide the same level of functionality as MidasPlus, we need to implement several extensions, which should be done six months after the core.
Is Chimera ``easier'' than MidasPlus?
Yes. Due to its graphical user interface, Chimera should be easier to learn than MidasPlus. The command language is more extensive than that of MidasPlus, due to the greater functionality provided; however, the language retains a fairly simple syntax.
What programming languages will I need to know to write extensions for Chimera?
It depends on what type of extension you want to add. To define macros, you only need to know Python. Delegates and pdbrun extensions can be written in any programming language; all you need to know is how to read from standard input and write to standard output. Of course, you still need to know Python because the output must be Chimera commands.
Who will work on creating the major systems of extensions?
We anticipate collaborating with groups with expertise in the problem domain to create and refine major systems of extensions. We also expect to interface with existing programs that perform many of the needed functions (e.g., blast, amber, etc.). But if you have some free time...

conrad@cgl.ucsf.edu / Chimera / April 1996