Home > sharc

sharc

Sharc is a project mainly written in GAME MAKER LANGUAGE and PERL, it's free.

Sharper Heuristic for Assignment of Robust Communities

h1. SHARC (Sharper Heuristic for Assignment of Robust Communities)

This is the source code and simulation framework for the SHARC community assignment algorithm.

h2. Community assignment

The @assignment.pl@ file performs community assignment on static or dynamic networks using various distributed algorithm.

assignment.pl [-h|--help] [-v|--verbose] [--version]
    (-n|--network network_file [-n|--network network_file_2 ...] | -r|--rand N,k,s)
    -a|--algorithm algorithm_name [-a|--algorithm algorithm_name ...]
    [-e|--extra parameter[=value] [-e|--extra parameter[=value] ...]]
    [--stability criterion] [-m|--metrics MET [-m|--metrics MET ...]]
    [-l|--logpath path_to_log_dir] [-o|--outpath path_to_out_dir]
    [-s|--seed n|n..m|n..m+k] [-u|--ubigraph] [-g|--graphviz]

    --help, -h          : Print this help, then exit
    --version           : Print the script version, then exit
    --verbose, -v       : Enable user information output to STDOUT

    --network, -n       : Path to network description file. The kind of the
                          network file is guessed and properly interpreted.
                          Repeat option for several network files.
    --rand, -r          : Generate n Erdös-Rényi undirected random graphs with
                          N nodes, and average degree of k.
                          The agrument for should be "-r N,k,s"
                          NOTE: when this option is active, any -n options
                          are not parsed.
    --algorithm, -a     : Name of the algorithm to execute. Repeat option
                          for several algorithms.
    --tree-algorithm, -t: Name of the minimum spanning tree algorithm to
                          execute. 
    --extra, -e         : Extra algorithm parameters. Can be of the form
                          i)   parameter: set parameter to 1 (true)
                          ii)  parameter=value: set parameter to value
                          Repeat option multiple times to define several extra
                          parameters. When same parameter is given multiple times,
                          only the last entry is meaningful.
    --stability         : Stability criterion to use as link weight in weighted
                          networks. This is updated at each iteration step
    --metric, -m        : Metric used to evaluate the algorithm. Repeat option
                          for several metrics.
                          Available metrics: D (distribution), Q (modularity),
                          WQ (weighted modularity), NMI (normalized mutual information),
                          D (community size distribution), A (complete assignment).
    --logpath, -l       : path to save the generated log file (Default: ./log)
    --outpath, -o       : path to save the generated output file (Default: ./out)
    --seed, -s          : Value(s) of the seed used to initialize the random
                          number generators. Can be of three forms :
                          i)   n: number "n" is used
                          ii)  n..m: all numbers between n and m (included)
                               are used (leading to m-n simulations)
                          iii) n..m+k : all numbers starting at n, incremented
                               by k and lesser or equal to m are used
    --ubigraph, -u      : Use UbiGraph for dynamic 3D visualization of
                          assignment process
    --graphviz, -g      : Use tge GraphViz program to generate one graph
                          snapshot per iteration.

    NOTE: if N networks, A algorithms and S seeds are specified, then the
    script will be executed once for all the N*A*S unique configurations.

The available alogrithms are @synchronous@, @asynchronous@, @leung@, @leungsync@ (synchronous version of the Leung algorithm), @ecdns@ (which is the name of SHARC, without dynamic networks-related enhancements).

h2. Performance evaluation

Performances of the various algorithms can be analyzed using the @analyzer.pl@ script.

analyzer.pl [-h|--help] [-v|--verbose] [--version]
    -f|--files files_regex [-d|--discriminant discriminant_name=index]
    [-t|--time] -m|--metric metric_name [-m|--metric metric_name ...]
    [-l|--logpath path_to_log_dir] [-o|--outpath path_to_out_dir]

    --help, -h          : Print this help, then exit
    --version           : Print the script version, then exit
    --verbose, -v       : Enable user information output to STDOUT

    --files, -f         : Regex defining the set of files to process.
    --metric, -m        : Metric to analyze. Repeat option for several metrics
                          or use "all" value to select all metrics at once.
    --discriminant, -d  : Define the name and the index of the discriminant
                          used to parse the results. Format should be
                          discriminant_name=index.
                          (Default: complete network name).
    --time, -t          : Generate time (or iteration) based results for all
                          selected metrics

    --logpath, -l       : path to read the log files from (Default: ./log)
    --outpath, -o       : path to save the generated data files (Default: ./out)

h2. License

This program is licensed under the "GPL v.3":http://www.gnu.org/licenses/ license. See previous link or @gpl-3.0.texi@ for further details.

Previous:drilld