CMAPLE 1.0.0
C++ MAximum Parsimonious Likelihood Estimation
|
CMAPLE is a C++ reimplementation of MAPLE - a novel likelihood-based phylogenetic inference method for pandemic-scale epidemiological genomic data. CMAPLE is highly optimized for performance and scalability with many new features.
CMAPLE library provides a set of APIs, which allow users to integrate CMAPLE into existing phylogenetic inference methods.
In the following, we give an instruction of how to include CMAPLE library into a project using CMake build system (instructions for other build systems will be updated soon). Here, we'll take IQ-TREE as an example.
In your project directory, run
git submodule add https://github.com/iqtree/cmaple.git
project(iqtree) # Step 1: Add cmaple directory to the build add_subdirectory(cmaple) # add the main and other directories of your project add_subdirectory(main) # Step 2: Build two executables for DNA and protein data # build an executable for DNA data add_executable(iqtree2 main.cpp main.h ) # build another executable for protein data add_executable(iqtree2-aa main.cpp main.h ) # Step 3: Add the binary tree to the search path for include files so that we can find cmaple/cmaple_config.h include_directories("${PROJECT_BINARY_DIR}/cmaple") # Step 4: Add linking libraries target_link_libraries(iqtree2 main maple) target_link_libraries(iqtree2-aa main maple-aa)
#include “cmaple.h” // Read an alignment from a FASTA file cmaple::Alignment aln("alignment.fasta"); // Check if the [C]Maple algorithm is effective to analyse the input alignment if (cmaple::isEffective(aln)) { // Initialise a substitution model as GTR cmaple::Model model(cmaple::ModelBase::GTR); // Declare a tree, attaching it to the alignment and model cmaple::Tree tree(&aln, &model); // Infer a maximum likelihood tree tree.infer(); // Compute aLRT-SH branch supports of the inferred tree tree.computeBranchSupport(); // Compute the likelihood of the tree cout << "Log-likelihood: " << tree.computeLh() << endl; // Export the tree in NEWICK format cout << "Tree: " << tree.exportNewick() << endl; } else { // Execute existing methods (e.g., IQ-TREE, RAXML, PHYML) to analyse this alignment }
CMAPLE outputs debugging messages to the standard output std::cout
. One could control the amount of those messages via setting cmaple::verbose_mode
to one of the following values.
- VB_QUIET
: no messages except errors.
- VB_MED
(default): common messages (showing the processing progress).
- VB_DEBUG
: as many messages as possible (useful for debugging).
CMAPLE APIs are exposed in the following.
CMaple
Alignment
Model
Tree
To be updated...