annotate variant_effect_predictor/Bio/Seq/QualI.pm @ 3:d30fa12e4cc5 default tip

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