diff variant_effect_predictor/Bio/EnsEMBL/Funcgen/SetFeature.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/EnsEMBL/Funcgen/SetFeature.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,280 @@
+#
+# Ensembl module for Bio::EnsEMBL::Funcgen::SetFeature
+#
+
+
+=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 <ensembl-dev@ebi.ac.uk>.
+
+  Questions may also be sent to the Ensembl help desk at
+  <helpdesk@ensembl.org>.
+
+
+=head1 NAME
+
+Bio::EnsEMBL::Funcgen::SetFeature - Base class for features of a Set.
+
+=head1 SYNOPSIS
+
+  # Would normally be created from an in inheriting class e.g. AnnotatedFeature.pm
+
+  use base qw(Bio::Ensembl::Funcgen::SetFeature);
+
+  sub new {
+    my $caller = shift;
+    my $class  = ref($caller) || $caller;
+    my $self   = $class->SUPER::new(@_);
+    # More construction here
+  }
+
+  # Alternative direct contruction
+
+  my $feat = Bio::EnsEMBL::Funcgen::SetFeature->
+    (
+     -start         => 100,
+     -end           => 220,
+     -strand        => -1,
+     -slice         => $slice,
+     -set           => $fset,
+     -feature_type  => $ftype,
+     -display_label => $label,
+    );
+
+  # Accessing some attributes
+
+ 
+  my $start     = $feat->start;
+  my $end       = $feat->end;
+  my $strand    = $feat->strand;
+  my $fset      = $feat->set;
+  my $cell_type = $feat->cell_type;
+
+  # Printing some information
+
+  print $feature->display_label.' has the FeatureType '.$feat->feature_type->name."\n";
+
+=head1 DESCRIPTION
+
+This is a base class for features which are contained within a Funcgen FeatureSet or ResultSet.
+It provides generic methods for attributes which are common across all inheriting classes.
+
+=cut
+
+
+package Bio::EnsEMBL::Funcgen::SetFeature;
+
+use strict;
+use warnings;
+
+use Bio::EnsEMBL::Feature;
+use Bio::EnsEMBL::Funcgen::Storable;
+use Bio::EnsEMBL::Utils::Argument qw(rearrange);
+use Bio::EnsEMBL::Utils::Exception qw(throw);
+
+use vars qw(@ISA);
+@ISA = qw(Bio::EnsEMBL::Feature Bio::EnsEMBL::Funcgen::Storable);
+#can't use base with dual inheritance
+
+=head2 new
+
+
+  Arg [-SET]          : Bio::EnsEMBL::Funcgen::ResultSet or FeatureSet.
+  Arg [-DISPLAY_LABEL]: (optional) String - Display label for this feature
+  Arg [-FEATURE_TYPE] : (optional) Bio::EnsEMBL::Funcgen::FeatureType.
+                        Defaults to Feature/ResultSet FeatureType.
+  
+  #Bio::EnsEMBL::Feature arguments
+  Arg [-SLICE]        : Bio::EnsEMBL::Slice - The slice on which this feature is.
+  Arg [-STRAND]       : (optional) Int - The orientation of this feature relative to the 
+                        strand it is on. Valid values are 1, -1 and 0.
+  Arg [-START]        : Int - The start coordinate of this feature relative to the start of the slice
+		                    it is sitting on. Coordinates start at 1 and are inclusive.
+  Arg [-END]          : Int -The end coordinate of this feature relative to the start of the slice
+	                      it is sitting on. Coordinates start at 1 and are inclusive. 
+  Arg [-ANALYSIS]     : (optional) Bio::EnsEMBL::Analysis. Defaults to Feature/ResultSet Analysis.
+  Arg [-dbID]         : (optional) Int - Internal database ID.
+  Arg [-ADAPTOR]      : (optional) Bio::EnsEMBL::Funcgen::DBSQL::BaseFeatureAdaptor
+
+
+
+  Example             : my $feature = Bio::EnsEMBL::Funcgen::SetFeature->new
+                                        (
+                                         -SLICE         => $chr_1_slice,
+                                         -START         => 1000000,
+                                         -END           => 1000024,
+                                         -STRAND        => -1,
+							                           -DISPLAY_LABEL => $text,
+							                           -SET           => $fset,
+                                        );
+
+  Description: Constructor for SetFeature objects. Should never be called directly, only by its children.
+  Returntype : Bio::EnsEMBL::Funcgen::SetFeature
+  Exceptions : Throws if no valid ResultSet or FeatureSet passed
+               Throws if FeatureType is passed but not valid
+  Caller     : General
+  Status     : At Risk - FEATURE_SET arg to be removed, superceded by SET in v67
+
+=cut
+
+sub new {
+  my $caller = shift;
+  my $class = ref($caller) || $caller;
+
+  my ($display_label, $fset, $ftype, $set)
+    = rearrange(['DISPLAY_LABEL', 'FEATURE_SET', 'FEATURE_TYPE', 'SET'], @_);
+
+  $set ||= $fset;
+
+  if( ( ref($set) ne 'Bio::EnsEMBL::Funcgen::FeatureSet') &&
+	  ( ref($set) ne 'Bio::EnsEMBL::Funcgen::ResultSet') ){
+    throw("Must pass valid Bio::EnsEMBL::Funcgen::FeatureSet or ResultSet object");
+  }
+
+  #Grab FeatureSet first so we can pass analysis to base Feature class
+  #Funcgen analysis is currently always at the Set level
+  #if this ever changes the SetFeature->analysis method will also need changing
+  my $self = $class->SUPER::new(@_, -analysis => $set->analysis);
+ 
+  if($ftype){
+	
+    if (ref($ftype) ne 'Bio::EnsEMBL::Funcgen::FeatureType') {
+      throw('feature_type param must be a valid Bio::EnsEMBL::Funcgen::FeatureType');
+    }
+  
+    $self->{feature_type} = $ftype;
+  }
+ 
+  #Setting attrs directly removes the need for setter code in methods
+  $self->{set}           = $set;
+  $self->{display_label} = $display_label if defined $display_label;
+ 	
+  return $self;
+}
+
+
+
+=head2 feature_set
+
+  Example    : my $set = $efeature->feature_set();
+  Description: WARNING: Can now also return ResultSet aswell as FeatureSet attribute for this feature.
+  Returntype : Bio::EnsEMBL::Funcgen::FeatureSet or ResultSet
+  Exceptions : None
+  Caller     : General
+  Status     : At Risk - marked as to be removed in v67
+
+=cut
+
+sub feature_set {
+  #??? deprecate
+  #check webcode?
+
+  return $_[0]->{set};
+}
+
+
+=head2 set
+
+  Example    : my $set = $set_feature->set();
+  Description: Getter for the set attribute for this feature.
+  Returntype : Bio::EnsEMBL::Funcgen::FeatureSet or ResultSet
+  Exceptions : None
+  Caller     : General
+  Status     : At Risk
+
+=cut
+
+sub set {
+  return $_[0]->{set};
+}
+
+=head2 cell_type
+
+  Example    : my $cell_name = $set_feature->cell_type->name;
+  Description: Getter for the CellType attribute for the Set of this Feature.
+  May not always be for some Set types e.g. ExternalFeatures.
+  Returntype : Bio::EnsEMBL::Funcgen::CellType
+  Exceptions : None
+  Caller     : General
+  Status     : stable
+
+=cut
+
+sub cell_type{
+	return $_[0]->set->cell_type;
+}
+
+
+=head2 feature_type
+
+  Example    : my $ft_name = $set_feature->feature_type->name;
+  Description: Getter for the FeatureType attribute for this feature.
+               If not explicitly set, defaults to the Set FeatureType
+  Returntype : Bio::EnsEMBL::Funcgen::FeatureType
+  Exceptions : None
+  Caller     : General
+  Status     : stable
+
+=cut
+
+sub feature_type{
+  my $self = shift;
+
+  if(! defined $self->{feature_type}){
+    $self->{feature_type} = $self->set->feature_type;
+  }
+  
+  return $self->{feature_type};
+}
+
+
+=head2 analysis
+
+  Example    : my $analysis = $setfeature->analysis;
+  Description: Getter for the Analysis attribute for this feature.
+               Re-implementation of Bio::EnsEMBL::Feature->analysis.
+  Returntype : Bio::EnsEMBL::Analysis
+  Exceptions : None
+  Caller     : General
+  Status     : stable
+
+=cut
+
+#what about MFs? add as feature_set as MOODS/PWM analysis not represented
+#This is a mandatory requirement for Bio::EnsEMBL::Feature
+#Do we ever actually have analysis at the feature level?
+
+sub analysis{
+  return $_[0]->set->analysis;
+}
+
+
+=head2 display_label
+
+  Example    : my $label = $feature->display_label;
+  Description: Getter for the display label of this feature.
+  This will most likely be over-ridden by inheriting class
+  Returntype : String
+  Exceptions : None
+  Caller     : General
+  Status     : Stable
+
+=cut
+
+sub display_label{
+  return $_[0]->{display_label};
+}
+
+
+1;