tests/testthat/test-motifs.R

test_that("motif finding works", {
  withr::local_seed(123)

  b <- sample_gnp(10000, 4 / 10000, directed = TRUE)

  mno <- count_motifs(b)

  mno0 <- count_motifs(b, cut.prob = c(1 / 3, 0, 0))
  mno1 <- count_motifs(b, cut.prob = c(0, 0, 1 / 3))
  mno2 <- count_motifs(b, cut.prob = c(0, 1 / 3, 0))
  expect_equal(
    c(mno0 / mno, mno1 / mno, mno2 / mno),
    c(0.654821903845065, 0.666289144345659, 0.668393831285275)
  )

  mno3 <- count_motifs(b, cut.prob = c(0, 1 / 3, 1 / 3))
  mno4 <- count_motifs(b, cut.prob = c(1 / 3, 0, 1 / 3))
  mno5 <- count_motifs(b, cut.prob = c(1 / 3, 1 / 3, 0))
  expect_equal(
    c(mno3 / mno, mno4 / mno, mno5 / mno),
    c(0.443959957465819, 0.441952797125797, 0.446004870037941)
  )

  ######################

  withr::local_seed(123)
  b <- sample_gnp(10000, 4 / 10000, directed = TRUE)

  m <- motifs(b)

  m0 <- motifs(b, cut.prob = c(1 / 3, 0, 0))
  m1 <- motifs(b, cut.prob = c(0, 1 / 3, 0))
  m2 <- motifs(b, cut.prob = c(0, 0, 1 / 3))
  expect_equal(m0 / m, c(NA, NA, 0.653972107372707, NA, 0.653993015279859, 0.612244897959184, 0.657514670174019, 0.63013698630137, NaN, 0.538461538461538, NaN, 0.565217391304348, NaN, NaN, NaN, NaN))
  expect_equal(m1 / m, c(NA, NA, 0.669562138856225, NA, 0.66808158454082, 0.73469387755102, 0.670819000404694, 0.657534246575342, NaN, 0.769230769230769, NaN, 0.739130434782609, NaN, NaN, NaN, NaN))
  expect_equal(m2 / m, c(NA, NA, 0.666451718949538, NA, 0.665291458452201, 0.591836734693878, 0.666683528935654, 0.671232876712329, NaN, 0.753846153846154, NaN, 0.565217391304348, NaN, NaN, NaN, NaN))

  m3 <- motifs(b, cut.prob = c(0, 1 / 3, 1 / 3))
  m4 <- motifs(b, cut.prob = c(1 / 3, 1 / 3, 0))
  m5 <- motifs(b, cut.prob = c(1 / 3, 1 / 3, 0))
  expect_equal(m3 / m, c(NA, NA, 0.445611905574732, NA, 0.442789875290769, 0.448979591836735, 0.444695973290166, 0.424657534246575, NaN, 0.369230769230769, NaN, 0.608695652173913, NaN, NaN, NaN, NaN))

  expect_equal(m4 / m, c(NA, NA, 0.439251981944392, NA, 0.439284975327761, 0.73469387755102, 0.445088021044112, 0.465753424657534, NaN, 0.630769230769231, NaN, 0.565217391304348, NaN, NaN, NaN, NaN))

  expect_equal(m5 / m, c(NA, NA, 0.439985332979302, NA, 0.440288166730411, 0.346938775510204, 0.44159753136382, 0.452054794520548, NaN, 0.323076923076923, NaN, 0.347826086956522, NaN, NaN, NaN, NaN))
})
igraph/rigraph documentation built on July 9, 2024, 6:43 p.m.