Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/Variation/Allele.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1f6dce3d34e0 |
---|---|
1 # $Id: Allele.pm,v 1.9 2002/10/22 07:38:49 lapp Exp $ | |
2 # | |
3 # BioPerl module for Bio::Variation::Allele | |
4 # | |
5 # Cared for by Heikki Lehvaslaiho <heikki@ebi.ac.uk> | |
6 # | |
7 # Copyright Heikki Lehvaslaiho | |
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::Variation::Allele - Sequence object with allele-specific attributes | |
16 | |
17 =head1 SYNOPSIS | |
18 | |
19 $allele1 = Bio::Variation::Allele->new ( -seq => 'A', | |
20 -id => 'AC00001.1', | |
21 -alphabet => 'dna', | |
22 -is_reference => 1 | |
23 ); | |
24 | |
25 =head1 DESCRIPTION | |
26 | |
27 List of alleles describe known sequence alternatives in a variable region. | |
28 Alleles are contained in Bio::Variation::VariantI complying objects. | |
29 See L<Bio::Variation::VariantI> for details. | |
30 | |
31 Bio::Varation::Alleles are PrimarySeqI complying objects which can | |
32 contain database cross references as specified in | |
33 Bio::DBLinkContainerI interface, too. | |
34 | |
35 A lot of the complexity with dealing with Allele objects are caused by | |
36 null alleles; Allele objects that have zero length sequence string. | |
37 | |
38 In addition describing the allele by its sequence , it possible to | |
39 give describe repeat structure within the sequence. This done using | |
40 methods repeat_unit (e.g. 'ca') and repeat_count (e.g. 7). | |
41 | |
42 =head1 FEEDBACK | |
43 | |
44 =head2 Mailing Lists | |
45 | |
46 User feedback is an integral part of the evolution of this and other | |
47 Bioperl modules. Send your comments and suggestions preferably to the | |
48 Bioperl mailing lists Your participation is much appreciated. | |
49 | |
50 bioperl-l@bioperl.org - General discussion | |
51 http://bio.perl.org/MailList.html - About the mailing lists | |
52 | |
53 =head2 Reporting Bugs | |
54 | |
55 report bugs to the Bioperl bug tracking system to help us keep track | |
56 the bugs and their resolution. Bug reports can be submitted via | |
57 email or the web: | |
58 | |
59 bioperl-bugs@bio.perl.org | |
60 http://bugzilla.bioperl.org/ | |
61 | |
62 =head1 AUTHOR - Heikki Lehvaslaiho | |
63 | |
64 Email: heikki@ebi.ac.uk | |
65 Address: | |
66 | |
67 EMBL Outstation, European Bioinformatics Institute | |
68 Wellcome Trust Genome Campus, Hinxton | |
69 Cambs. CB10 1SD, United Kingdom | |
70 | |
71 | |
72 =head1 APPENDIX | |
73 | |
74 The rest of the documentation details each of the object | |
75 methods. Internal methods are usually preceded with a _ | |
76 | |
77 =cut | |
78 | |
79 | |
80 # Let the code begin... | |
81 | |
82 package Bio::Variation::Allele; | |
83 my $VERSION=1.0; | |
84 use vars qw(@ISA); | |
85 use strict; | |
86 | |
87 # Object preamble - inheritance | |
88 | |
89 use Bio::PrimarySeq; | |
90 use Bio::DBLinkContainerI; | |
91 | |
92 @ISA = qw( Bio::PrimarySeq Bio::DBLinkContainerI ); | |
93 | |
94 sub new { | |
95 my($class, @args) = @_; | |
96 my $self = $class->SUPER::new(@args); | |
97 | |
98 my($is_reference, $repeat_unit, $repeat_count) = | |
99 $self->_rearrange([qw(IS_REFERENCE | |
100 REPEAT_UNIT | |
101 REPEAT_COUNT | |
102 )], | |
103 @args); | |
104 | |
105 $is_reference && $self->is_reference($is_reference); | |
106 $repeat_unit && $self->repeat_unit($repeat_unit); | |
107 $repeat_count && $self->repeat_count($repeat_count); | |
108 | |
109 return $self; # success - we hope! | |
110 } | |
111 | |
112 | |
113 =head2 is_reference | |
114 | |
115 Title : is_reference | |
116 Usage : $obj->is_reference() | |
117 Function: sets and returns boolean values. | |
118 Unset values return false. | |
119 Example : $obj->is_reference() | |
120 Returns : boolean | |
121 Args : optional true of false value | |
122 | |
123 | |
124 =cut | |
125 | |
126 | |
127 sub is_reference { | |
128 my ($self,$value) = @_; | |
129 if( defined $value) { | |
130 $value ? ($value = 1) : ($value = 0); | |
131 $self->{'is_reference'} = $value; | |
132 } | |
133 if( ! exists $self->{'is_reference'} ) { | |
134 return 0; | |
135 } | |
136 else { | |
137 return $self->{'is_reference'}; | |
138 } | |
139 } | |
140 | |
141 | |
142 =head2 add_DBLink | |
143 | |
144 Title : add_DBLink | |
145 Usage : $self->add_DBLink($ref) | |
146 Function: adds a link object | |
147 Example : | |
148 Returns : | |
149 Args : | |
150 | |
151 | |
152 =cut | |
153 | |
154 | |
155 sub add_DBLink{ | |
156 my ($self,$com) = @_; | |
157 if( ! $com->isa('Bio::Annotation::DBLink') ) { | |
158 $self->throw("Is not a link object but a [$com]"); | |
159 } | |
160 push(@{$self->{'link'}},$com); | |
161 } | |
162 | |
163 =head2 each_DBLink | |
164 | |
165 Title : each_DBLink | |
166 Usage : foreach $ref ( $self->each_DBlink() ) | |
167 Function: gets an array of DBlink of objects | |
168 Example : | |
169 Returns : | |
170 Args : | |
171 | |
172 | |
173 =cut | |
174 | |
175 sub each_DBLink{ | |
176 my ($self) = @_; | |
177 return @{$self->{'link'}}; | |
178 } | |
179 | |
180 =head2 repeat_unit | |
181 | |
182 Title : repeat_unit | |
183 Usage : $obj->repeat_unit('ca'); | |
184 Function: | |
185 | |
186 Sets and returns the sequence of the repeat_unit the | |
187 allele is composed of. | |
188 | |
189 Example : | |
190 Returns : string | |
191 Args : string | |
192 | |
193 =cut | |
194 | |
195 sub repeat_unit { | |
196 my ($self,$value) = @_; | |
197 if( defined $value) { | |
198 $self->{'repeat_unit'} = $value; | |
199 } | |
200 if ($self->{'seq'} && $self->{'repeat_unit'} && $self->{'repeat_count'} ) { | |
201 $self->warn("Repeats do not add up!") | |
202 if ( $self->{'repeat_unit'} x $self->{'repeat_count'}) ne $self->{'seq'}; | |
203 } | |
204 return $self->{'repeat_unit'}; | |
205 } | |
206 | |
207 =head2 repeat_count | |
208 | |
209 Title : repeat_count | |
210 Usage : $obj->repeat_count(); | |
211 Function: | |
212 | |
213 Sets and returns the number of repeat units in the allele. | |
214 | |
215 Example : | |
216 Returns : string | |
217 Args : string | |
218 | |
219 =cut | |
220 | |
221 | |
222 sub repeat_count { | |
223 my ($self,$value) = @_; | |
224 if( defined $value) { | |
225 if ( not $value =~ /^\d+$/ ) { | |
226 $self->throw("[$value] for repeat_count has to be a positive integer\n"); | |
227 } else { | |
228 $self->{'repeat_count'} = $value; | |
229 } | |
230 } | |
231 if ($self->{'seq'} && $self->{'repeat_unit'} && $self->{'repeat_count'} ) { | |
232 $self->warn("Repeats do not add up!") | |
233 if ( $self->{'repeat_unit'} x $self->{'repeat_count'}) ne $self->{'seq'}; | |
234 } | |
235 return $self->{'repeat_count'}; | |
236 } | |
237 | |
238 =head2 count | |
239 | |
240 Title : count | |
241 Usage : $obj->count(); | |
242 Function: | |
243 | |
244 Sets and returns the number of times this allele was observed. | |
245 | |
246 Example : | |
247 Returns : string | |
248 Args : string | |
249 | |
250 =cut | |
251 | |
252 sub count { | |
253 my ($self,$value) = @_; | |
254 if( defined $value) { | |
255 if ( not $value =~ /^\d+$/ ) { | |
256 $self->throw("[$value] for count has to be a positive integer\n"); | |
257 } else { | |
258 $self->{'count'} = $value; | |
259 } | |
260 } | |
261 return $self->{'count'}; | |
262 } | |
263 | |
264 | |
265 =head2 frequency | |
266 | |
267 Title : frequency | |
268 Usage : $obj->frequency(); | |
269 Function: | |
270 | |
271 Sets and returns the frequency of the allele in the observed | |
272 population. | |
273 | |
274 Example : | |
275 Returns : string | |
276 Args : string | |
277 | |
278 =cut | |
279 | |
280 sub frequency { | |
281 my ($self,$value) = @_; | |
282 if( defined $value) { | |
283 if ( not $value =~ /^\d+$/ ) { | |
284 $self->throw("[$value] for frequency has to be a positive integer\n"); | |
285 } else { | |
286 $self->{'frequency'} = $value; | |
287 } | |
288 } | |
289 return $self->{'frequency'}; | |
290 } | |
291 | |
292 | |
293 1; |