annotate variant_effect_predictor/Bio/Structure/SecStr/STRIDE/Res.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $id $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # bioperl module for Bio::Structure::SecStr::STRIDE::Res.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Ed Green <ed@compbio.berkeley.edu>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Univ. of California
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 Bio::Structure::SecStr::STRIDE::Res - Module for parsing/accessing stride output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 my $stride_obj = new Bio::Structure::SecStr::STRIDE::Res( '-file' => 'filename.stride' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 my $stride_obj = new Bio::Structure::SecStr::STRIDE::Res( '-fh' => \*STDOUT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 # Get secondary structure assignment for PDB residue 20 of chain A
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 $sec_str = $stride_obj->resSecStr( '20:A' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 # same
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 $sec_str = $stride_obj->resSecStr( 20, 'A' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 STRIDE::Res is a module for objectifying STRIDE output. STRIDE is a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 program (similar to DSSP) for assigning secondary structure to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 individual residues of a pdb structure file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 ( Knowledge-Based Protein Secondary Structure Assignment,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 PROTEINS: Structure, Function, and Genetics 23:566-579 (1995) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 STRIDE is available here:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 http://www.embl-heidelberg.de/argos/stride/down_stride.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 Methods are then available for extracting all of the infomation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 present within the output or convenient subsets of it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 Although they are very similar in function, DSSP and STRIDE differ
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 somewhat in output format. Thes differences are reflected in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 return value of some methods of these modules. For example, both
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 the STRIDE and DSSP parsers have resSecStr() methods for returning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 the secondary structure of a given residue. However, the range of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 return values for DSSP is ( H, B, E, G, I, T, and S ) whereas the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 range of values for STRIDE is ( H, G, I, E, B, b, T, and C ). See
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 individual methods for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 The methods are roughly divided into 3 sections:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 1. Global features of this structure (PDB ID, total surface area,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 etc.). These methods do not require an argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 2. Residue specific features ( amino acid, secondary structure,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 solvent exposed surface area, etc. ). These methods do require an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 arguement. The argument is supposed to uniquely identify a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 residue described within the structure. It can be of any of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 following forms:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 ('#A:B') or ( #, 'A', 'B' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 || |
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 || - Chain ID (blank for single chain)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 |--- Insertion code for this residue. Blank for most residues.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 |--- Numeric portion of residue ID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 (#)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 |
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 --- Numeric portion of residue ID. If there is only one chain and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 it has no ID AND there is no residue with an insertion code at this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 number, then this can uniquely specify a residue.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 ('#:C') or ( #, 'C' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 | |
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 | -Chain ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 ---Numeric portion of residue ID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 If a residue is incompletely specified then the first residue that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 fits the arguments is returned. For example, if 19 is the argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 and there are three chains, A, B, and C with a residue whose number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 is 19, then 19:A will be returned (assuming its listed first).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Since neither DSSP nor STRIDE correctly handle alt-loc codes, they
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 are not supported by these modules.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 3. Value-added methods. Return values are not verbatem strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 parsed from DSSP or STRIDE output.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 =head2 MailingLists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 UsUser feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 =head1 AUTHOR - Ed Green
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Email ed@compbio.berkeley.edu
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 The Rest of the documentation details each method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Internal methods are preceded with a _.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 package Bio::Structure::SecStr::STRIDE::Res;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 use Bio::Root::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 use Bio::PrimarySeq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 @ISA = qw(Bio::Root::Root);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 our %ASGTable = ( 'aa' => 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 'resNum' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 'ssAbbr' => 2,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 'ssName' => 3,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 'phi' => 4,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 'psi' => 5,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 'surfArea' => 6 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 our %AATable = ( 'ALA' => 'A', 'ARG' => 'R', 'ASN' => 'N',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 'ASP' => 'D', 'CYS' => 'C', 'GLN' => 'Q',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 'GLU' => 'E', 'GLY' => 'G', 'HIS' => 'H',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 'ILE' => 'I', 'LEU' => 'L', 'LYS' => 'K',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 'MET' => 'M', 'PHE' => 'F', 'PRO' => 'P',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 'SER' => 'S', 'THR' => 'T', 'TRP' => 'W',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 'TYR' => 'Y', 'VAL' => 'V' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 Usage : makes new object of this class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Function : Constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 Example : $stride_obj = Bio::Structure::SecStr::STRIDE:Res->new( '-file' => filename
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 # or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 '-fh' => FILEHANDLE )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Returns : object (ref)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Args : filename or filehandle( must be proper STRIDE output )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my ( $class, @args ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 my $self = $class->SUPER::new( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 my $io = Bio::Root::IO->new( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 $self->_parse( $io ); # not passing filehandle !
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $io->close();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 # GLOBAL FEATURES / INFO / STATS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 =head2 totSurfArea
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Title : totSurfArea
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Usage : returns sum of surface areas of all residues of all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 chains considered. Result is memoized.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Example : $tot_SA = $stride_obj->totSurfArea();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Returns : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 sub totSurfArea {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 my $total = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my ( $chain, $res );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 if ( $self->{ 'SurfArea' } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 return $self->{ 'SurfArea' };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 foreach $chain ( keys %{$self->{ 'ASG' }} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 for ( my $i = 1; $i <= $#{$self->{'ASG'}->{$chain}}; $i++ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $total +=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $self->{'ASG'}->{$chain}->[$i]->[$ASGTable{'surfArea'}];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $self->{ 'SurfArea' } = $total;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 return $self->{ 'SurfArea' };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 =head2 numResidues
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Title : numResidues
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Usage : returns total number of residues in all chains or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 just the specified chain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Example : $tot_res = $stride_obj->numResidues();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 Returns : scalar int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 Args : none or chain id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 sub numResidues {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 my $chain = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 my $total = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $key;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 foreach $key ( keys %{$self->{ 'ASG' }} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 if ( $chain ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 if ( $key eq $chain ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $total += $#{$self->{ 'ASG' }{ $key }};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $total += $#{$self->{ 'ASG' }{ $key }};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 return $total;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 # STRAIGHT FROM THE PDB ENTRY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 =head2 pdbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Title : pdbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Usage : returns pdb identifier ( 1FJM, e.g. )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Example : $pdb_id = $stride_obj->pdbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Returns : scalar string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 sub pdbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 return $self->{ 'PDB' };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 =head2 pdbAuthor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Title : pdbAuthor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Usage : returns author of this PDB entry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Example : $auth = $stride_obj->pdbAuthor()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 Returns : scalar string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 sub pdbAuthor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 return join( ' ', @{ $self->{ 'HEAD' }->{ 'AUT' } } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =head2 pdbCompound
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Title : pdbCompound
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Usage : returns string of what was found on the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 CMP lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Example : $cmp = $stride_obj->pdbCompound();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 sub pdbCompound {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 return join( ' ', @{ $self->{ 'HEAD' }->{ 'CMP' } } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 =head2 pdbDate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 Title : pdbDate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Usage : returns date given in PDB file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 Example : $pdb_date = $stride_obj->pdbDate();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Returns : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 sub pdbDate {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 return $self->{ 'DATE' };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 =head2 pdbHeader
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 Title : pdbHeader
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 Usage : returns string of characters found on the PDB header line
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 Example : $head = $stride_obj->pdbHeader();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 Returns : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 sub pdbHeader {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 return $self->{ 'HEAD' }->{ 'HEADER' };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 =head2 pdbSource
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 Title : pdbSource
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 Usage : returns string of what was found on SRC lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 Example : $src = $stride_obj->pdbSource();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 Returns : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 sub pdbSource {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 return join( ' ', @{ $self->{ 'HEAD' }->{ 'SRC' } } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 # RESIDUE SPECIFIC ACCESSORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 =head2 resAA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Title : resAA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Usage : returns 1 letter abbr. of the amino acid specified by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 the arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 Examples : $aa = $stride_obj->resAA( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Returns : scalar character
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 Args : RESIDUE_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 sub resAA {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 return ( $AATable{$self->{'ASG'}->{$chain}->[$ord]->[$ASGTable{'aa'}]} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 =head2 resPhi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Title : resPhi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 Usage : returns phi angle of specified residue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 Example : $phi = $stride_obj->resPhi( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 Returns : scaler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 Args : RESIDUE_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 sub resPhi {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 return $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'phi' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 =head2 resPsi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 Title : resPsi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 Usage : returns psi angle of specified residue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Example : $psi = $stride_obj->resPsi( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 Returns : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Args : RESIDUE_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 sub resPsi {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 return $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'psi' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 =head2 resSolvAcc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 Title : resSolvAcc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 Usage : returns stride calculated surface area of specified residue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 Example : $sa = $stride_obj->resSolvAcc( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Returns : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 Args : RESIDUE_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 sub resSolvAcc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 return $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'surfArea' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 =head2 resSurfArea
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Title : resSurfArea
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 Usage : returns stride calculated surface area of specified residue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 Example : $sa = $stride_obj->resSurfArea( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Returns : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 Args : RESIDUE_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 sub resSurfArea {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 return $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'surfArea' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 =head2 resSecStr
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 Title : resSecStr
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 Usage : gives one letter abbr. of stride determined secondary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 structure of specified residue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 Example : $ss = $stride_obj->resSecStr( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 Returns : one of: 'H' => Alpha Helix
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 'G' => 3-10 helix
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 'I' => PI-helix
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 'E' => Extended conformation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 'B' or 'b' => Isolated bridge
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 'T' => Turn
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 'C' => Coil
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 ' ' => None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 # NOTE: This range is slightly DIFFERENT from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 # DSSP method of the same name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Args : RESIDUE_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 sub resSecStr {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 return $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'ssAbbr' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 =head2 resSecStrSum
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 Title : resSecStrSum
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 Usage : gives one letter summary of secondary structure of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 specified residue. More general than secStruc()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 Example : $ss_sum = $stride_obj->resSecStrSum( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 Returns : one of: 'H' (helix), 'B' (beta), 'T' (turn), or 'C' (coil)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Args : residue identifier(s) ( SEE INTRO NOTE )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 sub resSecStrSum {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 my $ss_char = $self->resSecStr( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 if ( $ss_char eq 'H' || $ss_char eq 'G' || $ss_char eq 'I' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 return 'H';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 if ( $ss_char eq 'E' || $ss_char eq 'B' || $ss_char eq 'b' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 return 'B';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 if ( $ss_char eq 'T' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 return 'T';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 return 'C';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 # STRIDE SPECIFIC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 =head2 resSecStrName
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 Title : resSecStrName
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 Usage : gives full name of the secondary structural element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 classification of the specified residue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 Example : $ss_name = $stride_obj->resSecStrName( RESIDUE_ID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 Returns : scalar string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 Args : RESIDUE_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 sub resSecStrName {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my @args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 return $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'ssName' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 =head2 strideLocs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 Title : strideLocs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 Usage : returns stride determined contiguous secondary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 structural elements as specified on the LOC lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 Example : $loc_pnt = $stride_obj->strideLocs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 Returns : pointer to array of 5 element arrays.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 0 => stride name of structural element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 1 => first residue pdb key (including insertion code, if app.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 2 => first residue chain id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 3 => last residue pdb key (including insertion code, if app.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 4 => last residue chain id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 NOTE the differences between this range and the range of SecBounds()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 sub strideLocs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 return $self->{ 'LOC' };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 # VALUE ADDED METHODS (NOT JUST PARSE/REPORT)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 =head2 secBounds
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Title : secBounds
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 Usage : gets residue ids of boundary residues in each
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 contiguous secondary structural element of specified
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 chain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 Example : $ss_bound_pnt = $stride_obj->secBounds( 'A' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 Returns : pointer to array of 3 element arrays. First two elements
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 are the PDB IDs of the start and end points, respectively
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 and inclusively. The last element is the STRIDE secondary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 structural element code (same range as resSecStr).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 Args : chain identifier ( one character ). If none, '-' is assumed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 sub secBounds {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 # Requires a chain name. If left blank, we assume ' ' which equals '-'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 my $chain = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 my @SecBounds;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $chain = '-' if ( !( $chain ) || $chain eq ' ' || $chain eq '-' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 # if we've memoized this one, use that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 if ( $self->{ 'SecBounds' }->{ $chain } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 return $self->{ 'SecBounds' }->{ $chain };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 #check to make sure chain is valid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 if ( !( $self->{ 'ASG' }->{ $chain } ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 $self->throw( "No such chain: $chain\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 my $cur_element = $self->{ 'ASG' }->{ $chain }->[ 1 ]->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 [ $ASGTable{ 'ssAbbr' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 my $beg = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 my $i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 for ( $i = 2; $i <= $#{$self->{'ASG'}->{$chain}}; $i++ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 if ( $self->{ 'ASG' }->{ $chain }->[ $i ]->[ $ASGTable{ 'ssAbbr' } ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 ne $cur_element ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 push( @SecBounds, [ $beg, $i -1 , $cur_element ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 $beg = $i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 $cur_element = $self->{ 'ASG' }->{ $chain }->[ $i ]->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 [ $ASGTable{ 'ssAbbr' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 if ( $self->{ 'ASG' }->{ $chain }->[ $i ]->[ $ASGTable{ 'ssAbbr' } ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 eq $cur_element ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 push( @SecBounds, [ $beg, $i, $cur_element ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 push( @SecBounds, [ $beg, $i - 1, $cur_element ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 [ $i, $i, $self->{ 'ASG' }->{ $chain }->[ $i ]->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 [ $ASGTable{ 'ssAbbr' } ] ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 $self->{ 'SecBounds' }->{ $chain } = \@SecBounds;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 return $self->{ 'SecBounds' }->{ $chain };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 =head2 chains
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Title : chains
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 Usage : gives array chain I.D.s (characters)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 Example : @chains = $stride_obj->chains();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 Returns : array of characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 sub chains {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 my @chains = keys ( %{ $self->{ 'ASG' } } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 return \@chains;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 =head2 getSeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Title : getSeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 Usage : returns a Bio::PrimarySeq object which represents an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 approximation at the sequence of the specified chain.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 Function : For most chain of most entries, the sequence returned by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 this method will be very good. However, it it inherently
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 unsafe to rely on STRIDE to extract sequence information about
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 a PDB entry. More reliable information can be obtained from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 the PDB entry itself. If a second option is given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 (and evaluates to true), the sequence generated will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 have 'X' in spaces where the pdb residue numbers are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 discontinuous. In some cases this results in a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 better sequence object (when the discontinuity is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 due to regions which were present, but could not be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 resolved). In other cases, it will result in a WORSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 sequence object (when the discontinuity is due to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 historical sequence numbering and all sequence is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 actually resolved).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 Example : $pso = $dssp_obj->getSeq( 'A' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 Returns : (pointer to) a PrimarySeq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 Args : Chain identifier. If none given, '-' is assumed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 sub getSeq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 my $chain = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 my $fill_in = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 if ( !( $chain ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 $chain = '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 if ( $self->{ 'Seq' }->{ $chain } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 return $self->{ 'Seq' }->{ $chain };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 my ( $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 $num_res,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 $last_res_num,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 $cur_res_num,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 $i,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 $step,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 $id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 $seq = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 $num_res = $self->numResidues( $chain );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 $last_res_num = $self->_pdbNum( 1, $chain );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 for ( $i = 1; $i <= $num_res; $i++ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 if ( $fill_in ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 $cur_res_num = $self->_pdbNum( $i, $chain );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 $step = $cur_res_num - $last_res_num;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 if ( $step > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 $seq .= 'X' x ( $step - 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 $seq .= $self->_resAA( $i, $chain );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 $last_res_num = $cur_res_num;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 $id = $self->pdbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 $id .= "$chain";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 $self->{ 'Seq' }->{ $chain } = Bio::PrimarySeq->new( -seq => $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 -id => $id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 -moltype => 'protein'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 return $self->{ 'Seq' }->{ $chain };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 =head1 INTERNAL METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 =head2 _pdbNum
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 Title : _pdbNum
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 Usage : fetches the numeric portion of the identifier for a given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 residue as reported by the pdb entry. Note, this DOES NOT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 uniquely specify a residue. There may be an insertion code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 and/or chain identifier differences.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 Example : $pdbNum = $self->pdbNum( 3, 'A' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 Returns : a scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 Args : valid ordinal num / chain combination
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 sub _pdbNum {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 my $ord = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 my $chain = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 if ( !( $self->{ 'ASG' }->{ $chain }->[ $ord ] ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 $self->throw( "No such ordinal $ord in chain $chain.\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 my $pdb_junk = $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'resNum' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 my $num_part;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 ( $num_part ) = ( $pdb_junk =~ /(-*\d+).*/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 return $num_part;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 =head2 _resAA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 Title : _resAA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 Usage : returns 1 letter abbr. of the amino acid specified by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 the arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 Examples : $aa = $stride_obj->_resAA( 3, '-' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 Returns : scalar character
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 Args : ( ord. num, chain )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 sub _resAA {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 my $ord = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 my $chain = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 if ( !( $self->{ 'ASG' }->{ $chain }->[ $ord ] ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 $self->throw( "No such ordinal $ord in chain $chain.\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 return ( $AATable{$self->{'ASG'}->{$chain}->[$ord]->[$ASGTable{'aa'}]} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 =head2 _pdbInsCo
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 Title : _pdbInsCo
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 Usage : fetches the Insertion code for this residue.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 Example : $pdb_ins_co = $self->_pdb_ins_co( 15, 'B' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 Returns : a scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 Args : ordinal number and chain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 sub _pdbInsCo {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 my $ord = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 my $chain = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 if ( !( $self->{ 'ASG' }->{ $chain }->[ $ord ] ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 $self->throw( "No such ordinal $ord in chain $chain.\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 my $pdb_junk = $self->{ 'ASG' }->{ $chain }->[ $ord ]->[ $ASGTable{ 'resNum' } ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 my $letter_part;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 ( $letter_part ) = ( $pdb_junk =~ /\d+(\D+)/ ); # insertion code can be any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 # non-word character(s)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 return $letter_part;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 =head2 _toOrdChain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 Title : _toOrdChain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 Usage : takes any set of residue identifying parameters and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 wrestles them into a two element array: the chain and the ordinal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 number of this residue. This two element array can then be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 efficiently used as keys in many of the above accessor methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 ('#A:B') or ( #, 'A', 'B' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 || |
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 || - Chain ID (blank for single chain)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 |--- Insertion code for this residue. Blank for most residues.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 |--- Numeric portion of residue ID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 (#)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 |
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 --- Numeric portion of residue ID. If there is only one chain and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 it has no ID AND there is no residue with an insertion code at this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 number, then this can uniquely specify a residue.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 # ('#:C) or ( #, 'C' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 | |
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 | -Chain ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 ---Numeric portion of residue ID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 If a residue is incompletely specified then the first residue that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 fits the arguments is returned. For example, if 19 is the argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 and there are three chains, A, B, and C with a residue whose number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 is 19, then 19:A will be returned (assuming its listed first).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 Example : my ( $ord, $chain ) = $self->_toOrdChain( @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 Returns : two element array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 Args : valid set of residue identifier(s) ( SEE NOTE ABOVE )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 sub _toOrdChain {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 my $arg_str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 my ( $key_num, $chain_id, $ins_code, $key, $i );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 # check to see how many args are given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 if ( $#_ >= 1 ) { # multiple args
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 $key_num = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 if ( $#_ >= 1 ) { # still multiple args => ins. code, too
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 $ins_code = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 $chain_id = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 else { # just one more arg. => chain_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 $chain_id = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 else { # only single arg. Might be number or string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 $arg_str = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 if ( $arg_str =~ /:/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 # a chain is specified
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 ( $chain_id ) = ( $arg_str =~ /:(.)/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 $arg_str =~ s/:.//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 if ( $arg_str =~ /[A-Z]|[a-z]/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 # an insertion code is specified
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 ( $ins_code ) = ( $arg_str =~ /([A-Z]|[a-z])/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 $arg_str =~ s/[A-Z]|[a-z]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 #now, get the number bit-> everything still around
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 $key_num = $arg_str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 $key = "$key_num$ins_code";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 if ( !( $chain_id ) || $chain_id eq ' ' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 $chain_id = '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 if ( !( $self->{ 'ASG' }->{ $chain_id } ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 $self->throw( "No such chain: $chain_id" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 for ( $i = 1; $i <= $#{$self->{ 'ASG' }->{ $chain_id }}; $i++ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 if ( $self->{ 'ASG' }->{ $chain_id }->[ $i ]->[ $ASGTable{ 'resNum' } ] eq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 $key ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 return ( $i, $chain_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 $self->throw( "No such key: $key" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 =head2 _parse
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 Title : _parse
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 Usage : as name suggests, parses stride output, creating object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 Example : $self->_parse( $io );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 Args : valid Bio::Root::IO object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 sub _parse {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 my $io = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 my $file = $io->_fh();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 # Parse top lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 if ( $self->_parseTop( $io ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 $self->throw( "Not stride output" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 # Parse the HDR, CMP, SCR, and AUT lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 $self->_parseHead( $io );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 # Parse the CHN, SEQ, STR, and LOC lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 $self->_parseSummary( $io ); # we're ignoring this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 # Parse the ASG lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 $self->_parseASG( $io );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 =head2 _parseTop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 Title : _parseTop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 Usage : makes sure this looks like stride output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 sub _parseTop {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 my $io = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 my $file = $io->_fh();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 my $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 if ( $cur =~ /^REM ---/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 =head2 _parseHead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 Title : _parseHead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 Usage : parses
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 Function : HDR, CMP, SRC, and AUT lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 sub _parseHead {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 my $io = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 my $file = $io->_fh();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 my $cur;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 my $element;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 my ( @elements, @cmp, @src, @aut );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 my %head = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 my $still_head = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 while ( $cur =~ /^REM / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 if ( $cur =~ /^HDR / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 @elements = split( /\s+/, $cur );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 shift( @elements );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 pop( @elements );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 $self->{ 'PDB' } = pop( @elements );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 $self->{ 'DATE' } = pop( @elements );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 # now, everything else is "header" except for the word
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 # HDR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 $element = join( ' ', @elements );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 $head{ 'HEADER' } = $element;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 while ( $cur =~ /^CMP / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 ( $cur ) = ( $cur =~ /^CMP\s+(.+?)\s*\w{4}$/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 push( @cmp, $cur );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 while ( $cur =~ /^SRC / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 ( $cur ) = ( $cur =~ /^SRC\s+(.+?)\s*\w{4}$/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 push( @src, $cur );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 while ( $cur =~ /^AUT / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 ( $cur ) = ( $cur =~ /^AUT\s+(.+?)\s*\w{4}$/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 push( @aut, $cur );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 $head{ 'CMP' } = \@cmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 $head{ 'SRC' } = \@src;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 $head{ 'AUT' } = \@aut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 $self->{ 'HEAD' } = \%head;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 =head2 _parseSummary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 Title : _parseSummary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 Usage : parses LOC lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 sub _parseSummary {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 my $io = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 my $file = $io->_fh();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 my $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 my $bound_set;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 my $element;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 my ( @elements, @cur );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 my @LOC_lookup = ( [ 5, 12 ], # Element name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 # reduntdant [ 18, 3 ], # First residue name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 [ 22, 5 ], # First residue PDB number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 [ 28, 1 ], # First residue Chain ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 # redundant [ 35, 3 ], # Last residue name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 [ 40, 5 ], # Last residue PDB number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 [ 46, 1 ] ); # Last residue Chain ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 #ignore these lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 while ( $cur =~ /^REM |^STR |^SEQ |^CHN / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 while ( $cur =~ /^LOC / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 foreach $bound_set ( @LOC_lookup ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 $element = substr( $cur, $bound_set->[ 0 ], $bound_set->[ 1 ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 $element =~ s/\s//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 push( @cur, $element );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 push( @elements, [ @cur ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 @cur = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 $self->{ 'LOC' } = \@elements;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 =head2 _parseASG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 Title : _parseASG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 Usage : parses ASG lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 sub _parseASG {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 my $io = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 my $file = $io->_fh();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 my $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 my $bound_set;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 my $ord_num;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 my ( $chain, $last_chain );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 my $element;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 my %ASG;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 my ( @cur, @elements );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 my @ASG_lookup = ( [ 5, 3 ], # Residue name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 # [ 9, 1 ], # Chain ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 [ 10, 5 ], # PDB residue number (w/ins.code)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 # [ 16, 4 ], # ordinal stride number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068 [ 24, 1 ], # one letter sec. stru. abbr.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 [ 26, 13], # full sec. stru. name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 [ 42, 7 ], # phi angle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071 [ 52, 7 ], # psi angle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 [ 64, 5 ] );# residue solv. acc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 while ( $cur =~ /^REM / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 while ( $cur =~ /^ASG / ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 # get ordinal number for array key
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 $ord_num = substr( $cur, 16, 4 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 $ord_num =~ s/\s//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 # get the chain id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 $chain = substr( $cur, 9, 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 if ( $last_chain && ( $chain ne $last_chain ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087 $ASG{ $last_chain } = [ @elements ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 @elements = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 # now get the rest of the info on this line
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 foreach $bound_set ( @ASG_lookup ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 $element = substr( $cur, $bound_set->[ 0 ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 $bound_set->[ 1 ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 $element =~ s/\s//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 push( @cur, $element );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 $elements[ $ord_num ] = [ @cur ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 $cur = <$file>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 @cur = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 $last_chain = $chain;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 $ASG{ $chain } = [ @elements ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 $self->{ 'ASG' } = \%ASG;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112