Mercurial > repos > mahtabm > ensemb_rep_gvl
comparison variant_effect_predictor/Bio/Symbol/Symbol.pm @ 0:2bc9b66ada89 draft default tip
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 06:29:17 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:2bc9b66ada89 |
---|---|
1 # $Id: Symbol.pm,v 1.6 2002/10/22 07:45:21 lapp Exp $ | |
2 # | |
3 # BioPerl module for Bio::Symbol::Symbol | |
4 # | |
5 # Cared for by Jason Stajich <jason@bioperl.org> | |
6 # | |
7 # Copyright Jason Stajich | |
8 # | |
9 # You may distribute this module under the same terms as perl itself | |
10 | |
11 # POD documentation - main docs before the code | |
12 | |
13 =head1 NAME | |
14 | |
15 Bio::Symbol::Symbol - A biological symbol | |
16 | |
17 =head1 SYNOPSIS | |
18 | |
19 use Bio::Symbol::Symbol; | |
20 my $thymine = new Bio::Symbol::Symbol(-name => 'Thy', | |
21 -token=> 'T'); | |
22 my $a = new Bio::Symbol::Symbol(-token => 'A' ); | |
23 my $u = new Bio::Symbol::Symbol(-token => 'U' ); | |
24 my $g = new Bio::Symbol::Symbol(-token => 'G' ); | |
25 | |
26 my $M = new Bio::Symbol::Symbol(-name => 'Met', | |
27 -token => 'M', | |
28 -symbols => [ $a, $u, $g ]); | |
29 | |
30 my ($name,$token) = ($a->name, $a->token); | |
31 my @symbols = $a->symbols; | |
32 my $matches = $a->matches; | |
33 | |
34 =head1 DESCRIPTION | |
35 | |
36 Symbol represents a single token in the sequence. Symbol can have | |
37 multiple synonyms or matches within the same Alphabet, which | |
38 makes possible to represent ambiguity codes and gaps. | |
39 | |
40 Symbols can be also composed from ordered list other symbols. For | |
41 example, codons can be represented by single Symbol using a | |
42 compound Alphabet made from three DNA Alphabets. | |
43 | |
44 This module was implemented for the purposes of meeting the | |
45 BSANE/BioCORBA spec 0.3 only. | |
46 | |
47 =head1 FEEDBACK | |
48 | |
49 =head2 Mailing Lists | |
50 | |
51 User feedback is an integral part of the evolution of this and other | |
52 Bioperl modules. Send your comments and suggestions preferably to | |
53 the Bioperl mailing list. Your participation is much appreciated. | |
54 | |
55 bioperl-l@bioperl.org - General discussion | |
56 http://bioperl.org/MailList.shtml - About the mailing lists | |
57 | |
58 =head2 Reporting Bugs | |
59 | |
60 Report bugs to the Bioperl bug tracking system to help us keep track | |
61 of the bugs and their resolution. Bug reports can be submitted via | |
62 email or the web: | |
63 | |
64 bioperl-bugs@bioperl.org | |
65 http://bugzilla.bioperl.org/ | |
66 | |
67 =head1 AUTHOR - Jason Stajich | |
68 | |
69 Email jason@bioperl.org | |
70 | |
71 Describe contact details here | |
72 | |
73 =head1 CONTRIBUTORS | |
74 | |
75 Additional contributors names and emails here | |
76 | |
77 =head1 APPENDIX | |
78 | |
79 The rest of the documentation details each of the object methods. | |
80 Internal methods are usually preceded with a _ | |
81 | |
82 =cut | |
83 | |
84 | |
85 # Let the code begin... | |
86 | |
87 | |
88 package Bio::Symbol::Symbol; | |
89 use vars qw(@ISA); | |
90 use strict; | |
91 | |
92 # Object preamble - inherits from Bio::Root::Root | |
93 | |
94 use Bio::Symbol::SymbolI; | |
95 use Bio::Symbol::Alphabet; | |
96 use Bio::Root::Root; | |
97 | |
98 @ISA = qw( Bio::Root::Root Bio::Symbol::SymbolI ); | |
99 | |
100 =head2 new | |
101 | |
102 Title : new | |
103 Usage : my $obj = new Bio::Symbol::Symbol(); | |
104 Function: Builds a new Bio::Symbol::Symbol object | |
105 Returns : Bio::Symbol::Symbol | |
106 Args : -name => descriptive name (string) [e.g. Met] | |
107 -token => Shorthand token (string) [e.g. M] | |
108 -symbols => Symbols that make up this symbol (array) [e.g. AUG] | |
109 -matches => Alphabet in the event symbol is an ambiguity | |
110 code. | |
111 | |
112 =cut | |
113 | |
114 sub new { | |
115 my($class,@args) = @_; | |
116 my $self = $class->SUPER::new(@args); | |
117 $self->{'_symbols'} = []; | |
118 | |
119 my ($name, $token, $symbols, | |
120 $matches) = $self->_rearrange([qw(NAME TOKEN SYMBOLS | |
121 MATCHES)], | |
122 @args); | |
123 $token && $self->token($token); | |
124 $name && $self->name($name); | |
125 $symbols && ref($symbols) =~ /array/i && $self->symbols(@$symbols); | |
126 $matches && $self->matches($matches); | |
127 return $self; | |
128 } | |
129 | |
130 =head2 name | |
131 | |
132 Title : name | |
133 Usage : my $name = $symbol->name(); | |
134 Function: Get/Set Descriptive name for Symbol | |
135 Returns : string | |
136 Args : (optional) string | |
137 | |
138 =cut | |
139 | |
140 sub name { | |
141 my ($self,$value) = @_; | |
142 if( $value ) { | |
143 $self->{'_name'} = $value; | |
144 } | |
145 return $self->{'_name'} || ''; | |
146 } | |
147 | |
148 =head2 token | |
149 | |
150 Title : token | |
151 Usage : my $token = $self->token(); | |
152 Function: Get/Set token for this symbol | |
153 Example : Letter A,C,G,or T for a DNA alphabet Symbol | |
154 Returns : string | |
155 Args : (optional) string | |
156 | |
157 =cut | |
158 | |
159 sub token{ | |
160 my ($self,$value) = @_; | |
161 if( $value ) { | |
162 $self->{'_token'} = $value; | |
163 } | |
164 return $self->{'_token'} || ''; | |
165 } | |
166 | |
167 =head2 symbols | |
168 | |
169 Title : symbols | |
170 Usage : my @symbols = $self->symbols(); | |
171 Function: Get/Set Symbols this Symbol is composed from | |
172 Example : Ambiguity symbols are made up > 1 base symbol | |
173 Returns : Array of Bio::Symbol::SymbolI objects | |
174 Args : (optional) Array of Bio::Symbol::SymbolI objects | |
175 | |
176 | |
177 =cut | |
178 | |
179 sub symbols{ | |
180 my ($self,@args) = @_; | |
181 if( @args ) { | |
182 $self->{'_symbols'} = [@args]; | |
183 } | |
184 return @{$self->{'_symbols'}}; | |
185 } | |
186 | |
187 =head2 matches | |
188 | |
189 Title : matches | |
190 Usage : my $matchalphabet = $symbol->matches(); | |
191 Function: Get/Set (Sub) alphabet of symbols matched by this symbol | |
192 including the symbol itself (i.e. if symbol is DNA | |
193 ambiguity code W then the matches contains symbols for W | |
194 and T) | |
195 Returns : Bio::Symbol::AlphabetI | |
196 Args : (optional) Bio::Symbol::AlphabetI | |
197 | |
198 =cut | |
199 | |
200 sub matches{ | |
201 my ($self,$matches) = @_; | |
202 | |
203 if( $matches ) { | |
204 if( ! $matches->isa('Bio::Symbol::AlphabetI') ) { | |
205 $self->warn("Must pass in a Bio::Symbol::AlphabetI object to matches function"); | |
206 # stick with previous value | |
207 } else { | |
208 $self->{'_matches'} = $matches; | |
209 } | |
210 } | |
211 return $self->{'_matches'}; | |
212 } | |
213 | |
214 =head2 equals | |
215 | |
216 Title : equals | |
217 Usage : if( $symbol->equals($symbol2) ) { } | |
218 Function: Tests if a symbol is equal to another | |
219 Returns : Boolean | |
220 Args : Bio::Symbol::SymbolI | |
221 | |
222 =cut | |
223 | |
224 sub equals{ | |
225 my ($self,$symbol2) = @_; | |
226 # Let's just test based on Tokens for now | |
227 # Doesn't handle DNA vs PROTEIN accidential comparisons | |
228 return $self->token eq $symbol2->token; | |
229 } | |
230 | |
231 | |
232 1; |