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

Reply via email to