Re: [Rdkit-discuss] Reaction Question
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
From: Greg L. <gre...@gm...> - 2015-09-22 06:32:41
|
Hi Matt, The problem is that you haven't included any atom mapping information that allows the RDKit to know what to do with the reactants you provide. Here's a short demo of what you're doing: In [11]: rxn = AllChem.ReactionFromSmarts('C=C1CC=CC=C1>>Cc1ccccc1') In [12]: ps = rxn.RunReactants((Chem.MolFromSmiles('C=C1CC=CC=C1'),)) [02:28:59] reactant 0 has no mapped atoms. [02:28:59] product 0 has no mapped atoms. In [13]: Chem.MolToSmiles(ps[0][0]) Out[13]: 'Cc1ccccc1' In [14]: ps = rxn.RunReactants((Chem.MolFromSmiles('CC=C1C(F)C=CC=C1'),)) In [15]: Chem.MolToSmiles(ps[0][0]) Out[15]: 'Cc1ccccc1' (notice the warning after line [12]) And here's how to fix it: In [16]: rxn = AllChem.ReactionFromSmarts('[C:1]=[C:2]1[C:3][C:4]=[C:5][C:6]=[C:7]1>>[C:1][c:2]1[c:3][c:4][c:5][c:6][c:7]1') In [17]: ps = rxn.RunReactants((Chem.MolFromSmiles('C=C1CC=CC=C1'),)) In [18]: Chem.MolToSmiles(ps[0][0]) Out[18]: 'Cc1ccccc1' In [19]: ps = rxn.RunReactants((Chem.MolFromSmiles('CC=C1C(F)C=CC=C1'),)) In [20]: Chem.MolToSmiles(ps[0][0]) Out[20]: 'CCc1ccccc1F' I hope that helps, -greg On Mon, Sep 21, 2015 at 4:41 PM, Matthew Lardy <ml...@gm...> wrote: > I've repeated the previously seen behavior in Python in case anyone would > like to take a look there. I am trying to clean a dirty library from a > vendor and I just want to re-aromatize these molecules. Sorry that the > code looks so ugly, but the output is exactly the same. > > Thanks! > Matt > > Output (not to file): > Cc1ccccc1 > Cc1ccccc1 > .... > Cc1ccccc1 > Cc1ccccc1 > > The code that generated it: > #!/usr/bin/python > > from rdkit import Chem > from rdkit.Chem import AllChem,Draw > from rdkit.Chem import ChemicalFeatures > from rdkit import RDConfig > import os > import sys > import gzip > > suppl = Chem.SDMolSupplier('w.sdf') > rxn = AllChem.ReactionFromSmarts('C=C1CC=CC=C1>>Cc1ccccc1') > > gz = gzip.open('output.sdf.gz', 'w+') > writer = Chem.SDWriter(gz) > > for m in suppl: > if not m: continue > ps = rxn.RunReactants((m,)) > if (len(ps) > 0): > # uniq = set([Chem.MolToSmiles(x[0],isomericSmiles=True) for x in > ps]) > print Chem.MolToSmiles(ps[0][0]) > #for p in uniq: > # print Chem.MolToSmiles(p) > #for prod in uniq: > # writer.write(prod) > else: > writer.write(m) > writer.close() > gz.close() > > > On Mon, Sep 21, 2015 at 12:39 PM, Matthew Lardy <ml...@gm...> wrote: > >> Hi all, >> >> I am attempting to transform a functional group in a series of >> molecules. The reaction is pretty simple (a re-aromatization): >> >> C=C1CC=CC=C1>>Cc1ccccc1 >> >> The code which generates this runs without error (and it was written in >> Java). What I don't understand is that the products of the reaction are >> just Cc1ccccc1. The rest of the molecule is completely missing. Trying to >> map these atoms didn't reproduce the error, it did not run. Is there a >> trick to simply run something like this on every occurrence in a molecule? >> >> Thanks in advance, and my code fragment is below, >> Matt >> >> Here is my code: >> >> SDMolSupplier suppl1 = new >> SDMolSupplier(cParser.getValue("-in")); >> ROMol rdmol; >> //String line = ""; >> >> while (!suppl1.atEnd()) >> { >> try { >> rdmol = suppl1.next(); >> molId++; >> >> ROMol_Vect reacts = new ROMol_Vect(); >> reacts.add(rdmol); >> >> String ID = rdmol.getProp("_Name"); >> System.err.println("MOL_ID: " + ID); >> ROMol_Vect_Vect prods = umr.runReactants(reacts); >> >> >> System.out.println("Reagents: " + reacts.size()); >> System.err.println("Product AMT: " + prods.size()); >> if (prods.size() < 1) { >> // Write out untransformed molecules if they don't >> have the pattern >> //writer.write(rdmol); >> ; >> } else { >> for (int i = 0; i < prods.size(); i++) >> { >> System.err.println("In here finally"); >> prods.get(i).get(0).setProp("_Name",ID); >> // Why am I getting the query back to me? >> writer.write(prods.get(i).get(0)); >> } >> } >> } catch (Exception e) { >> System.err.println(e); >> } catch (Error e) { >> System.err.println(e); >> } >> } >> >> >> > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Rdkit-discuss mailing list > Rdk...@li... > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss > > |