annotate variant_effect_predictor/Bio/Location/Simple.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: Simple.pm,v 1.31 2002/10/22 07:38:35 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Location::Simple
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # Cared for by Heikki Lehvaslaiho <heikki@ebi.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # Copyright Heikki Lehvaslaiho
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::Location::Simple - Implementation of a Simple 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 use Bio::Location::Simple;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 my $location = new Bio::Location::Simple(-start => 1, -end => 100,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 -strand => 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 if( $location->strand == -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 printf "complement(%d..%d)\n", $location->start, $location->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 printf "%d..%d\n", $location->start, $location->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 This is an implementation of Bio::LocationI to manage exact location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 information on a Sequence: '22' or '12..15' or '16^17'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 You can test the type of the location using lenght() function () or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 directly location_type() which can one of two values: 'EXACT' or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 'IN-BETWEEN'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 =head1 AUTHOR - Heikki Lehvaslaiho
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Email heikki@ebi.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 package Bio::Location::Simple;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use Bio::Location::Atomic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 @ISA = qw( Bio::Location::Atomic );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use vars qw( %RANGEENCODE %RANGEDECODE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 %RANGEENCODE = ('\.\.' => 'EXACT',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 '\^' => 'IN-BETWEEN' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 %RANGEDECODE = ('EXACT' => '..',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 'IN-BETWEEN' => '^' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 my ($class, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my ($locationtype) = $self->_rearrange([qw(LOCATION_TYPE)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 $locationtype && $self->location_type($locationtype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 =head2 start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Title : start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Usage : $start = $loc->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Function: get/set the start of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Returns : the start of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Args : optionaly allows the start to be set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 : using $loc->start($start)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 sub start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $self->{'_start'} = $value if defined $value ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $self->throw("Only adjacent residues when location type ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 "is IN-BETWEEN. Not [". $self->{'_start'}. "] and [".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $self->{'_end'}. "]" )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 if defined $self->{'_start'} && defined $self->{'_end'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 $self->location_type eq 'IN-BETWEEN' &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 ($self->{'_end'} - 1 != $self->{'_start'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 return $self->{'_start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 }
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 = $loc->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Function: get/set the end of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 Returns : the end of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Args : optionaly allows the end to be set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 : using $loc->end($start)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 sub end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $self->{'_end'} = $value if defined $value ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 $self->throw("Only adjacent residues when location type ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 "is IN-BETWEEN. Not [". $self->{'_start'}. "] and [".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 $self->{'_end'}. "]" )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 if defined $self->{'_start'} && defined $self->{'_end'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 $self->location_type eq 'IN-BETWEEN' &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 ($self->{'_end'} - 1 != $self->{'_start'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 return $self->{'_end'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 =head2 strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Title : strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Usage : $strand = $loc->strand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Function: get/set the strand of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Returns : the strandidness (-1, 0, +1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Args : optionaly allows the strand to be set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 : using $loc->strand($strand)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 =head2 length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Title : length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Usage : $len = $loc->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Function: get the length in the coordinate space this location spans
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 Returns : an integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
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 length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 if ($self->location_type eq 'IN-BETWEEN' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 return abs($self->end - $self->start) + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 =head2 min_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Title : min_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Usage : my $minstart = $location->min_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Function: Get minimum starting location of feature startpoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Returns : integer or undef if no minimum 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 =head2 max_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 Title : max_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Usage : my $maxstart = $location->max_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Function: Get maximum starting location of feature startpoint.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 In this implementation this is exactly the same as min_start().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Returns : integer or undef if no maximum starting point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 =head2 start_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Title : start_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Usage : my $start_pos_type = $location->start_pos_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Function: Get start position type (ie <,>, ^).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 Returns : type of position coded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN', 'IN-BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 =head2 min_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 Title : min_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 Usage : my $minend = $location->min_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Function: Get minimum ending location of feature endpoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Returns : integer or undef if no minimum ending point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 =head2 max_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 Title : max_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 Usage : my $maxend = $location->max_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 Function: Get maximum ending location of feature endpoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 In this implementation this is exactly the same as min_end().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Returns : integer or undef if no maximum ending point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 =head2 end_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Title : end_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Usage : my $end_pos_type = $location->end_pos_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Function: Get end position type (ie <,>, ^)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 Returns : type of position coded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN', 'IN-BETWEEN')
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 =head2 location_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Title : location_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Usage : my $location_type = $location->location_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 Function: Get location type encoded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Returns : string ('EXACT' or 'IN-BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 Args : 'EXACT' or '..' or 'IN-BETWEEN' or '^'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 sub location_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 if( defined $value || ! defined $self->{'_location_type'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 $value = 'EXACT' unless defined $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 $value = uc $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 if (! defined $RANGEDECODE{$value}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 $value = '\^' if $value eq '^';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 $value = '\.\.' if $value eq '..';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 $value = $RANGEENCODE{$value};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 $self->throw("Did not specify a valid location type. [$value] is no good")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 unless defined $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $self->{'_location_type'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $self->throw("Only adjacent residues when location type ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 "is IN-BETWEEN. Not [". $self->{'_start'}. "] and [".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 $self->{'_end'}. "]" )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 if $self->{'_location_type'} eq 'IN-BETWEEN' &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 defined $self->{'_start'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 defined $self->{'_end'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 ($self->{'_end'} - 1 != $self->{'_start'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 return $self->{'_location_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 =head2 is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Title : is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 Usage : $self->is_remote($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 Function: Getset for is_remote value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Returns : value of is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 =head2 to_FTstring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 Title : to_FTstring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 Usage : my $locstr = $location->to_FTstring()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 Function: returns the FeatureTable string of this location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 sub to_FTstring {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 my $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 if( $self->start == $self->end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 return $self->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $str = $self->start . $RANGEDECODE{$self->location_type} . $self->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 if($self->is_remote() && $self->seq_id()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $str = $self->seq_id() . ":" . $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 if( $self->strand == -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 $str = "complement(".$str.")";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 return $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 # not tested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 sub trunc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my ($self,$start,$end,$relative_ori) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 my $newstart = $self->start - $start+1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 my $newend = $self->end - $start+1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 my $newstrand = $relative_ori * $self->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 my $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 if( $newstart < 1 || $newend > ($end-$start+1) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $out = Bio::Location::Simple->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $out->start($self->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 $out->end($self->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 $out->strand($self->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 $out->seq_id($self->seqid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 $out->is_remote(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 $out = Bio::Location::Simple->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $out->start($newstart);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 $out->end($newend);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 $out->strand($newstrand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 $out->seq_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361