annotate variant_effect_predictor/Bio/EnsEMBL/Variation/Failable.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 # Ensembl module for Bio::EnsEMBL::Variation::BaseStructuralVariation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 # Copyright (c) 2011 Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 Bio::EnsEMBL::Variation::Failable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 This object returns failed information.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 package Bio::EnsEMBL::Variation::Failable;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 =head2 failed_description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 Arg [1] : $failed_description (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 The new value to set the failed_description attribute to. Should
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 be a reference to a list of strings, alternatively a string can
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 be passed. If multiple failed descriptions are specified, they should
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 be separated with semi-colons.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 Example : $failed_str = $sv->failed_description();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 Description: Get/Sets the failed description for this structural variant. The failed
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 descriptions are lazy-loaded from the database.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 Returntype : Semi-colon separated string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 Exceptions : Thrown on illegal argument.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 sub failed_description {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 my $description = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 # Update the description if necessary
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 if (defined($description)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 # If the description is a string, split it by semi-colon and take the reference
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 if (check_ref($description,'STRING')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 my @pcs = split(/;/,$description);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 $description = \@pcs;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 # Throw an error if the description is not an arrayref
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 assert_ref($description.'ARRAY');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 # Update the cached failed_description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 $self->{'failed_description'} = $description;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 # Else, fetch it from the db if it's not cached
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 elsif (!defined($self->{'failed_description'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 $self->{'failed_description'} = $self->get_all_failed_descriptions();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 # Return a semi-colon separated string of descriptions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 return join(";",@{$self->{'failed_description'}});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 =head2 get_all_failed_descriptions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 if ($sv->is_failed()) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 my $descriptions = $sv->get_all_failed_descriptions();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 print "Structural variant " . $sv->variation_name() . " has been flagged as failed because '";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 print join("' and '",@{$descriptions}) . "'\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 Description: Gets all failed descriptions associated with this Structural variant.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 Returntype : Reference to a list of strings
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 Exceptions : Thrown if an adaptor is not attached to this object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 sub get_all_failed_descriptions {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 # If the failed descriptions haven't been cached yet, load them from db
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 unless (defined($self->{'failed_description'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 # Check that this allele has an adaptor attached
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 unless (defined($self->adaptor())) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 throw('An adaptor must be attached to the ' . ref($self) . ' object');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 $self->{'failed_description'} = $self->adaptor->get_all_failed_descriptions($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 return $self->{'failed_description'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 =head2 is_failed
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 Example : print "Structural variant '" . $sv->variation_name() . "' has " . ($sv->is_failed() ? "" : "not ") . "been flagged as failed\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 Description: Gets the failed attribute for this structural variant. The failed attribute
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 is lazy-loaded from the database.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 Returntype : int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 Status : At risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 sub is_failed {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 return (length($self->failed_description()) > 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 1;