The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Bio::Structure::SecStr::DSSP::Res - Module for parsing/accessing dssp output

SYNOPSIS

my $dssp_obj = Bio::Structure::SecStr::DSSP::Res->new('-file'=>'filename.dssp');

# or

my $dssp_obj = Bio::Structure::SecStr::DSSP::Res->new('-fh'=>\*STDOUT);

# get DSSP defined Secondary Structure for residue 20
$sec_str = $dssp_obj->resSecStr( 20 );

# get dssp defined sec. structure summary for PDB residue  # 10 of chain A

$sec_str = $dssp_obj->resSecStrSum( '10:A' );

DESCRIPTION

DSSP::Res is a module for objectifying DSSP output. Methods are then available for extracting all the information within the output file and convenient subsets of it. The principal purpose of DSSP is to determine secondary structural elements of a given structure.

( Dictionary of protein secondary structure: pattern recognition
  of hydrogen-bonded and geometrical features.
  Biopolymers. 1983 Dec;22(12):2577-637. )

The DSSP program is available from: http://www.cmbi.kun.nl/swift/dssp

This information is available on a per residue basis ( see resSecStr and resSecStrSum methods ) or on a per chain basis ( see secBounds method ).

resSecStr() & secBounds() return one of the following: 'H' = alpha helix 'B' = residue in isolated beta-bridge 'E' = extended strand, participates in beta ladder 'G' = 3-helix (3/10 helix) 'I' = 5 helix (pi helix) 'T' = hydrogen bonded turn 'S' = bend '' = no assignment

A more general classification is returned using the resSecStrSum() method. The purpose of this is to have a method for DSSP and STRIDE derived output whose range is the same. Its output is one of the following:

'H' = helix         ( => 'H', 'G', or 'I' from above )
'B' = beta          ( => 'B' or 'E' from above )
'T' = turn          ( => 'T' or 'S' from above )
' ' = no assignment ( => ' ' from above )

The methods are roughly divided into 3 sections: 1. Global features of this structure (PDB ID, total surface area, etc.). These methods do not require an argument. 2. Residue specific features ( amino acid, secondary structure, solvent exposed surface area, etc. ). These methods do require an argument. The argument is supposed to uniquely identify a residue described within the structure. It can be of any of the following forms: ('#A:B') or ( #, 'A', 'B' ) || | || - Chain ID (blank for single chain) |--- Insertion code for this residue. Blank for most residues. |--- Numeric portion of residue ID.

  (#)
   |
   --- Numeric portion of residue ID.  If there is only one chain and
       it has no ID AND there is no residue with an insertion code at this
       number, then this can uniquely specify a residue.

  ('#:C') or ( #, 'C' )
    | |
    | -Chain ID
    ---Numeric portion of residue ID.

If a residue is incompletely specified then the first residue that
fits the arguments is returned.  For example, if 19 is the argument
and there are three chains, A, B, and C with a residue whose number
is 19, then 19:A will be returned (assuming its listed first).

Since neither DSSP nor STRIDE correctly handle alt-loc codes, they
are not supported by these modules.

3. Value-added methods. Return values are not verbatem strings parsed from DSSP or STRIDE output.

FEEDBACK

Mailing Lists

User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to one of the Bioperl mailing lists. Your participation is much appreciated.

bioperl-l@bioperl.org                  - General discussion
http://bioperl.org/wiki/Mailing_lists  - About the mailing lists

Support

Please direct usage questions or support issues to the mailing list:

bioperl-l@bioperl.org

rather than to the module maintainer directly. Many experienced and reponsive experts will be able look at the problem and quickly address it. Please include a thorough description of the problem with code and data examples if at all possible.

Reporting Bugs

Report bugs to the Bioperl bug tracking system to help us keep track the bugs and their resolution. Bug reports can be submitted via the web:

https://github.com/bioperl/bioperl-live/issues

AUTHOR - Ed Green

Email ed@compbio.berkeley.edu

APPENDIX

The rest of the documentation details each method. Internal methods are preceded with a _

CONSTRUCTOR

new

Title         : new
Usage         : makes new object of this class
Function      : Constructor
Example       : $dssp_obj = Bio::DSSP:Res->new( filename or FILEHANDLE )
Returns       : object (ref)
Args          : filename ( must be proper DSSP output file )

ACCESSORS

totSurfArea

Title         : totSurfArea
Usage         : returns total accessible surface area in square And.
Function      :
Example       : $surArea = $dssp_obj->totSurfArea();
Returns       : scalar
Args          : none

numResidues

Title         : numResidues
Usage         : returns the total number of residues in all chains or
                just the specified chain if a chain is specified
Function      :
Example       : $num_res = $dssp_obj->numResidues();
Returns       : scalar int
Args          : none

pdbID

Title         : pdbID
Usage         : returns pdb identifier ( 1FJM, e.g.)
Function      :
Example       : $pdb_id = $dssp_obj->pdbID();
Returns       : scalar string
Args          : none

pdbAuthor

Title         : pdbAuthor
Usage         : returns author field
Function      :
Example       : $auth = $dssp_obj->pdbAuthor()
Returns       : scalar string
Args          : none

pdbCompound

Title         : pdbCompound
Usage         : returns pdbCompound given in PDB file
Function      :
Example       : $cmpd = $dssp_obj->pdbCompound();
Returns       : scalar string
Args          : none

pdbDate

Title         : pdbDate
Usage         : returns date given in PDB file
Function      :
Example       : $pdb_date = $dssp_obj->pdbDate();
Returns       : scalar
Args          : none

pdbHeader

Title         : pdbHeader
Usage         : returns header info from PDB file
Function      :
Example       : $header = $dssp_obj->pdbHeader();
Returns       : scalar
Args          : none

pdbSource

Title         : pdbSource
Usage         : returns pdbSource information from PDBSOURCE line
Function      :
Example       : $pdbSource = $dssp_obj->pdbSource();
Returns       : scalar
Args          : none

resAA

Title         : resAA
Usage         : fetches the 1 char amino acid code, given an id
Function      :
Example       : $aa = $dssp_obj->resAA( '20:A' ); # pdb id as arg
Returns       : 1 character scalar string
Args          : RESIDUE_ID

resPhi

Title         : resPhi
Usage         : returns phi angle of a single residue
Function      : accessor
Example       : $phi = $dssp_obj->resPhi( RESIDUE_ID )
Returns       : scalar
Args          : RESIDUE_ID

resPsi

Title         : resPsi
Usage         : returns psi angle of a single residue
Function      : accessor
Example       : $psi = $dssp_obj->resPsi( RESIDUE_ID )
Returns       : scalar
Args          : RESIDUE_ID

resSolvAcc

Title         : resSolvAcc
Usage         : returns solvent exposed area of this residue in
                square Andstroms
Function      :
Example       : $solv_acc = $dssp_obj->resSolvAcc( RESIDUE_ID );
Returns       : scalar
Args          : RESIDUE_ID

resSurfArea

Title         : resSurfArea
Usage         : returns solvent exposed area of this residue in
                square Andstroms
Function      :
Example       : $solv_acc = $dssp_obj->resSurfArea( RESIDUE_ID );
Returns       : scalar
Args          : RESIDUE_ID

resSecStr

Title         : resSecStr
Usage         : $ss = $dssp_obj->resSecStr( RESIDUE_ID );
Function      : returns the DSSP secondary structural designation of this residue
Example       :
Returns       : a character ( 'B', 'E', 'G', 'H', 'I', 'S', 'T', or ' ' )
Args          : RESIDUE_ID
NOTE          : The range of this method differs from that of the
   resSecStr method in the STRIDE SecStr parser.  That is because of the
   slightly different format for STRIDE and DSSP output.  The resSecStrSum
   method exists to map these different ranges onto an identical range.

resSecStrSum

Title         : resSecStrSum
Usage         : $ss = $dssp_obj->resSecStrSum( $id );
Function      : returns what secondary structure group this residue belongs
                to.  One of:  'H': helix ( H, G, or I )
                              'B': beta  ( B or E )
                              'T': turn  ( T or S )
                              ' ': none  ( ' ' )
                This method is similar to resSecStr, but the information
                it returns is less specific.
Example       :
Returns       : a character ( 'H', 'B', 'T', or ' ' )
Args          : dssp residue number of pdb residue identifier

hBonds

Title         : hBonds
Usage         : returns number of 14 different types of H Bonds
Function      :
Example       : $hb = $dssp_obj->hBonds
Returns       : pointer to 14 element array of ints
Args          : none
NOTE          : The different type of H-Bonds reported are, in order:
   TYPE O(I)-->H-N(J)
   IN PARALLEL BRIDGES
   IN ANTIPARALLEL BRIDGES
   TYPE O(I)-->H-N(I-5)
   TYPE O(I)-->H-N(I-4)
   TYPE O(I)-->H-N(I-3)
   TYPE O(I)-->H-N(I-2)
   TYPE O(I)-->H-N(I-1)
   TYPE O(I)-->H-N(I+0)
   TYPE O(I)-->H-N(I+1)
   TYPE O(I)-->H-N(I+2)
   TYPE O(I)-->H-N(I+3)
   TYPE O(I)-->H-N(I+4)
   TYPE O(I)-->H-N(I+5)

numSSBr

Title         : numSSBr
Usage         : returns info about number of SS-bridges
Function      :
Example       : @SS_br = $dssp_obj->numSSbr();
Returns       : 3 element scalar int array
Args          : none

resHB_O_HN

Title         : resHB_O_HN
Usage         : returns pointer to a 4 element array
                consisting of: relative position of binding
                partner #1, energy of that bond (kcal/mol),
                relative positionof binding partner #2,
                energy of that bond (kcal/mol).  If the bond
                is not bifurcated, the second bond is reported
                as 0, 0.0
Function      : accessor
Example       : $oBonds_ptr = $dssp_obj->resHB_O_HN( RESIDUE_ID )
Returns       : pointer to 4 element array
Args          : RESIDUE_ID

resHB_NH_O

Title         : resHB_NH_O
Usage         : returns pointer to a 4 element array
                consisting of: relative position of binding
                partner #1, energy of that bond (kcal/mol),
                relative positionof binding partner #2,
                energy of that bond (kcal/mol).  If the bond
                is not bifurcated, the second bond is reported
                as 0, 0.0
Function      : accessor
Example       : $nhBonds_ptr = $dssp_obj->resHB_NH_O( RESIDUE_ID )
Returns       : pointer to 4 element array
Args          : RESIDUE_ID

resTco

Title         : resTco
Usage         : returns tco angle around this residue
Function      : accessor
Example       : resTco = $dssp_obj->resTco( RESIDUE_ID )
Returns       : scalar
Args          : RESIDUE_ID

resKappa

Title         : resKappa
Usage         : returns kappa angle around this residue
Function      : accessor
Example       : $kappa = $dssp_obj->resKappa( RESIDUE_ID )
Returns       : scalar
Args          : RESIDUE_ID ( dssp or PDB )

resAlpha

Title         : resAlpha
Usage         : returns alpha angle around this residue
Function      : accessor
Example       : $alpha = $dssp_obj->resAlpha( RESIDUE_ID )
Returns       : scalar
Args          : RESIDUE_ID ( dssp or PDB )

secBounds

Title         : secBounds
Usage         : gets residue ids of boundary residues in each
                contiguous secondary structural element of specified
                chain
Function      : returns pointer to array of 3 element arrays.  First
                two elements are the PDB IDs of the start and end points,
                respectively and inclusively.  The last element is the
                DSSP secondary structural assignment code,
                i.e. one of : ('B', 'E', 'G', 'H', 'I', 'S', 'T', or ' ')
Example       : $ss_elements_pts = $dssp_obj->secBounds( 'A' );
Returns       : pointer to array of arrays
Args          : chain id ( 'A', for example ).  No arg => no chain id

chains

Title         : chains
Usage         : returns pointer to array of chain I.D.s (characters)
Function      :
Example       : $chains_pnt = $dssp_obj->chains();
Returns       : array of characters, one of which may be ' '
Args          : none

residues

Title : residues
Usage : returns array of residue identifiers for all residues in
the output file, or in a specific chain
Function :
Example : @residues_ids = $dssp_obj->residues()
Returns : array of residue identifiers
Args : if none => returns residue ids of all residues of all
chains (in order); if chain id is given, returns just the residue
ids of residues in that chain

getSeq

Title         : getSeq
Usage         : returns a Bio::PrimarySeq object which represents a good
                guess at the sequence of the given chain
Function      : For most chains of most entries, the sequence returned by
                this method will be very good.  However, it is inherently
                unsafe to rely on DSSP to extract sequence information about
                a PDB entry.  More reliable information can be obtained from
                the PDB entry itself.
Example       : $pso = $dssp_obj->getSeq( 'A' );
Returns       : (pointer to) a PrimarySeq object
Args          : Chain identifier.  If none given, ' ' is assumed.  If no ' '
                chain, the first chain is used.

INTERNAL METHODS

_pdbChain

Title         : _pdbChain
Usage         : returns the pdb chain id of given residue
Function      :
Example       : $chain_id = $dssp_obj->pdbChain( DSSP_KEY );
Returns       : scalar
Args          : DSSP_KEY ( dssp or pdb )

_resAA

Title         : _resAA
Usage         : fetches the 1 char amino acid code, given a dssp id
Function      :
Example       : $aa = $dssp_obj->_resAA( dssp_id );
Returns       : 1 character scalar string
Args          : dssp_id

_pdbNum

Title        : _pdbNum
Usage        : fetches the numeric portion of the identifier for a given
               residue as reported by the pdb entry.  Note, this DOES NOT
               uniquely specify a residue.  There may be an insertion code
               and/or chain identifier differences.
Function     :
Example      : $pdbNum = $self->_pdbNum( DSSP_ID );
Returns      : a scalar
Args         : DSSP_ID

_pdbInsCo

Title        : _pdbInsCo
Usage        : fetches the Insertion Code for this residue, if it has one.
Function     :
Example      : $pdbNum = $self->_pdbInsCo( DSSP_ID );
Returns      : a scalar
Args         : DSSP_ID

_toPdbId

Title        : _toPdbId
Usage        : Takes a dssp key and builds the corresponding
               PDB identifier string
Function     :
Example      : $pdbId = $self->_toPdbId( DSSP_ID );
Returns      : scalar
Args         : DSSP_ID

_contSegs

Title         : _contSegs
Usage         : find the endpoints of continuous regions of this structure
Function      : returns pointer to array of 3 element array.
                Elements are the dssp keys of the start and end points of each
                continuous element and its PDB chain id (may be blank).
                Note that it is common to have several
                continuous elements with the same chain id.  This occurs
                when an internal region is disordered and no structural
                information is available.
Example       : $cont_seg_ptr = $dssp_obj->_contSegs();
Returns       : pointer to array of arrays
Args          : none

_numResLines

Title         : _numResLines
Usage         : returns the total number of residue lines in this
                dssp file.
                This number is DIFFERENT than the number of residues in
                the pdb file because dssp has chain termination and chain
                discontinuity 'residues'.
Function      :
Example       : $num_res = $dssp_obj->_numResLines();
Returns       : scalar int
Args          : none

_toDsspKey

Title         : _toDsspKey
Usage         : returns the unique dssp integer key given a pdb residue id.
                All accessor methods require (internally)
                the dssp key.   This method is very useful in converting
                pdb keys to dssp keys so the accessors can accept pdb keys
                as argument.  PDB Residue IDs are inherently
                problematic since they have multiple parts of
                overlapping function and ill-defined or observed
                convention in form.  Input can be in any of the formats
                described in the DESCRIPTION section above.
Function      :
Example       : $dssp_id = $dssp_obj->_pdbKeyToDsspKey( '10B:A' )
Returns       : scalar int
Args          : pdb residue identifier: num[insertion code]:[chain]

_parse

Title         : _parse
Usage         : parses dssp output
Function      :
Example       : used by the constructor
Returns       :
Args          : input source ( handled by Bio::Root:IO )

_parseResLine

Title         : _parseResLine
Usage         : parses a single residue line
Function      :
Example       : used internally
Returns       :
Args          : residue line ( string )