Quantum-Accelerators/quacc

NewtonNet model settings do not always get correctly passed to `_add_stdev_and_hess` or `_get_hessian`

Andrew-S-Rosen opened this issue · 1 comments

Details about the quacc environment

  • quacc version: 0.9.1
  • Python version: 3.11

What is the issue?

In the NewtonNet recipes, the model path and settings paths for the NewtonNet model architecture are (by default) pulled from the global quacc settings. However, if the user passes model_path or settings_path as **calc_kwargs to the recipe, it will override the defaults.

calc_defaults = {
"model_path": SETTINGS.NEWTONNET_MODEL_PATH,
"settings_path": SETTINGS.NEWTONNET_CONFIG_PATH,
}
calc_flags = recursive_dict_merge(calc_defaults, calc_kwargs)

This is all perfectly fine, but if a user passes a custom model_path or settings_path, this is not used by _add_stdev_and_hess because that function is hard-coded to use only the global settings:

atoms.calc = NewtonNet(
model_path=SETTINGS.NEWTONNET_MODEL_PATH,
settings_path=SETTINGS.NEWTONNET_CONFIG_PATH,
)

This can cause a potential conflict. Note that the same is true for _get_hessian():

ml_calculator = NewtonNet(
model_path=SETTINGS.NEWTONNET_MODEL_PATH,
settings_path=SETTINGS.NEWTONNET_CONFIG_PATH,
)

Tagging @samblau and @kumaranu.

How can we easily reproduce the issue?

from quacc.recipes.newtonnet.core import relax_job
from ase.build import molecule

atoms = molecule("CH4")
model_path = "/my/custom/model/path" # not in settings
relax_job(atoms, model_path=model_path)

I have address it for _get_hessian. Not sure if anything else is remaining as well.