annotate variant_effect_predictor/Bio/LocationI.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: LocationI.pm,v 1.18 2002/12/01 00:05:19 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::LocationI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # Cared for by Jason Stajich <jason@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # Copyright Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Bio::LocationI - Abstract interface of a Location on a Sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 # get a LocationI somehow
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 printf( "start = %d, end = %d, strand = %s, seq_id = %s\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 $location->start, $location->end, $location->strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 $location->seq_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 print "location str is ", $location->to_FTstring(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 This Interface defines the methods for a Bio::LocationI, an object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 which encapsulates a location on a biological sequence. Locations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 need not be attached to actual sequences as they are stand alone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 objects. LocationI objects are used by L<Bio::SeqFeatureI> objects to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 manage and represent locations for a Sequence Feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 package Bio::LocationI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 use vars qw(@ISA $coord_policy);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 use Bio::RangeI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 use Bio::Location::WidestCoordPolicy;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use Carp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 @ISA = qw(Bio::RangeI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 $coord_policy = Bio::Location::WidestCoordPolicy->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =head2 location_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 Title : location_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 Usage : my $location_type = $location->location_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 Function: Get location type encoded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 Returns : string ('EXACT', 'WITHIN', 'BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 sub location_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 =head2 start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Title : start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Usage : $start = $location->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Function: Get the start coordinate of this location as defined by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 the currently active coordinate computation policy. In
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 simple cases, this will return the same number as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 min_start() and max_start(), in more ambiguous cases like
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 fuzzy locations the number may be equal to one or neither
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 of both.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 We override this here from RangeI in order to delegate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 'get' to a L<Bio::Location::CoordinatePolicy> implementing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 object. Implementing classes may also wish to provide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 'set' functionality, in which case they *must* override
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 this method. The implementation provided here will throw
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 an exception if called with arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 Returns : A positive integer value.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 See L<Bio::Location::CoordinatePolicy> for more information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 sub start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 # throw if @args means that we don't support updating information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 # in the interface but will delegate to the coordinate policy object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 # for interpreting the 'start' value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $self->throw_not_implemented if @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 return $self->coordinate_policy()->start($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 =head2 end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Title : end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Usage : $end = $location->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Function: Get the end coordinate of this location as defined by the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 currently active coordinate computation policy. In simple
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 cases, this will return the same number as min_end() and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 max_end(), in more ambiguous cases like fuzzy locations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 the number may be equal to one or neither of both.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 We override this here from Bio::RangeI in order to delegate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 'get' to a L<Bio::Location::CoordinatePolicy> implementing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 object. Implementing classes may also wish to provide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 'set' functionality, in which case they *must* override
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 this method. The implementation provided here will throw
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 an exception if called with arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Returns : A positive integer value.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 See L<Bio::Location::CoordinatePolicy> and L<Bio::RangeI> for more
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 sub end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 # throw if @args means that we don't support updating information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 # in the interface but will delegate to the coordinate policy object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 # for interpreting the 'end' value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $self->throw_not_implemented if @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 return $self->coordinate_policy()->end($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 =head2 min_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Title : min_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Usage : my $minstart = $location->min_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Function: Get minimum starting point of feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Note that an implementation must not call start() in this method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Returns : integer or undef if no minimum starting point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 sub min_start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 =head2 max_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Title : max_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Usage : my $maxstart = $location->max_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Function: Get maximum starting point of feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Note that an implementation must not call start() in this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 unless start() is overridden such as not to delegate to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 coordinate computation policy object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Returns : integer or undef if no maximum starting point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 sub max_start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 =head2 start_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Title : start_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Usage : my $start_pos_type = $location->start_pos_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Function: Get start position type encoded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Known valid values are 'BEFORE' (<5..100), 'AFTER' (>5..100),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 'EXACT' (5..100), 'WITHIN' ((5.10)..100), 'BETWEEN', (5^6), with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 their meaning best explained by their GenBank/EMBL location string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 encoding in brackets.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Returns : string ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 sub start_pos_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 =head2 min_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 Title : min_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Usage : my $minend = $location->min_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Function: Get minimum ending point of feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Note that an implementation must not call end() in this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 unless end() is overridden such as not to delegate to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 coordinate computation policy object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 Returns : integer or undef if no minimum ending point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 sub min_end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 =head2 max_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Title : max_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Usage : my $maxend = $location->max_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Function: Get maximum ending point of feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Note that an implementation must not call end() in this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 unless end() is overridden such as not to delegate to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 coordinate computation policy object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 Returns : integer or undef if no maximum ending point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 sub max_end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 =head2 end_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Title : end_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 Usage : my $end_pos_type = $location->end_pos_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Function: Get end position encoded as text.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Known valid values are 'BEFORE' (5..<100), 'AFTER' (5..>100),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 'EXACT' (5..100), 'WITHIN' (5..(90.100)), 'BETWEEN', (5^6), with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 their meaning best explained by their GenBank/EMBL location string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 encoding in brackets.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Returns : string ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 sub end_pos_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 =head2 seq_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Title : seq_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Usage : my $seqid = $location->seq_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Function: Get/Set seq_id that location refers to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 Returns : seq_id (a string)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Args : [optional] seq_id value to set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 sub seq_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 my ($self, $seqid) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 if( defined $seqid ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $self->{'_seqid'} = $seqid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 return $self->{'_seqid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 =head2 is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 Title : is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 Usage : $is_remote_loc = $loc->is_remote()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Function: Whether or not a location is a remote location.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 A location is said to be remote if it is on a different
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 'object' than the object which 'has' this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 location. Typically, features on a sequence will sometimes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 have a remote location, which means that the location of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 the feature is on a different sequence than the one that is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 attached to the feature. In such a case, $loc->seq_id will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 be different from $feat->seq_id (usually they will be the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 same).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 While this may sound weird, it reflects the location of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 kind of AB18375:450-900 which can be found in GenBank/EMBL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 feature tables.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Returns : TRUE if the location is a remote location, and FALSE otherwise
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 sub is_remote{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 shift->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 =head2 coordinate_policy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 Title : coordinate_policy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 Usage : $policy = $location->coordinate_policy();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 $location->coordinate_policy($mypolicy); # set may not be possible
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 Function: Get the coordinate computing policy employed by this object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 See L<Bio::Location::CoordinatePolicyI> for documentation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 about the policy object and its use.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 The interface *does not* require implementing classes to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 accept setting of a different policy. The implementation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 provided here does, however, allow to do so.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Implementors of this interface are expected to initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 every new instance with a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 L<Bio::Location::CoordinatePolicyI> object. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 implementation provided here will return a default policy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 object if none has been set yet. To change this default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 policy object call this method as a class method with an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 appropriate argument. Note that in this case only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 subsequently created Location objects will be affected.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 Returns : A L<Bio::Location::CoordinatePolicyI> implementing object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Args : On set, a L<Bio::Location::CoordinatePolicyI> implementing object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 See L<Bio::Location::CoordinatePolicyI> for more information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 sub coordinate_policy {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 my ($self, $policy) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 if(defined($policy)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 if(! $policy->isa('Bio::Location::CoordinatePolicyI')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 $self->throw("Object of class ".ref($policy)." does not implement".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 " Bio::Location::CoordinatePolicyI");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 if(ref($self)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 $self->{'_coordpolicy'} = $policy;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 # called as class method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 $coord_policy = $policy;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 return (ref($self) && exists($self->{'_coordpolicy'}) ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 $self->{'_coordpolicy'} : $coord_policy);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 =head2 to_FTstring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 Title : to_FTstring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 Usage : my $locstr = $location->to_FTstring()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 Function: returns the FeatureTable string of this location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 sub to_FTstring {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 =head2 each_Location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Title : each_Location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Usage : @locations = $locObject->each_Location($order);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 Function: Conserved function call across Location:: modules - will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 return an array containing the component Location(s) in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 that object, regardless if the calling object is itself a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 single location or one containing sublocations.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 Returns : an array of Bio::LocationI implementing objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 Args : Optional sort order to be passed to sub_Location() for Splits
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 sub each_Location {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415