Skip to content

asrivast28/ParsiMoNe

Repository files navigation

ParsiMoNe - Parallel Construction of Module Networks

Build Apache 2.0 License DOI

ParsiMoNe (Parallel Construction of Module Networks) supports learning of module networks in parallel.

Requirements

  • gcc (with C++14 support) is used for compiling the project.
    This project has been tested only on Linux platform, using version 10.1.0.
  • Boost libraries are used for parsing the command line options, logging, and a few other purposes.
    Tested with version 1.74.0.
  • TRNG is used for generating pseudo random numbers sequentially and in parallel.
    Tested with version 4.22.
  • Armadillo is used for executing linear algebra operations during consensus clustering.
    Tested with version 9.800.3.
  • MPI is used for execution in parallel.
    Tested with MVAPICH2 version 2.3.3.
  • SCons is required for building the project.
    Tested with version 3.1.2.
  • The following repositories are used as submodules:
    • BN Utils contains common utilities for learning in parallel and scripts for post-processing.
    • mxx is used as a C++ wrapper for MPI.
    • C++ Utils are used for logging and timing.

Building

After the dependencies have been installed, the project can be built as:

scons

This will create an executable named parsimone, which can be used for constraint-based structure learning.
By default, all the paths from the environment in CPATH and LIBRARY_PATH variables are used as include paths and library paths.
Path to external includes and libraries at non-default locations can also be specified as:

scons LOCALINCLUDES=<comma-delimited list of paths> LOCALLIBS=<comma-delimited list of paths>

Debug

For building the debug version of the executable, the following can be executed:

scons DEBUG=1

Debug version of the executable is named parsimone_debug.

Logging

By default, logging is disabled in the release build and enabled in the debug build. In order to change the default behavior, LOGGING=[0,1] argument can be passed to scons:

scons LOGGING=1 # Enables logging in the release build

Please be aware that enabling logging will affect the performance.

Timing

Timing of high-level operations can be enabled by passing TIMER=1 argument to scons.

Execution

Once the project has been built, please execute the following for more information on all the options that the executable accepts:

./parsimone --help

For running in parallel, the following can be executed:

 mpirun -np 8 ./parsimone ...

Algorithms

Currently, the only supported algorithm for learning module networks is lemontree that corresponds to the algorithm by Bonnet et al. originally implemented in Lemon-Tree.

Publication

Ankit Srivastava, Sriram Chockalingam, Maneesha Aluru, and Srinivas Aluru. "Parallel Construction of Module Networks." In 2021 SC21: International Conference for High Performance Computing, Networking, Storage and Analysis (SC), IEEE Computer Society, 2021.

The experiments in the publication can be reproduced using EXPERIMENTS.md.

Licensing

Our code is licensed under the Apache License 2.0 (see LICENSE).