Bio::Tools::Run::QCons - Run Qcons to analyze protein-protein contacts


version 0.112881


   my $q = Bio::Tools::Run::QCons->new(
       file => $pdbfile,
       chains => [$chain1, $chain2],

   my $contacts_by_atom = $q->atom_contacts;
   my $contacts_by_residue = $q->residue_contacts;


This module implements a wrapper for the QCons application. QCons itself is an implementation of the Polyhedra algorithm for the prediction of protein-protein contacts. From the program's web page (

"QContacts allows for a fast and accurate analysis of protein binding interfaces. Given a PDB file [...] and the interacting chains of interest, QContacts will provide a graphical representation of the residues in contact. The contact map will not only indicate the contacts present between the two proteins, but will also indicate whether the contact is a packing interaction, hydrogen bond, ion pair or salt bridge (hydrogen-bonded ion pair). Contact maps allow for easy visualization and comparison of protein-protein interactions."

For a thorough description of the algorithm, its limitations and a comparison with several others, refer to Fischer, T. et. al: Assessing methods for identifying pair-wise atomic contacts across binding interfaces, J. Struc. Biol., vol 153, p. 103-112, 2006.



Gets or sets the file with the protein structures to analyze. The file format should be PDB.



    chains => ['A', 'B'];

Gets or sets the chain IDs of the subunits whose contacts the program will calculate. It takes an array reference of two strings as argument.



Gets or sets the probe radius that the program uses to calculate the exposed and buried surfaces. It defaults to 1.4 Angstroms, and unless you have a really strong reason to change this, you should refrain from doing it.


Output debugging information to STDERR. Off by default.


The name of the executable. Defaults to 'Qcontacts', but it can be set to anything at construction time:

   my $q = Bio::Tools::Run::QCons->new(
       program_name => 'qcons',
       file => $pdbfile,
       chains => [$chain1, $chain2]

Notice that if the binary is not on your PATH environment variable, you should give program_name a full path to it.


Return an array reference with the information of every atom-atom contact found.

The structure of the array reference is as follows:

   $by_atom = [
                  'area' => '0.400',
                  'type' => 'V',
                  'atom2' => {
                               'number' => '461',
                               'res_name' => 'SER',
                               'res_number' => '59',
                               'name' => 'OG'
                  'atom1' => {
                               'number' => '2226',
                               'res_name' => 'ASN',
                               'res_number' => '318',
                               'name' => 'CB'

This corresponds to the information of one contact. Here, 'atom1' refers to the atom belonging to the first of the two polypeptides given to the 'chains' method; 'atom2' refers to the second. The fields 'number' and 'name' refer to the atom's number and name, respectively. The fields 'res_name' and 'res_number' indicate the atom's parent residue name and residue id. 'type' indicates one of the five non-covalent bonds that the program predicts:


Returns an array reference with the information of every residue-residue contact found.

The structure of the array is organized as follows:

   $by_res = [
                 'area' => '20.033',
                 'res1' => {
                             'number' => '318',
                             'name' => 'ASN'
                 'res2' => {
                             'number' => '59',
                             'name' => 'SER'

Here, bond type is obviously not given since the contact can possibly involve more than one atom-atom contact type. 'res1' and 'res2' correspond to the residues of the first and second chain ID given, respectively. 'area' is the sum of every atom-atom contact that the residue pair has. Their names (as three-letter residue names) and number are given as hashrefs.

Every bond type has the 'area' attribute, which indicates the surface (in square Angstroms) of the interaction. In addition, all N-O contacts (I, S and H) have a 'Rno' value that represents the N-O distance. Directional contacts (S and H) also have an 'angle' feature that indicates the contact angle. For salt bridges, estimations of the free energy of hydrogen bond (dGhb) and free energy of ionic pair (dGip) are also given.


To Chad Davis for prodding me to dust off and release this module to the CPAN.


Bruno Vecchi <vecchi.b>


This software is copyright (c) 2011 by Bruno Vecchi.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.