Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/EnsEMBL/Funcgen/ExternalFeature.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/ExternalFeature.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,160 @@ +# +# Ensembl module for Bio::EnsEMBL::Funcgen::ExternalFeature +# + + +=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::ExternalFeature - A module to represent an externally curated feature +mapping from an external_db. + +=head1 SYNOPSIS + +use Bio::EnsEMBL::Funcgen::ExternalFeature; + +my $feature = Bio::EnsEMBL::Funcgen::ExternalFeature->new( + -SLICE => $chr_1_slice, + -START => 1_000_000, + -END => 1_000_024, + -STRAND => -1, + -DISPLAY_LABEL => $text, + -FEATURE_SET => $fset, + -FEATURE_TYPE => $ftype, +); + + + +=head1 DESCRIPTION + +An ExternalFeature object represents the genomic placement of an externally curated +feature from and DB external to Ensembl. + +=cut + +use strict; +use warnings; + +package Bio::EnsEMBL::Funcgen::ExternalFeature; + +use Bio::EnsEMBL::Utils::Argument qw( rearrange ); +use Bio::EnsEMBL::Utils::Exception qw( throw ); +use Bio::EnsEMBL::Funcgen::SetFeature; +use Bio::EnsEMBL::Funcgen::FeatureType; + +use vars qw(@ISA); +@ISA = qw(Bio::EnsEMBL::Funcgen::SetFeature); + + +=head2 new + + + Arg [-FEATURE_SET] : Bio::EnsEMBL::Funcgen::FeatureSet + Arg [-FEATURE_TYPE] : Bio::EnsEMBL::Funcgen::FeatureType + Arg [-ANALYSIS] : Bio::EnsEMBL::Analysis + 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 [-DISPLAY_LABEL]: string - Display label for this feature + Arg [-STRAND] : int - The orientation of this feature. Valid values are 1, -1 and 0. + Arg [-dbID] : (optional) int - Internal database ID. + Arg [-ADAPTOR] : (optional) Bio::EnsEMBL::DBSQL::BaseAdaptor - Database adaptor. + Example : my $feature = Bio::EnsEMBL::Funcgen::ExternalFeature->new( + -SLICE => $chr_1_slice, + -START => 1_000_000, + -END => 1_000_024, + -STRAND => -1, + -DISPLAY_LABEL => $text, + -FEATURE_SET => $fset, + -FEATURE_TYPE => $ftpe, + ); + + + Description: Constructor for ExternalFeature objects. + Returntype : Bio::EnsEMBL::Funcgen::ExternalFeature + Exceptions : None + Caller : General + Status : At Risk + +=cut + +sub new { + my $caller = shift; + + my $class = ref($caller) || $caller; + my $self = $class->SUPER::new(@_); + + #Remove this method if we interdb_stable_id to SetFeature + ($self->{'interdb_stable_id'}) = rearrange(['INTERDB_STABLE_ID'], @_); + + return $self; +} + +=head2 interdb_stable_id + + Arg [1] : (optional) int - stable_id e.g 1 + Example : my $idb_sid = $feature->interdb_stable_id(); + Description: Getter for the interdb_stable_id attribute for this feature. + This is simply to avoid using internal db IDs for inter DB linking + Returntype : int + Exceptions : None + Caller : General + Status : At Risk + +=cut + +sub interdb_stable_id { + return $_[0]->{'interdb_stable_id'}; +} + + + + +=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 : Medium risk + +=cut + +sub display_label { + my $self = shift; + + if(! $self->{'display_label'} && $self->adaptor){ + + $self->{'display_label'} = $self->feature_set->feature_type->name().' - '; + $self->{'display_label'} .= $self->cell_type->name() if $self->cell_type(); + $self->{'display_label'} .= $self->feature_type->name() if(defined $self->{'feature_type'}); + } + + return $self->{'display_label'}; +} + + + +1; +