`propkatraj.py` can be used to computationally estimate pKa values forprotein residues. We use an ensemble approach where many differentconformations are sampled with equilibrium molecular dynamicssimulations. We then apply the fast heuristic pKa predictor[PROPKA 3.1](https://github.com/jensengroup/propka-3.1) to individualframes of the trajectory. By analysing the statistics of the pKapredictions a more consistent picture emerges than from a pKaprediction of a single static conformation.

Parameters ---------- universe : :class:`MDAnalysis.Universe` Universe to obtain pKas for. sel : str, array_like Selection string to use for selecting atoms to use from given ``universe``. Can also be a numpy array or list of atom indices to use. start : int Frame of trajectory to start from. `None` means start from beginning. stop : int Frame of trajectory to end at. `None` means end at trajectory end. step : int Step by which to iterate through trajectory frames. propka is slow, so set according to how finely you need resulting timeseries.

Results ------- pkas : :class:`pandas.DataFrame` DataFrame giving estimated pKa value for each residue for each trajectory frame. Residue numbers are given as column labels, times as row labels.

The function returns a[pandas.DataFrame](http://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe)which contains the time as the first column and the residue numbers assubsequent columns. For each time step, the predicted pKa value forthis residue is stored. Process the `DataFrame` to obtain statisticsas shown in the [Documentation](#Documentation).

## Documentation

See the Jupyter notebook[docs/propkatraj-example.ipynb](./docs/propkatraj-example.ipynb) forhow to use `propkatraj.get_propka` on an example trajectory and how toplot the data with [seaborn](https://seaborn.pydata.org/).

## Citation

If you use `propkatraj` in published work please cite Reference 1 forPROPKA 3.1 and Reference 2 for the ensemble method itself.