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.