Merge pull request #2086 from RosettaCommons/jadolfbr/glycan_relax2
Glycan Relax - Version 2
his PR adds a new protocol for modeling glycans, GycanTreeRelax.
This protocol models glycan trees from the root of the glycan trees out to the foliage using virtual residues to model outward. This protocol significantly decreases the energy of final de-novo modeled glycans and fixes many of the pathologies associated with the original version when used on every residue, especially the roots. If you are modeling glycans, this is the protocol you want to use.
@raemisch @JWLabonte @dwkulp
Add integration test for this protocol.
Other integration test changes are cosmetic from increased debugging output with debug tracer for MoverContainer.
Here is the general description:
Brief
===
A protocol for optimizing glycan trees using GlycanRelax from the base of the tree out to the leaves.
Works by making all other residues virtual except the ones it is working on (current Layer).
GENERAL ALGORITHM
==================
We start at the roots, and make all other glycan residues virtual.
We first model towards the leaves and this is considered the forward direction.
GlycanRelax is used for the actual modeling, we only model a layer at a time, until we reach the tips.
If more than one round is set, the protocol will move backwards on the next round, from the leafs to the roots.
A third round will involve relaxation again in the forward direction.
So we go forward, back, forward, etc. for how ever many rounds you set.
QUECHING
=========
By default, we model all glycans simultaneously. First, all glycan roots (the start of the tree), and slowly unvirtualize all glycan residues, while only modeling each layer.
Alternatively, we can choose a particular glycan tree, run the algorithm, and then choose another glycan tree randomly until all glycan trees have been optimized.
Here, we call this quenching.
GLYCAN LAYERS
=============
Draw a tree on a paper. We start with the beginning N residues, and work our way out towards the leaves.
Layers are defined by the glycan residue distance to the rooot. This enables branching residues to be considered the same layer conceptually and computationally, and allows them to be modeled together.
**--LAYER SIZE--**
The distance that make up a layer. If we have a distance of 2,
we first model all glycans that are equal to or less than 2 residue distance to the root.
We then slide this layer up. So we take all residues that have a distance between 3 and 1, and so on.
**--WINDOW SIZE--**
The layers are slid down throught the tree of the glycan. The window size represents the overlap in the layers.
A window size of 1, means that the last residue (or residues of layer 1) from the last modeling effort, will be used again as part of the next layer. A window size of 0, means that no residues will be re-modeled.
Typically, we would want at least a window size of 1.