comparison variant_effect_predictor/Bio/Symbol/Alphabet.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: Alphabet.pm,v 1.6 2002/10/22 07:45:21 lapp Exp $
2 #
3 # BioPerl module for Bio::Symbol::Alphabet
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::Alphabet - DESCRIPTION of Object
16
17 =head1 SYNOPSIS
18
19 {
20 my $alphabet = new Bio::Symbols::Alphabet(-symbols => [ @s ],
21 -subalphabets => [ @alphas ] );
22
23 my @symbols = $alphabet->symbols;
24 my @subalphas = $alphabet->alphabets;
25 if( $alphabet->contains($symbol) ) {
26 # do something
27 }
28 }
29
30 =head1 DESCRIPTION
31
32 Alphabet contains set of symbols, which can be concatenated to
33 form symbol lists. Sequence string, for example, is stringified
34 representation of the symbol list (tokens of symbols).
35
36 This module was implemented for the purposes of meeting the
37 BSANE/BioCORBA spec 0.3 only.
38
39 =head1 FEEDBACK
40
41 =head2 Mailing Lists
42
43 User feedback is an integral part of the evolution of this and other
44 Bioperl modules. Send your comments and suggestions preferably to
45 the Bioperl mailing list. Your participation is much appreciated.
46
47 bioperl-l@bioperl.org - General discussion
48 http://bioperl.org/MailList.shtml - About the mailing lists
49
50 =head2 Reporting Bugs
51
52 Report bugs to the Bioperl bug tracking system to help us keep track
53 of the bugs and their resolution. Bug reports can be submitted via
54 email or the web:
55
56 bioperl-bugs@bioperl.org
57 http://bugzilla.bioperl.org/
58
59 =head1 AUTHOR - Jason Stajich
60
61 Email jason@bioperl.org
62
63 Describe contact details here
64
65 =head1 CONTRIBUTORS
66
67 Additional contributors names and emails here
68
69 =head1 APPENDIX
70
71 The rest of the documentation details each of the object methods.
72 Internal methods are usually preceded with a _
73
74 =cut
75
76
77 # Let the code begin...
78
79
80 package Bio::Symbol::Alphabet;
81 use vars qw(@ISA);
82 use strict;
83
84 # Object preamble - inherits from Bio::Root::Root
85
86 use Bio::Root::Root;
87 use Bio::Symbol::AlphabetI;
88
89 @ISA = qw(Bio::Root::Root Bio::Symbol::AlphabetI );
90
91 =head2 new
92
93 Title : new
94 Usage : my $obj = new Bio::Symbol::Alphabet();
95 Function: Builds a new Bio::Symbol::Alphabet object
96 Returns : Bio::Symbol::Alphabet
97 Args : -symbols => Array ref of Bio::Symbol::SymbolI objects
98 -subalphas=> Array ref of Bio::Symbol::AlphabetI objects
99 representing sub alphabets
100 =cut
101
102 sub new {
103 my($class,@args) = @_;
104
105 my $self = $class->SUPER::new(@args);
106 $self->{'_symbols'} = [];
107 $self->{'_alphabets'} = [];
108 my ($symbols, $subalphas) = $self->_rearrange([qw(SYMBOLS SUBALPHAS)],
109 @args);
110
111 defined $symbols && ref($symbols) =~ /array/i && $self->symbols(@$symbols);
112 defined $subalphas && ref($subalphas) =~ /array/i && $self->alphabets(@$subalphas);
113 return $self;
114 }
115
116 =head2 AlphabetI Interface methods
117
118 =cut
119
120 =head2 symbols
121
122 Title : symbols
123 Usage : my @symbols = $alphabet->symbols();
124 Function: Get/Set Symbol list for an alphabet
125 List of symbols, which make up this alphabet.
126 Returns : Array of Bio::Symbol::SymbolI objects
127 Args : (optionalalphabets) Array of Bio::Symbol::SymbolI objects
128
129 =cut
130
131 sub symbols {
132 my ($self,@args) = @_;
133 if( @args ) {
134 $self->{'_symbols'} = [];
135 foreach my $symbol ( @args ) {
136 if( ! defined $symbol || ! ref($symbol) ||
137 ! $symbol->isa('Bio::Symbol::SymbolI') ) {
138 $self->warn("Did not provide a proper Bio::Symbol::SymbolI to method 'symbols' (got $symbol)");
139 } else {
140 push @{$self->{'_symbols'}}, $symbol;
141 }
142 }
143 }
144 return @{$self->{'_symbols'}};
145 }
146
147 =head2 alphabets
148
149 Title : alphabets
150 Usage : my @alphabets = $alphabet->alphabets();
151 Function: Get/Set Sub Alphabet list for an alphabet
152 Sub-alphabets. E.g. codons made from DNAxDNAxDNA alphabets
153 Returns : Array of Bio::Symbol::AlphabetI objects
154 Args : (optional) Array of Bio::Symbol::AlphabetI objects
155
156 =cut
157
158 sub alphabets {
159 my ($self,@args) = @_;
160 if( @args ) {
161 $self->{'_alphabets'} = [];
162 foreach my $alpha ( @args ) {
163 if( ! $alpha->isa('Bio::Symbol::AlphabetI') ) {
164 $self->warn("Did not provide a proper Bio::Symbol::AlphabetI to method 'alphabets' (got $alpha)");
165 } else {
166 push @{$self->{'_alphabets'}}, $alpha;
167 }
168 }
169 }
170 return @{$self->{'_alphabets'}};
171 }
172
173 =head2 contains
174
175 Title : contains
176 Usage : if($alphabet->contains($symbol)) { }
177 Function: Tests of Symbol is contained in this alphabet
178 Returns : Boolean
179 Args : Bio::Symbol::SymbolI
180
181 =cut
182
183 sub contains{
184 my ($self,$testsymbol) = @_;
185 foreach my $symbol ( $self->symbols ) {
186 return 1 if( $symbol->equals($testsymbol) );
187 }
188 return 0;
189 }
190
191 1;