Skip to content

ComputeHydrogenBondsOfMolecule

dstoeckel edited this page Mar 16, 2015 · 2 revisions

How can I compute the hydrogen bonds of a protein?

BALL offers a class HBondProcessor to compute hydrogen bonds based on topology information. Currently BALL support two criteria for hydrogen bonds:

  • an implementation of DSSP algorithm
    Kabsch W & Sander C (1983). Dictionary of protein secondary 
    structure: pattern recognition of hydrogen-bonded and geometrical features. 
    Biopolymers, 22, 2577-2637".
  • an implementation of the criterion used in SHFITX
   Neal, S., Nip, A. M., Zhang, H., and Wishart, D. S. (2003). 
   Rapid and accurate calculation of protein 1H, 13C and 15N chemical shifts. 
   J Biomol NMR, 26(3):215-240.".

You can switch between both definitions by setting the option PREDICTION_METHOD to either

  • BALL::HBondProcessor::PredictionMethod::KABSCH_SANDER or
  • BALL::HBondProcessor::PredictionMethod::WISHART_ET_AL Default prediction method is BALL::HBondProcessor::PredictionMethod::KABSCH_SANDER.

NOTE: the DSSP algorithm computes hydrogen bonds of the backbone only!

Also NOTE: the properties of the bond are not recomputed automatically if the System changes! Thus, bonds and their properties (angle, length) might become obsolete!

C++

#include <BALL/STRUCTURE/HBondProcessor.h>

   Protein* protein = ..; 
   HBondProcessor hbp;	  
   hbp.options.set(HBondProcessor::Option::PREDICTION_METHOD, 
	           HBondProcessor::PredictionMethod::KABSCH_SANDER);

   protein->apply(hbp);  
	
   std::vector<std::vector<Position> > HBonds  = hbp.getBackboneHBondPattern(); 
   std::vector<HBondProcessor::HBond>  h_bonds = hbp.getHBonds(); 
  
   for (Size i=0; i<h_bonds.size(); ++i)
   {
     cout << h_bonds[i].getDonor()->getFullName()    << " bond to " 
	  << h_bonds[i].getAcceptor()->getFullName() << ":" 
     cout << h_bonds[i].getLength() << endl;
   }

Python

import BALL

# get the first system in BALLView
s = getSystem(0)
hbp = BALL.HBondProcessor()
hbp.options.set(BALL.HBondProcessor.Option.PREDICTION_METHOD, 
                BALL.HBondProcessor.PredictionMethod.KABSCH_SANDER)
print hbp.options.get(BALL.HBondProcessor.Option.PREDICTION_METHOD)

s.apply(hbp)

Clone this wiki locally