[Rdkit-discuss] EmbedMultipleConfs & enforceChirality
Hi RDKitters, I've been playing around with the EmbedMultipleConfs function (in the 2016.03.3 version of RDKit), to generate conformers for some molecules, and have come across something that may be a bug/typo. When I've been using the enforceChirality tag - it appeared to do the reverse of what I thought it would, ie setting this to True meant that any existing chirality in the molecule was ignored (and was scrambled), setting it to False meant the chirality was kept consistent with the originating molecule. Is this expected behaviour? (and hence am I reading the documentation wrong at http://www.rdkit.org/Python_Docs/rdkit.Chem.rdDistGeom-module.html#EmbedMultipleConfs ) Thanks, Rob -- ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
Re: [Rdkit-discuss] Stereochemistry Perception
Thank you very much Peter & Peter. The result makes perfect sense now. As I suspected, I did miss something obvious - the mirror plane. Best regards, Rob On Fri, May 27, 2016 at 3:14 PM, Peter Gedeck wrote: > Hello Rob > > The compound is not chiral. There is a mirror plane that contains the > 5-ring and the C-NH3 bond. There is a cis / trans stereoisomers here like > in 1,4-dichloro-cyclohexane. That cannot be defined using the @symbols. > However I cannot tell you how to do this for cases like this in SMILES. > > Best > > Peter > On Fri, 27 May 2016 at 21:38, Rob Smith wrote: > >> Hi all, >> >> I know there's been a lot of discussion about stereochemistry in RDKit, >> and I don't really want to open the can of worms particularly, but I would >> appreciate gaining a little more understanding to help explain an >> observation I've had (and it could be I've missed something really obvious). >> >> If I run the following Python RDKit code: >> >> from rdkit.Chem import AllChem as Chem >> >> AllMolecules = Chem.MolFromSmiles('CC[C@@]1(NC)CC[C@H](N)CC1.N[C@ >> @H]1CC[C@]2(CC1)CCCN2.N[C@H]1CCC[C@@]2(C1)CCCN2.N[C@H]2[C@@]12CCCN1') >> molecules = Chem.GetMolFrags(AllMolecules, asMols=True) >> for eachMolecule in molecules: >> print(Chem.MolToSmiles(eachMolecule, isomericSmiles=True)) >> >> The output I get is: >> CC[C@]1(NC)CC[C@@H](N)CC1 >> NC1CCC2(CCCN2)CC1 >> N[C@H]1CCC[C@]2(CCCN2)C1 >> N[C@H]1[C@]12CCCN2 >> >> The second molecule appears to be perceived as having no steroechemistry, >> however when a bond is broken in the pyrollidine to remove the spirocentre >> (the first molecule), the molecule is perceived as having stereochemistry. >> Also moving the pyrollidine spiro centre away from the 4 position of the >> cyclohexyl ring appears to enable the stereocentre to be 'perceived'. >> >> Thanks in advance for your help, >> >> Kind regards, >> >> Rob >> >> -- >> What NetFlow Analyzer can do for you? Monitors network bandwidth and >> traffic >> patterns at an interface-level. Reveals which users, apps, and protocols >> are >> consuming the most bandwidth. Provides multi-vendor support for NetFlow, >> J-Flow, sFlow and other flows. Make informed decisions using capacity >> planning reports. >> https://ad.doubleclick.net/ddm/clk/305295220;132659582;e >> ___ >> Rdkit-discuss mailing list >> Rdkit-discuss@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >> > -- What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
[Rdkit-discuss] Stereochemistry Perception
Hi all, I know there's been a lot of discussion about stereochemistry in RDKit, and I don't really want to open the can of worms particularly, but I would appreciate gaining a little more understanding to help explain an observation I've had (and it could be I've missed something really obvious). If I run the following Python RDKit code: from rdkit.Chem import AllChem as Chem AllMolecules = Chem.MolFromSmiles('CC[C@@]1(NC)CC[C@H](N)CC1.N[C@@H]1CC[C@ ]2(CC1)CCCN2.N[C@H]1CCC[C@@]2(C1)CCCN2.N[C@H]2[C@@]12CCCN1') molecules = Chem.GetMolFrags(AllMolecules, asMols=True) for eachMolecule in molecules: print(Chem.MolToSmiles(eachMolecule, isomericSmiles=True)) The output I get is: CC[C@]1(NC)CC[C@@H](N)CC1 NC1CCC2(CCCN2)CC1 N[C@H]1CCC[C@]2(CCCN2)C1 N[C@H]1[C@]12CCCN2 The second molecule appears to be perceived as having no steroechemistry, however when a bond is broken in the pyrollidine to remove the spirocentre (the first molecule), the molecule is perceived as having stereochemistry. Also moving the pyrollidine spiro centre away from the 4 position of the cyclohexyl ring appears to enable the stereocentre to be 'perceived'. Thanks in advance for your help, Kind regards, Rob -- What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
Re: [Rdkit-discuss] Stereochemistry - Differences between RDKit & Indigo
Hi Greg, I've attached the SDF that Corina generates. I'm not convinced it is a problem, more an observation that I'm trying to understand. Looking at the results again today - it seems that from the Corina output Indigo is interpreting the conformer (including whether the ethyl substituent on the piperidine nitrogen is equatorial or axial) - and outputting a canonical smiles string that has the conformer "encoded" in it (using the chiral flags). Whereas RDKit is reading in the Corina output, "discounting" whether the nitrogen is axial or equatorial (which due to inversion I can understand) and interpreting it as having only two chiral centers (which is correct). What is confusing me, is that when I supply RDKit with the canonical smiles string from Indigo (which has the conformer "encoded" in it), and then ask for the isomeric canonical smiles, it supplies the canonical smiles with the conformer still "encoded" within it. For example, I read in the following canonical smiles string into RDKit: CCN1CC[C@@H]([N@@H+]2CC[C@@H]2[C@H](C)C)CC1 (which was generated by reading in one of the mols in the SD File into RDKit and output the isomeric canonical smiles), running the FindMolChiralCenters on this molecule, correctly reports the number of chiral centres to be 2 (6S, 9R), and then asking it to output the canonical smiles string (with isomericSmiles=True) gives CCN1CCC([N@@H+]2CC[C@@H]2C(C)C)CC1 (1). If I take the same mol file, read it into Indigo, and ask it to output the canonical smiles string, I get: CC(C)[C@H]1CC[N@H+]1[C@@H]1CC[N@@](CC1)CC, if I read this smiles string into RDKit and run FindMolCenters on it, I get (3R, 6S) - which is fine, if I then out the canonical smiles (again with isomericSmiles=True) I get CC[N@]1CC[C@@H]([N@@H+]2CC[C@@H]2C(C)C)CC1. I expected this isomeric canonical smiles to be the same as (1), however RDKit appears to conserve the conformer representation given to it from an isomeric smiles string, but when reading a Mol file doesn't keep all conformer information (axial or equatorial substituents on a nitrogen). Thanks to all for your quick (and quick witted) responses Rob On Thu, Aug 20, 2015 at 3:46 AM, Greg Landrum wrote: > Hi Rob, > > The results below are quite strange. As John has already pointed out: > there really shouldn't be chirality present on either the N+ or the C that > has two methyls attached. > > I tried to reproduce the problem by running corina myself using the same > command-line options you provided (from SMILES instead of SDF, but I don't > think that should make a difference), but I get sensible results; > > In [5]: s = Chem.SDMolSupplier('sample.sdf') > > In [6]: for m in s: > Chem.AssignAtomChiralTagsFromStructure(m) > Chem.AssignStereochemistry(m,cleanIt=True,force=True) >...: print Chem.MolToSmiles(m,True) >...: > CCN1CCC([N@@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@@H+]2CC[C@H]2C(C)C)CC1 > CCN1CCC([N@@H+]2CC[C@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@H]2C(C)C)CC1 > > In [7]: s = Chem.SDMolSupplier('sample.sdf') > > In [8]: for m in s: > Chem.AssignAtomChiralTagsFromStructure(m) > print Chem.MolToSmiles(m,True) >...: > CCN1CCC([N@@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@@H]2C(C)C)CC1 > CCN1CCC([N@@H+]2CC[C@H]2C(C)C)CC1 > CCN1CCC([N@@H+]2CC[C@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@H]2C(C)C)CC1 > CCN1CCC([N@H+]2CC[C@H]2C(C)C)CC1 > > > Could you please send the SDF that corina generates so I can try to > reproduce the problem (or at least try to understand what's gong on) from > that? > > Thanks, > -greg > > On Wed, Aug 19, 2015 at 3:00 PM, Rob Smith wrote: > >> Dear RDKit community, >> >> I'm trying to use RDKit to read in Corina generated stereoisomers (from a >> Mol file), assign chiral tags and stereochemistry to the structure and >> output the canonical smiles string for each isomer of a given molecule (in >> Python), when I do this, half the canonical smiles strings are not unique. >> >> When I read in the output from Corina into an Indigo instance, then use >> the canonical smiles from Indigo to create an RDKit molecule, canonical >> smiles strings generated from the molecule objects are all unique. >> >> I may be missing an option to enable RDKit to 'visualise' the chiral >> centre adjacent to the protonated nitrogen, so if someone can spot where >> I've made a mistake, I'd really appreciate it. I've included the output and >> Python
[Rdkit-discuss] Stereochemistry - Differences between RDKit & Indigo
Dear RDKit community, I'm trying to use RDKit to read in Corina generated stereoisomers (from a Mol file), assign chiral tags and stereochemistry to the structure and output the canonical smiles string for each isomer of a given molecule (in Python), when I do this, half the canonical smiles strings are not unique. When I read in the output from Corina into an Indigo instance, then use the canonical smiles from Indigo to create an RDKit molecule, canonical smiles strings generated from the molecule objects are all unique. I may be missing an option to enable RDKit to 'visualise' the chiral centre adjacent to the protonated nitrogen, so if someone can spot where I've made a mistake, I'd really appreciate it. I've included the output and Python script below. If you require any further information, please let me know. Many thanks, Rob Output: RDKit Read in of Molecule RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@@H]2[C@H](C)C)CC1 RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@@H]2[C@H](C)C)CC1 RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@@H]2[C@H](C)C)CC1 RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@@H]2[C@H](C)C)CC1 RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@H]2[C@H](C)C)CC1 RDKit Output - CCN1CC[C@@H]([N@@H+]2CC[C@H]2[C@H](C)C)CC1 RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@H]2[C@H](C)C)CC1 RDKit Output - CCN1CC[C@@H]([N@H+]2CC[C@H]2[C@H](C)C)CC1 INDIGO Read in of Molecule RDKit Output - CC[N@]1CC[C@@H]([N@@H+]2CC[C@@H]2C(C)C)CC1 RDKit Output - CC[N@]1CC[C@H]([N@@H+]2CC[C@@H]2C(C)C)CC1 RDKit Output - CC[N@]1CC[C@@H]([N@H+]2CC[C@@H]2C(C)C)CC1 RDKit Output - CC[N@]1CC[C@H]([N@H+]2CC[C@@H]2C(C)C)CC1 RDKit Output - CC[N@]1CC[C@@H]([N@@H+]2CC[C@H]2C(C)C)CC1 RDKit Output - CC[N@]1CC[C@H]([N@@H+]2CC[C@H]2C(C)C)CC1 RDKit Output - CC[N@]1CC[C@@H]([N@H+]2CC[C@H]2C(C)C)CC1 RDKit Output - CC[N@]1CC[C@H]([N@H+]2CC[C@H]2C(C)C)CC1 Python script : from rdkit import Chem import subprocess # Used to run Corina from indigo import * def runCorinaTest(inputMol): indigo = Indigo() molFile = Chem.MolToMolBlock(inputMol) corinaCommand = "echo \'" + molFile + "\' | " # Then Corina - generate stereoisomers... corinaCommand = corinaCommand + "/apps/corina/corina -t n -d canon,stergen,preserve,names,wh,flapn,msc=7,msi=128 -i t=sdf" corinaResult = subprocess.check_output([corinaCommand], shell=True) # Gives the stereoisomer species as an SDF string allMoleculeObjects = [] allMolecules = corinaResult.split("\n") # Separate Corina output into individual molecules allMolecules = allMolecules[0:len(allMolecules)-1] print("RDKit Read in of Molecule") for eachMolecule in allMolecules: eachMolecule = eachMolecule + "\n" mol = Chem.MolFromMolBlock(eachMolecule, sanitize=True, removeHs=True, strictParsing=False) Chem.rdmolops.AssignAtomChiralTagsFromStructure(mol, replaceExistingTags=True) Chem.rdmolops.AssignStereochemistry(mol) print("RDKit Output - " + Chem.MolToSmiles(mol, isomericSmiles=True)) print("INDIGO Read in of Molecule") for eachMolecule in allMolecules: eachMolecule = eachMolecule + "\n" mol = indigo.loadMolecule(eachMolecule) # print("Indigo Output - " + mol.canonicalSmiles()) # Use Indigo Canonical Smiles to create RDKit molecule mol = Chem.MolFromSmiles(mol.canonicalSmiles()) if mol is not None: print("RDKit Output - " + Chem.MolToSmiles(mol, isomericSmiles=True)) return 0 mol = Chem.MolFromSmiles("CC(C)C1[NH+](C2CCN(CC)CC2)CC1") z = runCorinaTest(mol) -- ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss