annotate variant_effect_predictor/Bio/Matrix/PhylipDist.pm @ 0:1f6dce3d34e0

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