Bio::EnsEMBL::Funcgen SetFeature
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::EnsEMBL::Funcgen::SetFeature - Ensembl specific set feature.
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::Feature
Bio::EnsEMBL::Funcgen::Storable
Bio::EnsEMBL::Utils::Argument qw ( rearrange )
Bio::EnsEMBL::Utils::Exception qw ( throw deprecate warning )
Inherit
Bio::EnsEMBL::Feature Bio::EnsEMBL::Funcgen::Storable
Synopsis
    my $feat = new Bio::EnsEMBL::Feature(-start         => 100,
-end => 220,
-strand => -1,
-slice => $slice,
-feature_set => $fset,
-display_label => $label,
);
my $start = $feat->start; my $end = $feat->end; my $strand = $feat->strand; #move the feature to the chromosomal coordinate system $feature = $feature->transform('chromosome'); #move the feature to a different slice (possibly on another coord system) $feature = $feature->transfer($new_slice); #project the feature onto another coordinate system possibly across #boundaries: @projection = @{$feature->project('contig')}; #change the start, end, and strand of the feature in place $feature->move($new_start, $new_end, $new_strand);
Description
This is a simple wrapper method for the core Feature class to contain common generic
Funcgen SetFeature methods.
Methods
analysisDescriptionCode
associated_feature_typesDescriptionCode
cell_typeDescriptionCode
feature_setDescriptionCode
feature_typeDescriptionCode
newDescriptionCode
new_fastDescriptionCode
Methods description
analysiscode    nextTop
  Example    : my $analysis = $efeature->feature_type()->name();
Description: Getter for the type attribute for this feature.
Returntype : Bio:EnsEMBL::Funcgen::FeatureType
Exceptions : Throws if analysis passed is not a valid Bio::EnsEMBL::Analysis
Caller : General
Status : At risk
associated_feature_typescodeprevnextTop
  Example    : my @associated_ftypes = @{$feature->associated_feature_types()};
Description: Getter/Setter for other associated FeatureTypes.
Returntype : ARRAYREF of Bio::EnsEMBL::Funcgen:FeatureType objects
Exceptions : None
Caller : General
Status : At risk
cell_typecodeprevnextTop
  Example    : my $cell_name = $efeature->cell_type()->name();
Description: Getter for the cell_type attribute for this feature.
May not always be set for ExternalFeatures.
Returntype : Bio::EnsEMBL::Funcgen:CellType
Exceptions : None
Caller : General
Status : At risk
feature_setcodeprevnextTop
  Arg [1]    : (optional) Bio::EnsEMBL::FeatureSet 
Example : $efeature->feature_set($fset);
Description: Getter for the FeatureSet attribute for this feature.
Returntype : Bio::EnsEMBL::Funcgen::FeatureSet
Exceptions : None
Caller : General
Status : At Risk
feature_typecodeprevnextTop
  Example    : my $ft_name = $efeature->feature_type()->name();
Description: Getter for the feature_type attribute for this feature.
Returntype : Bio::EnsEMBL::Funcgen:FeatureType
Exceptions : None
Caller : General
Status : At risk
newcodeprevnextTop
  Arg [-FEATURE_SET]  : Bio::EnsEMBL::Funcgen::FeatureSet
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::AnnotatedFeature->new(
-SLICE => $chr_1_slice,
-START => 1_000_000,
-END => 1_000_024,
http://www.hinxton.wellcome.ac.uk/onsite/menus/index.html -STRAND => -1,
-DISPLAY_LABEL => $text,
-FEATURE_SET => $fset,
);
Description: Constructor for SetFeature objects. Should never be called directly, only by children. Returntype : Bio::EnsEMBL::Funcgen::SetFeature Exceptions : None Caller : General Status : At Risk
new_fastcodeprevnextTop
  Args       : Hashref with all internal attributes set
Example : none
Description: Quick and dirty version of new. Only works if the calling code
is very disciplined.
Returntype : Bio::EnsEMBL::Funcgen::SetFeature
Exceptions : None
Caller : General
Status : At Risk
Methods code
analysisdescriptionprevnextTop
sub analysis {
  my $self = shift;


  #this is to allow multi analysis sets, but the adaptor currently  throws if they are not the same on store
if(@_){ if($_[0]->isa("Bio::EnsEMBL::Analysis")){ $self->{'analysis'} = $_[0]; }else{ throw("Must pass a valid Bio::EnsEMBL::Analysis"); } } return (defined $self->{'analysis'}) ? $self->{'analysis'} : $self->feature_set->analysis(); } #These DBEntry methods should really be in Funcgen::Storable to support FeatureType xrefs
#However, eFG SetFeatures are not eFG Storables, rather they inherit directly from Ensembl::Feature
#This causes inheritance problems, and we don't need the eFG Storable methods for Features.
#Cater for FeatureTypes separately for now as we may remove DBEntries for these at some point.
#And currently not used anywhere in the website??? Current xrefs are fly BioTIFFIN motif xrefs to FlyBase coding gene names?
1;
}
associated_feature_typesdescriptionprevnextTop
sub associated_feature_types {
  my ($self, $ftypes) = @_;
  

  #Lazy load as we don't want to have to do a join on all features when most will not have any
#How are we going to retrieve these?
#We don't really want to join on associated_feature_type for every feature query as very few will have them.
#Could use FeatureTypeAdaptor->fetch_by_associated_Feature
#But would have to do join again everytime unless we have a separate query
#Don't want a separate adaptor
#May aswell do separate query here for now, and just use the FeatureTypeAdaptor->fetch_by_dbID();
#Can we not use generic_fetch with an in constraint?
#The fetch should really be implemented in FeatureTypeAdaptor
#
#Should we split this into an add and a get method?
#Need to split this?
if(defined $ftypes){ if(ref($ftypes) eq 'ARRAY'){ foreach my $ftype(@$ftypes){ #Can we do this if it is not yet stored?
#This cannot be tested here as the SetFeature may not have an adaptor
#Test here not useing method or wait until store?
if( ! $ftype->isa('Bio::EnsEMBL::Funcgen::FeatureType') ){ throw('You must pass and ARRAYREF of stored Bio::EnsEMBL::Funcgen::FeatureType objects'); } } if(defined $self->{'associated_feature_types'}){ warn('You are overwriting associated feature types'); #we could simply add the new ones and make them NR.
} $self->{'associated_feature_types'} = $ftypes; } else{ throw('You must pass and ARRAYREF of stored Bio::EnsEMBL::Funcgen::FeatureType objects'); } } if(! defined $self->{'associated_feature_types'}){ #This will fail if we have not stored yet
if(defined $self->adaptor){ $self->{'associated_feature_types'} = $self->adaptor->db->get_FeatureTypeAdaptor->fetch_all_by_associated_SetFeature($self); } } #This has the potential to return undef, or an arrayref which may be empty.
return $self->{'associated_feature_types'}; } #redefined from Feature to use FeatureSet, unless specifically set
}
cell_typedescriptionprevnextTop
sub cell_type {
	my $self = shift;

	return $self->feature_set->cell_type();
}
feature_setdescriptionprevnextTop
sub feature_set {
  my $self = shift;

  return $self->{'feature_set'};
}
feature_typedescriptionprevnextTop
sub feature_type {
  my $self = shift;
  
  #why is this not a setter?
#this should only be set in new
return (defined $self->{'feature_type'}) ? $self->{'feature_type'} : $self->feature_set->feature_type();
}
newdescriptionprevnextTop
sub new {
  my $caller = shift;
	
  my $class = ref($caller) || $caller;

  my $self = $class->SUPER::new(@_);
  
  my ($display_label, $fset, $ftype, $assoc_ftypes)
    = rearrange(['DISPLAY_LABEL', 'FEATURE_SET', 'FEATURE_TYPE', 'ASSOCIATED_FEATURE_TYPES'], @_);


  if($ftype){

	if(! (ref($ftype) && $ftype->isa('Bio::EnsEMBL::Funcgen::FeatureType'))){
	  throw('feature_type param must be a valid Bio::EnsEMBL::Funcgen::FeatureType');
	}

	$self->{'feature_type'} = $ftype;
  }

  if(! (ref($fset) && $fset->isa("Bio::EnsEMBL::Funcgen::FeatureSet"))){
	throw("Must pass valid Bio::EnsEMBL::Funcgen::FeatureSet object");
  }


  $self->{'feature_set'}= $fset;

  #Do not move this as it depends on the above being set
$self->display_label($display_label) if $display_label; $self->associated_feature_types($assoc_ftypes) if(defined $assoc_ftypes); return $self;
}
new_fastdescriptionprevnextTop
sub new_fast {
  return bless ($_[1], $_[0]);
}
General documentation
CONTACTTop
Post questions to the Ensembl development list: ensembl-dev@ebi.ac.uk