User 870ab5b546
31-03-2010 19:32:37
Consider the following reaction definition:
<?xml version="1.0" ?>
<MDocument>
<MChemicalStruct>
<reaction>
<propertyList>
<property dictRef="NAME" title="NAME">
<scalar><![CDATA[Wittig reaction to cis alkene]]></scalar>
</property>
<property dictRef="EXCLUDE" title="EXCLUDE">
<scalar><![CDATA[totalCharge(reactant(0)) < 0 || match(reactant(0), "[#6]N([#6])[F,Cl,Br,I]") || match(reactant(0), "FB(F)[#5,F]") || match(reactant(0), "[C,O]=S") || match(reactant(0), "OOC=O") || match(reactant(0), "C[Cl,Br,I]") || match(reactant(1), "[H][O,S][#6]") || match(reactant(1), "[H][C,O]N([H])[H]")]]></scalar>
</property>
<property dictRef="EXPLAIN_EXCLUDE" title="EXPLAIN_EXCLUDE">
<scalar><![CDATA[In electrophilic substitution phosphorane can react with sec-amino halides, fluorinated borates, thiones, alkyl halides, oxidizing agents such as sulfoxides, peroxydes. Aldehydes and ketones can react with alkohols and thiols, primary amines or hydroxyamines. ]]></scalar>
</property>
</propertyList>
<reactantList>
<molecule molID="m1">
<atomArray
atomID="a1 a2 a3 a4"
elementType="O C C H"
mrvMap="3 1 0 7"
mrvQueryProps="0 0 a2 L,H,C:"
x2="-16.625 -16.625 -17.958679121828034 -15.291320878171964"
y2="2.566666603088379 1.0266666030883789 0.2566666030883783 0.25666660308837896"
/>
<bondArray>
<bond atomRefs2="a1 a2" order="2" />
<bond atomRefs2="a2 a4" order="1" />
<bond atomRefs2="a2 a3" order="1" />
</bondArray>
</molecule>
<molecule molID="m2">
<atomArray
atomID="a1 a2 a3 a4 a5 a6 a7"
elementType="P C H C C C C"
mrvMap="5 2 4 6 0 0 0"
mrvQueryProps="0 0 0 A: 0 0 0"
x2="-7.241320687437101 -5.907641565609065 -5.9067498880308795 -4.818697122581782 -7.241320687437101 -8.728846459922266 -7.6399020168949825"
y2="1.9366666269302368 1.1666666269302368 -0.3115050648253219 2.25561106995752 3.476666626930237 2.335247956388119 0.40114349898395085"
/>
<bondArray>
<bond atomRefs2="a1 a7" order="1" />
<bond atomRefs2="a1 a5" order="1" />
<bond atomRefs2="a1 a2" order="2" />
<bond atomRefs2="a1 a6" order="1" />
<bond atomRefs2="a2 a4" order="1" />
<bond atomRefs2="a2 a3" order="1" />
</bondArray>
</molecule>
</reactantList>
<productList>
<molecule molID="m3">
<atomArray
atomID="a1 a2 a3 a4 a5 a6"
elementType="C C C C H H"
mrvMap="1 2 6 0 7 4"
mrvQueryProps="0 0 A: a2 L,H,C: 0"
x2="6.3000006675720215 7.633679789400057 7.544818678032837 4.966321545743986 5.90141933811414 8.967358911228093"
y2="0.5833333060145378 1.3533333060145378 2.8907674356235376 1.3533333060145383 -0.9041924664706273 0.5833333060145379"
/>
<bondArray>
<bond atomRefs2="a1 a5" order="1" />
<bond atomRefs2="a1 a2" order="2" />
<bond atomRefs2="a1 a4" order="1" />
<bond atomRefs2="a2 a6" order="1" />
<bond atomRefs2="a2 a3" order="1" />
</bondArray>
</molecule>
</productList>
</reaction>
</MChemicalStruct>
</MDocument>
With substrates CCCC(=O)CC.CCC=P(c1ccccc1)(c1ccccc1)c1ccccc1, JChem 5.2.6 correctly predicts the products to be CCC\C(CC)=C/CC.CCC\C(CC)=C\CC, whereas JChem 5.3.1 incorrectly predicts them to be CC\C=C(/C)CC.CCC\C(C)=C\CC.
If I modify the reaction definition to include the Ph3P=O product, then JChem 5.3.1 predicts the correct product. But why the change in behavior? I don't want to have to look through my hundreds of reaction definitions to find out which ones have missing mapped atoms.