Hydrogen bond analysis between a protein and a small molecule

You want to study the hydrogen bonds between a small molecule and a protein.

We can use the hbond command that will use a geometric consideration (distance of 3.0 Å and an angle cutoff of 135°) to consider a hydrogen bond is formed. For this recipe  we are going to use a 1 microsecond simulation of the human papilloma virus E6 protein and the natural product kappa-carrageenan. A short trajectory of the system is presented in the following video:

We can see from the trajectory that the ligand (using spacefill representation) is interacting with the binding site of the protein throughout the simulation. We will use the topology file vph.prmtop and the trajectory file vph.nc. The system consists of a protein receptor with 151 amino acids and two zinc ions. The ligand residue id is 154. The trajectory consists of 5074 frames and has been pre-processed to remove the waters and re-oriented with the autoimage command.

parm vph.prmtop
trajin vph.nc 1 last 1
hbond contacts :1-154 avgout avg.dat series uuseries hbond.gnu nointramol 
go
lifetime contacts[solutehb] out contacts-lifetime.dat
go

The CPPTRAJ scripts reads the topology file and the trajectory file using every frame.  Then we call the hbond command that will have the name ‘contacts’. The command will look for Hbond donors/acceptors in the regions specified by the mask that includes residues one through 154.  Very important here is the nointramol keyword, which will make the hbond command to only look for hbonds in different molecules. If we forget the keyword, the command will look for hbonds between all the 154 residues. The avgout keyword will write solute-solute hydrogen bond averages to a file called avg.dat. The series keyword will save hydrogen bond formed (1) or not formed (0) per frame for any detected hydrogen bond. The uuseries keyword will write the raw hydrogen bond time series data to hbond.gnu, which can be visualized using gnuplot. The nointramol keyword will make sure that only hydrogen bonds between different molecules are calculated.

We have to run the command to actually look for hydrogen bonds between the protein and the ligand using the go keyword.  As an extra analysis, we will calculate the lifetime of those hydrogen bonds found.  The lifetime will use as input the previously calculated data from the hbond command and print the results to contacts-lifetime.dat

Running the CPPTRAJ script will generate the files: avg.dat, hbond.gnu, contacts-lifetime.dat and crv.contacts-lifetime.dat. The avg.dat file will print the average of each solute-solute hydrogen bond (sorted by population) formed over the course of the trajectory. Looking at the first 10 lines of the avg.dat, we have:

#Acceptor       DonorH        Donor       Frames   Frac     AvgDist   AvgAng 
CYS_51@O        LIG_154@HO2   LIG_154@O20     4536     0.8940   2.7367    163.5635
LIG_154@O19     TYR_32@HH     TYR_32@OH   3686     0.7264   2.7974    163.7224
LIG_154@O22     CYS_51@H      CYS_51@N    1367     0.2694   2.8457    162.6448
LIG_154@O24     CYS_51@H      CYS_51@N    1243     0.2450   2.8504    162.6914
LIG_154@O7      TYR_54@H      TYR_54@N    882      0.1738   2.9019    161.8689
LIG_154@O23     CYS_51@H      CYS_51@N    872      0.1719   2.8483    162.5888
TYR_54@O        LIG_154@HO    LIG_154@O1  370      0.0729   2.7324    162.1249
LIG_154@O10     ARG_55@HH11   ARG_55@NH1  369      0.0727   2.8210    155.3269
LIG_154@O14     ARG_129@HH22  ARG_129@NH2      351      0.0692   2.8229    153.6910

We can see from the fraction column that for 89% of the simulation time there is a hydrogen bond between the oxygen atom of the residue CYS51 and the hydrogen atom of atom #2 of the ligand. Following this there is a hydrogen bond present for 72% of the simulation between the O19 of the ligand and the OH group of TYR32. In addition, 26% and 24% of the time of the simulation, a hydrogen bond is populated between oxygen atoms 22 and 24 of the ligand and the same CYS51 residue. The rest of the hydrogen bonds corresponds to 17% of the simulation between the ligand’s O7 and O23 oxygen atoms and the protein residues TYR54 and CYS51. From the file we can see the the rest of the hydrogen bonds are very short lived and we can assume that do not provide significant stability of the ligand-protein interaction.

The lifetime analysis allows the study of the time-dependent behavior of the hydrogen bonds. The first 10 lines of the file contacts-lifetime.dat are:

#Set lifetime lifetime[max] lifetime[avg] lifetime[frames] lifetime[name]
1    5        3             1.4000        7                LIG_154@O4-GLN_6@NE2-HE21
2    1        1             1.0000        1                LIG_154@HC7-GLN_6@NE2-HE21
3    1        1             1.0000        1                LIG_154@HC9-GLN_6@NE2-HE21
4    3        1             1.0000        3                LIG_154@O4-GLN_6@NE2-HE22
5    4        1             1.0000        4                LIG_154@HC6-GLN_6@NE2-HE22
6    1        1             1.0000        1                LIG_154@HC7-GLN_6@NE2-HE22
7    36       2             1.0556        38               LIG_154@O4-ARG_8@NH2-HH21
8    4        1             1.0000        4                LIG_154@HC7-ARG_8@NH2-HH21
9    46       2             1.0217        47               LIG_154@O4-ARG_8@NH2-HH22

Using the bash command: sort -g contacts-lifetime.dat -k5 to sort the file using the 5th column (lifetime frames) returns:

38   266     17          3.2782         872    LIG_154@O23-CYS_51@N-H
      41   515     10          1.7126         882    LIG_154@O7-TYR_54@N-H
      39   329     24          3.7781         1243   LIG_154@O24-CYS_51@N-H
      37   383     24          3.5692         1367   LIG_154@O22-CYS_51@N-H
      25   760     35          4.8500         3686   LIG_154@O19-TYR_32@OH-HH
     244  276     105        16.4348         4536   CYS_51@O-LIG_154@O20-HO2

This information show that the longest consecutive number of frames containing the CYS_51@O-LIG_154@O20-HO2 hydrogen bond is 105 (in the lifetime[max] column, which still appears to be the longest). So the longest “lifetime” for this hydrogen bond is 105. It’s a subtle but important  difference, since it could occur to have a hydrogen bond that is formed for a long time but maybe only 1 or 2 times (low frequency), or a hydrogen bond that is formed for most of the simulation but maybe for only 1 or 2 frames at a time (high frequency).

Another example for the Hbond command is available in this recipe