RAxML

The raxml module provides the RaxmlRunner class, which is a lighweight (i.e., mostly “pass-through”) wrapper to the RAxML maximum-likelihood tree estimation program. RAxML needs to be installed in the system for this class to be used.

The class handles the exporting of the DendroPy dataset in a format suitable for RAxML analysis, and re-reading the resulting tree back into a DendroPy object.

The basic call assumes nucleotide data and estimates a tree under the GTRCAT model:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import warnings
import dendropy
from dendropy.interop import raxml

warnings.warn("This example requires Raxml to be installed to run.")


data = dendropy.DnaCharacterMatrix.get(
    path="pythonidae.nex",
    schema="nexus")
rx = raxml.RaxmlRunner()
tree = rx.estimate_tree(
        char_matrix=data,
        raxml_args=["--no-bfgs"])
print(tree.as_string(schema="newick"))

Currently, the only way to customize the call to the underlying RAxML program using estimate_tree is to pass it a list of command-line arguments, with each argument token a separate list element. So, for example, to include invariant sites in the substitutio model and run 250 independent tree searches:

>>> tree = rx.estimate_tree(data, ['-m', 'GTRCATI', '-N', '250'])

Obviously, while this works, it is neither ideal nor very Pythonic. Future releases will polish up the interface.