What is new in v2.7.8

Bug fix for substitution rate estimates for multiple partitions

When selecting estimate next to the substitution rate entry in the site model panel in BEAuti, BEAST estimates relative substitution rates for multiple partitions by taking partition sizes in account. The aim is for the average site rate (i.e. averaged over all sites) to be 1, so that the clock rate can be interpreted as the mean mutation rate. This is achieved using the DeltaExchangeOperator or BactrianDeltaExchangeOperator. Unfortunately, due to a bug that has been there since the beginning of time, this results in slight biases when partition sizes differ considerably. To fix this permanently requires adding a Dirichlet prior with parameters defined by partition sizes.

When sampling from the prior the bias can be noticable. However, we expect the effect of this bias to be minimal, since the data will overrule the prior given there are typically a large number of sites.

BEAST

Facilitate BEAST “-validate” option

Runnin BEAST with -validate checks whether the XML parses. It now also performs initialisation and one likelihood calculation to ensure the analysis can start.

Update parameter dimension on ``-resume`

If the XML file specifies that a parameter has dimension 5, and it has 6 in the state file, then resuming will keep its dimension on 5. This is a problem for reversible jump MCMC where a parameter dimension can change from operators.

make TreeWithMetaDataLogger produce correct number of commas.

When metadata is not available for the root – e.g. a RealParameter associated with tree branches – TreeWithMetaDataLogger still produces a comma when multiple metadata entries need to be logged. This results in multiple commas in a row, which the TreeParser fails on, making postprocessing of these trees impossible.

Fix for direct simulating from integer distribution

When using beast.base.inference.DirectSimulator to sample from beast.base.inference.distribution.Poisson inverse cumulative probability is used, which differed from the distribution generated by the sample() method. This is fixed now, so both methods produce the same distribution.

Make BactrianOperatorSchedule ignore Uniform operators if parameter is not a RealParameter

The BactrianOperatorSchedule automatically replaces standard operators with Bactrian versions, which as usually more efficient. However, it did not distinguish between Uniform operator having a RealParameter as input or an Integer parameter as input, and for Integer parameters Bactrian proposals do not make sense. BactrianOperatorSchedule now recognises this and does not replace Uniform unless the input is a RealParameter.

More robust state reconstruction in MCMC when state is not explicitly specified.

When 1. the state has not been specified in the XML, and 2. no operators are specified in the MCMC, but 3. operators are specified inside an OperatorSchedule the state was not properly constructed. This is fixed now.

Make Newick parser work for MemoryFriendlyTreeSet. BeastFX#85

TreeAnnotator.MemoryFriendlyTreeSet is used in quite a few BEAST apps for post-processing trees, and is supposed to deal with both NEXUS files containing trees and Newick tree sets. However, it fails to determine the taxa in a Newick tree set. Since it is easier to produce Newick tree files for BEAST apps that produce tree sets in their output (e.g. TaxonFilter in the Babel package) this means a translation is required from Newick to NEXUS (e.g. using the Newick2Nexus app in Babel) for subsequent post-processing.

Fixing the TreeAnnotator.MemoryFriendlyTreeSet so it can deal with Newick tree sets would mean that this step is no longer required.

BEAUti

Replace colons by dashes in IDs named by file name.

Since colons are used to identify partitions in BEAUti, having colons in file names results into problems. These are now fixed by replacing the colons in file names with dashes.

When a partition name is the postfix of another partition name, and when linking the postfix is the name of the linked partition it can happen that after unlinking the IDs of unlinked objects becomes mangled. For example, having a coding and noncoding partition may result in IDs of the form nonnoncodig. This results in duplicate tree priors. To fix this, the method BeautiDoc.renameId is now robustified.

Fix renaming id’s when cloning site model.

BEAUti cloning produced extra AVMN operator. By fixing the id renaming this is now fixed.

Other apps

add -includeEvery option to LogCombiner

Since resample can be confusing, the includeEvery= option was added: -includeEvery <int>: specify number of states to be include (only use when not using resample)

Add -version_file option to AppLauncher

Handy for developers to specify a version.xml file to obtain information from.

Other minor fixes

  • TreeAnnotator fixing GUI dropdown not closing on first selection
  • Fix threading when running LogAnalyser with threads. B
  • Make Application validate Inputs after setting Input values.
  • Set IDs of parsed trees in tree set

For developers

  • Allow use of Coalescent without specifying TreeIntervals. #1192
  • Add public method to GeneralSubstitutionModel #1181

  • Add Description to TreeAnnotator, which shows when running treeannotator -help BeastFX#28
  • Add support for citing methods in TreeAnnotator BeastFX#94
  • Split off Citable from BEASTInterface so it can be used independently. Facilitates BeastFX#94
  • Substitution model RealParamter input to Function input conversions #1196
  • Robustify tree likelihoods for possibility data is not Alignment #1174
  • Add benchmark interface to BeagelTreeLikelihood #1172
  • Towards renaming scaleFactor to windowSize in BactrianRandomWalkOperator #1169
  • Fix indexing error in beagle tree likellihood #1168
  • Redirect output to stderr in order to prevent it getting redirected to files (e.g. citations in TreeAnnotator) BeastFX#98

Improved error messages

  • Improve tracability of XML errors (when spec has not been specified) #28
  • Fix error reporting of BactrianDeltaExchangeOperator. #1187
  • Improve error handling for upgrading packages missing from repositories. #1166
  • Add more sensible OutOfMemmoryError messages to TreeAnotator BeastFX#28
  • Improve error message for XML where the spec attribute is missing BeastFX#28
  • Restore frequencies warning statement #1185