Skip to content

Commit

Permalink
v1.2.1
Browse files Browse the repository at this point in the history
  • Loading branch information
kokitsuyuzaki committed Aug 14, 2023
1 parent d00293d commit 9c26b15
Show file tree
Hide file tree
Showing 38 changed files with 1,366 additions and 1,282 deletions.
11 changes: 10 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,14 @@ By participating in this project you agree to abide by its terms.
Please follow [our guideline](.github/ISSUE_TEMPLATE/bug_report.md) to create an issue.

## PRs
For the details about how to create a pull request, see the official document of [GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).
For the details about how to create a pull request (PR), see the official document of [GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).

If fixing a bug or adding a new feature to a `dcTensor` function, please add a `testthat` unit test code like `tests/testthat/test_[NEW_FEATURE].R`.

Codes that take too long are commented out in `testthat.R`.
This is because CRAN expects tests to be completed in a short period of time.
If your test code takes more than 1 minute, please comment it out.

Also add a command `test_file("testthat/test_[NEW_FEATURE].R")` in `tests/testthat.R`.

The test code is performed in `Dockerfile` called by `.github/workflows/build_test_push.yml` (GitHub Actions) and you will see whether the test code has been finished without error after your PR. **Please do not leave the PR with errors.**
4 changes: 4 additions & 0 deletions inst/NEWS
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
VERSION 1.2.1
------------------------
o Debugged tests

VERSION 1.2.0
------------------------
o {Binary,Ternary}-regularization terms are removed because of the calculation time issue
Expand Down
22 changes: 12 additions & 10 deletions tests/testthat/test_NA_dNMF.R
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
X <- dcTensor::toyModel("dNMF")
X[sample(seq(length(X)), 0.1*length(X))] <- NA
test_that("dNMF (NA)", {
X <- dcTensor::toyModel("dNMF")
X[sample(seq(length(X)), 0.1*length(X))] <- NA

out1 <- dNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- dNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- dNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- dNMF(X, J=3, algorithm="Beta", Beta=-1, num.iter=2)
out1 <- dNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- dNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- dNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- dNMF(X, J=3, algorithm="Beta", Beta=-1, num.iter=2)

expect_equivalent(length(out1), 10)
expect_equivalent(length(out2), 10)
expect_equivalent(length(out3), 10)
expect_equivalent(length(out4), 10)
expect_equivalent(length(out1), 6)
expect_equivalent(length(out2), 6)
expect_equivalent(length(out3), 6)
expect_equivalent(length(out4), 6)
})
60 changes: 31 additions & 29 deletions tests/testthat/test_NA_dNTD.R
Original file line number Diff line number Diff line change
@@ -1,35 +1,37 @@
#
# 3-order tensor
#
X <- dcTensor::toyModel("dNTF")
X@data[sample(seq(length(X@data)), 0.1*length(X@data))] <- NA
test_that("dNTD (NA)", {
#
# 3-order tensor
#
X <- dcTensor::toyModel("dNTF")
X@data[sample(seq(length(X@data)), 0.1*length(X@data))] <- NA

out1_1 <- dNTD(X, rank=c(1,2,3), algorithm="Frobenius", num.iter=2)
out1_2 <- dNTD(X, rank=c(1,2,3), algorithm="Frobenius", init="dNMF", num.iter=2)
out1_3 <- dNTD(X, rank=c(1,2,3), algorithm="Frobenius", init="Random", num.iter=2)
out2 <- dNTD(X, rank=c(1,2,3), algorithm="KL", num.iter=2)
out3 <- dNTD(X, rank=c(1,2,3), algorithm="IS", num.iter=2)
out4 <- dNTD(X, rank=c(1,2,3), algorithm="Beta", num.iter=2)
out1_1 <- dNTD(X, rank=c(1,2,3), algorithm="Frobenius", num.iter=2)
out1_2 <- dNTD(X, rank=c(1,2,3), algorithm="Frobenius", init="dNMF", num.iter=2)
out1_3 <- dNTD(X, rank=c(1,2,3), algorithm="Frobenius", init="Random", num.iter=2)
out2 <- dNTD(X, rank=c(1,2,3), algorithm="KL", num.iter=2)
out3 <- dNTD(X, rank=c(1,2,3), algorithm="IS", num.iter=2)
out4 <- dNTD(X, rank=c(1,2,3), algorithm="Beta", num.iter=2)

out_NTD2_1 <- dNTD(X, rank=c(2,3), modes=1:2, algorithm="Frobenius", num.iter=2)
out_NTD2_2 <- dNTD(X, rank=c(3,4), modes=2:3, algorithm="Frobenius", num.iter=2)
out_NTD2_3 <- dNTD(X, rank=c(4,6), modes=c(1,3), algorithm="Frobenius", num.iter=2)
out_NTD2_1 <- dNTD(X, rank=c(2,3), modes=1:2, algorithm="Frobenius", num.iter=2)
out_NTD2_2 <- dNTD(X, rank=c(3,4), modes=2:3, algorithm="Frobenius", num.iter=2)
out_NTD2_3 <- dNTD(X, rank=c(4,6), modes=c(1,3), algorithm="Frobenius", num.iter=2)

out_NTD1_1 <- dNTD(X, rank=3, modes=1, algorithm="Frobenius", num.iter=2)
out_NTD1_2 <- dNTD(X, rank=4, modes=2, algorithm="Frobenius", num.iter=2)
out_NTD1_3 <- dNTD(X, rank=5, modes=3, algorithm="Frobenius", num.iter=2)
out_NTD1_1 <- dNTD(X, rank=3, modes=1, algorithm="Frobenius", num.iter=2)
out_NTD1_2 <- dNTD(X, rank=4, modes=2, algorithm="Frobenius", num.iter=2)
out_NTD1_3 <- dNTD(X, rank=5, modes=3, algorithm="Frobenius", num.iter=2)

expect_equivalent(length(out1_1), 8)
expect_equivalent(length(out1_2), 8)
expect_equivalent(length(out1_3), 8)
expect_equivalent(length(out2), 8)
expect_equivalent(length(out3), 8)
expect_equivalent(length(out4), 8)
expect_equivalent(length(out1_1), 6)
expect_equivalent(length(out1_2), 6)
expect_equivalent(length(out1_3), 6)
expect_equivalent(length(out2), 6)
expect_equivalent(length(out3), 6)
expect_equivalent(length(out4), 6)

expect_equivalent(length(out_NTD2_1), 8)
expect_equivalent(length(out_NTD2_2), 8)
expect_equivalent(length(out_NTD2_3), 8)
expect_equivalent(length(out_NTD2_1), 6)
expect_equivalent(length(out_NTD2_2), 6)
expect_equivalent(length(out_NTD2_3), 6)

expect_equivalent(length(out_NTD1_1), 8)
expect_equivalent(length(out_NTD1_2), 8)
expect_equivalent(length(out_NTD1_3), 8)
expect_equivalent(length(out_NTD1_1), 6)
expect_equivalent(length(out_NTD1_2), 6)
expect_equivalent(length(out_NTD1_3), 6)
})
36 changes: 19 additions & 17 deletions tests/testthat/test_NA_dNTF.R
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
#
# 3-order tensor
#
X <- dcTensor:::toyModel("dNTF")
X@data[sample(seq(length(X@data)), 0.1*length(X@data))] <- NA
test_that("dNTF (NA)", {
#
# 3-order tensor
#
X <- dcTensor:::toyModel("dNTF")
X@data[sample(seq(length(X@data)), 0.1*length(X@data))] <- NA

out1_1 <- dNTF(X, rank=3, algorithm="Frobenius", num.iter=2)
out1_2 <- dNTF(X, rank=3, algorithm="Frobenius", init="dNMF", num.iter=2)
out1_3 <- dNTF(X, rank=3, algorithm="Frobenius", init="Random", num.iter=2)
out2 <- dNTF(X, rank=3, algorithm="KL", num.iter=2)
out3 <- dNTF(X, rank=3, algorithm="IS", num.iter=2)
out4 <- dNTF(X, rank=3, algorithm="Beta", Beta=-1, num.iter=2)
out1_1 <- dNTF(X, rank=3, algorithm="Frobenius", num.iter=2)
out1_2 <- dNTF(X, rank=3, algorithm="Frobenius", init="dNMF", num.iter=2)
out1_3 <- dNTF(X, rank=3, algorithm="Frobenius", init="Random", num.iter=2)
out2 <- dNTF(X, rank=3, algorithm="KL", num.iter=2)
out3 <- dNTF(X, rank=3, algorithm="IS", num.iter=2)
out4 <- dNTF(X, rank=3, algorithm="Beta", Beta=-1, num.iter=2)

expect_equivalent(length(out1_1), 8)
expect_equivalent(length(out1_2), 8)
expect_equivalent(length(out1_3), 8)
expect_equivalent(length(out2), 8)
expect_equivalent(length(out3), 8)
expect_equivalent(length(out4), 8)
expect_equivalent(length(out1_1), 6)
expect_equivalent(length(out1_2), 6)
expect_equivalent(length(out1_3), 6)
expect_equivalent(length(out2), 6)
expect_equivalent(length(out3), 6)
expect_equivalent(length(out4), 6)
})
15 changes: 8 additions & 7 deletions tests/testthat/test_NA_dPLS.R
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
X <- dcTensor::toyModel("dPLS_Easy")
X[[1]][sample(seq(length(X[[1]])), 0.1*length(X[[1]]))] <- NA
X[[2]][sample(seq(length(X[[2]])), 0.1*length(X[[2]]))] <- NA
X[[3]][sample(seq(length(X[[3]])), 0.1*length(X[[3]]))] <- NA

out <- dPLS(X, J=3, num.iter=2)
expect_equivalent(length(out), 7)
test_that("dPLS (NA)", {
X <- dcTensor::toyModel("dPLS_Easy")
X[[1]][sample(seq(length(X[[1]])), 0.1*length(X[[1]]))] <- NA
X[[2]][sample(seq(length(X[[2]])), 0.1*length(X[[2]]))] <- NA
X[[3]][sample(seq(length(X[[3]])), 0.1*length(X[[3]]))] <- NA

out <- dPLS(X, J=3, num.iter=2)
expect_equivalent(length(out), 6)
})
10 changes: 6 additions & 4 deletions tests/testthat/test_NA_dSVD.R
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
X <- dcTensor::toyModel("dSVD")
X[sample(seq(length(X)), 0.1*length(X))] <- NA
test_that("dSVD (NA)", {
X <- dcTensor::toyModel("dSVD")
X[sample(seq(length(X)), 0.1*length(X))] <- NA

out <- dSVD(X, J=3, num.iter=2)
expect_equivalent(length(out), 7)
out <- dSVD(X, J=3, num.iter=2)
expect_equivalent(length(out), 6)
})
26 changes: 14 additions & 12 deletions tests/testthat/test_NA_djNMF.R
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
X <- dcTensor:::toyModel("dsiNMF_Hard")
X[[1]][sample(seq(length(X[[1]])), 0.1*length(X[[1]]))] <- NA
X[[2]][sample(seq(length(X[[2]])), 0.1*length(X[[2]]))] <- NA
X[[3]][sample(seq(length(X[[3]])), 0.1*length(X[[3]]))] <- NA
test_that("djNMF (NA)", {
X <- dcTensor:::toyModel("dsiNMF_Hard")
X[[1]][sample(seq(length(X[[1]])), 0.1*length(X[[1]]))] <- NA
X[[2]][sample(seq(length(X[[2]])), 0.1*length(X[[2]]))] <- NA
X[[3]][sample(seq(length(X[[3]])), 0.1*length(X[[3]]))] <- NA

out1 <- djNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- djNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- djNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- djNMF(X, J=3, algorithm="PLTF", p=1, num.iter=2)
out1 <- djNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- djNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- djNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- djNMF(X, J=3, algorithm="PLTF", p=1, num.iter=2)

expect_equivalent(length(out1), 13)
expect_equivalent(length(out2), 13)
expect_equivalent(length(out3), 13)
expect_equivalent(length(out4), 13)
expect_equivalent(length(out1), 7)
expect_equivalent(length(out2), 7)
expect_equivalent(length(out3), 7)
expect_equivalent(length(out4), 7)
})
26 changes: 14 additions & 12 deletions tests/testthat/test_NA_dsiNMF.R
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
X <- dcTensor::toyModel("dsiNMF_Easy")
X[[1]][sample(seq(length(X[[1]])), 0.1*length(X[[1]]))] <- NA
X[[2]][sample(seq(length(X[[2]])), 0.1*length(X[[2]]))] <- NA
X[[3]][sample(seq(length(X[[3]])), 0.1*length(X[[3]]))] <- NA
test_that("dsiNMF (NA)", {
X <- dcTensor::toyModel("dsiNMF_Easy")
X[[1]][sample(seq(length(X[[1]])), 0.1*length(X[[1]]))] <- NA
X[[2]][sample(seq(length(X[[2]])), 0.1*length(X[[2]]))] <- NA
X[[3]][sample(seq(length(X[[3]])), 0.1*length(X[[3]]))] <- NA

out1 <- dsiNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- dsiNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- dsiNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- dsiNMF(X, J=3, algorithm="PLTF", p=1, num.iter=2)
out1 <- dsiNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- dsiNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- dsiNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- dsiNMF(X, J=3, algorithm="PLTF", p=1, num.iter=2)

expect_equivalent(length(out1), 10)
expect_equivalent(length(out2), 10)
expect_equivalent(length(out3), 10)
expect_equivalent(length(out4), 10)
expect_equivalent(length(out1), 6)
expect_equivalent(length(out2), 6)
expect_equivalent(length(out3), 6)
expect_equivalent(length(out4), 6)
})
42 changes: 22 additions & 20 deletions tests/testthat/test_dNMF.R
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
X <- dcTensor::toyModel("dNMF")
test_that("dNMF", {
X <- dcTensor::toyModel("dNMF")

# Normal Test
out1 <- dNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- dNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- dNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- dNMF(X, J=3, algorithm="Beta", num.iter=2)
# Normal Test
out1 <- dNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- dNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- dNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- dNMF(X, J=3, algorithm="Beta", num.iter=2)

expect_equivalent(length(out1), 10)
expect_equivalent(length(out2), 10)
expect_equivalent(length(out3), 10)
expect_equivalent(length(out4), 10)
expect_equivalent(length(out1), 6)
expect_equivalent(length(out2), 6)
expect_equivalent(length(out3), 6)
expect_equivalent(length(out4), 6)

# Mask Test
M <- kFoldMaskTensor(X, k=5)
out1_M <- dNMF(X, M=M[[1]], J=3, algorithm="Frobenius", num.iter=2)
out2_M <- dNMF(X, M=M[[1]], J=3, algorithm="KL", num.iter=2)
out3_M <- dNMF(X, M=M[[1]], J=3, algorithm="IS", num.iter=2)
out4_M <- dNMF(X, M=M[[1]], J=3, algorithm="Beta", num.iter=2)
# Mask Test
M <- kFoldMaskTensor(X, k=5)
out1_M <- dNMF(X, M=M[[1]], J=3, algorithm="Frobenius", num.iter=2)
out2_M <- dNMF(X, M=M[[1]], J=3, algorithm="KL", num.iter=2)
out3_M <- dNMF(X, M=M[[1]], J=3, algorithm="IS", num.iter=2)
out4_M <- dNMF(X, M=M[[1]], J=3, algorithm="Beta", num.iter=2)

expect_equivalent(length(out1_M), 10)
expect_equivalent(length(out2_M), 10)
expect_equivalent(length(out3_M), 10)
expect_equivalent(length(out4_M), 10)
expect_equivalent(length(out1_M), 6)
expect_equivalent(length(out2_M), 6)
expect_equivalent(length(out3_M), 6)
expect_equivalent(length(out4_M), 6)
})
20 changes: 11 additions & 9 deletions tests/testthat/test_dNTD.R
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
X <- dcTensor::toyModel("dNTF")
test_that("dNTD", {
X <- dcTensor::toyModel("dNTF")

out1 <- dNTD(X, rank=c(3,3,3), algorithm="Frobenius", num.iter=2)
out2 <- dNTD(X, rank=c(3,3,3), algorithm="KL", num.iter=2)
out3 <- dNTD(X, rank=c(3,3,3), algorithm="IS", num.iter=2)
out4 <- dNTD(X, rank=c(3,3,3), algorithm="Beta", num.iter=2)
out1 <- dNTD(X, rank=c(3,3,3), algorithm="Frobenius", num.iter=2)
out2 <- dNTD(X, rank=c(3,3,3), algorithm="KL", num.iter=2)
out3 <- dNTD(X, rank=c(3,3,3), algorithm="IS", num.iter=2)
out4 <- dNTD(X, rank=c(3,3,3), algorithm="Beta", num.iter=2)

expect_equivalent(length(out1), 8)
expect_equivalent(length(out2), 8)
expect_equivalent(length(out3), 8)
expect_equivalent(length(out4), 8)
expect_equivalent(length(out1), 6)
expect_equivalent(length(out2), 6)
expect_equivalent(length(out3), 6)
expect_equivalent(length(out4), 6)
})
20 changes: 11 additions & 9 deletions tests/testthat/test_dNTF.R
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
X <- dcTensor::toyModel("dNTF")
test_that("dNTF", {
X <- dcTensor::toyModel("dNTF")

out1 <- dNTF(X, rank=3, algorithm="Frobenius", num.iter=2)
out2 <- dNTF(X, rank=3, algorithm="KL", num.iter=2)
out3 <- dNTF(X, rank=3, algorithm="IS", num.iter=2)
out4 <- dNTF(X, rank=3, algorithm="Beta", num.iter=2)
out1 <- dNTF(X, rank=3, algorithm="Frobenius", num.iter=2)
out2 <- dNTF(X, rank=3, algorithm="KL", num.iter=2)
out3 <- dNTF(X, rank=3, algorithm="IS", num.iter=2)
out4 <- dNTF(X, rank=3, algorithm="Beta", num.iter=2)

expect_equivalent(length(out1), 8)
expect_equivalent(length(out2), 8)
expect_equivalent(length(out3), 8)
expect_equivalent(length(out4), 8)
expect_equivalent(length(out1), 6)
expect_equivalent(length(out2), 6)
expect_equivalent(length(out3), 6)
expect_equivalent(length(out4), 6)
})
8 changes: 5 additions & 3 deletions tests/testthat/test_dPLS.R
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
X <- dcTensor::toyModel("dPLS_Easy")
test_that("dPLS", {
X <- dcTensor::toyModel("dPLS_Easy")

out <- dPLS(X, J=3, num.iter=2)
out <- dPLS(X, J=3, num.iter=2)

expect_equivalent(length(out), 7)
expect_equivalent(length(out), 6)
})
8 changes: 5 additions & 3 deletions tests/testthat/test_dSVD.R
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
X <- dcTensor::toyModel("dSVD")
test_that("dSVD", {
X <- dcTensor::toyModel("dSVD")

out <- dSVD(X, J=3, num.iter=2)
out <- dSVD(X, J=3, num.iter=2)

expect_equivalent(length(out), 7)
expect_equivalent(length(out), 6)
})
20 changes: 11 additions & 9 deletions tests/testthat/test_djNMF.R
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
X <- dcTensor::toyModel("dsiNMF_Easy")
test_that("djNMF", {
X <- dcTensor::toyModel("dsiNMF_Easy")

out1 <- djNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- djNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- djNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- djNMF(X, J=3, algorithm="PLTF", num.iter=2)
out1 <- djNMF(X, J=3, algorithm="Frobenius", num.iter=2)
out2 <- djNMF(X, J=3, algorithm="KL", num.iter=2)
out3 <- djNMF(X, J=3, algorithm="IS", num.iter=2)
out4 <- djNMF(X, J=3, algorithm="PLTF", num.iter=2)

expect_equivalent(length(out1), 13)
expect_equivalent(length(out2), 13)
expect_equivalent(length(out3), 13)
expect_equivalent(length(out4), 13)
expect_equivalent(length(out1), 7)
expect_equivalent(length(out2), 7)
expect_equivalent(length(out3), 7)
expect_equivalent(length(out4), 7)
})
Loading

0 comments on commit 9c26b15

Please sign in to comment.