Source code for batter.orchestrate.backend
"""Utilities for configuring execution backends used by the orchestrator."""
from __future__ import annotations
from loguru import logger
from batter.exec.local import LocalBackend
MISSING_DEPENDENCY_MSG = (
"Required optional dependency '{name}' not found. "
"Install it to enable local execution handlers (e.g., `pip install {package}`). Note `kartograf` is only available with conda."
)
[docs]
def register_local_handlers(backend: LocalBackend) -> None:
"""Register built-in pipeline handlers on the local backend.
Parameters
----------
backend : LocalBackend
Backend instance that should receive the default handler mapping.
Raises
------
RuntimeError
If optional handler dependencies (for example ``openff-toolkit``) are missing.
"""
try:
from batter.exec.handlers.system_prep import system_prep as _system_prep
from batter.exec.handlers.system_prep_masfe import system_prep_masfe as _system_prep_masfe
from batter.exec.handlers.param_ligands import param_ligands as _param_ligands
from batter.exec.handlers.prepare_equil import prepare_equil_handler as _prepare_equil
from batter.exec.handlers.equil import equil_handler as _equil
from batter.exec.handlers.equil_analysis import equil_analysis_handler as _equil_analysis
from batter.exec.handlers.prepare_fe import prepare_fe_handler as _prepare_fe
from batter.exec.handlers.prepare_fe import prepare_fe_windows_handler as _prepare_fe_windows
from batter.exec.handlers.fe import fe_equil_handler as _fe_equil
from batter.exec.handlers.fe import fe_handler as _fe
from batter.exec.handlers.fe_analysis import analyze_handler as _analyze
except ModuleNotFoundError as exc:
missing = exc.name or "unknown"
raise RuntimeError(
MISSING_DEPENDENCY_MSG.format(
name=missing,
package="openff-toolkit"
if "openff" in missing
else missing,
)
) from exc
backend.register("system_prep", _system_prep)
backend.register("system_prep_asfe", _system_prep_masfe)
backend.register("param_ligands", _param_ligands)
backend.register("prepare_equil", _prepare_equil)
backend.register("equil", _equil)
backend.register("equil_analysis", _equil_analysis)
backend.register("prepare_fe", _prepare_fe)
backend.register("pre_prepare_fe", _prepare_fe)
backend.register("prepare_fe_windows", _prepare_fe_windows)
backend.register("fe_equil", _fe_equil)
backend.register("pre_fe_equil", _fe_equil)
backend.register("fe", _fe)
backend.register("analyze", _analyze)
logger.debug("Registered LOCAL handlers: {}", list(backend._handlers.keys()))