Nonbinary Cycle Killer

A program for constructing a phylogenetic network from two (not necessarily binary) phylogenetic (gene) trees. The constructed phylogenetic network will display (refinements of) both trees. The program aims to minimize the reticulation number of the constructed network. For worst-case performance guarantees, see below. This program extends our original Cycle Killer program, which could only handle binary trees.

The constructed phylogenetic network is saved in e-Newick format to a file “test-network.tree”. This file can be opened with Dendroscope.

Options

–maf

use the FPT algorithm of MAF to compute an intial agreement forest (default)

–mafapp

use the approximation algorithm of MAF to compute an intial agreement forest

–rspr

use the FPT algorithm of rSPR to compute an intial agreement forest

–rsprapp

use the approximation algorithm of rSPR to compute an intial agreement forest

–given af.txt

use the initial agreement forest given in the file af.txt

Note that the options –rspr and –rsprapp can currently only be used when at least one of the two input trees is binary. They use the program rSPR by Chris Whidden. The approximation algorithms are much faster than the FPT algorithms but their performance might not be as good (see below). The file “af.txt” should be as in this example file.

Worst-case performance

Cycle killer aims at constructing a phylogenetic network with a smallest possible reticulation number. The worst-case approximation ratio of the algorithm depends on whether the input trees are binary and which option is used, as specified in the following table:

binary input trees

one binary one nonbinary

nonbinary input trees

–maf

2-approximation

4-approximation

4-approximation

–mafapp

5-approximation

7-approximation

7-approximation

–rspr

2-approximation

4-approximation

N/A

–rsprapp

4-approximation

6-approximation

N/A

Note that in practice the approximation ratios are much smaller for (almost?) all data.

Additional functionality

Cycle Killer can also be used to transform a given acyclic agreement forest into a network. Simply run the program with “java NonbinaryCycleKiller trees.tree –given aaf.txt” (plus the necessary path information) and it will output a phylogenetic network displaying the two trees in “trees.tree” and corresponding to the acyclic agreement forest specified in “aaf.txt”.

Cycle Killer can also be used to find a directed feedback vertex set of a given digraph. Run the program with “java NonbinaryCycleKiller outlists.txt –dfvs”. The vertices of the graph need to be numbered 0,1,…,n-1 and line i of the input file should contain the outneighbours of vertex i-1 separated by spaces.