libRosetta Users Guide

libRosetta Classes

libRosetta Class Hierarchies

libRosetta uses the relationships between its classes to express the relationships between the entities used in Rosetta. These relationships are handled in classic Rosetta by explicit type flag tests that have become hard to maintain as the complexity of Rosetta's types and special cases has grown. To eliminate this limitation libRosetta adds a "vertical" type relationship framework to the "horizontal" algorithmic framework. This will look strange at first to developers used to the flat design of classic Rosetta and it takes a little time to understand where things are now and what (small) subset of this hierarchy a user needs to use the library. Tools for class browsing are also a big help in jumping to the definitions of variables and functions.

The class relationships in libRosetta are intentionally not at all exotic. The types and their relationships should seem straightforward to Rosetta developers: an AminoAcid is a type of Residue, a Protein is a type of Polymer, which is a type of Molecule, and so forth. Some extra internal classes are present mostly to let us share common code: take a look at the Class Design page to get a sense of what is there and why. With this basic type system libRosetta can remove many of the barriers to research that a procedural system will present when the application complexity reaches the level of Rosetta.

Here are UML class diagrams for some of the primary libRosetta class hierarchies. The Doxygen source documentation should be consulted to see the complete class relationships.

Dot/Atom/Centroid

We call the abstract point object a Dot.


Line/Link/Bond

We call the abstract association linkage between 2 Dots a Line. We use ChemicalBond for any kind of bond and Bond for covalent bonds.


LineAngle/LinkAngle/BondAngle

These are 3 Dot constructs that represent the angle between 2 Lines that connect to the same Dot.


Quad/TorsionAngle/Tetrad

These are linear or tetrahedral constructs between 4 Dots and the Lines that connect them.


Polymer/Protein/DNA


Residue/AminoAcid/NucleicAcid

   
Support | ©2007 Rosetta Commons