Protonation states

24-09-2004 16:27:36

Given a pH-value, I would like to calculate the N most probable protonation states of a molecule using the Marvin API. How do I do that?

ChemAxon fb166edcbd

24-09-2004 17:37:46

We have the chemaxon.marvin.calculations.pKaPlugin class for this


purpose, the attached example code shows its usage.


Note the


Code:



params.put("mscalc", "true"); // microspecies calculation





line, it is important and the API doc does not mention this -


I will fix it for the next release.


Since the plugin is prepared to calculate the distributions


for a whole pH range (from lower pH to upper pH with specified


pH step), you should set this range instead of a single pH value


and will get the result as a double[] array. If you set the pH step


bigger than the pH range (upper - lower) then you will get a 1-length


array corresponding to the lower pH. I will also simplify this


in the next release.





An example run:


Code:



java MsTest t.mol


Microspecies    distribution at pH 3.4


------------------------------------------


NCCc1cc(C(O)=O)c(N)cc1C(O)=O    5.347414351318987E-6


NCCc1cc(C(O)=O)c([NH3+])cc1C(O)=O       3.413833274704238E-8


NCCc1cc(c(N)cc1C(O)=O)C([O-])=O 4.548150009744704E-6


NCCc1cc(C(O)=O)c(N)cc1C([O-])=O 3.7614997399809733E-6


Nc1cc(C(O)=O)c(CC[NH3+])cc1C(O)=O       23.29222735279577


NCCc1cc(c([NH3+])cc1C(O)=O)C([O-])=O    4.9881131735351495E-6


NCCc1cc(c([NH3+])cc1C([O-])=O)C(O)=O    6.078096243485594E-8


[NH3+]CCc1cc(C(O)=O)c([NH3+])cc1C(O)=O  0.1160158355995498


NCCc1cc(C([O-])=O)c(N)cc1C([O-])=O      7.114440880237923E-7


Nc1cc(C(O)=O)c(CC[NH3+])cc1C([O-])=O    21.758006439582875


Nc1cc(C([O-])=O)c(CC[NH3+])cc1C(O)=O    21.740610452662267


NCCc1cc(C([O-])=O)c([NH3+])cc1C([O-])=O 1.8998512244369232E-6


[NH3+]CCc1cc(c([NH3+])cc1C(O)=O)C([O-])=O       18.79404659825297


[NH3+]CCc1cc(C(O)=O)c([NH3+])cc1C([O-])=O       0.2735774290432635


Nc1cc(C([O-])=O)c(CC[NH3+])cc1C([O-])=O 4.522475563109383


[NH3+]CCc1cc(C([O-])=O)c([NH3+])cc1C([O-])=O    9.503018977562022








You can then sort the distribution values and take the N largest


in your code - currently there is no API support for this.