BALL

BALL (Biochemical Algorithms Library) is a C++ library containing common algorithms used in biochemistry and bioinformatics. The library also has Python bindings. Among the supported systems are Linux, Solaris, Microsoft Windows. The library can be used for command-line utilities, but it also supports display with Qt and OpenGL.

There is a structure viewer developed by the same group of people, BALLView, which allows viewing PDB, HIN, and other formats. It is the visulization component of BALL. Both BALL and BALLView are available under LGPL and GPL licences. The programs are developed and maintained by Hans-Peter Lenhof, Oliver Kohlbacher, Andreas Hildebrandt and Andreas Moll. BALLView is an application written in C++ that uses BALL for molecular modeling and visualizing molecular models. It is available under the GPL lisence for Linux, Windows, and Mac OS.

Example
This small program reads PDB file and outputs names and positions of all atoms in human-readable format.

using namespace std; using namespace BALL; int main { // System is a basic data structure representing all molecules System sys; // Read a molecule from PDB file and add it to the system PDBFile pdb_file("input.pdb"); pdb_file >> sys; pdb_file.close; // Iterate over all atoms in the system AtomIterator ai; for(ai = sys.beginAtom; !ai.isEnd; ++ai) { // Get atom's position Vector3 v = ai->getPosition; // Print atom's name and atom's position cout << "Atom " << ai->getFullName << " is located at position <" << v.x           << ", " << v.y            << ", " << v.z            << ">" << endl; }  return 0; }
 * 1) include 