Nothing
# Tests for simplify()
skip_on_cran()
test_that("simplify.matrix removes self-loops", {
mat <- matrix(c(0.5, 0.3, 0, 0.3, 0.2, 0.4, 0, 0.4, 0.1), 3, 3)
rownames(mat) <- colnames(mat) <- c("A", "B", "C")
result <- simplify(mat)
expect_equal(unname(diag(result)), c(0, 0, 0))
expect_equal(result["A", "B"], 0.3)
expect_equal(result["B", "C"], 0.4)
})
test_that("simplify.matrix with remove_loops = FALSE keeps diagonal", {
mat <- matrix(c(0.5, 0.3, 0.3, 0.2), 2, 2)
result <- simplify(mat, remove_loops = FALSE)
expect_equal(unname(diag(result)), c(0.5, 0.2))
})
test_that("simplify.cograph_network removes self-loop edges", {
edges <- data.frame(from = c(1, 1, 2), to = c(2, 1, 2), weight = c(0.5, 0.3, 0.4))
net <- cograph(edges, layout = NULL)
result <- simplify(net)
result_edges <- get_edges(result)
expect_true(all(result_edges$from != result_edges$to))
})
test_that("simplify.cograph_network merges duplicate edges with mean", {
edges <- data.frame(
from = c(1, 1, 2, 1), to = c(2, 3, 3, 2),
weight = c(0.5, 0.3, 0.4, 0.7)
)
net <- cograph(edges, layout = NULL)
result <- simplify(net, edge_attr_comb = "mean")
result_edges <- get_edges(result)
expect_equal(nrow(result_edges), 3)
e12 <- result_edges[result_edges$from == 1 & result_edges$to == 2, "weight"]
expect_equal(e12, 0.6)
})
test_that("simplify.cograph_network merges with sum", {
edges <- data.frame(from = c(1, 1), to = c(2, 2), weight = c(0.3, 0.7))
net <- cograph(edges, layout = NULL)
result <- simplify(net, edge_attr_comb = "sum")
expect_equal(get_edges(result)$weight, 1.0)
})
test_that("simplify.cograph_network merges with max", {
edges <- data.frame(from = c(1, 1), to = c(2, 2), weight = c(0.3, 0.7))
net <- cograph(edges, layout = NULL)
result <- simplify(net, edge_attr_comb = "max")
expect_equal(get_edges(result)$weight, 0.7)
})
test_that("simplify.cograph_network merges with min", {
edges <- data.frame(from = c(1, 1), to = c(2, 2), weight = c(0.3, 0.7))
net <- cograph(edges, layout = NULL)
result <- simplify(net, edge_attr_comb = "min")
expect_equal(get_edges(result)$weight, 0.3)
})
test_that("simplify.cograph_network merges with first", {
edges <- data.frame(from = c(1, 1), to = c(2, 2), weight = c(0.3, 0.7))
net <- cograph(edges, layout = NULL)
result <- simplify(net, edge_attr_comb = "first")
expect_equal(get_edges(result)$weight, 0.3)
})
test_that("simplify.cograph_network with no duplicates is no-op", {
edges <- data.frame(from = c(1, 2), to = c(2, 3), weight = c(0.5, 0.3))
net <- cograph(edges, layout = NULL)
result <- simplify(net)
expect_equal(nrow(get_edges(result)), 2)
})
test_that("simplify.cograph_network cleans weight matrix diagonal", {
mat <- matrix(c(0.5, 0.3, 0.3, 0.2), 2, 2,
dimnames = list(c("A", "B"), c("A", "B")))
net <- cograph(mat, layout = NULL)
result <- simplify(net)
expect_equal(unname(diag(result$weights)), c(0, 0))
})
test_that("simplify.cograph_network with remove_multiple = FALSE keeps duplicates", {
edges <- data.frame(from = c(1, 1), to = c(2, 2), weight = c(0.3, 0.7))
net <- cograph(edges, layout = NULL)
result <- simplify(net, remove_multiple = FALSE)
expect_equal(nrow(get_edges(result)), 2)
})
test_that("simplify works with igraph objects", {
skip_if_not_installed("igraph")
g <- igraph::make_graph(c(1, 2, 1, 2, 2, 3), directed = FALSE)
result <- simplify(g)
expect_equal(igraph::ecount(result), 2)
})
test_that("simplify.tna removes self-loops from weights", {
skip_if_not_installed("tna")
model <- tna::tna(tna::engagement)
has_diag <- any(diag(model$weights) != 0)
result <- simplify(model)
expect_true(all(diag(result$weights) == 0))
})
test_that("simplify errors on unsupported types", {
expect_error(simplify("not a network"), "Cannot simplify")
})
test_that("simplify with custom function", {
edges <- data.frame(from = c(1, 1), to = c(2, 2), weight = c(0.3, 0.7))
net <- cograph(edges, layout = NULL)
result <- simplify(net, edge_attr_comb = function(x) prod(x))
expect_equal(get_edges(result)$weight, 0.21, tolerance = 1e-10)
})
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.