Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
User Manual


Authors: F. Cazals and R. Tetley


This package provides elementary methods to detect selected pointwise interactions within molecules, such as:

  • Salt bridges
  • Disulfide bonds

Salt bridges

This topic has a long history in structural biology [16] , [109], [68] . The difficulty in defining such interactions owes to (i) the dynamic nature of interactions, (ii) the charged status of atoms, (iii) the environment of residues, (iv) the multiplicity of H bonds (presence of bifurcated H bonds), etc.

Practically, we provide two methods to identify salt bridges. To describe them, recall that atoms of interest for acidic residues are:

  • D (ASP): OD2
  • E (GLU): OD2

Likewise, for basic residues:

  • A (ARG): NH1 and NH2
  • L (LYS): NZ
  • H (HIS): ND1 and NE2

Method 1, from [16] : based on inter atomic distances. The aforementioned atoms (one on the acidic residue, one on the basic residue) are identified. For two of them, if the minimum distance found is less than a threshold, the pair is termed a salt bridge.

Method 2, from [109] : based on distances between the center of masses of the charged groups. For both the basic and acidic residue, the center of mass of their charged groups are computed. If the distance between these is less than a user defined threshold (typically 4 $\AA$), the pair is termed a salt bridge.

To display salt bridges under VMD: make a selection with the proper atom types, as defined above, and use the Drawing method: DynamicBonds with the appropriate distance cutoff.

To display salt bridges under Pymol: Create a selection with the proper residues. Then using the Action [A] button for your selection (displayed on the righthand side of the GUI), navigate the menus: [A]->find->polar contacts->within selection.

Disulfide bonds

Disulfide bonds are defined as follows:

  • Two sulfer atoms from CYS amino acids, at distance less than 2.1 $AA$, see disulfide.
To display SS bonds under VMD make a selection with Selected atoms: resname CYS and name SG, and <Drawing method: DynamicBonds with distance cutoff : 2.1 $AA$.

To display SS bonds under Pymol: the Show menu has an option disulfide.


The following algorithms are used for proteins:

  • The detection of salt bridges merely requires running two loops on all amino-acids, so as to find the possibly interactions D/E (Aspartate/Glutamate) and A/L/H (Arginine/Lysine/Histidine).
  • The detection of disulfide bonds proceeds in two steps. First, all CYS a.a. are sought. Second, for each of them, it is checked whether the sulfer atom (SG) has another SG atom within 2.1 $AA$, see disulfide.

Implementation and functionalities


We provide to main classes to search for Pointwise interactions:

The template parameter has the following requirements:

  • ParticleTraits should define anything inherent to the strucutre. That is, residues, atoms, but also their geometric representations. See the ParticleTraits package for a complete description.


The two classes provide a member function for finding salt bridges (or disulfide bonds).

  • SBL::CSB::T_Salt_bridges_finder< ParticleTraits >: By default, this class uses Method 1 described above. Alternatively, by using the option –use-center-of-mass, the user can specify that the algorithm should instead use Method 2 (based on the center of mass of charged atoms).

  • SBL::CSB::T_Disulfide_bonds_finder< ParticleTraits >: This class simply scans all the cysteins of the structure and check if their S atoms are within a threshold distance of each other (2.1 Angstroms by default).

The output of both classes is a serialized list of the pairs of residues which form salt bridges or disulfide bonds.


Disulfide bonds finder

The following example show how to compute the set of disulfide bonds from an input PDB file.

Salt bridges finder

The following example show how to compute the set of salt bridges from an input PDB file.