{"id":19339494,"url":"https://github.com/becksteinlab/propkatraj","last_synced_at":"2025-04-03T03:13:34.286Z","repository":{"id":65495669,"uuid":"88095629","full_name":"Becksteinlab/propkatraj","owner":"Becksteinlab","description":"pKa estimates for proteins using an ensemble approach","archived":false,"fork":false,"pushed_at":"2024-10-13T09:49:43.000Z","size":9770,"stargazers_count":27,"open_issues_count":7,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-31T14:04:52.436Z","etag":null,"topics":["mdanalysis","molecular-dynamics-simulation","pandas","pka-predictions"],"latest_commit_sha":null,"homepage":"https://becksteinlab.github.io/propkatraj/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Becksteinlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-12T20:58:16.000Z","updated_at":"2024-10-25T15:11:21.000Z","dependencies_parsed_at":"2023-12-23T17:00:30.566Z","dependency_job_id":"120661e9-d9ff-492a-9869-19d048099186","html_url":"https://github.com/Becksteinlab/propkatraj","commit_stats":{"total_commits":83,"total_committers":12,"mean_commits":6.916666666666667,"dds":0.6144578313253012,"last_synced_commit":"78d87e5044a092a2ba87ca686efffdfff4685777"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Becksteinlab%2Fpropkatraj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Becksteinlab%2Fpropkatraj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Becksteinlab%2Fpropkatraj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Becksteinlab%2Fpropkatraj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Becksteinlab","download_url":"https://codeload.github.com/Becksteinlab/propkatraj/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246927839,"owners_count":20856198,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mdanalysis","molecular-dynamics-simulation","pandas","pka-predictions"],"created_at":"2024-11-10T03:22:28.298Z","updated_at":"2025-04-03T03:13:34.265Z","avatar_url":"https://github.com/Becksteinlab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README: propkatraj\n[![DOI](https://zenodo.org/badge/88095629.svg)](https://zenodo.org/badge/latestdoi/88095629)\n[![GH Actions CI](https://github.com/Becksteinlab/propkatraj/actions/workflows/gh-ci.yaml/badge.svg?branch=main)](https://github.com/Becksteinlab/propkatraj/actions/workflows/gh-ci.yaml)\n[![codecov](https://codecov.io/gh/Becksteinlab/propkatraj/branch/main/graph/badge.svg)](https://codecov.io/gh/Becksteinlab/propkatraj/branch/main)\n[![docs](https://github.com/Becksteinlab/propkatraj/actions/workflows/docs.yaml/badge.svg?branch=main)](https://becksteinlab.github.io/propkatraj/)\n[![Powered by MDAnalysis](https://img.shields.io/badge/powered%20by-MDAnalysis-orange.svg?logoWidth=16\u0026logo=data:image/x-icon;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD+XwCY/fEAkf3uAJf97wGT/a+HfHaoiIWE7n9/f+6Hh4fvgICAjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT/yYAlP//AJ///wCg//8JjvOchXly1oaGhv+Ghob/j4+P/39/f3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJH8aQCY/8wAkv2kfY+elJ6al/yVlZX7iIiI8H9/f7h/f38UAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38egYF/noqAebF8gYaagnx3oFpUUtZpaWr/WFhY8zo6OmT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAn46Ojv+Hh4b/jouJ/4iGhfcAAADnAAAA/wAAAP8AAADIAAAAAwCj/zIAnf2VAJD/PAAAAAAAAAAAAAAAAICAgNGHh4f/gICA/4SEhP+Xl5f/AwMD/wAAAP8AAAD/AAAA/wAAAB8Aov9/ALr//wCS/Z0AAAAAAAAAAAAAAACBgYGOjo6O/4mJif+Pj4//iYmJ/wAAAOAAAAD+AAAA/wAAAP8AAABhAP7+FgCi/38Axf4fAAAAAAAAAAAAAAAAiIiID4GBgYKCgoKogoB+fYSEgZhgYGDZXl5e/m9vb/9ISEjpEBAQxw8AAFQAAAAAAAAANQAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo6Mb5iYmP+cnJz/jY2N95CQkO4pKSn/AAAA7gAAAP0AAAD7AAAAhgAAAAEAAAAAAAAAAACL/gsAkv2uAJX/QQAAAAB9fX3egoKC/4CAgP+NjY3/c3Nz+wAAAP8AAAD/AAAA/wAAAPUAAAAcAAAAAAAAAAAAnP4NAJL9rgCR/0YAAAAAfX19w4ODg/98fHz/i4uL/4qKivwAAAD/AAAA/wAAAP8AAAD1AAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxsVyqqqr/mpqa/6mpqf9KSUn/AAAA5QAAAPkAAAD5AAAAhQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkUFBSuZ2dn/3V1df8uLi7bAAAATgBGfyQAAAA2AAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAADoAAAA/wAAAP8AAAD/AAAAWgC3/2AAnv3eAJ/+dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9AAAA/wAAAP8AAAD/AAAA/wAKDzEAnP3WAKn//wCS/OgAf/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAANwAAADtAAAA7QAAAMAAABUMAJn9gwCe/e0Aj/2LAP//AQAAAAAAAAAA)](https://www.mdanalysis.org)\n\n`propkatraj.py` can be used to computationally estimate pKa values for\nprotein residues. We use an ensemble approach where many different\nconformations are sampled with equilibrium molecular dynamics\nsimulations. We then apply the fast heuristic pKa predictor\n[PROPKA 3](https://github.com/jensengroup/propka) to individual\nframes of the trajectory. By analysing the statistics of the pKa\npredictions a more consistent picture emerges than from a pKa\nprediction of a single static conformation.\n\n\n## Required software\n\n* [PROPKA 3](https://github.com/jensengroup/propka) (used as a\n  Python package)\n* [MDAnalysis](https://mdanalysis.org)\n* [pandas](https://pandas.pydata.org/)\n\nSee\n[INSTALL.md](https://github.com/Becksteinlab/propkatraj/blob/main/INSTALL.md)\nfor how to install everything.\n\n## Usage\n\nThe `propkatraj.PropkaTraj` class contains all\nfunctionality. Import it with\n\n```python\nfrom propkatraj import PropkaTraj\n```\n\nIt takes a `MDAnalysis.AtomGroup` or `MDAnalysis.Universe` instance as an\nargument to initialize and runs PROPKA on each frame of the trajectory when\ncalling the `run()` method. See `help(PropkaTraj)` for more details.\n\n```python\npkatraj = PropkaTraj(atomgroup, select='protein', skip_failure=False)\n\n   Runs :program:`propka` on the titrateable residues of the selected AtomGroup\n   on each frame in the trajectory.\n   \n   Parameters\n   ----------\n   atomgroup : :class:`MDAnalysis.Universe` or :class:`MDAnalysis.AtomGroup`\n       Group of atoms containing the residues for pKa analysis. Please note\n       that :class:`MDAnalysis.UpdatingAtomGroup` are not supported and will\n       be automatically converted to :class:`MDAnalysis.AtomGroup`.\n   select : str\n       Selection string to use for selecting a subsection of atoms to use\n       from the input ``atomgroup``. Note: passing non-protein residues to\n       :program:`propka` may lead to incorrect results (see notes). [`protein`]\n   skip_failure : bool\n       If set to ``True``, skip frames where :program:`propka` fails. A list\n       of failed frames is made available in\n       :attr:`PropkaTraj.failed_frames_log`. If ``False`` raise a\n       RuntimeError exception on those frames. [`False`]\n\n\n    Notes\n    -----\n    Currently only the default behaviour supplemented with the `--quiet` flag\n    of :program:`propka` is used.\n\n    Temporary :program:`propka` files are written in the current working\n    directory. This will leave a ``current.pka`` and ``current.propka_input``\n    file. These are the temporary files for the final frame and can be removed\n    safely.\n\n    Current known issues:\n\n    1. Due to the current behaviour of the MDAnalysis PDBWriter, non-protein\n       atoms are written to PDBs using `ATOM` records instead of `HETATM`.\n       This is likely to lead to undefined behaviour in :program:`propka`,\n       which will likely expect `HETATM` inputs. We recommend users to only\n       pass protein atoms for now. See the following issue for more details:\n       https://github.com/Becksteinlab/propkatraj/issues/24\n\n\npkatraj.run()\n\n   Perform the calculation\n\n   Parameters\n   ----------\n   start : int, optional\n      start frame of analysis\n   stop : int, optional\n      stop frame of analysis\n   step : int, optional\n      number of frames to skip between each analysed frame\n   verbose : bool, optional\n      Turn on verbosity\n\n```\n\nCalling the `run()` method creates a [pandas.DataFrame](http://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe),\naccessed through `results.pkas`, which contains the time as the first column\nand the residue numbers as subsequent columns. For each time step, the\npredicted pKa value for this residue is stored. Process the `DataFrame` to\nobtain statistics as shown in the [Documentation](#Documentation). For example,\nyou can get a summary of the statistics of the timeseries in the following\nmanner:\n\n```python\npkatraj.results.pkas.describe()\n```\n\n## Documentation\n\nSee the Jupyter notebook\n[docs/propkatraj-example.ipynb](https://nbviewer.jupyter.org/github/Becksteinlab/propkatraj/blob/main/docs/propkatraj-example.ipynb)\nfor how to use `propkatraj.PropkaTraj` on an example trajectory and\nhow to plot the data with [seaborn](https://seaborn.pydata.org/).\n\n## Citation\n\nIf you use `propkatraj` in published work please cite Reference 1 for\nPROPKA 3.1 and Reference 2 for the ensemble method itself. Reference 3\nis for the software if you need a specific software citation.\n\n1. C. R. Søndergaard, M. H. M. Olsson, M. Rostkowski, and\n   J. H. Jensen. Improved treatment of ligands and coupling effects in\n   empirical calculation and rationalization of pKa values. *J\n   Chemical Theory and Computation*, 7(7):2284–2295, 2011. doi:\n   [10.1021/ct200133y](https://doi.org/10.1021/ct200133y).\n   \n2. C. Lee, S. Yashiro, D. L. Dotson, P. Uzdavinys, S. Iwata,\n   M. S. P. Sansom, C. von Ballmoos, O. Beckstein, D. Drew, and\n   A. D. Cameron. Crystal structure of the sodium-proton antiporter\n   NhaA dimer and new mechanistic insights. *J Gen Physiol*,\n   144(6):529–544, 2014. doi:\n   [10.1085/jgp.201411219](https://doi.org/10.1085/jgp.201411219).\n\n3. David Dotson, Irfan Alibay, Rick Sexton, Shujie Fan, Armin Zijajo, Oliver Beckstein. \n   (2020). Becksteinlab/propkatraj: 1.1.x. Zenodo. https://doi.org/10.5281/zenodo.3228425 \n\n## Contact\n\nPlease raise issues in the\n[issue tracker](https://github.com/Becksteinlab/propkatraj/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbecksteinlab%2Fpropkatraj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbecksteinlab%2Fpropkatraj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbecksteinlab%2Fpropkatraj/lists"}