CAMUS (Constrained Algorithm Maximizing qUartetS) is a dynamic programming algorithm for inferring level-1 phylogenetic networks from quartets and a constraint tree.
If you use CAMUS, please cite
Willson, James, and Tandy Warnow. "CAMUS: Scalable Phylogenetic Network Estimation." bioRxiv (2026): 2026-02.
Given a rooted, binary, constraint tree
CAMUS finds networks for different values of
CAMUS has the following inputs and outputs:
-
Input
- Constraint Tree: Rooted, binary, tree in newick format without duplicate labels.
- Gene Trees: List of trees in newick format, containing only labels from the constraint tree.
-
Output
- Output Network: Level-1 networks written in extended newick format.
CAMUS should be invoked with the constraint tree file path and gene trees file
path as positional arguments in that order; the output network and logging
information is written to files with a prefix that can optionally be set
with the -o flag.
CAMUS should be able to build on any operating system, though it has only been tested on Linux. It is implemented in the Go programming language (which can be installed from the Go website).
There are three methods for installing CAMUS.
After installing Go, run:
go install github.com/jsdoublel/camus@latestThis will install the CAMUS executable to $GOPATH/bin. You can check where
that is using the command go env GOPATH; if you want to run CAMUS from any
directory make sure you add $GOPATH/bin to your PATH environmental variable.
Once Go is installed, clone the repository and build the project with the following commands:
git clone https://github.com/jsdoublel/camus.git
cd camus
go buildThe GitHub releases contain binaries compiled for Windows, macOS, and Linux (for both arm64 and amd64).
camus [ -f <format> | -o <output> | -t <threshold> | -n <threads> | -h | -v | ... ] <const_tree> <gene_trees>
There are two positional arguments indicating the inputs. Additionally, there are the following flags that precedes the positional arguments.
-
Basic Flags
-f format [ newick | nexus ] (default "newick")sets the format of the input gene tree file-t threshold [0, 1] (default 0.5)quartet filtering threshold-n num_procsnumber of parallel processes-o prefixoutput prefix-s thresholdcollapse edges in gene trees with support less than threshold value-hprints usage information and exits-hhprints extended usage information and exits-vprints software version and exits
-
Experimental Flags
-sm mode [ max | norm | sym ] (default "max")sets the score mode-a alphaparameter that adjusts penalty in ``sym" score mode-asSetquartet count is calculated as a set (counts total unique quartet topologies)-q mode [0, 2] (default 0)quartet filtering mode
Quartet filtering mode filters out less frequent quartet topologies. Mode -q 0 disables quartet filtering; -q 1 applies a less restrictive quartet
filtering, and -q 2 is the most restrictive and recommended quartet
filtering.
Score Modes are various modifications to the optimization score beyond simple maximization. These are experimental and maximization is recommended.