Merge pull request #346 from RosettaCommons/vmullig/mutate_bug
vmullig/mutate_bug
Trying to fix an irritating bug in the MutateResidue mover and elsewhere.
When a residue is mutated to another type, the default behaviour was for any atoms with matching names to have their positions preserved, and for any missing atoms to be rebuilt from ideal coordinates. This was fine for Y->F or F->Y mutations, but created serious problems when dissimilar residues had similar atom names. The new default behaviour will be to copy mainchain heavyatom positions only, with everything else built from ideal coordinates; chi values will then be copied from the old residue to the new. The old behaviour can be restored with a RosettaScripts tag when setting up the MutateResidues mover.
Tasks completed / TODO:
Overloaded copy_residue_coordinates_and_rebuild_missing_atoms() to have a version that takes a bool. False yields old behaviour, true yields new.
Set up new behaviour (rebuilding all but mainchain heavyatoms, copying chi values).
Created unit test for new behaviour.
Modified MutateResidue mover so that its settings can be set without invoking parse_my_tag() by functions called from parse_my_tag().
Updated MutateResidue mover and added flag to restore old behaviour.
Updated Remodel mover (really, the form_disulfide() function in core/conformation/util.cc).
Updated MutateResidue documentation.
Expected integration test changes due to this merge:
--remodel_disulfides_rosettascripts: Expected and desired change. The added disulfides now have beta-carbon protons in the right places.
--unfolded_state_energy_calc: Looking at the code, this calls the MutateResidue mover, so this is also expected. (The change is small.)
--msd_mover: The FindConsensusSequence mover that this test's script calls uses the MutateResidue mover, so this is also an expected change. (The change is very small.)