annotate variant_effect_predictor/Bio/EnsEMBL/MappedSlice.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::MappedSlice - an object representing a mapped slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 # get a reference slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $slice_adaptor->fetch_by_region( 'chromosome', 14, 900000, 950000 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 # create MappedSliceContainer based on the reference slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 my $msc = Bio::EnsEMBL::MappedSliceContainer->new( -SLICE => $slice );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 # set the adaptor for fetching AssemblySlices
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 my $asa = $slice->adaptor->db->get_AssemblySliceAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $msc->set_AssemblySliceAdaptor($asa);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 # add an AssemblySlice to your MappedSliceContainer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 $msc->attach_AssemblySlice('NCBIM36');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 foreach my $mapped_slice ( @{ $msc->get_all_MappedSlices } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 print $mapped_slice->name, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 foreach my $sf ( @{ $mapped_slice->get_all_SimpleFeatures } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 print " ", &to_string($sf), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 NOTE: this code is under development and not fully functional nor tested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 yet. Use only for development.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 This object represents a mapped slice, i.e. a slice that's attached
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 to a reference slice and a mapper to convert coordinates to/from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 reference. The attachment is done via a MappedSliceContainer which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 has the reference slice and the "container slice" defining the common
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 coordinate system for all MappedSlices.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 A MappedSlice is supposed to behave as close to a Bio::EnsEMBL::Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 as possible. Most Slice methods are implemented in MappedSlice and will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 return an equivalent value to what Slice does. There are some exceptions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 of unimplemented methods, either because there is no useful equivalent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 for a MappedSlice to do, or they are too complicated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Not supported Bio::EnsEMBL::Slice methods:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 All deprecated methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 All Bio::PrimarySeqI compliance methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 expand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 get_generic_features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 get_seq_region_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 seq_region_Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Not currently supported but maybe should/could:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 calculate_pi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 calculate_theta
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 get_base_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 get_by_Individual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 get_by_strain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 invert
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Internally, a MappedSlice is a collection of Bio::EnsEMBL::Slices and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 associated Bio::EnsEMBL::Mappers which map the slices to the common
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 container coordinate system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 MappedSlices are usually created and attached to a MappedSliceContainer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 by an adaptor/factory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 add_Slice_Mapper_pair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 get_all_Slice_Mapper_pairs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 container
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 seq_region_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 seq_region_length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 centrepoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 coord_system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 coord_system_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 is_toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 seq (not implemented yet)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 subseq (not implemented yet)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 get_repeatmasked_seq (not implemented yet)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 sub_MappedSlice (not implemented yet)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 project (not implemented yet)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 =head1 RELATED MODULES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Bio::EnsEMBL::MappedSlice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Bio::EnsEMBL::DBSQL::AssemblySliceAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Bio::EnsEMBL::Compara::AlignSlice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Bio::EnsEMBL::Compara::AlignSlice::Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 Bio::EnsEMBL::AlignStrainSlice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Bio::EnsEMBL::StrainSlice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 package Bio::EnsEMBL::MappedSlice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 no warnings 'uninitialized';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 use Bio::EnsEMBL::Utils::Exception qw(throw warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 use Bio::EnsEMBL::Mapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 use Scalar::Util qw(weaken);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 use vars qw($AUTOLOAD);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Arg [ADAPTOR] : Adaptor $adaptor - an adaptor of the appropriate type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Arg [CONTAINER] : Bio::EnsEMBL::MappedSliceContainer $container - the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 container this MappedSlice is attached to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Arg [NAME] : String $name - name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Example : my $mapped_slice = Bio::EnsEMBL::MappedSlice->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 -ADAPTOR => $adaptor,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 -CONTAINER => $container,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 -NAME => $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 Description : Constructor. Usually you won't call this method manually, but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 the MappedSlice will be constructed by an adaptor/factory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Return type : Bio::EnsEMBL::MappedSlice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 Exceptions : thrown on wrong or missing arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Caller : general, MappedSlice adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 my ($adaptor, $container, $name) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 rearrange([qw(ADAPTOR CONTAINER NAME)], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 # arguement check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 unless ($container and ref($container) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 $container->isa('Bio::EnsEMBL::MappedSliceContainer')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 throw("Need a MappedSliceContainer.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my $self = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 bless ($self, $class);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 # initialise object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 # need to weaken reference to prevent circular reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 weaken($self->{'container'} = $container);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 $self->adaptor($adaptor) if (defined($adaptor));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $self->{'name'} = $name if (defined($name));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 $self->{'slice_mapper_pairs'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 =head2 add_Slice_Mapper_pair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Arg[1] : Bio::EnsEMBL::Slice $slice - slice to add
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 Arg[2] : Bio::EnsEMBL::Mapper $mapper - the mapper for this slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Example : $mapped_slice->add_Slice_Mapper_pair($slice, $mapper);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 Description : Adds a native slice and a corresponding mapper to map to/from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 the artificial container coord system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Return type : listref of Bio::EnsEMBL::MappedSlice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 Exceptions : thrown on wrong or missing arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 Caller : general, MappedSlice adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 sub add_Slice_Mapper_pair {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my $slice = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my $mapper = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 # argument check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 unless ($slice and ref($slice) and ($slice->isa('Bio::EnsEMBL::Slice') or $slice->isa('Bio::EnsEMBL::LRGSlice')) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 throw("You must provide a slice.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 unless ($mapper and ref($mapper) and $mapper->isa('Bio::EnsEMBL::Mapper')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 throw("You must provide a mapper.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 push @{ $self->{'slice_mapper_pairs'} }, [ $slice, $mapper ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 return $self->{'slice_mapper_pairs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 =head2 get_all_Slice_Mapper_pairs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Example : foreach my $pair (@{ $self->get_all_Slice_Mapper_pairs }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 my ($slice, $mapper) = @$pair;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 # get container coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 my @coords = $mapper->map_coordinates(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $slice->seq_region_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 $slice->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $slice->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $slice->strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 'mapped_slice'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 # ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Description : Gets all Slice/Mapper pairs this MappedSlice is composed of.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Each slice (and features on it) can be mapped onto the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 artificial container coord system using the mapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Return type : listref of listref of a Bio::EnsEMBL::Slice and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Bio::EnsEMBL::Mapper pair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 sub get_all_Slice_Mapper_pairs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 return $self->{'slice_mapper_pairs'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 =head2 adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Arg[1] : (optional) Adaptor $adaptor - the adaptor/factory for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Example : $mapped_slice->adaptor($assembly_slice_adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Description : Getter/setter for the adaptor/factory for this object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Return type : Adaptor of appropriate type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 sub adaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 weaken($self->{'adaptor'} = shift) if (@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 return $self->{'adaptor'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 =head2 container
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Arg[1] : (optional) Bio::EnsEMBL::MappedSliceContainer - the container
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 this object is attached to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Example : my $container = $mapped_slice->container;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 print $container->ref_slice->name, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Description : Getter/setter for the container this object is attached to. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 container will give you access to the reference slice, a common
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 artificial container slice, and a mapper to map to it from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 container coord system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 The implementation uses a weak reference to attach the container
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 since the container holds a list of MappedSlices itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 Return type : Bio::EnsEMBL::MappedSliceContainer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 sub container {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 weaken($self->{'container'} = shift) if (@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 return $self->{'container'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 =head2 name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 Arg[1] : String - the name of this object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 Example : my $name = $mapped_slice->container->ref_slice->name .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 ":mapped_" . $ident_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $mapped_slice->name($name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Description : Getter/setter for this object's name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Return type : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 sub name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $self->{'name'} = shift if (@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 return $self->{'name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 =head2 seq_region_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 Example : my $sr_name = $mapped_slice->seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 Description : Returns the seq_region name of the reference slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Return type : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 sub seq_region_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 return $self->container->ref_slice->seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 =head2 start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 Example : my $start = $mapped_slice->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 Description : Returns the start of the container slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 sub start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 return $self->container->container_slice->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 =head2 end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 Example : my $end = $mapped_slice->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 Description : Returns the end of the container slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 sub end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 return $self->container->container_slice->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 =head2 strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Example : my $strand = $mapped_slice->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 Description : Returns the strand of the container slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 sub strand {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 return $self->container->container_slice->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 =head2 length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 Example : my $length = $mapped_slice->length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 Description : Returns the length of the container slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 sub length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 return $self->container->container_slice->length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 =head2 seq_region_length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 Example : my $sr_length = $mapped_slice->seq_region_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 Description : Returns the seq_region length of the reference slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 sub seq_region_length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 return $self->container->ref_slice->seq_region_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 =head2 centrepoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 Example : my $centrepoint = $mapped_slice->centrepoint;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 Description : Returns the centrepoint of the container slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 sub centrepoint {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 return $self->container->container_slice->centrepoint;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 =head2 coord_system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Example : my $cs = $mapped_slice->coord_system;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 Description : Returns the coord system of the container slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 Return type : Bio::EnsEMBL::CoordSystem
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 sub coord_system {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 return $self->container->container_slice->coord_system;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 =head2 coord_system_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Example : my $cs_name = $mapped_slice->coord_system_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 Description : Returns the coord system name of the container slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 sub coord_system_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 return $self->container->container_slice->coord_system_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 =head2 is_toplevel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 Example : my $toplevel_flag = $mapped_slice->is_toplevel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 Description : Returns weather the container slice is toplevel.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 Return type : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 sub is_toplevel {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 return $self->container->container_slice->is_toplevel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 =head2 seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 Example : my $seq = $mapped_slice->seq()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 Description : Retrieves the expanded sequence of this mapped slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 including "-" characters where there are inserts in any other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 mapped slices. This will align with the sequence returned by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 the container's seq() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 Return type : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 sub seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 # create an empty string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 my $ms_seq = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 # this coord represents the current position in the MS sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 my $start = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 # get slice/mapper pairs from mapped slice (usually only one anyway)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 foreach my $pair(@{$self->get_all_Slice_Mapper_pairs()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 my ($s, $m) = @$pair;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 # make sure to send extra args
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 # eg strain slices might need read coverage filtering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 my $seq = $s->seq(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 # project from mapped slice to reference slice using the mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 foreach my $ref_coord($m->map_coordinates('mapped_slice', 1, CORE::length($seq), $s->strand, 'mapped_slice')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 # normal coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 if(!$ref_coord->isa('Bio::EnsEMBL::Mapper::IndelCoordinate') && !$ref_coord->isa('Bio::EnsEMBL::Mapper::Gap')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 # project from reference slice to container slice using the container's mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 foreach my $ms_coord($self->container->mapper->map_coordinates($self->container->ref_slice->seq_region_name, $ref_coord->start, $ref_coord->end, $ref_coord->strand, 'ref_slice')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 # normal coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 if(!$ms_coord->isa('Bio::EnsEMBL::Mapper::IndelCoordinate') && !$ms_coord->isa('Bio::EnsEMBL::Mapper::Gap')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 $ms_seq .= substr($seq, $start, $ms_coord->length);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 $start += $ms_coord->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 # indel coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 $ms_seq .= '-' x $ms_coord->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 # indel / gap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 # if there's a gap here aswell, add corresponding sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 if($ref_coord->gap_length > 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 $ms_seq .= substr($seq, $start, $ref_coord->gap_length);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 $start += $ref_coord->gap_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 # add "-" to the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 $ms_seq .= '-' x ($ref_coord->length() - $ref_coord->gap_length());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 return $ms_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 sub subseq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 sub get_repeatmasked_seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 sub sub_MappedSlice {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 sub project {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 =head2 AUTOLOAD
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 Arg[1..N] : Arguments passed on to the calls on the underlying slices.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 Example : my @simple_features = @{ $mapped_slice->get_all_SimpleFeatures };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 Description : Aggregate data gathered from composing Slices.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 This will call Slice->get_all_* and combine the results.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 Coordinates will be transformed to be on the container slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 coordinate system.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 Calls involving DAS features are skipped since the DAS adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 handles coordinate conversions natively.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 Return type : listref of features (same type as corresponding Slice method)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 : under development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 sub AUTOLOAD {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 my $method = $AUTOLOAD;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 $method =~ s/.*:://;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 # AUTOLOAD should only deal with get_all_* methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 return unless ($method =~ /^get_all_/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 # skip DAS methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 return if ($method =~ /DAS/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 my @mapped_features = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 foreach my $pair (@{ $self->get_all_Slice_Mapper_pairs }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 my ($slice, $mapper) = @$pair;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 #warn $slice->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 # call $method on each native slice composing the MappedSlice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 my @features = @{ $slice->$method(@_) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 # map features onto the artificial container coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 foreach my $f (@features) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 my @coords = $mapper->map_coordinates(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 $f->slice->seq_region_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 $f->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 $f->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 $f->strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 'mapped_slice'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 # sanity check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 if (scalar(@coords) > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 warning("Got more than one Coordinate returned, expected only one!\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 $f->start($coords[0]->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 $f->end($coords[0]->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 $f->strand($coords[0]->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 $f->slice($self->container->container_slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 push @mapped_features, $f;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 return \@mapped_features;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668