basic pKa's

User 870ab5b546

26-07-2006 20:07:48

Hi,





I was assuming that by "basic pKa", you meant, "the pKa of the conjugate acid." However, my assumption has been shaken by the following observation of calculated pKa's for methanol and methoxide.





ACIDIC pKa[0] for CH3O- = 15.775593215075904


BASIC pKa[0] for CH3O- = NaN





ACIDIC pKa[0] for CH4O = 15.775593215075904


BASIC pKa[0] for CH4O = NaN





Shouldn't the acidic and basic pKa's for methoxide be switched? Why are methoxide and methanol giving exactly the same values?





Our limits are acidUpperLimit=20.0, baseLowerLimit=10.0.





Please explain.





-- Bob

User 870ab5b546

26-07-2006 20:56:55

NH3 and NH4+ also both give the same pKa, this time a basic pKa of 8.86. NH4+ is an acid, not a base. Why is it giving a value for basic pKa?

User 870ab5b546

26-07-2006 22:00:57

OK, I thought maybe whether an acidic or basic pKa was returned depended on the behavior of the neutral species. But H2O returns only an acidic pKa of 16, even when the minimum basic pKa is reduced to -10. Hello? H2O is a base as well as an acid, and its conjugate acid has a pKa of about -1.





It makes absolutely no sense to return identical "acidic pKa" values for compounds and their conjugate acids (or bases). It makes no sense to return a "basic pKa" for a compound that is not a base, and not to return a "basic pKa" for a compound that is a base.





This plugin is totally useless if it does not take the charge of the species into account when calculating the pKa. What if I am deprotonating an ester with LDA, and I want to make sure that no other compounds with pKa's < 25 are present? Suppose methoxide is present; the plugin will tell me that a compound with pKa = 16 is present, when it is patently false. How am I supposed to tell the difference between an acid being present and its conjugate base being present? There is a big difference!

User 851ac690a0

26-07-2006 23:07:36

Hi,








1. The pKa of a molecule is related with losing of proton(s). This is why CH3O(-) is transformed into neutral form prior to pKa calculation.





2. CH3O(-) is only one microspecies besides of CH3OH.





See attached file from the pKa calculation.








3. Charge is, of course, considered during the pKa prediction.





4. You can calculate the micro pKa of a molecule.


Marvin =>Tools ==> Protonation==> pKa Options (panel) ==>Mode ==>set here micro (the default is MACRO)











5. If you know the (Macro) pKa and pH you can calculate the concentration of all microspecies.





6. Please note that the pKa of very weak basic sites like esters, alcohols, and eters are not calculated at all by the present pKa version.


And pKa of very week acidic sites in aliphatic amines not calculated as well.














Jozsi

User 870ab5b546

27-07-2006 00:37:12

Jozsi wrote:
1. The pKa of a molecule is related with losing of proton(s). This is why CH3O(-) is transformed into neutral form prior to pKa calculation.


So why is NH4+ transformed into NH3? NH4+ can lose a proton more easily than NH3. And if you regard pKa as only being related to the loss of a proton, why do you have a quantity called "basic pKa", and why do you give NH3 a value of 9 for its basic pKa?
Quote:



2. CH3O(-) is only one microspecies besides of CH3OH.





See attached file from the pKa calculation.








3. Charge is, of course, considered during the pKa prediction.





4. You can calculate the micro pKa of a molecule.


Marvin =>Tools ==> Protonation==> pKa Options (panel) ==>Mode ==>set here micro (the default is MACRO)


I drew NH4+, changed the option to micro, and I was told that no ionizable atoms were found. ?!?!? So evidently, I still can't find the pKa of NH4+ unless I know that it is the "basic pKa" of NH3.
Quote:



5. If you know the (Macro) pKa and pH you can calculate the concentration of all microspecies.
I don't care about concentrations of microspecies. I want to know the pKa of the molecule I submit. If I wanted to know the pKa of CH3OH, I would submit CH3OH. But I don't. I want to know the pKa of CH3O-. If the result is NaN, that's fine.
Quote:



6. Please note that the pKa of very weak basic sites like esters, alcohols, and esters are not calculated at all by the present pKa version.


And pKa of very weak acidic sites in aliphatic amines not calculated as well.
OK, it's useful to know that. What is the largest pKa that can be calculated? What is the smallest?





The problem here is that I don't know what species you are returning a value for, and I don't know whether to look in acidic pKa or basic pKa. And the microspecies option, if that's what it's supposed to do, doesn't seem to work.





You're making this process entirely too complicated. Acidic pKa should return the pKa of the species I submit. Basic pKa should return the pKa of the conjugate acid of the species I submit. Period. I shouldn't need to worry about microspecies, blah blah blah. Don't give me an answer to a question I'm not asking.

User 870ab5b546

27-07-2006 02:32:39

With much effort, I have come up with an algorithm that deconvolutes your plugin's results into meaningful results. In pidgin Java:





Code:
   switch (charge of cpd) {


      case 0:


         first acidic pKa = pKa of the cpd


         first basic pKa = pKa of the conjug acid of the cpd


      case -1, -2, -3:


         plugin adds one/two/three H atoms


         1st/2nd/3rd acidic pKa = pKa of the conjug acid of the original cpd


      case 1, 2, 3:


         plugin removes one/two/three H atoms


         1st/2nd/3rd basic pKa = pKa of the original cpd


   }








Note how "acidic pKa" and "basic pKa" are poor descriptions of what is actually being measured when the original compound is charged. For example, the basic pKa of a neutral molecule is the pKa of its conjugate acid, but the basic pKa of a cation is the pKa of the compound itself. And you store the pKa of the conjugate acid of an anion in "acidic pKa", and you store the pKa of a cation in "basic pKa". Bizarre. It would be at least a little more sensible if you stored the anions' conjugate acid pKa's in "basic pKa" and the cations' pKa's in "acidic pKa".





On another note: Why don't you have a method that returns the total charge on a Molecule? We had to write our own to use here and elsewhere.

User 851ac690a0

27-07-2006 04:20:28

Hi,





1. "So why is NH4+ transformed into NH3?"





Why not? It is transformed due to algorithmic reasons.


Your molecule will remain the same. No?











2. "NH4+ can lose a proton more easily than NH3"


Yes it is true.





3. "And if you regard pKa as only being related to the loss of a proton, why do you have a quantity called "basic pKa", and why do you give NH3 a value of 9 for its basic pKa?"





When NH3 is immersed into water it will gain a proton this is why I use the "basic" prefix. Not mandatory to put the "basic" prefix, of course. pKa calculator is so intelligent that it can decide whether "basic" prefix can be used or not.


"basic” or "acidic" prefix is used in the sense of practical reasons.











4. "I drew NH4+, changed the option to micro, and I was told that no ionizable atoms were found. ?!?!?"





I will check what can I do with this micro pKa problem.


Microstate means that molecule is "frozen" and no free basic atom available for protonation. This is why micro pKa not calculated.











5. "So evidently, I still can't find the pKa of NH4+ unless I know that it is the "basic pKa" of NH3."





Sorry, What do you mean on pKa? (micro? or macro?)








6. "I don't care about concentrations of microspecies. I want to know the pKa of the molecule I submit. If I wanted to know the pKa of CH3OH, I would submit CH3OH. But I don't. I want to know the pKa of CH3O-. If the result is NaN, that's fine."








Micro pKa of CH3O- is NaN since O(-) can not lose a proton.





However, You may need care about microspecies when a molecule has more than 1 pKa value!!!








7."What is the largest pKa that can be calculated? What is the smallest?"








No such kind of limit exists in the pKa calculator.








8. "The problem here is that I don't know what species you are returning a value for "


If micro pKa calculated than your original molecule returned.


If macro pKa calculated than your original molecule returned as well,


and the calculated macro pKa values are assigned to atoms of the original molecule. (the pKa calculator uses microspecies; you don't need to care about this)











9. "and I don't know whether to look in acidic pKa or basic pKa".





Red color means acid while blue means basic in Marvin GUI.


In cxcalc text massege is clear.





10. "And the microspecies option, if that's what it's supposed to do, doesn't seem to work."





It work well, otherwise, macro pKa calculation would be bad. The only problem that it does not meet your requirement. See my 4th note.

















11. "You're making this process entirely too complicated"





Every new is difficult in the life. I don't think that it would be difficult.


Just draw a molecule, press enter and result is there. Don't you think so?














12. "On another note: Why don't you have a method that returns the total charge on a Molecule? We had to write our own to use here and elsewhere."








Because nobody else asked for this function yet. I will ask somebody to write a suitable function for this parameter somewhere in a java class.








Jozsi

User 870ab5b546

27-07-2006 12:39:52

Jozsi wrote:
1. "So why is NH4+ transformed into NH3?"





Why not? It is transformed due to algorithmic reasons.


Your molecule will remain the same. No?


The molecule remains the same, but how am I supposed to know that you are returning the acidic pKa for this acid in the basic pKa field, the same as if I had submitted NH3? And CH3O- is a base, but you return its pKa in the acidic pKa field, the same as if I had submitted CH3OH! It makes no sense to return the same pKa value in the same field for an acid AND its conjugate base.
Quote:
4. "I drew NH4+, changed the option to micro, and I was told that no ionizable atoms were found. ?!?!?"





I will check what can I do with this micro pKa problem.


Microstate means that molecule is "frozen" and no free basic atom available for protonation. This is why micro pKa not calculated.


But there is an acidic atom available for deprotonation in NH4+. So why don't you give me the pKa? (It should be returned in the acidic field.)
Quote:
However, You may need care about microspecies when a molecule has more than 1 pKa value!!!


Look, this is very easy to handle.





Define "acidic pKa" as the pKa of the species that is submitted.


Define "basic pKa" as the pKa of the conjugate acid of the species that is submitted.





for H2O, acidic pKa[0] = 16, basic pKa[0] = -1


for H3O+, acidic pKa[0] = 1, acidic pKa[1] = 16


for HO-, basic pKa[0] = 16, basic pKa[1] = -1, acidic pKa[0] = NaN


for H3N, basic pKa[0] = 9, acidic pKa[0] = 35


for NH4+, acidic pKa[0] = 9, acidic pKa[1] = 35, basic pKa = NaN





For a species like HPO4(2-):


acidic pKa[0] = 13


basic pKa[0] = 7


basic pKa[1] = 2





Voilà! Straightforward, intuitive, easy for a chemist to understand. The value I am looking for is always placed in a predictable field, regardless of the charge on the species. Note the algorithm in my previous post needs to use the charge on the compound to figure out where you put the value I am looking for. That's just silly.

User 851ac690a0

27-07-2006 18:46:16

Hi,








1. "... the same as if I had submitted NH3?"





Yes, because if the submitted site (NH4+) has (+) charge then "basic" prefix is assigned to the pKa. Because it is supposed that the parent (NH3) is a basic site ==> this is the origin of the basic prefix of the calculated pKa.





2. "But there is an acidic atom available for deprotonation in NH4+. So why don't you give me the pKa?"





I will check what is the problem. You can use the macro pKa now. Of course basic prefix assigned now.








3. "Look, this is very easy to handle."





I summarized your “acidic “and “basic” pKa definition in the next four points.





A; calculate macro pKa





B; if submitted site has not got charge then assign "acidic" and "basic" prefixes as the same way than now





C; if submitted site has (+) charge then assign "acidic" prefix





D; if submitted site has (-) charge then assign "basic" prefix








Yes, I think setting prefixes in this way is an alternative of the present one.








Implementing this setting is easy, you can do yourself.








Jozsi

User 870ab5b546

27-07-2006 20:04:06

Jozsi wrote:
I summarized your “acidic “and “basic” pKa definition in the next four points.





A; calculate macro pKa





B; if submitted site has not got charge then assign "acidic" and "basic" prefixes as the same way than now





C; if submitted site has (+) charge then assign "acidic" prefix





D; if submitted site has (-) charge then assign "basic" prefix





Yes, I think setting prefixes in this way is an alternative of the present one.





Implementing this setting is easy, you can do yourself.
No, you misunderstand my point completely. My method has nothing to do with charge. My method requires to know only whether a submitted substance is acting as an acid (giving up a proton) or as a base (accepting a proton). If it is acting as an acid, the pKa value goes in "acidic pKa". If it is acting as a base, the pKa value goes in "basic pKa". Charge is completely, totally irrelevant. Your method is so confusing because you change the definition of "acidic pKa" and "basic pKa" depending on the charge.





And yes, I can write code that will implement the sensible settings myself. In fact, here is our code to workaround the pKa plugin's idiosyncrasies. (The code returns false if a molecule has a basic pKa above a certain limit or an acidic pKa below a certain limit. Whether it looks at acids or bases is determined by the boolean acidic.)





Code:
      double acidicUpperLimit=20.0, basicLowerLimit=-10.0; // defaults


      if (acidic) acidicUpperLimit = pKvalue;


         else basicLowerLimit = pKvalue;


      


      plugin.setMaxIons(8);            // default   8


      plugin.setBasicpKaLowerLimit(basicLowerLimit); 


      plugin.setAcidicpKaUpperLimit(acidicUpperLimit); 


...


         for (molIndex=0; molIndex < stage.getNumMolecules(); molIndex++) {


            molecule = stage.getMolecule(molIndex);


            plugin.setMolecule(molecule);


            runOK = plugin.run();


   /* ------------------------


   Here is the bizarre behavior of the plugin:


   switch (charge of cpd) {


      case 0:


         first acidic pKa = pKa of the cpd


         first basic pKa = pKa of the conjug acid of the cpd


      case -1, -2, -3:


         it adds one/two/three H atoms


         1st/2nd/3rd acidic pKa = pKa of the conjug acid of the original cpd


      case 1, 2, 3:


         it removes one/two/three H atoms


         1st/2nd/3rd basic pKa = pKa of the original cpd


   }


   ---------------------------  */


            int cpdCharge = MolFunctions.getTotalCharge(molecule.toFormat("mol"));


            String ordinal = null;  // for the log only


            switch (Math.abs(cpdCharge)) {


               case 1: ordinal = "   "; break;


               case 2: ordinal = "   2nd "; break;


               case 3: ordinal = "   3rd "; break;


            } // switch


            if (cpdCharge < 0) {


               // get pKa of conjugate acid from acidicpKa


               plugin.getSortedValues(pKaPlugin.ACIDIC, pKa, pKaIndices);


               int chgIndex = -1 - cpdCharge;


               System.out.println(ordinal + "pKa of conjugate acid of "


                  + molecule.getFormula() + " = " + pKa[chgIndex]);


               if ( !Double.isNaN(pKa[chgIndex])


                  && !acidic && (pKa[chgIndex]>pKvalue) ) return false;


            } else if (cpdCharge > 0) {


               // get pKa of cpd from basicpKa


               plugin.getSortedValues(pKaPlugin.BASIC, pKa, pKaIndices);


               int chgIndex = cpdCharge - 1;


               System.out.println(ordinal + "pKa of "


                  + molecule.getFormula() + " = " + pKa[chgIndex]);


               if ( !Double.isNaN(pKa[chgIndex])


                  && acidic && (pKa[chgIndex]<pKvalue) ) return false;


            } else {  // (cpdCharge == 0)


               // get pKa from acidicpKa or basicpKa, as appropriate


               plugin.getSortedValues(acidicOrBasic, pKa, pKaIndices);


               System.out.println(" pKa of "


                  + ( acidic ? "" : "conjugate acid of ")


                  + molecule.getFormula() + " = " + pKa[0]);


               if ( !Double.isNaN(pKa[0])


                  && ( (acidic && pKa[0]<pKvalue)


                     || (!acidic && pKa[0]>pKvalue) ) )


                        return false;


            } // cpdCharge


         } // for each molecule in a stage


         return true;








It shouldn't be this hard. Here is how it would read if you adopted my definitions:





Code:
      double acidicUpperLimit=20.0, basicLowerLimit=-10.0; // defaults


      if (acidic) acidicUpperLimit = pKvalue;


         else basicLowerLimit = pKvalue;


...      


      plugin.setMaxIons(8);            // default   8


      plugin.setBasicpKaLowerLimit(basicLowerLimit); 


      plugin.setAcidicpKaUpperLimit(acidicUpperLimit); 





         for (molIndex=0; molIndex < stage.getNumMolecules(); molIndex++) {


            molecule = stage.getMolecule(molIndex);


            plugin.setMolecule(molecule);


            runOK = plugin.run();


            // get pKa from acidicpKa or basicpKa, as appropriate


            plugin.getSortedValues(acidicOrBasic, pKa, pKaIndices);


            System.out.println(" pKa of "


               + ( acidic ? "" : "conjugate acid of ")


               + molecule.getFormula() + " = " + pKa[0]);


            if ( !Double.isNaN(pKa[0])


               && ( (acidic && pKa[0]<pKvalue)


                  || (!acidic && pKa[0]>pKvalue) ) )


                     return false;


         } // for each molecule in a stage


         return true;








During my recent trip to Budapest, György seemed quite chagrined when I told him that we sometimes had to write workarounds because of certain decisions ChemAxon had made. This pKa plugin is by far the most egregious example of a ChemAxon method making us jump through hoops to get the answer we are trying to get. Show this conversation to György and ask him about it.

User 851ac690a0

27-07-2006 21:33:02

Hi,





"No, you misunderstand my point completely.".





I don't misunderstand you.


I just translated your defenition about "acidic pKa" and "basic pKa".








"And yes, I can write code that will implement the sensible settings myself"





Ok. Thanks.





Jozsi

ChemAxon d76e6e95eb

28-07-2006 09:08:28

This is a very interesting conversation, we will discuss it with some of my collegues.

User 870ab5b546

28-07-2006 12:21:54

Jozsi wrote:
Hi,


I summarized your “acidic “and “basic” pKa definition in the next four points.





A; calculate macro pKa





B; if submitted site has not got charge then assign "acidic" and "basic" prefixes as the same way than now





C; if submitted site has (+) charge then assign "acidic" prefix





D; if submitted site has (-) charge then assign "basic" prefix


Here is a better way of thinking about it that allows you to retain how you calculate pKa's.





A; calculate macro pKa





B; pKa's leading to microspecies that are more protonated than the submitted microspecies are stored in "basic pKa"; pKa's leading to microspecies that are less protonated than the submitted microspecies are stored in "acidic pKa"





Note: no dependence on charge.





All I am suggesting is that you change where you return the results of your calculation.

User 851ac690a0

28-07-2006 15:55:06

Hi,








1. "Here is a better way of thinking about it that allows you to retain how you calculate pKa's."








The question is not how to calculate pKa. The question is how you want to assign "basic" and "acidic" prefix to calculated pKa if site(s) has charge. It have been your initial problem.





At any rate the two points A and B are equivalent with the "A-D" points. Implementing of "A-D" points is clear and easy. "A-B" is too abstract for programming purposes.











2. "Note: no dependence on charge".





Yes , because you don't use explicitly the word "charge". Insted of charge you use "more protonated or less protonated" expressions.








3. "All I am suggesting is that you change where you return the results of your calculation."








It is possible to introduce a new option for assigning "basic" and "acidic" prefixes according to your definition.








Jozsi

User 870ab5b546

28-07-2006 17:17:07

Jozsi wrote:
Yes , because you don't use explicitly the word "charge". Insted of charge you use "more protonated or less protonated" expressions.


Yes, because that's how chemists think about it! And besides, how would your algorithm deal with species such as HS(-), which are negatively charged but can still act as acids or bases? The point is, you don't need to consider the neutral, positive, and negative cases separately. You just compare the number of H atoms in each microspecies, and that determines the prefix and the numerical index. I find it hard to believe that it is programmatically difficult to compare the number of H atoms.
Quote:
It is possible to introduce a new option for assigning "basic" and "acidic" prefixes according to your definition.
Yes, yes, thank you, that is exactly what I want. Then users who sussed out your current definition and wrote their programs around it can continue to use it, and everyone else can use the chemically sensible definition.





That brings up another issue: Perhaps I am just obtuse, but nowhere in your documentation can I find a definition of "basic pKa" and "acidic pKa". I looked in the API and at http://www.chemaxon.com/marvin/chemaxon/marvin/help/pKa.html.

User 851ac690a0

28-07-2006 19:42:55

Hi,





1 "how would your algorithm deal with species such as HS(-), which are negatively charged but can still act as acids or bases?"





No problem, it would be defined as multiplie site.





2 ".... You just compare the number of H atoms in each microspecies, and that determines the prefix and the numerical index."





This is not clear to me. Could you give me more explanation; what do you mean on this?





3 "...nowhere in your documentation can I find a definition of "basic pKa" and "acidic pKa""











Only Definition of pKa included here: MarvinSketch==> HELP==>Contents ==>Calculator Plugins ==> pKa Plugin ==> Learn More








Jozsi

User 870ab5b546

28-07-2006 21:03:22

Jozsi wrote:
Hi,





1 "how would your algorithm deal with species such as HS(-), which are negatively charged but can still act as acids or bases?"





No problem, it would be defined as multiplie site.


Sorry, I meant to say, your interpretation of my algorithm. It says,





D; if submitted site has (-) charge then assign "basic" prefix





so both the pKa for HS- + H+ -> H2S and the pKa for HS- -> S(2-) + H+ would be stored in "basic pKa". My algorithm says,





B; pKa's leading to microspecies that are more protonated than the submitted microspecies are stored in "basic pKa"; pKa's leading to microspecies that are less protonated than the submitted microspecies are stored in "acidic pKa"





so the pKa for HS- + H+ -> H2S would be stored in "basic pKa", and the pKa for HS- -> S(2-) + H+ would be stored in "acidic pKa".





Jozsi wrote:
2 ".... You just compare the number of H atoms in each microspecies, and that determines the prefix and the numerical index."





This is not clear to me. Could you give me more explanation; what do you mean on this?
Suppose I submit HPO4(2-). Your calculation generates four microspecies: H3PO4, H2PO4-, HPO4(2-), and PO4(3-). The pKa's leading to the second and first microspecies would be stored in basicpKa[0] and basicpKa[1], because H2PO4- and H3PO4 have one more and two more H atoms than the compound submitted, respectively. The pKa leading to the fourth microspecies would be stored in acidicpKa[0], because PO4(3-) has one fewer H atom than the compound submitted.





Yes, the values of acidicpKa[] and basicpKa[] would differ depending on which microspecies was submitted. That's the whole point.
Quote:
Only Definition of pKa included here: MarvinSketch==> HELP==>Contents ==>Calculator Plugins ==> pKa Plugin ==> Learn More
Exactly, that's the problem. You don't tell the programmer how you determine what values to put in pKa[] when the constant is BASIC or ACIDIC. You need to do.

User 851ac690a0

29-07-2006 02:01:59

Hi,











Ok. Your explanation is clear for H3PO4 and H2S.








Could you explain the next example as well?








p-amino-pyridine. (AnilPyr)





Submitted microspecies is Anil(+)Pyr











Jozsi

User 870ab5b546

29-07-2006 03:00:00

I'm not sure what you mean by Anil(+)Pyr. If you mean,





Code:
<?xml version="1.0" ?>


<MDocument>


  <MChemicalStruct>


    <molecule molID="m1">


      <atomArray


          atomID="a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13"


          elementType="C C N C C C N C C C C C C"


          formalCharge="0 0 0 0 0 0 1 0 0 0 0 0 0"


          x2="-2.450000047683716 -3.7836693887319743 -3.7836693887319743 -2.450000047683716 -1.1163307066354573 -1.1163307066354573 0.21734841519257841 1.5510275370206141 2.8846968780688726 1.5510275370206141 2.8846968780688726 4.218366219117131 4.218366219117131"


          y2="3.1733672065041283 2.403350265945088 0.8633163848270069 0.09329944426796644 0.8633163848270069 2.403350265945088 3.173350265945088 2.403350265945088 3.1733672065041283 0.8633163848270069 0.09329944426796644 0.8633163848270069 2.403350265945088"


          />


      <bondArray>


        <bond atomRefs2="a1 a2" order="1" />


        <bond atomRefs2="a1 a6" order="2" />


        <bond atomRefs2="a2 a3" order="2" />


        <bond atomRefs2="a3 a4" order="1" />


        <bond atomRefs2="a4 a5" order="2" />


        <bond atomRefs2="a5 a6" order="1" />


        <bond atomRefs2="a6 a7" order="1" />


        <bond atomRefs2="a7 a8" order="1" />


        <bond atomRefs2="a9 a8" order="1" />


        <bond atomRefs2="a8 a10" order="2" />


        <bond atomRefs2="a9 a13" order="2" />


        <bond atomRefs2="a10 a11" order="1" />


        <bond atomRefs2="a11 a12" order="2" />


        <bond atomRefs2="a12 a13" order="1" />


      </bondArray>


    </molecule>


  </MChemicalStruct>


</MDocument>








then the acidic pKa is for loss of H+ from the non-ring N, and the basic pKa is for gain of H+ by the ring N (probably =NaN).





Now, I think you may be concerned that your calculation won't be able to return a value for the species above, because it has a lower-energy tautomer, and your macrospecies calculation may not find the higher-energy tautomer as one of the microspecies. But that would be a flaw in your algorithm for calculating pKa's, not a flaw in my logic.





An enolate also has two basic pKa values: one for protonating the C, one for protonating the O. Usually we discuss only the higher value, for protonation of C. As a result, the acidic pKa of the carbonyl compound is exactly the same as the basic pKa of the enolate, but the acidic pKa of the enol is lower than the carbonyl compound (more favorable), because the enol is higher in energy; it corresponds to the lower pKa of the enolate.





A pKa is essentially a measure of an equilibrium constant. To measure an equilibrium constant, you need to know the starting materials and the products. In the case of acidity, we usually assume the protonated form, whether it's the starting material or product, is the lowest-energy tautomer. But of course, we may sometimes specify that it is not, and then the equilibrium constant will be different, and hence there will be a different pKa.





(By the way, on your pKa plugin help pages, you use a double-headed resonance arrow where you should use two separate and opposing arrows for equilibrium. I know you are using the resonance arrow because it is represented in the character set whereas the equilibrium arrows are not, but it is incorrect usage, and it makes you seem unknowledgeable about chemistry. You should make an image of an equilibrium arrow and use it instead.)

User 851ac690a0

29-07-2006 03:27:57

Hi,





I mean this submitted microspecies


[NH3+]c1ccncc1








Could you list microspecies you would take into account and explain what pKa would you consider in your "basic" , "acid" definition.





This molecule has two macro pKa (-2 and 9)








Jozsi

User 870ab5b546

29-07-2006 03:40:38

Jozsi wrote:
Hi,





I mean this submitted microspecies


[NH3+]c1ccncc1








Could you list microspecies you would take into account and explain what pKa would you consider in your "basic" , "acid" definition.





This molecule has two macro pKa (-2 and 9)








Jozsi
Have you been up all ngiht, or are you just an early riser?





That's called 4-ammoniopyridine. basicpKa[0] = -2 for gain of H+ by the endocyclic N. I don't know what acidicpKa[0] would be, because I suspect that your calculated value of 9 is for equilibrium of the neutral compound with ring-protonated N, not the exocyclic N. If my suspicion is wrong, then acidicpKa[0] = 9. If it is right, then acidicpKa[0] < 9 by some amount that I do not know. Same problem as discussed in my previous reply: your algorithm does not know how to handle higher-energy tautomers.

User 851ac690a0

29-07-2006 03:52:25

Hi,





"Have you been up all ngiht, or are you just an early riser?"


I just went to bed too late.








I would expect the same type of explanation for this [NH3+]c1ccncc1 than you have explained HPO4(2-).


What kind of micropsecies you consider in this case?








Jozsi

User 870ab5b546

29-07-2006 04:15:32

For [NH3+]c1ccncc1, basic pKa[0] = -2.





The acidic pKa[0] for [NH3+]c1ccncc1 is a more complex issue. The number you cited for the acidic pKa of [NH3+]c1ccncc1 is almost certainly incorrect. When NC1=CC=NC=C1 is protonated, the product is not most often [NH3+]c1ccncc1, but NC1=CC=[NH+]C=C1. The pKa value of 9 that you cited is for NC1=CC=[NH+]C=C1 -> NC1=CC=NC=C1 + H+, not for [NH3+]c1ccncc1 -> NC1=CC=NC=C1 + H+. For the latter reaction, the pKa value is much lower, certainly less than that of aniline (NC1=CC=CC=C1), which is ca. 5. So let me guess and say that acidic pKa[0] for [NH3+]c1ccncc1 is ca. 2.





By contrast, for NC1=CC=NC=C1, basic pKa[0] = 9 and basic pKa[1] = -2. And for NC1=CC=[NH+]C=C1, basic pKa[0] = -2 and acidic pKa[0] = 9.





Again, this example shows the problem with calculating pKa's not of the submitted compounds, but of other compounds. It also shows the problem with your macrospecies/microspecies approach: it does not consider higher-energy tautomers.

User 851ac690a0

29-07-2006 10:19:04

Hi,








I can not accept your explanation. You confuse macro and micro pKa.


You confuse micro and macro state of a molecule.








Observed pKa of 4-aminopyridine is: -2, and 9.0;





9.0 is related with aromatic nitrogen and -2 is related with NH2;








For HPO4(2-) and HS(-) you were lucky, because macro and micro specieses are the same. In other words macro inonization steps are the same than micro ionization step. This is why you were able to explain well your "basic" "acidic" definition with microspecies.








However, for [NH3+]c1ccncc1 molecule, macro and micro species are different. This is why you can not explain your definition.




















Jozsi

User 870ab5b546

29-07-2006 13:03:58

If you are talking about "observed" pKa's, when you are titrating the solution, by the time you reach pH = -2, the ring N is completely protonated, so you are measuring the equilibrium for [NH3+]c1cc[NH+]cc1 -> [NH3+]C1=CC=NC=C1 + H+.





However, if the pKa of -2 is for [NH3+]c1ccncc1 -> NC1=CC=NC=C1 + H+, the answer is very easy:





For [NH3+]c1ccncc1, acidicpKa[0] = -2, and basicpKa[0] = some ridiculously low number.





For NC1=CC=[NH+]C=C1, acidic pKa[0] = 9, and basicpKa[0] = some ridiculously low number.





For NC1=CC=NC=C1, acidic pKa[0] = ca. 20-25 (a guess), basicpKa[0] = 9, and basicpKa[1] = some ridiculously low number.





I suppose, for dibasic (or diacidic) compounds such as NC1=CC=NC=C1, you could introduce an additional atom index parameter to acidicpKa or basicpKa to indicate which particular atom you are talking about. In this scenario, for NC1=CC=NC=C1, basicAtompKa[0,5] = 9, and basicAtompKa[0,1] = -2.





On the other hand, if the pKa of -2 is for [NH3+]c1cc[NH+]cc1 -> NC1=CC=[NH+]C=C1 + H+, then:





For [NH3+]c1ccncc1, acidicpKa[0] and basicpKa[0] are both unknown (but different) numbers between 9 and -2.





For NC1=CC=[NH+]C=C1, acidic pKa[0] = 9, and basicpKa[0] = -2.





For NC1=CC=NC=C1, acidic pKa[0] = ca. 20-25 (a guess), basicpKa[0] = 9, and basicpKa[1] = -2.





You're right that I confuse macrospecies and microspecies. I had never heard these terms before I read your documentation. They're not terms that organic chemists use. It's one of the reasons the way you present this data flabbergasts me.

User 870ab5b546

30-07-2006 00:54:24

I see now that in Example 1 of your pKa plugin documentation, you have a good example of the kind of problem we have been discussing with all the appropriate microionization constants.





Call the four microspecies of 4-aminobenzoic acid that are in Example 1, North, South, East, and West.





For North, acidicpKa[0] = 2.72 (N to W), and acidicpKa[1] = 4.74 (W to S).


For West, basicpKa[0] = 2.72 (W to N), and acidicpKa[0] = 4.74 (W to S).


For East, basicpKa[0] = 3.93 (E to N), and acidicpKa[0] = 4.31 (E to S).


For South, basicpKa[0] = 4.74 (S to W), and basicpKa[1] = 2.72 (W to N).





North will also have a basicpKa[0] leading to (NH3+)C6H4CO2H.


South will also have an acidicpKa[0] leading to (NH-)C6H4CO2-.

User 870ab5b546

11-08-2006 16:16:40

This conversation ended quite suddenly. What do you think of my last reply?

User 870ab5b546

14-08-2006 16:49:02

Here's another interesting case. This compound:





Code:
<?xml version="1.0" ?>


<MDocument>


  <MChemicalStruct>


    <molecule molID="m1">


      <atomArray


          atomID="a1 a2 a3 a4 a5 a6 a7"


          elementType="C C O C O C C"


          formalCharge="0 0 -1 1 0 0 0"


          x2="-11.608333110809326 -10.27465398898129 -8.940974867153255 -8.940974867153255 -7.607295745325219 -6.273616623497183 -5.503616623497183"


          y2="9.975000143051147 9.205000143051148 11.515000143051147 9.975000143051147 9.205000143051148 9.975000143051147 8.641321021223112"


          />


      <bondArray>


        <bond atomRefs2="a1 a2" order="1" />


        <bond atomRefs2="a2 a4" order="1" />


        <bond atomRefs2="a4 a3" order="1" />


        <bond atomRefs2="a4 a5" order="1" />


        <bond atomRefs2="a5 a6" order="1" />


        <bond atomRefs2="a6 a7" order="1" />


      </bondArray>


    </molecule>


  </MChemicalStruct>


</MDocument>








is a resonance structure of an ester. When I calculate its pKa, it associates an acidic pKa of -1.92 with the O. When I draw the major resonance form, it correctly calculates an acidic pKa of 22.





Evidently, your algorithm adds an H atom to the O, leaving the C+ untouched, then decides that the pKa for losing H+ is –1.92.





What do you suggest?

User 851ac690a0

16-08-2006 01:49:28

Hi,





This conversation ended quite suddenly. What do you think of my last reply?





Meanwhile I started to implement your definition. It is almost ready.





What do you suggest?


Take canonical resonance form and submit for pKa calc.








Jozsi

User 870ab5b546

16-08-2006 02:18:00

Jozsi wrote:
Take canonical resonance form and submit for pKa calc.
Another reason we need a version of JChem that contains the new Marvin methods!





Any progress on that? Last week, Szilard told me an alpha version would be ready "early next week", and we're already in midweek now.

ChemAxon e08c317633

24-08-2006 10:51:52

Bob, we have implemented your definition. In the next Marvin version you can choose which you want to use.





Can you suggest a name for this options? It will appear on the options panel. We have one, but not everybody likes it.

User 870ab5b546

24-08-2006 12:00:43

Hmm, good question. "Results dependent on submitted microspecies" and "Results independent of submitted microspecies" are descriptive, but long.





Instead of specifying an option, you could provide a new method, getPKasOfSubmittedMicrospecies(). It could return double[][], where the first array constant is ACIDIC or BASIC, and the second is 0, 1, 2, ....





Whatever course you choose, be sure to document the differences between the methods in great detail. Specific examples would be helpful. One of the reasons I was so frustrated at first was that the documentation did not at all explain how the data was stored.

User 870ab5b546

26-10-2006 02:52:51

Zsolt wrote:
Bob, we have implemented your definition. In the next Marvin version you can choose which you want to use.





Can you suggest a name for this options? It will appear on the options panel. We have one, but not everybody likes it.
Hi,





I've upgraded to Marvin 4.1.2, and I don't see in the GUI the options panel where I am supposed to choose the definition of acidic and basic pKa. Or is this option accessible only from Java? But if so, why do you mention an options panel?





-- Bob

ChemAxon e08c317633

26-10-2006 07:41:54

bobgr wrote:
Zsolt wrote:
Bob, we have implemented your definition. In the next Marvin version you can choose which you want to use.





Can you suggest a name for this options? It will appear on the options panel. We have one, but not everybody likes it.
Hi,





I've upgraded to Marvin 4.1.2, and I don't see in the GUI the options panel where I am supposed to choose the definition of acidic and basic pKa. Or is this option accessible only from Java? But if so, why do you mention an options panel?





-- Bob
Hi,





It will be accessible from GUI, cxcalc and API, but it will be released only in Marvin 4.1.3.





The new calculation method is implemented, but we have found a bug - affecting the command line (cxcalc) output of the pKa calculation - in the development version. That's why this new option was not released with Marvin 4.1.2.





Sorry for the delay.





Best regards,


Zsolt

User 870ab5b546

26-10-2006 10:23:34

OK, I understand.





But now I have another question. I am using the getpKa(index, type) method to get pKa's of individual atoms in compounds. From what I can tell, this method returns only the first acidic and first basic pKa (your definition) of an atom. When the atom is charged, your method protonates or deprotonates the atom to neutrality, then gets the acidic and basic pKas. In the case of atoms with 2- charges, e.g., RN2-, this method will not return the pKa of the conjugate acid of the submitted species. And in the case of atoms with 2+ charges, it will not return the pKa of the submitted species. Correct? Or is there a way to get an array of three pKa's for individual atoms as well as whole molecules?





-- Bob

User 851ac690a0

26-10-2006 12:59:51

Hi,





...Correct?.





Yes it is correct.


However I need to say that this is not a definiton problem of our method.





e.g for protonated aniline these three pKa can be assigned:











RNH3(+), RNH2, pKa1=4.5


RNH2, RNH(-), pKa2=25


RNH(-), RN(2-) pKa3=50(?)





pKa3 is not calculated with the present version of pKa calculator.





It is generally true for the present version of pKa calculator that, max. ionization level allowed for an individual atom is +1 or -1.








Or is there a way to get an array of three pKa's for individual atoms as well as whole molecules?











Yes. A more general public function going to available in the next marvin (4.1.3) for getting array of pKa's of an individual atom.











Jozsi

User 870ab5b546

26-10-2006 18:58:37

Jozsi wrote:
It is generally true for the present version of pKa calculator that, max. ionization level allowed for an individual atom is +1 or -1.
I'm sure that suffices for most applications, but I'm dealing with undergrads here. Oh well, I'll add a filter for multiply charged atoms.





How do I get the acidic pKa (your definition) or basic pKa (my definition) of H- or C4H9-? Will it be possible when you implement my definitions? Even if you think it is not worth calculating, it would be very useful to provide an estimated value.

User 851ac690a0

26-10-2006 20:09:30

Hi,








How do I get the acidic pKa (your definition) or basic pKa (my definition) of H- or C4H9-? Will it be possible when you implement my definitions?








Calculation of pKa of H- or C4H9- is not a definition question.





pKa calculation of H2 (H(-)) and some "CH" acids are not included in the pKa calculator. e.g. pKa of butane is not calculated.





Your definition already implemented. You can test it soon.








Even if you think it is not worth calculating, it would be very useful to provide an estimated value.








I think it would be worth calculating.











Jozsi

User 870ab5b546

26-10-2006 20:51:05

Jozsi wrote:
I think it would be worth calculating.
Well, I agree that it is worth calculating, but you seem to have decided not to calculate it, and, if you're not going to calculate it, I would like at least to receive an estimated value from the calculator instead of that awful NaN, which tells me nothing.





How nonacidic does an acid have to be before you stop calculating its pKa? Presumably you would calculate the pKa of acetone (20)? Acetylene (25)? What about DMSO (30)?

User 851ac690a0

31-10-2006 01:13:56

Hi,








How nonacidic does an acid have to be before you stop calculating its pKa? Presumably you would calculate the pKa of acetone (20)? Acetylene (25)? What about DMSO (30)?





Sometime the pKa is not calculated even if the acid is very strong (pKa<<0) or oppositely if it is very weak (pKa>>0).








This situation occures if the acidic atom is UNKNOWN for the calculator algorithm.








for example: The "CH" atoms of acetone are KNOWN as acidic type atoms by the pKa calculator while the carbon atoms of benzene are UNKNOWN by the pKa calculator. An UNKNOWN atom type could become KNOWN atom type after teaching the pKa calculator with relevant info. concerned with the UNKNOWN atom type.











Jozsi

User 870ab5b546

31-10-2006 03:35:27

I don't suppose you could provide a GUI that would allow an administrator to make UNKNOWN types of acids KNOWN to the pKa calculator?





It would be analogous to how you allow an administrator to add to and customize the shortcut groups list.

User 851ac690a0

31-10-2006 12:01:08

Hi,





With introducing the 'KNOWN' and the 'UNKNOWN' attributes I just tried to explain our pKa development strategy. This development is not open for third party.





Development strategy of the pKa calculator is not related with your previous question: "How nonacidic does an acid have to be before you stop calculating its pKa?"


pKa is not calculated if an acidic atom type is UNKNOWN.





Jozsi

User 870ab5b546

31-10-2006 12:52:30

OK, then, could you provide documentation on which types of acids are KNOWN so that third-party developers at least know where to look for UNKNOWN types?





And I would like to suggest that the calculator should be able to recognize any submitted anion as a base and any submitted cation bearing an H as an acid. I'm fine with the calculator saying that the pKa of PhH is NaN; I have much more trouble with the calculator saying that the basic pKa (my definition) of Ph- is NaN.

User 851ac690a0

31-10-2006 13:39:40

Hi,





...could you provide documentation...


No, such kind of documentation not available.





...that the pKa of PhH is NaN; I have much more trouble with the calculator saying that the basic pKa (my definition) of Ph- is NaN.





From the pKa calculation point of view PhH and Ph- are the same problem.


If the pKa calculation of PhH will be solved then the pKa calculation of Ph- also solved.








Jozsi

User 870ab5b546

31-10-2006 13:50:15

Jozsi wrote:
No, such kind of documentation not available.
I figured it wasn't available. I'm asking you to make it available.
Jozsi wrote:
From the pKa calculation point of view PhH and Ph- are the same problem.


If the pKa calculation of PhH will be solved then the pKa calculation of Ph- also solved.
Well, yes and no. I understand that when I submit a structure with an anion, you first protonate it to neutrality and then calculate the pKa. But it would be cumbersome and unnecessary to calculate the pKa of every C atom in a compound. What I am suggesting is that you calculate the pKa only for those C atoms that are known to be acidic OR that are already deprotonated in the submitted structure. If I go to the trouble of submitting a structure with a deprotonated C atom, I want to know the basic pKa (my definition) of that atom! But I am unlikely to want to know the pKa's of other C atoms in the structure that remain neutral.





-- Bob

User 870ab5b546

12-11-2006 01:24:16

I have encountered another problem with the pKa calculator. I have been assuming that if I have a negatively charged atom, and the basic pKa is NaN, then the atom must be very basic. However, when I submit each atom in O2NCH2CO2Et to the pKa calculator, it finds that the O in the NO2 group has a basic pKa of NaN.





What do you suggest I do? I can't just ignore atoms that return values of NaN, because if I have a compound like CH3, your plugin returns NaN for the extremely basic C atom.





My problems would be solved if the plugin would estimate or calculate the acidic pKa (your definition) of every atom that has a negative charge, and the basic pKa (your definition) of every atom that has a positive charge.