diff variant_effect_predictor/Bio/EnsEMBL/Funcgen/SegmentationFeature.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/Funcgen/SegmentationFeature.pm	Fri Aug 03 10:04:48 2012 -0400
@@ -0,0 +1,168 @@
+#
+# Ensembl module for Bio::EnsEMBL::Funcgen::SegmentationFeature
+#
+# You may distribute this module under the same terms as Perl itself
+
+=head1 LICENSE
+
+  Copyright (c) 1999-2011 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::SegmentationFeature - Genomic segmentation feature
+
+=head1 SYNOPSIS
+
+use Bio::EnsEMBL::Funcgen::SegmentationFeature;
+
+my $feature = Bio::EnsEMBL::Funcgen::SegmentationFeature->new(
+	-SLICE         => $chr_1_slice,
+	-START         => 1_000_000,
+  	-END           => 1_000_024,
+	-STRAND        => 0,
+    -FEATURE_SET   => $fset,
+    -FEATURE_TYPE  => $ftype,
+); 
+
+
+
+=head1 DESCRIPTION
+
+An SegmentationFeature object represents the genomic placement of a prediction
+generated by the eFG analysis pipeline. This normally represents the 
+output of a peak calling analysis. It can have a score and/or a summit, the 
+meaning of which depend on the specific Analysis used to infer the feature.
+For example, in the case of a feature derived from a peak call over a ChIP-seq
+experiment, the score is the peak caller score, and summit is the point in the
+feature where more reads align with the genome.
+
+=head1 SEE ALSO
+
+Bio::EnsEMBL::Funcgen::DBSQL::SegmentationFeatureAdaptor
+
+=cut
+
+use strict;
+use warnings;
+
+package Bio::EnsEMBL::Funcgen::SegmentationFeature;
+
+use Bio::EnsEMBL::Utils::Argument qw( rearrange );
+use Bio::EnsEMBL::Utils::Exception qw( throw );
+use Bio::EnsEMBL::Funcgen::SetFeature;
+
+use vars qw(@ISA);
+@ISA = qw(Bio::EnsEMBL::Funcgen::SetFeature);
+
+=head2 new
+
+  Arg [-SLICE]        : Bio::EnsEMBL::Slice - The slice on which this feature is.
+  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 [-STRAND]       : int - The orientation of this feature. Valid values are 1, -1 and 0.
+  Arg [-FEATURE_SET]  : Bio::EnsEMBL::Funcgen::FeatureSet
+  Arg [-FEATURE_TYPE] : Bio::Ensembl::Funcgen::FeatureType
+  Arg [-DISPLAY_LABEL]: optional string - Display label for this feature
+  Arg [-SCORE]        : optional int - Score assigned by analysis pipeline
+  Arg [-dbID]         : optional int - Internal database ID.
+  Arg [-ADAPTOR]      : optional Bio::EnsEMBL::DBSQL::BaseAdaptor - Database adaptor.
+
+  Example             : my $feature = Bio::EnsEMBL::Funcgen::SegmentationFeature->new
+                                   (
+									-SLICE         => $chr_1_slice,
+									-START         => 1_000_000,
+									-END           => 1_000_024,
+                                    -STRAND        => -1,
+                                    -FEATURE_SET   => $fset,
+                                    -FEATURE_TYPE  => $ftype,
+									-DISPLAY_LABEL => $text,
+									-SCORE         => $score,
+                                   );
+
+
+  Description: Constructor for SegmentationFeature objects.
+  Returntype : Bio::EnsEMBL::Funcgen::SegmentationFeature
+  Exceptions : None
+  Caller     : General
+  Status     : Medium Risk
+
+=cut
+
+sub new {
+  my $caller = shift;
+	
+  my $class = ref($caller) || $caller;
+  my $self = $class->SUPER::new(@_);
+  #Hard code strand => 0 here? And remove from input params?
+  my ($score, $ftype) = rearrange(['SCORE', 'FEATURE_TYPE'], @_);
+
+  #test ftype as SetFeature method defaults to feature_set->feature_type
+  throw('You must pass a valid FeatureType') if ! defined $ftype;
+
+  $self->{score} = $score if $score;
+  $self->{feature_type} = $ftype;
+	
+  return $self;
+}
+
+
+=head2 score
+
+  Arg [1]    : (optional) int - score
+  Example    : my $score = $feature->score();
+  Description: Getter and setter for the score attribute for this feature. 
+  Returntype : int
+  Exceptions : None
+  Caller     : General
+  Status     : At Risk
+
+=cut
+
+sub score {
+  my $self = shift;		
+  return $self->{'score'};
+}
+
+
+=head2 display_label
+
+  Example    : my $label = $feature->display_label();
+  Description: Getter for the display label of this feature.
+  Returntype : String
+  Exceptions : None
+  Caller     : General
+  Status     : At Risk
+
+=cut
+
+sub display_label {
+  my $self = shift;
+  
+  if(! $self->{'display_label'}  && $self->adaptor){
+	$self->{'display_label'} = $self->feature_type->name()." -";
+	$self->{'display_label'} .= " ".$self->cell_type->name();
+  }
+  
+  return $self->{'display_label'};
+}
+
+
+1;
+