Get Luzar-Chandler hydrogen bonds#

Detecting hydrogen bonds based on combined distance and angle criteria (Luzar & Chandler).

The function molsysmt.hbonds.get_luzard_chandler_hbonds() evaluates hydrogen bonds using the joint donor–acceptor distance and D–H···A linearity angle thresholds established by Luzar & Chandler.

Added in version 1.0.0.

Basic usage#

Let’s detect hydrogen bonds in a protein structure using the Luzar-Chandler distance and angle criteria:

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

We evaluate hydrogen bonds with a distance cutoff of 3.5 Å and an angle tolerance of 30°:

hbonds, distances, angles = msm.hbonds.get_luzard_chandler_hbonds(molsys,
                                                                  distance_threshold='3.5 angstroms',
                                                                  angle_threshold='30.0 degrees')
print('Total Luzar-Chandler hydrogen bonds detected:', len(hbonds[0]))
print('First 5 H-bond triplets [donor_heavy, bonded_H, acceptor]:\n', hbonds[0][:5])
print('First 5 distances:\n', distances[0][:5])
print('First 5 angles:\n', angles[0][:5])
Total Luzar-Chandler hydrogen bonds detected: 36
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 distances:
 [0.29376070029188095 0.25604054035224855 0.27401248994459554 0.2834160516724867 0.2878586446826376] nanometer
First 5 angles:
 [0.35409470074619875 0.10517367420842096 0.5053429033349056 0.30326356925490494 0.20589640163446343] radian

Hydrogen bonds between selections#

Hydrogen bonds can also be evaluated across two distinct subsets or candidate selections using selection and selection_2. Here we demonstrate this general feature with an example of interfacial hydrogen bonds formed between the two binding partners in the Barnase–Barstar complex:

complex_sys = msm.convert(msm.systems['Barnase-Barstar']['barnase_barstar.h5msm'])
inter_hbonds, inter_dist, inter_ang = msm.hbonds.get_luzard_chandler_hbonds(complex_sys,
                                                                            selection='molecule_name=="BARNASE"',
                                                                            selection_2='molecule_name=="BARSTAR"')
print('Interfacial hydrogen bonds detected:', len(inter_hbonds[0]))
print('Interface H-bond triplets:\n', inter_hbonds[0][:5])
Interfacial hydrogen bonds detected: 15
Interface H-bond triplets:
 [[ 431  432 2400]
 [ 431  433 2361]
 [ 858  859 2296]
 [ 876  878 2969]
 [ 879  880 2969]]