Author Topic: BALLView is our standalone molecular modeling and visualization application  (Read 1545 times)

0 Members and 1 Guest are viewing this topic.

Software Santa

  • Administrator
  • *****
  • Posts: 4259
BALLView is our standalone molecular modeling and visualization application


BALLView is our standalone molecular modeling and visualization application. Furthermore it is also a framework for developing molecular visualization functionality. It is available free of charge under the GPL for Linux, Windows and MacOS.

  Design Goals

BALL has been designed to be easy to use, robust, open, and provide a broad functionality. This document gives more details about these design goals.

BALL has been designed as a tool for rapid software prototyping in molecular modeling and drug design. Its development started in 1996, initially as a tool box for protein-protein docking. It rapidly evolved into a large framework covering a broad range of applications. When designing BALL, we had four major design goals in mind.
Ease of use

Ease of use is crucial for the acceptance of a new tool, especially if this tool claims to be designed for Rapid Software Prototyping. First of all, the user should be able to use the software rather intuitively - as far as this is possible for a framework of this size. It should therefore employ a standardized and widely used programming language (we decided to use C++). Furthermore, it should provide an intuitive, well documented, and consistent interface. Here, consistency means that the user can generalize anything he learned to all parts of the framework. For example naming conventions should be globally applicable and functions with the same name should have the same or comparable effects.

Functionality is of obvious importance. We can only expect wide acceptance of our software, if it is able to save the potential user a major amount of time. Thus, it should provide most of the standard functionality and leave only the implementation of specialized or new techniques to the user. And even there the user should be able to take advantage of existing data structures to speed up the development.

Since we cannot provide all functionality and we also do not want to re-implement existing algorithms, it was also an important aim to provide a sufficient openness, meaning compatibility with other class libraries. For example, from the very start we planned the integration of LEDA , ABACUS , and CGAL , but also compatibility with the Standard Template Library. Furthermore, openness implies extendibility and modularity, i.e. it should be simple to add new functionality and data structures without changing the existing code.

The term robustness describes the code's ability to cope with unexpected or faulty data. A good example of such faulty data is the PDB file format. While PDB is the most common format for structural data of proteins and is well standardized, only very few files circulating among scientists adhere to this standard for historical as well as for practical reasons. Strange as it may seem, but the implementation of a robust code for reading these files is a very demanding task. Implementing a file reader accepting standard compliant files is simple enough, but is not sufficient as only very few files could be read. Reliable reading of non-compliant files requires quite some biochemical knowledge and non-trivial heuristics to extract as much of the data as possible.

  BALL provides sophisticated visualization tools, both for integration into user-defined applications and for our stand-alone viewer BALLView.



Although a large number of tools for the three-dimensional visualization of molecular structures exists, it often proved convenient to tailor a visualization tool specifically for a certain purpose. In BALL, we chose two complementary approaches. First, we wanted to give the user the full flexibility of a visualization framework, knowing very well that the development of such a user interface is a very time-consuming process. Second, we wanted to offer a very simple, albeit less powerful, interface that allows the user to concentrate on the core problem at hand and handle all visualization issues with as little overhead as possible.

the visualizaion component of BALL, BALLView, is based on the GUI toolkit QT and on OpenGL for three-dimensional rendering. It provides an extensive set of classes for the visualization of three-dimensional geometric objects, molecules (using a wide variety of models), and surfaces. The BALLView classes are QT widgets that may be integrated into any QT application. There are widgets for 3D structure viewers, for the visualization of one- and two-dimensional NMR spectra, ready-made dialogs for reading and writing molecular structures, and many more. Hence, the user's main task is the ``wiring'' of these components, i.e. implementing the interaction of these classes. For standard applications, the BALLView widgets take over most of this task. Each of these widgets creates its own menu entries (for example, a molecule viewer widget creates menu entries to change the representation of the molecule) and notifies all other BALLView widgets it is aware of of changes in its state. Thus, the implementation effort can be restricted to a bare minimum.