Raw content of Bio::EnsEMBL::Analysis::Tools::GeneBuildUtils
=head1 NAME
Bio::EnsEMBL::Analysis::Tools::GeneBuildUtils - base class for
genebuild utility methods
=head1 SYNOPSIS
use Bio::EnsEMBL::Analysis::Tools::GeneBuildUtils qw(coord_string id
empty_Object);
or
use Bio::EnsEMBL::Analysis::Tools::GeneBuildUtils
to get all methods
=head1 DESCRIPTION
This is a base class for Utility modules for genebuilding and
other gene manupulation code. This module probably wont be used
direct outside of these classes but it can been if needed
It provides some simple functionality that all of the utility
modules need like id, to provide a sensible id string or
coord string to provide a basic, start, end, strand,
seq_region_name string for printing or removing databases connections
from objects
These modules are heavily based on the Utils modules which
can be found in EnsEMBL::Analysis::Pipeline::Tools
=head1 CONTACT
please send any questions to ensembl-dev@ebi.ac.uk
=head1 METHODS
the rest of the documention details the exported static
class methods
=cut
package Bio::EnsEMBL::Analysis::Tools::GeneBuildUtils;
use strict;
use warnings;
use Exporter;
use Bio::EnsEMBL::Utils::Exception qw(verbose throw warning
stack_trace_dump);
use vars qw (@ISA @EXPORT);
@ISA = qw(Exporter);
@EXPORT = qw(coord_string id empty_Object lies_inside_of_slice);
=head2 coord_string
Arg [1] : Bio::EnsEMBL::Feature
Function : returns a string with the start, end, strand
and slice name that the feature is on delimited by spaces
Returntype: string
Exceptions: throws if no feature is passed in
Example :
=cut
sub coord_string{
my $feature = shift;
my ($p, $f, $l) = caller;
throw("Must be passed a feature") if(!$feature);
my $string = $feature->start."\t".$feature->end."\t".$feature->strand."\t".$feature->slice->seq_region_name;
return $string;
}
=head2 id
Arg [1] : Bio::EnsEMBL::Feature
Function : returns a string containing an appropriate label
for the feature
Returntype: string
Exceptions: none
Example :
=cut
sub id {
my $feature = shift;
my $id;
if($feature->can('stable_id') && $feature->stable_id){
$id = $feature->stable_id;
}elsif($feature->can('dbID') && $feature->dbID) {
$id = $feature->dbID;
}else{
$id = 'no-id';
}
if($feature->can('biotype') && $feature->biotype){
$id .= "_".$feature->biotype;
}
return $id;
}
=head2 empty_Object
Arg [1] : Bio::EnsEMBL::Storeable or an object which inherits from it
Arg [2] : Boolean, whether to remove the stable id from the given object
Function : remove the dbID, adaptor and if appropriate the stable id
Returntype: Bio::EnsEMBL::Storeable
Exceptions: n/a
Example : empty_Object($object);
=cut
sub empty_Object{
my ($object, $include_stable_id) = @_;
$object->adaptor(undef);
$object->dbID(undef);
$object->stable_id(undef) if($object->can("stable_id") &&
$include_stable_id);
return $object;
}
=head2 lies_inside_of_slice
Arg [1] : Bio::EnsEMBL::Feature
Arg [2] : Bio::EnsEMBL::Slice
Function : ensures the transcript within the slice,
completely on the lower end, it can overhang the upper end
Returntype: boolean, 1 for pass 0 for fail ie(lies outside
of slice or
across lower
boundary)
Exceptions: none
Example :
=cut
sub lies_inside_of_slice{
my ($feature, $slice) = @_;
if($feature->start > $slice->length ||
$feature->end < 1){
warning(id($feature)." lies off edge if slice ".
$slice->name);
return 0;
}
if($feature->start < 1 && $feature->end > 1){
warning(id($feature)." lies over lower boundary".
" of slice ".$slice->name);
return 0;
}
return 1;
}
1;