annotate variant_effect_predictor/Bio/Seq/QualI.pm @ 0:2bc9b66ada89 draft default tip

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