← Index
NYTProf Performance Profile   « block view • line view • sub view »
For bin/pan_genome_post_analysis
  Run on Fri Mar 27 11:43:32 2015
Reported on Fri Mar 27 11:45:45 2015

Filename/Users/ap13/perl5/lib/perl5/Bio/LocationI.pm
StatementsExecuted 7 statements in 674µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11112µs24µsBio::LocationI::::BEGIN@75Bio::LocationI::BEGIN@75
11112µs2.85msBio::LocationI::::BEGIN@79Bio::LocationI::BEGIN@79
1118µs42µsBio::LocationI::::BEGIN@77Bio::LocationI::BEGIN@77
0000s0sBio::LocationI::::coordinate_policyBio::LocationI::coordinate_policy
0000s0sBio::LocationI::::each_LocationBio::LocationI::each_Location
0000s0sBio::LocationI::::endBio::LocationI::end
0000s0sBio::LocationI::::end_pos_typeBio::LocationI::end_pos_type
0000s0sBio::LocationI::::flip_strandBio::LocationI::flip_strand
0000s0sBio::LocationI::::is_remoteBio::LocationI::is_remote
0000s0sBio::LocationI::::location_typeBio::LocationI::location_type
0000s0sBio::LocationI::::max_endBio::LocationI::max_end
0000s0sBio::LocationI::::max_startBio::LocationI::max_start
0000s0sBio::LocationI::::min_endBio::LocationI::min_end
0000s0sBio::LocationI::::min_startBio::LocationI::min_start
0000s0sBio::LocationI::::seq_idBio::LocationI::seq_id
0000s0sBio::LocationI::::startBio::LocationI::start
0000s0sBio::LocationI::::start_pos_typeBio::LocationI::start_pos_type
0000s0sBio::LocationI::::to_FTstringBio::LocationI::to_FTstring
0000s0sBio::LocationI::::valid_LocationBio::LocationI::valid_Location
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1#
2# BioPerl module for Bio::LocationI
3# Please direct questions and support issues to <bioperl-l@bioperl.org>
4#
5# Cared for by Jason Stajich <jason@bioperl.org>
6#
7# Copyright Jason Stajich
8#
9# You may distribute this module under the same terms as perl itself
10# POD documentation - main docs before the code
11
12=head1 NAME
13
14Bio::LocationI - Abstract interface of a Location on a Sequence
15
16=head1 SYNOPSIS
17
18 # get a LocationI somehow
19 printf( "start = %d, end = %d, strand = %s, seq_id = %s\n",
20 $location->start, $location->end, $location->strand,
21 $location->seq_id);
22 print "location str is ", $location->to_FTstring(), "\n";
23
24
25=head1 DESCRIPTION
26
27This Interface defines the methods for a Bio::LocationI, an object
28which encapsulates a location on a biological sequence. Locations
29need not be attached to actual sequences as they are stand alone
30objects. LocationI objects are used by L<Bio::SeqFeatureI> objects to
31manage and represent locations for a Sequence Feature.
32
33=head1 FEEDBACK
34
35User feedback is an integral part of the evolution of this and other
36Bioperl modules. Send your comments and suggestions preferably to one
37of the Bioperl mailing lists. Your participation is much appreciated.
38
39 bioperl-l@bioperl.org - General discussion
40 http://bioperl.org/wiki/Mailing_lists - About the mailing lists
41
42=head2 Support
43
44Please direct usage questions or support issues to the mailing list:
45
46I<bioperl-l@bioperl.org>
47
48rather than to the module maintainer directly. Many experienced and
49reponsive experts will be able look at the problem and quickly
50address it. Please include a thorough description of the problem
51with code and data examples if at all possible.
52
53=head2 Reporting Bugs
54
55Report bugs to the Bioperl bug tracking system to help us keep track
56the bugs and their resolution. Bug reports can be submitted via the
57web:
58
59 https://github.com/bioperl/bioperl-live/issues
60
61=head1 AUTHOR - Jason Stajich
62
63Email jason-at-bioperl-dot-org
64
65=head1 APPENDIX
66
67The rest of the documentation details each of the object
68methods. Internal methods are usually preceded with a _
69
70=cut
71
72# Let the code begin...
73
74package Bio::LocationI;
75222µs236µs
# spent 24µs (12+12) within Bio::LocationI::BEGIN@75 which was called: # once (12µs+12µs) by base::import at line 75
use strict;
# spent 24µs making 1 call to Bio::LocationI::BEGIN@75 # spent 12µs making 1 call to strict::import
76
77230µs276µs
# spent 42µs (8+34) within Bio::LocationI::BEGIN@77 which was called: # once (8µs+34µs) by base::import at line 77
use Carp;
# spent 42µs making 1 call to Bio::LocationI::BEGIN@77 # spent 34µs making 1 call to Exporter::import
78
792619µs22.85ms
# spent 2.85ms (12µs+2.84) within Bio::LocationI::BEGIN@79 which was called: # once (12µs+2.84ms) by base::import at line 79
use base qw(Bio::RangeI);
# spent 2.85ms making 1 call to Bio::LocationI::BEGIN@79 # spent 2.84ms making 1 call to base::import, recursion: max depth 2, sum of overlapping time 2.84ms
80
81=head2 location_type
82
83 Title : location_type
84 Usage : my $location_type = $location->location_type();
85 Function: Get location type encoded as text
86 Returns : string ('EXACT', 'WITHIN', 'IN-BETWEEN')
87 Args : none
88
89=cut
90
91sub location_type {
92 my ($self,@args) = @_;
93 $self->throw_not_implemented();
94}
95
96=head2 start
97
98 Title : start
99 Usage : $start = $location->start();
100 Function: Get the start coordinate of this location as defined by
101 the currently active coordinate computation policy. In
102 simple cases, this will return the same number as
103 min_start() and max_start(), in more ambiguous cases like
104 fuzzy locations the number may be equal to one or neither
105 of both.
106
107 We override this here from RangeI in order to delegate
108 'get' to a L<Bio::Location::CoordinatePolicy> implementing
109 object. Implementing classes may also wish to provide
110 'set' functionality, in which case they *must* override
111 this method. The implementation provided here will throw
112 an exception if called with arguments.
113
114 Returns : A positive integer value.
115 Args : none
116
117See L<Bio::Location::CoordinatePolicy> for more information
118
119=cut
120
121sub start {
122 my ($self,@args) = @_;
123
124 # throw if @args means that we don't support updating information
125 # in the interface but will delegate to the coordinate policy object
126 # for interpreting the 'start' value
127
128 $self->throw_not_implemented if @args;
129 return $self->coordinate_policy()->start($self);
130}
131
132=head2 end
133
134 Title : end
135 Usage : $end = $location->end();
136 Function: Get the end coordinate of this location as defined by the
137 currently active coordinate computation policy. In simple
138 cases, this will return the same number as min_end() and
139 max_end(), in more ambiguous cases like fuzzy locations
140 the number may be equal to one or neither of both.
141
142 We override this here from Bio::RangeI in order to delegate
143 'get' to a L<Bio::Location::CoordinatePolicy> implementing
144 object. Implementing classes may also wish to provide
145 'set' functionality, in which case they *must* override
146 this method. The implementation provided here will throw
147 an exception if called with arguments.
148
149 Returns : A positive integer value.
150 Args : none
151
152See L<Bio::Location::CoordinatePolicy> and L<Bio::RangeI> for more
153information
154
155=cut
156
157sub end {
158 my ($self,@args) = @_;
159
160 # throw if @args means that we don't support updating information
161 # in the interface but will delegate to the coordinate policy object
162 # for interpreting the 'end' value
163 $self->throw_not_implemented if @args;
164 return $self->coordinate_policy()->end($self);
165}
166
167=head2 min_start
168
169 Title : min_start
170 Usage : my $minstart = $location->min_start();
171 Function: Get minimum starting point of feature.
172
173 Note that an implementation must not call start() in this method.
174
175 Returns : integer or undef if no minimum starting point.
176 Args : none
177
178=cut
179
180sub min_start {
181 my($self) = @_;
182 $self->throw_not_implemented();
183}
184
185=head2 max_start
186
187 Title : max_start
188 Usage : my $maxstart = $location->max_start();
189 Function: Get maximum starting point of feature.
190
191 Note that an implementation must not call start() in this method
192 unless start() is overridden such as not to delegate to the
193 coordinate computation policy object.
194
195 Returns : integer or undef if no maximum starting point.
196 Args : none
197
198=cut
199
200sub max_start {
201 my($self) = @_;
202 $self->throw_not_implemented();
203}
204
205=head2 start_pos_type
206
207 Title : start_pos_type
208 Usage : my $start_pos_type = $location->start_pos_type();
209 Function: Get start position type encoded as text
210
211 Known valid values are 'BEFORE' (<5..100), 'AFTER' (>5..100),
212 'EXACT' (5..100), 'WITHIN' ((5.10)..100), 'BETWEEN', (5^6), with
213 their meaning best explained by their GenBank/EMBL location string
214 encoding in brackets.
215
216 Returns : string ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN')
217 Args : none
218
219=cut
220
221sub start_pos_type {
222 my($self) = @_;
223 $self->throw_not_implemented();
224}
225
226
227=head2 flip_strand
228
229 Title : flip_strand
230 Usage : $location->flip_strand();
231 Function: Flip-flop a strand to the opposite
232 Returns : None
233 Args : None
234
235=cut
236
237
238sub flip_strand {
239 my $self= shift;
240 $self->strand($self->strand * -1);
241}
242
243=head2 min_end
244
245 Title : min_end
246 Usage : my $minend = $location->min_end();
247 Function: Get minimum ending point of feature.
248
249 Note that an implementation must not call end() in this method
250 unless end() is overridden such as not to delegate to the
251 coordinate computation policy object.
252
253 Returns : integer or undef if no minimum ending point.
254 Args : none
255
256=cut
257
258sub min_end {
259 my($self) = @_;
260 $self->throw_not_implemented();
261}
262
263=head2 max_end
264
265 Title : max_end
266 Usage : my $maxend = $location->max_end();
267 Function: Get maximum ending point of feature.
268
269 Note that an implementation must not call end() in this method
270 unless end() is overridden such as not to delegate to the
271 coordinate computation policy object.
272
273 Returns : integer or undef if no maximum ending point.
274 Args : none
275
276=cut
277
278sub max_end {
279 my($self) = @_;
280 $self->throw_not_implemented();
281}
282
283=head2 end_pos_type
284
285 Title : end_pos_type
286 Usage : my $end_pos_type = $location->end_pos_type();
287 Function: Get end position encoded as text.
288
289 Known valid values are 'BEFORE' (5..<100), 'AFTER' (5..>100),
290 'EXACT' (5..100), 'WITHIN' (5..(90.100)), 'BETWEEN', (5^6), with
291 their meaning best explained by their GenBank/EMBL location string
292 encoding in brackets.
293
294 Returns : string ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN')
295 Args : none
296
297=cut
298
299sub end_pos_type {
300 my($self) = @_;
301 $self->throw_not_implemented();
302}
303
304=head2 seq_id
305
306 Title : seq_id
307 Usage : my $seqid = $location->seq_id();
308 Function: Get/Set seq_id that location refers to
309 Returns : seq_id (a string)
310 Args : [optional] seq_id value to set
311
312=cut
313
314sub seq_id {
315 my($self) = @_;
316 $self->throw_not_implemented();
317}
318
319=head2 is_remote
320
321 Title : is_remote
322 Usage : $is_remote_loc = $loc->is_remote()
323 Function: Whether or not a location is a remote location.
324
325 A location is said to be remote if it is on a different
326 'object' than the object which 'has' this
327 location. Typically, features on a sequence will sometimes
328 have a remote location, which means that the location of
329 the feature is on a different sequence than the one that is
330 attached to the feature. In such a case, $loc->seq_id will
331 be different from $feat->seq_id (usually they will be the
332 same).
333
334 While this may sound weird, it reflects the location of the
335 kind of AL445212.9:83662..166657 which can be found in GenBank/EMBL
336 feature tables.
337
338 Example :
339 Returns : TRUE if the location is a remote location, and FALSE otherwise
340 Args : Value to set to
341
342
343=cut
344
345sub is_remote{
346 shift->throw_not_implemented();
347}
348
349=head2 coordinate_policy
350
351 Title : coordinate_policy
352 Usage : $policy = $location->coordinate_policy();
353 $location->coordinate_policy($mypolicy); # set may not be possible
354 Function: Get the coordinate computing policy employed by this object.
355
356 See L<Bio::Location::CoordinatePolicyI> for documentation
357 about the policy object and its use.
358
359 The interface *does not* require implementing classes to
360 accept setting of a different policy. The implementation
361 provided here does, however, allow to do so.
362
363 Implementors of this interface are expected to initialize
364 every new instance with a
365 L<Bio::Location::CoordinatePolicyI> object. The
366 implementation provided here will return a default policy
367 object if none has been set yet. To change this default
368 policy object call this method as a class method with an
369 appropriate argument. Note that in this case only
370 subsequently created Location objects will be affected.
371
372 Returns : A L<Bio::Location::CoordinatePolicyI> implementing object.
373 Args : On set, a L<Bio::Location::CoordinatePolicyI> implementing object.
374
375See L<Bio::Location::CoordinatePolicyI> for more information
376
377
378=cut
379
380sub coordinate_policy {
381 shift->throw_not_implemented();
382}
383
384=head2 to_FTstring
385
386 Title : to_FTstring
387 Usage : my $locstr = $location->to_FTstring()
388 Function: returns the FeatureTable string of this location
389 Returns : string
390 Args : none
391
392=cut
393
394sub to_FTstring {
395 my($self) = @_;
396 $self->throw_not_implemented();
397}
398
399=head2 each_Location
400
401 Title : each_Location
402 Usage : @locations = $locObject->each_Location($order);
403 Function: Conserved function call across Location:: modules - will
404 return an array containing the component Location(s) in
405 that object, regardless if the calling object is itself a
406 single location or one containing sublocations.
407 Returns : an array of Bio::LocationI implementing objects
408 Args : Optional sort order to be passed to sub_Location() for Splits
409
410=cut
411
412sub each_Location {
413 my ($self,@args) = @_;
414 $self->throw_not_implemented();
415}
416
417
418=head2 valid_Location
419
420 Title : valid_Location
421 Usage : if ($location->valid_location) {...};
422 Function: boolean method to determine whether location is considered valid
423 (has minimum requirements for a specific LocationI implementation)
424 Returns : Boolean value: true if location is valid, false otherwise
425 Args : none
426
427=cut
428
429sub valid_Location {
430 my ($self,@args) = @_;
431 $self->throw_not_implemented();
432}
433
43413µs1;
435