Source code for autojob.utils.optimize
"""This module defines utility functions for ASE Optimizers."""
from importlib import import_module
from typing import Any
from ase.optimize.optimize import Optimizer
from ase.utils.abc import Optimizable
[docs]
def configure_optimizer(
atoms: Optimizable, qualname: str, opt_params: dict[str, Any]
) -> Optimizer:
"""Configure an ASE Optimizer from a dictionary.
Args:
atoms: An :class:`~ase.utils.abc.Optimizable` object.
qualname: The fully qualified class name for the ASE
:class:`~ase.optimize.optimize.Optimizer`.
opt_params: A dictionary specifying initialization parameters for
the :class:`~ase.optimize.optimize.Optimizer`.
Returns:
An instantiated :class:`~ase.optimize.optimize.Optimizer`.
"""
*mod_parts, cls = qualname.split(".")
mod = import_module(".".join(mod_parts))
opt: Optimizer = getattr(mod, cls)(atoms, **opt_params)
return opt