annotate variant_effect_predictor/Bio/Tools/SeqPattern.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
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: SeqPattern.pm,v 1.14 2002/10/22 07:38:46 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # bioperl module for Bio::Tools::SeqPattern
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Steve Chervitz (sac@bioperl.org)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Steve Chervitz
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
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Tools::SeqPattern - Bioperl object for a sequence pattern or motif
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =head2 Object Creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 use Bio::Tools::SeqPattern ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 $pat1 = 'T[GA]AA...TAAT';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 $pattern1 = new Bio::Tools::SeqPattern(-SEQ =>$pattern, -TYPE =>'Dna');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 $pat2 = '[VILM]R(GXX){3,2}...[^PG]';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $pattern2 = new Bio::Tools::SeqPattern(-SEQ =>$pattern, -TYPE =>'Amino');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 The Bio::Tools::SeqPattern.pm module encapsulates generic data and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 methods for manipulating regular expressions describing nucleic or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 amino acid sequence patterns (a.k.a, "motifs").
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 Bio::Tools::SeqPattern.pm is a concrete class that inherits from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 B<Bio::Seq.pm>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 This class grew out of a need to have a standard module for doing routine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 tasks with sequence patterns such as:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 -- Forming a reverse-complement version of a nucleotide sequence pattern
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 -- Expanding patterns containing ambiguity codes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 -- Checking for invalid regexp characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 -- Untainting yet preserving special characters in the pattern
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 Other features to look for in the future:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 -- Full pattern syntax checking
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 -- Conversion between expanded and ondensed forms of the pattern
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 =head1 MOTIVATIONS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 A key motivation for Bio::Tools::SeqPattern.pm is to have a way to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 generate a reverse complement of a nucleotide sequence pattern.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 This makes possible simultaneous pattern matching on both sense and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 anti-sense strands of a query sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 In principle, one could do such a search more inefficiently by testing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 against both sense and anti-sense versions of a sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 It is entirely equivalent to test a regexp containing both sense and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 anti-sense versions of the *pattern* against one copy of the sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 The latter approach is much more efficient since:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 1) You need only one copy of the sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 2) Only one regexp is executed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 3) Regexp patterns are typically much smaller than sequences.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 Patterns can be quite complex and it is often difficult to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 generate the reverse complement pattern. The Bioperl SeqPattern.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 addresses this problem, providing a convenient set of tools
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 for working with biological sequence regular expressions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 Not all patterns have been tested. If you discover a pattern that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 is not handled properly by Bio::Tools::SeqPattern.pm, please
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 send me some email (sac@bioperl.org). Thanks.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =head1 OTHER FEATURES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 =head2 Extended Alphabet Support
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 This module supports the same set of ambiguity codes for nucleotide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 sequences as supported by B<Bio::Seq.pm>. These ambiguity codes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 define the behavior or the expand() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 ------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Symbol Meaning Nucleic Acid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 ------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 A A Adenine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 C C Cytosine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 G G Guanine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 T T Thymine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 U U Uracil
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 M A or C
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 R A or G Any purine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 W A or T
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 S C or G
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Y C or T Any pyrimidine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 K G or T
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 V A or C or G
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 H A or C or T
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 D A or G or T
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 B C or G or T
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 X G or A or T or C
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 N G or A or T or C
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 . G or A or T or C
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 ------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 Symbol Meaning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 ------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 A Alanine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 C Cysteine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 D Aspartic Acid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 E Glutamic Acid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 F Phenylalanine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 G Glycine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 H Histidine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 I Isoleucine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 K Lysine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 L Leucine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 M Methionine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 N Asparagine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 P Proline
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Q Glutamine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 R Arginine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 S Serine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 T Threonine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 V Valine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 W Tryptophan
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Y Tyrosine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 B Aspartic Acid, Asparagine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Z Glutamic Acid, Glutamine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 X Any amino acid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 . Any amino acid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 =head2 Multiple Format Support
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Ultimately, this module should be able to build SeqPattern.pm objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 using a variety of pattern formats such as ProSite, Blocks, Prints, GCG, etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Currently, this module only supports patterns using a grep-like syntax.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 =head1 USAGE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 A simple demo script called seq_pattern.pl is included in the examples/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 directory of the central Bioperl distribution.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 L<Bio::Root::Object> - Base class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 L<Bio::Seq> - Lightweight sequence object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 http://bio.perl.org/Projects/modules.html - Online module documentation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 http://bio.perl.org/ - Bioperl Project Homepage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Steve Chervitz, sac@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 =head1 VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Bio::Tools::SeqPattern.pm, 0.011
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Copyright (c) 1997-8 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 This module is free software; you can redistribute it and/or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 modify it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 ###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 #### END of main POD documentation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 ###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 #'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 # CREATED : 28 Aug 1997
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 package Bio::Tools::SeqPattern;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 @ISA = qw(Bio::Root::Root);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 use vars qw ($ID $VERSION);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 $ID = 'Bio::Tools::SeqPattern';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $VERSION = 0.011;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 ## These constants may be more appropriate in a Bio::Dictionary.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 ## type of class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my $PURINES = 'AG';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 my $PYRIMIDINES = 'CT';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 my $BEE = 'DN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my $ZED = 'EQ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 my $Regexp_chars = '\w,.\*()\[\]<>\{\}^\$'; # quoted for use in regexps
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 ## Package variables used in reverse complementing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my (%Processed_braces, %Processed_asterics);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 ## CONSTRUCTOR ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 #####################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 =head1 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 Usage : my $seqpat = new Bio::Tools::SeqPattern();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 Purpose : Verifies that the type is correct for superclass (Bio::Seq.pm)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 : and calls superclass constructor last.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 Returns : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 Argument : Parameters passed to new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 Throws : Exception if the pattern string (seq) is empty.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Comments : The process of creating a new SeqPattern.pm object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 : ensures that the pattern string is untained.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 See Also : B<Bio::Root::Root::new()>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 B<Bio::Seq::_initialize()>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my($class, %param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 my $self = $class->SUPER::new(%param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my ($seq,$type) = $self->_rearrange([qw(SEQ TYPE)], %param);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 $seq || $self->throw("Empty pattern.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my $t;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 # Get the type ready for Bio::Seq.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 if ($type =~ /nuc|[dr]na/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $t = 'Dna';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 } elsif ($type =~ /amino|pep|prot/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $t = 'Amino';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $seq =~ tr/a-z/A-Z/; #ps 8/8/00 Canonicalize to upper case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $self->str($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $self->type($t);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 =head1 alphabet_ok
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Title : alphabet_ok
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Usage : $mypat->alphabet_ok;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Purpose : Checks for invalid regexp characters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 : Overrides Bio::Seq::alphabet_ok() to allow
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 : additional regexp characters ,.*()[]<>{}^$
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 : in addition to the standard genetic alphabet.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 : Also untaints the pattern and sets the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 : object's sequence to the untained string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Returns : Boolean (1 | 0)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Throws : Exception if the pattern contains invalid characters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Comments : Does not call the superclass method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 : Actually permits any alphanumeric, not just the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 : standard genetic alphabet.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 #----------------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 sub alphabet_ok {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 my( $self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 return 1 if $self->{'_alphabet_checked'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $self->{'_alphabet_checked'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 my $pat = $self->seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 if($pat =~ /[^$Regexp_chars]/io) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 $self->throw("Pattern contains invalid characters: $pat",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 'Legal characters: a-z,A-Z,0-9,,.*()[]<>{}^$ ');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 # Untaint pattern (makes code taint-safe).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 $pat =~ /[$Regexp_chars]+/io;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $self->setseq(uc($&));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 # print STDERR "\npattern ok: $pat\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 =head1 expand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 Title : expand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 Usage : $seqpat_object->expand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 Purpose : Expands the sequence pattern using special ambiguity codes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Example : $pat = $seq_pat->expand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Returns : String containing fully expanded sequence pattern
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Throws : Exception if sequence type is not recognized
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 : (i.e., is not one of [DR]NA, Amino)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 See Also : B<Extended Alphabet Support>, L<_expand_pep>(), L<_expand_nuc>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 sub expand {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 #----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 if($self->type =~ /[DR]na/i) { $self->_expand_nuc(); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 elsif($self->type =~ /Amino/i) { $self->_expand_pep(); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 $self->throw("Don't know how to expand ${\$self->type} patterns.\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 =head1 _expand_pep
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Title : _expand_pep
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Usage : n/a; automatically called by expand()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Purpose : Expands peptide patterns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Returns : String (the expanded pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Argument : String (the unexpanded pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 See Also : L<expand>(), L<_expand_nuc>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 sub _expand_pep {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 #----------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 my ($self,$pat) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 $pat ||= $self->str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 $pat =~ s/X/./g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 $pat =~ s/^</\^/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 $pat =~ s/>$/\$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 ## Avoid nested situations: [bmnq] --/--> [[$ZED]mnq]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 ## Yet correctly deal with: fze[bmnq] ---> f[$BEE]e[$ZEDmnq]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 if($pat =~ /\[\w*[BZ]\w*\]/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 $pat =~ s/\[(\w*)B(\w*)\]/\[$1$ZED$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 $pat =~ s/\[(\w*)Z(\w*)\]/\[$1$BEE$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 $pat =~ s/B/\[$ZED\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 $pat =~ s/Z/\[$BEE\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 $pat =~ s/B/\[$ZED\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 $pat =~ s/Z/\[$BEE\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 $pat =~ s/\((.)\)/$1/g; ## Doing these last since:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 $pat =~ s/\[(.)\]/$1/g; ## Pattern could contain [B] (for example)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 return $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 =head1 _expand_nuc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 Title : _expand_nuc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 Purpose : Expands nucleotide patterns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 Returns : String (the expanded pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 Argument : String (the unexpanded pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 See Also : L<expand>(), L<_expand_pep>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 sub _expand_nuc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 my ($self,$pat) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $pat ||= $self->str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 $pat =~ s/N|X/./g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 $pat =~ s/pu/R/ig;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $pat =~ s/py/Y/ig;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $pat =~ s/U/T/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $pat =~ s/^</\^/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $pat =~ s/>$/\$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 ## Avoid nested situations: [ya] --/--> [[ct]a]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 ## Yet correctly deal with: sg[ya] ---> [gc]g[cta]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 if($pat =~ /\[\w*[RYSWMK]\w*\]/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 $pat =~ s/\[(\w*)R(\w*)\]/\[$1$PURINES$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 $pat =~ s/\[(\w*)Y(\w*)\]/\[$1$PYRIMIDINES$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 $pat =~ s/\[(\w*)S(\w*)\]/\[$1GC$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 $pat =~ s/\[(\w*)W(\w*)\]/\[$1AT$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 $pat =~ s/\[(\w*)M(\w*)\]/\[$1AC$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $pat =~ s/\[(\w*)K(\w*)\]/\[$1GT$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $pat =~ s/\[(\w*)V(\w*)\]/\[$1ACG$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 $pat =~ s/\[(\w*)H(\w*)\]/\[$1ACT$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 $pat =~ s/\[(\w*)D(\w*)\]/\[$1AGT$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $pat =~ s/\[(\w*)B(\w*)\]/\[$1CGT$2\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $pat =~ s/R/\[$PURINES\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $pat =~ s/Y/\[$PYRIMIDINES\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 $pat =~ s/S/\[GC\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 $pat =~ s/W/\[AT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 $pat =~ s/M/\[AC\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 $pat =~ s/K/\[GT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 $pat =~ s/V/\[ACG\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $pat =~ s/H/\[ACT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 $pat =~ s/D/\[AGT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 $pat =~ s/B/\[CGT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 $pat =~ s/R/\[$PURINES\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 $pat =~ s/Y/\[$PYRIMIDINES\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 $pat =~ s/S/\[GC\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $pat =~ s/W/\[AT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 $pat =~ s/M/\[AC\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $pat =~ s/K/\[GT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 $pat =~ s/V/\[ACG\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 $pat =~ s/H/\[ACT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 $pat =~ s/D/\[AGT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 $pat =~ s/B/\[CGT\]/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $pat =~ s/\((.)\)/$1/g; ## Doing thses last since:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 $pat =~ s/\[(.)\]/$1/g; ## Pattern could contain [y] (for example)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 return $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 =head1 revcom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 Title : revcom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 Usage : revcom([1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 Purpose : Forms a pattern capable of recognizing the reverse complement
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 : version of a nucleotide sequence pattern.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 Example : $pattern_object->revcom();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 : $pattern_object->revcom(1); ## returns expanded rev complement pattern.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Returns : Object reference for a new Bio::Tools::SeqPattern containing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 : the revcom of the current pattern as its sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 Argument : (1) boolean (optional) (default= false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 : true : expand the pattern before rev-complementing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 : false: don't expand pattern before or after rev-complementing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 Throws : Exception if called for amino acid sequence pattern.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 Comments : This method permits the simultaneous searching of both
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 : sense and anti-sense versions of a nucleotide pattern
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 : by means of a grep-type of functionality in which any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 : number of patterns may be or-ed into the recognition
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 : pattern.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 : Overrides Bio::Seq::revcom() and calls it first thing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 : The order of _fixpat() calls is critical.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 See Also : B<Bio::Seq::revcom()>, L<_fixpat_1>(), L<_fixpat_2>(), L<_fixpat_3>(), L<_fixpat_4>(), L<_fixpat_5>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 #-----------'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 sub revcom {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 #-----------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 my($self,$expand) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 if ($self->type !~ /Dna|Rna/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 $self->throw("Can't get revcom for ${\$self->type} sequence types.\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 # return $self->{'_rev'} if defined $self->{'_rev'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 $expand ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 my $str = $self->str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 $str =~ tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 my $rev = CORE::reverse $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 $rev =~ tr/[](){}<>/][)(}{></;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 if($expand) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 $rev = $self->_expand_nuc($rev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 # print "\nExpanded: $rev\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 %Processed_braces = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 %Processed_asterics = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my $fixrev = _fixpat_1($rev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 # print "FIX 1: $fixrev";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 $fixrev = _fixpat_2($fixrev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 # print "FIX 2: $fixrev";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 $fixrev = _fixpat_3($fixrev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 # print "FIX 3: $fixrev";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 $fixrev = _fixpat_4($fixrev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 # print "FIX 4: $fixrev";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 $fixrev = _fixpat_5($fixrev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 # print "FIX 5: $fixrev";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 ##### Added by ps 8/7/00 to allow non-greedy matching
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 $fixrev = _fixpat_6($fixrev);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 # print "FIX 6: $fixrev";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 # $self->{'_rev'} = $fixrev;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 return new Bio::Tools::SeqPattern(-seq =>$fixrev, -type =>$self->type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 =head1 _fixpat_1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 Title : _fixpat_1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 Usage : n/a; called automatically by revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 Purpose : Utility method for revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 : Converts all {7,5} --> {5,7} (Part I)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 : and [T^] --> [^T] (Part II)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 : and *N --> N* (Part III)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 Returns : String (the new, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 Argument : String (the expanded pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 See Also : L<revcom>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 sub _fixpat_1 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 my $pat = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 ## Part I:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 my (@done,@parts);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 $pat =~ /(.*)\{(\S+?)\}(.*)/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 $pat = $1.'#{'.reverse($2).'}'.$3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 # print "1: $1\n2: $2\n3: $3\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 # print "modified pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 $pat = join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 ## Part II:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 @done = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 $pat =~ /(.*)\[(\S+?)\](.*)/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 $pat = $1.'#['.reverse($2).']'.$3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 # print "1: $1\n2: $2\n3: $3\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 # print "modified pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 $pat = join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 ## Part III:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 @done = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 $pat =~ /(.*)\*([\w.])(.*)/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 $pat = $1.'#'.$2.'*'.$3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 $Processed_asterics{$2}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 # print "1: $1\n2: $2\n3: $3\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 # print "modified pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 return join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 =head1 _fixpat_2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 Title : _fixpat_2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 Usage : n/a; called automatically by revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 Purpose : Utility method for revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 : Converts all {5,7}Y ---> Y{5,7}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 : and {10,}. ---> .{10,}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 Returns : String (the new, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 Argument : String (the expanded, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 See Also : L<revcom>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 sub _fixpat_2 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 my $pat = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 local($^W) = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 my (@done,@parts,$braces);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 # $pat =~ s/(.*)([^])])(\{\S+?\})([\w.])(.*)/$1$2#$4$3$5/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 $pat =~ s/(.*)(\{\S+?\})([\w.])(.*)/$1#$3$2$4/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 $braces = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 $braces =~ s/[{}]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 $Processed_braces{"$3$braces"}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 # print "modified pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 return join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 =head1 _fixpat_3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 Title : _fixpat_3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 Usage : n/a; called automatically by revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Purpose : Utility method for revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 : Converts all {5,7}(XXX) ---> (XXX){5,7}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Returns : String (the new, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 Argument : String (the expanded, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 See Also : L<revcom>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 sub _fixpat_3 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 my $pat = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 my (@done,@parts,$braces,$newpat,$oldpat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 # $pat =~ s/(.+)(\{\S+\})(\(\w+\))(.*)/$1#$3$2$4/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 if( $pat =~ /(.*)(.)(\{\S+\})(\(\w+\))(.*)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 $newpat = "$1#$2$4$3$5";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 ##ps $oldpat = "$1#$2$3$4$5";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 # print "1: $1\n2: $2\n3: $3\n4: $4\n5: $5\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 ##ps $braces = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 ##ps $braces =~ s/[{}]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 ##ps if( exists $Processed_braces{"$2$braces"} || exists $Processed_asterics{$2}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 ##ps $pat = $oldpat; # Don't change it. Already processed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 # print "saved pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 ##ps } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 # print "new pat: $newpat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 $pat = $newpat; # Change it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 ##ps }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 } elsif( $pat =~ /^(\{\S+\})(\(\w+\))(.*)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 $pat = "#$2$1$3";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 push @done, $pat; last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 return join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 =head1 _fixpat_4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 Title : _fixpat_4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 Usage : n/a; called automatically by revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Purpose : Utility method for revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 : Converts all {5,7}[XXX] ---> [XXX]{5,7}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Returns : String (the new, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 Argument : String (the expanded, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 See Also : L<revcom>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 sub _fixpat_4 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 #---------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 my $pat = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 my (@done,@parts,$braces,$newpat,$oldpat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 # $pat =~ s/(.*)(\{\S+\})(\[\w+\])(.*)/$1#$3$2$4/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 # $pat =~ s/(.*)([^\w.])(\{\S+\})(\[\w+\])(.*)/$1$2#$4$3$5/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 if( $pat =~ /(.*)(.)(\{\S+\})(\[\w+\])(.*)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 $newpat = "$1#$2$4$3$5";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 $oldpat = "$1#$2$3$4$5";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 # print "1: $1\n2: $2\n3: $3\n4: $4\n5: $5\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 $braces = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 $braces =~ s/[{}]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 if( (defined $braces and defined $2) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 exists $Processed_braces{"$2$braces"} || exists $Processed_asterics{$2}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 $pat = $oldpat; # Don't change it. Already processed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 # print "saved pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 $pat = $newpat; # Change it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 # print "new pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 } elsif( $pat =~ /^(\{\S+\})(\[\w+\])(.*)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 $pat = "#$2$1$3";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 push @done, $pat; last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 return join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 =head1 _fixpat_5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 Title : _fixpat_5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 Usage : n/a; called automatically by revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 Purpose : Utility method for revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 : Converts all *[XXX] ---> [XXX]*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 : and *(XXX) ---> (XXX)*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 Returns : String (the new, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 Argument : String (the expanded, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 See Also : L<revcom>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 sub _fixpat_5 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 my $pat = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 my (@done,@parts,$newpat,$oldpat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 # $pat =~ s/(.*)(\{\S+\})(\[\w+\])(.*)/$1#$3$2$4/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 # $pat =~ s/(.*)([^\w.])(\{\S+\})(\[\w+\])(.*)/$1$2#$4$3$5/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 if( $pat =~ /(.*)(.)\*(\[\w+\]|\(\w+\))(.*)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 $newpat = "$1#$2$3*$4";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 $oldpat = "$1#$2*$3$4";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 # print "1: $1\n2: $2\n3: $3\n4: $4\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 if( exists $Processed_asterics{$2}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 $pat = $oldpat; # Don't change it. Already processed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 # print "saved pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 $pat = $newpat; # Change it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 # print "new pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 } elsif( $pat =~ /^\*(\[\w+\]|\(\w+\))(.*)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 $pat = "#$1*$3";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 push @done, $pat; last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 return join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 ############################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 # PS: Added 8/7/00 to allow non-greedy matching patterns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 ######################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 =head1 _fixpat_6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 Title : _fixpat_6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 Usage : n/a; called automatically by revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 Purpose : Utility method for revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 : Converts all ?Y{5,7} ---> Y{5,7}?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 : and ?(XXX){5,7} ---> (XXX){5,7}?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 : and ?[XYZ]{5,7} ---> [XYZ]{5,7}?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 Returns : String (the new, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 Argument : String (the expanded, partially reversed pattern)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 See Also : L<revcom>()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 sub _fixpat_6 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 #--------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 my $pat = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 my (@done,@parts);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 @done = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 while(1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 $pat =~ /(.*)\?(\[\w+\]|\(\w+\)|\w)(\{\S+?\})?(.*)/ or do{ push @done, $pat; last; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 my $quantifier = $3 ? $3 : ""; # Shut up warning if no explicit quantifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 $pat = $1.'#'.$2.$quantifier.'?'.$4;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 # $pat = $1.'#'.$2.$3.'?'.$4;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 # print "1: $1\n2: $2\n3: $3\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 # print "modified pat: $pat";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 @parts = split '#', $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 push @done, $parts[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 $pat = $parts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 # print "done: $parts[1]<---\nnew pat: $pat<---";<STDIN>;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 last if not $pat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 return join('', reverse @done);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 =head2 str
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 Title : str
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 Usage : $obj->str($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 Returns : value of str
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 sub str{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 my $obj = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 if( @_ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 my $value = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 $obj->{'str'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 return $obj->{'str'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 =head2 type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 Title : type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 Usage : $obj->type($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 Returns : value of type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 sub type{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 my $obj = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 if( @_ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 my $value = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 $obj->{'type'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 return $obj->{'type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 #########################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 # End of class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 #########################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 =head1 FOR DEVELOPERS ONLY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 =head2 Data Members
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 Information about the various data members of this module is provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 for those wishing to modify or understand the code. Two things to bear
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 in mind:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 =over 2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 =item 1 Do NOT rely on these in any code outside of this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 All data members are prefixed with an underscore to signify that they
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 are private. Always use accessor methods. If the accessor doesn't
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 exist or is inadequate, create or modify an accessor (and let me know,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 too!).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 =item 2 This documentation may be incomplete and out of date.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 It is easy for this documentation to become obsolete as this module is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 still evolving. Always double check this info and search for members
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 not described here.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 An instance of Bio::Tools::RestrictionEnzyme.pm is a blessed reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 to a hash containing all or some of the following fields:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 FIELD VALUE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 ------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 _rev : The corrected reverse complement of the fully expanded pattern.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 INHERITED DATA MEMBERS:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 _seq : (From Bio::Seq.pm) The original, unexpanded input sequence after untainting.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 _type : (From Bio::Seq.pm) 'Dna' or 'Amino'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 =cut