annotate variant_effect_predictor/Bio/Matrix/PhylipDist.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 # BioPerl module for Bio::Matrix::PhylipDist
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # Cared for by Shawn Hoon <shawnh@fugu-sg.org>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Copyright Shawn Hoon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 Bio::Matrix::PhylipDist - A Phylip Distance Matrix object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 use Bio::Matrix::PhylipDist;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 my $dist = Bio::Matrix::PhylipDist->new(-file=>"protdist.out",-program=>"ProtDist");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 #or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 my $dist = Bio::Matrix::PhylipDist->new(-fh=>$FH,-program=>"ProtDist");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 #get specific entries
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 my $distance_value = $dist->get_entry('ALPHA','BETA');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 my @columns = $dist->get_column('ALPHA');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 my @rows = $dist->get_row('BETA');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 my @diagonal = $dist->get_diagonal();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 #print the matrix in phylip numerical format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 print $dist->print_matrix;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 Simple object for holding Distance Matrices generated by the following Phylip programs:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 1) dnadist
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 2) protdist
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 3) restdist
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 It currently handles parsing of the matrix without the data output option.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 5
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 Alpha 0.00000 4.23419 3.63330 6.20865 3.45431
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 Beta 4.23419 0.00000 3.49289 3.36540 4.29179
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 Gamma 3.63330 3.49289 0.00000 3.68733 5.84929
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 Delta 6.20865 3.36540 3.68733 0.00000 4.43345
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 Epsilon 3.45431 4.29179 5.84929 4.43345 0.00000
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 Bioperl modules. Send your comments and suggestions preferably to one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 of the Bioperl mailing lists. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 http://bio.perl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 the bugs and their resolution. Bug reports can be submitted via email
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 bioperl-bugs@bioperl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 =head1 AUTHOR - Shawn Hoon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 Email shawnh@fugu-sg.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 methods. Internal methods are usually preceded with a "_".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 package Bio::Matrix::PhylipDist;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 use Bio::Root::IO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 @ISA = qw(Bio::Root::Root Bio::Root::IO);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 Usage : my $family = Bio::Matrix::PhylipDist->new(-file=>"protdist.out",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 -program=>"protdist");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 Function: Constructor for PhylipDist Object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 Returns : L<Bio::Matrix::PhylipDist>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 my ($class,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 my ($matrix,$values, $names,$file, $fh,$program) = $self->_rearrange([qw(MATRIX VALUES NAMES FILE FH PROGRAM)],@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 ($matrix && $values && $names) || $file || $fh || $self->throw("Need a file or file handle!");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 $program && $self->program($program);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 $self->_initialize_io(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 $self->_matrix($matrix) if $matrix;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 $self->_values($values) if $values;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 $self->names($names) if $names;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 if(!$matrix && !$values && !$names){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 $self->_parse();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 =head2 _parse
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 Title : _parse
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 Usage : $matrix->_parse();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 Function: internal method that parses the distance matrix file.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 Arguments:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 sub _parse {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 my @names;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 my @values;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 while (my $entry = $self->_readline){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 next if ($entry=~/^\s+\d+$/);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 my ($n,@line) = split( /\s+/,$entry);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 push @names, $n;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 push @values, [@line];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 my %dist;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 my $i=0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 foreach my $name(@names){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 my $j=0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 foreach my $n(@names) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 $dist{$name}{$n} = [$i,$j];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 $j++;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 $i++;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 $self->_matrix(\%dist);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 $self->names(\@names);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 $self->_values(\@values);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 =head2 get_entry
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 Title : get_entry
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 Usage : $matrix->get_entry();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 Function: returns a particular entry
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 Returns : a float
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 Arguments: string id1, string id2
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 sub get_entry {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 my ($self,$row,$column) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 $row && $column || $self->throw("Need at least 2 ids");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 my %matrix = %{$self->_matrix};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 my @values = @{$self->_values};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 if(ref $matrix{$row}{$column}){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 my ($i,$j) = @{$matrix{$row}{$column}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 return $values[$i][$j];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 =head2 get_row
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 Title : get_row
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 Usage : $matrix->get_row('ALPHA');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 Function: returns a particular row
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 Returns : an array of float
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 Arguments: string id1
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 sub get_row {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 my ($self,$row) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 $row || $self->throw("Need at least a row id");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 my %matrix = %{$self->_matrix};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 my @values = @{$self->_values};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 my @names = @{$self->names};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 $matrix{$row} || return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 my @row = %{$matrix{$row}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 my $row_pointer = $row[1]->[0];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 my $index = scalar(@names)-1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 return @{$values[$row_pointer]}[0..$index];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 =head2 get_column
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 Title : get_column
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 Usage : $matrix->get_column('ALPHA');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 Function: returns a particular column
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 Returns : an array of floats
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 Arguments: string id1
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 sub get_column {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 my ($self,$column) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 $column || $self->throw("Need at least a column id");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 my %matrix = %{$self->_matrix};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 my @values = @{$self->_values};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 my @names = @{$self->names};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 $matrix{$column} || return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 my @column = %{$matrix{$column}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 my $row_pointer = $column[1]->[0];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 my @return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 for(my $i=0; $i < scalar(@names); $i++){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 push @return, $values[$i][$row_pointer];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 return @return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 =head2 get_diagonal
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 Title : get_diagonal
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 Usage : $matrix->get_diagonal();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 Function: returns the diagonal of the matrix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 Returns : an array of float
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 Arguments: string id1
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 sub get_diagonal {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 my %matrix = %{$self->_matrix};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 my @values = @{$self->_values};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 my @return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 foreach my $name (@{$self->names}){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 my ($i,$j) = @{$matrix{$name}{$name}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 push @return,$values[$i][$j];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255 return @return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 =head2 print_matrix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 Title : print_matrix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 Usage : $matrix->print_matrix();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 Function: returns a string of the matrix in phylip format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 Returns : a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 Arguments:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 sub print_matrix {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 my @names = @{$self->names};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 my @values = @{$self->_values};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 my %matrix = %{$self->_matrix};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 my $str;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 $str.= (" "x 4). scalar(@names)."\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 foreach my $name (@names){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 my $newname = $name. (" " x (15-length($name)));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 $str.=$newname;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 my $count = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 foreach my $n (@names){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 my ($i,$j) = @{$matrix{$name}{$n}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 if($count < $#names){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282 $str.= $values[$i][$j]. " ";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 $str.= $values[$i][$j];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 $count++;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 $str.="\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 return $str;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 =head2 _matrix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 Title : _matrix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 Usage : $matrix->_matrix();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 Function: get/set for hash reference of the pointers
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 to the value matrix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 Returns : hash reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 Arguments: hash reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 sub _matrix {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 my ($self,$val) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 if($val){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 $self->{'_matrix'} = $val;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 return $self->{'_matrix'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 =head2 names
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 Title : names
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 Usage : $matrix->names();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 Function: get/set for array ref of names of sequences
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 Returns : an array reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 Arguments: an array reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 sub names {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 my ($self,$val) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 if($val){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 $self->{"_names"} = $val;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 return $self->{'_names'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 =head2 program
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 Title : program
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 Usage : $matrix->program();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 Function: get/set for the program name generating this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 matrix
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 Returns : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 Arguments: string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 sub program {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 my ($self,$val) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 if($val){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 $self->{'_program'} = $val;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 return $self->{'_program'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 =head2 _values
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 Title : _values
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 Usage : $matrix->_values();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 Function: get/set for array ref of the matrix containing
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 distance values
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 Returns : an array reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 Arguments: an array reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 sub _values {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 my ($self,$val) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 if($val){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 $self->{'_values'} = $val;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 return $self->{'_values'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373
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