libRosetta Users Guide

Features

Some of the noteworthy aspects and features of libRosetta are listed below.

Keys

  • Named lookup keys for atoms, bonds, residues, chi angles, etc.
  • Replaces "magic" type numbers that limit extensibility
  • Simple, uniform lookup syntax:
        aa[ CA ]         Atom
        aa[ Chi3 ]      Chi angle
  • Key containers provide simplicity of map lookup with the speed of vector lookup
  • Keys are sort of a souped up enumerators with class hierarchy, identifier strings, and a built-in system for key lookup from strings (for command line and input file processing)
  • Keys don't normally expose "magic" index numbers so code can't be written depending on them (which is a major Rosetta limitation)

Atom Types

  • Atom types are easy to add
  • Energy tables only created for atoms present in structures so adding atom types doesn't increase memory use

Residue Variants

  • Variant/NCAA residues are easy to add
  • Special residue types can be optionally linked in to a Rosetta build (pluggability)

Termini

  • Optional full termini support is intrinsic to residue objects
  • No termini tests sprinkled throughout code

Tetrads

  • Natural bisector-tied branch atom placement
  • No fake atoms needed at termini
  • Supports bond angle and branch atom placement as degrees of freedom

Options

  • New modern options system supporting nested option groupings
  • Smart option group context deduction allow short option names to be used
  • Options can be read from options files specified as @file on the command line
  • File/path options automatically converted to platform format
  • Fast option lookup based on named option keys
  • Option name errors detected at compile time
  • Generates full documentation in -help or Wiki table form
  • Can display all or specified options and their values

Performance (relative to classic Rosetta)

  • Refold is 2.5x faster
  • fullatom energy is substantially faster (1.8-2.3x faster for 100-600 residues) with improved scalability of O( N log N ) complexity instead of O( N2 )

Build Speed

  • Fast builds due to decoupled, interface-based design (< 4 min on a single processor Pentium 4 notebook)

Build Flexibility

  • Primary scalar types (Distance, Energy, Weight, etc.) are typedef names that allow libRosetta to be easily built with float or double precision for each or all the floating point types
Support | ©2007 Rosetta Commons