annotate variant_effect_predictor/Bio/Seq/PrimaryQual.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: PrimaryQual.pm,v 1.17 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::PrimaryQual
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::PrimaryQual - Bioperl lightweight Quality Object
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 use Bio::Seq::PrimaryQual;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # you can use either a space-delimited string for quality
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 my $string_quals = "10 20 30 40 50 40 30 20 10";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 my $qualobj = Bio::Seq::PrimaryQual->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 ( '-qual' => $string_quals,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 '-id' => 'QualityFragment-12',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 '-accession_number' => 'X78121',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 # _or_ you can use an array of quality values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 my @q2 = split/ /,$string_quals;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 $qualobj = Bio::Seq::PrimaryQual->new( '-qual' => \@q2,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 '-primary_id' => 'chads primary_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 '-desc' => 'chads desc',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 '-accession_number' => 'chads accession_number',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 '-id' => 'chads id'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 # to get the quality values out:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 my @quals = @{$qualobj->qual()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 # to give _new_ quality values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 my $newqualstring = "50 90 1000 20 12 0 0";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 $qualobj->qual($newqualstring);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 This module provides a mechanism for storing quality
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 values. Much more useful as part of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 Bio::Seq::SeqWithQuality where these quality values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 are associated with the sequence information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =head1 AUTHOR - Chad Matsalla
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 Email bioinformatics@dieselwurks.com
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 package Bio::Seq::PrimaryQual;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 use vars qw(@ISA %valid_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use Bio::Seq::QualI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 @ISA = qw(Bio::Root::Root Bio::Seq::QualI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =head2 new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Title : new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Usage : $qual = Bio::Seq::PrimaryQual->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 ( -qual => '10 20 30 40 50 50 20 10',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 -id => 'human_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 -accession_number => 'AL000012',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Function: Returns a new Bio::Seq::PrimaryQual object from basic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 constructors, being a string _or_ a reference to an array for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 sequence and strings for id and accession_number. Note that you
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 can provide an empty quality string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Returns : a new Bio::Seq::PrimaryQual object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 my ($class, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 # default: turn ON the warnings (duh)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 my($qual,$id,$acc,$pid,$desc,$given_id) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 $self->_rearrange([qw(QUAL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 DISPLAY_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 ACCESSION_NUMBER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 PRIMARY_ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 DESC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 )],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 if( defined $id && defined $given_id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 if( $id ne $given_id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $self->throw("Provided both id and display_id constructor functions. [$id] [$given_id]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 if( defined $given_id ) { $id = $given_id; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 # note: the sequence string may be empty
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $self->qual($qual ? $qual : []);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 $id && $self->display_id($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 $acc && $self->accession_number($acc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 $pid && $self->primary_id($pid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $desc && $self->desc($desc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =head2 qual()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Title : qual()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 Usage : @quality_values = @{$obj->qual()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Function: Returns the quality as a reference to an array containing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 quality values. The individual elements of the quality array are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 not validated and can be any numeric value.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Returns : A reference to an array.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 sub qual {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 if( ! defined $value || length($value) == 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 $self->{'qual'} ||= [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 } elsif( ref($value) =~ /ARRAY/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 # if the user passed in a reference to an array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 $self->{'qual'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 } elsif(! $self->validate_qual($value)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 $self->throw("Attempting to set the quality to [$value] which does not look healthy");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 $self->{'qual'} = [split(/\s+/,$value)];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 return $self->{'qual'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 =head2 validate_qual($qualstring)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Title : validate_qual($qualstring)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Usage : print("Valid.") if { &validate_qual($self,$qualities); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Function: Make sure that the quality, if it has length > 0, contains at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 least one digit. Note that quality strings are parsed into arrays
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 using split/\d+/,$quality_string, so make sure that your quality
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 scalar looks like this if you want it to be parsed properly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Returns : 1 for a valid sequence (WHY? Shouldn\'t it return 0? <boggle>)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Args : a scalar (any scalar, why PrimarySeq author?) and a scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 containing the string to validate.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 sub validate_qual {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 # how do I validate quality values?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 # \d+\s+\d+..., I suppose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 my ($self,$qualstr) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 # why the CORE?? -- (Because Bio::PrimarySeqI namespace has a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 # length method, you have to qualify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 # which length to use)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 return 0 if (!defined $qualstr || CORE::length($qualstr) <= 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 return 1 if( $qualstr =~ /\d/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 =head2 subqual($start,$end)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Title : subqual($start,$end)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Usage : @subset_of_quality_values = @{$obj->subqual(10,40)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Function: returns the quality values from $start to $end, where the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 first value is 1 and the number is inclusive, ie 1-2 are the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 first two bases of the sequence. Start cannot be larger than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 end but can be equal.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Returns : A reference to an array.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 Args : a start position and an end position
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 sub subqual {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my ($self,$start,$end) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 if( $start > $end ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $self->throw("in subqual, start [$start] has to be greater than end [$end]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 if( $start <= 0 || $end > $self->length ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $self->throw("You have to have start positive and length less than the total length of sequence [$start:$end] Total ".$self->length."");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 # remove one from start, and then length is end-start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $start--;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $end--;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 my @sub_qual_array = @{$self->{qual}}[$start..$end];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 # return substr $self->seq(), $start, ($end-$start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 return \@sub_qual_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 =head2 display_id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Title : display_id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Usage : $id_string = $obj->display_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Function: returns the display id, aka the common name of the Quality
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 The semantics of this is that it is the most likely string to be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 used as an identifier of the quality sequence, and likely to have
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 "human" readability. The id is equivalent to the ID field of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 GenBank/EMBL databanks and the id field of the Swissprot/sptrembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 database. In fasta format, the >(\S+) is presumed to be the id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 though some people overload the id to embed other information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 Bioperl does not use any embedded information in the ID field,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 and people are encouraged to use other mechanisms (accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 field for example, or extending the sequence object) to solve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 this. Notice that $seq->id() maps to this function, mainly for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 legacy/convience issues
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 sub display_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 my ($obj,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $obj->{'display_id'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 return $obj->{'display_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 =head2 accession_number()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Title : accession_number()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Usage : $unique_biological_key = $obj->accession_number();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Function: Returns the unique biological id for a sequence, commonly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 called the accession_number. For sequences from established
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 databases, the implementors should try to use the correct
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 accession number. Notice that primary_id() provides the unique id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 for the implemetation, allowing multiple objects to have the same
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 accession number in a particular implementation. For sequences
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 with no accession number, this method should return "unknown".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 sub accession_number {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 my( $obj, $acc ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 if (defined $acc) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $obj->{'accession_number'} = $acc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 $acc = $obj->{'accession_number'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $acc = 'unknown' unless defined $acc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 return $acc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 =head2 primary_id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 Title : primary_id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 Usage : $unique_implementation_key = $obj->primary_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 Function: Returns the unique id for this object in this implementation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 This allows implementations to manage their own object ids in a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 way the implementaiton can control clients can expect one id to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 map to one object. For sequences with no accession number, this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 method should return a stringified memory location.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 sub primary_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my ($obj,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $obj->{'primary_id'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 return $obj->{'primary_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 =head2 desc()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 Title : desc()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Usage : $qual->desc($newval);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $description = $qual->desc();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 Function: Get/set description text for a qual object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 Returns : Value of desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 sub desc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 my ($obj,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 $obj->{'desc'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 return $obj->{'desc'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 =head2 id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Title : id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Usage : $id = $qual->id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 Function: Return the ID of the quality. This should normally be (and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 actually is in the implementation provided here) just a synonym
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 for display_id().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Returns : A string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 Args : None.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 sub id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 if( defined $value ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 return $self->display_id($value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 return $self->display_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 =head2 length()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Title : length()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 Usage : $length = $qual->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 Function: Return the length of the array holding the quality values.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 Under most circumstances, this should match the number of quality
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 values but no validation is done when the PrimaryQual object is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 constructed and non-digits could be put into this array. Is this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 a bug? Just enough rope...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 Returns : A scalar (the number of elements in the quality array).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 Args : None.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 sub length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 if (ref($self->{qual}) ne "ARRAY") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 $self->warn("{qual} is not an array here. Why? It appears to be ".ref($self->{qual})."(".$self->{qual}."). Good thing this can _never_ happen.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 return scalar(@{$self->{qual}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 =head2 qualat($position)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Title : qualat($position)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 Usage : $quality = $obj->qualat(10);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Function: Return the quality value at the given location, where the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 first value is 1 and the number is inclusive, ie 1-2 are the first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 two bases of the sequence. Start cannot be larger than end but can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 be equal.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 Returns : A scalar.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 Args : A position.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 sub qualat {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my ($self,$val) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 my @qualat = @{$self->subqual($val,$val)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 if (scalar(@qualat) == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 return $qualat[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 $self->throw("AAAH! qualat provided more then one quality.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 =head2 to_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 Title : to_string()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Usage : $quality = $obj->to_string();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Function: Return a textual representation of what the object contains.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 For this module, this function will return:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 qual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 display_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 accession_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 primary_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Returns : A scalar.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 Args : None.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 sub to_string {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my ($self,$out,$result) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 $out = "qual: ".join(',',@{$self->qual()});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 foreach (qw(display_id accession_number primary_id desc id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $result = $self->$_();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 if (!$result) { $result = "<unset>"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $out .= "$_: $result\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 sub to_string_automatic {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 my ($self,$sub_result,$out) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 foreach (sort keys %$self) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 print("Working on $_\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 eval { $self->$_(); };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 if ($@) { $sub_result = ref($_); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 elsif (!($sub_result = $self->$_())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 $sub_result = "<unset>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 if (ref($sub_result) eq "ARRAY") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 print("This thing ($_) is an array!\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $sub_result = join(',',@$sub_result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 $out .= "$_: ".$sub_result."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 1;