BALL Biochemical Algorithms Library (BALL), ( molecular modelling, computational structural bioinformatics ) http://www.ball-project.org/
Developer(s) | BALL project team |
---|---|
Stable release |
1.4.2 / 28 January 2013
|
Preview release |
1.4.79 / 7 August 2014
|
Repository | packages |
Development status | Active |
Written in | C++, Python |
Operating system | Linux, Unix, macOS, Windows |
Platform | x86, x86-64 |
Available in | English |
Type | library or framework and 3D molecular modelling application |
License | LGPL |
BALL (pronounced "ball") is computer software consisting of the versatile C++ class framework Biochemical Algorithms Library (BALL), 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 (LGPL). BALLView is licensed under the GNU General Public License (GPL) 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.[1]
Contents
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 scripting 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 (+)
BALL library
The Biochemical Algorithms Library (BALL) 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
- General structure analysis
- Molecular mechanics
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:
# Example
file = PDBFile("test.pdb")
system = System()
file.read(system)
file.close()
# add missing information
# 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)
# check for charges, bond lengths,
# and missing atoms
checker = ResidueChecker(fragment_db)
system.apply(checker)
# create an AMBER force field
FF = AmberFF()
system.deselect()
FF.setup(system)
selector = Selector("element(H)")
system.apply(selector)
# optimize the hydrogen's positions
minimizer = ConjugateGradientMinimizer()
minimizer.setup(FF)
minimizer.setEnergyOutputFrequency(1)
minimizer.minimize(50)
# write a PDB File
outfile = PDBFile("test_out.pdb", File.MODE_OUT)
outfile.write(system)
outfile.close()
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.[2]
See also
- List of molecular graphics systems
- Comparison of software for molecular mechanics modeling
- Molecular design software
- Molecular graphics
- Molecule editor
References
Further reading
- Hildebrandt, Andreas; Dehof, Anna Katharina; Rurainski, Alexander; Bertsch, Andreas; Schumann, Marcel; Toussaint, Nora C; Moll, Andreas; Stockel, Daniel; Nickels, Stefan; Mueller, Sabine C; Lenhof, Hans-Peter; Kohlbacher, Oliver (2010). "BALL - Biochemical Algorithms Library 1.3". BMC Bioinformatics. 11: 531ff. PMC 2984589 . PMID 20973958. doi:10.1186/1471-2105-11-531.
- Kohlbacher, Oliver; Lenhof, Hans-Peter (2000). "BALL—rapid software prototyping in computational molecular biology". Bioinformatics. 16 (9): 815–24. PMID 11108704. doi:10.1093/bioinformatics/16.9.815.
- Moll, Andreas; Hildebrandt, Andreas; Lenhof, Hans-Peter; Kohlbacher, Oliver (2005). "BALLView: a tool for research and education in molecular modeling". Bioinformatics. 22 (3): 365–6. PMID 16332707. doi:10.1093/bioinformatics/bti818.
- Moll, Andreas; Hildebrandt, Andreas; Lenhof, Hans-Peter; Kohlbacher, Oliver (2006). "BALLView: an object-oriented molecular visualization and modeling framework". Journal of Computer-Aided Molecular Design. 19 (11): 791–800. PMID 16470421. doi:10.1007/s10822-005-9027-x.
External links
--------
Rapid Software Prototyping can significantly reduce development times in the field of Computational Molecular Biology and Molecular Modeling. BALL (Biochemical ALgorithms Library) is an application framework implemented in C++ that has been specifically designed for this purpose. It provides an extensive set of data structures as well as classes for Molecular Mechanics, advanced solvation methods, comparison and analysis of protein structures, file import/export, and visualization .
BALL has been carefully designed to be robust, easy to use, and open to extensions. Especially its extensibility which results from an object-oriented and generic programming approach distinguishes it from other software packages. BALL is well suited to serve as a public repository for reliable data structures and algorithms.
Based on BALL we have developed a stand-alone tool for molecular visualization, BALLView. BALLView makes the broad functionality available through an integrated user-friendly GUI
------------
Instructions, Documentation:
https://abibuilder.informatik.uni-tuebingen.de/archive/ball/doc/
https://github.com/BALL-Project/ball/wiki#build-from-source
-----
Download / Install:
BALL Releases:
https://abibuilder.informatik.uni-tuebingen.de/archive/ball/BALL/stable/Opens in a new windowSource Code Repositories:
https://github.com/BALL-Project/ballOpens in a new windowhttps://github.com/BALL-Project/ball_contrib
No comments:
Post a Comment