Merge pull request #2816 from RosettaCommons/jadolfbr/glycan_mm_factory
Glycans in MoveMapFactory
The `MoveMapFactory` now deals with glycans properly in that it uses IUPAC definitions for chi/bb. Since Rosetta does not understand what a BB torsion is for glycans very well. This includes setting proper 'branch' torsions as well and differentiating from a proper 'chi' that we think of vs a proper 'bb' in glycan nomenclature.
This change allows us to use the MMFactory to properly select and minimize glycans. In combination with the GlycanResidueSelector, we now have full control of sane glycan torsional selection.
This PR separates out the core glycan MM code we had previously (and is covered with proper unit tests) so that it can be called independently of the`get_movemap_for_glycans` function.
@raemisch
@BrandonFrenz
@JWLabonte
Example Use in a script to do FastRelax on an H3 loop in addition to minimizing the neighboring glycan tree after threading a sequence:
```
<ROSETTASCRIPTS>
<SCOREFXNS>
</SCOREFXNS>
<RESIDUE_SELECTORS>
<Neighborhood name="nbrhood" resnums="%%start%%-132H"/>
<Not name="others" selector="nbrhood" />
<Index name="cst_residues" resnums="%%start%%-132H"/>
<Glycan name="glycan_tree" include_root="1" branch="1332A"/>
</RESIDUE_SELECTORS>
<TASKOPERATIONS>
<OperateOnResidueSubset name="turn_off_others" selector="others">
<PreventRepackingRLT/>
</OperateOnResidueSubset>
<RestrictToRepacking name="rtrp"/>
</TASKOPERATIONS>
<MOVE_MAP_FACTORIES>
<MoveMapFactory name="fr_mm_factory" bb="0" chi="0">
<Backbone residue_selector="cst_residues" />
<Chi residue_selector="nbrhood" />
<Backbone residue_selector="glycan_tree" />
</MoveMapFactory>
</MOVE_MAP_FACTORIES>
<FILTERS>
</FILTERS>
<MOVERS>
<SimpleThreadingMover name="threader" start_position="%%thread_start%%" thread_sequence="%%sequence%%" pack_neighbors="1" />
<FoldTreeFromLoops name="loopFT" loops="%%ft_start%%:133H:115H" add_cp_variants="1"/>
<FastRelax name="fast_relax" task_operations="rtrp,turn_off_others" movemap_factory="fr_mm_factory"/>
<AddConstraints name="add_dih_csts">
<DihedralConstraintGenerator name="dih_cst_phi" dihedral="phi" residue_selector="cst_residues" />
<DihedralConstraintGenerator name="dih_cst_psi" dihedral="psi" residue_selector="cst_residues" />
</AddConstraints>
<RemoveConstraints name="rm_csts" constraint_generators="dih_cst_phi,dih_cst_psi" />
</MOVERS>
<APPLY_TO_POSE>
</APPLY_TO_POSE>
<PROTOCOLS>
<Add mover_name="threader"/>
<Add mover_name="add_dih_csts"/>
<Add mover_name="loopFT" />
<Add mover_name="fast_relax"/>
<Add mover_name="rm_csts" />
</PROTOCOLS>
<OUTPUT />
</ROSETTASCRIPTS>
```