find_aromatic_rings#

biotite.structure.find_aromatic_rings(atoms)[source]#

Find (anti-)aromatic rings in a structure.

Parameters:
atomsAtomArray or AtomArrayStack

The atoms to be searched for aromatic rings. Requires an associated BondList.

Returns:
ringslist of ndarray

The indices of the atoms that form aromatic rings. Each ring is represented by a list of indices. Only rings with minimum size are returned, i.e. two connected rings (e.g. in tryptophan) are reported as separate rings.

Notes

This function does not distinguish between aromatic and antiaromatic rings. All cycles containing atoms that are completely connected by aromatic bonds are considered aromatic rings.

The PDB Chemical Component Dictionary (CCD) does not identify aromatic rings in all compounds as such. Prominent examples are the nucleobases, where the 6-membered rings are not flagged as aromatic.

Examples

>>> nad = residue("NAD")
>>> rings = find_aromatic_rings(nad)
>>> print(rings)
[array([41, 37, 36, 35, 43, 42]), array([19, 18, 16, 15, 21, 20]), array([12, 13, 14, 15, 21])]
>>> for atom_indices in rings:
...     print(np.sort(nad.atom_name[atom_indices]))
['C2N' 'C3N' 'C4N' 'C5N' 'C6N' 'N1N']
['C2A' 'C4A' 'C5A' 'C6A' 'N1A' 'N3A']
['C4A' 'C5A' 'C8A' 'N7A' 'N9A']