Pinkhas Nisanov > Algorithm-MCL-0.003 > Algorithm::MCL

Download:
Algorithm-MCL-0.003.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Source   Latest Release: Algorithm-MCL-0.004

NAME ^

Algorithm::MCL - perl module implementing Markov Cluster Algorithm using PDL

VERSION ^

version 0.003

SYNOPSIS ^

    use Algorithm::MCL;
    
    my $obj1 = new MyClass;
    my $ref2 = {};
    my $ref3 = \"abc";
    my $ref4 = \$val1;
    my $ref5 = [];
    
    my $mcl1 = Algorithm::MCL->new();
    
    # create graph by adding edges
    $mcl1->addEdge($obj1, $ref2);
    $mcl1->addEdge($obj1, $ref3);
    $mcl1->addEdge($ref2, $ref3);
    $mcl1->addEdge($ref3, $ref4);
    $mcl1->addEdge($ref4, $ref5);

    # run MCL algorithm on created graph
    my $clusters1 = $mcl1->run();
    
    # get clusters
    foreach my $cluster ( @$clusters1 ) {
       print "Cluster size: ". scalar @$cluster. "\n";
    }
    
    
    ####################################
    
    my $val1 = \"aaa";
    my $val2 = \"bbb";
    my $val3 = \"ccc";
    my $val4 = \"ddd";
    my $val5 = \"eee";
    
    my $mcl2 = Algorithm::MCL->new();
    $mcl2->addEdge($val1, $val2);
    $mcl2->addEdge($val1, $val3);
    $mcl2->addEdge($val2, $val3);
    $mcl2->addEdge($val3, $val4);
    $mcl2->addEdge($val4, $val5);
    
    my $clusters2 = $mcl2->run();
    
    foreach my $cluster ( @$clusters2 ) {
        print "Found Cluster\n";
        foreach my $vertex ( @$cluster ) {
            print "  Cluster element: $$vertex \n";
        }
    }

DESCRIPTION ^

This module is perl implementation of Markov Cluster Algorithm (MCL) based on Perl Data Language (PDL).

MCL is algorithm of finding clusters of vertices in graph. More information about MCL can be found at http://micans.org/mcl/. There is also perl script implementing MCL - minimcl http://www.micans.org/mcl/scripts/minimcl.

This module try to solve two problems:

METHODS ^

new()

create new Algorithm::MCL object that accumulate graph edges and process data.

addEdge($ref1, $ref2, $distance)

add new edge to graph. first two parameters are reference to vertex objects. third parameter is "distance measurement" between vetices. "distance measurement" should be number between 0 and 1. if "distance measurement" is not defined it set to 1.

run()

apply MCL algorithm on graph. return reference to array that every element is reference to cluser array.

AUTHOR ^

Pinkhas Nisanov <pinkhas@nisanov.com>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2012 by Pinkhas Nisanov.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: