Matching behavier in Reactor?

User 538416f930

18-10-2005 15:23:53

Using a simple epoxidatio reaction for example:


[*:2]\[C:3](=[C:4](\[*:5])[*:6])[*:7]>>O1[C@:3]([*:2])([C@:4]1([*:5])[*:6])[*:7]





mapping stye matching





with any tetrasubstituted olefine as input Reactor generates both enantiomers as reaction propducts. How do you make Reactor only generate one, i.e. the first match it finds. In other words can Reactor be configured to only process one non-overlapping match of reactant onto the input molecule? Option reactor option -z does not work, because it ignores all reactivity / selectivity etc. rules defined in the xml configuration. Thanks -Stephan

ChemAxon d76e6e95eb

18-10-2005 16:24:41

Could you show an example, please? What is your starting material and what product do you expect from the reaction?

User 538416f930

18-10-2005 17:41:41

Sorry, didn't include an example:


Look at these three reactants:


COC(=O)C1=C(CCCC1)c2ccccc2


CO[C@@H]1C[C@H](CC(\C1)=C2/C[C@@H](C[C@H](C2)OC)OC)OC


CC(C)C\C(C)=C(/CO)CC(=O)N(C)C





With the reaction mentioned (matching mode) you get (reaction output):





COC(=O)C1=C(CCCC1)c2ccccc2>>COC(=O)[C@]12CCCC[C@]1(O2)c3ccccc3


COC(=O)C1=C(CCCC1)c2ccccc2>>COC(=O)[C@@]12CCCC[C@@]1(O2)c3ccccc3


CO[C@@H]1C[C@H](CC(\C1)=C2/C[C@@H](C[C@H](C2)OC)OC)OC>>CO[C@@H]1C[C@H](CC2(C1)OC23C[C@@H](C[C@H](C3)OC)OC)OC


CC(C)C\C(C)=C(/CO)CC(=O)N(C)C>>CC(C)C[C@]1(C)O[C@@]1(CO)CC(=O)N(C)C


CC(C)C\C(C)=C(/CO)CC(=O)N(C)C>>CC(C)C[C@@]1(C)O[C@]1(CO)CC(=O)N(C)C





For the first and last reactant two products are generated, which are enantionmers of one another. For the 2nd reactant only one product is generated, because the reactant is symmetric and there is only one unique match.


This all makes perfect sense, but what if you only want to generate one product for reactants 1 and 3 each (doesn't matter which one, just the first match); for example if you are just interested in the relative stereochemistry of the genearted products. This is similar to having the generic reactant in the reaction smarts match each reaction center only once, i.e. not processing any reaction center matches that overlap with any other / previous matches.

ChemAxon d76e6e95eb

19-10-2005 11:38:46

I cannot reproduce your products. Which JChem version do you use? How did you call Reactor? What are your parameters when processing the reactions?

User 538416f930

19-10-2005 13:24:05

Reactor 3.1.1





react -r EpoxideExampleReaction.sma -a matching EpoxidesExampleReactants.smi -o EpoxideExampleProducts_smi.smi





In this case you actually only get three products (attached), the cyclic olefine does not react. But still the second product appears twice as two enantiomers. Can you reproduce this. Now, how can I achieve to get just one (not using -z); see previous messages.





If you use the reactants as SDFile (attached) you get 5 products, the cyclic olefine reacts and you also get both enantiomer products. In this case use:


react -r EpoxideExampleReaction.sma -a matching EpoxidesExampleReactants.sdf -o EpoxideExampleProducts_sdf.smi





Can you reproduce this?





So, now there is another question, why are results different when SDFile or SMILES are used as input (these are the same structures) and Reactor actually translates the SDFile into the SMILES provided (e.g. in reaction output).





I also noted different behaviour if a rxn or sma format is used for reactions; again translated with ChemAxon tools; I can give examples, but let's figure the first probem first.

ChemAxon d76e6e95eb

20-10-2005 18:45:59

Thanks for the info, we are currently investigating the problem and will contact you soon.

User 538416f930

20-10-2005 22:51:19

Thanks, please let me know if I can provide anything else. The difference in SDFiles and SMILES is may not be an issue (because SMILES don't define explicitly E/Z geometric configuration in small rings; I think you solved that with extended SMILES). Just wonder if it is possible to process only unique non-overlapping reactant matches in Reactor; instead of all (different) paths; this is similar to Daylight's dt_match, dt_umatch, dt_xmatch (SMARTS tool kit, pattern matching). -S.

ChemAxon fb166edcbd

21-10-2005 05:10:11

The different matching results for SMILES and SDF input are probably due to the different storage of cis-trans data (small rings), since without cis-trans data all the non-symmetric reactants produce 4 products (without cis-trans matching there are 4 possibilities):





Code:



react -r "[*:2][C:3](=[C:4]([*:5])[*:6])[*:7]>>O1[C@:3]([*:2])([C@:4]1([*:5])[*:6])[*:7]" -a matching EpoxidesExampleReactants.smi


COC(=O)[C@]12CCCC[C@]1(O2)c3ccccc3


COC(=O)[C@]12CCCC[C@@]1(O2)c3ccccc3


COC(=O)[C@@]12CCCC[C@]1(O2)c3ccccc3


COC(=O)[C@@]12CCCC[C@@]1(O2)c3ccccc3


CO[C@@H]1C[C@H](C[C@@]2(C1)O[C@@]23C[C@@H](C[C@H](C3)OC)OC)OC


CC(C)C[C@@]1(C)O[C@@]1(CO)CC(=O)N(C)C


CC(C)C[C@@]1(C)O[C@]1(CO)CC(=O)N(C)C


CC(C)C[C@]1(C)O[C@@]1(CO)CC(=O)N(C)C


CC(C)C[C@]1(C)O[C@]1(CO)CC(=O)N(C)C








To produce only one product for each reactant is possible if you specify the "-p 1" parameter in the command line (-p, --pieces: number of product lists to be returned):





Code:



react -r "[*:2][C:3](=[C:4]([*:5])[*:6])[*:7]>>O1[C@:3]([*:2])([C@:4]1([*:5])[*:6])[*:7]" -a matching EpoxidesExampleReactants.smi -p 1


COC(=O)[C@]12CCCC[C@]1(O2)c3ccccc3


CO[C@@H]1C[C@H](C[C@@]2(C1)O[C@@]23C[C@@H](C[C@H](C3)OC)OC)OC


CC(C)C[C@@]1(C)O[C@@]1(CO)CC(=O)N(C)C








Or with your original reaction:





Code:



react -r EpoxideExampleReaction.sma -a matching EpoxidesExampleReactants.smi -p 1


CO[C@@H]1C[C@H](C[C@@]2(C1)O[C@]23C[C@@H](C[C@H](C3)OC)OC)OC


CC(C)C[C@@]1(C)O[C@]1(CO)CC(=O)N(C)C





react -r EpoxideExampleReaction.sma -a matching EpoxidesExampleReactants.sdf -p 1


COC(=O)[C@]12CCCC[C@]1(O2)C3=CC=CC=C3


CO[C@@H]1C[C@H](C[C@@]2(C1)O[C@@]23C[C@@H](C[C@H](C3)OC)OC)OC


CC(C)C[C@]1(C)O[C@@]1(CO)CC(=O)N(C)C








Here you spcify the absolute number of results you want to receive for each reactant.


However, it is not possible to process all non-overlapping reaction centers, since Reactor is designed to produce all possible products, processing one reaction center at a time. In transform mode it processes all reaction centers at the same time and therefore in this mode only a non-overlapping set of reaction centers can be processed. (This corresponds to the standardization process.)





Is the "-p 1" parameter setting suitable for your purpose?

User 538416f930

28-10-2005 20:37:21

Thank you very much for your help. I apologize for the late reply; we got hit by hurricane Wilma here in South Florida and are now recovering...


The -p 1 option works for these situations. I tried to process all reaction centers simultaneously using -z, but I noticed that reaction rules specified in the XML config are ignored in this case. Is this intended?





Thanks -Stephan

ChemAxon fb166edcbd

30-10-2005 18:03:33

Yes, this has technical reasons - also the transform mode corresponds to a one-step standardization and standardization does not have rules. See the transform section in Reactor options.





To process the rules you need to use the generated product as reactant again and process the same reaction (with -p 1) as long as you have a product (i.e., as long as there is a reaction center that has not been processed yet).

User 538416f930

31-10-2005 13:51:48

Thank you so much for your help.