Source code for pychum.main

from pathlib import Path

from ase.io import read as ase_read

from pychum.engine.eon import NWChemAtom, NWChemRenderer, NWChemSocketConfig
from pychum.engine.orca._renderer import OrcaInputRenderer
from pychum.engine.orca.config_loader import ConfigLoader


[docs] def render_orca(toml_path: Path) -> str: """Library function to render ORCA input from a TOML file.""" config_loader = ConfigLoader(toml_path) config = config_loader.load_config() renderer = OrcaInputRenderer(config) return renderer.render("base.jinja")
[docs] def render_nwchem( pos_file: Path, settings_path: Path, socket_address: str, unix_mode: bool, # noqa: FBT001 mem_in_gb: int, real_atoms: bool = False, # noqa: FBT001, FBT002 ) -> str: """Library function to render NWChem input.""" atoms = ase_read(pos_file) if real_atoms: nw_atoms = [ NWChemAtom(symbol=atom.symbol, x=atom.x, y=atom.y, z=atom.z) for i, atom in atoms ] else: nw_atoms = [ # This is intentionally broken, in that the positions are # overwritten by eOn on first run anyway, so we just need them to # not overlap NWChemAtom(symbol=atom.symbol, x=0.0, y=0.0, z=float(i)) for i, atom in enumerate(atoms) ] nw_config = NWChemSocketConfig( atoms=nw_atoms, settings_path=settings_path, socket_address=socket_address, unix_mode=unix_mode, mem_in_gb=mem_in_gb, ) renderer = NWChemRenderer(nw_config) return renderer.render("nwchem_socket.jinja")