PDB2PQR User Guide


Table of Contents


Introduction

Background information on PDB2PQR, including citation information, financial support, and availability, can be found at the PDB2PQR homepage (http://pdb2pqr.sourceforge.net/).

PDB2PQR was written by a consortium of researchers, including (in alphabetical order):

A number of authors have also provided extensions to PDB2PQR, authorship for these extensions are given in the individual source files in the "extensions" directory.


Source Installation

As the bulk of the PDB2PQR code is written in Python, the PDB2PQR code itself is architecture and compiler independent. PDB2PQR has been tested using Python versions 2.2 through 2.5 and Numeric version 24.2 - problems may occur with other versions. Users who simply want to use the PDB2PQR without PROPKA or ligand parameterization support and PROPKA can type

$ ./configure --disable-propka --disable-pdb2pka
$ make
$ make install

or skip the configure/make process altogether.

PROPKA support

The PROPKA code is written in Fortran. To use PROPKA with PDB2PQR, a three step installation is necessary, making use of available C and Fortran compilers:

$ ./configure
$ make
$ make install

This should compile the PROPKA wrappers necessary to interface with PDB2PQR.

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

PDB2PKA support

The ligand parameterization code (PDB2PKA) is written in C++ and Python. This portion of the code also requires the Python Numeric or NumPy package. Note that PDB2PQR has only been extensively tested against Numeric. Unlike earlier versions, PDB2PKA is enabled by default in this version. To use PDB2PKA with PDB2PQR, a three step installation is necessary, making use of available C and Fortran compilers:

$ ./configure
$ make
$ make install

This should compile the PDB2PKA wrappers necessary to interface with PDB2PQR. Note that this will also compile PROPKA support; this can be explicitly disabled by

$ ./configure --enable-pdb2pka --disable-propka
$ make
$ make install

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

Web server installation

All the necessary files for web server installation are available with the PDB2PQR software; however, we would appreciate if users contact us before installing a publicly-accessible version of the web server so we can ensure that you are informed of PBD2PQR updates, etc.

Note: these instructions are intended for systems administrators with the ability to change the behavior of their web server software and/or install software in privileged locations.

To set up a server, simply run

$ ./configure
$ make
$ make install

By default, the server is installed in /var/www/html/pdb2pqr and the default URL is http://fully_qualified_domain_name/pdb2pqr. If the user does not have root permission, then the server is installed in ${HOME}/pdb2pqr.

Configure options include

--prefix Installation directory (e.g., /var/www/html/pdb2pqr)
--with-url URL for the server (e.g., http://somedomain/pdb2pqr)
--disable-propka Disable PROPKA
--disable-pdb2pka Disable PDB2PKA
--with-python Path to Python (e.g., /usr/local/bin/python2.5)
--with-opal enable Opal service integration pointing to the remote clusters available at NBCR; optionally specify a URL for an alternate remote Opal service.
--with-apbs enable the APBS web interface. Must be pointing to a local APBS binary.
--with-apbs-opal enable Opal service integration for the APBS web interface pointing to the remote clusters available at NBCR; optionally specify a URL for an alternate remote Opal service. Requires simultaneous use of the --with-apbs flag, which must be pointing to a version of APBS greater than 1.0.0 (or the current SVN revision).
Troubleshooting
Opal web services

The NBCR development team has provided code that allows PDB2PQR to be run on remote clusters through the Opal web services toolkit. This allows users to host a PDB2PQR server (e.g., for a class) without worrying about the load on their local computers.


Using PDB2PQR

This section discusses the use of PDB2PQR from the command line. Many command line options are also available through the web servers. Interested users should also visit the PDB2PQR examples page which provides a tutorial on the usage of PDB2PQR for a variety of tasks.

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 (AMBER99, Wang J, et al, 2000), CHARMM (CHARMM27, MacKerell AD Jr, et al, 1998), PARSE (PARSE, Sitkoff D, et al, 1994), TYL06 (Tan C, et al, 2006), PEOEPB (PEOEPB, Czodrowski P, et al, 2006), and SWANSON (SWANSON, Swanson JMJ, et al, 2007) 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.
--ligand=<mol2 file>
Use the PDB2PKA package to generate parameters for the specific ligand in MOL2 format. MOL2-format ligands can be generated using PRODRG server or from within some molecular modeling packages
--apbs-input
Create a template APBS input file based on the generated PQR file.
--whitespace
Put extra whitespaces between atom name and residue name, between x and y, and between y and z. This may (or may not) break strict PDB formatting and cause problems for some visualization programs.
--typemap
Create Typemap output.
--neutraln
Make the N-terminus of this protein neutral (default is charged).
--neutralc
Make the C-terminus of this protein neutral (default is charged).
--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
--salt
Print a list of salt bridges to {output-path}.salt

Algorithm Descriptions

The overall workflow for the PDB2PQR service is outlined here (PNG image). The following sections provide more detail about specific aspects of the PDB2PQR algorithms.

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:

Titration state assignment

Protein residue titration states are assigned using pKa values determined by PROPKA. For more details, please visit the PROPKA homepage.

Ligand parameterization

The calculation of ligand charges necessitates detailed information on molecular structure and protonation states due to the large variation in the covalent structures of small-molecule protein ligands. The current version of PDB2PQR therefore requires the ligand structure, protonation state, and formal charge to be specified by the user in the popular MOL2 file format (link to PDF). Ligand structures in MOL2 format are readily available from popular molecular modeling software and free web services such as PRODRG. Future versions of PDB2PQR will include a pdb2mol2 parser and automatic assignment of default ligand protonation states from a small-molecule pKa database.

The calculation of ligand charges in PDB2PQR is based on the partial equalization of orbital electronegativities (PEOE) procedure developed by Gasteiger and Marsili (Gasteiger, 1980). In the PEOE procedure, orbital electronegativities χ are linked to partial atomic charges q by a polynomial expansion (χ= a + b q + c q2 + d q3). The coefficients a, b, c, and d were optimized by Gasteiger and Marsili using gas phase data on ionization potentials and electron affinities. We utilize a PEOE algorithm, which has been optimized by Czodrowski et al. to obtain better agreement between theoretical and experimental solvation energies for a set of small molecules including the polar amino acids.


Limitations

The following is a list of known limitations with the current version of PDB2PQR. Many of these limitations will be removed/fixed in future releases of the software:


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; there are two ways to add your own parameters to PDB2PQR:
Adding a few additional parameters to an existing forcefield
If you are just adding the parameters of a few residues and atoms to an existing forcefield (e.g., AMBER), you can open the forcefield data file (dat/AMBER.DAT) directly and add your parameters. After the parameter addition, save the force field data file (dat/AMBER.DAT) with your changes. You should also update the corresponding .names file (dat/AMBER.names) if your added residue or atom naming scheme is different from the canonical naming scheme of PDB2PQR.
Adding an entirely new forcefield
If you are adding a new forcefield to PDB2PQR, then you will need to follow the instructions below:
  1. Provide two files: your forcefield data file (e.g., myff.DAT). If your atom naming scheme of the forcefield is different from the canonical naming scheme of PDB2PQR, then you will also need to provide a names files (myff.names). It is recommended to build your own forcefield data file and names file based on existing .DAT and .names file formats. For more information on the xml format used in .names files, please refer to the xml section in the programmer's guide.
  2. After finishing your forcefield data file and names file, these can be used with either the command line or the web server versions of PDB2PQR:
    • For command line execution:
      1. Locate your PDB2PQR distribution and place the forcefield and names files in the dat/ directory.
      2. On PDB2PQR command line version, run:
        $ python pdb2pqr.py [options] --ff=myff {path} {output-path}
    • For the web server, select "User-defined forcefield" radio button, then specify your user-defined data file and names file. Select other options when needed, and then click "Submit".
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. PDB2PKA requires a C++ compiler and has been tested with g++.
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 BSD 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 BSD License. The PropKa and PDB2PKA packages are also available under the BSD 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 older versions of APBS were 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:
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 unless a MOL2 file is provided for the ligand with the --ligand option. 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.


References and Further Reading


SourceForge Project Page

Last changed on: $Date: 2007-09-06 11:06:05 -0600 (Thu, 06 Sep 2007)$