This vignette demonstrates how to use beastier
.
First, load the library:
Also, we’ll load the testthat
library, to verify the statements in this vignette:
To run BEAST2, we need to create a BEAST2 options structure`. We will use a supplied BEAST2 XML file. For the rest, we’ll use the default options:
beast2_options <- create_beast2_options(
input_filename = get_beastier_path("2_4.xml")
)
names(beast2_options)
#> [1] "input_filename" "output_state_filename" "rng_seed"
#> [4] "n_threads" "use_beagle" "overwrite"
#> [7] "beast2_path" "verbose"
Before running BEAST2, the BEAST2 input file must exist, and we expect no output file to be created just yet:
expect_true(file.exists(beast2_options$input_filename))
expect_false(file.exists(beast2_options$output_state_filename))
We can run beastier
now, if BEAST2 is installed. Because BEAST2 needs to be installed by the user, this vignette checks if it is installed in every step:
If beastier
has run BEAST2, the BEAST2 output can be shown:
if (is_beast2_installed()) {
print(output)
}
#> [1] ""
#> [2] " BEAST v2.6.3, 2002-2020"
#> [3] " Bayesian Evolutionary Analysis Sampling Trees"
#> [4] " Designed and developed by"
#> [5] " Remco Bouckaert, Alexei J. Drummond, Andrew Rambaut & Marc A. Suchard"
#> [6] " "
#> [7] " Centre for Computational Evolution"
#> [8] " University of Auckland"
#> [9] " r.bouckaert@auckland.ac.nz"
#> [10] " alexei@cs.auckland.ac.nz"
#> [11] " "
#> [12] " Institute of Evolutionary Biology"
#> [13] " University of Edinburgh"
#> [14] " a.rambaut@ed.ac.uk"
#> [15] " "
#> [16] " David Geffen School of Medicine"
#> [17] " University of California, Los Angeles"
#> [18] " msuchard@ucla.edu"
#> [19] " "
#> [20] " Downloads, Help & Resources:"
#> [21] " http://beast2.org/"
#> [22] " "
#> [23] " Source code distributed under the GNU Lesser General Public License:"
#> [24] " http://github.com/CompEvol/beast2"
#> [25] " "
#> [26] " BEAST developers:"
#> [27] " Alex Alekseyenko, Trevor Bedford, Erik Bloomquist, Joseph Heled, "
#> [28] " Sebastian Hoehna, Denise Kuehnert, Philippe Lemey, Wai Lok Sibon Li, "
#> [29] "Gerton Lunter, Sidney Markowitz, Vladimir Minin, Michael Defoin Platel, "
#> [30] " Oliver Pybus, Tim Vaughan, Chieh-Hsi Wu, Walter Xie"
#> [31] " "
#> [32] " Thanks to:"
#> [33] " Roald Forsberg, Beth Shapiro and Korbinian Strimmer"
#> [34] ""
#> [35] "Writing state to file /home/richel/.cache/beast2_1ce86366c18b0.xml.state"
#> [36] "Random number seed: 1621686294969"
#> [37] ""
#> [38] "File: 2_4.xml seed: 1621686294969 threads: 1"
#> [39] "Loading package Beasy v0.0.2"
#> [40] "Loading package bacter v2.2.3"
#> [41] "Loading package BASTA v3.0.1"
#> [42] "Loading package BADTRIP v1.0.0"
#> [43] "Loading package MASTER v6.1.2"
#> [44] "Loading package BEAST_CLASSIC v1.5.0"
#> [45] "Loading package besp v0.2.0"
#> [46] "Loading package GEO_SPHERE v1.3.0"
#> [47] "Loading package BEASTvntr v0.1.3"
#> [48] "Loading package BDSKY v1.4.6"
#> [49] "Loading package BEAST v2.6.3"
#> [50] "Loading package BEASTLabs v1.9.6"
#> [51] "Loading package MODEL_SELECTION v1.5.3"
#> [52] "Loading package BDMM v1.0"
#> [53] "Loading package bModelTest v1.2.1"
#> [54] "Loading package Babel v0.3.2"
#> [55] "Loading package MultiTypeTree v7.0.2"
#> [56] "Loading package BEAST v2.6.3"
#> [57] "t1: 20 4"
#> [58] "t2: 20 4"
#> [59] "t3: 20 4"
#> [60] "t4: 20 4"
#> [61] "t5: 20 4"
#> [62] "Alignment(test_output_0)"
#> [63] " 5 taxa"
#> [64] " 20 sites"
#> [65] " 16 patterns"
#> [66] ""
#> [67] "Failed to load BEAGLE library: no hmsbeagle-jni in java.library.path: [/usr/lib/jvm/java-11-openjdk-amd64/lib/server, /usr/lib/jvm/java-11-openjdk-amd64/lib, /usr/lib/jvm/java-11-openjdk-amd64/../lib, /usr/lib/R/lib, /usr/lib/x86_64-linux-gnu, /usr/lib/jvm/default-java/lib/server, /usr/lib/R/lib, /usr/lib/x86_64-linux-gnu, /usr/lib/jvm/default-java/lib/server, /usr/lib/R/lib, /usr/lib/x86_64-linux-gnu, /usr/lib/jvm/default-java/lib/server, /usr/java/packages/lib, /usr/lib/x86_64-linux-gnu/jni, /lib/x86_64-linux-gnu, /usr/lib/x86_64-linux-gnu, /usr/lib/jni, /lib, /usr/lib]"
#> [68] "TreeLikelihood(treeLikelihood.test_output_00) uses BeerLikelihoodCore4"
#> [69] " Alignment(test_output_0): [taxa, patterns, sites] = [5, 16, 20]"
#> [70] "==============================================================================="
#> [71] "Citations for this model:"
#> [72] ""
#> [73] "Bouckaert, Remco, Timothy G. Vaughan, Joëlle Barido-Sottani, Sebastián Duchêne, Mathieu Fourment, "
#> [74] "Alexandra Gavryushkina, Joseph Heled, Graham Jones, Denise Kühnert, Nicola De Maio, Michael Matschiner, "
#> [75] "Fábio K. Mendes, Nicola F. Müller, Huw A. Ogilvie, Louis du Plessis, Alex Popinga, Andrew Rambaut, "
#> [76] "David Rasmussen, Igor Siveroni, Marc A. Suchard, Chieh-Hsi Wu, Dong Xie, Chi Zhang, Tanja Stadler, "
#> [77] "Alexei J. Drummond "
#> [78] " BEAST 2.5: An advanced software platform for Bayesian evolutionary analysis. "
#> [79] " PLoS computational biology 15, no. 4 (2019): e1006650."
#> [80] ""
#> [81] "==============================================================================="
#> [82] "Start likelihood: -168.26259554483354 "
#> [83] "Warning: Overwriting file test_output_0.log"
#> [84] "Warning: Overwriting file test_output_0.trees"
#> [85] " Sample posterior ESS(posterior) likelihood prior"
#> [86] " 0 -168.2625 N -166.0863 -2.1762 --"
#> [87] " 1000 -88.5256 2.0 -87.0024 -1.5231 --"
#> [88] ""
#> [89] "Operator Tuning #accept #reject Pr(m) Pr(acc|m)"
#> [90] "ScaleOperator(YuleBirthRateScaler.t:test_output_0) 0.75000 39 3 0.04000 0.92857 Try setting scaleFactor to about 0.562"
#> [91] "ScaleOperator(YuleModelTreeScaler.t:test_output_0) 0.50000 15 17 0.04000 0.46875 Try setting scaleFactor to about 0.25"
#> [92] "ScaleOperator(YuleModelTreeRootScaler.t:test_output_0) 0.50000 18 17 0.04000 0.51429 Try setting scaleFactor to about 0.25"
#> [93] "Uniform(YuleModelUniformOperator.t:test_output_0) - 185 199 0.40000 0.48177 "
#> [94] "SubtreeSlide(YuleModelSubtreeSlide.t:test_output_0) 1.00000 29 184 0.20000 0.13615 "
#> [95] "Exchange(YuleModelNarrow.t:test_output_0) - 47 149 0.20000 0.23980 "
#> [96] "Exchange(YuleModelWide.t:test_output_0) - 4 46 0.04000 0.08000 "
#> [97] "WilsonBalding(YuleModelWilsonBalding.t:test_output_0) - 1 48 0.04000 0.02041 "
#> [98] ""
#> [99] " Tuning: The value of the operator's tuning parameter, or '-' if the operator can't be optimized."
#> [100] " #accept: The total number of times a proposal by this operator has been accepted."
#> [101] " #reject: The total number of times a proposal by this operator has been rejected."
#> [102] " Pr(m): The probability this operator is chosen in a step of the MCMC (i.e. the normalized weight)."
#> [103] " Pr(acc|m): The acceptance probability (#accept as a fraction of the total proposals for this operator)."
#> [104] ""
#> [105] ""
#> [106] "Total calculation time: 0.451 seconds"
#> [107] "End likelihood: -88.52561492248691"
If beastier
has run BEAST2, the MCMC’s final state will be saved to a file:
This final state can be used to continue the run.