another stereochemistry issue

User 870ab5b546

19-04-2011 15:56:31

Reaction definition:


<?xml version="1.0" ?>
<MDocument>
<MChemicalStruct>
<reaction x1="-2.3919096628986525" y1="3.519216030990243" x2="3.5414076794319564" y2="3.271128347664041">
<propertyList>
<property dictRef="NAME" title="NAME">
<scalar><![CDATA[epoxides with (-)CN]]></scalar>
</property>
<property dictRef="SELECTIVITY" title="SELECTIVITY">
<scalar>-stericHindrance(ratom(1))</scalar>
</property>
</propertyList>
<reactantList>
<molecule molID="m1">
<atomArray
atomID="a1 a2 a3 a4"
elementType="C O H C"
mrvMap="1 3 0 0"
reactionStereo="Inv 0 0 0"
x2="-6.881875038146973 -5.341875038146973 -7.280456367604854 -6.111875038146972"
y2="4.042500257492065 4.042500257492065 5.530026029977231 2.7088211356640297"
/>
<bondArray>
<bond atomRefs2="a1 a4" order="1" />
<bond atomRefs2="a1 a3" order="1" />
<bond atomRefs2="a1 a2" order="1" />
<bond atomRefs2="a4 a2" order="1" />
</bondArray>
</molecule>
</reactantList>
<productList>
<molecule molID="m2">
<atomArray
atomID="a1 a2 a3 a4 a5 a6 a7"
elementType="C C H C O H N"
mrvMap="2 1 0 0 3 0 0"
x2="7.56771259790619 7.601281909793624 6.860536746513022 9.088807682278789 9.088807682278789 10.422486804106825 7.56771259790619"
y2="2.4937202768337343 4.033354357159123 5.383501239196915 4.431935686617004 5.971935686617004 6.741935686617004 0.9537202768337343"
/>
<bondArray>
<bond atomRefs2="a1 a7" order="3" />
<bond atomRefs2="a1 a2" order="1" />
<bond atomRefs2="a2 a4" order="1" />
<bond atomRefs2="a2 a3" order="1" />
<bond atomRefs2="a4 a5" order="1" />
<bond atomRefs2="a5 a6" order="1" />
</bondArray>
</molecule>
</productList>
</reaction>
</MChemicalStruct>
</MDocument>


If I submit [H][C@@]12CCCC[C@]1([H])O2, Reactor produces only one product, [H]O[C@]1([H])CCCC[C@@]1([H])C#N.  It fails to produce the other enantiomer.  This is a problem because it makes it seems as if this symmetry-breaking reaction is asymmetric, and it's not.


In general, meso starting material -> chiral product should cause Reactor to give both enantiomers.  

ChemAxon e08c317633

21-04-2011 15:42:50

It works for me. Reactor 5.4.1.1 generates two products:


react -r StereochemistryIssue2.mrv "[H][C@@]12CCCC[C@]1([H])O2"
[H][C@]1(O)CCCC[C@]1([H])C#N
[H][C@@]1(O)CCCC[C@@]1([H])C#N

Zsolt

User 870ab5b546

21-04-2011 16:01:51

Well here's my code (MAX_REACT is 6):


    private final Reactor reactor = new Reactor();
...
moleculeOfRxn = new MolHandler(singleRxnDef.trim()).getMolecule();
rxnMol = RxnMolecule.getReaction(moleculeOfRxn);
if (rxnMol != null) reactor.setReaction(rxnMol);
...
caller.debugPrint("Permutation ", perm, " of ", numPerms,
": ", starters);
reactor.setReactants(starters);
boolean anySMsAreChiralNonracemic = false;
try {
anySMsAreChiralNonracemic =
StereoFunctions.anyAreChiralNonracemic(starters);
} catch (MolFileException e) {
Utils.alwaysPrint(SELF + "caught MolFileException "
+ "trying to get whether any of ",
starters, " are chiral.");
} // try
// Reactor will give further products with each call
for (int reactCt = 0; reactCt < MAX_REACT; reactCt++) {
reactorProds = reactor.react();
if (Utils.isEmpty(reactorProds)) {
caller.debugPrint("Product set ", reactCt + 1,
" from Reactor for permutation ", perm,
" is empty; breaking.");
break;
} // if there are no products
gotProducts = true;
caller.debugPrint("Product set ", reactCt + 1,
" obtained from Reactor for permutation ", perm, ".");
final int numReactorProds = reactorProds.length;
convert0DTo2D(reactorProds);
if (numPriorRxnProds > 0) {
...
} else caller.debugPrint("Initial substrates reacted to give ",
numReactorProds, " product(s): ", reactorProds);
implicitizeHAtoms(reactorProds);
caller.debugPrint("After implicitizing H atoms, ",
"Reactor products are: ", reactorProds);
// add info on relative yields, whether product
// should be racemized
int prodNum = 0;
for (Molecule reactorProd : reactorProds) {
...
} // for each reactor prod
// Add each product to this loop's product list unless
// it's already in the list or is a starting material.
addToRxnLoopProducts(reactorProds, thisRxnLoopProducts);
if (generatedSMStereo != NO_SM_RACEMIZED) return;
} // while still getting products from reactor

And here's my log:


Permutation 1 of 1: [C1CC[C@@H]2O[C@@H]2C1]
Product set 1 obtained from Reactor for permutation 1.
Initial substrates reacted to give 1 product(s): [[H]O[C@@H]1CCCC[C@H]1C#N]
After implicitizing H atoms, Reactor products are: [O[C@@H]1CCCC[C@H]1C#N]
Setting reactor index property for reactor product 1, O[C@@H]1CCCC[C@H]1C#N, to 1
Setting racemize property for reactor product 1, O[C@@H]1CCCC[C@H]1C#N, to true.
Product O[C@@H]1CCCC[C@H]1C#N not already in initial substrate or product lists, [C1CC[C@@H]2O[C@@H]2C1], [], []; adding it to thisRxnLoopProducts.
Product set 2 from Reactor for permutation 1 is empty; breaking.

As you can see, Reactor generates only one set of products in my hands.  Is there maybe a flag I am failing to set, or is there a difference between the API and the command-line interface in how Reactor generates multiple sets of products?  We're using JChem 5.4.1.

User 870ab5b546

24-04-2011 21:15:56

Also:


bob@epoch-virtual:web$ react -r tempfiles/StereochemistryIssue2.mrv "[H][C@@]12CCCC[C@]1([H])O2"
[H]O[C@]1([H])CCCC[C@@]1([H])C#N
bob@epoch-virtual:web$

So I am observing a different result from you.  Why?  Again, I am using JChem 5.4.1.  Same result with JChem 5.4.1.1.

ChemAxon e08c317633

26-04-2011 10:35:39

I guess this is a configuration issue. I get the same 2 output molecules with JChem 5.4.1. and JChem 5.4.1.1. too (see my previous post).


Bob, could you post here the output of


echo $CLASSPATH

which react


and


react -h | grep Reactor 


commands?


Can you execute the same command on a different computer with a fresh JChem 5.4.1.1 install, and post the result here?


Zsolt

User 870ab5b546

26-04-2011 13:41:44

With JChem 5.4.1 on our server:


bob@epoch-virtual:~$ echo $CLASSPATH
/home/aceorg/aceorg/DEV-3.1/ace/build:/usr/share/java:/home/aceorg/aceorg/jchem5.4.1/lib:/home/aceorg/aceorg/otherJar/ojdbc14.jar
bob@epoch-virtual:~$ which react
/home/aceorg/aceorg/jchem5.4.1/bin/react
bob@epoch-virtual:~$ react -h | grep Reactor
Reactor 5.4.1.1, (C) 1999-2011 ChemAxon Ltd.
bob@epoch-virtual:~$

Then I fresh-installed JChem 5.4.1.1 and changed my PATH and CLASSPATH variables.


bob@epoch-virtual:web$ react -r tempfiles/StereochemistryIssue2.mrv "[H][C@@]12CCCC[C@]1([H])O2"
[H]O[C@]1([H])CCCC[C@@]1([H])C#N
bob@epoch-virtual:web$ echo $CLASSPATH
/home/aceorg/aceorg/DEV-3.1/ace/build:/usr/share/java:/home/aceorg/aceorg/jchem5.4.1.1/lib:/home/aceorg/aceorg/otherJar/ojdbc14.jar
bob@epoch-virtual:web$ which react
/home/aceorg/aceorg/jchem5.4.1.1/bin/react
bob@epoch-virtual:web$ react -h | grep Reactor
Reactor 5.4.1.1, (C) 1999-2011 ChemAxon Ltd.
bob@epoch-virtual:web$

Then I fresh-installed JChem 5.4.1.1 on my desktop.


Grossman-CP-339-iMac:~ Bob$ react -r Desktop/StereochemistryIssue2.mrv "[H][C@@]12CCCC[C@]1([H])O2"
[H]O[C@]1([H])CCCC[C@@]1([H])C#N
Grossman-CP-339-iMac:~ Bob$ echo $CLASSPATH
/usr/share/java:Applications/ChemAxon/JChem5.4.1.1/lib
Grossman-CP-339-iMac:~ Bob$ which react
/Applications/ChemAxon/JChem5.4.1.1/bin/react
Grossman-CP-339-iMac:~ Bob$ react -h | grep Reactor
Reactor 5.4.1.1, (C) 1999-2011 ChemAxon Ltd.
Grossman-CP-339-iMac:~ Bob$

Same results every time.

ChemAxon e08c317633

27-04-2011 09:48:32

Bob, we used different reaction definitions, that's why we got different results. In your reaction definition (first post) there is a selectivity rule: -stericHindrance(ratom(1)), while in my reaction definition (StereochemistryIssue2.mrv, attached in second post) there is no selectivity rule.


Try this, it will ignore selectivity rule, and will generate two products with both reaction definitions:


react -r StereochemistryIssue2.mrv -n s "[H][C@@]12CCCC[C@]1([H])O2"
[H][C@]1(O)CCCC[C@]1([H])C#N
[H][C@@]1(O)CCCC[C@@]1([H])C#N

With the selectivity rule the reaction generates one product, because the steric hindrance difference on ratom(1) is bigger than 0.0001 (default tolerance):


Steric hindrance on ratom(1) in first reaction:  1.000775
Steric hindrance on ratom(1) in second reaction:  0.998256


The reactant is symmetric, so steric hindrances should be equal on these atoms. They are different because the 3D generator does not generate absolutely symmetric conformers.


So the proper solution in this case  is to increase the tolerance.


Zsolt

User 870ab5b546

27-04-2011 12:42:13

Thanks for sleuthing this out and for proposing a workaround.  The fact that the 3D generator does not account for the symmetry of the compound is a deficiency that I encourage you to remedy in the future.  It is completely counterintuitive to have to include a tolerance to account for symmetrical molecules.  At the very least, you need to document the need to do this on your page on writing reaction definition rules.

ChemAxon e08c317633

28-04-2011 18:11:45

We will add this to the documentation of steric hindrance.