From 70c9415c2885eb005564a027ee1949f058037259 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Sun, 21 Dec 2025 17:14:07 +0100 Subject: [PATCH 01/10] Add support for reading json output with multiple sweeps --- R/post_treatment.R | 56 +++++++++++++++++++++++++++++++++++----------- R/runner.R | 24 +++++++++++++------- 2 files changed, 59 insertions(+), 21 deletions(-) diff --git a/R/post_treatment.R b/R/post_treatment.R index dc1c2a6..f8582e0 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -5,24 +5,34 @@ #' #' @param treeppl_out a character vector giving the TreePPL json output #' produced by [tp_treeppl]. -#' @param n_runs a [base::integer] giving the number of runs (MCMC) or sweeps (SMC). -#' #' -#' @return A list (n = n_runs) of data frames with the output from inference -#' in TreePPL. +#' @return A data frame with the output from inference in TreePPL. #' @export -tp_parse <- function(treeppl_out, n_runs = 1) { - - if (n_runs == 1) { - treeppl_out <- list(treeppl_out) - } +tp_parse <- function(treeppl_out) { result_df <- list() - for (index in seq_along(treeppl_out)) { - result_df <- - rbind(result_df, data.frame(samples=unlist(treeppl_out[[1]]$samples), - log_weight=unlist(treeppl_out[[1]]$weights))) + for (i in seq_along(treeppl_out)) { + + samples_c <- unlist(treeppl_out[[i]]$samples) + log_weight_c <- unlist(treeppl_out[[i]]$weights) + + if(is.null(names(samples_c))){ + result_df <- rbind(result_df, + data.frame(run = i, + samples = samples_c, + log_weight = log_weight_c, + norm_const = treeppl_out[[i]]$normConst) + ) + } else { + result_df <- rbind(result_df, + data.frame(run = i, + parameter = names(samples_c), + samples = samples_c, + log_weight = log_weight_c, + norm_const = treeppl_out[[i]]$normConst) + ) + } } return(result_df) @@ -221,3 +231,23 @@ peel_tree <- function(subtree, } result } + + +#' Check for convergence across multiple SMC sweeps/runs +#' +#' @param treeppl_out a character vector giving the TreePPL json output +#' produced by [tp_treeppl]. +#' +#' @returns Variance in the normalizing constants across SMC sweeps. +#' @export +#' +#' @examples +tp_smc_convergence <- function(treeppl_out) { + + output <- tp_parse(treeppl_out) + zs <- output %>% + slice_head(n = 1, by = run) %>% + pull(norm_const) + + return(var(zs)) +} diff --git a/R/runner.R b/R/runner.R index be7a5e2..a83da11 100644 --- a/R/runner.R +++ b/R/runner.R @@ -105,7 +105,7 @@ #' and manual (sample only at manually defined resampling locations). #' Use 'NULL' to ignore. #' -#' @return TreePPL output in JSON format. +#' @return A list of TreePPL output in parsed JSON format. #' @export tp_treeppl <- @@ -127,8 +127,11 @@ tp_treeppl <- prune = FALSE, subsample = NULL, resample = NULL) { + tp_write(model, model_file_name, data, data_file_name) + if (compile_model) { + tp_compile( model_file_name, samples, @@ -145,6 +148,7 @@ tp_treeppl <- resample ) } + return(tp_run(model_file_name, data_file_name, n_runs)) } @@ -360,7 +364,7 @@ tp_compile <- function(model_file_name = "tmp_model_file", #' #' @param model_file_name a character vector giving a model name. #' @param data_file_name a character vector giving a data name. -#' @param n_runs a [base::integer] giving the number of run (mcmc)/sweap (smc). +#' @param n_runs a [base::integer] giving the number of runs (mcmc)/sweaps (smc). #' #' @details #' @@ -372,16 +376,17 @@ tp_compile <- function(model_file_name = "tmp_model_file", #' a data name. Use a [treepplr::tp_stored_data] name if you have already write #' your data with [treepplr::tp_treeppl]. #' -#' `samples` : The number of samples (mcmc) / particules (smc) during inference. -#' #' `n_runs` : The number of run (mcmc) / sweap (smc) used for the inference. #' -#' @return TreePPL output in JSON format. +#' @return A list of TreePPL output in parsed JSON format. #' @export tp_run <- function(model_file_name = "tmp_model_file", data_file_name = "tmp_data_file", - n_runs = "1") { + n_runs = 1) { + + n_runs_string <- paste0("--sweeps ", n_runs, " ") + # if dir_path = NULL return temp_dir, if not return dir dir_path <- tp_tempdir() @@ -389,10 +394,13 @@ tp_run <- function(model_file_name = "tmp_model_file", # Empty LD_LIBRARY_PATH from R_env for this command specifically # due to conflict with internal env from treeppl self container command <- paste0("LD_LIBRARY_PATH= MCORE_LIBS= ", dir_path, model_file_name, ".exe ", - dir_path, data_file_name, ".json ", n_runs, + dir_path, data_file_name, ".json ", n_runs_string, paste(">", paste0(dir_path, model_file_name, "_out.json") )) system(command) - return(jsonlite::fromJSON(paste0(dir_path, model_file_name, "_out.json"), simplifyVector = FALSE)) + json_out <- readLines(paste0(dir_path, model_file_name, "_out.json")) %>% + lapply(jsonlite::fromJSON, simplifyVector = FALSE) + + return(json_out) } From 87b5e43e7297faff9623dd47fabd4b9f7be035c2 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Sun, 21 Dec 2025 17:17:07 +0100 Subject: [PATCH 02/10] Add functions to convert trees in treeppl output into multiphylo abject and rename other functions --- R/tree_convertion.R | 234 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 225 insertions(+), 9 deletions(-) diff --git a/R/tree_convertion.R b/R/tree_convertion.R index e770a6d..e0914cf 100644 --- a/R/tree_convertion.R +++ b/R/tree_convertion.R @@ -1,7 +1,7 @@ #' Convert phylo obj to TreePPL tree #' #' @description -#' `tp_phylo_2_TreePPL` takes an object of class `phylo` and returns +#' `tp_phylo_to_tpjson` takes an object of class `phylo` and returns #' a TreePPL json str ready to print in a data file for TreePPL use. #' #' @param phylo_tree an object of class [ape::phylo]. @@ -16,10 +16,10 @@ #' #' @export -tp_phylo_2_TreePPL <- function(phylo_tree, age = "") { +tp_phylo_to_tpjson <- function(phylo_tree, age = "") { name <- "tree" - root_tree <- tp_phylo_2_tppl_tree(phylo_tree) + root_tree <- tp_phylo_to_tppl_tree(phylo_tree) if (age != "branch-length") { tree <- tree_age_cumul(root_tree[[2]], root_tree[[1]], age) @@ -29,13 +29,13 @@ tp_phylo_2_TreePPL <- function(phylo_tree, age = "") { tree = tree, root_index = root_tree[[1]]) - tp_TreePPL_json(json_df) + tp_treeppl_json(json_df) } #' Convert phylo to a tppl_tree #' #' @description -#' `tp_phylo_2_tppl_tree` takes an object of class `phylo` and returns +#' `tp_phylo_to_tppl_tree` takes an object of class `phylo` and returns #' a tppl_tree. #' #' @param phylo_tree an object of class [ape::phylo]. @@ -43,7 +43,7 @@ tp_phylo_2_TreePPL <- function(phylo_tree, age = "") { #' @return A pair (root index, tppl_tree) #' -tp_phylo_2_tppl_tree <- function(phylo_tree) { +tp_phylo_to_tppl_tree <- function(phylo_tree) { name <- deparse(substitute(phylo_tree)) df_ <- tidytree::as_tibble(phylo_tree) @@ -88,7 +88,7 @@ tp_phylo_2_tppl_tree <- function(phylo_tree) { #' `tree_age_cumul` takes an tppl_tree and returns a json with #' branch length accumulation as node's age. #' -#' @param tree an tppl_tree create with [treepplr::tp_phylo_2_tppl_tree]. +#' @param tree an tppl_tree create with [treepplr::tp_phylo_to_tppl_tree]. #' @param root_index the index of the root in the tppl_tree. #' @param age a string that determine the way the age of the node are #' calculated (default "branch-length"). @@ -150,7 +150,7 @@ tree_age_cumul <- function(tree, root_index, age = "branch-length") { #' Convert a tppl_tree to TreePPL json str #' #' @description -#' `tp_TreePPL_json` takes an tppl_tree create with [treepplr::tp_phylo_2_tppl_tree] +#' `tp_treeppl_json` takes an tppl_tree create with [treepplr::tp_phylo_to_tppl_tree] #' and returns a list ready to be exported with JSON #' #' @param tree an object of class json. @@ -158,7 +158,7 @@ tree_age_cumul <- function(tree, root_index, age = "branch-length") { #' @return A TreePPL json str #' @export #' -tp_TreePPL_json <- function(tree) { +tp_treeppl_json <- function(tree) { pjs_list <- list(rec_tree_list(tree$tree, tree$root_index)) names(pjs_list) <- tree$name @@ -181,3 +181,219 @@ rec_tree_list <- function(tree, row_index) { pjs_list } + + + +#' Convert TreePPL multi-line JSON to R phylo/multiPhylo object with associated +#' weights +#' +#' @description +#' `tp_json_to_phylo` takes the path to a TreePPL json output and returns an +#' object of class `phylo`. +#' +#' @param json_out One of two options: +#' * A list of TreePPL output in parsed JSON format (output from +#' [treepplr::tp_treeppl()]), OR +#' * The full path of the json file containing the TreePPL output. +#' +#' @return A list with two elements: +#' $trees: A 'phylo' object (if one tree) or 'multiPhylo' object (if multiple). +#' $weights: A numeric vector of sample weights. +#' @export +tp_json_to_phylo <- function(json_out) { + + res <- try(file.exists(json_out), silent = TRUE) + # If path exists, import output from file + if (!is(res, "try-error") && res) { + + ## Read lines and parse each line as a separate JSON object + raw_lines <- readLines(json_out, warn = FALSE) + + # Filter out empty lines just in case + raw_lines <- raw_lines[raw_lines != ""] + + json_list <- lapply(raw_lines, function(x) { + jsonlite::fromJSON(x, simplifyVector = FALSE)}) + + # If path doesn't exist, then it should be a list + } else if (is.list(json_out)) { + json_list <- json_out + } else { + stop("Incorrect input format") + } + + ## Process each tree in the list + newick_strings <- sapply(json_list, function(sweep) { + + # loop over all particles within the sweep + samples <- sweep$samples + + sweep_string <- sapply(samples, function(particle) { + + # Extract the root age + root_data <- particle[[1]]$`__data__` + root_age <- root_data$age + + # Start recursion from the children of the root. + # The root itself does not have a branch length in standard Newick, + # but it provides the 'parent_age' for its immediate children. + + left_str <- build_newick_node(root_data$left, root_age) + right_str <- build_newick_node(root_data$right, root_age) + + # Construct final Newick string: (ChildL, ChildR); + paste0("(", left_str, ",", right_str, ");") + }) + + }) + + # 4. Convert to phylo + trees <- ape::read.tree(text = newick_strings) + + # 5. Get weight for each tree + nweight_matrix <- sapply(json_list, function(sweep) { + + nconst <- sweep$normConst + logweights <- unlist(sweep$weights) + log_nw <- nconst + logweights + + }) + + nweights <- as.vector(nweight_matrix) + norm_weights <- exp(nweights - max(nweights)) + + return(list(trees = trees, weights = norm_weights)) +} + + +# 2. Recursive function to build Newick string +# 'parent_age' is passed down from the caller +build_newick_node <- function(node, parent_age) { + + type <- node[["__constructor__"]] + data <- node[["__data__"]] + + # Ensure ages are numeric + parent_age <- as.numeric(parent_age) + + if (type == "Leaf") { + # Rule: Leaf branch length is the age of its parent node + len <- parent_age + + if (is.null(data$label)){ + label <- data$index + } else { + label <- data$label + } + + # Return "Label:Length" + return(paste0(label, ":", len)) + + } else if (type == "Node") { + # Rule: Internal node branch length = Parent Age - Own Age + current_age <- as.numeric(data$age) + len <- parent_age - current_age + + # Recursively process children, passing CURRENT age as their 'parent_age' + left_str <- build_newick_node(data$left, current_age) + right_str <- build_newick_node(data$right, current_age) + + # Return "(Left,Right):Length" + return(paste0("(", left_str, ",", right_str, "):", len)) + } +} + +#' Find the Maximum A Posteriori (MAP) Tree from weighted samples +#' +#' @param trees_out The list returned by [treepplr::tp_json_to_phylo] +#' (containing $trees and $weights) +#' +#' @returns +#' @export +#' +#' @examples +tp_map_tree <- function(trees_out) { + + trees <- trees_out$trees + weights <- trees_out$weights + + # Handle Log-Weights (Optional Check) + # If weights are negative (log-scale), convert them to probabilities first + if (any(weights < 0)) { + message("Log-weights detected. converting to relative probabilities...") + # Subtract max to avoid underflow/overflow issues + weights <- exp(weights - max(weights)) + } + + # Identify unique topologies + trees_ready <- lapply(trees, function(tree) { + + # normalize edge lengths for the tip reordering + tree$edge.length <- tree$edge.length/max(tree$edge.length) + # Ladderize to fix edge indices + tree_lad <- ladderize_tree(tree) + # Order tip labels as similarly as possible + tree_ord <- bnpsd::tree_reorder(tree_lad, sort(tree_lad$tip.label)) + # Remove edge lengths to only focus on topology + tree_ord$edge.length <- NULL + return(tree_ord) + + }) + + # This compresses the list into unique tree topologies + unique_topologies <- ape::unique.multiPhylo(trees_ready, use.edge.length = FALSE) + + # Map every original tree to a unique topology index + #match_indices <- match(trees_ready, unique_topologies) + match_indices <- attr(unique_topologies, "old.index") + + # Sum weights for each unique topology + # tapply splits the weights by the index and sums them + topology_probs <- tapply(weights, match_indices, sum) + + # Identify the Best Topology + best_index <- as.numeric(names(which.max(topology_probs))) + + # Calculate posterior probability of this MAP topology + map_prob <- max(topology_probs) / sum(topology_probs) + + # Compute Mean Branch Lengths for the MAP Topology + # We take all samples that matched the MAP topology... + matching_indices <- which(match_indices == best_index) + matching_trees <- trees[matching_indices] + matching_weights <- weights[matching_indices] + + # ...and compute a consensus to average their branch lengths. + # Ideally, we should do a weighted average of the lengths, + # but ape::consensus uses simple mean. For most purposes, this is sufficient. + final_map <- map <- phangorn::allCompat(matching_trees, rooted=TRUE) |> + phangorn::add_edge_length(matching_trees, + fun = function(x) weighted.mean(x, matching_weights)) + + print(paste("MAP Topology found")) + print(paste("Posterior Probability:", round(map_prob, 4))) + print(paste("Based on the topology of", length(matching_indices), + "samples out of", length(trees))) + + return(final_map) +} + + + +# Function to ladderize tree and correct tip label sequence +ladderize_tree <- function(tree, temp_file = "temp", orientation = "left"){ + if(file.exists(paste0("./", temp_file))){ + stop("The chosen temporary file exists! Please choose an other temp_file name") + } + if(orientation == "left"){ + right <- FALSE + }else{ + right <- TRUE + } + tree_temp <- ladderize(tree, right = right) + write.tree(tree_temp, file = paste0("./", temp_file, ".tre")) + tree_lad <- read.tree(paste0("./", temp_file, ".tre")) + file.remove(paste0("./", temp_file, ".tre")) + return(tree_lad) +} + From 5b9e11d0e4e1fecabc3c1c52018ee75953b12d69 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Sun, 21 Dec 2025 17:18:02 +0100 Subject: [PATCH 03/10] Add tree inference data and model to package --- inst/extdata/tree_inference.json | 8 ++ inst/extdata/tree_inference.tppl | 155 +++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 inst/extdata/tree_inference.json create mode 100644 inst/extdata/tree_inference.tppl diff --git a/inst/extdata/tree_inference.json b/inst/extdata/tree_inference.json new file mode 100644 index 0000000..9448966 --- /dev/null +++ b/inst/extdata/tree_inference.json @@ -0,0 +1,8 @@ +{"data": +[ + [1, 1, 0, 2, 3, 0, 0, 0, 0, 3, 1, 1, 3, 3, 2], + [1, 1, 0, 2, 0, 1, 0, 0, 0, 3, 1, 0, 1, 1, 0], + [0, 0, 1, 1, 0, 2, 1, 0, 0, 0, 2, 0, 3, 3, 0], + [0, 0, 1, 1, 0, 3, 0, 1, 0, 0, 2, 2, 3, 1, 0] +] +} diff --git a/inst/extdata/tree_inference.tppl b/inst/extdata/tree_inference.tppl new file mode 100644 index 0000000..38aa9b2 --- /dev/null +++ b/inst/extdata/tree_inference.tppl @@ -0,0 +1,155 @@ +// TreePPL script for tree inference under the +// Jukes Cantor model with a strict clock prior. Pruning hard-coded. + +// The nucleotide is specified as +// "A" for adenine - 0 +// "C" for cytosine - 1 +// "G" for guanine - 2 +// "T" for thymine - 3 +// "-" for gaps - 4 + +// TYPES + +type MsgTree = + | Leaf {age: Real, index: Int, msg: Matrix[Real][]} + | Node {age: Real, msg: Matrix[Real][], left: MsgTree, right: MsgTree} + +// FUNCTIONS + +// Randomly sample two indices in the trees vector, to be combined. Avoiding mirror cases. +function pickpair(n: Int) => Int[] { + assume i ~ Categorical(rep(n, 1./Real(n))); + let i = i + 1; + assume j ~ Categorical(rep((n-1), 1./Real(n-1))); + let j = j+1; + if (j < i) { return [i, j];} + else { return [i,j+1];} +} + +// Build forest of trees from leaves, recursively +function build_forest(data: Int[][], forest: MsgTree[], index: Int, data_len: Int, seq_len: Int) => MsgTree[] { + let new_message = sapply(data[index], get_leaf_message); + let new_leaf = Leaf{age = 0.0, index = index, msg = new_message}; + let new_forest = paste0([forest, [new_leaf]]); + if (data_len == index) { + return new_forest; + } + else { + return build_forest(data, new_forest, index + 1, data_len, seq_len); + } +} + +// Get message from leaves for each site +function get_leaf_message(seq: Int) => Matrix[Real] { + if (seq == 0) { // "A" + let message = rvecCreate(4, [1.0, 0.0, 0.0, 0.0]); + logWeight (log(0.25)); + return message; + } + if (seq == 1) { // "C" + let message = rvecCreate(4, [0.0, 1.0, 0.0, 0.0]); + logWeight (log(0.25)); + return message; + } + if (seq == 2) { // "G" + let message = rvecCreate(4, [0.0, 0.0, 1.0, 0.0]); + logWeight (log(0.25)); + return message; + } + if (seq == 3) { // "T" + let message = rvecCreate(4, [0.0, 0.0, 0.0, 1.0]); + logWeight (log(0.25)); + return message; + } + if (seq == 4) { // "-" + let message = rvecCreate(4, [1.0, 1.0, 1.0, 1.0]); + return message; + } + else { + return error("Invalid state at leaf"); + } +} + +//Compute log likelihood for each site +function get_log_likes(msg: Matrix[Real]) => Real { + let stationary_probs = cvecCreate(4, [0.25,0.25,0.25,0.25]); + let like = mtxMul(msg, stationary_probs); + let log_like = log(mtxGet(1, 1, like)); + return log_like; +} + +// KEY FUNCTION: CLUSTER +function cluster(q: Matrix[Real], trees: MsgTree[], maxAge: Real, seq_len: Int) => MsgTree[] { + + let n = length(trees); + + // Check if we have reached the root of the tree + if (n == 1) { + return trees; + } + + // Randomly sample two indices in the trees vector with function pickpair + // We will combine these, named left and right child + let pairs = pickpair(n); + let left_child = trees[pairs[1]]; + let right_child = trees[pairs[2]]; + + // Get the age of the new internal node + assume t ~ Exponential(10.0); + let age = maxAge + t; + + // Get incoming messages from children + let tmatrix_left = mtxTrans(mtxExp(mtxSclrMul(age-left_child.age, q))); + let tmatrix_right = mtxTrans(mtxExp(mtxSclrMul(age-right_child.age, q))); + + let left_in_msg = sapply(left_child.msg, mtxMul(_, tmatrix_left)); + let right_in_msg = sapply(right_child.msg, mtxMul(_, tmatrix_right)); + + // Get the message of the new node. + let node_msg = messageElemMul(left_in_msg, right_in_msg); + + // Weights + let log_likes = sapply(node_msg, get_log_likes); + logWeight (seqSumReal(log_likes)); + + // Remove weights of previous internal children + let log_likes_left = sapply(left_child.msg, get_log_likes); + logWeight -(seqSumReal(log_likes_left)); + let log_likes_right = sapply(right_child.msg, get_log_likes); + logWeight -(seqSumReal(log_likes_right)); + + // Manual resample + resample; + + // Combine picked pair of trees into a new node + let parent = Node{age=age, msg=node_msg, left=left_child, right=right_child}; + + // Compute new_trees list + let min = minInt(pairs[2],pairs[1]); + let max = maxInt(pairs[2],pairs[1]); + let new_trees = paste0([slice(trees, 1, min), slice(trees, (min+1), max), slice(trees, (max+1), (n+1)), [parent]]); + + // Recursive call to cluster for new_trees + return cluster(q, new_trees, age, seq_len); +} + +// MODEL FUNCTION + +model function myModel(data: Int[][]) => MsgTree[] { + // Define the scaled rate matrix for Jukes-Cantor + let q = mtxCreate(4,4, + [ -1.0, (1.0/3.0), (1.0/3.0), (1.0/3.0), + (1.0/3.0), -1.0, (1.0/3.0), (1.0/3.0), + (1.0/3.0), (1.0/3.0), -1.0, (1.0/3.0), + (1.0/3.0), (1.0/3.0), (1.0/3.0), -1.0] + ); + + let data_len = length(data); + let seq_len = length(data[1]); + + // Define the initial trees sequence (containing the leaves) + let trees = build_forest(data, [], 1, data_len, seq_len); + + // Build the tree by random clustering and return + return cluster(q, trees, 0.0, seq_len); +} From 6fa9fa20c6fb82803477646dd2930528b849c04a Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 22 Dec 2025 14:08:49 +0100 Subject: [PATCH 04/10] Fix treeppl installation --- R/utils.R | 133 +++++++++++++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 61 deletions(-) diff --git a/R/utils.R b/R/utils.R index 111133b..37f4dab 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,43 +1,3 @@ -#' Temporary directory for running treeppl -#' -#' @description -#' `tp_tempdir` returns a normalized path for a temporary directory where the -#' executables can read and write temporary files. -#' -#' @param temp_dir NULL, or a path to be used; if NULL, R's [base::tempdir] -#' is used. -#' @param sep Better ignored; non-default values are passed to -#' [base::normalizePath]. -#' @param sub Extension for defining a sub-directory within the directory -#' defined by [base::tempdir]. -#' -#' @return Normalized path with system-dependent terminal separator. -#' @export - -tp_tempdir <- function(temp_dir = NULL, - sep = NULL, - sub = NULL) { - if (is.null(sep)) { - sep <- sep() - if (is.null(temp_dir)) - temp_dir <- tempdir() - temp_dir <- normalizePath(temp_dir, sep) - if (substring(temp_dir, nchar(temp_dir)) != sep) { - temp_dir <- paste0(temp_dir, sep) - } - if (!is.null(sub)) - temp_dir <- paste0(temp_dir, sub, sep) - if (!dir.exists(temp_dir)) - dir.create(temp_dir) - temp_dir - } -} - -# Platform-dependent separator character -sep <- function() { - .Platform$file.sep -} - #' Fetch the latest version of treeppl #' @export @@ -64,8 +24,11 @@ tp_fp_fetch <- function() { file_name <- list.files(path = system.file(folder_name, package = "treepplr"), full.names = TRUE) # download file if file_name is empty if (length(file_name) == 0) { + # create destination folder + dest_folder <- paste(system.file(package = "treepplr"), folder_name, sep = "/") + system(paste("mkdir", dest_folder)) # download - fn <- paste(system.file(folder_name, package = "treepplr"), asset$name, sep = "/") + fn <- paste(dest_folder, asset$name, sep = "/") curl::curl_download( asset$browser_download_url, destfile = fn, @@ -78,7 +41,7 @@ tp_fp_fetch <- function() { # remove old file file.remove(file_name) # download - fn <- paste(system.file(folder_name, package = "treepplr"), asset$name, sep = "/") + fn <- paste(system.file(package = "treepplr"), folder_name, asset$name, sep = "/") curl::curl_download( asset$browser_download_url, destfile = fn, @@ -112,6 +75,70 @@ installing_treeppl <- function() { tpplc_path } + + +#' Temporary directory for running treeppl +#' +#' @description +#' `tp_tempdir` returns a normalized path for a temporary directory where the +#' executables can read and write temporary files. +#' +#' @param temp_dir NULL, or a path to be used; if NULL, R's [base::tempdir] +#' is used. +#' @param sep Better ignored; non-default values are passed to +#' [base::normalizePath]. +#' @param sub Extension for defining a sub-directory within the directory +#' defined by [base::tempdir]. +#' +#' @return Normalized path with system-dependent terminal separator. +#' @export + +tp_tempdir <- function(temp_dir = NULL, + sep = NULL, + sub = NULL) { + if (is.null(sep)) { + sep <- sep() + if (is.null(temp_dir)) + temp_dir <- tempdir() + temp_dir <- normalizePath(temp_dir, sep) + if (substring(temp_dir, nchar(temp_dir)) != sep) { + temp_dir <- paste0(temp_dir, sep) + } + if (!is.null(sub)) + temp_dir <- paste0(temp_dir, sub, sep) + if (!dir.exists(temp_dir)) + dir.create(temp_dir) + temp_dir + } +} + +# Platform-dependent separator character +sep <- function() { + .Platform$file.sep +} + + +#' Model names supported by treepplr +#' +#' @description Provides a list of all model names supported by treepplr. +#' The names can also be used to find data for these models +#' (see [treepplr::tp_data]). +#' +#' @return A list of model names. +#' @export +tp_model_names <- function() { + list( + custom = "custom", + coin = "coin", + hostrep3states = "hostrep3states", + hostrep2states = "hostrep2states", + tree_inference = "tree_inference", + crbd = "crbd", + clads = "clads" + ) +} + + # Find model and data files for model_name find_file <- function(model_name, exten) { if (exten == "tppl") { @@ -185,25 +212,6 @@ stored_files <- function(exten) { list } -#' Model names supported by treepplr -#' -#' @description Provides a list of all model names supported by treepplr. -#' The names can also be used to find data for these models -#' (see [treepplr::tp_data]). -#' -#' @return A list of model names. -#' @export -tp_model_names <- function() { - list( - custom = "custom", - coin = "coin", - hostrep3states = "hostrep3states", - hostrep2states = "hostrep2states", - tree_inference = "tree_inference", - crbd = "crbd", - clads = "clads" - ) -} #' Create a flat list #' @@ -229,3 +237,6 @@ tp_list <- function(...) { dotlist } + + + From 1ecfaa2f9dc61724cd18d88ddad56ecbd2d23155 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 22 Dec 2025 14:11:16 +0100 Subject: [PATCH 05/10] Update post treatment functions and coin, crb, and tree inference vignettes --- NAMESPACE | 7 +- R/getter.R | 5 +- R/post_treatment.R | 89 ++++++++++++++-- R/tree_convertion.R | 99 +++--------------- inst/extdata/README.txt | 17 +++ man/tp_TreePPL_json.Rd | 8 +- man/tp_json_to_phylo.Rd | 26 +++++ man/tp_map_tree.Rd | 18 ++++ man/tp_parse.Rd | 7 +- ...ylo_2_TreePPL.Rd => tp_phylo_to_tpjson.Rd} | 14 +-- ..._tppl_tree.Rd => tp_phylo_to_tppl_tree.Rd} | 8 +- man/tp_run.Rd | 8 +- man/tp_smc_convergence.Rd | 18 ++++ man/tp_treeppl.Rd | 2 +- man/tree_age_cumul.Rd | 6 +- tests/testthat/test-tree_convertion.R | 14 +-- vignettes/coin-example.Rmd | 30 +++--- vignettes/constant-rate-birth.Rmd | 25 +++-- vignettes/rdata/coin/output_coin.rds | Bin 75478 -> 168523 bytes vignettes/rdata/crb/output_crb.rds | Bin 70540 -> 16338 bytes .../tree_inference/output_tree_inference.rds | Bin 0 -> 57943 bytes vignettes/tree_inference.Rmd | 90 ++++++++++++++++ 22 files changed, 332 insertions(+), 159 deletions(-) create mode 100644 inst/extdata/README.txt create mode 100644 man/tp_json_to_phylo.Rd create mode 100644 man/tp_map_tree.Rd rename man/{tp_phylo_2_TreePPL.Rd => tp_phylo_to_tpjson.Rd} (56%) rename man/{tp_phylo_2_tppl_tree.Rd => tp_phylo_to_tppl_tree.Rd} (63%) create mode 100644 man/tp_smc_convergence.Rd create mode 100644 vignettes/rdata/tree_inference/output_tree_inference.rds create mode 100644 vignettes/tree_inference.Rmd diff --git a/NAMESPACE b/NAMESPACE index 17a3902..0651672 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,20 +1,23 @@ # Generated by roxygen2: do not edit by hand -export(tp_TreePPL_json) export(tp_compile) export(tp_data) export(tp_fp_fetch) +export(tp_json_to_phylo) export(tp_list) +export(tp_map_tree) export(tp_model) export(tp_model_names) export(tp_parse) export(tp_parse_host_rep) -export(tp_phylo_2_TreePPL) +export(tp_phylo_to_tpjson) export(tp_run) +export(tp_smc_convergence) export(tp_stored_compiled) export(tp_stored_data) export(tp_stored_model) export(tp_tempdir) export(tp_treeppl) +export(tp_treeppl_json) export(tp_write) importFrom(methods,is) diff --git a/R/getter.R b/R/getter.R index 1367883..daa1961 100644 --- a/R/getter.R +++ b/R/getter.R @@ -66,10 +66,9 @@ tp_data <- function(data_input) { # If path exists, import data from file if (!is(res, "try-error") && res) { data <- tp_list(jsonlite::fromJSON(data_input)) - # If path doens't exist + # If path doesn't exist } else if (assertthat::is.string(data_input)) { - res <- - try(get(data_input, treepplr::tp_model_names()), silent = TRUE) + res <- try(get(data_input, treepplr::tp_model_names()), silent = TRUE) # data_input has the name of a known model if (!is(res, "try-error")) { data <- tp_list(find_file(res, "json")) diff --git a/R/post_treatment.R b/R/post_treatment.R index f8582e0..838902c 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -38,6 +38,7 @@ tp_parse <- function(treeppl_out) { return(result_df) } + #' Parse TreePPL json output for host repertoire model #' #' @description @@ -47,17 +48,11 @@ tp_parse <- function(treeppl_out) { #' @param treeppl_out a character vector giving the TreePPL json output #' produced by [tp_treeppl]. #' -#' @param n_runs a [base::integer] giving the number of runs (MCMC) or sweeps (SMC). -#' -#' #' @return A list (n = n_runs) of data frames with the output from inference #' in TreePPL under the host repertoire evolution model. #' @export -tp_parse_host_rep <- function(treeppl_out, n_runs = 1) { - if (n_runs == 1) { - treeppl_out <- list(treeppl_out) - } +tp_parse_host_rep <- function(treeppl_out) { result_list <- list() @@ -92,7 +87,8 @@ tp_parse_host_rep <- function(treeppl_out, n_runs = 1) { "child2_index" ) - for (i in seq_along(output_trppl[1][[1]])) { + #for (i in seq_along(output_trppl[1][[1]])) { + for (i in seq_along(output_trppl$samples)) { res <- data.frame(matrix(ncol = nbr_col, nrow = 0)) colnames(res) <- c( "iteration", @@ -241,7 +237,6 @@ peel_tree <- function(subtree, #' @returns Variance in the normalizing constants across SMC sweeps. #' @export #' -#' @examples tp_smc_convergence <- function(treeppl_out) { output <- tp_parse(treeppl_out) @@ -251,3 +246,79 @@ tp_smc_convergence <- function(treeppl_out) { return(var(zs)) } + + + +#' Find the Maximum A Posteriori (MAP) Tree from weighted samples +#' +#' @param trees_out The list returned by [treepplr::tp_json_to_phylo] +#' (containing $trees and $weights) +#' +#' @returns The MAP tree as a phylo object +#' @export +#' +tp_map_tree <- function(trees_out) { + + trees <- trees_out$trees + weights <- trees_out$weights + + # Handle Log-Weights (Optional Check) + # If weights are negative (log-scale), convert them to probabilities first + if (any(weights < 0)) { + message("Log-weights detected. converting to relative probabilities...") + # Subtract max to avoid underflow/overflow issues + weights <- exp(weights - max(weights)) + } + + # Identify unique topologies + trees_ready <- lapply(trees, function(tree) { + + # normalize edge lengths for the tip reordering + tree$edge.length <- tree$edge.length/max(tree$edge.length) + # Ladderize to fix edge indices + tree_lad <- ladderize_tree(tree) + # Order tip labels as similarly as possible + tree_ord <- bnpsd::tree_reorder(tree_lad, sort(tree_lad$tip.label)) + # Remove edge lengths to only focus on topology + tree_ord$edge.length <- NULL + return(tree_ord) + + }) + + # This compresses the list into unique tree topologies + unique_topologies <- ape::unique.multiPhylo(trees_ready, use.edge.length = FALSE) + + # Map every original tree to a unique topology index + #match_indices <- match(trees_ready, unique_topologies) + match_indices <- attr(unique_topologies, "old.index") + + # Sum weights for each unique topology + # tapply splits the weights by the index and sums them + topology_probs <- tapply(weights, match_indices, sum) + + # Identify the Best Topology + best_index <- as.numeric(names(which.max(topology_probs))) + + # Calculate posterior probability of this MAP topology + map_prob <- max(topology_probs) / sum(topology_probs) + + # Compute Mean Branch Lengths for the MAP Topology + # We take all samples that matched the MAP topology... + matching_indices <- which(match_indices == best_index) + matching_trees <- trees[matching_indices] + matching_weights <- weights[matching_indices] + + # ...and compute a consensus to average their branch lengths. + # Ideally, we should do a weighted average of the lengths, + # but ape::consensus uses simple mean. For most purposes, this is sufficient. + final_map <- map <- phangorn::allCompat(matching_trees, rooted=TRUE) |> + phangorn::add_edge_length(matching_trees, + fun = function(x) weighted.mean(x, matching_weights)) + + print(paste("MAP Topology found")) + print(paste("Posterior Probability:", round(map_prob, 4))) + print(paste("Based on the topology of", length(matching_indices), + "samples out of", length(trees))) + + return(final_map) +} diff --git a/R/tree_convertion.R b/R/tree_convertion.R index e0914cf..f77ecfd 100644 --- a/R/tree_convertion.R +++ b/R/tree_convertion.R @@ -5,12 +5,12 @@ #' a TreePPL json str ready to print in a data file for TreePPL use. #' #' @param phylo_tree an object of class [ape::phylo]. -#' @param age a string that determine the way the age of the node are +#' @param age a string that determines the way the age of the nodes are #' calculated (default "branch-length"). #' #' * "branch-length" : Root's age = NA, branch-length from the parent branch -#' * "top-down" : Root's age = 0.0, cumulative branch-length from root -#' * "down-top" : Leaf's age = 0.0, cumulative branch-length from leaf +#' * "root-to-tip" : Root's age = 0.0, cumulative branch-length from root +#' * "tip-to-root" : Leaf's age = 0.0, cumulative branch-length from leaf #' #' @return A TreePPL json str #' @@ -93,8 +93,8 @@ tp_phylo_to_tppl_tree <- function(phylo_tree) { #' @param age a string that determine the way the age of the node are #' calculated (default "branch-length"). #' -#' * "top-down" : Root's age = 0.0, cumulative branch-length from root -#' * "down-top" : Leaf's age = 0.0, cumulative branch-length from leaf +#' * "root-to-tip" : Root's age = 0.0, cumulative branch-length from root +#' * "tip-to-root" : Leaf's age = 0.0, cumulative branch-length from leaf #' #' @return A tppl_tree @@ -103,7 +103,7 @@ tree_age_cumul <- function(tree, root_index, age = "branch-length") { down <- TRUE going_left <- c(TRUE, NA) i <- root_index - if (age == "top-down") { + if (age == "root-to-tip") { tree[i, "Age"] <- 0.0 age_cumul[i] <- 0.0 } @@ -118,13 +118,13 @@ tree_age_cumul <- function(tree, root_index, age = "branch-length") { i <- tree[i, "Right"] } going_left <- c(TRUE, going_left) - if (age == "top-down") { + if (age == "root-to-tip") { age_cumul[i] <- age_cumul[parent[1]] + tree[i, "Age"] } } else { down <- FALSE going_left <- going_left[-1] - if (age == "down-top") { + if (age == "tip-to-root") { age_cumul[i] <- 0.0 } } @@ -134,7 +134,7 @@ tree_age_cumul <- function(tree, root_index, age = "branch-length") { if (going_left[1]) { down <- TRUE going_left[1] <- FALSE - if (age == "down-top") { + if (age == "tip-to-root") { age_cumul[i] <- age_cumul[tree[i, "Left"]] + tree[tree[i, "Left"], "Age"] } } else { @@ -303,81 +303,6 @@ build_newick_node <- function(node, parent_age) { } } -#' Find the Maximum A Posteriori (MAP) Tree from weighted samples -#' -#' @param trees_out The list returned by [treepplr::tp_json_to_phylo] -#' (containing $trees and $weights) -#' -#' @returns -#' @export -#' -#' @examples -tp_map_tree <- function(trees_out) { - - trees <- trees_out$trees - weights <- trees_out$weights - - # Handle Log-Weights (Optional Check) - # If weights are negative (log-scale), convert them to probabilities first - if (any(weights < 0)) { - message("Log-weights detected. converting to relative probabilities...") - # Subtract max to avoid underflow/overflow issues - weights <- exp(weights - max(weights)) - } - - # Identify unique topologies - trees_ready <- lapply(trees, function(tree) { - - # normalize edge lengths for the tip reordering - tree$edge.length <- tree$edge.length/max(tree$edge.length) - # Ladderize to fix edge indices - tree_lad <- ladderize_tree(tree) - # Order tip labels as similarly as possible - tree_ord <- bnpsd::tree_reorder(tree_lad, sort(tree_lad$tip.label)) - # Remove edge lengths to only focus on topology - tree_ord$edge.length <- NULL - return(tree_ord) - - }) - - # This compresses the list into unique tree topologies - unique_topologies <- ape::unique.multiPhylo(trees_ready, use.edge.length = FALSE) - - # Map every original tree to a unique topology index - #match_indices <- match(trees_ready, unique_topologies) - match_indices <- attr(unique_topologies, "old.index") - - # Sum weights for each unique topology - # tapply splits the weights by the index and sums them - topology_probs <- tapply(weights, match_indices, sum) - - # Identify the Best Topology - best_index <- as.numeric(names(which.max(topology_probs))) - - # Calculate posterior probability of this MAP topology - map_prob <- max(topology_probs) / sum(topology_probs) - - # Compute Mean Branch Lengths for the MAP Topology - # We take all samples that matched the MAP topology... - matching_indices <- which(match_indices == best_index) - matching_trees <- trees[matching_indices] - matching_weights <- weights[matching_indices] - - # ...and compute a consensus to average their branch lengths. - # Ideally, we should do a weighted average of the lengths, - # but ape::consensus uses simple mean. For most purposes, this is sufficient. - final_map <- map <- phangorn::allCompat(matching_trees, rooted=TRUE) |> - phangorn::add_edge_length(matching_trees, - fun = function(x) weighted.mean(x, matching_weights)) - - print(paste("MAP Topology found")) - print(paste("Posterior Probability:", round(map_prob, 4))) - print(paste("Based on the topology of", length(matching_indices), - "samples out of", length(trees))) - - return(final_map) -} - # Function to ladderize tree and correct tip label sequence @@ -390,9 +315,9 @@ ladderize_tree <- function(tree, temp_file = "temp", orientation = "left"){ }else{ right <- TRUE } - tree_temp <- ladderize(tree, right = right) - write.tree(tree_temp, file = paste0("./", temp_file, ".tre")) - tree_lad <- read.tree(paste0("./", temp_file, ".tre")) + tree_temp <- ape::ladderize(tree, right = right) + ape::write.tree(tree_temp, file = paste0("./", temp_file, ".tre")) + tree_lad <- ape::read.tree(paste0("./", temp_file, ".tre")) file.remove(paste0("./", temp_file, ".tre")) return(tree_lad) } diff --git a/inst/extdata/README.txt b/inst/extdata/README.txt new file mode 100644 index 0000000..1f7c7e6 --- /dev/null +++ b/inst/extdata/README.txt @@ -0,0 +1,17 @@ +### The files included in this folder come from the treeppl repository. + + +## Tree inference + +model from https://github.com/treeppl/treeppl/blob/main/models/tree-inference/tree_inference_pruning.tppl + +data from https://github.com/treeppl/treeppl/blob/main/models/tree-inference/data/testdata_tree_inference_pruning.json + + +## Host repertoire + +model from https://github.com/treeppl/treeppl/blob/main/models/host-repertoire-evolution/flat-root-prior-HRM.tppl + +data from https://github.com/treeppl/treeppl/blob/main/models/host-repertoire-evolution/data/testdata_flat-root-prior-HRM.json + + diff --git a/man/tp_TreePPL_json.Rd b/man/tp_TreePPL_json.Rd index 2ed9bf5..2cc5ebd 100644 --- a/man/tp_TreePPL_json.Rd +++ b/man/tp_TreePPL_json.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/tree_convertion.R -\name{tp_TreePPL_json} -\alias{tp_TreePPL_json} +\name{tp_treeppl_json} +\alias{tp_treeppl_json} \title{Convert a tppl_tree to TreePPL json str} \usage{ -tp_TreePPL_json(tree) +tp_treeppl_json(tree) } \arguments{ \item{tree}{an object of class json.} @@ -13,6 +13,6 @@ tp_TreePPL_json(tree) A TreePPL json str } \description{ -\code{tp_TreePPL_json} takes an tppl_tree create with \link{tp_phylo_2_tppl_tree} +\code{tp_treeppl_json} takes an tppl_tree create with \link{tp_phylo_to_tppl_tree} and returns a list ready to be exported with JSON } diff --git a/man/tp_json_to_phylo.Rd b/man/tp_json_to_phylo.Rd new file mode 100644 index 0000000..63f4c61 --- /dev/null +++ b/man/tp_json_to_phylo.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/tree_convertion.R +\name{tp_json_to_phylo} +\alias{tp_json_to_phylo} +\title{Convert TreePPL multi-line JSON to R phylo/multiPhylo object with associated +weights} +\usage{ +tp_json_to_phylo(json_out) +} +\arguments{ +\item{json_out}{One of two options: +\itemize{ +\item A list of TreePPL output in parsed JSON format (output from +\code{\link[=tp_treeppl]{tp_treeppl()}}), OR +\item The full path of the json file containing the TreePPL output. +}} +} +\value{ +A list with two elements: +$trees: A 'phylo' object (if one tree) or 'multiPhylo' object (if multiple). +$weights: A numeric vector of sample weights. +} +\description{ +\code{tp_json_to_phylo} takes the path to a TreePPL json output and returns an +object of class \code{phylo}. +} diff --git a/man/tp_map_tree.Rd b/man/tp_map_tree.Rd new file mode 100644 index 0000000..589e2c3 --- /dev/null +++ b/man/tp_map_tree.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/post_treatment.R +\name{tp_map_tree} +\alias{tp_map_tree} +\title{Find the Maximum A Posteriori (MAP) Tree from weighted samples} +\usage{ +tp_map_tree(trees_out) +} +\arguments{ +\item{trees_out}{The list returned by \link{tp_json_to_phylo} +(containing $trees and $weights)} +} +\value{ +The MAP tree as a phylo object +} +\description{ +Find the Maximum A Posteriori (MAP) Tree from weighted samples +} diff --git a/man/tp_parse.Rd b/man/tp_parse.Rd index 7eccfff..da161f8 100644 --- a/man/tp_parse.Rd +++ b/man/tp_parse.Rd @@ -4,17 +4,14 @@ \alias{tp_parse} \title{Parse simple TreePPL json output} \usage{ -tp_parse(treeppl_out, n_runs = 1) +tp_parse(treeppl_out) } \arguments{ \item{treeppl_out}{a character vector giving the TreePPL json output produced by \link{tp_treeppl}.} - -\item{n_runs}{a \link[base:integer]{base::integer} giving the number of runs (MCMC) or sweeps (SMC).} } \value{ -A list (n = n_runs) of data frames with the output from inference -in TreePPL. +A data frame with the output from inference in TreePPL. } \description{ \code{tp_parse} takes TreePPL json output and returns a data.frame diff --git a/man/tp_phylo_2_TreePPL.Rd b/man/tp_phylo_to_tpjson.Rd similarity index 56% rename from man/tp_phylo_2_TreePPL.Rd rename to man/tp_phylo_to_tpjson.Rd index 610cba8..1677cef 100644 --- a/man/tp_phylo_2_TreePPL.Rd +++ b/man/tp_phylo_to_tpjson.Rd @@ -1,26 +1,26 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/tree_convertion.R -\name{tp_phylo_2_TreePPL} -\alias{tp_phylo_2_TreePPL} +\name{tp_phylo_to_tpjson} +\alias{tp_phylo_to_tpjson} \title{Convert phylo obj to TreePPL tree} \usage{ -tp_phylo_2_TreePPL(phylo_tree, age = "") +tp_phylo_to_tpjson(phylo_tree, age = "") } \arguments{ \item{phylo_tree}{an object of class \link[ape:read.tree]{ape::phylo}.} -\item{age}{a string that determine the way the age of the node are +\item{age}{a string that determines the way the age of the nodes are calculated (default "branch-length"). \itemize{ \item "branch-length" : Root's age = NA, branch-length from the parent branch -\item "top-down" : Root's age = 0.0, cumulative branch-length from root -\item "down-top" : Leaf's age = 0.0, cumulative branch-length from leaf +\item "root-to-tip" : Root's age = 0.0, cumulative branch-length from root +\item "tip-to-root" : Leaf's age = 0.0, cumulative branch-length from leaf }} } \value{ A TreePPL json str } \description{ -\code{tp_phylo_2_TreePPL} takes an object of class \code{phylo} and returns +\code{tp_phylo_to_tpjson} takes an object of class \code{phylo} and returns a TreePPL json str ready to print in a data file for TreePPL use. } diff --git a/man/tp_phylo_2_tppl_tree.Rd b/man/tp_phylo_to_tppl_tree.Rd similarity index 63% rename from man/tp_phylo_2_tppl_tree.Rd rename to man/tp_phylo_to_tppl_tree.Rd index 77b7d5c..57e25ef 100644 --- a/man/tp_phylo_2_tppl_tree.Rd +++ b/man/tp_phylo_to_tppl_tree.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/tree_convertion.R -\name{tp_phylo_2_tppl_tree} -\alias{tp_phylo_2_tppl_tree} +\name{tp_phylo_to_tppl_tree} +\alias{tp_phylo_to_tppl_tree} \title{Convert phylo to a tppl_tree} \usage{ -tp_phylo_2_tppl_tree(phylo_tree) +tp_phylo_to_tppl_tree(phylo_tree) } \arguments{ \item{phylo_tree}{an object of class \link[ape:read.tree]{ape::phylo}.} @@ -13,6 +13,6 @@ tp_phylo_2_tppl_tree(phylo_tree) A pair (root index, tppl_tree) } \description{ -\code{tp_phylo_2_tppl_tree} takes an object of class \code{phylo} and returns +\code{tp_phylo_to_tppl_tree} takes an object of class \code{phylo} and returns a tppl_tree. } diff --git a/man/tp_run.Rd b/man/tp_run.Rd index 511c328..cfc0852 100644 --- a/man/tp_run.Rd +++ b/man/tp_run.Rd @@ -7,7 +7,7 @@ tp_run( model_file_name = "tmp_model_file", data_file_name = "tmp_data_file", - n_runs = "1" + n_runs = 1 ) } \arguments{ @@ -15,10 +15,10 @@ tp_run( \item{data_file_name}{a character vector giving a data name.} -\item{n_runs}{a \link[base:integer]{base::integer} giving the number of run (mcmc)/sweap (smc).} +\item{n_runs}{a \link[base:integer]{base::integer} giving the number of runs (mcmc)/sweaps (smc).} } \value{ -TreePPL output in JSON format. +A list of TreePPL output in parsed JSON format. } \description{ \code{tp_treeppl} execute TreePPL and return TreePPL output (string JSON format). @@ -34,7 +34,5 @@ write your model with \link{tp_treeppl}. a data name. Use a \link{tp_stored_data} name if you have already write your data with \link{tp_treeppl}. -\code{samples} : The number of samples (mcmc) / particules (smc) during inference. - \code{n_runs} : The number of run (mcmc) / sweap (smc) used for the inference. } diff --git a/man/tp_smc_convergence.Rd b/man/tp_smc_convergence.Rd new file mode 100644 index 0000000..732c60c --- /dev/null +++ b/man/tp_smc_convergence.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/post_treatment.R +\name{tp_smc_convergence} +\alias{tp_smc_convergence} +\title{Check for convergence across multiple SMC sweeps/runs} +\usage{ +tp_smc_convergence(treeppl_out) +} +\arguments{ +\item{treeppl_out}{a character vector giving the TreePPL json output +produced by \link{tp_treeppl}.} +} +\value{ +Variance in the normalizing constants across SMC sweeps. +} +\description{ +Check for convergence across multiple SMC sweeps/runs +} diff --git a/man/tp_treeppl.Rd b/man/tp_treeppl.Rd index 4360e8d..f43a9c7 100644 --- a/man/tp_treeppl.Rd +++ b/man/tp_treeppl.Rd @@ -70,7 +70,7 @@ posterior distribution.} method} } \value{ -TreePPL output in JSON format. +A list of TreePPL output in parsed JSON format. } \description{ \code{tp_treeppl} execute TreePPL and return TreePPL output (string JSON format). diff --git a/man/tree_age_cumul.Rd b/man/tree_age_cumul.Rd index c8b1f9e..7835d47 100644 --- a/man/tree_age_cumul.Rd +++ b/man/tree_age_cumul.Rd @@ -7,15 +7,15 @@ tree_age_cumul(tree, root_index, age = "branch-length") } \arguments{ -\item{tree}{an tppl_tree create with \link{tp_phylo_2_tppl_tree}.} +\item{tree}{an tppl_tree create with \link{tp_phylo_to_tppl_tree}.} \item{root_index}{the index of the root in the tppl_tree.} \item{age}{a string that determine the way the age of the node are calculated (default "branch-length"). \itemize{ -\item "top-down" : Root's age = 0.0, cumulative branch-length from root -\item "down-top" : Leaf's age = 0.0, cumulative branch-length from leaf +\item "root-to-tip" : Root's age = 0.0, cumulative branch-length from root +\item "tip-to-root" : Leaf's age = 0.0, cumulative branch-length from leaf }} } \value{ diff --git a/tests/testthat/test-tree_convertion.R b/tests/testthat/test-tree_convertion.R index 0b14564..795498b 100644 --- a/tests/testthat/test-tree_convertion.R +++ b/tests/testthat/test-tree_convertion.R @@ -15,7 +15,7 @@ ex_tree <- data.frame( ) testthat::test_that("Test-json_1a : tree_age_cumul", { - cat("\tTest-json_1a : tree_age_cumul with top-down\n") + cat("\tTest-json_1a : tree_age_cumul with root-to-tip\n") top_down_tree <- data.frame( Type = c("Leaf", "Leaf", "Leaf", "Leaf", "Leaf", "Node","Node","Node","Node"), @@ -25,13 +25,13 @@ testthat::test_that("Test-json_1a : tree_age_cumul", { Right = c(NA,NA,NA,NA,NA,8,2,9,5) ) - res_tree <- treepplr:::tree_age_cumul(ex_tree, 6, age = "top-down") + res_tree <- treepplr:::tree_age_cumul(ex_tree, 6, age = "root-to-tip") testthat::expect_equal(top_down_tree, res_tree) }) testthat::test_that("Test-json_1b : tree_age_cumul", { - cat("\tTest-json_1b : tree_age_cumul with down-top\n") + cat("\tTest-json_1b : tree_age_cumul with tip-to-root\n") down_top_tree <- data.frame( Type = c("Leaf", "Leaf", "Leaf", "Leaf", "Leaf", "Node","Node","Node","Node"), @@ -41,17 +41,17 @@ testthat::test_that("Test-json_1b : tree_age_cumul", { Right = c(NA,NA,NA,NA,NA,8,2,9,5) ) - res_tree <- treepplr:::tree_age_cumul(ex_tree, 6, age = "down-top") + res_tree <- treepplr:::tree_age_cumul(ex_tree, 6, age = "tip-to-root") testthat::expect_equal(down_top_tree, res_tree) }) -testthat::test_that("Test-json_2 : tp_phylo_2_tppl_tree", { - cat("\tTest-json_2 : tp_phylo_2_tppl_tree with phylo\n") +testthat::test_that("Test-json_2 : tp_phylo_to_tppl_tree", { + cat("\tTest-json_2 : tp_phylo_to_tppl_tree with phylo\n") ex_tree_phylo <- ape::read.tree(text="((1:1,2:1)7:5,(3:4,(4:1.5,5:1.5)9:2.5)8:2)6;") - res_tree <- treepplr:::tp_phylo_2_tppl_tree(ex_tree_phylo) + res_tree <- treepplr:::tp_phylo_to_tppl_tree(ex_tree_phylo) testthat::expect_equal(6, res_tree[[1]]) testthat::expect_equal(ex_tree, res_tree[[2]]) diff --git a/vignettes/coin-example.Rmd b/vignettes/coin-example.Rmd index 693d9aa..c356a04 100644 --- a/vignettes/coin-example.Rmd +++ b/vignettes/coin-example.Rmd @@ -16,6 +16,8 @@ knitr::opts_chunk$set( warning = FALSE, message = FALSE ) + +options(rmarkdown.html_vignette.check_title = FALSE) ``` ```{r setup} @@ -41,10 +43,10 @@ str(data) ## Run TreePPL -Now we can compile and run the TreePPL program. The function *tp_treeppl()* has many optional arguments to change the inference method used. Here, we will use the default settings and only pass the model and the data. +Now we can compile and run the TreePPL program. The function *tp_treeppl()* has many optional arguments to change the inference method used. Here, we will use the default settings for inference methods, run 100 sweeps and 100 particles within each sweep. ```{r, eval=FALSE} -output_list <- tp_treeppl(model = model, data = data) +output_list <- tp_treeppl(model = model, data = data, samples = 100, n_runs = 100) ``` ```{r, echo=FALSE} @@ -53,18 +55,22 @@ output_list <- readRDS("rdata/coin/output_coin.rds") ## Plot the posterior distribution -TreePPL outputs the log weight of each sample, so first we need to get the normalized weights and then we can plot the posterior distribution produced. +Just as we compare different MCMC runs/chains to test for convergence, in SMC we +tun several sweeps and then compare their normalizing constants to test if they +converged to the same posterior distribution. The criterion for convergence is +that the variance of the normalizing constants across all sweeps is lower than 1. ```{r, fig.height=5, fig.width=5} -# turn list into a data frame where each row represents one sample -# and calculate normalized weights from log weights -output <- tp_parse(output_list) %>% - dplyr::mutate(weight = exp(log_weight - max(.$log_weight))) +tp_smc_convergence(output_list) -ggplot(output, aes(samples, weight=weight)) + - geom_histogram(aes(y = after_stat(density)), - col = "white", fill = "lightblue", binwidth=0.04) + - geom_density() + - theme_bw() +output <- tp_parse(output_list) %>% + dplyr::mutate(total_lweight = log_weight + norm_const) %>% + dplyr::mutate(norm_weight = exp(total_lweight - max(.$total_lweight))) + +ggplot2::ggplot(output, ggplot2::aes(samples, weight = norm_weight)) + + ggplot2::geom_histogram(ggplot2::aes(y = ggplot2::after_stat(density)), + col = "white", fill = "lightblue", binwidth=0.01) + + ggplot2::geom_density() + + ggplot2::theme_bw() ``` diff --git a/vignettes/constant-rate-birth.Rmd b/vignettes/constant-rate-birth.Rmd index c0a7867..b4d8a0a 100644 --- a/vignettes/constant-rate-birth.Rmd +++ b/vignettes/constant-rate-birth.Rmd @@ -16,6 +16,8 @@ knitr::opts_chunk$set( warning = FALSE, message = FALSE ) + +options(rmarkdown.html_vignette.check_title = FALSE) ``` ```{r setup} @@ -31,15 +33,16 @@ library(magrittr) We will use an example (random) tree that comes with the package. ```{r, fig.width=6, fig.height=4} -tree <- read.tree(system.file( +tree <- ape::read.tree(system.file( "extdata/crb_tree_15_tips.tre", package = "treepplr")) -plot.phylo(tree, cex = 0.5) +ape::plot.phylo(tree, cex = 0.5) +axisPhylo() ``` We need to convert the tree to a **TreePPL** readable format and read the CRB model. ```{r} -data <- tp_phylo_2_TreePPL(tree, age="down-top") +data <- tp_phylo_to_tpjson(tree, age="tip-to-root") model <- tp_model(system.file("extdata/crb.tppl", package = "treepplr")) ``` @@ -59,19 +62,21 @@ output_list <- readRDS("rdata/crb/output_crb.rds") ## Plot posterior -TreePPL outputs the log weight of each sample, so first we need to get the normalized weights and then we can plot the posterior distribution produced. +TreePPL outputs the log weight of each sample, so first we need to get the +normalized weights and then we can plot the posterior distribution produced. ```{r, fig.height=4, fig.width=6} # turn list into a data frame where each row represents one sample -# and calculate normalized weights from log weights +# and calculate normalized weights from log weights and normalizing constants. output <- tp_parse(output_list) %>% - dplyr::mutate(weight = exp(log_weight - max(.$log_weight))) + dplyr::mutate(total_lweight = log_weight + norm_const) %>% + dplyr::mutate(norm_weight = exp(total_lweight - max(.$total_lweight))) -ggplot(output, aes(samples, weight=weight)) + - geom_histogram(aes(y = after_stat(density)), +ggplot2::ggplot(output, ggplot2::aes(samples, weight = norm_weight)) + + ggplot2::geom_histogram(ggplot2::aes(y = ggplot2::after_stat(density)), col = "white", fill = "lightblue", binwidth=0.04) + - geom_density() + - theme_bw() + ggplot2::geom_density() + + ggplot2::theme_bw() ``` diff --git a/vignettes/rdata/coin/output_coin.rds b/vignettes/rdata/coin/output_coin.rds index a9da72083f0fcd90b90b0133ea18b566b3f4a1e9..c59473fa496d89b27fee8b7474c7b6a24c75b911 100644 GIT binary patch literal 168523 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 z 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

rYwoh;1|kr3SfK<>r*PGGnY7u`Ra1jId9Sxcixa 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∾^ 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

4-F(MGN=#2 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 literal 75478 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 E0Q+JdtN;K2 diff --git a/vignettes/rdata/crb/output_crb.rds b/vignettes/rdata/crb/output_crb.rds index bbfa44864cb59e871cd24bd4aff0f6809a5fbcdd..8667349b990993aac516663987dcfd29606a86e5 100644 GIT binary patch literal 16338 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 literal 70540 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 z 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 z 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

27b*}iPdyL0da|8PjxMO5j~9II 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 GIROBhUx8@= diff --git a/vignettes/rdata/tree_inference/output_tree_inference.rds b/vignettes/rdata/tree_inference/output_tree_inference.rds new file mode 100644 index 0000000000000000000000000000000000000000..e6222b1ac709c507591a9a9f42ea4ece96fa13b8 GIT binary patch literal 57943 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 B*YyAZ literal 0 HcmV?d00001 diff --git a/vignettes/tree_inference.Rmd b/vignettes/tree_inference.Rmd new file mode 100644 index 0000000..aa95c00 --- /dev/null +++ b/vignettes/tree_inference.Rmd @@ -0,0 +1,90 @@ +--- +title: "Tree inference" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{tree_inference} + %\VignetteEncoding{UTF-8} + %\VignetteEngine{knitr::rmarkdown} +editor_options: + chunk_output_type: console +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + warning = FALSE, + message = FALSE +) + +options(rmarkdown.html_vignette.check_title = FALSE) +``` + +```{r setup} +library(treepplr) +library(dplyr) +library(ggplot2) +library(ape) +``` + +## Load model and data files + +Load the tree inference model and example data available within `treepplr`. + +```{r} +model <- tp_model("tree_inference") +data <- tp_data("tree_inference") +``` + +The data in this example is a toy dataset ... + +```{r} +str(data) +``` + +## Run TreePPL + +Now we can compile and run the TreePPL program. The function `tp_treeppl()` has +many optional arguments to change the inference method used. Here, we will use + +```{r, eval=FALSE} +output_list <- tp_treeppl(model = model, data = data, method = "smc-apf", + samples = 1000, subsample = 5, resample = "manual", + n_runs = 10) +``` + +```{r, echo=FALSE} +output_list <- readRDS("rdata/tree_inference/output_tree_inference.rds") +``` + +The result is a list of sweeps, each one containing 3 elements: the sampled +parameter values and the weights (in log scale) for each of the 5 particles in +each sweep, and the normalizing constant for the whole sweep. + +```{r} +str(output_list,max.level = 2) +``` + +## Plot the posterior distribution + +In this example we will check that the different runs converged to the same posterior, +by checking the variance in the normalizing constant among runs. + +```{r, fig.height=5, fig.width=5} +tp_smc_convergence(output_list) +``` + +There are different ways to summarize the posterior distribution of trees. In +this examples, we calculate the the MAP (Maximum A Posteriori) tree. We do this +by finding the single tree topology that has the highest posterior probability, +and then using `ape::consensus` to compute average branch lengths for all sampled +trees with the MAP topology. + +```{r, fig.height=4, fig.width=5} +out_trees <- tp_json_to_phylo(output_list) + +map_tree <- tp_map_tree(out_trees) +plot(map_tree) +axisPhylo() +``` + From 15983c340cbc73022d4af4358b031ae412667664 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 22 Dec 2025 14:22:33 +0100 Subject: [PATCH 06/10] Partially update repertoire vignette, which is now broken --- inst/extdata/hostrep3states.json | 85 +- inst/extdata/hostrep3states.tppl | 959 +++++++----------- .../hostrep3states_extant_interactions.csv | 5 - inst/extdata/hostrep3states_host_tree.tre | 2 - inst/extdata/hostrep3states_treeRev.tre | 1 - man/tp_parse_host_rep.Rd | 4 +- vignettes/hostrep-example.Rmd | 187 ++-- 7 files changed, 525 insertions(+), 718 deletions(-) delete mode 100644 inst/extdata/hostrep3states_extant_interactions.csv delete mode 100644 inst/extdata/hostrep3states_host_tree.tre delete mode 100644 inst/extdata/hostrep3states_treeRev.tre diff --git a/inst/extdata/hostrep3states.json b/inst/extdata/hostrep3states.json index fb63080..b9f5c88 100644 --- a/inst/extdata/hostrep3states.json +++ b/inst/extdata/hostrep3states.json @@ -2,25 +2,53 @@ "symbiont_tree": { "__constructor__": "Node", "__data__": { - "label": 7, - "age": 2.0, + "label": 11, + "age": 10.0, "left": { "__constructor__": "Node", "__data__": { - "label": 6, - "age": 0.735218, + "label": 9, + "age": 3.360348, "left": { - "__constructor__": "Leaf", + "__constructor__": "Node", "__data__": { - "label": 4, - "age": 0.0 + "label": 7, + "age": 1.279190, + "left": { + "__constructor__": "Leaf", + "__data__": { + "label": 1, + "age": 0.0 + } + }, + "right": { + "__constructor__":"Leaf", + "__data__": { + "label":2, + "age":0.0 + } + } } }, "right": { - "__constructor__":"Leaf", + "__constructor__": "Node", "__data__": { - "label":3, - "age":0.0 + "label": 8, + "age": 0.153814, + "left": { + "__constructor__": "Leaf", + "__data__": { + "label": 3, + "age": 0.0 + } + }, + "right": { + "__constructor__": "Leaf", + "__data__": { + "label": 4, + "age": 0.0 + } + } } } } @@ -28,35 +56,38 @@ "right": { "__constructor__": "Node", "__data__": { - "label": 5, - "age": 0.428200, + "label": 10, + "age": 1.079144, "left": { "__constructor__": "Leaf", "__data__": { - "label": 2, + "label": 5, "age": 0.0 } }, "right": { "__constructor__": "Leaf", "__data__": { - "label": 1, + "label": 6, "age": 0.0 } - } + } } - } + } } }, - "ntips":4, - "nhosts":3, - "interactions":[2,0,2, - 2,0,0, - 2,2,0, - 0,2,0], - "host_distances":[0.0000000, 0.2563668, 3.15567, - 0.2563668, 0.0000000, 3.15567, - 3.1556704, 3.1556704, 0.00000], - "dMean":2.189236, - "tune":0.9 + "ntips":6, + "nhosts":5, + "interactions":[2,2,0,0,0, + 2,2,0,0,0, + 0,0,2,2,0, + 0,0,2,2,0, + 0,0,0,0,2, + 0,0,0,0,2], + "host_distances":[0.0,0.8630075756,2.6699063134,2.6699063134,2.6699063134, + 0.8630075756,0.0,2.6699063134,2.6699063134,2.6699063134, + 2.6699063134,2.6699063134,0.0,1.2256551506,1.9598979474, + 2.6699063134,2.6699063134,1.2256551506,0.0,1.9598979474, + 2.6699063134,2.6699063134,1.9598979474,1.9598979474,0.0], + "dMean":4.405579 } diff --git a/inst/extdata/hostrep3states.tppl b/inst/extdata/hostrep3states.tppl index 167ff60..fde6526 100644 --- a/inst/extdata/hostrep3states.tppl +++ b/inst/extdata/hostrep3states.tppl @@ -1,93 +1,29 @@ -/* - * Host repertoire model - * - * This file implements the host repertoire model described by Braga et al - * 2020 (https://doi.org/10.1093/sysbio/syaa019). - * - * This version explicitly repays weight associated with proposal - * - * Compile - * tpplc host_repertoire.tppl -m smc-apf - * - * Run - * ./out treeppl/models/data/hostrep.json 10 1 - */ - -/*---------------------------- TYPES --------------------------------*/ - -// TreeLabeled is like the built in Tree type, but with leaf and node labels -type TreeLabeled = - | Leaf{age: Real, label: Int} - | Node{age: Real, left: TreeLabeled, right: TreeLabeled, label: Int} - -/*-------------------- Model-specific types -------------------------*/ - -type ModelParams = - ModelParams{qMatrix: Matrix[Real], dMatrix: Matrix[Real], dMean: Real, beta: Real} - -// Tree decorated with postorder messages from belief propagation. -// Postorder = backwards in time -type MsgTree = - | MsgLeaf{age: Real, label: Int, out_msg: Matrix[Real][]} - | MsgNode{age: Real, label: Int, left: MsgTree, right: MsgTree, - left_in_msg: Matrix[Real][], right_in_msg: Matrix[Real][], out_msg: Matrix[Real][]} - -// Tree decorated with final probabilities from belief propagation, -// tuned so that they are useful for proposals. -type ProbsTree = - | ProbsLeaf{age: Real, label: Int, probs: Matrix[Real][]} - | ProbsNode{age: Real, label: Int, probs: Matrix[Real][], - left: ProbsTree, right: ProbsTree} - -// Event type used to store information about one host-repertoire change -// We keep the from_state here just in case we want to use it for debugging -type Event = Event{age: Real, host: Int, from_state: Int, to_state: Int} - -// Type used to hold a proposed history of state changes for a branch -type ProposedHistory = ProposedHistory{log_debt: Real, events: Event[]} - -// History point type used to store repertoire snapshots at the repertoire -// start ages, which is the time of the event that led to that combination -type HistoryPoint = HistoryPoint{age: Real, repertoire: Int[]} - -// HistoryScore type used to store a vector of history points and a log -// score associated with this history. -type HistoryScore = HistoryScore{log_score: Real, history: HistoryPoint[]} - -// Tree decorated with ancestral host repertoires and branch repertoire histories -type HistoryTree = - | HistoryLeaf{age: Real, label: Int, repertoire: Int[], history: HistoryPoint[], log_rep_debt: Real} - | HistoryNode{age: Real, label: Int, repertoire: Int[], history: HistoryPoint[], log_rep_debt: Real, - left: HistoryTree, right: HistoryTree} - -// Type used to hold the character histories and parameter values to be outputed -type ReturnType = ReturnType{tree: HistoryTree, lambda: Real[], mu: Real, beta: Real} - -/* - * Model - * - * @param lambda: vector of transition rates - * lambda[1]:0->1, lambda[2]:1->0, lambda[3]:1->2, lambda[4]:2->1 - * Transition rates are given as proportions of the total - * off-diagonal rate, that is, the sum of lambdas is 1.0 - * - * @param mu: rescale all rates in lambda with mu. Referred to as the maximum - * rate (or rate, for short) of host repertoire evolution, since - * 0≤mu*lambda_i≤mu for all i (all lambdas <= 1.0). - * - * @param beta: phylogenetic distance parameter, determining strength of the - * host distance effect on host repertoire evolution. - */ - -model function mymodel(symbiont_tree: TreeLabeled, ntips: Int, nhosts: Int, interactions: Int[], - host_distances: Real[], dMean: Real, tune: Real) => ReturnType { - - // Set priors for model parameters - assume lambda ~ Dirichlet([1.0,1.0,1.0,1.0]); - assume mu ~ Exponential(10.0); - assume beta ~ Exponential(1.0); - - // Set transition rate matrix for three-state independence model +import "host-rep-lib/lib.tppl" +import "host-rep-lib/container-types.tppl" +import "host-rep-lib/helpers.tppl" +import "host-rep-lib/belief-propagation.tppl" +import "host-rep-lib/dist-helpers.tppl" +import "host-rep-lib/full-model.tppl" +import "host-rep-lib/rb-drift-kernels.tppl" +import "host-rep-lib/independence-model.tppl" + +type ReturnType = ReturnType{ + lambda: Real[], mu: Real, beta: Real, tree: HistoryTree +} + + +model function rejectAccept( + symbiont_tree: TreeLabeled, + ntips: Int, + nhosts: Int, + interactions: Int[], + host_distances: Real[], + dMean: Real +) => ReturnType { + assume lambda ~ Dirichlet([1., 1., 1., 1.]) drift rbLambdaMove(lambda); + assume mu ~ Exponential(10.) drift rbMuMove(mu); + assume beta ~ Exponential(1.) drift rbBetaMove(beta); + let r = mtxCreate(3,3, [0.-lambda[1], lambda[1], 0.0, lambda[2], 0.-(lambda[2]+lambda[3]), lambda[3], @@ -95,535 +31,384 @@ model function mymodel(symbiont_tree: TreeLabeled, ntips: Int, nhosts: Int, inte ); let qMatrix = mtxSclrMul(mu, r); - // Calculate stationary probabilities for the rate matrix q - let stationary_probs = stationaryProbs(lambda); - - let dMatrix = mtxCreate(nhosts, nhosts, host_distances); - - // Package model parameters into an object for convenient calling - let mp = ModelParams{qMatrix = qMatrix, dMatrix = dMatrix, dMean = dMean, beta = beta}; - - let interactions_reals = sint2real(interactions); - let iMatrix = mtxCreate(ntips, nhosts, interactions_reals); - - // Derive params for ancestral repertoire proposals from independence model - let probs_tree = get_proposal_params(symbiont_tree, iMatrix, qMatrix, stationary_probs, tune); - - // Propose a repertoire for the root of the symbiont tree - // based on the state probabilities from the belief propagation - let probRecordSequence = sapply(probs_tree.probs, createProbRecord); - let root_rep = sapply(probRecordSequence, categorical); - - let log_root_rep_debt = seqSumReal(zipWith(categoricalLogScore, root_rep, probRecordSequence)); - // Note: categorical works here because root_rep id 0-based - - let valid_root = any(is2, root_rep); - - if !valid_root { - weight 0.0; - resample; - } - - let log_score_root = - ( log( (3.0 ^ Real(nhosts)) - (2.0 ^ Real(nhosts)) ) ); - - - // Simulate repertoire history on the symbiont tree (left and right daughters) - let left = simulate(probs_tree.left, HistoryPoint{age = probs_tree.age, repertoire = root_rep}, mp, iMatrix); - let right = simulate(probs_tree.right, HistoryPoint{age = probs_tree.age, repertoire = root_rep}, mp, iMatrix); - - // Root node doesn't have any history (no subroot branch) - let historyTree = HistoryNode{age = probs_tree.age, label = probs_tree.label, - repertoire = root_rep, history = [], log_rep_debt = log_root_rep_debt-log_score_root, - left = left, right = right}; - - // Factor in the net debt of the proposed ancestral repertoires - // at nodes and leaves in the historyTree - logWeight( -get_rep_debt(historyTree) ); - - // Return symbiont tree with simulated character history and parameter values - return ReturnType{tree = historyTree, lambda = lambda, mu = mu, beta = beta}; -} - - -/*---------------------------- FUNCTIONS --------------------------------*/ - - -/*---------------- Proposal distribution parameters ---------------------*/ - -/* - * get_proposal_params - * - * This functions uses belief propagation under the independence - * model, and an anneling parameter 'tune', to obtain parameters - * for the proposals of ancestral repertoires. - * - * Parameters: - * @param symbiont_tree: symbiont tree - * @param iMatrix: interaction matrix - * @param qMatrix: rate matrix for the independence model - * @param stationary_probs: stationary probabilities for the independence model - * @param tune: parameter in (0,1) determining how much - * we should trust the independence model - * - * Return value: - * A ProbsTree containing the final repertoire state proposal - * probabilities for all nodes in the symbiont tree. - */ -function get_proposal_params(symbiont_tree: TreeLabeled, iMatrix: Matrix[Real], qMatrix: Matrix[Real], - stationary_probs: Matrix[Real], tune: Real) => ProbsTree { - - let msgTree = postorder_msgs(symbiont_tree, iMatrix, qMatrix); - let n = length(getMsgTreeMsg(msgTree)); - let pis = rep(n, stationary_probs); - return final_probs(msgTree, pis, qMatrix, tune); -} - -// Compute postorder messages on the observed tree -function postorder_msgs(tree: TreeLabeled, iMatrix: Matrix[Real], qMatrix: Matrix[Real]) => MsgTree { + let nestedInteractions = nestSeq(interactions, ntips, nhosts); + let postorderTree = postorderTraverse(symbiont_tree, qMatrix, nestedInteractions, nhosts); + + // Sample the root. We assume in both the independence and full model + // that we have a flat prior on the root + let rootPrior = mtxCreate(nhosts, 3, ones(3 * nhosts)); + let rootSamplingProb = mtxElemMul(postorderTree.outMsg, rootPrior); + let initRootRep = suggestRepAligned(rootSamplingProb, 1, nhosts); + let rootRep = suggestRepRS(rootSamplingProb, nhosts, initRootRep, 0); + + // Calculate the debt and excess + let rootLogDebt = getRepertoireDebt(rootRep, rootSamplingProb, nhosts); + let rootLogExcess = -log((3.^(Real(nhosts))) - (2.^Real(nhosts))); + + // This is an aligned point so we can weight by the importance ratio + logWeight rootLogExcess - rootLogDebt; + + // Compute messages to pass to pass to the children of the root + let newMsg = mtxCreate(nhosts, 3, observationMessage(rootRep, 1, nhosts)); + let leftMsg = mtxMul(newMsg, postorderTree.leftKernel); + let rightMsg = mtxMul(newMsg, postorderTree.rightKernel); + + // Construct an object containing the rate matrix in a suitable format for sampling + // from the embedded Markov chain + + let embeddedQMatrix = rateMatrixToEmbeddedMarkovChain(qMatrix); + let modelParams = ModelParams { + beta = beta, + hostMetric = mtxCreate(nhosts, nhosts, host_distances), + embeddedQMatrix = embeddedQMatrix, + meanDist = dMean + }; + let rootAge = postorderTree.age; + let leftRepertoireTree = sampleTreeHistory( + postorderTree.left, nhosts, leftMsg, rootRep, rootAge, modelParams, postorderTree.leftKernel + ); + let rightRepertoireTree = sampleTreeHistory( + postorderTree.right, nhosts, rightMsg, rootRep, rootAge, modelParams, postorderTree.rightKernel + ); - if tree is Leaf { - return MsgLeaf{age = 0.0, label = tree.label, out_msg = observationMessage(mtxGetRow(tree.label, iMatrix))}; + // Construct the root node of the repertoire tree + let historyTree = HistoryNode { + age = symbiont_tree.age, label = symbiont_tree.label, + left = leftRepertoireTree, right = rightRepertoireTree, + repertoire = rootRep, history = [] + }; + return ReturnType { + lambda = lambda, + mu = mu, + beta = beta, + tree = historyTree + }; +} + +function suggestRepAligned(msg: Matrix[Real], i: Int, max: Int) => Int[] { + if i <= max { + let param = mtx3ToSeq(msg, i); + assume x ~ Categorical(param) drift categoricalMove(x, param); + return cons(x, suggestRepAligned(msg, i + 1, max)); + } else { + return []; } - - let left = postorder_msgs(tree.left ,iMatrix, qMatrix); - let right = postorder_msgs(tree.right,iMatrix, qMatrix); - - let tMatrixLeft = mtxTrans(mtxExp(mtxSclrMul(tree.age-left.age, qMatrix))); - let tMatrixRight = mtxTrans(mtxExp(mtxSclrMul(tree.age-right.age, qMatrix))); - - let left_in_msg = sapply1(left.out_msg, mtxMul, tMatrixLeft); - let right_in_msg = sapply1(right.out_msg, mtxMul, tMatrixRight); - - let out_msg = messageNormalize(messageElemMul(left_in_msg, right_in_msg)); - - return MsgNode{age= tree.age, label= tree.label, left= left, right= right, - left_in_msg = left_in_msg, right_in_msg = right_in_msg, out_msg = out_msg}; - } -// Compute leaf message from observed interactions -function observationMessage(obs_repertoire: Matrix[Real]) => Matrix[Real][] { - return tapply(obs_repertoire, makeStateMessage); -} - -// Takes a single interaction and creates the message -// Interactions are of type Real because of limitations in boolean comparisons -function makeStateMessage(interaction: Real) => Matrix[Real] { - // NOTE: we do not have a switch statement, perhaps we need in the future? - - if (interaction == 0.0) { - return rvecCreate(3, [1., 0., 0.]); +function suggestRepRS(msg: Matrix[Real], max: Int, initialRep: Int[], depth: Int) => Int[] { + let _REP_REJECTION_DEPTH = 10; + if any(is2, initialRep) { + return initialRep; } else { - if (interaction == 1.0) { - return rvecCreate(3, [0., 1., 0.]); - } else { - if (interaction == 2.0) { - return rvecCreate(3, [0., 0., 1.]); - } else { - return rvecCreate(3, [1., 1., 1.]); - } - } - } -} - -// Compute final probabilities from belief propagation on the observed symbiont tree -function final_probs(tree: MsgTree, parent_msg: Matrix[Real][], qMatrix: Matrix[Real], tune: Real) => ProbsTree { - - let probs = messageNormalize( - messageElemPow(messageElemMul(tree.out_msg, parent_msg), tune) - ); - - if tree is MsgLeaf { - return ProbsLeaf{age= 0.0, label= tree.label, probs = probs}; + if depth < _REP_REJECTION_DEPTH { + let newRep = suggestRepUnaligned(msg, 1, max); + return suggestRepRS(msg, max, newRep, depth + 1); + } else { + // Set weight to zero and return dummy value + weight 0.0; + return initialRep; + } } - - let left_branch = tree.age - getMsgTreeAge(tree.left); - let right_branch = tree.age - getMsgTreeAge(tree.right); - - let tMatrixLeft = mtxExp(mtxSclrMul(left_branch, qMatrix)); - let tMatrixRight = mtxExp(mtxSclrMul(right_branch, qMatrix)); - - let left_parent_msg = sapply1(messageElemMul(parent_msg,tree.left_in_msg), mtxMul, tMatrixLeft); - let right_parent_msg = sapply1(messageElemMul(parent_msg,tree.right_in_msg), mtxMul, tMatrixRight); - - let left = final_probs(tree.left, left_parent_msg, qMatrix, tune); - let right = final_probs(tree.right, right_parent_msg, qMatrix, tune); - - return ProbsNode{age = tree.age, label = tree.label, left = left, right = right, probs = probs}; } - -/*---------------- Model functions -------------------------*/ - -// Simulate an evolutionary history for the host repertoires, from root to leaves -function simulate (tree: ProbsTree, start: HistoryPoint, mp: ModelParams, iMatrix: Matrix[Real]) => HistoryTree { - - // Propose a repertoire. The propose mechanism means that the simulation - // should be "penalized" for the probability associated with the draw. - let probs = getProbs(tree); // TODO: is this needed? - let probRecordSequence = sapply(tree.probs, createProbRecord); - let repertoire = sapply(probRecordSequence, categorical); // Note: assume is within function categorical - - let log_rep_debt = seqSumReal(zipWith(categoricalLogScore, repertoire, probRecordSequence)); - // Note: categorical works here because repertoire id 0-based - - let valid_rep = any(is2, repertoire); - if !valid_rep { - weight 0.0; - resample; +function suggestRepUnaligned(msg: Matrix[Real], i: Int, max: Int) => Int[] { + if i <= max { + let param = mtx3ToSeq(msg, i); + assume x ~ Categorical(param); + return paste0([[x], suggestRepUnaligned(msg, i + 1, max)]); + } else { + return []; } - - let stop = HistoryPoint{age = getProbsTreeAge(tree), repertoire = repertoire}; - let history = simulate_history(start, stop, mp); - - if tree is ProbsLeaf { - - let obs_msg = observationMessage(mtxGetRow(tree.label, iMatrix)); - let obsRecordSequence = sapply(obs_msg, createProbRecord); - let log_score = seqSumReal(zipWith(categoricalLogScore, repertoire, obsRecordSequence)); - // Note: categorical works here because repertoire id 0-based - - return HistoryLeaf{age = tree.age, label = tree.label, repertoire = repertoire, - history = history, log_rep_debt = log_rep_debt - log_score}; - } - - let left = simulate(tree.left, stop, mp, iMatrix); - let right = simulate(tree.right, stop, mp, iMatrix); - - return HistoryNode{age = tree.age, label = tree.label, repertoire = repertoire, - history = history, log_rep_debt = log_rep_debt, - left = left, right = right}; - -} - - -// Simulate history conditional on initial repertoire, start time, and end -// time. We first propose events from the independence model and then -// condition the simulation on those events. -function simulate_history (from_rep: HistoryPoint, to_rep: HistoryPoint, mp: ModelParams) => HistoryPoint[] { - - let proposed_unordered_events = propose_events(1, from_rep, to_rep, mp.qMatrix); - // order events by decreasing age - let eventSeq = qSort(subAge, proposed_unordered_events.events); - // Simulate repertoire evolution from full model, one event at a time - let history_score = simulate_by_event(from_rep.repertoire, eventSeq, 1, from_rep.age, - to_rep.age, mp, proposed_unordered_events.log_debt); - - // Now we have both debt and score at an alignment point - logWeight(history_score.log_score - proposed_unordered_events.log_debt); - - return history_score.history; } -// Propose events from independence model -function propose_events (host_index: Int, from_rep: HistoryPoint, to_rep: HistoryPoint, qMatrix: Matrix[Real]) => ProposedHistory { - - // End case, have already done all hosts ins the repertoire - if (host_index > length(from_rep.repertoire)) { - return ProposedHistory{log_debt = 0.0, events = []}; - } - let propHist1 = propose_events_for_host(host_index, from_rep.age, to_rep.age, - from_rep.repertoire[host_index], to_rep.repertoire[host_index], qMatrix); - - let propHist2 = propose_events(host_index + 1, from_rep, to_rep, qMatrix); - - return ProposedHistory{log_debt = propHist1.log_debt + propHist2.log_debt, - events = concat(propHist1.events, propHist2.events)}; - - } - -// Propose events for one host -function propose_events_for_host (host_index: Int, from_age: Real, end_age: Real, - from_state: Int, end_state: Int, qMatrix: Matrix[Real]) => ProposedHistory { +function sampleTreeHistory( + tree: MsgTree, + nhosts: Int, + preorderMsg: Matrix[Real], + parentRep: Int[], + parentAge: Real, + modelParams: ModelParams, + branchKernel: Matrix[Real] +) => HistoryTree { + if tree is MsgLeaf { + // We are at a leaf, so we don't need to sample the interactions + let rep = tree.interactions; + // Sample the incident branch + let branchSample = sampleBranch( + parentRep, + rep, + parentAge, + tree.age, + nhosts, + modelParams, + branchKernel, + 0 + ); + + // We are aligned so we can weight the program here (shouldn't matter for MCMC) + if branchSample.success { + logWeight branchSample.logExcess - branchSample.logDebt; + } else { + // We failed to sample a correct branch, set program weight to zero + weight 0.0; + } - let rate = -(mtxGet(from_state + 1, from_state + 1, qMatrix)); + return HistoryLeaf { + age = tree.age, + label = tree.label, + repertoire = rep, + history = branchSample.history + }; + } else { + let samplingProb = mtxElemMul(tree.outMsg, preorderMsg); + let initRep = suggestRepAligned(samplingProb, 1, nhosts); + let rep = suggestRepRS(samplingProb, nhosts, initRep, 0); + let nodeLogDebt = getRepertoireDebt(rep, samplingProb, nhosts); + + // Sample the incident branch + let branchSample = sampleBranch( + parentRep, + rep, + parentAge, + tree.age, + nhosts, + modelParams, + branchKernel, + 0 + ); + + // We are aligned so we can weight the program here (shouldn't matter for MCMC) + if branchSample.success { + logWeight branchSample.logExcess - branchSample.logDebt - nodeLogDebt; + } else { + // We failed to sample a correct branch, set program weight to zero + weight 0.0; + } - // Kill the particle if we are trying to subdivide a time segment that - // is too short. This will come with a big penalty in either case but - // continuing to run the code will result in numerical problems like - // sampling waiting times that are -0. and getting debts that are inf, - // both of which are difficult to handle. - if (rate * (from_age - end_age) < 1E-15 && from_state != end_state) { - weight 0.0; - resample; + // Since we sampled a repertoire at the node we should propagate this information to the child nodes + let newMsg = mtxCreate(nhosts, 3, observationMessage(rep, 1, nhosts)); + let leftMsg = mtxMul(newMsg, tree.leftKernel); + let rightMsg = mtxMul(newMsg, tree.rightKernel); + + // Sample the two subtrees + let left = sampleTreeHistory( + tree.left, nhosts, leftMsg, rep, tree.age, modelParams, tree.leftKernel + ); + let right = sampleTreeHistory( + tree.right, nhosts, rightMsg, rep, tree.age, modelParams, tree.rightKernel + ); + + return HistoryNode { + age = tree.age, + label = tree.label, + repertoire = rep, + history = branchSample.history, + left = left, + right = right + }; } - - let t = getWaitingTime(from_state, end_state, rate, from_age, end_age); - let new_age = from_age - t; - - // Calculate debt. Note the special case for the last time segment - // with no events. We use the average weight of all particles with - // this outcome, which should be advantageous for inference - // efficiency. It also saves us from storing the actual draw. - if (new_age < end_age) { - let log_wait_debt = poissonLogScore(0, PoissonParam{rate = rate*(from_age - end_age)}); - return ProposedHistory{log_debt = log_wait_debt, events = []}; - } - - let log_wait_debt = getLogWaitDebt(from_state, end_state, rate, from_age, end_age, t); - let to_states = getToStates(from_state); - let state_probs = seqNormalize([mtxGet(from_state + 1, to_states[1] + 1, qMatrix), - mtxGet(from_state + 1, to_states[2] + 1, qMatrix)]); - - assume new_state_pos ~ Categorical(state_probs); - let new_state = to_states[new_state_pos + 1]; - // Note: Categorical is 0-based, so we need to add 1 do get the correct position - let log_event_debt = categoricalLogScore(new_state_pos, CategoricalParam{probs = state_probs}); - // Note: Use position instead of value - - let event = Event{age = new_age, host = host_index, from_state = from_state, to_state = new_state}; - let propHist = propose_events_for_host(host_index, new_age, end_age, new_state, end_state, qMatrix); - - return ProposedHistory{log_debt = log_wait_debt+log_event_debt+propHist.log_debt, events = concat([event], propHist.events)}; - } -function getLogWaitDebt(from_state: Int, end_state: Int, rate: Real, from_age: Real, end_age: Real, t: Real) => Real { - if (from_state != end_state) { - return log_pdf_exponential_max_t(t, rate, from_age - end_age); - } else { - return exponentialLogScore(t, ExponentialParam{rate = rate}); - } -} - -function getWaitingTime(from_state: Int, end_state: Int, rate: Real, from_age: Real, end_age: Real) => Real { - if (from_state != end_state) { - return sample_exponential_max_t(rate, from_age - end_age); - } else { - assume t ~ Exponential(rate); - return t; - } -} - -function getToStates(state: Int) => Int[] { - if (Real(state) == 0.0) { - return [1,2]; - } else { - if (Real(state) == 1.0) { - return [0,2]; - } else { - if (Real(state) == 2.0) { - return [0,1]; - } else { - return error("Invalid state"); +function sampleBranch( + startRep: Int[], + finalRep: Int[], + startAge: Real, + finalAge: Real, + nhosts: Int, + modelParams: ModelParams, + branchKernel: Matrix[Real], + rejectionDepth: Int +) => CorrectedBranchSample { + let _MAX_REJECTION_DEPTH_BRANCH = 100; + if rejectionDepth <= _MAX_REJECTION_DEPTH_BRANCH { + // Sample the events per host + let unorderedBranch = sampleUnorderedBranch( + startRep, finalRep, startAge, finalAge, 1, nhosts, modelParams.embeddedQMatrix, 1 + ); + if unorderedBranch.success { + + // All host histories were sampled correctly, + // compile the events for all hosts and sort them + let allHostEvents = paste0(unorderedBranch.history); + let orderedEvents = qSort(compAge, allHostEvents); + let nEvents = length(orderedEvents); + if allTimesValidBranch(startRep, orderedEvents, 1, nEvents, nhosts) { + // The branch is correct along the full history, + // accept and calculate the true weight of the sample + + // Calculate the debt -- this is the density of the endpoint conditioned + // (parallel) chains at the current sample. + let logDebt = independenceLikelihoodEndCond( + startRep, finalRep, startAge, finalAge, unorderedBranch.history, modelParams, branchKernel + ); + // Calculate the likelihood of the path under the full model + let logExcess = fullModelWeight( + 1, startRep, finalRep, startAge, finalAge, orderedEvents, nEvents, nhosts, modelParams + ); + // Return the branch sample with both the debt and the excess + return CorrectedBranchSample { + history = orderedEvents, + logDebt = logDebt, + logExcess = logExcess, + success = true + }; } - } - } -} - -// Sample from truncated exponential distribution with rate 'rate' -// but with support only on (0, max_t). -function sample_exponential_max_t(rate: Real, max_t: Real) => Real { - let u_min = exp (-(rate * max_t)); - assume u ~ Uniform (u_min, 1.0); - return ((-(log(u))) / rate); -} - -// Compute log PDF for a value from the truncated exponential -// The truncation multiplies the pdf with 1/(1-u_min). -function log_pdf_exponential_max_t(value : Real, rate: Real, max_t: Real) => Real { - let u_min = exp(-(rate * max_t)); - return ( (-(rate * value * log(rate))) - log(1.0-u_min)); -} - -// Simulate repertoire evolution from full model, one event -// at a time. We return the sequence of repertoires. We -// accumulate scores here rather than introducing observe -// statements, as those observes would not be aligned. -function simulate_by_event (repertoire: Int[], eventSeq: Event[], event_index: Int, - from_age: Real, end_age: Real, mp: ModelParams, log_debt: Real) => HistoryScore { - - // End case, deal with last time segment - if event_index > length(eventSeq) { - let change_rate = total_rate(repertoire, mp); - return HistoryScore{log_score = poissonLogScore(0, - PoissonParam{rate = change_rate*(from_age-end_age)}), history = []}; - } - - // Typical case - let the_event = eventSeq[event_index]; - let rate = getRate(repertoire, the_event.host, the_event.to_state, mp); - let change_rate = total_rate(repertoire, mp); - - // Note that the first statement will capture the cases where the proposed - // history is impossible because the repertoire we are supposed to go to is - // empty (the rate is zero). - if (rate == 0.0) { - weight 0.0; - resample; + } + // Either one of the hosts failed to be sampled correctly + // or the history was invalid somewhere along the branch + return sampleBranch( + startRep, + finalRep, + startAge, + finalAge, + nhosts, + modelParams, + branchKernel, + rejectionDepth + 1 + ); + } else { + // We ran out of rejection depth for the branch + return CorrectedBranchSample { + history = [], + logDebt = -log(0.0), + logExcess = log(0.0), + success = false + }; } - let exp_log_prob = exponentialLogScore(from_age - the_event.age, ExponentialParam{rate=change_rate}); - let logScore = exp_log_prob + log(rate/change_rate); - - // Update repertoire with the change in the_event - let new_repertoire = sapplyi1(repertoire, getNewState, the_event); - let hp = HistoryPoint{age = the_event.age, repertoire = new_repertoire}; - // Simulate next event - let simHist = simulate_by_event(new_repertoire, eventSeq, event_index + 1, the_event.age, end_age, mp, log_debt); - - return HistoryScore{log_score = simHist.log_score + logScore, history = concat(simHist.history, [hp])}; } -// Update host states -function getNewState(i: Int, state: Int, event: Event) => Int { - if (i == event.host) { - return event.to_state; - } else { - return state; - } +function compAge(left: Event, right: Event) => Int { + if (isNaN(right.eventTime)) { + return -1; + } + if (isNaN(left.eventTime)) { + return 1; + } + if (right.eventTime >= left.eventTime) { + return 1; + } else { + return -1; + } } -// Compute rate for a proposed event -function getRate(repertoire: Int[], host_index: Int, to_state: Int, mp: ModelParams) => Real { - - let from_state = repertoire[host_index]; - let base_rate = mtxGet(from_state + 1, to_state + 1, mp.qMatrix); - - // Losses are easy, no cross-repertoire modification used here - if (from_state > to_state) { - - let n2s = fold(count2s, 0, repertoire); - if (from_state == 2 && n2s == 1) { - return 0.0; - } else { - return base_rate; - } - } else { - - // We have a gain rate, so we need to factor in beta-dependent cross-repertoire effect - if (from_state == 0) { - let current_hosts = whichTrue(sapply(repertoire, is1or2)); - let dist = mtxMean(mtxRowCols(mp.dMatrix, host_index, current_hosts)); - return base_rate * (exp(-(mp.beta*(dist/mp.dMean)))); - +function sampleUnorderedBranch( + startRep: Int[], + finalRep: Int[], + startAge: Real, + finalAge: Real, + hostIndex: Int, + nhosts: Int, + embeddedQMatrix: EmbeddedMarkovChainMatrix, + rejectionDepth: Int +) => BranchSample { + let _MAX_REJECTION_DEPTH_HOST = 100; + // Note that startAge > finalAge since the tree is moving forwards in time + if hostIndex <= nhosts { + let hostHistory = sampleHostHistory( + startRep[hostIndex], finalRep[hostIndex], startAge, finalAge, hostIndex, embeddedQMatrix, 1 + ); + if hostHistory.success { + let otherHostHistories = sampleUnorderedBranch( + startRep, finalRep, startAge, finalAge, hostIndex + 1, nhosts, embeddedQMatrix, 0 + ); + return BranchSample { + history = cons(hostHistory.history, otherHostHistories.history), + success = otherHostHistories.success + }; } else { - let current_hosts = whichTrue(sapply(repertoire, is2)); - let dist = mtxMean(mtxRowCols(mp.dMatrix, host_index, current_hosts)); - return base_rate * (exp(-(mp.beta*(dist/mp.dMean)))); + if rejectionDepth <= _MAX_REJECTION_DEPTH_HOST { + return sampleUnorderedBranch( + startRep, finalRep, startAge, finalAge, hostIndex, nhosts, embeddedQMatrix, rejectionDepth + 1 + ); + } else { + return BranchSample { + history = [], + success = false + }; + } } + } else { + return BranchSample { + history = [], + success = true + }; } } -// Compute total rate of change from a repertoire -function total_rate(repertoire: Int[], mp: ModelParams) => Real { - - let n1s = fold(count1s, 0, repertoire); - let totalLoss1 = Real(n1s) * mtxGet(2, 1, mp.qMatrix); - let n2s = fold(count2s, 0, repertoire); - let totalLoss2 = getLoss2(Real(n2s), mp); - let gainsSeq = sapplyi2(repertoire, gainsIf0or1, repertoire, mp); - let totalGains = seqSumReal(gainsSeq); - - return totalLoss1 + totalLoss2 + totalGains; -} +function sampleHostHistory( + startState: Int, + finalState: Int, + startAge: Real, + finalAge: Real, + host: Int, + embeddedQMatrix: EmbeddedMarkovChainMatrix, + stepIndex: Int +) => HostBranchSample { + let totalRate = embeddedQMatrix.totalRates[startState + 1]; + if startState != finalState && stepIndex == 1 { + // If there is a mutation on the interval, sample the first event from a truncated exponential + + let t = sampleTruncatedExponential(totalRate, startAge - finalAge); + let eventTime = startAge - t; + + // Sample the next event + let nextState = sampleNextEvent(startState, embeddedQMatrix); + let param = embeddedQMatrix.transitionProbs[startState + 1]; + + let restOfHistory = sampleHostHistory(nextState, finalState, eventTime, finalAge, host, embeddedQMatrix, stepIndex + 1); + return HostBranchSample { + history = cons( + Event { eventTime = eventTime, fromState = startState, toState = nextState, host = host }, + restOfHistory.history + ), + success = restOfHistory.success + }; -function getLoss2(n2s: Real, mp: ModelParams) => Real { - if n2s <= 1.0 { - let totalLoss2 = 0.0; - return totalLoss2; - } else { - let totalLoss2 = n2s * mtxGet(3, 2, mp.qMatrix); - return totalLoss2; - } -} - -function gainsIf0or1(i: Int, from_state: Int, repertoire: Int[], mp: ModelParams) => Real { - - if (from_state == 0 || from_state == 1) { - return getRate(repertoire, i, from_state + 1, mp); - } else { - return 0.0; - } -} - -// Accumulate the total log debt of proposing the -// ancestral repertoires in the tree. -function get_rep_debt(tree: HistoryTree) => Real { - - if tree is HistoryLeaf { - return tree.log_rep_debt; - } else{ - return get_rep_debt(tree.left) + get_rep_debt(tree.right); - } -} - - -/*---------------- Help functions --------------------------*/ - - -function createProbRecord(p: Matrix[Real]) => CategoricalParam { - // This version works on tests, but not here - // let ncol = dim(p)[2]; - // let ps = rep(ncol, p); - // let p_seq = zipWith(getRowVecElem, ps, 1 to ncol); - - // Hard-coded version - let p1 = getRowVecElem(p, 1); - let p2 = getRowVecElem(p, 2); - let p3 = getRowVecElem(p, 3); - let p_seq = [p1,p2,p3]; - return CategoricalParam {probs = p_seq}; -} - -function getRowVecElem(t: Matrix[Real], i: Int) => Real { - return mtxGet(1, i, t); -} - -// Calculate stationary probabilities from lambda values -function stationaryProbs(lambda: Real[]) => Matrix[Real] { - let pi_1 = 1.0 / (1.0 + (lambda[2]/lambda[1]) + (lambda[3]/lambda[4])); - let pi_0 = pi_1 * (lambda[2]/lambda[1]); - let pi_2 = 1.0 - pi_0 - pi_1; - return rvecCreate(3, [pi_0, pi_1, pi_2]); -} - -function getMsgTreeAge(tree: MsgTree) => Real { - return tree.age; -} - -function getMsgTreeMsg(tree: MsgTree) => Matrix[Real][] { - return tree.out_msg; -} - -function getProbsTreeAge(tree: ProbsTree) => Real { - return tree.age; -} - -function getProbs(tree: ProbsTree) => Matrix[Real][]{ - return tree.probs; -} - -function subAge(left: Event, right: Event) => Int { - let diff = right.age - left.age; - if (diff >= 0.0){ - return 1; } else { - return 0 - 1; // type error if I just write -1 - } -} - -function count2s(count: Int, host: Int) => Int { - if (host == 2) { - return count + 1; - } else { - return count; - } -} - -function count1s(count: Int, host: Int) => Int { - if (host == 1) { - return count + 1; - } else { - return count; - } -} + // If the final state does not equal the start state, then we don't want to + // force there to be events in the remaining interval + assume t ~ Exponential(totalRate); + if startAge - t < finalAge { + // We overshoot so we are finished, and just save the debt + if startState == finalState { + return HostBranchSample { + history = [], + success = true + }; + } else { + return HostBranchSample { + history = [], + success = false + }; + } + } else { -function is2(x: Int) => Bool { - return x == 2; + // Sample the next transition + let nextState = sampleNextEvent(startState, embeddedQMatrix); + let param = embeddedQMatrix.transitionProbs[startState + 1]; + // assume nextState ~ Categorical(param); + + // Record the event time + let eventTime = startAge - t; + let restOfHistory = sampleHostHistory(nextState, finalState, eventTime, finalAge, host, embeddedQMatrix, stepIndex + 1); + return HostBranchSample { + history = cons( + Event { eventTime = eventTime, fromState = startState, toState = nextState, host = host }, + restOfHistory.history + ), + success = restOfHistory.success + }; + } + } } -function is1or2(x: Int) => Bool { - return x == 1 || x == 2; +function sampleTruncatedExponential(rate: Real, maxT: Real) => Real { + let uMin = exp(-rate * maxT); + // Assuming directly from the truncated distribution gave numerical errors + assume u_ ~ Uniform(0.0, 1.0); + let u = uMin + u_ * (1. - uMin); + let expSample = -log(u) / rate; + return expSample; } diff --git a/inst/extdata/hostrep3states_extant_interactions.csv b/inst/extdata/hostrep3states_extant_interactions.csv deleted file mode 100644 index 9e6d14c..0000000 --- a/inst/extdata/hostrep3states_extant_interactions.csv +++ /dev/null @@ -1,5 +0,0 @@ -"","H1","H2","H3" -"S1",2,0,2 -"S2",2,0,0 -"S3",2,2,0 -"S4",0,2,0 diff --git a/inst/extdata/hostrep3states_host_tree.tre b/inst/extdata/hostrep3states_host_tree.tre deleted file mode 100644 index ec37942..0000000 --- a/inst/extdata/hostrep3states_host_tree.tre +++ /dev/null @@ -1,2 +0,0 @@ -((H1:0.1281834009,H2:0.1281834009):1.4496518,H3:1.577835201); - diff --git a/inst/extdata/hostrep3states_treeRev.tre b/inst/extdata/hostrep3states_treeRev.tre deleted file mode 100644 index 549563b..0000000 --- a/inst/extdata/hostrep3states_treeRev.tre +++ /dev/null @@ -1 +0,0 @@ -((S1[&index=4]:0.428200,S2[&index=3]:0.428200)[&index=5]:1.571800,(S3[&index=2]:0.735218,S4[&index=1]:0.735218)[&index=6]:1.264782)[&index=7]:2.000000; diff --git a/man/tp_parse_host_rep.Rd b/man/tp_parse_host_rep.Rd index 9a2f7d4..fb84097 100644 --- a/man/tp_parse_host_rep.Rd +++ b/man/tp_parse_host_rep.Rd @@ -4,13 +4,11 @@ \alias{tp_parse_host_rep} \title{Parse TreePPL json output for host repertoire model} \usage{ -tp_parse_host_rep(treeppl_out, n_runs = 1) +tp_parse_host_rep(treeppl_out) } \arguments{ \item{treeppl_out}{a character vector giving the TreePPL json output produced by \link{tp_treeppl}.} - -\item{n_runs}{a \link[base:integer]{base::integer} giving the number of runs (MCMC) or sweeps (SMC).} } \value{ A list (n = n_runs) of data frames with the output from inference diff --git a/vignettes/hostrep-example.Rmd b/vignettes/hostrep-example.Rmd index 6368921..91f7efe 100644 --- a/vignettes/hostrep-example.Rmd +++ b/vignettes/hostrep-example.Rmd @@ -55,97 +55,98 @@ data <- tp_data("hostrep3states") ## Run treeppl -Now we can compile and run the TreePPL program using the default inference options. - -```{r, eval=FALSE} -output_list <- tp_treeppl(model = model, model_file_name = "hostrep", - data = data, data_file_name = "hostrep") -``` - -```{r, echo=FALSE} -output_list <- readRDS("rdata/hostrep/output_hostrep3states.rds") -``` - -```{r} -output <- tp_parse_host_rep(output_list) -``` - -The output from *tp_parse_host_rep()* contains all information outputted by treeppl, so we need to separate the sampled character histories from the sampled parameter values. - -## Parameter estimates - -```{r} -logs <- output[[1]] %>% - dplyr::select(iteration, log_weight, mu, beta) %>% - unique() %>% - dplyr::mutate(weight = exp(log_weight - max(.$log_weight))) - -ggplot(logs, aes(mu, weight=weight)) + - geom_histogram(aes(y = after_stat(density)), col = "white", fill = "lightblue", binwidth=0.04) + - geom_density() + - theme_bw() - -ggplot(logs, aes(mu, weight=weight)) + - geom_histogram(aes(y = after_stat(density) ), col = "white", fill = "lightblue", binwidth=0.04) + - geom_density() + - theme_bw() -``` - -## Character history - -Extract table with character history samples - -```{r} -# post-treatment function -get_history <- function(parsed_output){ - - table <- parsed_output[[1]] %>% - dplyr::select(-c(log_weight, mu, beta, lambda1, lambda2, lambda3, lambda4)) %>% - dplyr::mutate(transition_type = "anagenetic") %>% - dplyr::mutate(node_index = dplyr::case_when( # fix to mismatch and 0- to 1-base - node_index == 3 ~ 5, - node_index == 4 ~ 4, - TRUE ~ node_index + 1)) %>% - dplyr::filter(!is.na(log_norm_const)) - - return(table) -} - -tp_hist <- get_history(output) -``` - - -This table can be used by **evolnets** for plotting results, together with the phylogenetic trees and the known extant interactions. - -```{r} -# get data from treepplr -symbiont_tree <- read_tree_from_revbayes( - system.file("extdata/hostrep3states_treeRev.tre", package = "treepplr")) -host_tree <- read.tree( - system.file("extdata/hostrep3states_host_tree.tre", package = "treepplr")) -matrix <- read.csv( - system.file("extdata/hostrep3states_extant_interactions.csv", package = "treepplr"), - row.names = 1) %>% - as.matrix() -``` - -### Plot data and inferred ancestral fundamental host repertoires - -```{r, fig.height=4, fig.width=6} -# calculate posterior at nodes -tp_at_nodes <- posterior_at_nodes(tp_hist, symbiont_tree, host_tree, state = c(1,2)) - -#plot -(tp_asr_fund <- plot_matrix_phylo(matrix, tp_at_nodes, symbiont_tree, - host_tree, type = "repertoires", - repertoire = "fundamental")) -``` - -### Plot data and inferred ancestral realized host repertoires - -```{r, fig.height=4, fig.width=6} -(tp_asr_real <- plot_matrix_phylo(matrix, tp_at_nodes, symbiont_tree, - host_tree, type = "repertoires", - repertoire = "realized")) -``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 03bd484920f689455cb8ce9618c1021abeb0b40c Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 22 Dec 2025 14:54:23 +0100 Subject: [PATCH 07/10] Add magrittr pipe to imports --- DESCRIPTION | 6 +++--- NAMESPACE | 1 + R/treepplr-package.R | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index cedcb51..2ace2c9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -22,7 +22,8 @@ Imports: utils, gh, curl, - cli + cli, + magrittr Suggests: devtools, ggplot2, @@ -37,8 +38,7 @@ Suggests: rmarkdown, pandoc, dplyr, - rlang, - magrittr + rlang VignetteBuilder: knitr Config/Needs/website: rmarkdown Remotes: diff --git a/NAMESPACE b/NAMESPACE index 0651672..e8968bc 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -20,4 +20,5 @@ export(tp_tempdir) export(tp_treeppl) export(tp_treeppl_json) export(tp_write) +importFrom(magrittr,"%>%") importFrom(methods,is) diff --git a/R/treepplr-package.R b/R/treepplr-package.R index fb0505e..f1b9eba 100644 --- a/R/treepplr-package.R +++ b/R/treepplr-package.R @@ -2,6 +2,7 @@ "_PACKAGE" ## usethis namespace: start +#' @importFrom magrittr %>% #' @importFrom methods is ## usethis namespace: end NULL From 7218f4c241b4d3bacce94526c7bfc3b73fab35d7 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 22 Dec 2025 16:42:16 +0100 Subject: [PATCH 08/10] Small fix to function call --- R/post_treatment.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/post_treatment.R b/R/post_treatment.R index 838902c..3637fde 100644 --- a/R/post_treatment.R +++ b/R/post_treatment.R @@ -241,8 +241,8 @@ tp_smc_convergence <- function(treeppl_out) { output <- tp_parse(treeppl_out) zs <- output %>% - slice_head(n = 1, by = run) %>% - pull(norm_const) + dplyr::slice_head(n = 1, by = run) %>% + dplyr::pull(norm_const) return(var(zs)) } From 0f60f1085a099cda6ab50104bd3bf5379f0e9d94 Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 22 Dec 2025 16:45:15 +0100 Subject: [PATCH 09/10] Clean up after function name change --- man/tp_TreePPL_json.Rd | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 man/tp_TreePPL_json.Rd diff --git a/man/tp_TreePPL_json.Rd b/man/tp_TreePPL_json.Rd deleted file mode 100644 index 2cc5ebd..0000000 --- a/man/tp_TreePPL_json.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tree_convertion.R -\name{tp_treeppl_json} -\alias{tp_treeppl_json} -\title{Convert a tppl_tree to TreePPL json str} -\usage{ -tp_treeppl_json(tree) -} -\arguments{ -\item{tree}{an object of class json.} -} -\value{ -A TreePPL json str -} -\description{ -\code{tp_treeppl_json} takes an tppl_tree create with \link{tp_phylo_to_tppl_tree} -and returns a list ready to be exported with JSON -} From 17f96e94716840a3821e3dcc9929dc44afd26c3c Mon Sep 17 00:00:00 2001 From: Mariana P Braga Date: Mon, 22 Dec 2025 17:27:20 +0100 Subject: [PATCH 10/10] Add bnpsd to imports --- DESCRIPTION | 3 ++- NAMESPACE | 1 + R/treepplr-package.R | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2ace2c9..df8713d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -23,7 +23,8 @@ Imports: gh, curl, cli, - magrittr + magrittr, + bnpsd Suggests: devtools, ggplot2, diff --git a/NAMESPACE b/NAMESPACE index e8968bc..b3d5959 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -20,5 +20,6 @@ export(tp_tempdir) export(tp_treeppl) export(tp_treeppl_json) export(tp_write) +importFrom(bnpsd,tree_reorder) importFrom(magrittr,"%>%") importFrom(methods,is) diff --git a/R/treepplr-package.R b/R/treepplr-package.R index f1b9eba..c53e54c 100644 --- a/R/treepplr-package.R +++ b/R/treepplr-package.R @@ -2,6 +2,7 @@ "_PACKAGE" ## usethis namespace: start +#' @importFrom bnpsd tree_reorder #' @importFrom magrittr %>% #' @importFrom methods is ## usethis namespace: end