Chimera Extension Management

With a publicly accessible embedded Python interpreter, Chimera is designed for extension. With the flexibility of arbitrary user extensions comes the problems of managing these extensions:

  1. Presenting an user interface to available extensions;
  2. Presenting an user interface for managing active extensions; and
  3. Saving active extensions in a Chimera session.

Available Extensions User Interface

The primary goal in out user interface is to present the list of available extensions in a coherent manner. One possibility is to reflect the location where the extensions were found, e.g., mirror the file system organization. While this approach presents some data to the user (i.e., where to find the extensions), the information is not particularly helpful for modeling purposes. A more useful interface is to divide the extensions into categories by their functionality. The major problem with this approach is that there is no automatic method for identifying the appropriate categories of a Chimera extension. To obtain this information, we need the extension implementor to supply it in a standardized way. Once we start requiring one piece of information from the extension implementor, it is a short step to requiring an entire set of data, including:

This information from all the modules are managed by the Chimera extension manager. Extensions (that want to be presented in the integrated Chimera interface) need to register a extension management object (EMO) with the extension manager. The required information is obtained from the EMO using a standard protocol, i.e., invoking well known methods.

The Chimera extension manager presents an user interface in a two-level outline layout. The first level consists of the categories of functionality obtained from available extensions; the second level consists of the extensions within each category. The appearance order of both categories and extensions should be under user control, e.g., sort by name or explicit arrangement by user. Operations on categories include

New categories may be used for custom groupings of extensions, independent of extension functionality. Operations on extensions include:

Active Extensions Management

An activated extension can either complete its task immediately or operate over a period of time. Examples of the former are MainChain, which undisplays protein side chains, and Ribbon, which generates ribbon graphical object for user selected models. Examples of the latter include AlignPlot, which provides an interface for the user to examine multiple structure alignments, and MSFViewer, which displays a multiple sequence format (MSF) file.

An immediate-mode extension optionally display a modal user interface to gather any user selectable parameters, and executes its task to completion. No state information of any sort is saved between extension activations. These extensions require no additional Chimera user interface elements since, other than through their own modal interface, they do not interact with the user.

An extension that operates over a period of time is more complex, since there may be multiple instances of the same extension operating on different data, e.g., displaying several MSF files simultaneously. If there can be only instance (a singleton extension), the extension functionality should be implemented as part of the EMO; each activation of the extension is handled directly by the EMO. If there may be multiple instances (an instance extension), the EMO should create (and keep track of) a new instance of another class for each activation; each instance needs to register with the Chimera extension manager so that a menu entry is made under Tools, so that the user may select one particular instance with which to interact.

Saving Active Extensions in Session

When a Chimera session needs to be saved, the extension manager requests that each EMO save itself and any extension instances that it created. For immediate-mode extensions, there is no state information to save and therefore no action is needed. For singleton extensions, the EMO simply saves its own state. For instance extensions, the EMO should request each of its instances to save itself.


conrad@cgl.ucsf.edu / Chimera Extension Management / January 2000