Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/EnsEMBL/IdMapping/TinyExon.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 =head1 LICENSE | |
2 | |
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and | |
4 Genome Research Limited. All rights reserved. | |
5 | |
6 This software is distributed under a modified Apache license. | |
7 For license details, please see | |
8 | |
9 http://www.ensembl.org/info/about/code_licence.html | |
10 | |
11 =head1 CONTACT | |
12 | |
13 Please email comments or questions to the public Ensembl | |
14 developers list at <dev@ensembl.org>. | |
15 | |
16 Questions may also be sent to the Ensembl help desk at | |
17 <helpdesk@ensembl.org>. | |
18 | |
19 =cut | |
20 | |
21 =head1 NAME | |
22 | |
23 Bio::EnsEMBL::IdMapping::TinyExon - lightweight exon object | |
24 | |
25 =head1 SYNOPSIS | |
26 | |
27 # fetch an exon from the db and create a lightweight exon object | |
28 # from it | |
29 my $exon = $exon_adaptor->fetch_by_stable_id('ENSE000345437'); | |
30 my $lightweight_exon = Bio::EnsEMBL::IdMapping::TinyExon->new_fast( [ | |
31 $exon->dbID, | |
32 $exon->stable_id, | |
33 $exon->version, | |
34 $exon->created_date, | |
35 $exon->modified_date, | |
36 $exon->start, | |
37 $exon->end, | |
38 $exon->strand, | |
39 $exon->slice->seq_region_name, | |
40 $exon->slice->coord_system_name, | |
41 $exon->slice->coord_system->version, | |
42 $exon->slice->subseq( $exon->start, $exon->end, $exon->strand ), | |
43 $exon->phase, | |
44 $need_project, | |
45 ] ); | |
46 | |
47 =head1 DESCRIPTION | |
48 | |
49 This is a lightweight exon object for the stable Id mapping. See the | |
50 documentation in TinyFeature for general considerations about its | |
51 design. | |
52 | |
53 =head1 METHODS | |
54 | |
55 start | |
56 end | |
57 strand | |
58 seq_region_name | |
59 coord_system_name | |
60 coord_system_version | |
61 seq | |
62 phase | |
63 need_project | |
64 common_start | |
65 common_end | |
66 common_strand | |
67 common_sr_name | |
68 length | |
69 is_known | |
70 | |
71 =cut | |
72 | |
73 | |
74 package Bio::EnsEMBL::IdMapping::TinyExon; | |
75 | |
76 # internal data structure (array indices): | |
77 # | |
78 # 0-4 see TinyFeature | |
79 # 5 start | |
80 # 6 end | |
81 # 7 strand | |
82 # 8 seq_region_name | |
83 # 9 coord_system_name | |
84 # 10 coord_system_version | |
85 # 11 seq | |
86 # 12 phase | |
87 # 13 need_project | |
88 # 14 common_start | |
89 # 15 common_end | |
90 # 16 common_strand | |
91 # 17 common_sr_name | |
92 | |
93 | |
94 use strict; | |
95 use warnings; | |
96 no warnings 'uninitialized'; | |
97 | |
98 use Bio::EnsEMBL::IdMapping::TinyFeature; | |
99 our @ISA = qw(Bio::EnsEMBL::IdMapping::TinyFeature); | |
100 | |
101 use Bio::EnsEMBL::Utils::Exception qw(throw warning); | |
102 | |
103 | |
104 =head2 start | |
105 | |
106 Arg[1] : (optional) Int - the exon's start coordinate | |
107 Description : Getter/setter for the exon's start coordinate. | |
108 Return type : Int | |
109 Exceptions : none | |
110 Caller : general | |
111 Status : At Risk | |
112 : under development | |
113 | |
114 =cut | |
115 | |
116 sub start { | |
117 my $self = shift; | |
118 $self->[5] = shift if (@_); | |
119 return $self->[5]; | |
120 } | |
121 | |
122 | |
123 =head2 end | |
124 | |
125 Arg[1] : (optional) Int - the exon's end coordinate | |
126 Description : Getter/setter for the exon's end coordinate. | |
127 Return type : Int | |
128 Exceptions : none | |
129 Caller : general | |
130 Status : At Risk | |
131 : under development | |
132 | |
133 =cut | |
134 | |
135 sub end { | |
136 my $self = shift; | |
137 $self->[6] = shift if (@_); | |
138 return $self->[6]; | |
139 } | |
140 | |
141 | |
142 =head2 strand | |
143 | |
144 Arg[1] : (optional) Int - the exon's strand | |
145 Description : Getter/setter for the exon's strand. | |
146 Return type : Int | |
147 Exceptions : none | |
148 Caller : general | |
149 Status : At Risk | |
150 : under development | |
151 | |
152 =cut | |
153 | |
154 sub strand { | |
155 my $self = shift; | |
156 $self->[7] = shift if (@_); | |
157 return $self->[7]; | |
158 } | |
159 | |
160 | |
161 =head2 seq_region_name | |
162 | |
163 Arg[1] : (optional) String - seq_region name | |
164 Description : Getter/setter for the seq_region name of the slice the exon is | |
165 on. | |
166 Return type : String | |
167 Exceptions : none | |
168 Caller : general | |
169 Status : At Risk | |
170 : under development | |
171 | |
172 =cut | |
173 | |
174 sub seq_region_name { | |
175 my $self = shift; | |
176 $self->[8] = shift if (@_); | |
177 return $self->[8]; | |
178 } | |
179 | |
180 | |
181 =head2 coord_system_name | |
182 | |
183 Arg[1] : (optional) String - coord_system name | |
184 Description : Getter/setter for the coord_system name of the slice the exon is | |
185 on. | |
186 Return type : String | |
187 Exceptions : none | |
188 Caller : general | |
189 Status : At Risk | |
190 : under development | |
191 | |
192 =cut | |
193 | |
194 sub coord_system_name { | |
195 my $self = shift; | |
196 $self->[9] = shift if (@_); | |
197 return $self->[9]; | |
198 } | |
199 | |
200 | |
201 =head2 coord_system_version | |
202 | |
203 Arg[1] : (optional) String - coord_system version | |
204 Description : Getter/setter for the coord_system version of the slice the | |
205 exon is on. | |
206 Return type : String | |
207 Exceptions : none | |
208 Caller : general | |
209 Status : At Risk | |
210 : under development | |
211 | |
212 =cut | |
213 | |
214 sub coord_system_version { | |
215 my $self = shift; | |
216 $self->[10] = shift if (@_); | |
217 return $self->[10]; | |
218 } | |
219 | |
220 | |
221 =head2 seq | |
222 | |
223 Arg[1] : (optional) String - the exon's sequence | |
224 Description : Getter/setter for the exon's sequence. | |
225 Return type : String | |
226 Exceptions : none | |
227 Caller : general | |
228 Status : At Risk | |
229 : under development | |
230 | |
231 =cut | |
232 | |
233 sub seq { | |
234 my $self = shift; | |
235 $self->[11] = shift if (@_); | |
236 return $self->[11]; | |
237 } | |
238 | |
239 | |
240 =head2 phase | |
241 | |
242 Arg[1] : (optional) Int - the exon's phase | |
243 Description : Getter/setter for the exon's phase. | |
244 Return type : Int | |
245 Exceptions : none | |
246 Caller : general | |
247 Status : At Risk | |
248 : under development | |
249 | |
250 =cut | |
251 | |
252 sub phase { | |
253 my $self = shift; | |
254 $self->[12] = shift if (@_); | |
255 return $self->[12]; | |
256 } | |
257 | |
258 | |
259 =head2 need_project | |
260 | |
261 Arg[1] : (optional) Boolean - attribute to set | |
262 Description : Getter/setter for the attribute determining whether an exon | |
263 needs to be projected onto a common coord_system. You don't need | |
264 to do so if the native coord_system is common to the source and | |
265 target assemblies, or if no common coord_system is found (the | |
266 Cache object has methods to determine this). | |
267 Return type : Boolean | |
268 Exceptions : none | |
269 Caller : general | |
270 Status : At Risk | |
271 : under development | |
272 | |
273 =cut | |
274 | |
275 sub need_project { | |
276 my $self = shift; | |
277 $self->[13] = shift if (@_); | |
278 return $self->[13]; | |
279 } | |
280 | |
281 | |
282 =head2 common_start | |
283 | |
284 Arg[1] : (optional) Int - the exon's start in common coord_system | |
285 coordinates | |
286 Description : Getter/setter for the exon's start in common coord_system | |
287 coordinates. Will return $self->start if no projection to a | |
288 common coord_system is required. | |
289 Return type : Int | |
290 Exceptions : none | |
291 Caller : general | |
292 Status : At Risk | |
293 : under development | |
294 | |
295 =cut | |
296 | |
297 sub common_start { | |
298 my $self = shift; | |
299 | |
300 # when used as a setter, always set a value | |
301 $self->[14] = shift if (@_); | |
302 | |
303 # when used as a getter | |
304 if (scalar(@$self) > 14) { | |
305 # return value for common coord_system if available (but avoid | |
306 # autovivification gotcha!) | |
307 return $self->[14]; | |
308 } elsif ($self->need_project) { | |
309 # return undef if common value expected but not there (e.g. no projection | |
310 # found | |
311 return undef; | |
312 } else { | |
313 # return native value | |
314 return $self->start; | |
315 } | |
316 } | |
317 | |
318 | |
319 =head2 common_end | |
320 | |
321 Arg[1] : (optional) Int - the exon's end in common coord_system | |
322 coordinates | |
323 Description : Getter/setter for the exon's end in common coord_system | |
324 coordinates. Will return $self->end if no projection to a | |
325 common coord_system is required. | |
326 Return type : Int | |
327 Exceptions : none | |
328 Caller : general | |
329 Status : At Risk | |
330 : under development | |
331 | |
332 =cut | |
333 | |
334 sub common_end { | |
335 my $self = shift; | |
336 | |
337 # when used as a setter, always set a value | |
338 $self->[15] = shift if (@_); | |
339 | |
340 # when used as a getter | |
341 if (scalar(@$self) > 14) { | |
342 # return value for common coord_system if available (but avoid | |
343 # autovivification gotcha!) | |
344 return $self->[15]; | |
345 } elsif ($self->need_project) { | |
346 # return undef if common value expected but not there (e.g. no projection | |
347 # found | |
348 return undef; | |
349 } else { | |
350 # return native value | |
351 return $self->end; | |
352 } | |
353 } | |
354 | |
355 | |
356 =head2 common_strand | |
357 | |
358 Arg[1] : (optional) Int - the exon's strand in common coord_system | |
359 coordinates | |
360 Description : Getter/setter for the exon's strand in common coord_system | |
361 coordinates. Will return $self->strand if no projection to a | |
362 common coord_system is required. | |
363 Return type : Int | |
364 Exceptions : none | |
365 Caller : general | |
366 Status : At Risk | |
367 : under development | |
368 | |
369 =cut | |
370 | |
371 sub common_strand { | |
372 my $self = shift; | |
373 | |
374 # when used as a setter, always set a value | |
375 $self->[16] = shift if (@_); | |
376 | |
377 # when used as a getter | |
378 if (scalar(@$self) > 14) { | |
379 # return value for common coord_system if available (but avoid | |
380 # autovivification gotcha!) | |
381 return $self->[16]; | |
382 } elsif ($self->need_project) { | |
383 # return undef if common value expected but not there (e.g. no projection | |
384 # found | |
385 return undef; | |
386 } else { | |
387 # return native value | |
388 return $self->strand; | |
389 } | |
390 } | |
391 | |
392 | |
393 =head2 common_sr_name | |
394 | |
395 Arg[1] : (optional) String - seq_region name of the exon's slice on the | |
396 common coord_system | |
397 Description : Getter/setter for the seq_region name of the exon's slice on the | |
398 common coord_system coordinates. Will return | |
399 $self->seq_region_name if no projection to a common coord_system | |
400 is required. | |
401 Return type : String | |
402 Exceptions : none | |
403 Caller : general | |
404 Status : At Risk | |
405 : under development | |
406 | |
407 =cut | |
408 | |
409 sub common_sr_name { | |
410 my $self = shift; | |
411 | |
412 # when used as a setter, always set a value | |
413 $self->[17] = shift if (@_); | |
414 | |
415 # when used as a getter | |
416 if (scalar(@$self) > 14) { | |
417 # return value for common coord_system if available (but avoid | |
418 # autovivification gotcha!) | |
419 return $self->[17]; | |
420 } elsif ($self->need_project) { | |
421 # return undef if common value expected but not there (e.g. no projection | |
422 # found | |
423 return undef; | |
424 } else { | |
425 # return native value | |
426 return $self->seq_region_name; | |
427 } | |
428 } | |
429 | |
430 | |
431 =head2 length | |
432 | |
433 Description : Returns the exon length (distance between start and end). | |
434 Return type : Int | |
435 Exceptions : none | |
436 Caller : general | |
437 Status : At Risk | |
438 : under development | |
439 | |
440 =cut | |
441 | |
442 sub length { | |
443 my $self = shift; | |
444 return ($self->end - $self->start + 1); | |
445 } | |
446 | |
447 | |
448 =head2 is_known | |
449 | |
450 Description : Determine whether an exon is known. In the context of stable Id | |
451 mapping, this is true for all exons. | |
452 Return type : Boolean | |
453 Exceptions : none | |
454 Caller : general | |
455 Status : At Risk | |
456 : under development | |
457 | |
458 =cut | |
459 | |
460 sub is_known { | |
461 return 1; | |
462 } | |
463 | |
464 | |
465 1; | |
466 |