Hi Francois,

I would do this by setting the stereo to either STEREOCIS or STEREOTRANS
and then calling Chem.AssignStereoChemistry():

In [6]: rwmol = Chem.RWMol()
   ...: # create the atoms
   ...: a0 = Chem.Atom(6)
   ...: a1 = Chem.Atom(7)
   ...: a2 = Chem.Atom(6)
   ...: a3 = Chem.Atom(16)
   ...: # add the atoms
   ...: rwmol.AddAtom(a0)
   ...: rwmol.AddAtom(a1)
   ...: rwmol.AddAtom(a2)
   ...: rwmol.AddAtom(a3)
   ...: # add the bonds
   ...: rwmol.AddBond(0, 1, rdkit.Chem.rdchem.BondType.SINGLE)
   ...: rwmol.AddBond(1, 2, rdkit.Chem.rdchem.BondType.DOUBLE)
   ...: rwmol.AddBond(2, 3, rdkit.Chem.rdchem.BondType.SINGLE)
Out[6]: 3

In [7]: db = rwmol.GetBondWithIdx(1)

In [8]: db.SetStereoAtoms(0,3)

In [9]: db.SetStereo(Chem.BondStereo.STEREOCIS)

In [10]: Chem.MolToSmiles(rwmol)
Out[10]: 'CN=CS'

In [11]: Chem.AssignStereochemistry(rwmol)

In [12]: Chem.MolToSmiles(rwmol)
Out[12]: 'C/N=C\\S'




On Thu, Jan 14, 2021 at 9:46 AM Francois Berenger <mli...@ligand.eu> wrote:

> Hello,
>
> Please tell me if you understand why the code below
> is not working and if you know how to change it so that it does.
>
> Thanks a lot! :)
> F.
>
> ---
> #!/usr/bin/env python3
>
> # try to construct a molecule with a Z stereo double bond using RWMol
>
> import rdkit
> from rdkit import Chem
>
> wanted_smi = 'C/N=C\\S'
>
> rwmol = Chem.RWMol()
> # create the atoms
> a0 = Chem.Atom(6)
> a1 = Chem.Atom(7)
> a2 = Chem.Atom(6)
> a3 = Chem.Atom(16)
> # add the atoms
> rwmol.AddAtom(a0)
> rwmol.AddAtom(a1)
> rwmol.AddAtom(a2)
> rwmol.AddAtom(a3)
> # add the bonds
> rwmol.AddBond(0, 1, rdkit.Chem.rdchem.BondType.SINGLE)
> rwmol.AddBond(1, 2, rdkit.Chem.rdchem.BondType.DOUBLE)
> rwmol.AddBond(2, 3, rdkit.Chem.rdchem.BondType.SINGLE)
> # let's see what we have so far
> print(Chem.MolToSmiles(rwmol)) # --> 'CN=CS'; so far so good
> # try to specify a Z stereo bond
> db = rwmol.GetBondWithIdx(1)
> assert(db.GetBondType() == rdkit.Chem.rdchem.BondType.DOUBLE) # just
> checking
> db.SetStereo(rdkit.Chem.rdchem.BondStereo.STEREOZ)
> db.SetStereoAtoms(0, 3)
> # let's see what we have now
> print(Chem.MolToSmiles(rwmol)) # --> 'CN=CS'; not good enough
> Chem.SanitizeMol(rwmol) # just checking
> print(Chem.MolToSmiles(rwmol)) # --> 'CN=CS'; not getting better
> ---
>
>
> _______________________________________________
> 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