reactants/product atoms with formal charges of 0

User 870ab5b546

29-04-2009 19:08:49

Hi,


I want to define a reaction that takes either ROH + acyl halide, RO- + acyl halide, or RO- + acyl anhydride and makes an ester.  The problem I am encountering is that I see no way to specify that the O atom in the product should have a formal charge of 0, so the formal charge of the O atom of RO- is preserved in the product.  I can use Standardizer to convert RO- to ROH, but then I cannot exclude the reaction of ROH with an anhydride.  Do you have any suggestions?


-- Bob

ChemAxon e08c317633

30-04-2009 12:19:12

Please attach your reaction. Attach some input reagents also, and let us know what are the products you expect.


Zsolt

User 870ab5b546

30-04-2009 13:24:13

This reaction converts RO(-) and ROH + acyl halide to ester, but not RO(-) and anhydride:


<?xml version="1.0" ?>
<MDocument>
<MChemicalStruct>
<reaction>
<propertyList>
<property dictRef="NAME" title="NAME">
<scalar><![CDATA[ROH or RO(-) + acyl halide]]></scalar>
</property>
<property dictRef="EXCLUDE" title="EXCLUDE">
<scalar><![CDATA[totalCharge(reactant(1)) < 0]]></scalar>
</property>
<property dictRef="STANDARDIZATION" title="STANDARDIZATION">
<scalar><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<!-- Standardizer configuration file -->
<!-- This configuration file is created with ChemAxon Config Builder -->



<StandardizerConfiguration Version ="0.1">
<Actions>
<Transformation ID="O- to OH" Structure="[#8-]>>O[H]" Type="string" Groups="reactant1"/>
</Actions>
</StandardizerConfiguration>
]]></scalar>
</property>
</propertyList>
<reactantList>
<molecule molID="m1">
<atomArray
atomID="a1 a2"
elementType="O H"
mrvMap="1 0"
x2="-10.705597877502443 -9.165597877502442"
y2="1.8034518957138062 1.8034518957138062"
/>
<bondArray>
<bond atomRefs2="a1 a2" order="1" />
</bondArray>
</molecule>
<molecule molID="m2">
<atomArray
atomID="a1 a2 a3 a4"
elementType="O C H Cl"
mrvMap="0 3 2 4"
mrvQueryProps="0 0 L,H,C,N,O: L,Cl,Br:"
x2="-6.062668323516846 -6.062668323516846 -7.396347445344881 -4.72898920168881"
y2="1.6499665975570679 0.10996659755706784 -0.6600334024429327 -0.6600334024429321"
/>
<bondArray>
<bond atomRefs2="a1 a2" order="2" />
<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"
elementType="O C H O"
mrvMap="0 3 2 1"
mrvQueryProps="0 0 L,H,C,N,O: 0"
x2="6.739703648885091 6.739703648885091 5.406024527057055 8.073382770713128"
y2="2.049901749293009 0.5099017492930091 -0.26009825070699133 -0.2600982507069899"
/>
<bondArray>
<bond atomRefs2="a1 a2" order="2" />
<bond atomRefs2="a2 a3" order="1" />
<bond atomRefs2="a2 a4" order="1" />
</bondArray>
</molecule>
</productList>
</reaction>
</MChemicalStruct>
</MDocument>


This reaction converts RO(-) and ROH + acyl halide and RO(-) + anhydride to ester, but the - charge remains on the product O when the starting material is RO(-):


<?xml version="1.0" ?>
<MDocument>
<MChemicalStruct>
<reaction x1="-2.1815262500662564" y1="0.6140698344107605" x2="2.8829552215934973" y2="0.5549347887956778">
<propertyList>
<property dictRef="NAME" title="NAME">
<scalar><![CDATA[ROH or RO(-) + acyl halide, RO(-) + anhydride]]></scalar>
</property>
<property dictRef="REACTIVITY" title="REACTIVITY">
<scalar><![CDATA[
(match(ratom(1), "[OX2:1][H]", 1)
&& !match(ratom(4), "[O:1]", 1))
|| (match(ratom(1), "[OX1-:1]", 1)
&& (!match(ratom(4), "[O:1]", 1)
|| match(ratom(4), "O=C[O:1]C=O", 1)))
]]></scalar>
</property>
<property dictRef="EXCLUDE" title="EXCLUDE">
<scalar><![CDATA[totalCharge(reactant(1)) < 0]]></scalar>
</property>
</propertyList>
<reactantList>
<molecule molID="m1">
<atomArray
atomID="a1"
elementType="O"
mrvMap="1"
x2="-9.844574928283691"
y2="2.546010971069336"
/>
<bondArray>
</bondArray>
</molecule>
<molecule molID="m2">
<atomArray
atomID="a1 a2 a3 a4"
elementType="O C H O"
mrvMap="0 3 2 4"
mrvQueryProps="0 0 L,H,C,N,O: L,O,Cl,Br:"
x2="-6.062668323516846 -6.062668323516846 -7.396347445344881 -4.72898920168881"
y2="1.6499665975570679 0.10996659755706784 -0.6600334024429327 -0.6600334024429321"
/>
<bondArray>
<bond atomRefs2="a1 a2" order="2" />
<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"
elementType="O C H O"
mrvMap="0 3 2 1"
mrvQueryProps="0 0 L,H,C,N,O: 0"
x2="6.739703648885091 6.739703648885091 5.406024527057055 8.073382770713128"
y2="2.049901749293009 0.5099017492930091 -0.26009825070699133 -0.2600982507069899"
/>
<bondArray>
<bond atomRefs2="a1 a2" order="2" />
<bond atomRefs2="a2 a3" order="1" />
<bond atomRefs2="a2 a4" order="1" />
</bondArray>
</molecule>
</productList>
</reaction>
</MChemicalStruct>
</MDocument>

First reaction definition gives,


CO.CC(Cl)=O>>COC(C)=O

CO.CC(=O)OC(C)=O>>

C[O-].CC(Cl)=O>>COC(C)=O

C[O-].CC(=O)OC(C)=O>>




 


Second reaction definition gives,

CO.CC(Cl)=O>>COC(C)=O

CO.CC(=O)OC(C)=O>>

C[O-].CC(Cl)=O>>C[O-]C(C)=O

C[O-].CC(=O)OC(C)=O>>C[O-]C(C)=O



 



 


Desired results:


CO.CC(Cl)=O>>COC(C)=O

CO.CC(=O)OC(C)=O>>

C[O-].CC(Cl)=O>>COC(C)=O

C[O-].CC(=O)OC(C)=O>>COC(C)=O


 


 


 

ChemAxon e08c317633

04-05-2009 13:07:08

Bob, you will need two different reactions for this.

1. ROH + acyl halide --> ester 

It will give the following products:

$ react -r ROH+acyl_halide.mrv -t reaction "CO" "CC(Cl)=O"
CO.CC(Cl)=O>>COC(C)=O
$ react -r ROH+acyl_halide.mrv -t reaction "CO" "CC(=O)OC(C)=O"

$ react -r ROH+acyl_halide.mrv -t reaction "C[O-]" "CC(Cl)=O"

$ react -r ROH+acyl_halide.mrv -t reaction "C[O-]" "CC(=O)OC(C)=O"

(emply line means no result)


2. RO(-) + acyl halide or anhydride --> ester


In this reaction also the charge of reactant atom with map 1 has to be tranformed from -1 to 0.


It will give the following products:

$ react -r RO-+acyl_halide_or_anhydride.mrv -t reaction "CO" "CC(Cl)=O"

$ react -r RO-+acyl_halide_or_anhydride.mrv -t reaction "CO" "CC(=O)OC(C)=O"

$ react -r RO-+acyl_halide_or_anhydride.mrv -t reaction "C[O-]" "CC(Cl)=O"
C[O-].CC(Cl)=O>>COC(C)=O
$ react -r RO-+acyl_halide_or_anhydride.mrv -t reaction "C[O-]" "CC(=O)OC(C)=O"
C[O-].CC(=O)OC(C)=O>>COC(C)=O


(emply line means no result)


I attached the modified reactions.

Zsolt

User 870ab5b546

04-05-2009 16:24:55

I suggest that you implement a feature that would allow the reaction definition writer to specify a formal charge of 0 in the products.  (it's already possible to use the reactivity rule to require a formal charge of 0 in the reactants.)  


Currently, when the products contain a line that defines the atoms' formal charges, a formal charge of 0 means, "retain whatever formal charge is present on the atom in the starting material."


You need a way to say, "assign a formal charge of 0 to this atom."  For example, the product definition of the second definition that I offer above could contain the line,


              formalCharge="+0 0 0 0" 

Here, "+0" would indicate the atom 1 should be assigned a formal charge of 0.  Or you could choose a different symbol, like Ø (the old computer rendering of the digit zero). 


Alternatively but more difficultly, you could add a new reaction definition property, such as "PRODUCTS", that would allow writers to assign values to product atoms.  For example,


        <property dictRef="ALTER PRODUCTS" title="ALTER PRODUCTS">
<scalar><![CDATA[formalCharge(patom(1)) = 0]]></scalar>
</property>


ChemAxon e08c317633

05-05-2009 08:48:08

Bob, the reaction rules are not for modifying products directly, it has to be done in the reaction equation, and we want to keep it that way. Most of the chemists don't want to write "code" to modify the charge of an atom; they just want to draw a reaction in which the oxigen with negative charge is transformed to oxigen with zero charge. That's how it works now.


Zsolt

User 870ab5b546

05-05-2009 11:39:26










Zsolt wrote:

Bob, the reaction rules are not for modifying products directly, it has to be done in the reaction equation, and we want to keep it that way. Most of the chemists don't want to write "code" to modify the charge of an atom; they just want to draw a reaction in which the oxigen with negative charge is transformed to oxigen with zero charge. That's how it works now.


Zsolt



But that's not how it works now, because there's no way to draw a reaction in which an O with negative or zero charge is transformed to O with zero charge.  So use my first suggestion, in which I can specify in the reaction equation that the product O has zero charge.  

ChemAxon d76e6e95eb

11-05-2009 08:41:03

It is possible to draw an atom which is either neutral or charged, both SMARTS queries match alcohols and alcoholates:


CO
C[O+0,-1]


But the problem is something else, I think. You are trying to merge different acylation reactions into a single scheme. I say different, because in case of alcohols, a hydrogen must be present in the scheme that eliminates as water, while no hydrogen is not present in case of alcoholates. All atoms having changing bonds including the ones appearing or disappearing must be present in a proper reaction scheme and they must be mapped, even hydrogen atoms. Hydrogens are sometimes filled implicitly by the automatic valence checking, but you should not rely on that.

User 870ab5b546

20-05-2009 14:02:49

You're right, I am relying on automatic valence checking to correct the number of H atoms.  Can you envision a case where valence checking will fail me?


And yes, I am trying to merge two reaction schemes into one, because it takes much less space in the reaction definitions and much less time computationally to do so.  I have been running up against seriously long computational times in our processing of student responses to multistep synthesis questions, and I am trying to find ways to reduce the required computational time.  


C[O+0,-1] will match to neutral or charged, but I want to require neutral in the product regardless of the charge in the starting material.  AFAIK, there is no way in the MRV reaction definition to require that a product atom be neutral.  If I am wrong, please correct me.  If I am right, it is a gap in the MRV standard that you should fill.  Is there anything wrong with my suggestion of,


formalCharge="+0 0 0 0"


where +0 indicates a required charge of 0?

ChemAxon e08c317633

22-05-2009 09:44:53










bobgr wrote:

You're right, I am relying on automatic valence checking to correct the number of H atoms.  Can you envision a case where valence checking will fail me?



E.g. aromatic nitrogens. Valence check works on atomic level.












bobgr wrote:

 C[O+0,-1] will match to neutral or charged, but I want to require neutral in the product regardless of the charge in the starting material.  AFAIK, there is no way in the MRV reaction definition to require that a product atom be neutral.  If I am wrong, please correct me.  If I am right, it is a gap in the MRV standard that you should fill.  Is there anything wrong with my suggestion of,


formalCharge="+0 0 0 0"


where +0 indicates a required charge of 0?




Yes, there is no way to specify multiple charges for an atom in MRV.


We will consider your suggestions.


Zsolt

User 870ab5b546

22-05-2009 12:41:29










Zsolt wrote:

Yes, there is no way to specify multiple charges for an atom in MRV.



Just to be clear: I am not asking for a way to specify multiple charges.  I can already specify that a product atom in the MRV definition must have a particular positive or negative charge.  And I can already specify that a product atom must have the same charge as it has in the starting material.  What I cannot do, and I want to be able to do, is to specify that a product atom must have a charge of 0.  

ChemAxon e08c317633

22-05-2009 14:06:19

See my answer in an earlier post.


Zsolt

User 870ab5b546

22-05-2009 14:47:37

And see my answer to your answer.  I am not trying to modify the products; I am trying to specify a charge of 0 in a product atom in the reaction definition, just like I can specify a charge of -1 or +1 in a product atom.

ChemAxon e08c317633

25-05-2009 11:38:06

OK, I see, sorry for the misunderstanding. We will discus the implementation of explicit 0 charge setting with Marvin developers, howewer I don't think it will be implemented in the near future.


Zsolt

User 870ab5b546

05-02-2010 15:01:30

What is the status of this request?

ChemAxon e08c317633

11-02-2010 16:11:30

Presumbaly in JChem 5.4 reactions like this "[#8+0,-1:1].[#1,#6,#7,#8:2][C:3](-[#8,Cl,Br:4])=O>>[#8;+0:1]-[C:3]([#1,#6,#7,#8:2])=O" will work, and will generate neutral products. Not sure when marvin sketch will support setting explicit zero charge on atoms.


Zsolt