NAME
Chemistry::OpenSMILES::Aromaticity - Aromaticity handling routines
DESCRIPTION
Chemistry::OpenSMILES::Aromaticity encodes some aromaticity handling subroutines for aromatisation and kekulisation. Both implementations are experimental, handle only some specific cases and are neither stable nor bug-free, thus should be used with caution.
METHODS
- aromatise( $moiety )
-
Mark electron cycles as aromatic.
- kekulise( $moiety, $order_sub )
-
Find nonfused even-length aromatic cycles consisting only of B, C, N, P, S and mark them with alternating single and double bonds. Subroutine as well accepts an optional subroutine reference
$order_sub
, providing external order for atoms. This is needed to stabilise the algorithm, as otherwise the outcomes of bond assignment may turn out different.$order_sub
is called with an atom as$_[0]
and is expected to return a value providing a distinct order indication for every atom. These can be any scalar values, comparable using Perl'scmp
operator. If$order_sub
is not given, initial atom order in input is consulted. - electron_cycles( $moiety )
-
Find electron cycles according to "Finding Electron Cycles" algorithm from https://depth-first.com/articles/2021/06/30/writing-aromatic-smiles/. Use with caution: the implementation is experimental.