use Test::More tests => 20; use lib '../blib/lib','../blib/arch'; use_ok ("Algorithm::Cluster"); require_ok ("Algorithm::Cluster"); ######################### #------------------------------------------------------ # Data for Tests # #---------- # dataset # my $gweight = [ 1,1,1,1,1 ]; my $eweight = [ 1,1,1,1 ]; my $data = [ [ 1.1, 2.2, 3.3, 4.4, 5.5, ], [ 3.1, 3.2, 1.3, 2.4, 1.5, ], [ 4.1, 2.2, 0.3, 5.4, 0.5, ], [ 12.1, 2.0, 0.0, 5.0, 0.0, ], ]; my $mask = [ [ 1, 1, 1, 1, 1, ], [ 1, 1, 1, 1, 1, ], [ 1, 1, 1, 1, 1, ], [ 1, 1, 1, 1, 1, ], ]; #------------------------------------------------------ # Tests # my $matrix; #---------- # test dataset with transpose==0 # $matrix = Algorithm::Cluster::distancematrix( transpose => 0, dist => 'e', data => $data, mask => $mask, weight => $gweight, ); #---------- # Make sure that the length of $matrix matches the length of @data1 is (scalar @$data, scalar @$matrix); #---------- # Test the values in the distance matrix is (sprintf ("%7.3f", $matrix->[1]->[0] ), ' 5.800'); is (sprintf ("%7.3f", $matrix->[2]->[0] ), ' 8.800'); is (sprintf ("%7.3f", $matrix->[2]->[1] ), ' 2.600'); is (sprintf ("%7.3f", $matrix->[3]->[0] ), ' 32.508'); is (sprintf ("%7.3f", $matrix->[3]->[1] ), ' 18.628'); is (sprintf ("%7.3f", $matrix->[3]->[2] ), ' 12.908'); #---------- # test dataset with transpose==1 # $matrix = Algorithm::Cluster::distancematrix( transpose => 1, dist => 'e', data => $data, mask => $mask, weight => $eweight, ); #---------- # Make sure that the length of $matrix matches the length of @data1 is (scalar @{$data->[0]}, scalar @$matrix ); #---------- # Test the values in the distance matrix is (sprintf ("%6.2f", $matrix->[1]->[0] ), ' 26.71'); is (sprintf ("%6.2f", $matrix->[2]->[0] ), ' 42.23'); is (sprintf ("%6.2f", $matrix->[2]->[1] ), ' 3.11'); is (sprintf ("%6.2f", $matrix->[3]->[0] ), ' 15.87'); is (sprintf ("%6.2f", $matrix->[3]->[1] ), ' 6.18'); is (sprintf ("%6.2f", $matrix->[3]->[2] ), ' 13.36'); is (sprintf ("%6.2f", $matrix->[4]->[0] ), ' 45.32'); is (sprintf ("%6.2f", $matrix->[4]->[1] ), ' 5.17'); is (sprintf ("%6.2f", $matrix->[4]->[2] ), ' 1.23'); is (sprintf ("%6.2f", $matrix->[4]->[3] ), ' 12.76');