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

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: PositionProxy.pm,v 1.4 2002/10/22 07:38:41 lapp Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SeqFeature::PositionProxy
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Ewan Birney <birney@ebi.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Ewan Birney
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::SeqFeature::PositionProxy - handle features when truncation/revcom sequences span a feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 $proxy = new Bio::SeqFeature::PositionProxy ( -loc => $loc,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 -parent => $basefeature);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 $seq->add_SeqFeature($feat);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 PositionProxy is a Proxy Sequence Feature to handle truncation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 and revcomp without duplicating all the data within the sequence features.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 It holds a new location for a sequence feature and the original feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 it came from to provide the additional annotation information.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 Bioperl modules. Send your comments and suggestions preferably to one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 of the Bioperl mailing lists. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 http://bio.perl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 the bugs and their resolution. Bug reports can be submitted via email
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 bioperl-bugs@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 =head1 AUTHOR - Ewan Birney
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 Ewan Birney E<lt>birney@sanger.ac.ukE<gt>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 =head1 DEVELOPERS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 This class has been written with an eye out of inheritence. The fields
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 the actual object hash are:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 _gsf_tag_hash = reference to a hash for the tags
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 _gsf_sub_array = reference to an array for sub arrays
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 _gsf_start = scalar of the start point
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 _gsf_end = scalar of the end point
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 _gsf_strand = scalar of the strand
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 package Bio::SeqFeature::PositionProxy;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::SeqFeatureI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 use Bio::Tools::GFF;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 @ISA = qw(Bio::Root::Root Bio::SeqFeatureI);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 my ($caller, @args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 my $self = $caller->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 my ($feature,$location) = $self->_rearrange([qw(PARENT LOC)],@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 if( !defined $feature || !ref $feature || !$feature->isa('Bio::SeqFeatureI') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 $self->throw("Must have a parent feature, not a [$feature]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 if( $feature->isa("Bio::SeqFeature::PositionProxy") ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 $feature = $feature->parent();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 if( !defined $location || !ref $location || !$location->isa('Bio::LocationI') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 $self->throw("Must have a location, not a [$location]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 =head2 location
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 Title : location
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 Usage : my $location = $seqfeature->location()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 Function: returns a location object suitable for identifying location
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 of feature on sequence or parent feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 Returns : Bio::LocationI object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 sub location {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 my($self, $value ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 if (defined($value)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 unless (ref($value) and $value->isa('Bio::LocationI')) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 $self->throw("object $value pretends to be a location but ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 "does not implement Bio::LocationI");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 $self->{'_location'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 elsif (! $self->{'_location'}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 # guarantees a real location object is returned every time
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 $self->{'_location'} = Bio::Location::Simple->new();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 return $self->{'_location'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 =head2 parent
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 Title : parent
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 Usage : my $sf = $proxy->parent()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 Function: returns the seqfeature parent of this proxy
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 Returns : Bio::SeqFeatureI object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 sub parent {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 my($self, $value ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 if (defined($value)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 unless (ref($value) and $value->isa('Bio::SeqFeatureI')) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 $self->throw("object $value pretends to be a location but ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 "does not implement Bio::SeqFeatureI");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 $self->{'_parent'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 return $self->{'_parent'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 =head2 start
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 Title : start
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 Usage : $start = $feat->start
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 $feat->start(20)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 Function: Get
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 Returns : integer
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 sub start {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 return $self->location->start($value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 =head2 end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 Title : end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 Usage : $end = $feat->end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 $feat->end($end)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 Function: get
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 Returns : integer
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 sub end {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 return $self->location->end($value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 =head2 length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 Title : length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 sub length {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 return $self->end - $self->start() + 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 =head2 strand
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 Title : strand
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 Usage : $strand = $feat->strand()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 $feat->strand($strand)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 Function: get/set on strand information, being 1,-1 or 0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 Returns : -1,1 or 0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 sub strand {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 return $self->location->strand($value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 =head2 attach_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 Title : attach_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 Usage : $sf->attach_seq($seq)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 Function: Attaches a Bio::Seq object to this feature. This
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 Bio::Seq object is for the *entire* sequence: ie
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 from 1 to 10000
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 Returns : TRUE on success
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 sub attach_seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 my ($self, $seq) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 if ( !defined $seq || !ref $seq || ! $seq->isa("Bio::PrimarySeqI") ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 $self->throw("Must attach Bio::PrimarySeqI objects to SeqFeatures");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 $self->{'_gsf_seq'} = $seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 # attach to sub features if they want it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 foreach my $sf ( $self->sub_SeqFeature() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 if ( $sf->can("attach_seq") ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 $sf->attach_seq($seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 =head2 seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 Title : seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 Usage : $tseq = $sf->seq()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 Function: returns the truncated sequence (if there) for this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 Returns : sub seq on attached sequence bounded by start & end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 sub seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 my ($self, $arg) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 if ( defined $arg ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 $self->throw("Calling SeqFeature::PositionProxy->seq with an argument. You probably want attach_seq");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 if ( ! exists $self->{'_gsf_seq'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 # assumming our seq object is sensible, it should not have to yank
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 # the entire sequence out here.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 my $seq = $self->{'_gsf_seq'}->trunc($self->start(), $self->end());
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 if ( $self->strand == -1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 $seq = $seq->revcom;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 return $seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 =head2 entire_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 Title : entire_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 Usage : $whole_seq = $sf->entire_seq()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 Function: gives the entire sequence that this seqfeature is attached to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 sub entire_seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 return undef unless exists($self->{'_gsf_seq'});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 return $self->{'_gsf_seq'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 =head2 seqname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 Title : seqname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 Usage : $obj->seq_id($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 Function: There are many cases when you make a feature that you
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 do know the sequence name, but do not know its actual
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 sequence. This is an attribute such that you can store
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 the seqname.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 This attribute should *not* be used in GFF dumping, as
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 that should come from the collection in which the seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 feature was found.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340 Returns : value of seqname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 Args : newvalue (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 sub seqname {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 my ($obj,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 if ( defined $value ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 $obj->{'_gsf_seqname'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 return $obj->{'_gsf_seqname'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 =head2 Proxies
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 These functions chain back to the parent for all non sequence related stuff.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 =head2 primary_tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 Title : primary_tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 Usage : $tag = $feat->primary_tag()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 Function: Returns the primary tag for a feature,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368 eg 'exon'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 Returns : a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375 sub primary_tag{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 my ($self,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 return $self->parent->primary_tag();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 =head2 source_tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 Title : source_tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 Usage : $tag = $feat->source_tag()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 Function: Returns the source tag for a feature,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 eg, 'genscan'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 Returns : a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393 sub source_tag{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 return $self->parent->source_tag();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 =head2 has_tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 Title : has_tag
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 Usage : $tag_exists = $self->has_tag('some_tag')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405 Returns : TRUE if the specified tag exists, and FALSE otherwise
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 sub has_tag{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 my ($self,$tag) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414 return $self->parent->has_tag($tag);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417 =head2 each_tag_value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419 Title : each_tag_value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420 Usage : @values = $self->each_tag_value('some_tag')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422 Returns : An array comprising the values of the specified tag.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 sub each_tag_value {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429 my ($self,$tag) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 return $self->parent->each_tag_value($tag);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 =head2 all_tags
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436 Title : all_tags
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 Usage : @tags = $feat->all_tags()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438 Function: gives all tags for this feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439 Returns : an array of strings
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445 sub all_tags{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448 return $self->parent->all_tags();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 }