libRosetta Users Guide

Source Organization

Directory Tree

The libRosetta source code is partitioned into packages by subsystem. Each package is layered to separate out the abstract interfaces that users need from implementation details and to group sources by category so that no directory is too large. Object-oriented systems tend to have many small files and a lot of "glue" code to express the type relationships and libRosetta is no exception. The organization of libRosetta is designed to let developers focus on the subset of sources that is relevant to their task. But a system of this size can seem complex initially, especially to developers used to procedural code so let's take a quick tour.

The full libRosetta directory tree is shown on the right with different types of directories color coded:

  interface     Interfaces: Show services a type provides
  keys            Named lookup keys for the package
  internal      Internal implementation details: How the type carries out the services

The major packages in libRosetta are shown below:

   rosetta
    ├───chemical        Atom properties
    ├───conformation    
    │ ├───amino
    │ ├───dna
    │ ├───nucleic
    │ └───protein
    ├───io              I/o classes and functions
    ├───options         Program options definitions
    └───scoring         Energy and scoring

Users normally only need to know what services a type provides and that only requires looking at the interface classes. For example, if we want to work with proteins, amino acids, and the basic conformation types that make them up (Atom, Bond, BondAngle, TorsionAngle, etc.) we can focus on this subtree of directories:

   rosetta
    └───conformation
      ├───amino
      │ ├───keys
      └───protein

We might need to refer to some of the key collections in the amino/keys directory for named lookup operations although the common keys have predictable names like CA, NE2, CA_CB, Chi1, and HIS (and the compiler will tell you if you try to use a non-existent key).

Related Pages

Class Design    Class hierarchies used in libRosetta

Source Code    Naming and organization in the source with a sample interface class

Source Browsing   How to set up emacs to help browse libRosetta

 
    rosetta
     ├───chemical
     │ ├───compound
     │ │ ├───internal
     │ │ └───keys
     │ └───element
     │   ├───internal
     │   └───keys
     ├───conformation
     │ ├───amino
     │ │ ├───backbone
     │ │ │ ├───internal
     │ │ │ └───keys
     │ │ ├───idealization
     │ │ │ └───keys
     │ │ ├───internal
     │ │ ├───keys
     │ │ └───sidechain
     │ │   ├───internal
     │ │   └───keys
     │ ├───builder
     │ ├───dna
     │ │ ├───internal
     │ │ └───keys
     │ ├───idealization
     │ │ └───internal
     │ ├───internal
     │ ├───keys
     │ ├───nucleic
     │ │ ├───backbone
     │ │ │ ├───internal
     │ │ │ └───keys
     │ │ ├───internal
     │ │ ├───keys
     │ │ └───sidechain
     │ │   ├───internal
     │ │   └───keys
     │ ├───oriented
     │ └───protein
     │   ├───internal
     │   └───keys
     ├───io
     │ ├───database
     │ └───pdb
     ├───options
     │ └───keys
     └───scoring
       ├───dunbrack
       ├───H_bonds
       └───io
Support | ©2007 Rosetta Commons