annotate variant_effect_predictor/Bio/Matrix/PhylipDist.pm @ 1:d6778b5d8382 draft default tip

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