maint: remove Travis stuff which has been replaced with Github actions (#325)
[bioperl-live.git] / t / Matrix / Matrix.t
blob2cffe051a742b95cad05fe1aaf535c2310014ac9
1 # -*-Perl-*- Test Harness script for Bioperl
2 # $Id$
4 use strict;
6 BEGIN {
7     use Bio::Root::Test;
8     
9     test_begin(-tests => 77);
10         
11         use_ok('Bio::Matrix::Generic');
12         use_ok('Bio::Matrix::IO');
15 my $raw = [ [ 0, 10, 20],
16             [ 2, 17,  4],
17             [ 3,  4,  5] ];
19 my $matrix = Bio::Matrix::Generic->new(-values => $raw,
20                                       -matrix_id  => 'fakeid00',
21                                       -matrix_name=> 'matname',
22                                       -rownames   => [qw(A B C)],
23                                       -colnames   => [qw(D E F)] );
25 is($matrix->matrix_name, 'matname');
26 is($matrix->matrix_id,   'fakeid00');
27 is($matrix->entry('A','F'), $raw->[0]->[2]);
28 my @colE = $matrix->get_column('E');
29 is($colE[0], $raw->[0]->[1]);
30 is($colE[1], $raw->[1]->[1]);
31 is($colE[2], $raw->[2]->[1]);
33 my @rowC = $matrix->get_row('C');
34 is($rowC[0], $raw->[2]->[0]);
35 is($rowC[1], $raw->[2]->[1]);
36 is($rowC[2], $raw->[2]->[2]);
38 is($matrix->row_num_for_name('A'),0);
39 is($matrix->column_num_for_name('D'),0);
41 is($matrix->row_header(1),'B');
42 is($matrix->column_header(0),'D');
44 is($matrix->add_row(1, 'b', [qw(21 13 14)]),4);
45 is($matrix->add_column(2, 'f', [qw(71 81 14 3)]),4);
47 is($matrix->add_row(4, 'c', [qw(22 11 17)]),5);
48 is($matrix->remove_row(4),4);
50 is($matrix->add_column(4, 'g', [qw(11 10 100 71)]),5);
51 is($matrix->remove_column(4),4);
53 is($matrix->row_num_for_name('B'),2);
54 is($matrix->row_num_for_name('b'),1);
56 is($matrix->column_num_for_name('D'),0);
57 is($matrix->column_num_for_name('F'),3);
58 is($matrix->column_num_for_name('f'),2);
60 is($matrix->row_header(2),'B');
62 is($matrix->column_header(3),'F');
64 is($matrix->get_entry('b', 'f'), 81);
67 # read in a scoring matrix
69 my $io = Bio::Matrix::IO->new(-format => 'scoring',
70                               -file   => test_input_file('BLOSUM50'));
71 my $blosum_matrix = $io->next_matrix;
72 isa_ok($blosum_matrix,'Bio::Matrix::Scoring');
73 is($blosum_matrix->entropy, 0.4808);
74 is($blosum_matrix->expected_score, -0.3573);
75 is($blosum_matrix->scale, '1/3');
76 is($blosum_matrix->get_entry('*','A'), -5);
77 is($blosum_matrix->get_entry('V','Y'), -1);
78 is($blosum_matrix->get_entry('Y','V'), -1);
79 is($blosum_matrix->get_entry('L','I'), 2);
80 my @diag = $blosum_matrix->get_diagonal;
81 is($diag[2],7);
82 my @row = $blosum_matrix->get_row('D');
83 is($row[5], $blosum_matrix->get_entry('D','Q'));
84 is($blosum_matrix->num_rows,24);
85 is($blosum_matrix->num_columns,24);
87 $io = Bio::Matrix::IO->new(-format => 'scoring',
88                            -file   => test_input_file('PAM250'));
89 my $pam_matrix = $io->next_matrix;
90 isa_ok($pam_matrix, 'Bio::Matrix::Scoring');
91 is($pam_matrix->entropy, 0.354);
92 is($pam_matrix->expected_score, -0.844);
93 is($pam_matrix->scale, 'ln(2)/3');
94 is($pam_matrix->num_rows,24);
95 is($pam_matrix->get_entry('G','*'), -8);
96 is($pam_matrix->get_entry('V','Y'), -2);
97 is($pam_matrix->get_entry('Y','V'), -2);
98 is($pam_matrix->get_entry('L','I'), 2);
99 @diag = $pam_matrix->get_diagonal;
100 is($diag[2],2);
101 @row = $pam_matrix->get_row('D');
102 is($row[5], $pam_matrix->get_entry('D','Q'));
104 # test Phylip parsing
106 $io = Bio::Matrix::IO->new(-format  => 'phylip',
107                           -program => 'phylipdist',
108                           -file    => test_input_file('phylipdist.out'));
110 my $phy = $io->next_matrix;
111 is $phy->program, 'phylipdist';
112 is $phy->get_entry('Alpha','Beta'), '4.23419';
113 is $phy->get_entry('Gamma','Alpha'),'3.63330';
115 my @column =  $phy->get_column('Alpha');
116 is $column[0], '0.00000';
117 is $column[1], '4.23419';
118 is $column[2], '3.63330';
119 is $column[3], '6.20865';
120 is $column[4], '3.45431';
122 @row    = $phy->get_row('Gamma');
123 is $row[0], '3.63330';
124 is $row[1], '3.49289';
125 is $row[2], '0.00000';
126 is $row[3], '3.68733';
127 is $row[4], '5.84929';
129 @diag   = $phy->get_diagonal;
131 is $diag[0], '0.00000';
132 is $diag[1], '0.00000';
133 is $diag[2], '0.00000';
134 is $diag[3], '0.00000';
135 is $diag[4], '0.00000';
138 # test mlagan parsing
140 $io = Bio::Matrix::IO->new(-format => 'mlagan',
141                                                   -file   => test_input_file('nucmatrix.txt'));
143 my $mlag = $io->next_matrix;
144 is $mlag->get_entry('A', 'C'), -150;
145 is $mlag->get_entry('.', 'A'), 0;
146 is $mlag->gap_open, -300;
147 is $mlag->gap_continue, -25;
149 # test output round-trip
150 $mlag->entry('A', 'C', -149);
151 $mlag->gap_open(-150);
152 $mlag->gap_continue(-5);
154 my $out = test_output_file();
155 $io = Bio::Matrix::IO->new(-format => 'mlagan',
156                                                   -file   => ">$out");
157 $io->write_matrix($mlag);
159 $io = Bio::Matrix::IO->new(-format => 'mlagan',
160                                                   -file   => $out);
161 $mlag = $io->next_matrix;
162 is $mlag->get_entry('A', 'C'), -149;
163 is $mlag->gap_open, -150;
164 is $mlag->gap_continue, -5;