Source code for cgexplore._internal.terms.utilities
# Distributed under the terms of the MIT License.
"""Utilities module.
Author: Andrew Tarzia
"""
from collections import abc
import stk
from rdkit.Chem import AllChem
from .angles import FoundAngle
from .torsions import FoundTorsion
[docs]
def find_angles(molecule: stk.Molecule) -> abc.Iterator[FoundAngle]:
"""Find angles based on bonds in molecule."""
paths = AllChem.FindAllPathsOfLengthN(
mol=molecule.to_rdkit_mol(),
length=3,
useBonds=False,
useHs=True,
)
for atom_ids in paths:
atoms = tuple(molecule.get_atoms(atom_ids=list(atom_ids)))
yield FoundAngle(
atoms=atoms,
atom_ids=tuple(i.get_id() for i in atoms),
)
[docs]
def find_torsions(
molecule: stk.Molecule,
chain_length: int,
) -> abc.Iterator[FoundTorsion]:
"""Find torsions based on bonds in molecule."""
paths = AllChem.FindAllPathsOfLengthN(
mol=molecule.to_rdkit_mol(),
length=chain_length,
useBonds=False,
useHs=True,
)
for atom_ids in paths:
atoms = tuple(molecule.get_atoms(atom_ids=list(atom_ids)))
yield FoundTorsion(
atoms=atoms,
atom_ids=tuple(i.get_id() for i in atoms),
)