Source code for stko._internal.molecular.torsion.torsion

import logging
from collections import abc

import stk

logger = logging.getLogger(__name__)


[docs] class Torsion: """Represents a torsion angle in a molecule. Parameters: atom1: First atom in torsion. atom2: Second atom in torsion. atom3: Third atom in torsion. atom4: Fourth atom in torsion. """ def __init__( self, atom1: stk.Atom | None, atom2: stk.Atom | None, atom3: stk.Atom | None, atom4: stk.Atom | None, ) -> None: self._atom1 = atom1 self._atom2 = atom2 self._atom3 = atom3 self._atom4 = atom4
[docs] def get_atoms(self) -> tuple[stk.Atom | None, ...]: return ( self._atom1, self._atom2, self._atom3, self._atom4, )
[docs] def get_atom_ids(self) -> tuple[int, ...]: return tuple( atom.get_id() # type: ignore[union-attr] for atom in self.get_atoms() )
def __iter__(self) -> abc.Iterator[stk.Atom | None]: return iter(self.get_atoms()) def __str__(self) -> str: return ( f"{self.__class__.__name__}({self._atom1}, " f"{self._atom2}, {self._atom3}, {self._atom4})" ) def __repr__(self) -> str: return str(self)