ParsiMoNe (Parallel Construction of Module Networks) supports learning of module networks in parallel.
- 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:
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.
For building the debug version of the executable, the following can be executed:
cmake -DCMAKE_BUILD_TYPE=Debug ..
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 of high-level operations can be enabled by passing -DENABLE_TIMING=ON
argument to cmake
.
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 ...
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.
The experiments in the publication can be reproduced using EXPERIMENTS.md
.
Our code is licensed under the Apache License 2.0 (see LICENSE
).