Merge pull request #3648 from RosettaCommons/roccomoretti/dd_bugfix
Foldit: Fixes for various issues which affect drug design puzzles.
RELEASE NOTES:
* Better handling of molecules in small molecule design puzzles, leading to fewer crashes and fewer unwarranted "Modification is not chemically feasible!" messages.
* Various crash fixes.
Merge pull request #3649 from RosettaCommons/roccomoretti/interactive_fix_mixed_disulfides
Foldit: Fix crash with mixed disulfides.
We were getting a fair number of crashes due to 'unknown atom_name: SG in residue CYS'.
This looks to be due to a location in src/interactive/util/ReferencePoseInfo.cc
which may be crashing when it gets a pose with mixed centroid/fullatom residue types.
Fix this by skipping the detection in cases where we have mixed modes.
Merge pull request #3597 from RosettaCommons/roccomoretti/interactive_roscriptfilter_fix
Foldit: Speed up RoScriptScoreFilter, Symmetry
Symmetry in Foldit was slow because our resymmetrization used one-by-one xyz resets, rather than a batch one. (Thanks @vmullig for the pointer)
The RoScriptScoreFilter in Foldit was slow for two reasons.
1. There's a unnecessary pose copy in a pass-by-value call. (Probably 2/3rds of the time)
2. The get_representative_type_aa() call in can_design() was spending a bunch of time in apply_metapatches_recursively(). We probably don't need to check metapatches here, so we can add a facility to skip the check.
This PR Fixes both issues.
RELEASE NOTES: Fixed bugs which were slowing down symmetry puzzles.
Merge pull request #3580 from RosettaCommons/roccomoretti/interactive_lua_bonus_filter
Foldit: Fix issue with Lua scripting and Condition Filters
With the filter re-write, attempting to use on a filter which is not a BonusFilter will result in a crash of Foldit as a whole. Update things such that it just raises an error within Lua itself. Additionally, add a function which will allow scripts to tell if a given filter will raise such an error when passed to GetBonus().
Release Notes:
* Lua: Fix filter.GetBonus() to raise an error rather than crashing when passed the Exploration filter.
* Lua: Add a filter.HasBonus() which returns true if filter.GetBonus() returns a value, false otherwise.
Merge pull request #3518 from RosettaCommons/roccomoretti/interactive_thread_fixes
Foldit: Fix threading issues found with Clang Thread Sanitizer
Using the Thread Sanitizer from Clang 7, I identified a number of locations where we had potential deadlock issues, as well as some locations where the Thread Sanitizer reported potential data races. This PR doesn't fix all the issues identified by the Thread Sanitizer (there are still some potential race conditions with the sound and the graphics subsystems, and with logging file output, as well as potential issues where I wasn't testing).
Release Note: Fixed latent multithreading bug which resulted in Foldit sometimes hanging.