## ----echo = FALSE------------------------------------------------------------- knitr::knit_hooks$set(pngquant = knitr::hook_pngquant) knitr::opts_chunk$set( message = FALSE, fig.width = 7, fig.height = 6, dev = "ragg_png", fig.align = "center", pngquant = "--speed=10 --quality=30" ) ## ----------------------------------------------------------------------------- library(simona) set.seed(123) tree1 = dag_random_tree() tree1 dag_circular_viz(tree1) ## ----eval = FALSE------------------------------------------------------------- # dag_random_tree(n_children = 2, p_stop = 0, max = 2^10 - 1) ## ----------------------------------------------------------------------------- tree2 = dag_random_tree(n_children = c(2, 6), p_stop = 0.5, max = 2000) tree2 dag_circular_viz(tree2) ## ----------------------------------------------------------------------------- dag1 = dag_add_random_children(tree1) dag1 dag_circular_viz(dag1) ## ----------------------------------------------------------------------------- dag2 = dag_add_random_children(tree1, p_add = 0.6, new_children = c(2, 8)) dag2 dag_circular_viz(dag2) ## ----------------------------------------------------------------------------- add_new_children_from_offspring = function(dag, i, new_children = c(1, 8)) { l = rep(FALSE, dag_n_terms(dag)) offspring = dag_offspring(dag, i, in_labels = FALSE) if(length(offspring)) { l[offspring] = TRUE l[dag_children(dag, i, in_labels = FALSE)] = FALSE } candidates = which(l) n_candidates = length(candidates) if(n_candidates) { if(n_candidates < new_children[1]) { integer(0) } else { sample(candidates, min(n_candidates, sample(seq(new_children[1], new_children[2]), 1))) } } else { integer(0) } } dag3 = dag_add_random_children(tree1, p_add = 0.6, add_random_children_fun = add_new_children_from_offspring) dag3 dag_circular_viz(dag3) ## ----------------------------------------------------------------------------- sessionInfo()