「view this page in B3 βῆτα server」

Revisions №59042

branch: master 「№59042」
Commited by: Andrew Leaver-Fay
GitHub commit link: 「8408ec878a834e3f」 「№1703」
Difference from previous tested commit:  code diff
Commit date: 2016-10-27 08:39:02

Merge pull request #1703 from RosettaCommons/aleaverfay/fix_mpm_premature_parsing The MPM's parse_my_tag function would exit/segfault if one of the inner objects being parsed needs to look at the Pose because the MPM was giving it an empty Pose. Previously, during parse_my_tag, the MultiplePoseMover would create (and then dispose of) a Mover for the inner parsed protocol. The rationale for this was to avoid the "die_for_unaccessed_options" behavior of Tag called by the outer ParsedProtocol. The idea was: go ahead and parse the inner set of Movers and Filters, and thereby read any and all options. Any un-read option would be found as the outer parsed protocol wrapped up. To create this temporary parsed protocol, the MultiplePoseMover created an empty Pose and passed it into the parsing of the inner parsed protocol. This empty Pose presents a problem, however, if a Mover in the inner parsed protocol wants to look at the first residue in chain 2. There is no chain 2! There isn't a chain 1! In this new implementation, the MultiplePoseMover simply marks all options of the input tag as read, to avoid the "die_for_unaccessed_options" behavior. During its apply function, if there are unaccessed options, then it will discover that, and exit. Oh, what a time to realize that there was a problem with your XML file! Imagine running a job for 24 hours, to have it die in the last 10 minutes because you spelled "scorefxn" wrong! It's still better, though, than taking the bad output and ordering genes, and wasting 3 months at the bench on a poor design. This fixes the bug that Franziska saw with an inner FastRelax mover that contains a MoveMap. (Incidentally, the move-map reading code really should do error checking on the input tags instead of seg faulting!)