Source code for pantea.descriptors.acsf.symmetry
from abc import ABCMeta, abstractmethod
from typing import NamedTuple, Optional
from pantea.descriptors.acsf.cutoff import CutoffFunction
from pantea.logger import logger
from pantea.pytree import BaseJaxPytreeDataClass
from pantea.types import Array, Element
[docs]class BaseSymmetryFunction(BaseJaxPytreeDataClass, metaclass=ABCMeta):
"""
A base class for symmetry functions.
All symmetry functions (i.e. radial and angular) must derive from this base class.
"""
def __init__(self, cfn: CutoffFunction) -> None:
self.cfn: CutoffFunction = cfn
logger.debug(repr(self))
@abstractmethod
def __call__(self, *args, **kwargs) -> Array: ...
@property
def r_cutoff(self) -> float:
return self.cfn.r_cutoff
[docs]class NeighborElements(NamedTuple):
"""
Represent the chemical environment including neighbor elements.
"""
# central: Element
neighbor_j: Element
neighbor_k: Optional[Element] = None