Nothing
# ==================================================================================================
# setup
# ==================================================================================================
## Original objects in env
ols <- ls()
pt_ctrl <- partitional_control()
x <- data_reinterpolated_subset
k <- 2L
cl_id <- rep(c(1L, 2L), each = length(x) / 2L)
x_mv <- reinterpolate(data_multivariate, 205L)
expect_trace <- if (foreach::getDoParWorkers() > 1L) testthat::expect_silent else testthat::expect_output
# ==================================================================================================
# mean
# ==================================================================================================
test_that("Operations with mean centroid complete successfully.", {
family <- new("tsclustFamily", control = pt_ctrl, allcent = "mean")
## ---------------------------------------------------------- univariate
cent_mean <- family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_mean), k)
## ---------------------------------------------------------- multivariate
cent_mv_mean <- family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_mv_mean), k)
expect_identical(dim(cent_mv_mean[[1L]]), dim(x_mv[[1L]]))
## ---------------------------------------------------------- refs
assign("cent_mean", cent_mean, persistent)
assign("cent_mv_mean", cent_mv_mean, persistent)
})
# ==================================================================================================
# median
# ==================================================================================================
test_that("Operations with median centroid complete successfully.", {
family <- new("tsclustFamily", control = pt_ctrl, allcent = "median")
## ---------------------------------------------------------- univariate
cent_median <- family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_median), k)
## ---------------------------------------------------------- multivariate
cent_mv_median <- family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_mv_median), k)
expect_identical(dim(cent_mv_median[[1L]]), dim(x_mv[[1L]]))
## ---------------------------------------------------------- refs
assign("cent_median", cent_median, persistent)
assign("cent_mv_median", cent_mv_median, persistent)
})
# ==================================================================================================
# shape
# ==================================================================================================
test_that("Operations with shape centroid complete successfully.", {
expect_error(shape_extraction(x_mv, x[[1L]]), "Dimension inconsistency")
family <- new("tsclustFamily", control = pt_ctrl, allcent = "shape")
## ---------------------------------------------------------- univariate
cent_shape <- family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_shape), k)
## ---------------------------------------------------------- multivariate
cent_mv_shape <- family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_mv_shape), k)
expect_identical(dim(cent_mv_shape[[1L]]), dim(x_mv[[1L]]))
## ---------------------------------------------------------- refs
assign("cent_shape", cent_shape, persistent)
assign("cent_mv_shape", cent_mv_shape, persistent)
## ---------------------------------------------------------- directly
zero_shape_centroid <- shape_extraction(matrix(0, 2L, 10L))
expect_identical(sum(zero_shape_centroid), 0)
zero_shape_centroid_reference <- shape_extraction(matrix(0, 2L, 10L), x[[1L]])
expect_identical(zero_shape_centroid_reference, x[[1L]])
expect_error(shape_extraction(data_subset, data_multivariate[[1L]]), regexp = "dimension")
})
# ==================================================================================================
# pam
# ==================================================================================================
test_that("Operations with pam centroid complete successfully.", {
## ---------------------------------------------------------- univariate without distmat
dm <- dtwclust:::Distmat$new(series = x,
control = pt_ctrl,
distance = "sbd")
pt_ctrl$distmat <- dm
family <- new("tsclustFamily",
control = pt_ctrl,
dist = "sbd",
allcent = "pam")
cent_pam <- family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_pam), k)
expect_null(as.list(environment(family@allcent))$distmat)
## ---------------------------------------------------------- univariate with R distmat
pt_ctrl$distmat <- proxy::dist(x, method = "sbd")
family <- new("tsclustFamily",
control = pt_ctrl,
dist = "sbd",
allcent = "pam")
cent_pam_distmat <- family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_pam_distmat), k)
expect_false(is.null(environment(family@allcent)$control$distmat))
expect_identical(cent_pam, cent_pam_distmat)
## ---------------------------------------------------------- multivariate with R distmat
pt_ctrl$distmat <- proxy::dist(x_mv, method = "dtw_basic", window.size = 18L)
family <- new("tsclustFamily",
control = pt_ctrl,
dist = "dtw_basic",
allcent = "pam")
cent_mv_pam <- family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_mv_pam), k)
expect_identical(dim(cent_mv_pam[[1L]]), dim(x_mv[[1L]]))
## ---------------------------------------------------------- sparse symmetric
pt_ctrl$symmetric <- TRUE
dm <- dtwclust:::SparseDistmat$new(series = x,
control = pt_ctrl,
distance = "sbd",
dist_args = list())
pt_ctrl$distmat <- dm
family <- new("tsclustFamily",
control = pt_ctrl,
dist = "sbd",
allcent = "pam")
expect_equal(cent_pam,
family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L),
ignore_attr = TRUE)
## ---------------------------------------------------------- sparse non-symmetric
pt_ctrl$symmetric <- FALSE
dm <- dtwclust:::SparseDistmat$new(series = x_mv,
control = pt_ctrl,
distance = "dtw_basic",
dist_args = list(window.size = 18L))
pt_ctrl$distmat <- dm
family <- new("tsclustFamily",
control = pt_ctrl,
dist = "dtw_basic",
allcent = "pam")
expect_equal(cent_mv_pam,
family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L),
ignore_attr = TRUE)
## ---------------------------------------------------------- refs
assign("cent_pam", cent_pam, persistent)
assign("cent_mv_pam", cent_mv_pam, persistent)
## ---------------------------------------------------------- standalone
expect_error(pam_cent(x))
dm <- proxy::dist(x[6L:10L], method = "dtw_basic", window.size = 15L)
pam_cent_no_distmat <- pam_cent(x, "dtw_basic", 6L:10L, window.size = 15L)
expect_identical(attr(pam_cent_no_distmat, "series_id"), 7L)
pam_cent_with_distmat <- pam_cent(x[6L:10L], distmat = dm)
expect_identical(attr(pam_cent_with_distmat, "series_id"), 2L)
expect_equal(pam_cent_with_distmat, pam_cent_no_distmat, ignore_attr = TRUE)
})
# ==================================================================================================
# dba
# ==================================================================================================
test_that("Operations with dba centroid complete successfully.", {
expect_error(dba(x[1L:5L], max.iter = 0L), "positive")
expect_error(dba(x[1L:5L], step.pattern = dtw::asymmetric), "step.pattern")
input_order1 <- dba(x[1L:5L], x[[1L]], step.pattern = dtw::symmetric1)
input_order2 <- dba(x[5L:1L], x[[1L]], step.pattern = dtw::symmetric1)
expect_equal(input_order1, input_order2)
one_delta <- dba(x[1L:5L], x[[1L]], delta = 0.01)
many_delta <- dba(x[1L:5L], x[[1L]], delta = c(0.01, 10))
expect_equal(one_delta, many_delta)
family <- new("tsclustFamily", control = pt_ctrl, allcent = "dba")
## ---------------------------------------------------------- univariate
expect_output(
dba(x[1L:5L], centroid = x[[1L]], max.iter = 20L, trace = TRUE),
"Converged!"
)
expect_trace(
cent_dba <- family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L,
window.size = 18L,
max.iter = 15L,
trace = TRUE)
)
expect_identical(length(cent_dba), k)
## ---------------------------------------------------------- multivariate
expect_trace(
cent_mv_dba <- family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L,
window.size = 18L,
max.iter = 15L,
norm = "L2",
trace = TRUE)
)
expect_identical(length(cent_mv_dba), k)
expect_identical(dim(cent_mv_dba[[1L]]), dim(x_mv[[1L]]))
## ---------------------------------------------------------- multivariate v2
expect_trace(
cent_mv_dba_bys <- family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L,
mv.ver = "by-s",
trace = TRUE)
)
expect_identical(length(cent_mv_dba_bys), k)
expect_identical(dim(cent_mv_dba_bys[[1L]]), dim(x_mv[[1L]]))
## ---------------------------------------------------------- refs
assign("cent_dba", cent_dba, persistent)
assign("cent_mv_dba", cent_mv_dba, persistent)
assign("cent_mv_dba_bys", cent_mv_dba_bys, persistent)
})
# ==================================================================================================
# sdtw_cent
# ==================================================================================================
test_that("Operations with sdtw_cent centroid complete successfully.", {
expect_error(sdtw_cent(x, gamma = -1), "gamma.*positive")
expect_error(sdtw_cent(x, weights = 1), "weights.*length")
family <- new("tsclustFamily", control = pt_ctrl, allcent = "sdtw_cent")
## ---------------------------------------------------------- univariate
cent_sdtwc <- family@allcent(x,
cl_id = cl_id,
k = k,
cent = x[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_sdtwc), k)
## ---------------------------------------------------------- multivariate
cent_mv_sdtwc <- family@allcent(x_mv,
cl_id = cl_id,
k = k,
cent = x_mv[c(1L,20L)],
cl_old = 0L)
expect_identical(length(cent_mv_sdtwc), k)
expect_identical(dim(cent_mv_sdtwc[[1L]]), dim(x_mv[[1L]]))
## ---------------------------------------------------------- refs
assign("cent_sdtwc", cent_sdtwc, persistent)
assign("cent_mv_sdtwc", cent_mv_sdtwc, persistent)
})
# ==================================================================================================
# clean
# ==================================================================================================
rm(list = setdiff(ls(), ols))
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.