pKa estimates for proteins using an ensemble approach
README: propkatraj
propkatraj.py can be used to computationally estimate pKa values for protein residues. We use an ensemble approach where many different conformations are sampled with equilibrium molecular dynamics simulations. We then apply the fast heuristic pKa predictor PROPKA 3 to individual frames of the trajectory. By analysing the statistics of the pKa predictions a more consistent picture emerges than from a pKa prediction of a single static conformation.
Required software
- PROPKA 3 (used as a
Usage
The propkatraj.PropkaTraj class contains all functionality. Import it with
from propkatraj import PropkaTraj
It takes a MDAnalysis.AtomGroup or MDAnalysis.Universe instance as an argument to initialize and runs PROPKA on each frame of the trajectory when calling the run() method. See help(PropkaTraj) for more details.
pkatraj = PropkaTraj(atomgroup, select='protein', skip_failure=False)--quietRuns :program:
propkaon the titrateable residues of the selected AtomGroup on each frame in the trajectory. Parameters ---------- atomgroup : :class:MDAnalysis.Universeor :class:MDAnalysis.AtomGroupGroup of atoms containing the residues for pKa analysis. Please note that :class:MDAnalysis.UpdatingAtomGroupare not supported and will be automatically converted to :class:MDAnalysis.AtomGroup. select : str Selection string to use for selecting a subsection of atoms to use from the input `atomgroup. Note: passing non-protein residues to :program:propkamay lead to incorrect results (see notes). [protein] skip_failure : bool If set toTrue, skip frames where :program:propkafails. A list of failed frames is made available in :attr:PropkaTraj.failedframeslog. IfFalseraise a RuntimeError exception on those frames. [False]Notes ----- Currently only the default behaviour supplemented with the
flag of :program:propkais used.propkaTemporary :program:
files are written in the current working directory. This will leave acurrent.pkaandcurrent.propka_inputfile. These are the temporary files for the final frame and can be removed safely.ATOMCurrent known issues:
1. Due to the current behaviour of the MDAnalysis PDBWriter, non-protein atoms are written to PDBs using
records instead ofHETATM. This is likely to lead to undefined behaviour in :program:propka, which will likely expectHETATMinputs. We recommend users to only pass protein atoms for now. See the following issue for more details: https://github.com/Becksteinlab/propkatraj/issues/24run()pkatraj.run()
Perform the calculation
Parameters ---------- start : int, optional start frame of analysis stop : int, optional stop frame of analysis step : int, optional number of frames to skip between each analysed frame verbose : bool, optional Turn on verbosity</code></pre>
Calling the
method creates a pandas.DataFrame, accessed throughresults.pkas, which contains the time as the first column and the residue numbers as subsequent columns. For each time step, the predicted pKa value for this residue is stored. Process theDataFrameto obtain statistics as shown in the Documentation. For example, you can get a summary of the statistics of the timeseries in the following manner:propkatraj.PropkaTraj<pre><code class="lang-python">pkatraj.results.pkas.describe()</code></pre>
Documentation
See the example usage page for how to use
on an example trajectory and how to plot the data with seaborn.propkatraj` in published work please cite Reference 1 for PROPKA 3.1 and Reference 2 for the ensemble method itself. Reference 3 is for the software if you need a specific software citation.Citation
If you use
- C. R. Søndergaard, M. H. M. Olsson, M. Rostkowski, and
- C. Lee, S. Yashiro, D. L. Dotson, P. Uzdavinys, S. Iwata,
- David Dotson, Irfan Alibay, Rick Sexton, Shujie Fan, Armin Zijajo, Oliver Beckstein.
Contact
Please raise issues in the issue tracker.