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.
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.
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.
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.