annotate variant_effect_predictor/Bio/Location/Atomic.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: Atomic.pm,v 1.6 2002/12/01 00:05:20 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Location::Atomic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # Cared for by Jason Stajich <jason@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # Copyright Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Bio::Location::Atomic - Implementation of a Atomic 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::Atomic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 my $location = new Bio::Location::Atomic(-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 simple location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 information on a Sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 package Bio::Location::Atomic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 use Bio::LocationI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 @ISA = qw(Bio::Root::Root Bio::LocationI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 my ($class, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 my $self = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 bless $self,$class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 my ($v,$start,$end,$strand,$seqid) = $self->_rearrange([qw(VERBOSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 START
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 END
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 STRAND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 SEQ_ID)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 defined $v && $self->verbose($v);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 defined $strand && $self->strand($strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 defined $start && $self->start($start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 defined $end && $self->end($end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 if( defined $self->start && defined $self->end &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 $self->start > $self->end && $self->strand != -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 $self->warn("When building a location, start ($start) is expected to be less than end ($end), ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 "however it was not. Switching start and end and setting strand to -1");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 $self->strand(-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 my $e = $self->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 my $s = $self->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 $self->start($e);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 $self->end($s);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 $seqid && $self->seq_id($seqid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 =head2 start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Title : start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 Usage : $start = $loc->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Function: get/set the start of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 Returns : the start of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Args : optionaly allows the start to be set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 : using $loc->start($start)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 sub start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $self->min_start($value) if( defined $value );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 return $self->SUPER::start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 =head2 end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Title : end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Usage : $end = $loc->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 Function: get/set the end of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Returns : the end of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Args : optionaly allows the end to be set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 : using $loc->end($start)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 sub end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 $self->min_end($value) if( defined $value );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 return $self->SUPER::end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =head2 strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Title : strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Usage : $strand = $loc->strand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Function: get/set the strand of this range
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Returns : the strandidness (-1, 0, +1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Args : optionaly allows the strand to be set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 : using $loc->strand($strand)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 sub strand {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 if ( defined $value ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 if ( $value eq '+' ) { $value = 1; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 elsif ( $value eq '-' ) { $value = -1; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 elsif ( $value eq '.' ) { $value = 0; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 elsif ( $value != -1 && $value != 1 && $value != 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $self->throw("$value is not a valid strand info");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $self->{'_strand'} = $value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 # let's go ahead and force to '0' if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 # we are requesting the strand without it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 # having been set previously
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 return $self->{'_strand'} || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 =head2 length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 Title : length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Usage : $len = $loc->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Function: get the length in the coordinate space this location spans
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Returns : an integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 sub length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 return abs($self->end() - $self->start()) + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =head2 min_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Title : min_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Usage : my $minstart = $location->min_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Function: Get minimum starting location of feature startpoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Returns : integer or undef if no minimum starting point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 sub min_start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 if(defined($value)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 $self->{'_start'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 return $self->{'_start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 =head2 max_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Title : max_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Usage : my $maxstart = $location->max_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Function: Get maximum starting location of feature startpoint.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 In this implementation this is exactly the same as min_start().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 Returns : integer or undef if no maximum starting point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 sub max_start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 return $self->min_start(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 =head2 start_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Title : start_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Usage : my $start_pos_type = $location->start_pos_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Function: Get start position type (ie <,>, ^).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 In this implementation this will always be 'EXACT'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 Returns : type of position coded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 sub start_pos_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 return 'EXACT';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 =head2 min_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Title : min_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Usage : my $minend = $location->min_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Function: Get minimum ending location of feature endpoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Returns : integer or undef if no minimum ending point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 sub min_end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 if(defined($value)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $self->{'_end'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 return $self->{'_end'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 =head2 max_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 Title : max_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Usage : my $maxend = $location->max_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Function: Get maximum ending location of feature endpoint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 In this implementation this is exactly the same as min_end().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 Returns : integer or undef if no maximum ending point.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 sub max_end {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 return $self->min_end(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 =head2 end_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Title : end_pos_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Usage : my $end_pos_type = $location->end_pos_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Function: Get end position type (ie <,>, ^)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 In this implementation this will always be 'EXACT'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Returns : type of position coded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 ('BEFORE', 'AFTER', 'EXACT','WITHIN', 'BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 sub end_pos_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 return 'EXACT';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 =head2 location_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Title : location_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 Usage : my $location_type = $location->location_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 Function: Get location type encoded as text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Returns : string ('EXACT', 'WITHIN', 'BETWEEN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 sub location_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 return 'EXACT';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 =head2 is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Title : is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Usage : $self->is_remote($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Function: Getset for is_remote value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Returns : value of is_remote
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 sub is_remote {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 if( @_ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 my $value = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 $self->{'is_remote'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 return $self->{'is_remote'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 =head2 each_Location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Title : each_Location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Usage : @locations = $locObject->each_Location($order);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Function: Conserved function call across Location:: modules - will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 return an array containing the component Location(s) in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 that object, regardless if the calling object is itself a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 single location or one containing sublocations.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Returns : an array of Bio::LocationI implementing objects - for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Simple locations, the return value is just itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 sub each_Location {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 return ($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 =head2 to_FTstring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Title : to_FTstring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 Usage : my $locstr = $location->to_FTstring()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Function: returns the FeatureTable string of this location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 sub to_FTstring {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 my($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 if( $self->start == $self->end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 return $self->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 my $str = $self->start . ".." . $self->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 if( $self->strand == -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 $str = sprintf("complement(%s)", $str);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 return $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 sub trunc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 my ($self,$start,$end,$relative_ori) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 my $newstart = $self->start - $start+1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 my $newend = $self->end - $start+1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 my $newstrand = $relative_ori * $self->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 my $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 if( $newstart < 1 || $newend > ($end-$start+1) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $out = Bio::Location::Atomic->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 $out->start($self->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $out->end($self->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 $out->strand($self->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 $out->seq_id($self->seqid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 $out->is_remote(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 $out = Bio::Location::Atomic->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 $out->start($newstart);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 $out->end($newend);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 $out->strand($newstrand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $out->seq_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405