annotate variant_effect_predictor/Bio/Tools/IUPAC.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: IUPAC.pm,v 1.19 2002/11/30 15:39:53 jason Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for IUPAC
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Aaron Mackey <amackey@virginia.edu>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Aaron Mackey
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Tools::IUPAC - Generates unique Seq objects from an ambiguous Seq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 use Bio::Seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::Tools::IUPAC;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 my $ambiseq = new Bio::Seq (-seq => 'ARTCGUTGR', -alphabet => 'dna');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 my $stream = new Bio::Tools::IUPAC(-seq => $ambiseq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 while ($uniqueseq = $stream->next_seq()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 # process the unique Seq object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 IUPAC is a tool that produces a stream of unique, "strict"-satisfying Seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 objects from an ambiquous Seq object (containing non-standard characters given
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 the meaning shown below)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 Extended Dna / Rna alphabet :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 (includes symbols for nucleotide ambiguity)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 ------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 Symbol Meaning Nucleic Acid
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 ------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 A A Adenine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 C C Cytosine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 G G Guanine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 T T Thymine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 U U Uracil
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 M A or C
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 R A or G
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 W A or T
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 S C or G
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 Y C or T
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 K G or T
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 V A or C or G
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 H A or C or T
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 D A or G or T
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 B C or G or T
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 X G or A or T or C
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 N G or A or T or C
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 IUPAC-IUB SYMBOLS FOR NUCLEOTIDE NOMENCLATURE:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 Cornish-Bowden (1985) Nucl. Acids Res. 13: 3021-3030.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 -----------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 Amino Acid alphabet:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 ------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 Symbol Meaning
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 ------------------------------------------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 A Alanine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 B Aspartic Acid, Asparagine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 C Cystine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 D Aspartic Acid
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 E Glutamic Acid
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 F Phenylalanine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 G Glycine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 H Histidine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 I Isoleucine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 K Lysine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 L Leucine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 M Methionine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 N Asparagine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 P Proline
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 Q Glutamine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 R Arginine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 S Serine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 T Threonine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 V Valine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 W Tryptophan
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 X Unknown
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 Y Tyrosine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 Z Glutamic Acid, Glutamine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 * Terminator
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 IUPAC-IUP AMINO ACID SYMBOLS:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 Biochem J. 1984 Apr 15; 219(2): 345-373
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 Eur J Biochem. 1993 Apr 1; 213(1): 2
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 Bioperl modules. Send your comments and suggestions preferably to one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 of the Bioperl mailing lists. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 http://www.bioperl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 the bugs and their resolution. Bug reports can be submitted via email
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 bioperl-bugs@bioperl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 http://www.bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 =head1 AUTHOR - Aaron Mackey
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 Email amackey@virginia.edu
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 package Bio::Tools::IUPAC;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 use vars qw(@ISA %IUP %IUB $AUTOLOAD);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 BEGIN {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 %IUB = ( A => [qw(A)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 C => [qw(C)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 G => [qw(G)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 T => [qw(T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 U => [qw(U)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 M => [qw(A C)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 R => [qw(A G)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 W => [qw(A T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 S => [qw(C G)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 Y => [qw(C T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 K => [qw(G T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 V => [qw(A C G)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 H => [qw(A C T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 D => [qw(A G T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 B => [qw(C G T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 X => [qw(G A T C)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 N => [qw(G A T C)]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 %IUP = (A => [qw(A)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 B => [qw(D N)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 C => [qw(C)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 D => [qw(D)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 E => [qw(E)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 F => [qw(F)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 G => [qw(G)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 H => [qw(H)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 I => [qw(I)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 K => [qw(K)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 L => [qw(L)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 M => [qw(M)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 N => [qw(N)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 P => [qw(P)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 Q => [qw(Q)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 R => [qw(R)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 S => [qw(S)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 T => [qw(T)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 U => [qw(U)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 V => [qw(V)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 W => [qw(W)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 X => [qw(X)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 Y => [qw(Y)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 Z => [qw(E Q)],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 '*' => ['*']
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 @ISA = qw(Bio::Root::Root);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 Usage : new Bio::Tools::IUPAC $seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 Function: returns a new seq stream (akin to SeqIO)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 Returns : a Bio::Tools::IUPAC stream object that will produce unique
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 Seq objects on demand.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 Args : an ambiguously coded Seq.pm object that has a specified 'type'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 my($class,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 my ($seq) = $self->_rearrange([qw(SEQ)],@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 if((! defined($seq)) && @args && ref($args[0])) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 # parameter not passed as named parameter?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 $seq = $args[0];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 $seq->isa('Bio::Seq') or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 $self->throw("Must supply a Seq.pm object to IUPAC!");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 $self->{'_SeqObj'} = $seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 if ($self->{'_SeqObj'}->alphabet() =~ m/^[dr]na$/i ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 # nucleotide seq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 $self->{'_alpha'} = [ map { $IUB{uc($_)} }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 split('', $self->{'_SeqObj'}->seq()) ];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 } elsif ($self->{'_SeqObj'}->alphabet() =~ m/^protein$/i ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 # amino acid seq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 $self->{'_alpha'} = [ map { $IUP{uc($_)} }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 split('', $self->{'_SeqObj'}->seq()) ];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 } else { # unknown type: we could make a guess, but let's not.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 $self->throw("You must specify the 'type' of sequence provided to IUPAC");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 $self->{'_string'} = [(0) x length($self->{'_SeqObj'}->seq())];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 scalar @{$self->{'_string'}} or $self->throw("Sequence has zero-length!");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 $self->{'_string'}->[0] = -1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 =head2 next_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 Title : next_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 Usage : $iupac->next_seq()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 Function: returns the next unique Seq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 Returns : a Seq.pm object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 Args : none.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 sub next_seq{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 for my $i ( 0 .. $#{$self->{'_string'}} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 next unless $self->{'_string'}->[$i] || @{$self->{'_alpha'}->[$i]} > 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 if ( $self->{'_string'}->[$i] == $#{$self->{'_alpha'}->[$i]} ) { # rollover
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 if ( $i == $#{$self->{'_string'}} ) { # end of possibilities
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 $self->{'_string'}->[$i] = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 next;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 $self->{'_string'}->[$i]++;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 my $j = -1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255 $self->{'_SeqObj'}->seq(join('', map { $j++; $self->{'_alpha'}->[$j]->[$_]; } @{$self->{'_string'}}));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 my $desc = $self->{'_SeqObj'}->desc();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 if ( !defined $desc ) { $desc = ""; }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259 $self->{'_num'}++;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 1 while $self->{'_num'} =~ s/(\d)(\d\d\d)(?!\d)/$1,$2/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 $desc =~ s/( \[Bio::Tools::IUPAC-generated\sunique sequence # [^\]]*\])|$/ \[Bio::Tools::IUPAC-generated unique sequence # $self->{'_num'}\]/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 $self->{'_SeqObj'}->desc($desc);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 $self->{'_num'} =~ s/,//g;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 return $self->{'_SeqObj'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 =head2 iupac_iup
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 Title : iupac_iup
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 Usage : my %aasymbols = $iupac->iupac_iup
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 Function: Returns a hash of PROTEIN symbols -> symbol components
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 Returns : Hash
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 sub iupac_iup{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 return %IUP;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 =head2 iupac_iub
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 Title : iupac_iub
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 Usage : my %dnasymbols = $iupac->iupac_iub
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 Function: Returns a hash of DNA symbols -> symbol components
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 Returns : Hash
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 sub iupac_iub{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 return %IUB;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 sub AUTOLOAD {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 my $self = shift @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 my $method = $AUTOLOAD;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 $method =~ s/.*:://;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 return $self->{'_SeqObj'}->$method(@_)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 unless $method eq 'DESTROY';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308