Skip to content

Parallel Construction of Module Networks

Notifications You must be signed in to change notification settings

AluruLab/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.
  • CMake is required for building the project.
    Tested with version 3.29.
  • 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.
    • trng4 is used for random number generation.

Building

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

mkdir build
cd build
cmake -DArmadillo_ROOT=${ARMA_INSTALL_LOCATION} ..

This will create an executable named parsimone, which can be used for constraint-based structure learning.

Debug

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

cmake -DCMAKE_BUILD_TYPE=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 argument can be passed to cmake:

cmake -DENABLE_LOGGING=ON

Please be aware that enabling logging will affect the performance.

Timing

Timing of high-level operations can be enabled by passing -DENABLE_TIMING=ON argument to cmake.

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).

About

Parallel Construction of Module Networks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 87.8%
  • CMake 12.2%