The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Protein Class

VERSION

Version 0.05

SYNOPSIS

This package contains the 'Protein' class used to represent a protein structure composed of smotifs and the set of subroutines available for constructing, modifying, and evaluating the given protein structure

    use Protein;

    my $foo = Protein->new();
    ...

new

Initialize a new Protein object

last_pt

Returns or changes the last coordinate (C-terminus) of the protein test->last_pt($atom,@pt)

INPUTS: $atom = atom type ('CA','C','N','O','CB','H'); @pt (optional) = new coordinates to be assigned to the last atom

num_res

        Returns the number of residues in the protein
        test->num_res() 

change_pt Changes the coordinates of an existing atom in the protein test->change_pt($atom,$index,@pt) INPUTS: $atom = atom type ('CA','C','N','O','CB','H'); $index = residue number @pt new coordinates to be assigned to the atom

get_coords

Returns the coordinates (as an Nx3 array of arrays) of atoms in consecutive residues test->get_coords($atom,$first,$last)

INPUTS: $atom = atom type ('CA','C','N','O','CB','H'); $first = first residue index $last = last residue index

types

        Returns an array of types (HH, HE, EH, EE) of all the smotifs in the structure
        test->types()

one_landmark

        Returns or assigns an array of the landmarks (start, loop start, ss2 start, end) for a given smotif
        test->one_landmark($index,@newlm)
        
        INPUTS:
        $index = smotif index
        @newlm (optional) = array of landmarks to be assigned to the smotif

get_seq

    Returns or assigns a portion of the protein sequence as a string
        test->get_seq($start,$len,$seq) 
        
    INPUTS:
        $start = start position of the sequence portion
        $len = length of the sequence portion
        $seq (optional) = new sequence of amino acids to assign to the given portion of the sequence
        Prints the contents of the protein object to a PDB-formatted file
        test->print_to_file($filename)
        INPUTS:
        $filename = name of the output file (will be overwritten)

num_motifs

        Returns the number of smotifs in the protein
        test->num_motifs()

add_motif

        Appends an smotif to the end of the protein structure
        test->add_motif(@proptable)

        INPUTS:
        @proptable = array of properties, can be in one of two formats -
                1) a single entry containing the smotif nid number
                2) an array with the PDB code, chain, smotif start residue, loop length, ss1 length, ss2 length, type

add_motif_from_file

        Adds an smotif to an empty structure
        test->add_motif_from_file(@proptable)
        DO NOT CALL THIS FUNCTION DIRECTLY! Use test->add_motif(@proptable) instead

        INPUTS:
        @proptable = array of properties, can be in one of two formats -
                1) a single entry containing the smotif nid number
                2) an array with the PDB code, chain, smotif start residue, loop length, ss1 length, ss2 length, type

add_partial_motif

Adds an smotif to an existing structure by aligning its first secondary structure to the final secondary structure of the protein. test->add_partial_motif(@proptable) DO NOT CALL THIS FUNCTION DIRECTLY! Use test->add_motif(@proptable) instead INPUTS: @proptable = array of properties, can be in one of two formats - 1) a single entry containing the smotif nid number 2) an array with the PDB code, chain, smotif start residue, loop length, ss1 length, ss2 length, type

axis

        Calculates or returns the axis corresponding to a given motif ss
        test->axis(mot, ss, option)

        Inputs:
        mot = smotif number
        ss = secondary structure in the motif (either 1 or 2)
        option = recalculate and return (1) or just return (0)

cal_angles

        Calculates or returns the geometric parameters of an smotif (d, delta, theta, rho)
        test->calc_angles(mot, option)

        Inputs:
        mot = smotif number
        option = recalculate and return (1) or just return (0)

rotate_theta

        Changes the theta (packing) angle of an smotif in a structure - all the torsional 'stress' is placed on the flanking residue
        test->rotate_theta(mot, ang)

        Inputs:
        mot = smotif number
        ang = degrees by which to change the theta angle

rotate_rho

        Changes the rho (meridian) angle of an smotif in a structure - all the torsional 'stress' is placed on the flanking residue
        test->rotate_rho(mot, ang)

        Inputs:
        mot = smotif number
        ang = degrees by which to change the rho angle

rotate_delta

Changes the delta (hoist) angle of an smotif in a structure - all the torsional 'stress' is placed on the flanking residue test->rotate_delta(mot, ang)

Inputs:

mot = smotif number ang = degrees by which to change the delta angle

lvec

        Calculates or returns the l-vector (vector joining the flanking loop residues)
        test->lvec(mot, option)

        Inputs:

        mot = smotif number
        option = recalculate and return (1) or just return (0)

shorten

        Shortens a secondary structure by removing a specified number of residues
        test->shorten(mot, num)

        Inputs:

        mot = secondary structure number (use -1 for the last secondary structure)
        num = number of residues to shorten by

elongate

        Elongates a secondary structure by a specified number of residues. The elongation is performed
        by sequentially taking a portion of the C-terminal end of the secondary structure, shifting it 
        by one residue, and aligning it to the unshifted end, thus generating the coordinates of one 
        new residue at a time.
        test->elongate(mot, num)

        Inputs:

        mot = secondary structure number (use -1 for the final secondary structure)
        num = number of residues to extend the secondary strucure by

check_ster_viols

        Checks for steric distance violations in a structure, given an inter-atomic distance and an atom type
        @violations=test->check_ster_viols(atom, sterdist)

        Inputs:

        atom = backbone atom type, can be 'all', 'ca', 'c', 'n', 'cb', 'o'
        sterdist = distance (Angstrom) under which a violation is recorded

        OUTPUTS:
        
        If a specific atom type is specified, output array contains (residue numbers that clash, minimum distance), 
        or (100,100) if no clashes
        If atom type is specified as 'all', output array contains (residue numbers that clash, atom types that 
        clash, minimum distance), or (100,100) if no clashes

        Note: In all cases, only the 'worst offending' set of atoms (i.e. the pair with smallest inter-atomic distance) is returned

statpot

        Calculates the total statistical potential scoring function value using Rykunov's potential
        test->statpot()

        Note: test->stat_table() has to be called before running this method

rmsd

        Returns the RMSD between the backbone atoms (CA, C, N, and O) of the structures in test and test2
        rmsd=test->rmsd(test2)

        NOTE: test2 must have at least as many residues as $test1

rmsd_loops

        Returns the RMSD between the backbone atoms (CA, C, N, and O) in all the loop regions of the test1 
        and test2 structures
        rmsd=test->rmsd_loops(test2)

        NOTE: test2 must have at least as many loop residues as test1

rmsd_loops_flanking_ss

        Returns the RMSD between the backbone atoms (CA, C, N, and O) in all the loop regions and 
        flanking 3 ss residues of the test1 anf test2 structures
        rmsd=test->rmsd_loops_flanking_ss(test2) 

        NOTE: test2 must have at least as many loop residues as test1

rmsd_ss

        Returns the RMSD between the backbone atoms (CA, C, N, and O) in all the secondary 
        structure regions of the test1 and test2 structures.
        rmsd=test->rmsd_ss(test2,@order)

        The order of secondary structures in test structure are given by the optional array @order. 
        An example of @order would be (0 1 2 3 5 4), where the third secondary structure is oriented 
        in the reverse direction in test as opposed to test2. If @order is omitted, the routine 
        assumes the same order for both structures.

        NOTE: test2 must have the same ordered initial and intermediate secondary structure 
        lengths as test1, or else the function returns -1

rmsd_anchor_order

        Returns the RMSD between the anchor points (a-carbons of the first and last residues 
        of all the secondary structures) of test and test2 structures, where the order of points 
        in test structure are given by the array @order. 

        An example of @order would be (0 1 2 3 5 4), where the third secondary structure is 
        oriented in the reverse direction in test as opposed to test2
        
        rmsd=test->rmsd_anchor_order(test2,@order)

rmsd_ss_order

        Returns the RMSD between the secondary structure backbone atoms (C, N, CA) of test and test2 structures, 
        rmsd=test->rmsd_ss_order(test2,@order)

radius_of_gyration

        Calculates the radius of gyration of a structure using the backbone CA, C, and N atoms
        rad=test->radius_of_gyration()

superpose

        Optimally superposes structure test onto structure test2, using the backbone CA, C, and N atoms,
        and returns the rmsd of the best superposition.
        rmsd=test->superpose(test2) 

        NOTE: function fails if test2 has fewer residues than test1

superpose_anchors

        Optimally superposes the anchor points (c-alpha coordinates for the start and end residues of
        all secondary structures) of test2 onto the anchor points of test, where the order of points 
        in test structure are given by the array @order. 
        
        An example of @order would be (0 1 2 3 5 4), where the third secondary structure is oriented 
        in the reverse direction in test as opposed to test2.

        rms=test->superpose_anchors(test2)

decompose_landmarks

        Decomposes the structure into sets of residue numbers representing the start and end of each
        secondary structure (indexed from 0 to num_motifs*2-1), and then generates all possible 
        (original and re-wired) smotif start and end points.

        test->decompose_landmarks(outfilename)

        The output file, written to outfilename, contains lines with the following information:
        start anchor value of first ss, end anchor value of first ss, start anchor value of second ss, 
        end anchor value of second ss, smotif type, ss1 length, ss2 length. 

lazaridis_memb

        Calculate the membrane-based Lazaridis implicit solvation potential
        test->lazaridis_memb()

lazaridis_hybrid

        Calculate the hybrid membrane/globular Lazaridis implicit solvation potential

lazaridis

        This routine is OBSOLETE
        Calculate the Lazaridis implicit solvation potential
        test->lazaridis()

lazaridis_new

        Calculate the globular Lazaridis implicit solvation potential
        test->lazaridis_new()

add_amide_hydrogens

        Generate amide hydrogens along the backbone, to be used to determine long-range hydrogen bonds
        Ideal amide hydrogen bond lies along the bisector of the C->N and N->Ca bonds
        test->add_amide_hydrogens()

calc_long_range_h_bonds

        Calculate the long-range knowledge-based H-bond potential based on Kortemme, Mezerov, and Baker paper   
        test->calc_long_range_h_bonds()

calc_d_theta_psi

        Calculate the distance and angle parameters for H-bond potential calculation
        test->calc_d_theta_psi()

hbond_scores

        Set up the knowledge-based H-bond potential values
        test->hbond_scores()

stat_table

        Load Rykunov's statistical potential values
        test->stat_table()

torsion

        Calculate phi/psi/omega angles for every residue within a range
        $tor=torsion($test,$start,$end);

        Inputs: 
        Start and end residues of protein in "test" for torsion calculation

change_torsion

        Change the phi or psi angle of a single residue

        Inputs:
        Residue number, phi or psi - which angle to rotate, and the amount of rotation to be carried out. 

coords_from_torsion

        Calculate coordinates, given a set of phi/psi angles
        
        Inputs:
        Array containing phi and psi angles

AUTHOR

Fiserlab Members , <andras at fiserlab.org>

BUGS

Please report any bugs or feature requests to bug-. at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=.. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Protein

ACKNOWLEDGEMENTS

LICENSE AND COPYRIGHT

Copyright 2015 Fiserlab Members .

This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at:

http://www.perlfoundation.org/artistic_license_2_0

Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license.

If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license.

This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder.

This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed.

Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.