annotate variant_effect_predictor/Bio/LocationI.pm @ 1:d6778b5d8382 draft default tip

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