diff variant_effect_predictor/Bio/EnsEMBL/DensityFeature.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/DensityFeature.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,301 @@
+=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
+
+=head1 NAME
+
+Bio::EnsEMBL::DensityFeature - A feature representing a density, or
+precentage coverage etc. in a given region.
+
+=head1 SYNOPSIS
+
+  use Bio::EnsEMBL::DensityFeature;
+
+  $feature = Bio::EnsEMBL::DensityFeature->new(
+    -seq_region    => $region,
+    -start         => 1,
+    -end           => 1e6,
+    -density_type  => $dt,
+    -density_value => 98.5
+  );
+
+=head1 DESCRIPTION
+
+A density feature represents a count, density, or percentage coverage,
+etc. for a given region.
+
+This module is part of the Ensembl project http://www.ensembl.org
+
+=head1 METHODS
+
+=cut
+
+
+use strict;
+use warnings;
+
+package Bio::EnsEMBL::DensityFeature;
+
+use Bio::EnsEMBL::Feature;
+use Bio::EnsEMBL::Utils::Argument qw(rearrange);
+use Bio::EnsEMBL::Utils::Exception qw(throw);
+use Bio::EnsEMBL::DensityType;
+
+use vars qw(@ISA);
+
+@ISA = qw(Bio::EnsEMBL::Feature);
+
+
+=head2 new
+
+  Arg [SEQ_REGION] : the sequence over which the density was calculated.
+
+  Arg [START] : start point on the seq at which density was calulated.
+
+  Arg [END] : end point on the seq at which density was calulated.
+
+  Arg [DENSITY_TYPE] : the type of density calculated.
+
+  Arg [DENSITY_VALUE] : the density.
+
+  Arg [...]  : Named arguments passed to superclass
+  Example    : $feature = Bio::EnsEMBL::DensityFeature->new
+                            (-seq_region    => $region,
+			     -start         => 1,
+                             -end           => 1e6,
+                             -density_type  => $dt,
+			     -density_value => 98.5)
+
+  Description: Creates a new density feature.
+  Returntype : Bio::EnsEMBL::DensityFeature
+  Exceptions : throw if invalid density value type is provided
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub new {
+  my $caller = shift;
+
+  #allow constructor to be called as class or object method
+  my $class = ref($caller) || $caller;
+
+  my $self = $class->SUPER::new(@_);
+
+  my($seq_region, $start, $end, $dt, $dv) =
+    rearrange(['SEQ_REGION', 'START', 'END', 'DENSITY_TYPE', 'DENSITY_VALUE'],
+              @_);
+
+  throw("Density value must be >= 0.") if($dv < 0);
+
+  if(!defined($dt)){
+    throw("Density Type is NOT optional.");
+  }
+
+  $self->{'density_type'} = $dt;
+  $self->{'density_value'} = $dv;
+
+  $self->{'slice'}    = $seq_region;
+  $self->{'start'} = $start;
+  $self->{'end'}   = $end;
+  
+
+  return $self;
+}
+
+
+=head2 new_fast
+
+  Arg [...]  : none
+  Example    : $feature = Bio::EnsEMBL::DensityFeature->new_fast();  
+  Description: Creates a new density feature.
+  Returntype : Bio::EnsEMBL::DensityFeature
+  Exceptions : none
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub new_fast{
+  my $caller = shift;
+
+  #allow constructor to be called as class or object method
+  my $class = ref($caller) || $caller;
+
+  my $self = $class->SUPER::new(@_);
+
+  return $self;
+}
+
+
+=head2 strand
+
+  Arg [1]    : none
+  Example    : $strand = $df->strand();
+  Description: Getter fot the strand attribute. Density features always have
+               strand 0 and this attribute is not settable.
+  Returntype : int (always 0)
+  Exceptions : warning if an attempt is made to set the strand
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub strand {
+  my $self = shift;
+  warning("DensityFeature strand is not settable") if(@_);
+  return 0;
+}
+
+
+
+=head2 density_value
+
+  Arg [1]    : (optional) float $density_value
+  Example    : $dv = $density_feature->density_value();
+  Description: Getter/Setter for the density value of this DensityFeature.
+               The density value may be a count, a percentage, or a coverage
+               of a feature type in the area defined by this feature.
+  Returntype : float
+  Exceptions : throw if a negative density value is provided
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub density_value {
+  my $self = shift;
+
+  if(@_) {
+    my $density_value = shift;
+    throw("Density value must be >= 0.") if($density_value < 0);
+    $self->{'density_value'} = $density_value;
+  }
+
+  return $self->{'density_value'};
+}
+
+
+
+=head2 analysis
+
+  Arg [1]    : (optional) Bio::EnsEMBL::Analysis $analysis
+               New value for the analysis of the attached DensityType
+  Example    : print $df->analysis()->logic_name();
+  Description: Overridden superclass analysis method, to chain to analysis
+               method on attached DensityType.
+  Returntype : Bio::EnsEMBL::Analysis
+  Exceptions : none
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub analysis {
+  my $self = shift;
+
+  my $dt = $self->density_type();
+
+  return undef if(!$dt);
+
+  return $dt->analysis(@_);
+}
+
+
+
+=head2 density_type
+
+  Arg [1]    : string $newval (optional) 
+               The new value to set the density_value_type attribute to
+  Example    : $density_value_type = $obj->density_value_type()
+  Description: Getter/Setter for the density_value_type attribute
+  Returntype : Bio::EnsEMBL::DensityType
+  Exceptions : if object passed is not of type DensityType
+  Caller     : general
+  Status     : Stable
+
+=cut
+
+sub density_type{
+  my $self = shift;
+  if(@_) {
+    my $type = shift;
+    if( !ref $type || !$type->isa("Bio::EnsEMBL::DensityType")){
+      throw("object passed must be an ensembl DensityType ". 
+	    "not a [".ref($type)."]");
+    }
+    else{
+      $self->{'density_type'}=$type;
+    }
+  }
+  return $self->{'density_type'};
+}
+
+
+###BG########
+
+=head2 scaledvalue
+
+ Title   : scaledvalue
+ Usage   : $obj->scaledvalue($newval)
+ Function:
+ Returns : scalar - object's scaled value
+ Args    : newvalue (optional)
+ Status  : Stable
+
+=cut
+
+sub scaledvalue{
+  my $obj = shift;
+  if( @_ ) {
+    my $scaledvalue = shift;
+    $obj->{'scaledvalue'} = $scaledvalue;
+  }
+  return $obj->{'scaledvalue'};
+}
+
+
+
+=head2 url
+
+ Title   : url
+ Usage   : $obj->url($newval)
+ Function:
+ Returns : String containing this object's url
+ Args    : newvalue (optional)
+ Status  : Stable
+
+
+=cut
+
+sub url{
+   my $obj = shift;
+   if( @_ ) {
+      my $url = shift;
+      $obj->{'url'} = $url;
+    }
+    return $obj->{'url'};
+
+}
+
+
+1;
+
+
+