README
for Extra Geometry Programs

What's this? / H-bonds / Contacts / Axes / Further Links

What is this?

This page documents extra programs (available by popular demand!) that calculate additional things besides surfaces and volumes -- in particular, axes, H-bonds, and VDW contacts. These programs are only roughly (!) documented at present and are meant as a supplement to the main geometry distribution.

If you use these programs, you may want to cite:

M Gerstein (1992). "A Resolution-Sensitive Procedure for Comparing Protein Surfaces and its Application to the Comparison of Antigen-Combining Sites," Acta Cryst. A48: 271-276.


H-bonds

find-h-bonds.exe

A executable and source for this program is provided.

How to run the program


GENERAL
~~~~~~~
To calculate hydrogen-bonds, run program like this:

% FindHbonds.SGI.exe -i in.pdb > out.txt

You can supply "-aml" and "-sort" options which are described below.

CRITERIA FOR COVALENT BONDS
~~~~~~~~~~~~~~~~~~~~~~~~~~~
I get covalent bonds by getting all distances to a given atom i,
sorting by increasing distance and then checking the
shortestdistances.  I take two atoms X as being bonded if the distance
between them is less than 1.7 Angstroms.  If one of the X is S
(sulfur) I use 2 A and if both are S I use 2.8 A.  If one of the X is
H, I use 1.2 A.

DEFAULT CRITERIA FOR HBONDS 
~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is adapted from Mike Levitt.

For hydrogen bonds, the program uses a criterion based on distances
and angles.  If there are no explicit hydrogen atoms, it uses the
coordinates of the acceptor (O), the donor (N) and an atom bonded to
the donor (C).  The conditions are d(O..N) < 3.6 A, angle (O..N-C)
between 90 and 150.

LESK CRITERIA FOR HBONDS [-aml option]
~~~~~~~~~~~~~~~~~~~~~~~~
This is adapted from Arthur Lesk.

I calculate the N-H..O-C angle (for backbone atoms, for instance) I
expect the angles to be distributed around 120 degrees for a hydrogen
bond to a carbonyl group.

One would expect a different "ideal" angle depending on whether you
were dealing with a quaternary nitrogen (as in lysine) or a tertiary
nitrogen (as in the distal nitrogens in arg), because the C-N-H angle
differs -- even if the actual hydrogen bond N-H ...O is linear.

Currently default angle threshold    = 110. degrees
          default distance threshold = 3.5 A

ATOMS USED
~~~~~~~~~~

 Checks if donor is nitrogen or oxygen. 
 Only includes following oxygens as donors:
    - gamma oxygen on serine and threonine
    - eta oxygen or OH on tyrosines
    The following two due to difficulty in distinguishing between
      nitrogen and oxygen since they differ by only one electron
    - delta oxygen on asparagines
    - epsilon oxygen on glutamines

 Sulfurs are not included. In particular, 
 the Cys SG is not allowed as an H-bond acceptor.

KNOWN BUGS
~~~~~~~~~~
The program seems to crash on one pdb file that had a list of H2O
coordinates at the end. Once they were removed, the program ran fine.


DEFAULT OUTPUT
~~~~~~~~~~~~~~
** Each H-bond is listed once. Levitt criteria is used.

% FindHbonds.SGI.exe -i 4pti.pdb > out.txt

   Donor              Acceptor        Dist  CNH_O   NH_OC
   --------------     --------------  ----  ------  -----
#     5   CYS N   ... O      2   PRO  3.11  133.20  120.0
#     6   LEU N   ... O      3   ASP  3.01  131.89  121.3
#     7   GLU N   ... O      4   PHE  3.20  130.67  110.9
#    43   ASN ND2 ... O      5   CYS  3.27  116.47  109.9
#    43   ASN ND2 ... O      7   GLU  2.74  134.95  158.3
#    43   ASN N   ... OE2    7   GLU  3.22  123.73  167.0
#    36   GLY N   ... O     11   THR  2.88  135.65  137.7
#    35   TYR N   ... O     18   ILE  2.75  123.48  162.6
#    33   PHE N   ... O     20   ARG  2.84  109.97  165.4


SORTED  OUTPUT
~~~~~~~~~~~~~~
** Output is sorted residue number and each H-bond is listed twice. 
   Levitt criteria is used. 

% FindHbonds.SGI.exe -sort -i 4pti.pdb > out.txt

  Donor              Acc.    or    Don.     Acceptor        Dist  CNH_O   NH_OC
  --------------     ------------------     --------------  ----  ------  -----
#                           1   ARG NE  ... O     55   CYS  2.83  133.37  154.3
#                           1   ARG NH2 ... OH    23   TYR  3.33   98.73  123.7
#    5   CYS N   ... O      2   PRO                         3.11  133.20  120.0
#    6   LEU N   ... O      3   ASP                         3.01  131.89  121.3
#    7   GLU N   ... O      4   PHE                         3.20  130.67  110.9
#                           5   CYS N   ... O      2   PRO  3.11  133.20  120.0
#   43   ASN ND2 ... O      5   CYS                         3.27  116.47  109.9
#                           6   LEU N   ... O      3   ASP  3.01  131.89  121.3
#   43   ASN N   ... OE2    7   GLU                         3.22  123.73  167.0
#                           7   GLU N   ... O      4   PHE  3.20  130.67  110.9
#   43   ASN ND2 ... O      7   GLU                         2.74  134.95  158.3
#   36   GLY N   ... O     11   THR                         2.88  135.65  137.7
#                          11   THR OG1 ... O     34   VAL  3.11  102.86  162.0
#                          16   ALA N   ... O     36   GLY  2.95  131.72  125.5
#                          18   ILE N   ... O     35   TYR  3.07  134.24  156.6
#   35   TYR N   ... O     18   ILE                         2.75  123.48  162.6


LESK  OUTPUT
~~~~~~~~~~~~
** H-bond criteria of Arthur Lesk is used. 

% FindHbonds.SGI.exe -aml -sort -i 4pti.pdb > out        
% FindHbonds.SGI.exe -aml -i 4pti.pdb > out        

   Donor              Acceptor        Dist  CNH_O   NH_OC
   --------------     --------------  ----  ------  -----
#     5   CYS N   ... O      2   PRO  3.11  133.20  120.0
#     6   LEU N   ... O      3   ASP  3.01  131.89  121.3
#     7   GLU N   ... O      4   PHE  3.20  130.67  110.9
#    43   ASN ND2 ... O      7   GLU  2.74  134.95  158.3
#    43   ASN N   ... OE2    7   GLU  3.22  123.73  167.0
#    36   GLY N   ... O     11   THR  2.88  135.65  137.7
#    35   TYR N   ... O     18   ILE  2.75  123.48  162.6
#    33   PHE N   ... O     20   ARG  2.84  109.97  165.4


VDW contacts

VDWCont1to2.exe

This will determine the VDW contacts between structure 1 and structure 2 in rather inefficient fashion. A much more elegent method of doing this is via the Delauney triangulation, which is accomplished by the program full-dump-polyhedra.exe in the main distribution.

Sample Run

aragorn> VDWCont1to2.exe -ia frag-1.pdb -ib frag-2.pdb 
Hello:  program VDWCont1to2.exe at line 5 in source VDWCont1to2.main.c,
Hello:  which was compiled on Jul 29 1997 at 14:58:57.
[New String    ] -ia = frag-1.pdb
[GetEnvAndJoin ] No expansion of frag-1.pdb
open_and_read_pdb(): Trying to read frag-1.pdb
open_and_read_pdb(): Finished reading frag-1.pdb
[New String    ] -ib = frag-2.pdb
[GetEnvAndJoin ] No expansion of frag-2.pdb
open_and_read_pdb(): Trying to read frag-2.pdb
open_and_read_pdb(): Finished reading frag-2.pdb
[T/F Option    ] -VerifyRadii = 0
[T/F Option    ] -hbond = 0
[Default Double] -thresh = 0.600000
Structure A has 37 atoms and structure B has 92 atoms
ATOM      6  CG  ARG     1      30.976  12.589 -11.819  0.00  0.00
ATOM      7  CD  ARG     1      29.608  12.016 -11.694  0.00  0.00
ATOM     29  C   PRO     2      34.652  12.135  -9.374  0.00  0.00
ATOM     30  O   PRO     2      33.583  11.537  -9.255  0.00  0.00
ATOM     31  CB  PRO     2      34.826  14.292  -8.056  0.00  0.00
ATOM     32  CG  PRO     2      33.927  15.515  -8.135  0.00  0.00
ATOM     33  CD  PRO     2      32.967  15.143  -9.243  0.00  0.00
ATOM     43  C   ASP     3      35.296   9.402  -8.236  0.00  0.00
ATOM     44  O   ASP     3      34.812   8.288  -8.260  0.00  0.00
ATOM     54  N   PHE     4      35.466  10.210  -7.174  0.00  0.00
ATOM     55  CA  PHE     4      34.975   9.704  -5.855  0.00  0.00
ATOM     56  C   PHE     4      33.438   9.514  -5.843  0.00  0.00
ATOM     57  O   PHE     4      32.937   8.733  -5.020  0.00  0.00
ATOM     58  CB  PHE     4      35.435  10.423  -4.613  0.00  0.00
ATOM     59  CG  PHE     4      34.960  11.819  -4.512  0.00  0.00
ATOM     60  CD1 PHE     4      33.708  12.036  -3.946  0.00  0.00
ATOM     62  CE1 PHE     4      33.249  13.321  -3.826  0.00  0.00

Helix Axes

HelixTips.exe

An executable is supplied for the calculation of helix axes (HelixTips.exe). It is for IRIX 5.3. The source of the program is in HelixTips.main.c. However, no further documentation is given for this.

Sample Run

Sample runs using the CA atoms for two helices (helix-1.pdb and helix-2.pdb) are shown below.

> HelixTips.exe -i helix-2.pdb 
Hello:  program HelixTips.exe at line 5 in source HelixTips.main.c,
Hello:  which was compiled on Aug 19 1994 at 00:52:01.
[New String    ] -i = helix-2.pdb
[GetEnvAndJoin ] No expansion of helix-2.pdb
open_and_read_pdb(): Trying to read helix-2.pdb
centroid.c [75]: m=( -25.149900 -17.273200 3.755700 )
centroid.c [83]: EigenVals=( 2.494127 3.484771 16.789797 )
centroid.c [112]: ntip=( 22.137974 18.284412 2.429341 )
centroid.c [124]: ctip=( 27.620504 16.443729 -8.829126 )
HelixTips.main.c [11]: Vector for N-terminal tip and then vector for C-terminus

22.137974 18.284412 2.429341 27.620504 16.443729 -8.829126
> 
> HelixTips.exe -i helix-2.pdb
Hello:  program HelixTips.exe at line 5 in source HelixTips.main.c,
Hello:  which was compiled on Aug 19 1994 at 00:52:01.
[New String    ] -i = helix-2.pdb
[GetEnvAndJoin ] No expansion of helix-2.pdb
open_and_read_pdb(): Trying to read helix-2.pdb
centroid.c [75]: m=( -25.149900 -17.273200 3.755700 )
centroid.c [83]: EigenVals=( 2.494127 3.484771 16.789797 )
centroid.c [112]: ntip=( 22.137974 18.284412 2.429341 )
centroid.c [124]: ctip=( 27.620504 16.443729 -8.829126 )
HelixTips.main.c [11]: Vector for N-terminal tip and then vector for C-terminus

22.137974 18.284412 2.429341 27.620504 16.443729 -8.829126


Further Links

Peter Kahn at Rutgers also has some code available for the calculation of helix axes.

If you really want to get into calculating hydrogen bonds, I suggest you get the program X-PLOR, which is distributed by Axel Brunger at Yale.


Mark.Gerstein@yale.edu / 7/25/97