Source code for stk.molecular.functional_groups.functional_groups.bromo

"""
Bromo
=====

"""

from __future__ import annotations

import typing

from ...atoms import Atom, Br
from .generic_functional_group import GenericFunctionalGroup


[docs]class Bromo(GenericFunctionalGroup): """ Represents a bromo functional group. The structure of the functional group is given by the pseudo-SMILES ``[bromine][atom]``. """
[docs] def __init__( self, bromine: Br, atom: Atom, bonders: tuple[Atom, ...], deleters: tuple[Atom, ...], placers: typing.Optional[tuple[Atom, ...]] = None, ) -> None: """ Initialize a :class:`.Bromo` instance. Parameters: bromine: The ``[bromine]`` atom. atom: The ``[atom]`` atom. bonders: The bonder atoms. deleters: The deleter atoms. placers: The placer atoms. If ``None`` the `bonders` will be used. """ self._bromine = bromine self._atom = atom super().__init__( atoms=(bromine, atom), bonders=bonders, deleters=deleters, placers=bonders if placers is None else placers, )
[docs] def get_bromine(self) -> Br: """ Get the ``[bromine]`` atom. Returns: The ``[bromine]`` atom. """ return self._bromine
[docs] def get_atom(self) -> Atom: """ Get the ``[atom]`` atom. Returns: The ``[atom]`` atom. """ return self._atom
[docs] def clone(self) -> Bromo: clone = super()._clone() clone._bromine = self._bromine clone._atom = self._atom return clone
def _with_ids( self, id_map: dict[int, int], ) -> Bromo: super()._with_ids(id_map) if (bromine_id := self._bromine.get_id()) in id_map: self._bromine = self._bromine.with_id(id_map[bromine_id]) if (atom_id := self._atom.get_id()) in id_map: self._atom = self._atom.with_id(id_map[atom_id]) return self
[docs] def with_ids( self, id_map: dict[int, int], ) -> Bromo: return self.clone()._with_ids(id_map)
def __repr__(self) -> str: return ( f"{self.__class__.__name__}(" f"{self._bromine}, {self._atom}, " f"bonders={self._bonders}, deleters={self._deleters})" )