Source code for bbprep._internal.selectors.binders

from collections import abc

import stk

from .selector import Selector


[docs] class BindersSelector(Selector): """Select atom ids in stk molecules by binders."""
[docs] def select_atoms(self, molecule: stk.BuildingBlock) -> tuple[int, ...]: if molecule.get_num_functional_groups() == 0: msg = "Molecule has zero functional groups." raise ValueError(msg) atoms = [ id_ for fg in molecule.get_functional_groups() for id_ in fg.get_bonder_ids() # type: ignore[attr-defined] ] return tuple(atoms)
[docs] def yield_stepwise( self, molecule: stk.BuildingBlock, ) -> abc.Iterator[tuple[int, ...]]: if molecule.get_num_functional_groups() == 0: msg = "Molecule has zero functional groups." raise ValueError(msg) for fg in molecule.get_functional_groups(): atoms = list(fg.get_bonder_ids()) # type: ignore[attr-defined] yield tuple(atoms)