tests/testthat/test-initializeCMTF.R

test_that("the correct mode 1 size is returned", {
  set.seed(123)
  A = array(rnorm(108*2), c(108, 2))
  B = array(rnorm(100*2), c(100, 2))
  C = array(rnorm(10*2), c(10, 2))
  D = array(rnorm(100*2), c(100, 2))
  E = array(rnorm(10*2), c(10, 2))

  df1 = reinflateTensor(A, B, C)
  df2 = reinflateTensor(A, D, E)
  datasets = list(df1, df2)
  modes = list(c(1,2,3), c(1,4,5))
  Z = setupCMTFdata(datasets, modes, normalize=FALSE)

  result = initializeCMTF(Z, 1, initialization="random")
  expect_equal(nrow(result[[1]]), 108)
})

test_that("max(modes) number of initialized components are returned", {
  set.seed(123)
  A = array(rnorm(108*2), c(108, 2))
  B = array(rnorm(100*2), c(100, 2))
  C = array(rnorm(10*2), c(10, 2))
  D = array(rnorm(100*2), c(100, 2))
  E = array(rnorm(10*2), c(10, 2))

  df1 = reinflateTensor(A, B, C)
  df2 = reinflateTensor(A, D, E)
  datasets = list(df1, df2)
  modes = list(c(1,2,3), c(1,4,5))
  Z = setupCMTFdata(datasets, modes, normalize=FALSE)

  result = initializeCMTF(Z, 1, initialization="random")
  expect_equal(length(result), 5)
})

test_that("randomly initialized components are different between runs", {
  set.seed(123)
  A = array(rnorm(108*2), c(108, 2))
  B = array(rnorm(100*2), c(100, 2))
  C = array(rnorm(10*2), c(10, 2))
  D = array(rnorm(100*2), c(100, 2))
  E = array(rnorm(10*2), c(10, 2))

  df1 = reinflateTensor(A, B, C)
  df2 = reinflateTensor(A, D, E)
  datasets = list(df1, df2)
  modes = list(c(1,2,3), c(1,4,5))
  Z = setupCMTFdata(datasets, modes, normalize=FALSE)

  result1 = initializeCMTF(Z, 1, initialization="random")
  result2 = initializeCMTF(Z, 1, initialization="random")
  expect_false(all(result1[[1]] == result2[[1]]))
})

test_that("the correct mode 1 components are found using nvecs", {
  set.seed(123)
  A = rnorm(108)
  B = rnorm(100)
  C = rnorm(10)
  D = rnorm(100)
  E = rnorm(10)

  df1 = reinflateTensor(A,B,C)
  df2 = reinflateTensor(A,D,E)
  datasets = list(df1, df2)
  modes = list(c(1,2,3), c(1,4,5))
  Z = setupCMTFdata(datasets, modes)

  result = initializeCMTF(Z, 1, initialization="nvec")
  expect_equal(abs(cor(result[[1]], A))[1,1], 1, tolerance=0.01)
})

test_that("the correct mode 2 components are found using nvecs", {
  set.seed(123)
  A = rnorm(108)
  B = rnorm(100)
  C = rnorm(10)
  D = rnorm(100)
  E = rnorm(10)

  df1 = reinflateTensor(A,B,C)
  df2 = reinflateTensor(A,D,E)
  datasets = list(df1, df2)
  modes = list(c(1,2,3), c(1,4,5))
  Z = setupCMTFdata(datasets, modes)
  result = initializeCMTF(Z, 1, initialization="nvec")
  expect_equal(abs(cor(result[[2]], B))[1,1], 1, tolerance=0.01)
})

test_that("the correct mode 3 components are found using nvecs", {
  set.seed(123)
  A = rnorm(108)
  B = rnorm(100)
  C = rnorm(10)
  D = rnorm(100)
  E = rnorm(10)

  df1 = reinflateTensor(A,B,C)
  df2 = reinflateTensor(A,D,E)
  datasets = list(df1, df2)
  modes = list(c(1,2,3), c(1,4,5))
  Z = setupCMTFdata(datasets, modes)
  result = initializeCMTF(Z, 1, initialization="nvec")
  expect_equal(abs(cor(result[[3]], C))[1,1], 1, tolerance=0.01)
})

Try the CMTFtoolbox package in your browser

Any scripts or data that you put into this service are public.

CMTFtoolbox documentation built on Aug. 23, 2025, 1:11 a.m.