BALL


BALL is software consisting of the versatile C++ class framework Biochemical Algorithms Library, a set of algorithms and data structures for molecular modelling and computational structural bioinformatics, a Python interface to this library, and a graphical user interface to BALL, the molecule viewer BALLView.
BALL has evolved from a commercial product into free-of-charge open-source software licensed under the GNU Lesser General Public License. BALLView is licensed under the GNU General Public License license.
BALL and BALLView have been ported to the operating systems Linux, macOS, Solaris, and Windows.
The molecule viewer BALLView, also developed by the BALL project team, is a C++ application of BALL using Qt, and OpenGL with the real-time ray tracer RTFact as render back-ends. For both, BALLView offers three-dimensional and stereoscopic visualizing in several different modes, and applying directly the algorithms of the BALL library via its graphical user interface.
The BALL project is developed and maintained by groups at Saarland University, Mainz University, and University of Tübingen. Both the library and the viewer are heavily used for education and research. BALL packages have been made available in the Debian project in April 2010.

Key features

Experimental function of the next version
Function of BALLView

BALL library

The Biochemical Algorithms Library is a comprehensive rapid application development framework for structural bioinformatics. It has been carefully designed to meet the needs of programming experts and novices. Users can exploit BALL's rich functions, while being offered an extensive framework of C++ data structures and algorithms, and a variety of standard structural bioinformatics algorithms. New algorithms can be added easily.
Using BALL as a programming toolbox allows greatly reducing application development times and helps ensure stability and correctness by avoiding often error-prone reimplementation of complex algorithms and replacing them with calls into a library that has been well-tested by many developers.
;File import-export:
BALL supports a rich variety of molecular file formats like PDB, MOL2, MOL, HIN, XYZ, KCF, SD, AC, and secondary data sources like DCD, DSN6, GAMESS, JCAMP, SCWRL, and TRR. Molecules can also be created using BALL's peptide builder, or based on SMILES expressions.
;General structure analysis:
Further preparation and structure validation is enabled by, e.g., Kekuliser-, Aromaticity-, Bondorder-, HBond-, and Secondary Structure processors. A Fragment Library automatically infers missing information, e.g., a protein's hydrogens or bonds. A Rotamer Library allows determining, assigning, and switching between a protein's most likely side chain conformations. BALL's Transformation processors guide generation of valid 3D structures. Its selection mechanism enables to specify parts of a molecule by simple expressions. This selection can be used by all modeling classes like the processors or force fields.
;Molecular mechanics:
Fast and stable implementations of the popular force fields CHARMM, Amber, and MMFF94 can be combined with BALL's minimizer and simulation classes.
A variety of standard structural bioinformatics algorithms are offered and new algorithms can be easily added.

Example

The following program reads a PDB file, adds missing information like bonds and hydrogens, optimizes the hydrogen positions using the AMBER force field, and writes the resulting molecule into a second pdb file.

using namespace std;
using namespace BALL;
int main

Python interface

SIP is used to automatically create Python classes for all relevant C++ classes in the BALL library to allow for the same class interfaces. The Python classes have the same name as the C++ classes, so porting code that uses BALL from C++ to Python, and vice versa, is usually a trivial task.
For instance, the above C++ code translates to:

  1. Example
file = PDBFile
system = System
file.read
file.close
  1. Add missing information
  2. e.g. hydrogens and bonds.
fragment_db = FragmentDB
system.apply
system.apply
system.apply
  1. Check for charges, bond lengths,
  2. and missing atoms.
checker = ResidueChecker
system.apply
  1. Create an AMBER force field.
FF = AmberFF
system.deselect
FF.setup
selector = Selector
system.apply
  1. Optimize the hydrogen's positions.
minimizer = ConjugateGradientMinimizer
minimizer.setup
minimizer.setEnergyOutputFrequency
minimizer.minimize
  1. Write a PDB file.
outfile = PDBFile
outfile.write
outfile.close

The Python interface is fully integrated into the viewer application BALLView and thus allows for direct visualization of results computed by python scripts. Also, BALLView can be operated from the scripting interface and recurring tasks can be automated.

BALLView

BALLView is BALL's standalone molecule modeling and visualization application. It is also a framework to develop molecular visualization functions.
BALLView offers standard visualization models for atoms, bonds, surfaces, and grid based visualization of e.g., electrostatic potentials. BALLView allows loading several molecules at the same time and all representations can be hidden or shown at will.
A large part of the functionality of the library BALL can be applied directly to the loaded molecule in BALLView.
BALLView supports several modern visualization and input methods like, for example, different stereo modes, space navigator, and VRPN-supported Input devices.
At CeBIT 2009, BALLView was prominently presented as the first complete integration of real-time ray tracing technology into a molecular viewer and modeling tool.