annotate variant_effect_predictor/Bio/SeqFeature/PositionProxy.pm @ 2:a5976b2dce6f

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