BALL
Encyclopedia
The open source project BALL consists of the versatile C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 class framework BALL (Biochemical Algorithms Library), a library of algorithms and data structures targeting molecular modelling
Molecular modelling
Molecular modelling encompasses all theoretical methods and computational techniques used to model or mimic the behaviour of molecules. The techniques are used in the fields of computational chemistry, computational biology and materials science for studying molecular systems ranging from small...

 and computational structural bioinformatics
Structural bioinformatics
Structural bioinformatics is the branch of bioinformatics which is related to the analysis and prediction of the three-dimensional structure of biological macromolecules such as proteins, RNA, and DNA...

, a Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 interface to this library and the open source graphical interface to BALL, the molecular viewer BALLView (also open source).

The library BALL is supplemented with a Python interface for scripting functionality.
In addition, BALL offers command line utilities.

BALL has been ported to the operating systems Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, Solaris, Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 and MacOS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

.
BALL uses Qt as well as OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

. BALL has evolved from a commercial product
into a free-of-charge, open source software licensed under the GNU Lesser General Public License
GNU Lesser General Public License
The GNU Lesser General Public License or LGPL is a free software license published by the Free Software Foundation . It was designed as a compromise between the strong-copyleft GNU General Public License or GPL and permissive licenses such as the BSD licenses and the MIT License...

 (LGPL).

The applied via BALLView’s graphical user interface.

BALLView uses OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

 and the real time ray tracer RTFact as render backends
Rendering (computer graphics)
Rendering is the process of generating an image from a model , by means of computer programs. A scene file contains objects in a strictly defined language or data structure; it would contain geometry, viewpoint, texture, lighting, and shading information as a description of the virtual scene...

.
For both BALLView offers stereoscopic visualization in several different modes.

BALLView is a C++ application of BALL and is available under the GPL license for Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, Solaris
Solaris Operating System
Solaris is a Unix operating system originally developed by Sun Microsystems. It superseded their earlier SunOS in 1993. Oracle Solaris, as it is now known, has been owned by Oracle Corporation since Oracle's acquisition of Sun in January 2010....

, Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, and MacOS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

.

The BALL project is developed and maintained by groups at Saarland University
Saarland University
Saarland University is a university located in Saarbrücken, the capital of the German state of Saarland, and Homburg. It was founded in 1948 in Homburg in co-operation with France and is organized in 8 faculties that cover all major fields of science...

, Mainz University, and University of Tübingen.
Both the library and the viewer are heavily used for education and research alike. BALL packages have been made available in the Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...

 project in 04/2010.

Key features

  • Interactive molecular drawing and conformational editing (+)
  • Reading and writing of molecular file formats (PDB, MOL2, MOL, HIN, XYZ, KCF, SD, AC)
  • Reading secondary data sources e.g. (DCD, DSN6, GAMESS, JCAMP, SCWRL, TRR)
  • Generating molecules from and matching of SMILES- and SMARTS expressions to molecules
  • Geometry optimization
  • Minimizer and molecular dynamics classes
  • Support for force fields (MMFF94, AMBER, CHARMM) for scoring and energy minimization
  • Python Interface and srcripting functionality
  • Plugin infrastructure (3D Space-Navigator, WII-based head tracking*, OpenSim*)
  • Molecular graphics (3D, stereoscopic viewing, ray tracing*)(+)
  • comprehensive documentation (Wiki, code snipets, online class documentation, bug tracker)
  • comprehensive regression tests
  • BALL project format for presentations and collaborative data exchange (+)
  • QSAR*
  • NMR
  • editable shortcuts (+)


(*) Experimental functionality of the next version

(+) functionality of BALLView

BALL library

The Biochemical Algorithms Library BALL is a comprehensive rapid application development framework for structural bioinformatics. BALL has been carefully designed to address programming experts as well as novices. Users can take advantage of BALL's rich functionality while being offered an extensive framework of C++ data structures and algorithms. A variety of standard structural bioinformatics algorithms are offered and new algorithms can be easily added.

Using BALL as a programming toolbox does not only allow to greatly reduce application development times but also helps in ensuring stability and correctness by avoiding the error-prone reimplementation of complex algorithms and replacing them with calls into the
library that has been well-tested by a large number of developers.

File Import/Export:
BALL supports a rich variety of molecular file formats like PDB, MOL2, MOL, HIN, XYZ, KCF, SD, AC as well as 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 (SMILES, SMARTS, element types). 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 (steepest decent, conjugate gradient, L-BFGS, and shifted L-VMM).

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
{
// read a PDB file
PDBFile file("test.pdb");
System S;
file >> S;
file.close;

// add missing information
// e.g. hydrogens and bonds
FragmentDB fragment_db("");
S.apply(fragment_db.normalize_names);
S.apply(fragment_db.add_hydrogens);
S.apply(fragment_db.build_bonds);

// check for charges, bond lengths,
// and missing atoms
ResidueChecker checker(fragment_db);
S.apply(checker);

// create an AMBER force field
AmberFF FF;
S.deselect;
FF.setup(S);
Selector selector("element(H)");
S.apply(selector);

// optimize the hydrogen's positions
ConjugateGradientMinimizer minimizer;
minimizer.setup(FF);
minimizer.setEnergyOutputFrequency(1);
minimizer.minimize(50);

// write a PDB File
file.open("test_out.pdb", ios::out);
file << S;
file.close;
}

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("test.pdb")
system = System
file.read(system)
file.close
  1. add missing information
  2. e.g. hydrogens and bonds

fragment_db = FragmentDB("")
system.apply(fragment_db.normalize_names)
system.apply(fragment_db.add_hydrogens)
system.apply(fragment_db.build_bonds)
  1. check for charges, bond lengths,
  2. and missing atoms

checker = ResidueChecker(fragment_db)
system.apply(checker)
  1. create an AMBER force field

FF = AmberFF
system.deselect
FF.setup(system)
selector = Selector("element(H)")
system.apply(selector)
  1. optimize the hydrogen's positions

minimizer = ConjugateGradientMinimizer
minimizer.setup(FF)
minimizer.setEnergyOutputFrequency(1)
minimizer.minimize(50)
  1. write a PDB File

outfile = PDBFile("test_out.pdb", File.MODE_OUT)
outfile.write(system)
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.
In addition, BALLView can be operated from the scripting interface and recurring tasks can be automated.

BALLView

BALLView is BALL’s standalone molecular modeling and visualization application. Furthermore, it is also a framework for developing molecular visualization functionality.

BALLView offers standard visualization models for atoms, bonds, and surfaces as well as grid based visualization for e.g. electrostatic potentials. BALLView allows to load a number of 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 a number of modern visualization and input methods like, e.g., different stereo modes, space navigator, and VRPN-supported Input devices.

At CEBIT 2009, for BALLView was prominently presented as the first complete integration of real-time ray tracing technology into a molecular viewer and modelling tool.

See also

  • List of molecular graphics systems
  • List of software for molecular mechanics modeling
  • Molecular graphics
    Molecular graphics
    Molecular graphics is the discipline and philosophy of studying molecules and their properties through graphical representation. IUPAC limits the definition to representations on a "graphical display device"...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK