Nothing
set.seed(334)
# Simulate a random network for testing
simulate_network <- function(){
N <- 50
K <- 5
memb <- rep(1:K, each = N / K)
x <- sample(1:10, size = N, replace = TRUE)
y <- sample(1:10, size = N, replace = TRUE)
list_within_params <- c(-1, 1, 1, 0.5)
list_between_params <- c(-3.5, 0.5, 0.5)
formula <- g ~ edges + nodematch("x") + nodematch("y") + triangle
vertex_id <- 1:N
df <- tibble::tibble(
id = vertex_id,
memb = memb,
x = x,
y = y
)
g <- network::network.initialize(n = N, directed = FALSE)
network::set.vertex.attribute(g, "block", df$memb)
network::set.vertex.attribute(g, "x", df$x)
network::set.vertex.attribute(g, "y", df$y)
simulate_bigergm(
formula = formula,
coef_within = list_within_params,
coef_between = list_between_params,
control_within = ergm::control.simulate.formula(MCMC.burnin = 1000000, MCMC.interval = 1000),
seed = 1,
nsim = 1,
output = "network"
)
}
# Function that checks that the number of files in the directory is the expected number
check_files <- function(dir, expected_number){
expect_equal(length(list.files(dir, '*.rds')), expected_number)
}
cleanup <- function(){
do.call(file.remove, list(list.files(tempdir(), '*.rds', full.names = TRUE)))
}
test_that('Estimation with a disk cache stores data in the correct directory', {
skip_on_cran()
on.exit(cleanup())
# Use this directory for caching in disk
dir <- tempdir()
# Simulate a network
g_1 <- simulate_network()
# There should be no cached files in the directory
check_files(dir, 0)
# Perform estimation
bigergm::bigergm(
object = g_1 ~ edges + nodematch("x"),
n_blocks = 3,
n_MM_step_max = 3,
initialization = "infomap",
clustering_with_features = TRUE,
verbose=2,
cache = cachem::cache_disk(dir)
)
# The estimation should have stored one RDS object in the cache directory.
check_files(dir, 1)
bigergm::bigergm(
object = g_1 ~ edges + nodematch("x"),
n_blocks = 3,n_MM_step_max = 3,
initialization = "infomap",
clustering_with_features = TRUE,
verbose=2,
cache = cachem::cache_disk(dir)
)
# Running again the estimation on the same network should reuse the previously stored RDS object
# and not store a new one.
check_files(dir, 1)
# Generate a different network
g_2 <- simulate_network()
# Perform estimation on the new network.
bigergm::bigergm(
object = g_2 ~ edges + nodematch("x"),
n_blocks = 3,n_MM_step_max = 3,
initialization = "infomap",
clustering_with_features = TRUE,
verbose=2,
cache = cachem::cache_disk(dir)
)
# The network has changed, so the previously cached RDS is not reused and a new cache file is generated.
check_files(dir, 2)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.