## PDB2PQR User Guide

### Table of Contents

- Introduction
- Availability
- Source Installation
- Using PDB2PQR
- Algorithm Descriptions
- Limitations
- Frequently Asked Questions
- Bug Reports and Suggestions
- References and Further Reading

### 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):

- Nathan Baker (baker@ccb.wustl.edu)
- Paul Czodrowski (paul.czodrowski@musterco.com)
- Todd Dolinsky (todd@ccb.wustl.edu)
- Yong Huang (yhuang@ccb.wustl.edu)
- Hui Li (huili06@unlserve.unl.edu)
- Jan Jensen (jhjensen@kemi.ku.dk)
- Jens Nielsen (Jens.Nielsen@ucd.ie)
- Samir Unni (srunni@gmail.com)

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

- It is highly recommended that `--prefix` and `--with-url` point to the same directory. Specifications `--prefix=/var/www/html/pdb2pqr-test --with-url=http://somedomain/pdb2pqr-test` is recommened. On the other hand, specifications like `--prefix=/var/www/html/mypdb2pqr --with-url=http://somedomain/pdb2pqr-test` is not recommened because `mypdb2pqr` and `pdb2pqr-test` are different names.
- If the server interface loads fine, but you cannot execute pdb2pqr by clicking the "Submit" button, make sure you have the permission to execute pdb2pqr.cgi file. In particular, ensure that the access mode of pdb2pqr.cgi allows execution by the webserver (e.g., `chmod +x /var/www/html/pdb2pqr/pdb2pqr.cgi`). Additionally, you may need to change the configuration of your webserver to enable CGI execution. For the Apache webserver, this involves editing `httpd.conf` to add ExecCGI to the option list for your server. In some installations, this may be as simple as adding a line like `Options Indexes FollowSymLinks ExecCGI` in the <Directory "/var/www/html"> section of the Apache configuration file. If you modify this file, you will need to restart the web server.

##### 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:

- Flipping the side chains of HIS (including user defined HIS states), ASN, and GLN residues;
- Rotating the sidechain hydrogen on SER, THR, TYR, and CYS (if available);
- Determining the best placement for the sidechain hydrogen on neutral HIS, protonated GLU, and protonated ASP;
- Optimizing all water hydrogens.

#### 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:

- Web server is limited to biomolecules with less than 10,000 atoms. To limit the load on our servers, we currently limit web server submissions to proteins containing fewer than 10,000 atoms. If you are interested in using PDB2PQR for larger proteins, you are encouraged to download a command line version of PDB2PQR from the PDB2PQR home page.
- Ligands do not change PROPKA pKa predictions. At this time, PROPKA does not consider ligand effects (H-bonding, charges, etc.) when calculating pKa values. This support will be provided in future versions of PDB2PQR.
- Browser "back" button not supported. Due to our use of CGI forms, we do not recommend use of your browser "back" button when using PDB2PQR. Links are provided on most pages for navigating the PDB2PQR site.

### 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:
  - 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 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

- Czodrowski P, Dramburg I, Sotriffer CA, Klebe G. Development, validation, and application of adapted PEOE charges to estimate pKa values of functional groups in protein-ligand complexes. Proteins 65 (2) 424-37, 2006. (http://dx.doi.org/10.1002/prot.21110). Description of PEOE method used for ligand parameterization.
- Dolinsky TJ, Nielsen JE, McCammon JA, Baker NA. PDB2PQR: an automated pipeline for the setup of Poisson0Boltzmann electrostatics calculations. Nucleic Acids Res 32, W665-7, 2004. (http://dx.doi.org/10.1093/nar/gkh381). Original PDB2PQR paper.
- Gasteiger J, Marsili M. Iterative partial equalization of orbital electronegativity -- rapid access to atomic charges. Tetrahedron 36 (22) 3219-28, 1980. (http://dx.doi.org/10.1016/0040-4020(80)80168-2). Description of original charge assignment method.
- Li H, Robertson AD, Jensen JH. Very fast empirical prediction and rationalization of protein pKa values. Proteins 61 (4) 704-21, 2005. (http://dx.doi.org/10.1002/prot.20660). Original PROPKA paper.
- MacKerell AD Jr, Bashford D, Bellott M, Dunbrack RL Jr, Evanseck JD, Field MJ, Fischer S, Gao J, Guo H, Ha S, Joseph-McCarthy D, Kuchnir L, Kuczera K, Lau FTK, Mattos C, Michnick S, Ngo T, Nguyen DT, Prodhom B, Reiher WE III, Roux B, Schlenkrich M, Smith JC, Stote R, Straub J, Watanabe M, Wiorkiewicz-Kuczer a, Yin D, Karplus M. All-Atom Empirical Potential for Molecular Modeling and Dynamics Studies of Proteins. J Phys Chem B 102 (18) 3586-616, 1998. (http://dx.doi.org/10.1021/jp973084f). Paper describing the "CHARMM" force field used by PDB2PQR.
- Sitkoff D, Sharp KA, Honig B. Accurate Calculation of Hydration Free Energies Using Macroscopic Solvent Models. J Phys Chem 98 (7) 1978-88, 1994. (http://pubs.acs.org/cgi-bin/archive.cgi/jpchax/1994/98/i07/pdf/j100058a043.pdf). Paper describing the "PARSE" force field used by PDB2PQR.
- Swanson JMJ, Wagoner JA, Baker NA, McCammon JA. Optimizing the Poisson Dielectric Boundary with Explicit Solvent Forces and Energies: Lessons Learned with Atom-Centered Dielectric Functions. J Chem Theory Comput 3 170-183, 2007. (http://dx.doi.org/10.1021/ct600216k). Paper describing the "SWANSON" force field used by PDB2PQR.
- Tan C, Yang L, Luo R. How Well Does Poisson-Boltzmann Implicit Solvent Agree with Explicit Solvent? A Quantitative Analysis. J Phys Chem B 110 (37) 18680-7, 2006. (http://dx.doi.org/10.1021/jp063479b). Paper describing the "TYL06" force field used by PDB2PQR.
- Wang J, Cieplak P, Kollman PA. How well does a restrained electrostatic potential (RESP) model perform in calculating conformational energies of organic and biological molecules? J Comput Chem 21 (12) 1049-74, 2000. (http://www3.interscience.wiley.com/cgi-bin/abstract/72511509/ABSTRACT). Paper describing the "AMBER" force field used by PDB2PQR.

SourceForge Project Page

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