Algorithm-ClusterPoints

 view release on metacpan or  search on metacpan

example/cluster.pl  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use Algorithm::ClusterPoints;

use Data::Dumper;

my $clp = Algorithm::ClusterPoints->new(radius => 0.1, min_size => 2, ordered => 1);

while (<DATA>) {
    next if /^\s*(?:#.*)?$/;
    chomp;
    my ($x, $y) = split;
    $clp->add_point($x, $y);
}

my @clusters_ix = $clp->clusters_ix;

print Data::Dumper->Dump([\@clusters_ix], ['clusters_ix']);

for my $i (0..$#clusters_ix) {
    print( join( ' ',
                 "cluster $i:",
                 map {
                     my ($x, $y) = $clp->point_coords($_);
                     "($_: $x, $y)"
                 } @{$clusters_ix[$i]}
               ), "\n"
         );
}

my @clusters = $clp->clusters;
print Data::Dumper->Dump([\@clusters], ['clusters']);

__DATA__
0.43 0.62
0.50 0.65
0.49 0.32
0.95 0.20
0.09 0.09
0.61 0.55
0.72 0.42
0.83 0.11
0.62 0.71
0.52 0.97
0.44 0.53
0.01 0.08
0.55 0.32
0.30 0.68
0.67 0.47
0.27 0.62
0.12 0.15
0.28 0.65
0.37 0.38
0.16 0.35
0.66 0.33
0.16 0.79
0.83 0.27
0.77 0.13
0.73 0.07
0.36 0.44
0.53 0.27
0.50 0.19
0.61 0.17
0.47 0.28
0.13 0.15
0.55 0.58
0.36 0.58
0.62 0.30
0.64 0.97
0.88 0.61
0.12 0.24
0.35 0.18
0.40 0.54
0.90 0.20
0.14 0.74



( run in 1.670 second using v1.01-cache-2.11-cpan-39bf76dae61 )