I've started to see some strange cases where MBAR (in pymbar 4.0) fails to converge (i.e. both the hybr and adaptive solvers in succesion), while UWHAM seems to converge ok and indicates reasonable overlap between states. In such cases, it seems that pymbar <4.0 also runs to convergence.
I have attached a set of u_kn and n_k from the gas phase leg of a hydration free energy calculation that exhibits this issue.
it looks like the issue in 4.x is due to the default hybr solver basically failing to find a solution and returning non-sensical f_k_nonzero, which then seeds the fallback adaptive solver with with a very wrong start which then propagates through. If I instead just force MBAR to start with the adaptive solver things seem to converge ok.
In general, it would be good to throw optionally throw an error if the solvers fail to converge, or at least have an attribute on MBAR that can be queried for if the solver succeeded.
I've started to see some strange cases where MBAR (in
pymbar 4.0
) fails to converge (i.e. both thehybr
andadaptive
solvers in succesion), while UWHAM seems to converge ok and indicates reasonable overlap between states. In such cases, it seems thatpymbar <4.0
also runs to convergence.I have attached a set of
u_kn
andn_k
from the gas phase leg of a hydration free energy calculation that exhibits this issue.repro.zip
The issue can then be observed by running:
it looks like the issue in
4.x
is due to the defaulthybr
solver basically failing to find a solution and returning non-sensicalf_k_nonzero
, which then seeds the fallbackadaptive
solver with with a very wrong start which then propagates through. If I instead just force MBAR to start with theadaptive
solver things seem to converge ok.In general, it would be good to throw optionally throw an error if the solvers fail to converge, or at least have an attribute on MBAR that can be queried for if the solver succeeded.