The MBT software package is not meant to be a replacement for the multitude of excelent stand-alone molecular visualization applications. Instead, it has been designed to enable molecular biologist to write custom molecular biology visualization and analysys tools. The toolkit hopefully enables scientific programmers to produce efficient programs with a minimal amount of effort and code. The authors of this toolkit hope that scientists will be able to use or extend the core toolkit classes in order to devlop new toolkit components and applications which uniquely suit their research and devlopment needs.
Java was chosen as the MBT implementation language for a number of reasons. Java programs can be run on a number of computing platforms (Sun, SGI, Windows, Linux) which are widely used in the field of molecular biology. Java provides a very capable programming environment for developing applications having sophisticated graphical user interfaces. Finally, developing a Java-based toolkit enables programs to be deployed in a web environment (such as the Protein Data Bank).
The MBT software components were designed with efficiency and ease-of-use in mind. In addition to the necessary data container objects, file parsers, and basic data manipulation code, we wanted to supply the developer with a set of high-level components which could be "plugged" together to produce advanced programs with a minimal amount of user code.
Among the more important high-level MBT components, programmers should examine the capabilities of the {@link edu.sdsc.mbt.io.StructureFactory} class, the {@link edu.sdsc.mbt.viewables.StructureDocument} class, and the various Viewer sub-classes (eg: {@link edu.sdsc.mbt.viewers.StructureViewer}, {@link edu.sdsc.mbt.viewers.SequenceViewer}, and {@link edu.sdsc.mbt.viewers.TreeViewer}). With as little as SIX LINES of MBT code, an application can be written which loads a protein structure and opens a 3D structure viewing windows which enables interactive rendering of a protein structure!
The high-level MBT objects (such as the {@link edu.sdsc.mbt.Structure}, {@link edu.sdsc.mbt.viewables.StructureDocument}, and {@link edu.sdsc.mbt.viewers.Viewer} classes) are plugged together using a flexible event mechanism. When subsequent data changes, user/Viewer events are generated, or other toolkit components generate an event, application components will automatically syncronise state. For example, when a new structure is loaded and added to an MbtController instance, all registered Viewer modules will update their display to reflect the new structure.
Here's a diagram which depicts the organization of a reasonably capable MBT application:
The MBT data model is really quite simple. There is one parent data class (the {@link edu.sdsc.mbt.StructureComponent} class) from which all other data objects are derived (this class will be explained later). The top-level container for a data-set is the {@link edu.sdsc.mbt.Structure} class. A {@link edu.sdsc.mbt.Structure} provides access to a set of tables of all sub-components (eg: {@link edu.sdsc.mbt.Atom}, {@link edu.sdsc.mbt.Residue}, etc). Each record is accessed with "array-like" methods (eg: getStructureComponentCount and getStructureComponent).