On 14/01/2021 18:36, Greg Landrum wrote:
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'

Here is the fun part:

Chem.SanitizeMol(rwmol)
print(Chem.MolToSmiles(rwmol)) # --> CN=CS

"Sanitization" of the rwmol got rid of the stereo info that
we just inserted.

Is this a "feature" of SanitizeMol?

I was being a good kid, I thought that someone must always sanitize
a RWMol prior to extracting the final resulting molecule (in the end
I want a SMILES).

Regards,
F.

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