diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/EnsEMBL/Variation/Failable.pm	Fri Aug 03 10:04:48 2012 -0400
@@ -0,0 +1,140 @@
+=head1 LICENSE
+
+  Copyright (c) 1999-2012 The European Bioinformatics Institute and
+  Genome Research Limited.  All rights reserved.
+
+  This software is distributed under a modified Apache license.
+  For license details, please see
+
+    http://www.ensembl.org/info/about/code_licence.html
+
+=head1 CONTACT
+
+  Please email comments or questions to the public Ensembl
+  developers list at <dev@ensembl.org>.
+
+  Questions may also be sent to the Ensembl help desk at
+  <helpdesk@ensembl.org>.
+
+=cut
+
+# Ensembl module for Bio::EnsEMBL::Variation::BaseStructuralVariation
+#
+# Copyright (c) 2011 Ensembl
+#
+
+=head1 NAME
+
+Bio::EnsEMBL::Variation::Failable
+
+=head1 DESCRIPTION
+
+This object returns failed information.
+
+=cut
+
+
+use strict;
+use warnings;
+
+package Bio::EnsEMBL::Variation::Failable;
+
+
+=head2 failed_description
+
+  Arg [1]    : $failed_description (optional)
+               The new value to set the failed_description attribute to. Should 
+               be a reference to a list of strings, alternatively a string can
+               be passed. If multiple failed descriptions are specified, they should
+               be separated with semi-colons.  
+  Example    : $failed_str = $sv->failed_description();
+  Description: Get/Sets the failed description for this structural variant. The failed
+               descriptions are lazy-loaded from the database.
+  Returntype : Semi-colon separated string 
+  Exceptions : Thrown on illegal argument.
+  Caller     : general
+  Status     : At risk
+
+=cut
+
+sub failed_description {
+    my $self = shift;
+    my $description = shift;
+  
+    # Update the description if necessary
+    if (defined($description)) {
+        
+        # If the description is a string, split it by semi-colon and take the reference
+        if (check_ref($description,'STRING')) {
+            my @pcs = split(/;/,$description);
+            $description = \@pcs;
+        }
+        # Throw an error if the description is not an arrayref
+        assert_ref($description.'ARRAY');
+        
+        # Update the cached failed_description
+        $self->{'failed_description'} = $description;
+    }
+    # Else, fetch it from the db if it's not cached
+    elsif (!defined($self->{'failed_description'})) {
+        $self->{'failed_description'} = $self->get_all_failed_descriptions();
+    }
+    
+    # Return a semi-colon separated string of descriptions
+    return join(";",@{$self->{'failed_description'}});
+}
+
+
+=head2 get_all_failed_descriptions
+
+  Example    :  
+                if ($sv->is_failed()) {
+                    my $descriptions = $sv->get_all_failed_descriptions();
+                    print "Structural variant " . $sv->variation_name() . " has been flagged as failed because '";
+                    print join("' and '",@{$descriptions}) . "'\n";
+                }
+                
+  Description: Gets all failed descriptions associated with this Structural variant.
+  Returntype : Reference to a list of strings 
+  Exceptions : Thrown if an adaptor is not attached to this object.
+  Caller     : general
+  Status     : At risk
+
+=cut
+
+sub get_all_failed_descriptions {
+  my $self = shift;
+  
+    # If the failed descriptions haven't been cached yet, load them from db
+    unless (defined($self->{'failed_description'})) {
+        
+        # Check that this allele has an adaptor attached
+        unless (defined($self->adaptor())) {
+            throw('An adaptor must be attached to the ' . ref($self)  . ' object');
+        }
+    
+        $self->{'failed_description'} = $self->adaptor->get_all_failed_descriptions($self);
+    }
+    
+    return $self->{'failed_description'};
+}
+
+
+=head2 is_failed
+
+  Example    : print "Structural variant '" . $sv->variation_name() . "' has " . ($sv->is_failed() ? "" : "not ") . "been flagged as failed\n";
+  Description: Gets the failed attribute for this structural variant. The failed attribute
+               is lazy-loaded from the database.
+  Returntype : int
+  Exceptions : none
+  Caller     : general
+  Status     : At risk
+
+=cut
+
+sub is_failed {
+  my $self = shift;
+  
+  return (length($self->failed_description()) > 0);
+}
+1;