oqp.library.neb_utils

Dependency-light helpers for geomeTRIC NEB endpoint paths.

Attributes

BOHR_TO_ANGSTROM

Classes

NEBImage

Functions

kabsch_align(→ list[list[float]])

interpolate_xyz_endpoints(→ list[NEBImage])

write_neb_xyz(→ pathlib.Path)

Module Contents

BOHR_TO_ANGSTROM = 0.52917721092
class NEBImage
One NEB path image in user-facing Angstrom coordinates.
symbols: list[str]
coordinates_angstrom: list[list[float]]
kabsch_align(reference: Iterable[Iterable[float]], mobile: Iterable[Iterable[float]]) list[list[float]]
Rigidly align ``mobile`` coordinates onto ``reference``.

Coordinates may use any common unit.  The returned coordinates retain the
reference centroid, and the fitted transform is constrained to a proper
rotation so a reflection cannot change molecular handedness.
interpolate_xyz_endpoints(reactant_xyz: str | pathlib.Path, product_xyz: str | pathlib.Path, nimage: int, align: bool = False) list[NEBImage]
Return linearly interpolated NEB images including both endpoints.

Input and output coordinates are Angstrom, matching OpenQP XYZ/system input
conventions. Atom symbols/count/order must match exactly so each image can
be evaluated on the same state-specific surface.  With ``align=True``, the
product endpoint is first rigidly superimposed on the reactant, removing
overall translation and rotation before interpolation.
write_neb_xyz(path: str | pathlib.Path, symbols: Iterable[str], images_bohr: Iterable[Iterable[float]], energies: Iterable[float] | None = None) pathlib.Path
Write a final NEB path as a standard multi-frame XYZ file.

``images_bohr`` accepts flat ``3*natom`` arrays or ``(natom, 3)`` arrays.
Optional energies are written in Hartree in each frame's comment line.