#' Inferring trajectories with Control: random
#'
#' This control method will always produce a random trajectory.
#'
#' @param dummy_param This parameter does not do anything.
ti_random <- dynwrap::create_ti_method_r(
dynwrap::definition(
method = dynwrap::def_method(id = "random"),
wrapper = dynwrap::def_wrapper(input_required = "counts")
),
# describe packages needed by method
package_loaded = c("dplyr", "tidyr", "purrr", "dynwrap", "dynutils"),
package_required = NULL,
# function to run the method with
run_fun = function(
counts,
seed = NA,
verbose = FALSE
) {
if (length(seed) > 0 && is.finite(seed)) set.seed(seed)
num_milestones <- 15
# generate network
milestone_ids <- paste0("milestone_", seq_len(num_milestones))
# TIMING: done with preproc
tl <- add_timing_checkpoint(NULL, "method_afterpreproc")
gr <- igraph::ba.game(num_milestones)
milestone_network <- igraph::as_data_frame(gr) %>%
mutate(
from = paste0("milestone_", from),
to = paste0("milestone_", to),
length = 1,
directed = FALSE
)
# put cells on random edges of network
cell_ids <- rownames(counts)
progressions <- data.frame(
cell_id = cell_ids,
milestone_network[sample.int(nrow(milestone_network), length(cell_ids), replace = TRUE), 1:2],
percentage = stats::runif(length(cell_ids)),
stringsAsFactors = FALSE
)
# TIMING: done with method
tl <- tl %>% add_timing_checkpoint("method_aftermethod")
# return output
wrap_data(
cell_ids = cell_ids
) %>% add_trajectory(
milestone_ids = milestone_ids,
milestone_network = milestone_network,
progressions = progressions,
divergence_regions = NULL
) %>% add_timings(
timings = tl %>% add_timing_checkpoint("method_afterpostproc")
)
}
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.