Pavel Afonine wrote:
The optimize_wxc and optimize_wxu features are useful, but it is difficult to use the result to define an improved fixed scale on subsequent rounds, without having to optimize every time. It is not obvious whether the scale written in the log represents the new wxc_scale, or if it is a multiplier versus the current wxc_scale. The log also truncates to 2 decimal places. In my case, I only get one significant digit from scale=0.05. I propose that the optimizations write something like "Optimal wxc_scale = 0.533".
This is a frequent question that I replied many times. The optimal weight that comes out of "optimize_wxc=true" (or "optimize_wxu=true") may significantly vary (or may not, it depends...) between macro-cycles or between phenix.refine runs. This is why the optimal weight value found at particular macro-cycle is not preserved. I can add an option so it gets preserved in .def file if a user specifically asks for this (adding it to my to-do list). I will change the output to the .log file to make this clear.
OK, I am asking to add it to the .def file. Even if the optimized scale is just written in the log, that would be very helpful. The documentation suggests that optimization is slow and is better to use only for later stages of refinement. At earlier stages of refinement, an optimized wxc_scale is almost certainly better than the hard-wired default, even if it is not optimized for every run. It makes a lot of sense to do an optimization intermittantly during the build process, so you can get an improved scale versus the default, with much less overhead than a full optimization every time. I thought that the reason PHENIX has both wxc and wxc_scale is because wxc is more variable and can be updated quickly, while wxc_scale varies much less. Even if wxc_scale can vary a lot, it would be nice to actually see the optimized value so you can tell whether that is actually the case for a given structure. Thanks Joe Krahn