Source code for mchammer._internal.utilities

"""This module defines general-purpose objects, functions and classes."""

from __future__ import annotations

from typing import TYPE_CHECKING

from scipy.spatial.distance import euclidean

if TYPE_CHECKING:
    import numpy as np


[docs] def get_atom_distance( position_matrix: np.ndarray, atom1_id: int, atom2_id: int, ) -> float: """Return the distance between two atoms.""" return float( euclidean(u=position_matrix[atom1_id], v=position_matrix[atom2_id]) )
[docs] def get_bond_vector( position_matrix: np.ndarray, bond_pair: tuple[int, int], ) -> np.ndarray: """Get vector from atom1 to atom2 in bond.""" atom1_pos = position_matrix[bond_pair[0]] atom2_pos = position_matrix[bond_pair[1]] return atom2_pos - atom1_pos