Hi Zhenting, It looks like you need to reassign stereochemistry after calling fragment_parent:
smi = 'CC(F)Cl' mol1 = Chem.MolFromSmiles(smi) s = MolStandardize.Standardizer() mol2 = s.fragment_parent(mol1) Chem.AssignStereochemistry(mol2, True, True, True) mol3 = Chem.AddHs(mol2) isomers1 = list(EnumerateStereoisomers(mol1)) print('{} isomers generated for mol1'.format(len(isomers1))) isomers2 = list(EnumerateStereoisomers(mol2)) print('{} isomers generated for mol2'.format(len(isomers2))) isomers3 = list(EnumerateStereoisomers(mol3)) print('{} isomers generated for mol3'.format(len(isomers3))) 2 isomers generated for mol1 2 isomers generated for mol2 2 isomers generated for mol3 Cheers, p. On Thu, Apr 8, 2021 at 12:11 PM Gao Zhenting <zhentgpic...@gmail.com> wrote: > Dear group members, > > Before using RDkit to enumerate stereoisomers, I'd like to keep the > largest fragment of input SMILES. However, when > MolStandardize.Standardizer() is used to keep the largest fragment, > EnumerateStereoisomers() does not generate the correct isomers and does not > show error. > > Any idea? > > Please check the following code: > > smi = 'CC(F)Cl' > mol1 = Chem.MolFromSmiles(smi) > s = MolStandardize.Standardizer() > mol2 = Chem.AddHs(s.fragment_parent(mol1)) > > isomers1 = list(EnumerateStereoisomers(mol1)) > print('{} isomers generated for mol1'.format(len(isomers1))) > isomers2 = list(EnumerateStereoisomers(mol2)) > print('{} isomers generated for mol2'.format(len(isomers2))) > > Output: > > 2 isomers generated for mol1 > 1 isomers generated for mol2 > > > Best regards > Zhenting > _______________________________________________ > Rdkit-discuss mailing list > Rdkit-discuss@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss