annotate variant_effect_predictor/Bio/LocationI.pm @ 0:2bc9b66ada89 draft default tip

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