odd behavior in pKa calculation

User 870ab5b546

27-09-2006 13:37:14

I set a reactivity rule,





(!match(ratom(1), "[H][C:1][H]", 1)


&& pKa(ratom(2)) > 14)





so that electrophiles (ratom(1)) that were not primary would react with bases (ratom(2)) stronger than about HO^-. One of my bases was C#[C-], and it improperly failed to react with CC(C)Br. So then I changed the reactivity rule to,





(!match(ratom(1), "[H][C:1][H]", 1)


&& !pKa(ratom(2)) <= 14)





Then it properly reacted.





Mathematically, the two expressions are identical. I think what is happening is that in the first case, the plugin returned NaN for the pKa of C#[C-], which has a pKa of 25, because its pKa > 20. I don't see a way of specifying the minimum and maximum pKa values in the calculator from the reactivity rule.





Just thought you might want to address this issue in documentation or future enhancements.

User 870ab5b546

27-09-2006 18:07:56

Alas, I just found a more serious manifestation of this problem that I don't think I can work around.





I include the following exclude rule:





(apKa(reactant(0), "1") - apKa(reactant(1), "1") >= 0


&& apKa(reactant(0), "1") - apKa(reactant(1), "1") <= 8)


|| (apKa(reactant(0), "1") - apKa(reactant(1), "1") <= 0


&& apKa(reactant(0), "1") - apKa(reactant(1), "1") >= -8)





because if the pKa difference is too large, an acid-base reaction will occur instead of the desired reaction. One of my reactant(0)'s is C#[C-], and one of my reactant(1)'s is BrCCCCC(=O)OH. Clearly this pair of reactants should satisfy the exclude condition, but they are allowed to react anyway by the react.jsp page.





[I'm assuming here that apKa acting on a negatively charged compound will give the pKa of the conjugate acid, consistent with the present behavior of the pKa plugin. If that's not the case, please correct me.]





So: we need to be able to tell the pKa functions to return numbers in every case, even if the numbers are particularly large or small.

ChemAxon d76e6e95eb

29-09-2006 08:21:28

We are discussing this issue and will get back soon.

User 851ac690a0

03-10-2006 15:21:41

Hi,








I don't see a way of specifying the minimum and maximum pKa values in the calculator from the reactivity rule.








In the future you don't need to set the min/max. pKa values. We have reparametrized this part int he reactor.








...the plugin returned NaN for the pKa of C#[C-]...,











Yes , NaN returned because the pKa is not calculated for every type of 'carbon hydrogen'. Changing of the min/max. pKa limits does not help in this case.





e.g. the pKa of acetylene, benzene , etylene ... not calculated at all.











I will do a supplement for the pKa calculator so that the pKa of optional 'CH' carbon could be calculated.








Jozsi

User 870ab5b546

04-10-2006 01:59:01

Jozsi wrote:
...the plugin returned NaN for the pKa of C#[C-]...,











Yes , NaN returned because the pKa is not calculated for every type of 'carbon hydrogen'. Changing of the min/max. pKa limits does not help in this case.





e.g. the pKa of acetylene, benzene , ethylene ... not calculated at all.





I will do a supplement for the pKa calculator so that the pKa of optional 'CH' carbon could be calculated.


This problem could also be avoided if the basic pKa were defined the way I asked it to be defined -- see the discussion in the Calculator plugin forum. If you defined the basic pKa as the pKa of the conjugate acid of the given species, then it would follow that you would only need to calculate pKa's of carbon acids when the provided compound has a C atom with a lone pair. Of course, you would still have to calculate the pKa of all H-bearing C atoms if I asked for the acidic pKa of a compound.





I suggest you provide three options for calculating CH acidities. One would calculate acidities of C atoms likely to be fairly acidic: C atoms participating in triple bonds, the sp3-hybridized C atoms in cyclopentadiene rings, C atoms alpha to carbonyl, cyano, or nitro groups. The second would calculate acidities of all C atoms. The third would calculate acidities of no C atoms.





Finally, it would help if the Math.abs() method were available in the rules. Then I could write these two lines:





Math.abs(apKa(reactant(0), "1") - apKa(reactant(1), "1")) >= 0


&& Math.abs(apKa(reactant(0), "1") - apKa(reactant(1), "1")) <= 8





instead of four. Other Math methods might be helpful, too.