Author image Rutger Vos
and 1 contributors


Bio::PhyloTastic - Perl clients for PhyloTastic


PhyloTastic ( is community effort to develop interoperable tools for pruning and annotating phylogenetic megatrees. This package contributes to that effort by providing simple client access to web services that perform steps in the pipeline. The functionality of these clients readily available using the phylotastic command line utility that comes with this distribution.

The basic usage is:

 $ phylotastic ModuleName <args>

Where ModuleName is the last part of the package name of one of the client classes (e.g. BabelPhysh). The command line arguments of these classes are somewhat variable, though they typically take one or more --infile=filename arguments and an --outfile=filename argument. For the other arguments you can consult the usage message for each module as follows:

 $ phylotastic ModuleName --help

The full documentation for each module (such as it is), can be viewed like this:

 $ phylotastic ModuleName --man

For more verbose output during the execution of a module, provide the --verbose flag with a numerical argument (0 = only fatal message, 1 = error, 2 = warn, 3 = info, 4 = debug).

 $ phylotastic ModuleName --verbose=4 <args>


The following client classes are currently available.


File translation.


Divergence date estimation.


File merging.


Tree pruning.


Extracts taxon labels from files.


Taxonomic name resolution service.


Reading and writing of all data is done using Bio::Phylo::IO, which uses the deserializers in the Bio::Phylo::Parsers namespace and the serializers in the Bio::Phylo::Unparsers namespace. Consequently, the input formats that are available are the ones that Bio::Phylo supports.

In addition, work is under way to develop Galaxy config files that wrap these classes so they are available from within Galaxy ( These config files can be found here:


This distribution can actually also be used within scripts or modules. The basic idea is to invoke run on a service package name, with named arguments (i.e. key value pairs) that match those as required on the command line. The following example of this behaviour writes the input NeXML file $infile as NEXUS to $outfile:

        '-infile'       => $infile,
        '-deserializer' => 'nexml',
        '-outfile'      => $outfile,
        '-serializer'   => 'nexus',

The run method is a static method, i.e. called on the package, like so:


The implementation in this superclass does argument checking and input file parsing before it dispatches the parsed data to an implementing method in the child class called _run. That implementing method returns a Bio::Phylo::Project object that is subsequently serialized here.