From Protein Analysis and Design Group

Jump to: navigation, search

Bookmark and Share

pKaTool is an interactive graphical tool for analysing systems of titratable groups. pKaTool started out as a small program that I used to teach myself how titratable systems behave. These days pKaTool has become bigger, and has a number of uses.

This page describes the Graphical User Interface to the pKaTool routines, but you can also use the pKaTool routines directly from python

See also these Examples or Screenshots and Figures to get an idea of what more pKaTool can do for you.

pKaTool consists of the pKaTool program and pKaSystem and is integrated with PEAT to allow the deposition of pKaTool and pKaSystem data and analyses in PEAT (see #PEAT integration for details).

We are working hard on integrating pKaTool with pKD server, and at the moment you can load and analyse pKa calculations from the pKD server in pKaTool. See #Loading calculation(s) from pKD server.


Obtaining pKaTool

pKaTool is freely available for everyone. You can download pKaTool for Mac OSX, Windows and Unix systems from the googlecode download page

Note that these installers can be (far) behind the current version, and I therefore recommend that you install via Subversion as detailed below.

Subversion access

If you prefer to download the latest development snapshot (I would recommend this if you know how to do it), then check out the following subversion repositories into your site-packages/ directory in your python installation dir.

cd site-packages
svn co ./
cd pKaTool

You will need [swig], python, Tkinter and numpy installed for the compilation step to work. The compilation step will not work on Windows.

On Ubuntu/Debian you should be able to do
sudo apt-get install python python-tk swig python-numpy
and everything should work.

Installation instructions


  1. Download and install Python
  2. Download and install Numeric Python
  3. Double-click on the pKaTool.exe executable

If you are using Windows Vista, then be sure to disable User Account Controls before starting the installation:


pKaTool has been tested only on Max OS X 10.5.4 so you might encounter difficulties with when using older versions of Max OS X.
If you have difficulties then please upgrade your Max OSX with all the most recent software upgrades.


  1. gunzip <filename>
  2. tar -xvf <filename>
  3. and now you can run in the created folder.

Analysing the results of a pKa calculation

When you start pKaTool you will see the main pKaTool window (right):

The main window of pKaTool

The top part of the window consists of the Groups in file box, Selected groups box and Group detail box plus buttons for selecting groups.

The titration curves of titratable groups in the selected groups box are displayed in the bottom part of the window, which contains a graph of charge vs. pH.

If you click the File dialog you will have a number of options for loading and saving pKa calculations. If you have a local pKa calculation, then choose Load calculation(s). pKaTool can read pKa calculations results from WHAT IF, pKD, pdb2pka and MEAD. If you want to load a WHAT IF pKa calculation from the pKD server then select Load calculation(s) from pKD server.

Note that you can load as many pKa calculation results at the same time as you want. When you want to switch between different pKa calculation results in pKaTool you simply use the Select pulldown menu and Display titration curves pulldown menus

Once you have loaded your pKa calculation results you can analyse them in several different ways:

  1. #Displaying and selecting titratable groups
  2. #Making sure your titration curves are useful
  3. Find specific titratable groups - i.e. an active site residue
  4. Searching for special titratable groups - i.e. a residue with increased pKa value
  5. Analyse the pH-dependence of protein stability
  6. Analyse a subset of the titratable groups with pKa_system

To start using pKaTool you can play with these Sample pKa calculations or take a look at the Tutorials

Displaying and selecting titratable groups

The main window of pKaTool provides you with a way to display specific sets of calculated titration curves. Use the top left selection window to select residues for which you want to display their titration curve. When you click a group in the top-left corner window, the right top side of the window will display the calculated properties for this group. The properties shown are listed below:

  • Model pKa values: The pKa value that the group is assumed to have in solution
  • The delta pKa values due to desolvation and the background interaction energy
  • The intrinsic pKa values = model pKa + dDesolv + dBackground
  • The delta pKa value due to the interaction with titratable groups
  • The final pKa value
  • The fit of the titration curve to a Henderson-Hasselbalch titration curve.

Making sure your titration curves are useful

It is important to verify that your titration curves are accurate enough for determining a pKa value.

pKa values in pKa calculations are mainly determined by finding the pH value where the charge on the residue in question is -0.5 in the case of an acid, and 0.5 in the case of a base.

If your titration curves are "jagged" or "bumpy" then it means that the pKa calculation method you are using is using an adequate method for calculating the charge on each residue at a given pH value. You might use too few Monte Carlo steps if you're using a Monte Carlo procedure, or you might be using the Tanford-Roxby method which is known to break down under certain conditions.

An additional requirement for accurately determining a pKa value is that the titation curve followes the shape of a Henderson-Hasselbalch titration curve as defined by the classic Henderson-Hasselbalch (HH) equation. In systems of strongly coupled titratable groups titration curves often deviate from the HH shape. This means, that for some groups you simply cannot calculate a meaningful pKa value.

Look closely for non-HH (non-Henderson-Hasselbalch) titration curves in your calculations since they can be a sign of errors/problems or a sign of something interesting.

It is very important to detect non-HH titration curves to know which calculated pKa values constitute real HH pKa values (in that they describe the entire pH dependence of the titration), and which pKa values are just a description of when a group is half-charged.

pKaTool can help you identify non-HH titration curves. See the section on Searching for special titratable groups

Find a specific titratable group

To find a specific titratable group in your protein simply look in the top-left box displaying all titratable groups. The groups are sorted according to chain identifier and residue number, and you should therefore have no problem locating the group of interest.

If you do not know the residue number or chain ID of your group, then you are in trouble and pKaTool cannot help you.

Find special titratable groups

Finding groups that have perturbed pKa values pKaTool includes a nice little function that allows searchers for groups whose pKa values have been lowered, raised or have a particular pKa value. Simply select the type(s) of groups you want to search for, enter the value and press the button.

Searching for non-HH titration curves In pKaTool you can find titration curves that are non-HH like by searching for groups that do not fit well to the HH description. Use the button "Select irregular titration curves" to find select titration curves that do not have a HH shape. You can enter a value between 0.0 and 1.0 in the field "Cutoff (slope of HH fit)" to select groups that are more or less like a HH titration curve. A perfect fit is 1.0, and the fit gets progressively worse the closer you get to zero.
In addition to finding groups in this way, you can also manually inspect the fit to the HH equation when you clikc on each titratable in the top left window.

Finding strongly interacting groups The interaction energies between pairs of titratable groups determine a large fraction of the pH-dependent behaviour of titratable groups. The stronger the interaction between two titratable groups, the more decisive that interaction can be for the pKa value of the group. Therefore it is of interest to be able to quickly identify the groups that interact strongly with a subset of groups. The button "Select groups interacting strongly with selected groups" finds groups that interact with any of the select groups with an interaction energy stronger or equal to the value the "cut-off" field.

Analysing the pH-dependence of protein stability

The pH-dependence of protein stability can be estimated by integrating the difference in the charge between the denatured and folded states of the protein as a function of pH: 
\Delta\Delta G_{stab}(pH)=\int _{pHstart} ^{pHend} \Delta Q_{(F \rarr U)} dpH. (See Tanford, Protein denaturation, Part C, Adv. Protein Chem., 1970). In pKaTool we assume that the pKa values of the unfolded form are unperturbed compared to those of model compounds(see Model pKa values) in solution.

This is sometimes a pretty big approximation - especially if the protein has some residual structure in the unfolded state - and we will improve this in later versions of pKaTool.

To display the pH-dependence of protein stability for a pKa calculation simply click the button in the right-hand of the screen entitled "Show stability profile".

Analysing a subset of the titratable groups with pKa_system

One of the most powerful options of pKaTool is that you can analyse a subset of the titratable groups in a protein interactively using pKa_system.

This functionality is useful for studying a small, local electrostatic system (such as an active site or a complicated salt bridge interaction network) in detail. To start analysing a subset of the titratable groups for your protein you must first have an idea of which titratable groups constitute the system.

Once you have identified the groups you simply select them in the upper-left hand box, and click the [[Add --> button]]. When you all of the groups you are interested in are selected, then click Show selected subsystem.

Modelling the rest of the protein while studying only a subset Because all titratable groups interact with all other titratable groups in a protein (at least to some extent), it is important that you are conscious of how you want to model the groups you are not studying. Aftter clicking Show selected subsystem you will be presented with three choices:

  1. Ignore the rest of the groups
  2. Model the rest of the groups as fixed charges (taking their charge at a certain pH)
  3. Model the rest of the groups as fixed titrating groups.

Option 1 can be used if you are quite sure that there are no strong interactions between the groups you have selected and the rest of the groups (an easy way to test this is to find groups that interact strongly with the selected groups. See Searching for special tiratable groups). Another case where option 1 can be used is if the groups that interact strongly with your subset all titrate at pH values that are far from the pH values where your subset groups titrate.

Option 2 is an odd mixed option, that I am not sure can be used for anything scientifically relevant. Anyway, it was easy to implement.

Option 3 is the option you should be using in most cases. In this option you model the effect of all the other tiratable groups in the protein as realistically as possible. Specifically the pH-dependent cumulative interaction energy of all of your subset groups with all other groups is stored and used in pKa_system.

After you have chosen the option right for you (this is a very politically correct document), then you can use the full features of pKa_system (Analyse small systems of titratable groups) to play around with the energetics of e.g. the active site.

Why is this useful? The abilities of pKa_system to quickly calculate changes in titration curves arising from variations in intrinsic pKa values and/or pair wise interaction energies are particularly handy for

The use of these methods for analysing protein pKa calculations are described in:

Performing a pKa calculation

pKaTool can perform a very quick and very dirty pKa calculation if you are in a hurry and don't need the luxury of knowing if you can trust the results.

To perform a quick pKa calculation do the following:

  • Make sure that you have a relatively clean PDB file (no heavy atoms missing, no ligands, no waters etc)
  • File -> Load PDB file
  • pKa calculation -> Perform full pKa calculation

Choose 'pKaTool' when prompted.

The algorithm runs faster if you have managed to compile the pMC module in the pKaTool directory. This should be straight forward on Linux and Mac
make -f <appropriate makefile>
, whereas there is no easy solution for Windows at the moment.

Note that running a pKaTool pKa calculation will erase the results of any WHAT IF or pdb2pka calculation in the directory of the pdb file!

Showing microscopic protonation state populations

You can view the pH-dependent population of all microscopic protonation states by selecting the Microscopic titration option in the View menu.

The window showing the microscopic protonation states looks like this:

Protonation state populations

The window consists of a a control section (left side) and a display section (right side).

Control section

  • The Show buttons turns the display of specific protonation states on or off.
  • The State description gives the definition of each protonation state. Protonation state definitions are given as a string of zeros and ones, where a "1" signifies that the group is charged and "0" signifies that the group is its neutral state. Thus the string "[0,1,0]" associated with the red curve in the figure, identifies this protonation state as the state where group 0 is neutral, group 1 charged and group 2 neutral.
  • Max Pop: The maximum population of the state at any pH value
  • pK1: The first pKa value when the pH-dependence is fitted to the general bell-shaped pH-activity profile
  • pK2: Same as pK1, except that pK2 holds the second pKa value.
  • CCPS: Use these checkboxes to select the protonation states that constitute the Catalytically Competent Protonation States
  • Find pKa values for microstates: Check this button to fit the protonation state populations to pK1 and pK2
  • Copy protonation state populations to Ekin:
  • Evaluate fit of pH activity profile:
  • Dump graphs to file:

Display section

I still need to write some data here

Analysing small systems of titratable groups

Analysing NMR titration data

The pKaSystem module of pKaTool can be used to fit NMR titration curves either alone, or together with enzymatic pH-activity profiles. We call our fitting method Global Fitting of Titrational Events (GloFTE), and we have examined a number of cases where GloFTE can be used to extract information on the biophysics and function of proteins. These cases are described in this paper.
Briefly you can get the following information:

  • Electrostatic interaction energies
  • Number of titratable groups in system
  • Population of the CCPS (for enzymes)
  • Identification of residues in protein structures using only GloFTE data

Getting started

pKaSystem can import experimental NMR titration curves stored in text files. The data must be formatted like this:

pH       Asp65      Glu88
1.78     176.08     179.93
2.43     176.21     179.95
2.89     176.51     180.09
3.43     176.95     180.25
4.11     177.88     180.61
4.58     178.32     181.10
4.80     178.62     181.43
5.44     179.33     182.44
6.01     179.76     183.29
6.60     179.98     183.80
6.84     180.01     183.83

The NMR chemical shift data is scaled to form 'real' titration curves between 0 and -1 e for acids and 1 e and 0 for bases.

To import NMR titration data:

  1. Switch to pKaSystem
  2. Choose File -> Load titration curves
  3. Browse for the file containing the NMR data
  4. A pop-up window will ask you some details on how the data should be imported

When the experimental NMR titration data is loaded, it will be graphically represented in pKaSystem as dots in the main plot window (left-hand side of the figure below).

Fitting NMR titration curves

pKaSystem uses the Levenberg-Marquardt algorithm to fit experimental titration curves to the NMR titration curves. During the fitting process, the intrinsic pKa value of each group and the electrostatic interactions between the groups are adjusted so that the theoretical titration curves fits the NMR titration data. Once you have loaded NMR titration data into pKaTool, you can fit the data: 1. Choose NMR -> Fit system to loaded curves See the right-hand side of the figure below for an example of theoretical titration curves fitted to NMR data.

When fitting to experimental NMR titration data, it is important to make sure that the obtained fit is unique i.e. that the experimental titration curves can only be fitted using one parameter (intrinsic pKa values and interaction energies) set. This is likely to be the case if Non-Henderson-Hasselbalch shaped titration curves are included in the fit. However, if all included experimental titration curves are of the standard Henderson-Hasselbalch shape, the fit is likely to not be unique. There are two ways to assess whether you fit is unique: Full combinatorial scan (computational heavy) and Re-fits using random start parameters (computational light(er)).

Experimental NMR titration curves for Asp35, Glu78, and Glu172 of Bacillus circulans xylanase N35D loaded into pKaTool.
Theoretical titration curves fitted to the experimental NMR titration curves.

The Bacillus circulans xylanase data used to produce the above figure is part of the downloadable Titration curve data set.

Since pKaTool adjusts the interaction energy between the titratable groups during the fitting process, it allows you to find electrostatic interaction energies in proteins from NMR data. Indeed this can be used to uniquely identify titratable residues in a protein structure from (unassigned) NMR titration curves.

If you know one or more of the parameters in the fit, then you can fix that parameter by double-clicking on the slider used for adjusting the value.

Simultaneous fitting of NMR titration data and pH-activity profile

NMR titration data is loaded as described above under 'Analyse NMR titration data'.

The pH-activity profile is loaded by:

  1. Choose File -> Load pH activity profile
  2. Browse to the file containing the pH-activity data

In order to include the pH activity profile in the fitting process, you must tell pKaTool which protonation state(s) is the CCPS. This is done in the Microscopic protonation states window. To initiate the simultaneous fitting of both titration data and pH-activity profile choose NMR -> Fit to loaded curves and pH activity profile

Experimental pH-activity profile (bottom) and NMR titration curves for Asp35, Glu78, and Glu172 (top) of Bacillus circulans xylanase N35D loaded into pKaTool.
Theoretical pH-activity profile (bottom) and NMR titration curves (top) fitted to the experimental data.

The Bacillus circulans xylanse data used to produce the above figure is part of the downloadable Titration curve data set.

Finding electrostatic interaction energies in proteins from NMR data

The titration curves of titratable groups in proteins can be measured by NMR titration experiments. In such experiments one typically follows the 1H, 13C or 15N chemical shift of an atom in or close to a titratable group, and in this way it is possible to get a direct measure of the charge present on a specific amino acid residue in a protein.

In some cases the titration curves are distinctively different from the standard Henderson-Hasselbalch] (HH) titration curves that everyone was taught about in high school chemistry class. Non-HH titration curves are produced when a system has

  1. Intrinsic pKa values that are close together AND
  2. strong charge-charge interaction energies OR 3. other through-bonds coupling effects.

If the titration curves that you measure for your protein are non-HH, then in some cases it is possible to use pKaTool to fit your titration curves to get

  • Intrinsic pKa values
  • Charge-charge interaction energies
  • information on other titratable groups that influence the titration events

We have looked at a couple of examples to illustrate the applicability of the method, these are documented in the paper listed here here

Titration curve dataset

n order to play around with the titration curve data set i pKaTool, you will need to download PEAT and pKaTool.

The titration curve data set contains NMR titration curves and pH-activity profiles for a series protein/enzyme systems:

  • //Bacillus circulans// xylanase wild type
  • //Bacillus circulans// xylanase ~N35D
  • The tenth fibronectin type III domain from human fibronectin
  • Bovine pancreatic ribonuclease A
  • Human oxidized thioredoxin

All information on how to obtain PEAT and the titration curve data set will be available here in the near future.

Analysing NMR titration 'ghosts'

The script in the pKaTool dir allows you to visualise, predict and fit ghost titrations seen in NMR signals in NMR titration experiments.

The program is still in development, but you can do the following:

  1. File -> Load PDB file
  2. Command -> Select/Define titratable group: This lets you visualist the magnitude of the chemical shift change at all sites in the protein due to a single charge
  3. File -> Load span for one group: Load experimental data and display it. File format is csv.:
Residue name <this line is ignored>
  1. Blue box displays predictions - green box exp data.
  2. Click lines in blue box to change colour, effective eps or calculation methods (coulomb or PBE solver)
  3. Fit lets you fit the position of a group and/or the dielectric constant to the exp data.

In order for the PBE functionality to work, you must install PB-Solver (available from in a dir called PB_Solver and compile the executable).

You can now also use APBS for this task. See how to compile APBS python extensions before you start.

Analysing enzymatic pH-activity profiles

The activity of an enzyme will typically depend on pH value of the solution. This is because only very specific protonation states in an enzyme active site are able to facilitate catalysis (i.e. convert the substrate into the product or vice versa).

pKaSystem can calculate the pH-dependent population of the microscopic protonation states available to a given system of titratable groups. Typically one of these microscopic protonation states will constitute the Catalytically Competent Protonation State (CCPS), although it is possible that the CCPS is composed of two or more microscopic protonation states.

Once you have opened the Microscopic protonation states window, you will be able to select which protonation states constitute the CCPS for your system of titratable groups. pKaSystem will then calculate the shape of the hypothetical enzymatic pH-activity profile and plot it in green. Note that the pH-activity profile always will be normalised to have a maximum activity of 1.0.

See the example figure in #Screenshots and Figures.

Producing figures

Titration curves

Microscopic protonation state populations

pH-activity profiles


Screenshots and Figures

Snapshot functionality in pKaSystem for showing changes in titration curves.
Display of the population of microscopic protonation states in pKaSystem. Two of the microscopic protonation states have been selected to constitute the CCPS. The resulting enzymatic pH-activity profile is plotted in green. The figure was made by pressing the Dump graphs to file button, to save a postscript file, which was cropped and converted to jpeg using a standard image manipulation program.

Citing pKaTool

If you use pKaTool in your research then please remember to cite

If you use the NMR titration curve fitting routines, then please also cite

--Nielsen 19:53, 20 January 2009 (UTC)

Personal tools