MARLON (Minimum Amount of Reticulation Level One Network)


MARLON is an implementation, in Java, of the algorithm of Leo van Iersel which finds (for a dense set of triplets T) the level-1 network with a minimum number of reticulation nodes that is consistent with T, or determines that no such network exists. The code was written, and is maintained, by Steven Kelk. The structure, running time and correctness of the algorithm is explained in the article Constructing the Simplest Possible Phylogenetic Network from Triplets by Leo van Iersel and Steven Kelk.

Latest versions

Version 0.91, June 20th 2008

Version 0.9, May 7th 2008

How to run the algorithm

The following instructions assume a UNIX environment. There are no fundamental reasons however why the algorithm will not work under another operating system environment as long as Java and the graph drawing package DOT are available in that environment. (Please contact Steven Kelk if you are interested in an output format for a package other than DOT.)

  1. It is advisable that you first compile on your own computer, using the Java compiler javac. This will create a file Marlon.class (amongst others) in the directory.
  2. Create a file of triplet data. MARLON assumes that the species are numbered 1 through n and that there are no missing species. Some examples of triplet data files can be found below.
  3. Run the algorithm with and direct the output to a file. For example, with the command java Marlon yourtripletdat.txt > output
  4. If the algorithm could not find a level-0 or level-1 network for those triplets, this will be reported in the output file. Otherwise, the file output can be fed into the graph drawing package DOT, which in turn can produce images in various formats. For example, to get DOT to produce a postscript file from your data, try dot -Tps < output > Other output formats are possible by adjusting the -T switch.
  5. The code is still in development. If for some reason you encounter a bug or a problem, please inform the author! At the moment internal error reporting is minimal, many error messages simply report an error and an error number, this will be improved in future versions.


Click here for example data sets and outputs.

Why use MARLON?

Relevant links