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. - SCons is required for building the project.
Tested with version 3.1.2. - The following repositories are used as submodules:
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>
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
.
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 of high-level operations can be enabled by passing TIMER=1
argument to scons
.
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
).