Get Buch hydrogen bonds#

Detecting hydrogen bonds based on the geometric distance criterion of Buch et al.

The function molsysmt.hbonds.get_buch_hbonds() calculates intra- and inter-molecular hydrogen bonds using the distance cutoff definition between donor hydrogens and acceptor atoms established by Buch et al.

Added in version 1.0.0.

Basic usage#

Let’s detect all hydrogen bonds in a protein structure using the Buch geometric criterion:

import molsysmt as msm
import pyunitwizard as puw
molsys = msm.convert(msm.systems['chicken villin HP35']['chicken_villin_HP35.h5msm'])

We calculate the hydrogen bonds and their corresponding donor–acceptor distances:

hbonds, distances = msm.hbonds.get_buch_hbonds(molsys, distance_threshold='2.3 angstroms')
print('Total Buch hydrogen bonds detected:', len(hbonds[0]))
print('First 5 H-bond triplets [donor_heavy, bonded_H, acceptor]:\n', hbonds[0][:5])
print('First 5 H-bond distances:\n', distances[0][:5])
Total Buch hydrogen bonds detected: 38
First 5 H-bond triplets [donor_heavy, bonded_H, acceptor]:
 [[ 42  43  91]
 [ 51  52  90]
 [ 80  81  90]
 [ 92  93  47]
 [112 113  58]]
First 5 H-bond distances:
 [0.20208395454218767 0.16088547276897824 0.19196764452261905 0.1894413459588617 0.19011635289191178] nanometer

Hydrogen bonds between selections#

Hydrogen bonds can be evaluated between two distinct selections or atom sets by specifying selection and selection_2. Here we illustrate this general capability with an example of inter-molecular hydrogen bonds at the protein–protein interface in the Barnase–Barstar complex:

complex_sys = msm.convert(msm.systems['Barnase-Barstar']['barnase_barstar.h5msm'])
msm.info(complex_sys, element='molecule')
index name type n atoms n groups n components chain index entity index entity name
0 BARNASE protein 1727 110 1 0 0 protein 0
1 BARSTAR protein 1432 89 1 0 1 protein 1

We calculate the inter-molecular hydrogen bonds at the Barnase–Barstar interface:

inter_hbonds, inter_dist = msm.hbonds.get_buch_hbonds(complex_sys,
                                                      selection='molecule_name=="BARNASE"',
                                                      selection_2='molecule_name=="BARSTAR"')
print('Inter-molecular hydrogen bonds detected:', len(inter_hbonds[0]))
print('Interface H-bond triplets:\n', inter_hbonds[0][:5])
Inter-molecular hydrogen bonds detected: 16
Interface H-bond triplets:
 [[ 431  432 2400]
 [ 431  433 2361]
 [ 858  859 2296]
 [ 876  878 2969]
 [ 879  880 2969]]