annotate variant_effect_predictor/Bio/Seq/QualI.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 # $Id: QualI.pm,v 1.4 2002/10/22 07:38:40 lapp Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # BioPerl module for Bio::Seq::QualI
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Cared for by Chad Matsalla <bioinformatics@dieselwurks.com
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 # Copyright Chad Matsalla
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 Bio::Seq::QualI - Interface definition for a Bio::Seq::Qual
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 # get a Bio::Seq::Qual compliant object somehow
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 # to test this is a seq object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 $obj->isa("Bio::Seq::QualI") || $obj->throw("$obj does not implement the Bio::Seq::QualI interface");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 # accessors
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 $string = $obj->qual();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 $substring = $obj->subqual(12,50);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 $display = $obj->display_id(); # for human display
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 $id = $obj->primary_id(); # unique id for this object, implementation defined
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 $unique_key= $obj->accession_number();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 # unique biological id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 This object defines an abstract interface to basic quality
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 information. PrimaryQual is an object just for the quality and its
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 name(s), nothing more. There is a pure perl implementation of this in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 Bio::Seq::PrimaryQual. If you just want to use Bio::Seq::PrimaryQual
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 objects, then please read that module first. This module defines the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 interface, and is of more interest to people who want to wrap their own
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 Perl Objects/RDBs/FileSystems etc in way that they "are" bioperl quality
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 objects, even though it is not using Perl to store the sequence etc.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 This interface defines what bioperl consideres necessary to "be" a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 sequence of qualities, without providing an implementation of this. (An
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 implementation is provided in Bio::Seq::PrimaryQual). If you want to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 provide a Bio::Seq::PrimaryQual 'compliant' object which in fact wraps
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 another object/database/out-of-perl experience, then this is the correct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 thing to wrap, generally by providing a wrapper class which would inheriet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 from your object and this Bio::Seq::QualI interface. The wrapper
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 class then would have methods lists in the "Implementation Specific
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 Functions" which would provide these methods for your object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 User feedback is an integral part of the evolution of this and other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 Bioperl modules. Send your comments and suggestions preferably to one
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 of the Bioperl mailing lists. Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 http://bio.perl.org/MailList.html - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 Report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 the bugs and their resolution. Bug reports can be submitted via email
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 bioperl-bugs@bio.perl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 =head1 AUTHOR - Chad Matsalla
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 This module is heavily based on Bio::Seq::PrimarySeq and is modeled after
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 or outright copies sections of it. Thanks Ewan!
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 Email bioinformatics@dieselwurks.com
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 The rest of the documentation details each of the object methods.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 # Let the code begin...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 package Bio::Seq::QualI;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 use Carp;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 =head1 Implementation Specific Functions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 These functions are the ones that a specific implementation must
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 define.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 =head2 qual()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 Title : qual()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 Usage : @quality_values = @{$obj->qual()};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 Function: Returns the quality as a reference to an array containing the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 quality values. The individual elements of the quality array are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 not validated and can be any numeric value.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 Returns : A reference to an array.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 Status :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 sub qual {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 $self->throw("Bio::Seq::QualI definition of qual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 confess("Bio::Seq::QualI definition of qual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 =head2 subqual($start,$end)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 Title : subqual($start,$end)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 Usage : @subset_of_quality_values = @{$obj->subseq(10,40)};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 Function: returns the quality values from $start to $end, where the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 first value is 1 and the number is inclusive, ie 1-2 are the first
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 two bases of the sequence. Start cannot be larger than end but can
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 be equal.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 Returns : A reference to an array.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 Args : a start position and an end position
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 sub subqual {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 $self->throw("Bio::Seq::QualI definition of subqual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 confess("Bio::Seq::QualI definition of subqual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 =head2 display_id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 Title : display_id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 Usage : $id_string = $obj->display_id() _or_
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 $id_string = $obj->display_id($new_display_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 Function: Returns the display id, aka the common name of the Quality
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 The semantics of this is that it is the most likely string to be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 used as an identifier of the quality sequence, and likely to have
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 "human" readability. The id is equivalent to the ID field of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 GenBank/EMBL databanks and the id field of the Swissprot/sptrembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 database. In fasta format, the >(\S+) is presumed to be the id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 though some people overload the id to embed other information.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 Bioperl does not use any embedded information in the ID field,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 and people are encouraged to use other mechanisms (accession field
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 for example, or extending the sequence object) to solve this.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 Notice that $seq->id() maps to this function, mainly for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 legacy/convience issues
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Returns : A string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 Args : If an arg is provided, it will replace the existing display_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 in the object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 sub display_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 $self->throw("Bio::Seq::QualI definition of id - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 confess("Bio::Seq::QualI definition of id - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 =head2 accession_number()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 Title : accession_number()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Usage : $unique_biological_key = $obj->accession_number(); _or_
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 $unique_biological_key = $obj->accession_number($new_acc_num);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 Function: Returns the unique biological id for a sequence, commonly
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 called the accession_number. For sequences from established
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 databases, the implementors should try to use the correct
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 accession number. Notice that primary_id() provides the unique id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 for the implemetation, allowing multiple objects to have the same
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 accession number in a particular implementation. For sequences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 with no accession number, this method should return "unknown".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 Returns : A string.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 Args : If an arg is provided, it will replace the existing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 accession_number in the object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 sub accession_number {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 my ($self,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 $self->throw("Bio::Seq::QualI definition of seq - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 confess("Bio::Seq::QualI definition of seq - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 =head2 primary_id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 Title : primary_id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 Usage : $unique_implementation_key = $obj->primary_id(); _or_
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 $unique_implementation_key = $obj->primary_id($new_prim_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 Function: Returns the unique id for this object in this implementation.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 This allows implementations to manage their own object ids in a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 way the implementaiton can control clients can expect one id to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 map to one object. For sequences with no accession number, this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 method should return a stringified memory location.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 Returns : A string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 Args : If an arg is provided, it will replace the existing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 primary_id in the object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 sub primary_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 my ($self,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 $self->throw("Bio::Seq::QualI definition of qual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 confess("Bio::Seq::QualI definition of qual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 =head2 can_call_new()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 Title : can_call_new()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 Usage : if( $obj->can_call_new ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 $newobj = $obj->new( %param );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 Function: can_call_new returns 1 or 0 depending on whether an
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 implementation allows new constructor to be called. If a new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 constructor is allowed, then it should take the followed hashed
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 constructor list.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 $myobject->new( -qual => $quality_as_string,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 -display_id => $id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 -accession_number => $accession,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 Returns : 1 or 0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 sub can_call_new{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 my ($self,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 # we default to 0 here
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 =head2 qualat($position)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 Title : qualat($position)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 Usage : $quality = $obj->qualat(10);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 Function: Return the quality value at the given location, where the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 first value is 1 and the number is inclusive, ie 1-2 are the first
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 two bases of the sequence. Start cannot be larger than end but can
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 be equal.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 Returns : A scalar.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 Args : A position.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 sub qualat {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 if( $self->can('warn') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 $self->warn("Bio::Seq::QualI definition of qualat - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 warn("Bio::Seq::QualI definition of qualat - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 return '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 =head1 Optional Implementation Functions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 The following functions rely on the above functions. A implementing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 class does not need to provide these functions, as they will be
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 provided by this class, but is free to override these functions.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 All of revcom(), trunc(), and translate() create new sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 objects. They will call new() on the class of the sequence object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 instance passed as argument, unless can_call_new() returns FALSE. In
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 the latter case a Bio::PrimarySeq object will be created. Implementors
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 which really want to control how objects are created (eg, for object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 persistence over a database, or objects in a CORBA framework), they
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 are encouraged to override these methods
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 =head2 revcom
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 Title : revcom
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 Usage : @rev = @{$qual->revcom()};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 Function: Produces a new Bio::Seq::QualI implementing object which
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 is reversed from the original quality array.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 The id is the same id as the orginal sequence, and the accession number
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 is also indentical. If someone wants to track that this sequence has
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 been reversed, it needs to define its own extensions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 To do an inplace edit of an object you can go:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 $qual = $qual->revcom();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 This of course, causes Perl to handle the garbage collection of the old
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 object, but it is roughly speaking as efficient as an inplace edit.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 Returns : A new (fresh) Bio::Seq::PrimaryQualI object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 sub revcom{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 # this is the cleanest way
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 my @qualities = @{$self->seq()};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 my @reversed_qualities = reverse(@qualities);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 my $seqclass;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 if($self->can_call_new()) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 $seqclass = ref($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 $seqclass = 'Bio::Seq::PrimaryQual';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 # Wassat?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 # $self->_attempt_to_load_Seq();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 # the \@reverse_qualities thing works simply because I will it to work.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 my $out = $seqclass->new( '-qual' => \@reversed_qualities,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 '-display_id' => $self->display_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 '-accession_number' => $self->accession_number,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 '-desc' => $self->desc()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 return $out;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 =head2 trunc()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 Title : trunc
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 Usage : $subseq = $myseq->trunc(10,100);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 Function: Provides a truncation of a sequence,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 Returns : a fresh Bio::Seq::QualI implementing object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 Args : Two integers denoting first and last base of the sub-sequence.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 sub trunc {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 my ($self,$start,$end) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 if( !$end ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 $self->throw("trunc start,end");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 confess("[$self] trunc start,end");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 if( $end < $start ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 $self->throw("$end is smaller than $start. if you want to truncated and reverse complement, you must call trunc followed by revcom. Sorry.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 confess("[$self] $end is smaller than $start. If you want to truncated and reverse complement, you must call trunc followed by revcom. Sorry.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 my $r_qual = $self->subqual($start,$end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 my $seqclass;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 if($self->can_call_new()) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 $seqclass = ref($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 $seqclass = 'Bio::Seq::PrimaryQual';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 # wassat?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 # $self->_attempt_to_load_Seq();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 my $out = $seqclass->new( '-qual' => $r_qual,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 '-display_id' => $self->display_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397 '-accession_number' => $self->accession_number,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 '-desc' => $self->desc()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 return $out;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 =head2 translate()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 Title : translate()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 Usage : $protein_seq_obj = $dna_seq_obj->translate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 #if full CDS expected:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 $protein_seq_obj = $cds_seq_obj->translate(undef,undef,undef,undef,1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 Function: Completely useless in this interface.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 Returns : Nothing.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 Args : Nothing.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 sub translate {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 =head2 id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 Title : id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 Usage : $id = $qual->id()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 Function: ID of the quality. This should normally be (and actually is in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 the implementation provided here) just a synonym for display_id().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 Returns : A string.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 sub id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436 my ($self)= @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 return $self->display_id();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 =head2 length()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 Title : length()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 Usage : $length = $qual->length();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 Function: Return the length of the array holding the quality values.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 Under most circumstances, this should match the number of quality
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 values but no validation is done when the PrimaryQual object is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 constructed and non-digits could be put into this array. Is this a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 bug? Just enough rope...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 Returns : A scalar (the number of elements in the quality array).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450 Args : None.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 sub length {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455 my ($self)= @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457 $self->throw("Bio::Seq::QualI definition of length - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459 confess("Bio::Seq::QualI definition of length - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464 =head2 desc()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466 Title : desc()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467 Usage : $qual->desc($newval);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468 $description = $seq->desc();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469 Function: Get/set description text for a qual object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471 Returns : value of desc
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476 sub desc {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478 if( $self->can('warn') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479 $self->warn("Bio::Seq::QualI definition of desc - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 warn("Bio::Seq::QualI definition of desc - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 return '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 # These methods are here for backward compatibility with the old, 0.5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487 # Seq objects. They all throw warnings that someone is using a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 # deprecated method, and may eventually be removed completely from
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489 # this object. However, they are important to ease the transition from
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 # the old system.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492 =head1 Private functions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494 These are some private functions for the PrimarySeqI interface. You do not
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495 need to implement these functions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497 =head2 _attempt_to_load_Seq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499 Title : _attempt_to_load_Seq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500 Usage :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503 Returns :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 sub _attempt_to_load_Seq{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512 if( $main::{'Bio::Seq::PrimaryQual'} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513 return 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515 eval {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516 require Bio::Seq::PrimaryQual;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518 if( $@ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 $self->throw("Bio::Seq::PrimaryQual could not be loaded for $self\nThis indicates that you are using Bio::Seq::PrimaryQualI without Bio::Seq::PrimaryQual loaded and without providing a complete solution\nThe most likely problem is that there has been a misconfiguration of the bioperl environment\nActual exception\n\n$@\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522 confess("Bio::Seq::PrimarySeq could not be loaded for $self\nThis indicates that you are usnig Bio::Seq::PrimaryQualI without Bio::Seq::PrimaryQual loaded and without providing a complete solution\nThe most likely problem is that there has been a misconfiguration of the bioperl environment\nActual exception\n\n$@\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526 return 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
529 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
530
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
531
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
532 =head2 qualtype()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
533
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
534 Title : qualtype()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
535 Usage : if( $obj->qualtype eq 'phd' ) { /Do Something/ }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
536 Function: At this time, this function is not used for
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
537 Bio::Seq::PrimaryQual objects. In fact, now it is a month later and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
538 I just completed the Bio::Seq::SeqWithQuality object and this is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
539 definitely deprecated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
540 Returns : Nothing. (not implemented)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
541 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
542 Status : Virtual
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
543
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
544
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
545 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
546
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
547 sub qualtype {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
548 my ($self,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
549 if( $self->can('throw') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
550 # $self->throw("Bio::Seq::QualI definition of qual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
551 $self->throw("qualtypetype is not used with quality objects.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
552 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
553 # confess("Bio::Seq::QualI definition of qual - implementing class did not provide this method");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
554 confess("qualtype is not used with quality objects.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
555 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
556
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
557
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
558 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
559
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
560
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
561
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
562
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
563 1;