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