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