#!/usr/perl/perl580/bin/perl 

use Algorithm::Cluster;

$|++;

$^W = 1;
use strict;

my $weight2 =  [ 1,1 ];

my $data2 =  [

	[ 1.1, 1.2 ],
	[ 1.4, 1.3 ],
	[ 1.1, 1.5 ],
	[ 2.0, 1.5 ],
	[ 1.7, 1.9 ],
	[ 1.7, 1.9 ],
	[ 5.7, 5.9 ],
	[ 5.7, 5.9 ],
	[ 3.1, 3.3 ],
	[ 5.4, 5.3 ],
	[ 5.1, 5.5 ],
	[ 5.0, 5.5 ],
	[ 5.1, 5.2 ],
];

my $mask2 =  [

	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
	[ 1, 1 ],
];

my $data3 =  [

        [ 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 $mask3 =  [

        [ 1, 1, 1, 1, 1, ], 
        [ 1, 1, 1, 1, 1, ], 
        [ 1, 1, 1, 1, 1, ], 
        [ 1, 1, 1, 1, 1, ], 
];

my $weight3 =  [ 1,1,1,1,1 ];

print "--------------[pairwise average linkage]-------\n";

my %params = (

	applyscale =>         0,
	transpose  =>         0,
	method     =>       'a',
	dist       =>       'e',
	data      =>    $data2,
	mask      =>    $mask2,
	weight    =>  $weight2,
);

my ($result, $linkdist);
my ($i,$j);

($result, $linkdist) = Algorithm::Cluster::treecluster(%params);

$i=0;
foreach(@{$result}) {
	printf("%2d: %3d %3d %7.3f\n",$i,$_->[0],$_->[1],$linkdist->[$i]);
	++$i;
}

print "--------------[pairwise single linkage]-------\n";
$params{method} = 's';

($result, $linkdist) = Algorithm::Cluster::treecluster(%params);

$i=0;
foreach(@{$result}) {
	printf("%2d: %3d %3d %7.3f\n",$i,$_->[0],$_->[1],$linkdist->[$i]);
	++$i;
}

print "--------------[pairwise centroid linkage]-------\n";
$params{method} = 'c';

($result, $linkdist) = Algorithm::Cluster::treecluster(%params);

$i=0;
foreach(@{$result}) {
	printf("%2d: %3d %3d %7.3f\n",$i,$_->[0],$_->[1],$linkdist->[$i]);
	++$i;
}

print "--------------[pairwise maximum linkage]-------\n";
$params{method} = 'm';

($result, $linkdist) = Algorithm::Cluster::treecluster(%params);

$i=0;
foreach(@{$result}) {
	printf("%2d: %3d %3d %7.3f\n",$i,$_->[0],$_->[1],$linkdist->[$i]);
	++$i;
}


__END__
