Bio::EnsEMBL
MappedSlice
Toolbar
Summary
Bio::EnsEMBL::MappedSlice - an object representing a mapped slice
Package variables
No package variables defined.
Included modules
Scalar::Util qw ( weaken )
Synopsis
# get a reference slice
my $slice =
$slice_adaptor->fetch_by_region( 'chromosome', 14, 900000, 950000 );
# create MappedSliceContainer based on the reference slice
my $msc = Bio::EnsEMBL::MappedSliceContainer->new( -SLICE => $slice );
# set the adaptor for fetching AssemblySlices
my $asa = $slice->adaptor->db->get_AssemblySliceAdaptor;
$msc->set_AssemblySliceAdaptor($asa);
# add an AssemblySlice to your MappedSliceContainer
$msc->attach_AssemblySlice('NCBIM36');
foreach my $mapped_slice ( @{ $msc->get_all_MappedSlices } ) {
print $mapped_slice->name, "\n";
foreach my $sf ( @{ $mapped_slice->get_all_SimpleFeatures } ) {
print " ", &to_string($sf), "\n";
}
}
Description
NOTE: this code is under development and not fully functional nor tested
yet. Use only for development.
This object represents a mapped slice, i.e. a slice that's attached
to a reference slice and a mapper to convert coordinates to/from the
reference. The attachment is done via a MappedSliceContainer which
has the reference slice and the "container slice" defining the common
coordinate system for all MappedSlices.
A MappedSlice is supposed to behave as close to a Bio::EnsEMBL::Slice
as possible. Most Slice methods are implemented in MappedSlice and will
return an equivalent value to what Slice does. There are some exceptions
of unimplemented methods, either because there is no useful equivalent
for a MappedSlice to do, or they are too complicated.
Not supported Bio::EnsEMBL::Slice methods:
All deprecated methods
All Bio::PrimarySeqI compliance methods
expand
get_generic_features
get_seq_region_id
seq_region_Slice
Not currently supported but maybe should/could:
calculate_pi
calculate_theta
get_base_count
get_by_Individual
get_by_strain
invert
Internally, a MappedSlice is a collection of Bio::EnsEMBL::Slices and
associated Bio::EnsEMBL::Mappers which map the slices to the common
container coordinate system.
MappedSlices are usually created and attached to a MappedSliceContainer
by an adaptor/factory.
Methods
Methods description
Arg[1..N] : Arguments passed on to the calls on the underlying slices. Example : my @simple_features = @{ $mapped_slice->get_all_SimpleFeatures }; Description : Aggregate data gathered from composing Slices. This will call Slice->get_all_* and combine the results. Coordinates will be transformed to be on the container slice coordinate system.
Calls involving DAS features are skipped since the DAS adaptor
handles coordinate conversions natively.
Return type : listref of features (same type as corresponding Slice method)
Exceptions : none
Caller : general
Status : At Risk
: under development |
Arg[1] : (optional) Adaptor $adaptor - the adaptor/factory for this object Example : $mapped_slice->adaptor($assembly_slice_adaptor); Description : Getter/setter for the adaptor/factory for this object. Return type : Adaptor of appropriate type Exceptions : none Caller : general Status : At Risk : under development |
Arg[1] : Bio::EnsEMBL::Slice $slice - slice to add Arg[2] : Bio::EnsEMBL::Mapper $mapper - the mapper for this slice Example : $mapped_slice->add_Slice_Mapper_pair($slice, $mapper); Description : Adds a native slice and a corresponding mapper to map to/from the artificial container coord system. Return type : listref of Bio::EnsEMBL::MappedSlice Exceptions : thrown on wrong or missing arguments Caller : general, MappedSlice adaptors Status : At Risk : under development |
Example : my $centrepoint = $mapped_slice->centrepoint; Description : Returns the centrepoint of the container slice. Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Arg[1] : (optional) Bio::EnsEMBL::MappedSliceContainer - the container this object is attached to Example : my $container = $mapped_slice->container; print $container->ref_slice->name, "\n"; Description : Getter/setter for the container this object is attached to. The container will give you access to the reference slice, a common artificial container slice, and a mapper to map to it from the container coord system.
The implementation uses a weak reference to attach the container
since the container holds a list of MappedSlices itself.
Return type : Bio::EnsEMBL::MappedSliceContainer
Exceptions : none
Caller : general
Status : At Risk
: under development |
Example : my $cs = $mapped_slice->coord_system; Description : Returns the coord system of the container slice. Return type : Bio::EnsEMBL::CoordSystem Exceptions : none Caller : general Status : At Risk : under development |
Example : my $cs_name = $mapped_slice->coord_system_name; Description : Returns the coord system name of the container slice. Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Example : my $end = $mapped_slice->end; Description : Returns the end of the container slice. Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Example : foreach my $pair (@{ $self->get_all_Slice_Mapper_pairs }) { my ($slice, $mapper) = @$pair;
# get container coordinates
my @coords = $mapper->map_coordinates(
$slice->seq_region_name,
$slice->start,
$slice->end,
$slice->strand,
'mapped_slice'
);
# ....
}
Description : Gets all Slice/Mapper pairs this MappedSlice is composed of.
Each slice (and features on it) can be mapped onto the
artificial container coord system using the mapper.
Return type : listref of listref of a Bio::EnsEMBL::Slice and
Bio::EnsEMBL::Mapper pair
Exceptions : none
Caller : general
Status : At Risk
: under development |
Example : my $toplevel_flag = $mapped_slice->is_toplevel; Description : Returns weather the container slice is toplevel. Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Example : my $length = $mapped_slice->length; Description : Returns the length of the container slice Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Arg[1] : String - the name of this object Example : my $name = $mapped_slice->container->ref_slice->name . ":mapped_" . $ident_string; $mapped_slice->name($name); Description : Getter/setter for this object's name Return type : String Exceptions : none Caller : general Status : At Risk : under development |
Arg [ADAPTOR] : Adaptor $adaptor - an adaptor of the appropriate type Arg [CONTAINER] : Bio::EnsEMBL::MappedSliceContainer $container - the container this MappedSlice is attached to Arg [NAME] : String $name - name Example : my $mapped_slice = Bio::EnsEMBL::MappedSlice->new( -ADAPTOR => $adaptor, -CONTAINER => $container, -NAME => $name, ); Description : Constructor. Usually you won't call this method manually, but the MappedSlice will be constructed by an adaptor/factory. Return type : Bio::EnsEMBL::MappedSlice Exceptions : thrown on wrong or missing arguments Caller : general, MappedSlice adaptors Status : At Risk : under development |
Example : my $sr_length = $mapped_slice->seq_region_length; Description : Returns the seq_region length of the reference slice. Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Example : my $sr_name = $mapped_slice->seq_region_name; Description : Returns the seq_region name of the reference slice. Return type : String Exceptions : none Caller : general Status : At Risk : under development |
Example : my $start = $mapped_slice->start; Description : Returns the start of the container slice. Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Example : my $strand = $mapped_slice->strand; Description : Returns the strand of the container slice. Return type : Int Exceptions : none Caller : general Status : At Risk : under development |
Methods code
sub AUTOLOAD
{ my $self = shift;
my $method = $AUTOLOAD;
$method =~ s/.*:://;
return unless ($method =~ /^get_all_/);
return if ($method =~ /DAS/);
my @mapped_features = ();
foreach my $pair (@{ $self->get_all_Slice_Mapper_pairs }) {
my ($slice, $mapper) = @$pair;
my @features = @{ $slice->$method(@_) };
foreach my $f (@features) {
my @coords = $mapper->map_coordinates(
$f->slice->seq_region_name,
$f->start,
$f->end,
$f->strand,
'mapped_slice'
);
if (scalar(@coords) > 1) {
warning("Got more than one Coordinate returned, expected only one!\n");
}
$f->start($coords[0]->start);
$f->end($coords[0]->end);
$f->strand($coords[0]->strand);
$f->slice($self->container->container_slice);
push @mapped_features, $f;
}
}
return\@ mapped_features;
}
1; } |
sub adaptor
{ my $self = shift;
$self->{'adaptor'} = shift if (@_);
return $self->{'adaptor'}; } |
sub add_Slice_Mapper_pair
{ my $self = shift;
my $slice = shift;
my $mapper = shift;
unless ($slice and ref($slice) and $slice->isa('Bio::EnsEMBL::Slice')) {
throw("You must provide a slice.");
}
unless ($mapper and ref($mapper) and $mapper->isa('Bio::EnsEMBL::Mapper')) {
throw("You must provide a mapper.");
}
push @{ $self->{'slice_mapper_pairs'} }, [ $slice, $mapper ];
return $self->{'slice_mapper_pairs'}; } |
sub centrepoint
{ my $self = shift;
return $self->container->container_slice->centrepoint; } |
sub container
{ my $self = shift;
weaken($self->{'container'} = shift) if (@_);
return $self->{'container'}; } |
sub coord_system
{ my $self = shift;
return $self->container->container_slice->coord_system; } |
sub coord_system_name
{ my $self = shift;
return $self->container->container_slice->coord_system_name; } |
sub end
{ my $self = shift;
return $self->container->container_slice->end; } |
sub get_all_Slice_Mapper_pairs
{ my $self = shift;
return $self->{'slice_mapper_pairs'}; } |
sub get_repeatmasked_seq
{} |
sub is_toplevel
{ my $self = shift;
return $self->container->container_slice->is_toplevel; } |
sub length
{ my $self = shift;
return $self->container->container_slice->length; } |
sub name
{ my $self = shift;
$self->{'name'} = shift if (@_);
return $self->{'name'}; } |
sub new
{ my $caller = shift;
my $class = ref($caller) || $caller;
my ($adaptor, $container, $name) =
rearrange([qw(ADAPTOR CONTAINER NAME)], @_);
unless ($container and ref($container) and
$container->isa('Bio::EnsEMBL::MappedSliceContainer')) {
throw("Need a MappedSliceContainer.");
}
my $self = {};
bless ($self, $class);
weaken($self->{'container'} = $container);
$self->{'adaptor'} = $adaptor if (defined($adaptor));
$self->{'name'} = $name if (defined($name));
$self->{'slice_mapper_pairs'} = [];
return $self; } |
sub project
{} |
sub seq
{} |
sub seq_region_length
{ my $self = shift;
return $self->container->ref_slice->seq_region_length; } |
sub seq_region_name
{ my $self = shift;
return $self->container->ref_slice->seq_region_name; } |
sub start
{ my $self = shift;
return $self->container->container_slice->start; } |
sub strand
{ my $self = shift;
return $self->container->container_slice->strand; } |
sub sub_MappedSlice
{} |
sub subseq
{} |
General documentation
Copyright (c) 1999-2009 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
/info/about/code_licence.html
Bio::EnsEMBL::MappedSlice
Bio::EnsEMBL::DBSQL::AssemblySliceAdaptor
Bio::EnsEMBL::Compara::AlignSlice
Bio::EnsEMBL::Compara::AlignSlice::Slice
Bio::EnsEMBL::AlignStrainSlice
Bio::EnsEMBL::StrainSlice