From 018f9dd33264cba4abe8dbd5d1cfbc060e30eb11 Mon Sep 17 00:00:00 2001 From: Joshua Lambert Date: Fri, 23 Feb 2024 15:58:02 +0000 Subject: [PATCH] optimise .sim_network_bp by moving contact distribution density outside loop --- R/sim_network_bp.R | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/R/sim_network_bp.R b/R/sim_network_bp.R index 96bf83da..83fea9fa 100644 --- a/R/sim_network_bp.R +++ b/R/sim_network_bp.R @@ -51,17 +51,17 @@ ancestor_idx <- 1L prev_ancestors <- 1L + if (config$network == "adjusted") { + # sample contact distribution (excess degree distribution) + q <- contact_distribution(0:1e4 + 1) * (0:1e4 + 1) + q <- q / sum(q) + } else { + q <- contact_distribution(0:1e4) + } + # run loop until no more individuals are sampled while (next_gen_size > 0) { - if (config$network == "adjusted") { - # sample contact distribution (excess degree distribution) - q <- contact_distribution(0:1e4 + 1) * (0:1e4 + 1) - q <- q / sum(q) - } else { - q <- contact_distribution(0:1e4) - } contacts <- sample(0:1e4, size = next_gen_size, replace = TRUE, prob = q) - # add contacts if sampled if (sum(contacts) > 0L) { chain_size <- chain_size + sum(contacts)