Skip to main content

Obtain pKas for titreatable residues from a simulation trajectory.

Project description

README: propkatraj

DOI GH Actions CI codecov docs Powered by MDAnalysis

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

See INSTALL.md for how to install everything.

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)

   Runs :program:`propka` on the titrateable residues of the selected AtomGroup
   on each frame in the trajectory.
   
   Parameters
   ----------
   atomgroup : :class:`MDAnalysis.Universe` or :class:`MDAnalysis.AtomGroup`
       Group of atoms containing the residues for pKa analysis. Please note
       that :class:`MDAnalysis.UpdatingAtomGroup` are 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:`propka` may lead to incorrect results (see notes). [`protein`]
   skip_failure : bool
       If set to ``True``, skip frames where :program:`propka` fails. A list
       of failed frames is made available in
       :attr:`PropkaTraj.failed_frames_log`. If ``False`` raise a
       RuntimeError exception on those frames. [`False`]


    Notes
    -----
    Currently only the default behaviour supplemented with the `--quiet` flag
    of :program:`propka` is used.

    Temporary :program:`propka` files are written in the current working
    directory. This will leave a ``current.pka`` and ``current.propka_input``
    file. These are the temporary files for the final frame and can be removed
    safely.

    Current known issues:

    1. Due to the current behaviour of the MDAnalysis PDBWriter, non-protein
       atoms are written to PDBs using `ATOM` records instead of `HETATM`.
       This is likely to lead to undefined behaviour in :program:`propka`,
       which will likely expect `HETATM` inputs. We recommend users to only
       pass protein atoms for now. See the following issue for more details:
       https://github.com/Becksteinlab/propkatraj/issues/24


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

Calling the run() method creates a pandas.DataFrame, accessed through results.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 the DataFrame to obtain statistics as shown in the Documentation. For example, you can get a summary of the statistics of the timeseries in the following manner:

pkatraj.results.pkas.describe()

Documentation

See the Jupyter notebook docs/propkatraj-example.ipynb for how to use propkatraj.PropkaTraj on an example trajectory and how to plot the data with seaborn.

Citation

If you use 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.

  1. C. R. Søndergaard, M. H. M. Olsson, M. Rostkowski, and J. H. Jensen. Improved treatment of ligands and coupling effects in empirical calculation and rationalization of pKa values. J Chemical Theory and Computation, 7(7):2284–2295, 2011. doi: 10.1021/ct200133y.

  2. C. Lee, S. Yashiro, D. L. Dotson, P. Uzdavinys, S. Iwata, M. S. P. Sansom, C. von Ballmoos, O. Beckstein, D. Drew, and A. D. Cameron. Crystal structure of the sodium-proton antiporter NhaA dimer and new mechanistic insights. J Gen Physiol, 144(6):529–544, 2014. doi: 10.1085/jgp.201411219.

  3. David Dotson, Irfan Alibay, Rick Sexton, Shujie Fan, Armin Zijajo, Oliver Beckstein. (2020). Becksteinlab/propkatraj: 1.1.x. Zenodo. https://doi.org/10.5281/zenodo.3228425

Contact

Please raise issues in the issue tracker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

propkatraj-2.0.1.tar.gz (400.4 kB view details)

Uploaded Source

Built Distribution

propkatraj-2.0.1-py3-none-any.whl (391.6 kB view details)

Uploaded Python 3

File details

Details for the file propkatraj-2.0.1.tar.gz.

File metadata

  • Download URL: propkatraj-2.0.1.tar.gz
  • Upload date:
  • Size: 400.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for propkatraj-2.0.1.tar.gz
Algorithm Hash digest
SHA256 b6c008b87cbb4d00b67107350cc6cb419fc933486788c4afe16a422ae3af7725
MD5 655f04c96d5b0f1abc702a3b41b7c921
BLAKE2b-256 16d8384ba5f1debf2833e9fc74a16ca990f8dcaaad62592e544a9a7f767a7505

See more details on using hashes here.

File details

Details for the file propkatraj-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: propkatraj-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 391.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for propkatraj-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0fcf9f9451eeef042b6b013b95137cf33eb587d2c5a1898e0034d48d87d630c3
MD5 5ba06a9e0982cce2e2e9f28cbe1ccd23
BLAKE2b-256 18971d2f981d8f96782b51d67a9f7f1ec11044158d5ce47deb930f82a64f598a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page