Category Archives: Blog

What is new in v2.4.8

BEAST v2.4.8 is a patch release of issue #736. When using RNA data, a bug caused the BeagleTreeLikelihood class to incorrectly interpret ‘U’ characters in the sequence as missing data instead of the ‘T’ character similar to DNA. Thus, the likelihood is calculated incorrectly when using the BEAGLE library — this is not a bug in BEAGLE, but in the BeagleTreeLikelihood class in BEAST that interfaces with BEAGLE, so it does not affect other software that uses BEAGLE, such as BEAST 1 and MrBayes.

If you used BEAST with RNA data, have BEAGLE installed and used BEAGLE in the analysis, this affects your analysis.

This does not affect DNA or amino acid data with or without use of BEAGLE.

Also, this does not affect analyses with RNA data when using the -java option for BEAST, or when you don’t have BEAGLE installed (BEAST attempts to use BEAGLE if installed by default).

To tell whether you are using the BeagleTreeLikelihood or the java TreeLikelihood, BEAST shows at the start which TreeLikelihood is used. If you have BEAGLE installed and use it, it should show a message similar to this:

Using BEAGLE version: 2.1.2 resource 0: CPU
Ignoring ambiguities in tree likelihood.
Ignoring character uncertainty in tree likelihood.
With 69 unique site patterns.
Using rescaling scheme : dynamic

If you use the -java option, or do not have BEAGLE installed, it shows

TreeLikelihood(treeLikelihood) uses BeerLikelihoodCore4

What is new in v2.4.7

This release fixes a large number of small issues, outlined below.


Relabel two buttons because they were hard to find: “Guess” is now “Auto configure” in tip dates panel. “+” button on priors panel is now “+ Add Prior”.

More sensible default date value for taxa without date specified in tip dates panel. The old default put ‘zero’ as the default date, but for example when all data is from viruses sampled in the last 20 year, that default does not make sense, so it now becomes the data of the most recent sample.

Make sure the appropriate tree is used in MRCAprior when there are multiple trees in the analysis.

When there are many taxa with tip dates, it is convenient to specify these dates in the NEXUS file. The current version makes sure tips with ‘fixed’ distributions imported from Nexus do not get estimated.

Robustify NEXUS parser, an ever continuing task.

Taxa could be duplicated in taxon list in NexusParser, which could lead to numbered taxa. The duplication is prevented now.

Prevent accidentally cloning of up-down-all operator when using the StarBeast template.


Default locale set to English so full stops are used in NEXUS output.

Warn if Yule (or BD) conditions on root, but no root MRCAPrior is set.

Robustify resume

Suppress “Overwrite (Y/N)?” message when BEAST runs in console.

Stop chain when encountering a +infinity posterior.

Check that taxon set is specified when using RandomTree.

Normalise stateNodes so XML characters (‘”&<>) get escaped properly when writing state files.


Improved formatting of app list.


Now adds common ancestor height estimates as attributes.

API updates

Something for programmers to keep in mind are the following changes:

Changed access levels of a few methods in nexus parser so you can derive your own from the NexusParser class.

Add Tree scale and ScaleOperator test.

Add new Tree constructor from root node, which is convenient when you have a tree represented by Nodes only.

Add support for input/output of non-binary trees.

Add Input.set() method, which is useful when setting input values as alternative to setValue, which requires two arguments: the value to set and the object containing the input. The latter is necessary for determining the type of the Input if that was not already determined. When

BeautiAlignmentProvider getAlignments method added to facilitate scripting (Beasy).

TreeParser correctly parses tree edge length metadata, and improved error reporting.

Using R to estimate probability distribution parameters using quantiles or HPD intervals

This post is written by Jordan Douglas.

If you know some of the quantiles of a probability distribution (eg. P(X < 5) = 0.05, P(X < 10) = 0.95) and you know the name of the distribution but you do not know its parameters, then you can use R to estimate them.

This can be done using the cumulative distribution functions (pnorm for normal, plnorm for lognormal, pexp for exponential etc.). Parameter values which yield a small difference between observed and calculated cumulative probabilities can be found using the optim function.

For example, suppose that you want to find mu and sigma parameters of a lognormal distribution such that P(X < 5) = 0.05 and P(X < 10) = 0.95. We start at mu = 1 and sigma = 1.

> mu = 1
> sigma = 1
> x1 = 5
> x2 = 10
> p1 = 0.05
> p2 = 0.95
> plnorm(x1, mu, sigma)
[1] 0.7288829
> plnorm(x2, mu, sigma)
[1] 0.9036418

These initial values are a poor fit.

Next we generate an error function, in this case we minimize the sum of squared differences between calculated and observed cumulative probabilities.

> errorFn = function(params) (plnorm(x1, params[1], params[2]) - p1)^2 + (plnorm(x2, params[1], params[2]) - p2)^2

Finally, we call optim to find estimates for sigma and mu:

> optim( c(mu, sigma), errorFn)
[1] 1.9560118 0.2107083

[1] 5.499438e-11

Thus, the estimates for mu and sigma are 1.956 and 0.211 respectively, which have a sum of squared residuals of 5.5e-11.

Two new PhD positions in the Centre for Computational Evolution!

Two new PhD positions in computational evolution are available in the Centre for Computational Evolution at the University of Auckland to work on developing Bayesian integrative models of evolution that use data from genomic sequences, phenotypic data and the fossil record. The research will include the design and development of new mathematical and computational models for Bayesian phylogenetic inference. The successful candidates will work with an international team of computational biologists, evolutionary biologists and palaeontologists to both develop new methods and test them on a number of exciting data sets.

How and when species came to be is the fundamental question in macroevolution. Attempts to answer it use a variety of data sources including genome sequences, morphology and fossil discoveries. Yet current methods are unable to exploit all this data, with different data sources often producing conflicting results. This project aims to create a unifying probabilistic framework that combines genomic, fossil and phenotypic data to give us the best possible understanding of evolutionary history. The PhD research will involve creating open-source software tools to disseminate new methods widely as well as using these new methods to address outstanding questions in human, animal and pathogen evolution.

The initial focus of the work will be to extend the StarBEAST2 package to allow for sampled ancestral species and their phenotypes in the species tree as well as ancient DNA samples in the embedded gene trees. This is a major software engineering task. There will also be work on developing new trait evolution models that can account for trait variation both within and between species. Current models will be incorporated into the BEAST 2 software and major studies on real and simulated data will be run to assess their strengths and weaknesses. The successful candidates will also have the opportunity to develop new inference methods for continuous trait evolution. Finally a third focus of the work will be on incorporating rich fossil data into the phylogenetic framework within BEAST 2. New models will incorporate variability of sampling over time and space, trait-dependent sampling, and will be able to use multiple fossils from the same morphospecies while accounting for uncertainty in the geologically-derived age of fossils. Both simulated and curated data sets will be used to test and prove the newly developed methods.

The successful candidates will work with an international team including Professor Alexei Drummond, Dr David Welch (University of Auckland), A/Prof Tanja Stadler (ETH Zurich) and Dr Nick Matzke (ANU), as well as expert collaborators with knowledge of specific paleontological and molecular data sets including Dr Mana Dembo (hominins; Simon Fraser University) and Dr Graham Slater (canids; University of Chicago).

Each position comes with a stipend of $NZ27,300 (which is annually adjusted for inflation) and payment of enrolment fees.  There is no teaching requirement associated with the stipend.

The successful applicants will have a strong background in a quantitative subject (such as Computational Biology, Mathematics, Statistics, Computer Science, Physics or similar), an understanding of Bayesian statistics, some experience of coding and ideally have had some exposure to, or at least a strong interest in, phylogenetic methods. The exact nature of the work will depend on the strengths and background of the successful candidates.

For more information and to express interest please send your CV to Professor Alexei Drummond ( or Dr David Welch (

What is new in v2.4.5

Replicability support

The biggest addition is that it is now possible to run an XML file with BEAST that uses
exactly the package versions that were used to create the XML in BEAUti. This means that
changes in the XML due to changes in package versions are no longer a problem, and you can
run an analysis with exactly those package versions of the original analysis.

The way it works is that BEAUti adds a “required” attribute on the beast-element in the
XML containing packages and their versions used to set up the analysis. Of course, you can
edit the XML by hand and change version numbers and add packages if you like. BEAST now has
a “-strictversions” flag, so when you start BEAST that option it only loads packages and
versions as specified in the “required” attribute.

Of course, the versions of these packages must be installed for BEAST to be able to load
them. Therefore, the package manager in BEAUti now allows specifying specific versions of
the package to install, and multiple package version can be installed side by side. By
default, the latest version of the package that is installed will be loaded, unless the
“-strictversions” flag is set. The addonmanager utility has a -version flag for specifying
the package version to install, if you prefer installing packages from the command line.


Previously, it was possible to edit priors, but these editing actions could interere with
cloning substitution and clock models. A

When importing FASTA files, previously a single character other then A, C, G or T meant that
the alignment was classified as amino acid, even if it is a nucleotide alignment. This
version counts the number of non-A,C,G,T characters and makes a better guess based on that
number wrt total number of characters in the alignment. Furthermore, a dialog pops up
where you can change that guess if it was incorrect. If many alignments of the same datatype
are loaded at the same time, you can choose to mark al as the same type so you don’t have
to close down the dialog for every of these alignments.

MRCAPriors imported through NEXUS files (using a calibrate entry) were not logged in the
trace log, but now they are.


There are a few tree parser fixes

StarBeastStartState now takes bounds of parameters it sets in account so if you specify
a bounds on birth rate or any of the population sizes the initial state will not violate
them. Previously, these bounds were ignored resulting in the analysis not being able to
be started.

Operator schedules can now be nested. This means that you can specify a portion of the
operator weights to

Improved error reporting (as usual).

Package manager

Added -version flag to specify exactly which package version to install.


Now calculates 2D HPD intervals by default (for phylogeography analyses). Spread3 requires the
uncertain intervals to be available, but they were not by default, resulting in confusion
by several users.

Added -nohpd2D flag to suppress 2D HPD interval calculation, since any 2-dimensional continuous
trait that is logged on the tree will now by default gets a 2D HPD interval calculated. However,
if the interval is not contiguous, TreeAnnotator produces a warning message, which may not
be appropriate for any but geographical regions. This flag helps suppress the messages and
reduces calculation time.

Added -noSA flag to suppress tree set being seen as that of a sampled ancestor analysis.
It can happen that a tree set contains a branch of length zero, which is interpreted by
TreeAnnotator as a sampled ancestor tree. Setting this flag prevents this interpretation.

How to open Tracer and FigTree in macOS Sierra

There are two known difficulties when using Tracer v1.6.0 and FigTree v1.4.2 with macOS Sierra:

  • their reliance on a legacy version of Java (6), and
  • Sierra’s stronger Gatekeeper security.

The 1st issue can be solved by downloading the Java for OS X 2015-001. This won’t change the default Java version in Sierra during my test. You can also check it after the installation using the command below:

java -version

After macOS Sierra introduces a stronger Gatekeeper, the applications not from the App Store and identified developers become difficult to launch after the download. The error message below will pop up when Tracer v1.6 is opened at the first time.

To open the application, find Gatekeeper options in Apple menu > System Preference > Security & Privacy > General tab, and click the button Open Anyway.

Go back to open the Tracer v1.6.0 application, and choose Open in the dialog box to confirm the process.

After the Tracer or FigTree is successfully opened, you can open them straight away afterwards.

Alternatively, removing from the Tracer application will permanently solve the problem:

xattr -d -r /Applications/Tracer\

Best wishes,

What is new in v2.4.4

Smooth out some issues with importing Nexus files in BEAUti. The NEXUS file can contain information about calibrations on clades and tip ages, which is more convenient when there are many calibrations or dated tips. In the previous release, BEAUti displayed any distribution as being ‘Uniform’, even when other distributions were specified in the NEXUS file, and could not be changed in BEAUti, which is fixed now. In some circumstances, when tip dates were specified a major problem occurred preventing BEAUti to set up connections, which manifested itself in missing priors and other components, which is fixed in this release.

A TreeAnnotator fix was made so user defined trees to can be annotated instead of using an MCC tree based on the tree file.

Allow smaller log files by logging fewer significant digits of metadata. The TreeWithMetaDataLogger has a “dp” flag that can be used to specify the number of decimal places to use writing branch lengths, rates and now also real-valued metadata. When logging large trees this can reduce the size of the file considerably.

Fix that prevented starting any BEAST application on Mac Sierra. The OSX version was released on a computer that did not run Sierra, and it appears that prevented any BEAST application to open under the new security settings in Sierra, though it did not prevent them to run on any older version of OSX.

What is new in v2.4.3


If you want to sample tip dates, you can create an MRCA prior in the priors panel (by clicking the little ‘+’ button at the bottom of the screen). Once you specified the set of taxa and an age distribution, click the ‘tips only’ checkbox, and a tip sampling operator will be automatically added.

Multi-monophyletic constraints through Newick

BEAUti now allows packages to specify add package specific priors; when you click the ‘+’ button at the bottom of the priors tab, and a package (such as BEASTLabs that can add a multi-monophyletic prior) provides a new prior a dialog pops up showing a list to choose from. By default, and MRCA prior is added if no other package provides anything. The multi-monophyletic prior from BEASTLabs allows you to specify a large number of monophyletic constraints through a tree in Newick format.

Microsattelite support

Another way packages now can extend BEAUti is by catering for package specific file formats. For example, the BEASTvntr package reads in alignments from a comma separated file format and interprets them as numbers of tandem repeats. The BEASTvntr provides microsattelite support.


Gamma distribution now allows multiple parameterisations: shape/scale, shape/rate, shape/mean, and one parameter, but defaults to the shape/scale as in previous version.

When saving a file to XML from BEAUti, all packages used in the XML are now encoded in XML, so when starting BEAST on a different computer, it can provide better error reporting of missing packages.

Better looking on high-res screens.


Allow multiple citation annotations per class.

Allow trait sets with unspecified dates instead of failing when not all taxa had a date specified.

Allow multiple arguments to Sum so you can add values from various sources.

Improved error reporting, as usual.

Package Manager

The GUI version of the package manager now has links to documentation. By clicking the link of a particular package, a web browser opens that should bring you a page with package specific information.

Some work has been done to make the layout of the package manager look better.


TreeAnnotator fix for phylogeography in low-mem mode — previously, any meta data in array format such as location information was ignored.

LogCombiner suppresses duplicate ‘=’ in tree output.

What is new in v2.4.2

BEAUti has a menu — View/Zoom In and View/Zoom out — which causes everything to scale up or down respectively. Once a particular zoom level is set in BEAUti, all other applications with a graphical user interface, like BEAST, TreeAnnotator, LogCombiner, etc. scale up to the same level. Also, by default scaling is such that they should look acceptable on high resolution screens.

Both BEAUti and BEAST have some improved error reporting.

One annoying bug was that BEAST closed its console window on XML parsing errors, making it impossible to read what was wrong with the XML file. This bug is solved now.

LogCombiner used to read in all log and tree files before writing them to the combined files. The new implementation processes input files line by line and directly write them to the combined log, so it requires much less memory than before.

Densitree updated to version 2.2.5, which supports export of DensiTree in SVG vector format.