Re: [Rdkit-discuss] How to construct a simple molecule with a Z stereo double bond using RWMol?
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
From: Francois B. <ml...@li...> - 2021-01-15 02:49:10
|
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 <ml...@li...> > 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 >> Rdk...@li... >> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss |