Source code for koopmans.input_file.atomic_positions

"""Input schema for atomic positions."""

from typing import Annotated, Literal

from pydantic import BeforeValidator

from koopmans.base import BaseModel
from koopmans.input_file._utils import tidy_units

__all__ = ["AtomicPositionsInput"]


[docs] class AtomicPositionsInput(BaseModel): """Input schema for specifying atomic positions in a structure.""" positions: list[tuple[str, float, float, float]] units: Annotated[Literal["crystal", "ang", "bohr", "alat"], BeforeValidator(tidy_units)] = ( "alat" )