annotate variant_effect_predictor/Bio/DB/GFF/Segment.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 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Bio::DB::GFF::Segment -- Simple DNA segment object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 See L<Bio::DB::GFF>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 Bio::DB::GFF::Segment provides the basic representation of a range of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 DNA contained in a GFF database. It is the base class from which the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Bio::DB::GFF::RelSegment and Bio::DB::GFF::Feature classes are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 derived.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Generally, you will not create or manipulate Bio::DB::GFF::Segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 objects directly, but use those that are returned by the Bio::DB::GFF
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 package Bio::DB::GFF::Segment;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 use Bio::Annotation::Collection;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use Bio::RangeI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 use Bio::Das::SegmentI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 use Bio::SeqI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 @ISA = qw(Bio::Root::Root Bio::RangeI Bio::SeqI Bio::Das::SegmentI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 use overload
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 '""' => 'asString',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 eq => 'equals',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 fallback => 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head1 API
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 The remainder of this document describes the API for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 Bio::DB::GFF::Segment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 Usage : $s = Bio::DB::GFF::Segment->new(@args)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 Function: create a new segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 Returns : a new Bio::DB::GFF::Segment object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 Args : see below
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 This method creates a new Bio::DB::GFF::Segment object. Generally
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 this is called automatically by the Bio::DB::GFF module and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 derivatives.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 There are five positional arguments:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 $factory a Bio::DB::GFF::Adaptor to use for database access
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 $sourceseq ID of the source sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 $sourceclass class of the source sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 $start start of the desired segment relative to source sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 $stop stop of the desired segment relative to source sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 my ($factory,$segclass,$segname,$start,$stop) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 $segclass = $segname->class if ref($segname) && $segname->can('class');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 $segclass ||= 'Sequence';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 $factory or $class->throw("->new(): provide a factory argument");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 $class = ref $class if ref $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 return bless { factory => $factory,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 sourceseq => $segname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 class => $segclass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 start => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 stop => $stop,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 strand => 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 },$class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 # read-only accessors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 =head2 factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Title : factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Usage : $s->factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Function: get the factory object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Returns : a Bio::DB::GFF::Adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 This is a read-only accessor for the Bio::DB::GFF::Adaptor object used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 to create the segment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 sub factory { shift->{factory} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 # start, stop, length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =head2 start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Title : start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Usage : $s->start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 Function: start of segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 This is a read-only accessor for the start of the segment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 sub start { shift->{start} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 =head2 end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 Title : end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 Usage : $s->end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Function: end of segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 This is a read-only accessor for the end of the segment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 sub end { shift->{stop} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 =head2 stop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Title : stop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Usage : $s->stop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Function: stop of segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 This is an alias for end(), provided for AcePerl compatibility.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 *stop = \&end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =head2 length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Title : length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 Usage : $s->length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Function: length of segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Returns the length of the segment. Always a positive number.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 sub length { abs($_[0]->{start} - $_[0]->{stop})+1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 =head2 strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Title : strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 Usage : $s->strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Function: strand of segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 Returns : +1,0,-1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Returns the strand on which the segment resides, either +1, 0 or -1.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 sub strand {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 =head2 low
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Title : low
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Usage : $s->low
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Function: return lower coordinate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Returns : lower coordinate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Returns the lower coordinate, either start or end.
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 low {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 my ($start,$stop) = ($self->start,$self->stop);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 return $start < $stop ? $start : $stop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 *abs_low = \&low;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 =head2 high
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Title : high
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Usage : $s->high
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Function: return higher coordinate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Returns : higher coordinate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Returns the higher coordinate, either start or end.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 sub high {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 my ($start,$stop) = ($self->start,$self->stop);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 return $start > $stop ? $start : $stop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 *abs_high = \&high;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 =head2 sourceseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Title : sourceseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Usage : $s->sourceseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Function: get the segment source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 Returns the name of the source sequence for this segment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 sub sourceseq { shift->{sourceseq} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 =head2 class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Title : class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Usage : $s->class([$newclass])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Function: get the source sequence class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Args : new class (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Gets or sets the class for the source sequence for this segment.
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 class {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my $d = $self->{class};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $self->{class} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 $d;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 =head2 subseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Title : subseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 Usage : $s->subseq($start,$stop)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Function: generate a subsequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 Returns : a Bio::DB::GFF::Segment object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Args : start and end of subsequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 This method generates a new segment from the start and end positions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 given in the arguments. If stop E<lt> start, then the strand is reversed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 sub subseq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 my ($newstart,$newstop) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my ($refseq,$start,$stop,$class) = ($self->{sourceseq},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 $self->{start},$self->{stop},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 $self->class);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 # We deliberately force subseq to return objects of type RelSegment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 # Otherwise, when we get a subsequence from a Feature object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 # its method and source go along for the ride, which is incorrect.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 my $new = $self->new_from_segment($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 if ($start <= $stop) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 @{$new}{qw(start stop)} = ($start + $newstart - 1, $start + $newstop - 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 @{$new}{qw(start stop)} = ($start - ($newstart - 1), $start - ($newstop - 1)),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 $new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 =head2 seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 Title : seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Usage : $s->seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Function: get the sequence string for this segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 Returns the sequence for this segment as a simple string. (-) strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 segments are automatically reverse complemented
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 This method is also called dna() and protein() for backward
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 compatibility with AceDB.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 sub seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 my ($ref,$class,$start,$stop,$strand)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 = @{$self}{qw(sourceseq class start stop strand)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 # ($start,$stop) = ($stop,$start) if $strand eq '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $self->factory->dna($ref,$start,$stop,$class);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 *protein = *dna = \&seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 =head2 primary_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 Title : primary_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 Usage : $s->primary_seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Function: returns a Bio::PrimarySeqI compatible object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 Returns : a Bio::PrimarySeqI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 This is for compatibility with BioPerl's separation of SeqI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 from PrimarySeqI. It just returns itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 #'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 sub primary_seq { shift }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 =head2 type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Title : type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Usage : $s->type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Function: return the string "feature"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Returns : the string "feature"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 This is for future sequence ontology-compatibility and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 represents the default type of a feature on the genome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 sub type { "feature" }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 =head2 equals
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Title : equals
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Usage : $s->equals($d)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Function: segment equality
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Returns : true, if two segments are equal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Args : another segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Returns true if the two segments have the same source sequence, start and stop.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 sub equals {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my $peer = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 return unless defined $peer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 return $self->asString eq $peer unless ref($peer) && $peer->isa('Bio::DB::GFF::Segment');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 return $self->{start} eq $peer->{start}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 && $self->{stop} eq $peer->{stop}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 && $self->{sourceseq} eq $peer->{sourceseq};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 =head2 asString
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 Title : asString
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 Usage : $s->asString
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 Function: human-readable string for segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Returns a human-readable string representing this sequence. Format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 is:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 sourceseq/start,stop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 sub asString {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 my $label = $self->refseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 my $start = $self->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 my $stop = $self->stop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 return "$label:$start,$stop";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 =head2 clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 Title : clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 Usage : $copy = $s->clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 Function: make a copy of this segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Returns : a Bio::DB::GFF::Segment object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 This method creates a copy of the segment and returns it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 # deep copy of the thing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 sub clone {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 my %h = %$self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 return bless \%h,ref($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 =head2 error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 Title : error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 Usage : $error = $s->error([$new_error])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Function: get or set the last error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 Args : an error message (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 In case of a fault, this method can be used to obtain the last error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 message. Internally it is called to set the error message.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 sub error {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 my $g = $self->{error};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $self->{error} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 $g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 =head1 Relative Addressing Methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 The following methods are provided for compatibility with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 Bio::DB::GFF::RelSegment, which provides relative addressing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 functions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 =head2 abs_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 Title : abs_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 Usage : $s->abs_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 Function: the absolute start of the segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 Returns : an integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 This is an alias to start(), and provided for API compatibility with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Bio::DB::GFF::RelSegment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 *abs_start = \&start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 =head2 abs_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 Title : abs_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 Usage : $s->abs_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 Function: the absolute stop of the segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 Returns : an integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 This is an alias to stop(), and provided for API compatibility with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 Bio::DB::GFF::RelSegment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 *abs_stop = \&stop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 *abs_end = \&stop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 =head2 abs_strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 Title : abs_strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 Usage : $s->abs_strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 Function: the absolute strand of the segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Returns : +1,0,-1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 This is an alias to strand(), and provided for API compatibility with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 Bio::DB::GFF::RelSegment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 sub abs_strand {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 return $self->abs_end <=> $self->abs_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 =head2 abs_ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 Title : abs_ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 Usage : $s->abs_ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 Function: the reference sequence for this segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 This is an alias to sourceseq(), and is here to provide API
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 compatibility with Bio::DB::GFF::RelSegment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 *abs_ref = \&sourceseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 =head2 refseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 Title : refseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 Usage : $s->refseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 Function: get or set the reference sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 Examine or change the reference sequence. This is an alias to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 sourceseq(), provided here for API compatibility with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 Bio::DB::GFF::RelSegment.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 *refseq = \&sourceseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 =head2 ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 Title : ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 Usage : $s->refseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 Function: get or set the reference sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 An alias for refseq()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 sub ref { shift->refseq(@_) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 =head2 seq_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 Title : seq_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 Usage : $ref = $s->seq_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Function: get the reference sequence in a LocationI-compatible way
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 An alias for refseq() but only allows reading.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 sub seq_id { shift->refseq }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 =head2 truncated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 Title : truncated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 Usage : $truncated = $s->truncated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 Function: Flag indicating that the segment was truncated during creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 Returns : A boolean flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 Status : Public
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 This indicates that the sequence was truncated during creation. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 returned flag is undef if no truncation occured. If truncation did
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 occur, the flag is actually an array ref in which the first element is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 true if truncation occurred on the left, and the second element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 occurred if truncation occurred on the right.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 sub truncated {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 my $hash = $self->{truncated} or return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 CORE::ref($hash) eq 'HASH' or return [1,1]; # paranoia -- not that this would ever happen ;-)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 return [$hash->{start},$hash->{stop}];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 =head2 Bio::RangeI Methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 The following Bio::RangeI methods are supported:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 overlaps(), contains(), equals(),intersection(),union(),overlap_extent()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 sub overlaps {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 my($other,$so) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 if ($other->isa('Bio::DB::GFF::RelSegment')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 return if $self->abs_ref ne $other->abs_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 $self->SUPER::overlaps(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 sub contains {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 my($other,$so) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 if ($other->isa('Bio::DB::GFF::RelSegment')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 return if $self->abs_ref ne $other->abs_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 $self->SUPER::contains(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 #sub equals {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 # my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 # my($other,$so) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 # if ($other->isa('Bio::DB::GFF::RelSegment')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 # return if $self->abs_ref ne $other->abs_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 # $self->SUPER::equals(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 sub intersection {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 my($other,$so) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 if ($other->isa('Bio::DB::GFF::RelSegment')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 return if $self->abs_ref ne $other->abs_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 $self->SUPER::intersection(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 sub union {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 my($other) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 if ($other->isa('Bio::DB::GFF::RelSegment')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 return if $self->abs_ref ne $other->abs_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 $self->SUPER::union(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 sub overlap_extent {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 my($other) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 if ($other->isa('Bio::DB::GFF::RelSegment')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 return if $self->abs_ref ne $other->abs_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 $self->SUPER::overlap_extent(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 =head2 Bio::SeqI implementation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 =head2 primary_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 Title : primary_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 Usage : $unique_implementation_key = $obj->primary_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Function: Returns the unique id for this object in this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 implementation. This allows implementations to manage their
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 own object ids in a way the implementaiton can control
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 clients can expect one id to map to one object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 For sequences with no accession number, this method should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 return a stringified memory location.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 sub primary_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 my ($obj,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 $obj->{'primary_id'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 if( ! exists $obj->{'primary_id'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 return "$obj";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 return $obj->{'primary_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 =head2 display_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Title : display_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Usage : $id = $obj->display_name or $obj->display_name($newid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Function: Gets or sets the display id, also known as the common name of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 the Seq object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 The semantics of this is that it is the most likely string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 to be used as an identifier of the sequence, and likely to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 have "human" readability. The id is equivalent to the LOCUS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 field of the GenBank/EMBL databanks and the ID field of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 Swissprot/sptrembl database. In fasta format, the >(\S+) is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 presumed to be the id, though some people overload the id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 to embed other information. Bioperl does not use any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 embedded information in the ID field, and people are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 encouraged to use other mechanisms (accession field for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 example, or extending the sequence object) to solve this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 Notice that $seq->id() maps to this function, mainly for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 legacy/convenience issues.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 Args : None or a new id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 Note, this used to be called display_id(), and this name is preserved for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 backward compatibility. The default is to return the seq_id().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 sub display_name { shift->seq_id }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 *display_id = \&display_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 =head2 accession_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 Title : accession_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 Usage : $unique_biological_key = $obj->accession_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 Function: Returns the unique biological id for a sequence, commonly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 called the accession_number. For sequences from established
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 databases, the implementors should try to use the correct
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 accession number. Notice that primary_id() provides the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 unique id for the implemetation, allowing multiple objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 to have the same accession number in a particular implementation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 For sequences with no accession number, this method should return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 "unknown".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 sub accession_number {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 return 'unknown';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 =head2 alphabet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 Title : alphabet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 Usage : if( $obj->alphabet eq 'dna' ) { /Do Something/ }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 Function: Returns the type of sequence being one of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 'dna', 'rna' or 'protein'. This is case sensitive.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 This is not called <type> because this would cause
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 upgrade problems from the 0.5 and earlier Seq objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 Returns : a string either 'dna','rna','protein'. NB - the object must
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 make a call of the type - if there is no type specified it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 has to guess.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 sub alphabet{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 return 'dna'; # no way this will be anything other than dna!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 =head2 desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 Title : desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 Usage : $seqobj->desc($string) or $seqobj->desc()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 Function: Sets or gets the description of the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 Returns : The description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 Args : The description or none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 sub desc { shift->asString }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 =head2 species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 Title : species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 Usage : $species = $seq->species() or $seq->species($species)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 Function: Gets or sets the species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 Returns : Bio::Species object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 Args : None or Bio::Species object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 See L<Bio::Species> for more information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 sub species {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 my ($self, $species) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 if ($species) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 $self->{'species'} = $species;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 return $self->{'species'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 =head2 annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 Title : annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 Usage : $ann = $seq->annotation or $seq->annotation($annotation)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 Function: Gets or sets the annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 Returns : Bio::Annotation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 Args : None or Bio::Annotation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 See L<Bio::Annotation> for more information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 sub annotation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 my ($obj,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 if( defined $value || ! defined $obj->{'annotation'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 $value = new Bio::Annotation::Collection() unless defined $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 $obj->{'annotation'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 return $obj->{'annotation'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 =head2 is_circular
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 Title : is_circular
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 Usage : if( $obj->is_circular) { /Do Something/ }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 Function: Returns true if the molecule is circular
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 Returns : Boolean value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 sub is_circular{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 =head1 BUGS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 Report them please.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 L<bioperl>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 Lincoln Stein E<lt>lstein@cshl.orgE<gt>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 Copyright (c) 2001 Cold Spring Harbor Laboratory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 This library is free software; you can redistribute it and/or modify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 Jason Stajich E<lt>jason@bioperl.orgE<gt>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862