beastier demo

Richèl J.C. Bilderbeek

2023-11-07

Introduction

This vignette demonstrates how to use beastier.

First, load the library:

library(beastier)

Also, we’ll load the testthat library, to verify the statements in this vignette:

library(testthat)

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 (is_beast2_installed()) {
  output <- run_beast2_from_options(beast2_options)
}

If beastier has run BEAST2, the BEAST2 output can be shown:

if (is_beast2_installed()) {
  print(output)
}
#>  [1] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#>  [2] "                        BEAST v2.6.7, 2002-2022"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
#>  [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/beastier/beast2_3e324abd662f.xml.state"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [36] "Random number seed: 1699357265865"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
#> [37] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [38] "t1: 20 4"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [39] "t2: 20 4"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [40] "t3: 20 4"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [41] "t4: 20 4"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [42] "t5: 20 4"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [43] "Alignment(test_output_0)"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [44] "  5 taxa"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [45] "  20 sites"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
#> [46] "  16 patterns"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
#> [47] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [48] "TreeLikelihood(treeLikelihood.test_output_00) uses BeerLikelihoodCore4"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
#> [49] "  Alignment(test_output_0): [taxa, patterns, sites] = [5, 16, 20]"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
#> [50] "==============================================================================="                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
#> [51] "Citations for this model:"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
#> [52] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [53] "Bouckaert, Remco, Timothy G. Vaughan, Joëlle Barido-Sottani, Sebastián Duchêne, Mathieu Fourment, "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
#> [54] "Alexandra Gavryushkina, Joseph Heled, Graham Jones, Denise Kühnert, Nicola De Maio, Michael Matschiner, "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [55] "Fábio K. Mendes, Nicola F. Müller, Huw A. Ogilvie, Louis du Plessis, Alex Popinga, Andrew Rambaut, "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
#> [56] "David Rasmussen, Igor Siveroni, Marc A. Suchard, Chieh-Hsi Wu, Dong Xie, Chi Zhang, Tanja Stadler, "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
#> [57] "Alexei J. Drummond "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
#> [58] "  BEAST 2.5: An advanced software platform for Bayesian evolutionary analysis. "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
#> [59] "  PLoS computational biology 15, no. 4 (2019): e1006650."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [60] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [61] "==============================================================================="                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
#> [62] "Start likelihood: -153.2592409711878 "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
#> [63] "         Sample      posterior ESS(posterior)     likelihood          prior"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
#> [64] "              0      -153.1554              N      -148.2597        -4.8957 --"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [65] "           1000       -91.8337         2.0          -92.2330         0.3992 --"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [66] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [67] "Operator                                                   Tuning    #accept    #reject      Pr(m)  Pr(acc|m)"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
#> [68] "ScaleOperator(YuleBirthRateScaler.t:test_output_0)        0.75000         30          4    0.04000    0.88235 Try setting scaleFactor to about 0.562"                                                                                                                                                                                                                                                                                                                                                                                                                                              
#> [69] "ScaleOperator(YuleModelTreeScaler.t:test_output_0)        0.50000         23         21    0.04000    0.52273 Try setting scaleFactor to about 0.25"                                                                                                                                                                                                                                                                                                                                                                                                                                               
#> [70] "ScaleOperator(YuleModelTreeRootScaler.t:test_output_0)    0.50000         22         18    0.04000    0.55000 Try setting scaleFactor to about 0.25"                                                                                                                                                                                                                                                                                                                                                                                                                                               
#> [71] "Uniform(YuleModelUniformOperator.t:test_output_0)               -        178        211    0.40000    0.45758 "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [72] "SubtreeSlide(YuleModelSubtreeSlide.t:test_output_0)       1.00000         26        182    0.20000    0.12500 "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [73] "Exchange(YuleModelNarrow.t:test_output_0)                       -         57        156    0.20000    0.26761 "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [74] "Exchange(YuleModelWide.t:test_output_0)                         -          3         30    0.04000    0.09091 "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [75] "WilsonBalding(YuleModelWilsonBalding.t:test_output_0)           -          1         39    0.04000    0.02500 "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [76] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [77] "     Tuning: The value of the operator's tuning parameter, or '-' if the operator can't be optimized."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
#> [78] "    #accept: The total number of times a proposal by this operator has been accepted."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
#> [79] "    #reject: The total number of times a proposal by this operator has been rejected."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
#> [80] "      Pr(m): The probability this operator is chosen in a step of the MCMC (i.e. the normalized weight)."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
#> [81] "  Pr(acc|m): The acceptance probability (#accept as a fraction of the total proposals for this operator)."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
#> [82] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [83] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [84] "Total calculation time: 0.539 seconds"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
#> [85] "File: 2_4.xml seed: 1699357265865 threads: 1"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
#> [86] "Loading package MODEL_SELECTION v1.5.3"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
#> [87] "Loading package Babel v0.3.2"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
#> [88] "Loading package BADTRIP v1.0.0"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [89] "Loading package BEASTLabs v1.9.7"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [90] "Loading package BEAST v2.6.7"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
#> [91] "Loading package bacter v2.2.5"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
#> [92] "Loading package BEAST v2.6.7"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
#> [93] "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]"
#> [94] "Writing file test_output_0.log"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
#> [95] "Writing file test_output_0.trees"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
#> [96] "End likelihood: -91.83373896209864"

If beastier has run BEAST2, the MCMC’s final state will be saved to a file:

if (is_beast2_installed()) {
  expect_true(file.exists(beast2_options$output_state_filename))
  file.remove(beast2_options$output_state_filename)
}
#> [1] TRUE
beastier::remove_beaustier_folders()

This final state can be used to continue the run.