from rdkit import Chem from rdkit.Chem.Draw import IPythonConsole from rdkit.Chem import Draw m = Chem.MolFromSmiles('N#Cc1ccccc1N1C[C@H](C(=O)[O-])CC1=O',sanitize=False) m.UpdatePropertyCache() m Chem.SetHybridization(m) m tmp=m.GetSubstructMatch(Chem.MolFromSmarts('c1ccccc1')) m #m.HasSubstructMatch(Chem.MolFromSmarts('[r]')) Chem.FastFindRings(m) m.HasSubstructMatch(Chem.MolFromSmarts('[r]')) [list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[a;r]'))] [list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[A;r]'))] m sm = Chem.MolFromSmiles('O=C(N[C@H]1CCCc2ccccc21)c1n[nH]c2ccccc21') sm m = Chem.MolFromSmiles('O=C(N[C@H]1CCCc2ccccc21)c1n[nH]c2ccccc21',sanitize=False) m.UpdatePropertyCache() Chem.SetHybridization(m) Chem.FastFindRings(m) m [list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[A;r]'))] m [list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[r5]'))] [list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[R2]'))] m [list(x) for x in sm.GetSubstructMatches(Chem.MolFromSmarts('[R2]'))] sm m = Chem.MolFromSmiles('O=C(N[C@H]1CCCc2ccccc21)c1n[nH]c2ccccc21',sanitize=False) m.UpdatePropertyCache() Chem.FastFindRings(m) ri = m.GetRingInfo() ri.AtomRings() Draw.MolToImage(m,highlightAtoms=ri.AtomRings()[0]) Draw.MolToImage(m,highlightBonds=ri.BondRings()[0]) Draw.MolToImage(m,highlightBonds=ri.BondRings()[1]) mb=""" Mrv0541 09231207052D 8 12 0 0 0 0 999 V2000 0.4714 0.2946 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 0.4420 -1.0607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 1.7679 0.3241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 1.7973 -1.0902 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.4479 -0.4184 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 1.1432 -0.4184 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 1.1137 -1.9800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.4479 -1.9800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 1 3 1 0 0 0 0 3 4 1 0 0 0 0 4 2 1 0 0 0 0 1 5 1 0 0 0 0 5 6 1 0 0 0 0 6 3 1 0 0 0 0 6 7 1 0 0 0 0 7 4 1 0 0 0 0 5 8 1 0 0 0 0 8 7 1 0 0 0 0 8 2 1 0 0 0 0 M END """ m = Chem.MolFromMolBlock(mb) m m2 = Chem.MolFromMolBlock(mb,sanitize=False) m2.UpdatePropertyCache() Chem.GetSSSR(m2) m2.GetRingInfo().NumRings() Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[0]) Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[1]) Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[2]) Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[3]) Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[4]) m2.GetSubstructMatches(Chem.MolFromSmarts('[R3]')) m2 Chem.GetSymmSSSR(m2) m2.GetRingInfo().NumRings() m2.GetSubstructMatches(Chem.MolFromSmarts('[R3]')) Chem.CanonSmiles('C[C@H](F)C') # <- two identical atoms Chem.CanonSmiles('C/C=C') # <- only substituted on one side m = Chem.MolFromSmiles('C[C@](F)(Cl)Br') m m.GetAtomWithIdx(1).GetProp('_CIPCode') m = Chem.MolFromSmiles('C/C=C/C') m m.GetBondWithIdx(1).GetStereo() m = Chem.MolFromSmiles(r'C/C=C\C') m m.GetBondWithIdx(1).GetStereo() m = Chem.MolFromSmiles('C[C@H]1CCC[C@@H](C)[C@H]1C') Draw.MolToImage(m,includeAtomNumbers=True) m.GetAtomWithIdx(1).GetProp('_CIPCode'),m.GetAtomWithIdx(5).GetProp('_CIPCode'),m.GetAtomWithIdx(7).GetProp('_CIPCode') m = Chem.MolFromSmiles('C[C@H]1CCC[C@H](C)[C@H]1C') Draw.MolToImage(m,includeAtomNumbers=True) m = Chem.MolFromSmiles(r'C[C@H](F)/C([C@H](F)C)=C\Cl') m m.GetAtomWithIdx(1).GetProp('_CIPCode'),m.GetAtomWithIdx(4).GetProp('_CIPCode') Chem.MolToSmiles(m,True) m = Chem.MolFromSmiles(r'C[C@H](F)/C([C@@H](F)C)=C\Cl') m m.GetAtomWithIdx(1).GetProp('_CIPCode'),m.GetAtomWithIdx(4).GetProp('_CIPCode') Chem.MolToSmiles(m,True) Chem.CanonSmiles('F[P@@](=O)(OC(C)C)C') #<- Sarin m = Chem.MolFromSmiles('F[P@@](=O)(OC(C)C)C') m m.GetAtomWithIdx(1).GetProp('_CIPCode') Chem.CanonSmiles('COc1ccc2nc([nH]c2c1)[S@@](=O)Cc1ncc(C)c(OC)c1C') # <- Esomeprazole m = Chem.MolFromSmiles('COc1ccc2nc([nH]c2c1)[S@@](=O)Cc1ncc(C)c(OC)c1C') m m.GetAtomWithIdx(11).GetProp('_CIPCode')