Source code for httk.atomistic.sites_api

"""
The minimal canonical sites interface for httk-atomistic.
"""

import fractions
from abc import ABC, abstractmethod

from httk.core import FracVector


[docs] class SitesAPI(ABC): """ Abstract base class for the canonical sites interface. It declares the single ``reduced_coords`` accessor (the exact Nx3 rational :class:`~httk.core.FracVector` of reduced coordinates) that every sites backend produces from its own native representation and every sites view builds its presentation from. This is the single interchange format; there is no pairwise conversion between backends. """ @property @abstractmethod
[docs] def reduced_coords(self) -> FracVector: raise NotImplementedError
@property
[docs] def precision(self) -> fractions.Fraction | None: """How precisely the coordinates were stated, in fractional units, or ``None``. Fractional, not a length: reduced coordinates are dimensionless and a ``Sites`` has no cell to convert with. :meth:`~httk.atomistic.Structure.cartesian_precision` does the conversion, where the cell is known. Concrete rather than abstract, so a backend with no source of precision inherits ``None`` instead of breaking. """ return None