comparison variant_effect_predictor/Bio/EnsEMBL/ArchiveStableId.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::ArchiveStableId
24
25 =head1 DESCRIPTION
26
27 ArchiveStableId objects are the main workunit for retrieving stable id
28 archived information from EnsEMBL core database.
29
30 Attributes:
31 type: Gene, Transcript, Translation, Exon, other, undef
32 stable_id: eg. ENSG00000000001
33 version: e.g. 1
34 db_name: eg. homo_sapiens_core_12_31
35 release: e.g. 35
36 assembly: e.g. NCBI35
37 successors: listref of Bio::EnsEMBL::ArchiveStableIds
38 adaptor: Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
39
40 Status: At Risk. This module is in development.
41
42 =head1 SEE ALSO
43
44 Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
45 Bio::EnsEMBL::StableIdEvent
46 Bio::EnsEMBL::StableIdHistoryTree
47
48 =cut
49
50 package Bio::EnsEMBL::ArchiveStableId;
51
52 use strict;
53 use warnings;
54 no warnings qw(uninitialized);
55
56 use Bio::EnsEMBL::Root;
57 our @ISA = qw(Bio::EnsEMBL::Root);
58
59 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
60 use Scalar::Util qw(weaken isweak);
61
62 =head2 new
63
64 Arg [STABLE_ID] : String $stable_id
65 Arg [VERSION] : Int $version
66 Arg [CURRENT_VERSION]: Int $current_version
67 Arg [DB_NAME] : String $db_name
68 Arg [RELEASE] : String $release
69 Arg [ASSEMBLY_NAME] : String $assembly
70 Arg [TYPE] : String $type - "Gene", "Transcript", "Translation", "Exon"
71 Arg [ADAPTOR] : Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor $adaptor
72 Description : standard constructor with named arguments to create
73 ArchiveStableId
74 Returntype : Bio::EnsEMBL::ArchiveStableId
75 Exceptions : none
76 Caller : general, Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
77 Status : At Risk
78 : under development
79
80 =cut
81
82 sub new {
83 my $class = shift;
84 $class = ref( $class ) || $class;
85
86 my $self = bless {}, $class;
87
88 my ($stable_id, $version, $current_version, $db_name, $release, $assembly,
89 $type, $adaptor) = rearrange([qw( STABLE_ID VERSION CURRENT_VERSION DB_NAME
90 RELEASE ASSEMBLY TYPE ADAPTOR)], @_ );
91
92 $self->{'stable_id'} = $stable_id;
93 $self->{'version'} = $version;
94 $self->{'current_version'} = $current_version;
95 $self->{'db_name'} = $db_name;
96 $self->{'release'} = $release;
97 $self->{'assembly'} = $assembly;
98 $self->{'type'} = $type;
99 $self->adaptor($adaptor);
100
101 return $self;
102 }
103
104
105 =head2 new_fast
106
107 Arg [1] : String $stable_id
108 Arg [2] : Int $version
109 Arg [3] : String $db_name
110 Arg [4] : String $release
111 Arg [5] : String $assembly
112 Arg [6] : String $type - "Gene", "Transcript", "Translation", "Exon"
113 Arg [7] : Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor $adaptor
114 Arg [8] : Int $current_version
115 Description : faster version of above constructor
116 Returntype : Bio::EnsEMBL::ArchiveStableId
117 Exceptions : none
118 Caller : general, Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
119 Status : At Risk
120 : under development
121
122 =cut
123
124 sub new_fast {
125 my $class = shift;
126
127 $class = ref ($class) || $class;
128
129 my $self = bless {
130 'stable_id' => $_[0],
131 'version' => $_[1],
132 'db_name' => $_[2],
133 'release' => $_[3],
134 'assembly' => $_[4],
135 'type' => $_[5],
136 'adaptor' => $_[6],
137 'current_version' => $_[7],
138 }, $class;
139
140 weaken($self->{adaptor}) if ( ! isweak($self->{adaptor}) );
141
142 return $self;
143 }
144
145
146 =head2 get_history_tree
147
148 Arg[1] : (optional) Int $num_high_scorers
149 number of mappings per stable ID allowed when filtering
150 Arg[2] : (optional) Int $max_rows
151 maximum number of stable IDs in history tree (used for
152 filtering)
153 Example : my $history_tree = $archive_id->get_history_tree;
154 Description : Returns the history tree of this ArchiveStableId
155 Return type : Bio::EnsEMBL::StableIdHistoryTree
156 Exceptions : none
157 Caller : general
158 Status : At Risk
159 : under development
160
161 =cut
162
163 sub get_history_tree {
164 my ($self, $num_high_scorers, $max_rows) = @_;
165
166 unless ($self->{'history'}) {
167 $self->{'history'} = $self->adaptor->fetch_history_tree_by_stable_id(
168 $self->stable_id, $num_high_scorers, $max_rows);
169 }
170
171 return $self->{'history'};
172 }
173
174
175 =head2 get_all_predecessors
176
177 Args : none
178 Description : Retrieve a list of ArchiveStableIds that were mapped to this
179 one.
180 Returntype : listref of Bio::EnsEMBL::ArchiveStableId
181 Exceptions : none
182 Caller : general
183 Status : At Risk
184 : under development
185
186 =cut
187
188 sub get_all_predecessors {
189 my $self = shift;
190
191 my $predecessors = $self->adaptor->fetch_predecessors_by_archive_id($self);
192
193 foreach my $pre (@$predecessors) {
194 $pre->successors($self);
195 }
196
197 return $predecessors;
198 }
199
200
201 =head2 get_all_successors
202
203 Args : none
204 Description : Retrieve a list of ArchiveStableIds that this one was mapped to.
205 Returntype : listref Bio::EnsEMBL::ArchiveStableId
206 Exceptions : none
207 Caller : general
208 Status : At Risk
209 : under development
210
211 =cut
212
213 sub get_all_successors {
214 my $self = shift;
215
216 if ($self->{'successors'}) {
217 return $self->{'successors'};
218 } else {
219 my $successors = $self->adaptor->fetch_successors_by_archive_id($self);
220 return $self->successors(@$successors);
221 }
222 }
223
224
225 =head2 get_peptide
226
227 Description : Retrieves the peptide string for this ArchiveStableId.
228 Returntype : String, or undef if this is not a Translation or cant be found
229 in the database.
230 Exceptions : none
231 Caller : general
232 Status : At Risk
233 : under development
234
235 =cut
236
237 sub get_peptide {
238 my $self = shift;
239
240 if ( lc( $self->type() ) eq 'translation' ) {
241 return $self->adaptor->get_peptide($self);
242 } else {
243 return undef;
244 }
245 }
246
247
248 =head2 get_all_associated_archived
249
250 Example : my ($arch_gene, $arch_tr, $arch_tl, $pep_seq) =
251 @{ $arch_id->get_all_associated_archived };
252 Description : Fetches associated archived stable IDs from the db for this
253 ArchiveStableId (version is taken into account).
254 Return type : Listref of
255 ArchiveStableId archived gene
256 ArchiveStableId archived transcript
257 (optional) ArchiveStableId archived translation
258 (optional) peptide sequence
259 Caller : webcode, general
260 Status : At Risk
261 : under development
262
263 =cut
264
265 sub get_all_associated_archived {
266 my $self = shift;
267 return $self->adaptor->fetch_associated_archived($self);
268 }
269
270
271 =head2 get_all_gene_archive_ids
272
273 Example : my @archived_genes = @{ $arch_id->get_all_gene_archive_ids };
274 Description : Returns gene ArchiveStableIds associated with this
275 ArchiveStableId. If this is a gene, it returns itself.
276 Returntype : listref of Bio::EnsEMBL::ArchiveStableId
277 Exceptions : none
278 Caller : general
279 Status : At Risk
280 : under development
281
282 =cut
283
284 sub get_all_gene_archive_ids {
285 my $self = shift;
286
287 if ($self->type eq "Gene") {
288 return [$self];
289 } else {
290 return $self->adaptor->fetch_all_by_archive_id($self, 'Gene');
291 }
292 }
293
294
295 =head2 get_all_transcript_archive_ids
296
297 Example : my @archived_transcripts =
298 @{ $arch_id->get_all_transcript_archive_ids };
299 Description : Returns transcript ArchiveStableIds associated with this
300 ArchiveStableId. If this is a transcript, it returns itself.
301 Returntype : listref of Bio::EnsEMBL::ArchiveStableId
302 Exceptions : none
303 Caller : general
304 Status : At Risk
305 : under development
306
307 =cut
308
309 sub get_all_transcript_archive_ids {
310 my $self = shift;
311
312 if ($self->type eq "Transcript") {
313 return [$self];
314 } else {
315 return $self->adaptor->fetch_all_by_archive_id($self, 'Transcript');
316 }
317 }
318
319
320 =head2 get_all_translation_archive_ids
321
322 Example : my @archived_peptides =
323 @{ $arch_id->get_all_translation_archive_ids };
324 Description : Returns translation ArchiveStableIds associated with this
325 ArchiveStableId. If this is a translation, it returns itself.
326 Returntype : listref of Bio::EnsEMBL::ArchiveStableId
327 Exceptions : none
328 Caller : general
329 Status : At Risk
330 : under development
331
332 =cut
333
334 sub get_all_translation_archive_ids {
335 my $self = shift;
336
337 if ($self->type eq "Translation") {
338 return [$self];
339 } else {
340 return $self->adaptor->fetch_all_by_archive_id($self, 'Translation');
341 }
342 }
343
344
345 =head2 current_version
346
347 Example : if (my $v = $arch_id->current_version) {
348 print "Current version of this stable ID ", $v, "\n";
349 } else {
350 print "This stable ID is not in the current db.\n";
351 }
352 Description : Lazy-loads the current version of stable ID
353 Return type : Boolean (TRUE is current version found, else FALSE)
354 Exceptions : none
355 Caller : general
356 Status : At Risk
357 : under development
358
359 =cut
360
361 sub current_version {
362 my $self = shift;
363
364 if (@_) {
365 $self->{'current_version'} = shift;
366 } elsif (! defined $self->{'current_version'}) {
367 if (defined $self->adaptor()) {
368 # lazy load
369 $self->adaptor()->lookup_current($self);
370 }
371 }
372
373 return $self->{'current_version'};
374 }
375
376
377 =head2 is_current
378
379 Example : if ($arch_id->is_current) {
380 print $arch_id->version, " is the current version of this
381 stable ID.\n";
382 }
383 Description : Determines if the version of this object is the current version
384 of this stable ID. Note that this method doesn't lazy-load the
385 current version of an ArchiveStableId; if you want to be sure,
386 use current_version() instead.
387 Return type : Boolean (TRUE if it is current, else FALSE)
388 Exceptions : none
389 Caller : general
390 Status : At Risk
391 : under development
392
393 =cut
394
395 sub is_current {
396 my $self = shift;
397 return ($self->{'version'} == $self->{'current_version'});
398 }
399
400
401 =head2 get_latest_incarnation
402
403 Example : my $latest = $arch_id->get_latest_incarnation;
404 print "Latest version of ".$arch_id->stable_id." is ".
405 $latest->version."\n";
406 Description : Returns the ArchiveStableId representing the latest version
407 of this stable ID. Returns itself if this already is the latest
408 version, otherwise fetches it from the db.
409 Return type : Bio::EnsEMBL::ArchiveStableId
410 Exceptions : none
411 Caller : general
412 Status : At Risk
413 : under development
414
415 =cut
416
417 sub get_latest_incarnation {
418 my $self = shift;
419
420 return $self if ($self->is_latest);
421
422 my $latest = $self->adaptor->fetch_by_stable_id($self->stable_id);
423 return $latest;
424 }
425
426
427 =head2 is_latest
428
429 Arg[1] : (optional) Boolean $is_latest
430 Example : if ($arch_id->is_latest) {
431 print "Version ".$arch_id->version." is the latest version
432 of ".$arch_id->stable_id."\n";
433 }
434 Description : Indicates whether this is the latest version of this stable ID.
435 Can also be used as a setter if we know this is the latest
436 version.
437 Return type : Boolean (TRUE if yes, FALSE if no)
438 Exceptions : none
439 Caller : Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor->fetch_by_stable_id, general
440 Status : At Risk
441 : under development
442
443 =cut
444
445 sub is_latest {
446 my $self = shift;
447 $self->{'is_latest'} = shift if (@_);
448 return ($self->{'is_latest'} || $self->is_current);
449 }
450
451
452 #
453 # getter/setters for attributes
454 #
455
456 sub stable_id {
457 my $self = shift;
458 $self->{'stable_id'} = shift if (@_);
459 return $self->{'stable_id'};
460 }
461
462 sub version {
463 my $self = shift;
464 $self->{'version'} = shift if (@_);
465 return $self->{'version'};
466 }
467
468 sub db_name {
469 my $self = shift;
470 $self->{'db_name'} = shift if (@_);
471 return $self->{'db_name'};
472 }
473
474 sub release {
475 my $self = shift;
476 $self->{'release'} = shift if (@_);
477 return $self->{'release'};
478 }
479
480 sub assembly {
481 my $self = shift;
482 $self->{'assembly'} = shift if (@_);
483 return $self->{'assembly'};
484 }
485
486 sub type {
487 my $self = shift;
488 $self->{'type'} = shift if (@_);
489 return $self->{'type'};
490 }
491
492 sub adaptor {
493 my $self = shift;
494 weaken($self->{'adaptor'} = shift) if (@_);
495 return $self->{'adaptor'};
496 }
497
498 sub successors {
499 my $self = shift;
500 $self->{'successors'} = \@_;
501 return $self->{'successors'};
502 }
503
504
505 1;
506