Skip to content
Snippets Groups Projects
Commit 7ed68160 authored by Daniel Rios's avatar Daniel Rios
Browse files

code to get LRG from database and store in a MappedSliceContainer

parent b365a33e
No related branches found
No related tags found
No related merge requests found
......@@ -131,7 +131,7 @@ sub fetch_by_version {
my $mapped_slice = Bio::EnsEMBL::MappedSlice->new(
-ADAPTOR => $self,
-CONTAINER => $container,
-NAME => $slice->name.":mapped_$version",
-NAME => $slice->name."\#mapped_$version",
);
my $cs_name = $slice->coord_system_name;
......@@ -162,5 +162,75 @@ sub fetch_by_version {
}
=head2 fetch_by_name
Arg[1] : Bio::EnsEMBL::MappedSliceContainer $container - the container
to attach MappedSlices to
Arg[2] : String $name - the assembly name to fetch
Arg[3] : (optional) String $version -- the version for the new assembly
Example : my ($mapped_slice) = @{ $msc->fetch_by_name('LRG1','1') };
Description : Creates a MappedSlice representing an alternative assembly
version of the container's reference slice.
Return type : listref of Bio::EnsEMBL::MappedSlice
Exceptions : thrown on wrong or missing arguments
Caller : general, Bio::EnsEMBL::MappedSliceContainer
Status : At Risk
: under development
=cut
sub fetch_by_name {
my $self = shift;
my $container = shift;
my $name = shift;
my $version = shift;
# arguement check
unless ($container and ref($container) and
$container->isa('Bio::EnsEMBL::MappedSliceContainer')) {
throw("Need a MappedSliceContainer.");
}
unless ($name) {
throw("Need an assembly name.");
}
$version ||= '';
my $slice = $container->ref_slice;
# project slice onto other assembly and construct MappedSlice for result
my $mapped_slice = Bio::EnsEMBL::MappedSlice->new(
-ADAPTOR => $self,
-CONTAINER => $container,
-NAME => $slice->name."\#mapped_$name:$version",
);
foreach my $seg (@{ $slice->project($name, $version) }) {
my $proj_slice = $seg->to_Slice;
# create a Mapper to map to/from the mapped_slice artificial coord system
my $mapper = Bio::EnsEMBL::Mapper->new('mapped_slice', 'native_slice');
# tell the mapper how to map this segment
$mapper->add_map_coordinates(
'mapped_slice',
$seg->from_start,
$seg->from_end,
($slice->strand * $proj_slice->strand),
$proj_slice->seq_region_name,
$proj_slice->start,
$proj_slice->end
);
# add the Slice/Mapper pair to the MappedSlice
$mapped_slice->add_Slice_Mapper_pair($proj_slice, $mapper);
}
return [$mapped_slice];
}
1;
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment