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 <[email protected]> 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 <[email protected]> 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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
>
>
------------------------------------------------------------------------------
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss