Finding Stereoisomers of Molecules#
from rdkit import Chem
from stereomolgraph import StereoMolGraph
from stereomolgraph.experimental import generate_stereoisomers
from stereomolgraph.ipython import View2D
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
View2D.show_atom_numbers = True
View2D.show_h = False
View2D.generate_bond_orders = True # bond orders are not used internally
rdmol = Chem.AddHs(
Chem.MolFromSmiles("[CH]1([CH](C1C2[CH]([CH]2C(=O)O)C(=O)O)C(=O)O)C(=O)O")
)
smg = StereoMolGraph.from_rdmol(rdmol, stereo_complete=False)
smg
Construction from rdkit.Mol#
When constructing from an rdkit.Mol with stereo_complete=False, any atom without explicitly defined stereochemistry is treated as undefined.
Using generate_stereoisomers will enumerate all distinct stereoisomers without producing duplicates.
isomers = list(generate_stereoisomers(smg, enantiomers=True))
# enantiomes are removed
len(isomers)
10
for isomer in isomers:
isomer