10+ ways to generate BEAST XML

Every self respecting BEAST developer has encountered the problem of wanting to create a lot of XML files, for example for a simulation study, and using BEAUti just takes too long. It seems there are as many ways to generate XML as there are developers. Here is a non-exhaustive list in no particular order of things people have done in the past to generate XML.

Use BEAST XML

You can use XML to generate new XML in BEAST, as explained here: simulation studies with BEAST 2. BEAST v2.5 (available soon) will have a command line interface to replace variables in the XML, allowing say

<run chainLength="$(chainLength)" ...

to be replaced by a number from the command line when running

beast -D "chainLength=1000000" file.xml

so it will be interpreted as

<run chainLength="1000000" ....

BEASTGen

BEASTGen by Andre Rambaut is part of BEAST 1, but is a generic XML producer from templates, so it can produce BEAST 2 XML as well. It has functionality to recognise alignment files, so you can refer to NEXUS and FASTA files to include in the XML.

BEAST2XML

BEASTShell

BEASTShell is based on Bean Shell and integrated with BEAST. This post explains how to use it to generate XML.

Beasy

Beasy is a Java based attempt by myself to use the power of BEAUti templates. Unlike most of the above approaches, when new packages get added no custom scripts are required to be able to use the new packages when there is a BEAUti template. It is still in development...