Merge pull request #3144 from RosettaCommons/vmullig/buried_unsat_score_incremental_merge_4
Incremental merge 4: Efficiency improvements for the buried_unsatisfied_penalty scoreterm
OK, now that it works, let's make it fast. This should significantly speed up the calculation, especially for large poses or large rotamer sets.
Tasks:
- [x] Add logic to update only relevant nodes during packer run.
- [x] Beauty.
- [x] Benchmark speedup -- how much does this help?
- Ugh -- without optimizations, it was resulting in a 67-fold slowdown on a naïve PackRotamers run with all canonicals. (The scaling seems quadratic -- this is why I wasn't seeing much slowdown on my small test cases).
- With optimizations, it's a 6-fold slowdown. This scales linearly with pose size (_i.e._ it remains a 6-fold slowdown even for a large pose).
- There may be additional optimizations possible.
- [x] Double-check unit tests.
- [x] Double-check integration tests.
- [x] This pull request must be merged after #3143.