9.6. Sample Application Configuration File

This example shows how to write the Opal submission configuration file for the PDB2PQR program, which is designed to automate many of the common tasks of preparing structures for continuum electrostatics calculations, by providing a platform-independent utility for converting protein files in PDB format to PQR format. Located at $OPAL_HOME/configs/pdb2pqr_config.xml, it includes advanced features such as the specification of command-line arguments.

<appConfig xmlns="http://nbcr.sdsc.edu/opal/types"
           xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- metadata about the application being wrapped -->
  <metadata appName="PDB2PQR">
    <usage>PDB2PQR is a Python software package that automates many
           of the common tasks of preparing structures for continuum
           electrostatics calculations, providing a platform-independent
           utility for converting protein files in PDB format to PQR
           format.</usage>
    <info>
    <![CDATA[
         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), and TYL06 (Tan C, et
             al, 2006) 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.
         --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  
         
    ]]>
    </info>
    
    <!-- information about command-line arguments -->
    <types> 
        <!-- list of flags -->
        <flags>
            <flag>
                <id>verbose</id>
                <tag>--verbose</tag>
                <textDesc>Provide verbose output</textDesc>
                <default>true</default>
            </flag>
            <flag>
                <id>nodebump</id>
                <tag>--nodebump</tag>
                <textDesc>Do not perform the debumping operation</textDesc>
            </flag>
            <flag>
                <id>noopt</id>
                <tag>--noopt</tag>
                <textDesc>Do not perform hydrogen bonding network optimization</textDesc>
            </flag>
            <flag>
                <id>chain</id>
                <tag>--chain</tag>
                <textDesc>Keep the chain ID in the output PQR file</textDesc>
            </flag>
            <flag>
                <id>assign-only</id>
                <tag>--assign-only</tag>
                <textDesc>Only assign charges and radii - 
                          do not add atoms, debump, or optimize</textDesc>
            </flag>
            <flag>
                <id>clean</id>
                <tag>--clean</tag>
                <textDesc>Do no optimization, atom addition, or
                          parameter assignment, just return the original PDB file in
                          aligned format</textDesc>
            </flag>
            <flag>
                <id>apbs-input</id>
                <tag>--apbs-input</tag>
                <textDesc>Create a template APBS input file based 
                          on the generated PQR file</textDesc>
            </flag>
    
            <flag>
                <id>chi</id>
                <tag>--chi</tag>
                <textDesc>Print the per-residue backbone chi angle to {output-path}.chi</textDesc>
            </flag>
            <flag>
                <id>phi</id>
                <tag>--phi</tag>
                <textDesc>Print the per-residue backbone phi angle to {output-path}.phi</textDesc>
            </flag>
            <flag>
                <id>rama</id>
                <tag>--rama</tag>
                <textDesc>Print the per-residue phi and psi angles to
                          {output-path}.rama for Ramachandran plots</textDesc>
            </flag>
            <flag>
`               <id>psi</id>
                <tag>--psi</tag>
                <textDesc>Print the per-residue backbone psi angle to {output-path}.psi</textDesc>
            </flag>
            <flag>
                <id>hbond</id>
                <tag>--hbond</tag>
                <textDesc>Print a list of hydrogen bonds to {output-path}.hbond</textDesc>
            </flag>
        </flags>
    
        <!-- list of tagged parameters -->
        <taggedParams>
            <separator>=</separator>
            <param>
                <id>forcefield</id>
                <tag>--ff</tag>
                <paramType>STRING</paramType>
                <required>true</required>
                <value>AMBER</value>
                <value>CHARMM</value>
                <value>PARSE</value>
                <value>TYL06</value>
                <default>AMBER</default>
                <textDesc>The forcefield to use -- 
                          currently AMBER, CHARMM, PARSE, and TYL06 are supported.</textDesc>
            </param>
            <param>
                <id>ffout</id>
                <tag>--ffout</tag>
                <paramType>STRING</paramType>
                <value>AMBER</value>
                <value>CHARMM</value>
                <value>PARSE</value>
                <value>TYL06</value>                
                <textDesc>Instead of using the standard canonical
                          naming scheme for residue and atom, use names from the given
                          forcefield</textDesc>
            </param>
            <param>
                <id>with-ph</id>
                <tag>--with-ph</tag>
                <paramType>STRING</paramType>
                <textDesc>Use PROPKA to calculate pKas and apply them
                          to the molecule given the pH value</textDesc>
            </param>
            <param>
                <id>ligand</id>
                <tag>--ligand</tag>
                <paramType>FILE</paramType>
                <ioType>OUTPUT</ioType>
                <textDesc>Use the PDB2PKA package to generate
                          parameters for the specific ligand in MOL2 format.</textDesc>
            </param>
        </taggedParams>
    
        <!-- list of untagged parameters, in order -->
        <untaggedParams>
            <param>
                <id>inFile</id>
                <paramType>FILE</paramType>
                <ioType>INPUT</ioType>
                <!--  <required>true</required>   -->
                <textDesc><![CDATA[ The PDB input file (for
                          testing you can download
                          http://www.rcsb.org/pdb/files/1a1p.pdb)]]></textDesc>
            </param>
            <param>
                <id>inId</id>
                <paramType>STRING</paramType>
                <ioType>INPUT</ioType>
                <!-- <required>true</required> -->
                <textDesc>The ID to use to retrive the input file
                          from the PDB archive (for testing use '1a1p')</textDesc>
            </param>
            <param>
                <id>output-file</id>
                <paramType>FILE</paramType>
                <ioType>OUTPUT</ioType>
                <required>true</required>
                <default>output.pqr</default>
                <textDesc>The desired output name of the PQR file to
                          be generated</textDesc>
            </param>
        </untaggedParams>

        <!-- grouping of parameters -->
        <groups>
          <group>
            <name>inputParam</name>
            <elements>inFile inId</elements>
            <required>true</required>
            <exclusive>true</exclusive>
            <textDesc>Input file to be used (choose one of the two
            options)</textDesc>
          </group>
          <group>
            <name>otherRequiredGroup</name>
            <elements>forcefield output-file</elements>
            <required>true</required>
            <textDesc>Other required parameters</textDesc>
          </group>
          <group>
            <name>ffoutGroup</name>
            <elements>ffout</elements>
            <required>false</required>
            <textDesc>Output naming schema to be used</textDesc>
          </group>
          <group>
            <name>perResidueGroup</name>
            <elements>chi phi psi rama hbond</elements>
            <textDesc>Additional optional command-line arguments from
            the extensions directory are</textDesc>
          </group>
          <group>
            <name>otherParamGroup</name>
            <elements>with-ph ligand verbose nodebump noopt chain
            assign-only clean apbs-input</elements>
            <required>false</required>
            <textDesc>Other parameters</textDesc>
          </group>
        </groups>
    </types>

  </metadata>

  <!-- location of execution on the server -->
  <binaryLocation>/usr/local/bin/pdb2pqr.py</binaryLocation>
  
  <!-- list of default arguments -->
  <defaultArgs>--verbose</defaultArgs>

  <!-- whether to validate command-line arguments using type information above -->
  <validateArgs>true</validateArgs>

  <!-- overrule default job manager, if need be -->
  <jobManagerFQCN>edu.sdsc.nbcr.opal.manager.ForkJobManager</jobManagerFQCN>

  <!-- whether this application is serial or parallel -->
  <parallel>false</parallel>
</appConfig>