-
Studer Gabriel authored
The main idea is to pull out the actual optimization procedure from the sidechain module in order to use it for other applications as well. The result is a GraphOptimizer object in the core module, that has a heavily reduced usage of pointer magic. Eigen matrices are used instead. Two bugs have been identified and solved in this procedure. - Pairwise energy calculation in RRMRotamerGroups. There is a check to skip the according edge if all of the absolute energy values are below a certain threshold. There was no absolute value calculation => some of the edges have been skipped if only negative pairwise energies have been present. This is relatively rare and had no too big impact on performance (by default we're using the flexible rotamer model anyway) - Edge decomposition bug. The edge decomposition removes edges if the removal can be compensated by adding single values to the solutions of the two connected nodes. The logic to decide whether an edge should be removed or not was correct, but the added values were partially wrong. This has a measurable impact on performance and we should consider a bugfix relase at some point.
d09775fd