PDB2PQR User Guide

Table of Contents

Introduction
Availability
Source Installation
Using PDB2PQR
Algorithm Descriptions
Frequently Asked Questions
Bug Reports and Suggestions


Introduction

PDB2PQR is a Python software package that automates many of the common tasks of preparing structures for continuum electrostatics calculations. This includes adding a limited number of missing heavy atoms to biomolecular structures, optimizing the protein for favorable hydrogen bonding, determining side-chain pKas, and assigning charge and radius parameters from a variety of force fields, ultimately yielding a final PQR file.

PDB2PQR was ported to Python by Todd Dolinsky while working with Nathan Baker at Washington University in St. Louis. The PDB2PQR code is based on C++ design and algorithms by Jens Erik Nielsen. For a full author list please see the contributing authors.

PDB2PQR uses PropKa to determine protein pKa values. PropKa is developed by the Jensen Research Group at the University of Iowa. More information about PropKa can be found at http://propka.chem.uiowa.edu.

Financial support. The development of PDB2PQR has been supported financially by:

Citing PDB2PQR. Please acknowledge your use of PDB2PQR by citing:

Dolinsky TJ, Nielsen JE, McCammon JA, Baker NA. PDB2PQR: an automated pipeline for the setup, execution, and analysis of Poisson-Boltzmann electrostatics calculations. Nucleic Acids Research 32 W665-W667 (2004).
Citing PropKa. Please acknowledge your use of PropKa by citing:

Hui Li, Andrew D. Robertson, and Jan H. Jensen. "Very Fast Empirical Prediction and Rationalization of Protein pKa Values." Proteins, 61: 704-721, 2005.
Contributing Authors. PDB2PQR was initially written in C++ by Jens Erik Nielsen before being ported to Python by Todd Dolinsky. The full author list is as follows (in alphabetical order): Mailing Lists. There are two mailing lists associated with the PDB2PQR software:
Programmer's Guide. In addition to this User Guide, a Programmer's Guide has been added for additional documentation. If you plan to add/edit PDB2PQR you might find it useful to briefly look through the topics addressed.

Availability

PDB2PQR is available as both a web service and as command-line software for download. The PDB2PQR web server can be found at three mirrors:

The command line PDB2PQR is freely available for download from the SourceForge Project Page at http://pdb2pqr.sourceforge.net.


Source Installation

As the bulk of the PDB2PQR code is written in Python, the PDB2PQR code itself is architecture/compiler independent. PDB2PQR has been tested using Python versions 2.2 through 2.4 - problems may occur with older versions. The PropKa code, however, is written in Fortran - and thus to use it with PDB2PQR a two step installation is necessary, making use of available C and Fortran compilers:

$ ./configure
$ make
This should compile the PropKa wrappers necessary to interface with PDB2PQR.

No additional steps are needed to install PDB2PQR without propka support - just make sure that a version of Python is found in your system path.

If the compilation fails please check the FAQ section of this user guide, or if all else fails, send a bug report.


Using PDB2PQR

Starting PDB2PQR and Available Options

Starting PDB2PQR from the web server is rather straightforward - simply click the desired options, specify or upload a PDB file, and submit the job. The command line version of PDB2PQR is similar:

$ python pdb2pqr.py [options] --ff={forcefield} {path} {output-path}
The required arguments are as follows:
        <forcefield>  :  The forcefield to use - currently
                         amber, charmm, and parse are supported.
        <path>        :  The path to the PDB file or an ID
                         to obtain from the PDB archive
        <output-path> :  The desired output name of the PQR file
                         to be generated
Optional command-line arguments are:
        --nodebump    :  Do not perform the debumping operation
        --noopt       :  Do not perform hydrogen bonding network optimization
        --chain       :  Keep the chain ID in the output PQR file
        --assign-only :  Only assign charges and radii - do not add
                         atoms, debump, or optimize.
        --clean       :  Do no optimization, atom addition, or
                         parameter assignment, just return the
                         original PDB file in aligned format.
        --ffout=<name>:  Instead of using the standard canonical
                         naming scheme for residue and atom names,
                         use the names from the given forcefield.
        --with-ph=<ph>:  Use propka to calculate pKas and apply them
                         to the molecule given the pH value. Actual
                         PropKa results will be output to 
                         <output-path>.propka.
        --apbs-input  :  Create a template APBS input file based on
                         the generated PQR file.
        --verbose (-v):  Print information to stdout
        --help    (-h):  Display the usage information
Additional optional command-line arguments from the extensions directory are:
        --chi         :  Print the per-residue backbone chi
                         angle to {output-path}.chi
        --phi         :  Print the per-residue backbone phi
                         angle to {output-path}.phi
        --psi         :  Print the per-residue backbone psi
                         angle to {output-path}.psi
        --rama        :  Print the per-residue phi and psi
                         angles to {output-path}.rama for
                         Ramachandran plots
        --hbond       :  Print a list of hydrogen bonds to
                         {output-path}.hbond

Algorithm Descriptions

Debumping Algorithm

The debumping algorithm ensures that any new heavy or hydrogen atoms are not rebuilt within the Van der Waals radii of existing atoms. If this does occur, the sidechain of the residue in question will be rotated about an available Χ angle until the steric conflict is resolved.

The number of residues that need to be debumped depends on the nature of the system and if hydrogen optimization will be performed. If hydrogens are the only atoms missing any potential conflicts are usually due to hydrogen bonds, and if optimization is enabled these conflicts are usually resolved during that step. In the case where a large number of heavy sidechain atoms are missing there could be additional debumping necessary - as the sidechain is rebuilt the initial Χ angle may not be the optimal one, and thus a steric conflict may occur.

Hydrogen Bonding Network Optimization

The hydrogen bonding network optimization seeks, as the name suggests, to optimize the hydrogen bonding network of the protein. Currently this entails manipulating the following residues:


Frequently Asked Questions

What is a PQR file?

A PQR file is a PDB file with the temperature and occupancy columns replaced by columns containing the per-atom charge (Q) and radius (R). PQR files are used in several computational biology packages, including APBS.
What forcefields are available?
PDB2PQR currently has built in support for AMBER 94, CHARMM 27, and PARSE. You may also supply a user-defined forcefield.
Can I add my own charge and radius parameters to PDB2PQR?
Yes you can. Depending upon what is needed there are several options available:

Adding a few additional parameters to an existing forcefield

In the case where you want to supplement an existing forcefield (i.e. AMBER, CHARMM, or PARSE) with a few additional atoms, you can either directly add these atoms to the respective forcefield's DAT file (found in the dat/ directory), or copy the existing DAT file to a new name and add your parameters to this file. In the latter case you will need to specify the new forcefield's name on the command line; for instance, if you copy dat/AMBER.DAT to dat/myff.DAT, on the command line you will need to specify --ff=myff.
Adding a whole new forcefield
Similarly, if you want to add a whole new forcefield to PDB2PQR you will have to create a new parameter file. If the atom naming scheme of the forcefield is not the same as the canonical naming scheme of PDB2PQR, you will need to add patches as well - please see the Programmer's Guide for more information.
What compilers and architectures are compatible with PDB2PQR?
The PDB2PQR code itself is platform independent, but to use PropKa within PDB2PQR you must compile some code. PropKa has been tested with the Gnu gcc/g77 compilers on i*86, ia64, x86_64, and Mac OS X (Darwin) systems. It has also been tested with Intel icc/ifort compilers on i*86 and ia64 systems. If you find that PDB2PQR/PropKa does not compile on your system please send a bug report.
Can I install PDB2PQR on Windows?
The PDB2PQR code itself is in OS-independent Python, and thus will work with Python under Cygwin. Unfortunately PropKa makes use of compilers and shared objects, which can be rather tricky through Cygwin. For basic functionality it is strongly recommended to use PDB2PQR without PropKa enabled; if you would like to try to get PropKa working as well, you might want to look at section 6.2.2 of the Building Extensions in the Python Tutorial.
How is PDB2PQR licensed?
PDB2PQR is covered under the GNU Public License, which basically means you can copy it, change it, use subsets of it, redistribute it, etc.; however, you need to give credit to the original source and the original portion of the code must remain under the GPL.

PropKa is also available under the GNU Public License.

Does the input PDB file need to be in a specific format?
Ideally all input PDB files would be in standard PDB Format. Since this format assigns information to specific columns, if this information is not present (as in, for example, whitespace delimited files) PDB2PQR may give extraneous results.
Why are the chain IDs not included in the output file?
This is done specifically for APBS, as APBS is unable to handle chain IDs in a PQR file. To keep the chain IDs in your resulting PQR file please use the --chain option.
Can PDB2PQR output create a PQR file using forcefield-specific residue and atom names?
Yes, using the --ffout flag. Note that for patch-based forcefields a single residue might have different residue names. Additionally, some forcefield residue names might have 4 letters instead of the standard 3 letters, yielding columns that merge together - if you are using the resulting PQR file for APBS, this will more than likely cause errors.
What types of residues can PDB2PQR recognize?
PDB2PQR recognizes all of the standard amino acids, nucleic acids, and waters (both WAT and HOH) - for a complete list (and the standard naming scheme) please see the discussion in the Programmer's Guide.
How can I add my own functions to PDB2PQR?
In version 1.1.0 the extensions directory was added, allowing users to add their own post-processing scripts. For more information please see the appropriate section in the Programmer's Guide.
I already know the protonation state of a residue. How can I make PDB2PQR aware of it?
PDB2PQR has the ability to recognize certain protonation states and keep them fixed during optimization. To use this feature manually rename the residue name in the PDB file as follows:

Known Protonation State | New Residue Name
Neutral ASP | ASH Negative CYS | CYM Neutral GLU | GLH Neutral HIS | HIE/HID/HSD/HSE Positive HIS | HIP/HSP Neutral LYS | LYN Negative TYR | TYM
What causes the following warning - WARNING: PDB2PQR was unable to assign charges to the following atoms
This message usually occurs when atoms belonging to ligands or other residues are not found in the forcefield data file. As a conversion utility PDB2PQR is unable to assign charges and radii when they are not available in the forcefield - thus this warning message will occur for most ligands. Occasionally this message will occur in error for a standard amino acid residue where an atom or residue may be misnamed.
What causes the following warning - WARNING: Propka determined the following residues to be in a protonation state not supported by the forcefield!
Some of the protonation states derived from the PropKa results are not supported in the requested forcefield and thus PDB2PQR is unable to get charges and radii for that state. PDB2PQR currently supports the following states as derived from PropKa:

 Protonation State | AMBER Support | CHARMM Support | PARSE Support
Neutral N-Terminus | No | No | Yes Neutral C-Terminus | No | No | Yes Neutral ARG | No | No | No Neutral ASP | Yes* | Yes | Yes Negative CYS | Yes* | No | Yes Neutral GLU | Yes* | Yes | Yes Neutral HIS | Yes | Yes | Yes Neutral LYS | Yes* | No | Yes Negative TYR | No | No | Yes

* - only if residue is not a terminal residue; if the residue is terminal it will not be set to this state

Bug Reports and Suggestions

Before sending a bug report you may want to check the pdb2pqr-users mailing list archives or the existing PDB2PQR SourceForge Bug List to make sure your question has not already been addressed. Otherwise please post all bug reports, support requests, or feature requests to the appropriate PDB2PQR SourceForge Tracker.

For additional support you may contact the pdb2pqr-users mailing list.


Last Updated April 12th, 2006