context("Dispersal")
for(test in testlist) {
# Create the samc object
samc_obj <- test$samc
# Extract Q
Q <- samc_obj$q_matrix
Q <- as.matrix(Q)
# Extract R
R <- diag(nrow(Q))
diag(R) <- samc_obj@data@t_abs
# Create an indentity matrix
I <- diag(nrow(Q))
# Prepare the occupancy data
occ_ras <- raster::raster(test$init)
pv <- as.vector(occ_ras)
pv <- pv[is.finite(pv)]
# Pre-calc
f <- solve(I - Q)
fdg <- I
diag(fdg) <- 1/diag(f)
#Run the tests
test_that("Testing dispersal(samc, dest, time)", {
result <- dispersal(samc_obj, dest = col_vec[1], time = time)
result_char <- dispersal(samc_obj, dest = as.character(col_vec[1]), time = time)
expect_equal(result, result_char)
qj <- Q[-col_vec[1], col_vec[1]]
Qj <- Q[-col_vec[1],-col_vec[1]]
Qji <- diag(nrow(Qj))
base_result <- Qji
for (i in 1:(time - 1)) {
Qji <- Qji %*% Qj
base_result <- base_result + Qji
}
base_result <- base_result %*% qj
expect_equal(as.vector(result)[-col_vec[1]], as.vector(base_result))
})
test_that("Testing dispersal(samc, dest, time_vec)", {
result <- dispersal(samc_obj, dest = col_vec[1], time = time_vec)
result_char <- dispersal(samc_obj, dest = as.character(col_vec[1]), time = time_vec)
expect_equal(result, result_char)
qj <- Q[-col_vec[1], col_vec[1]]
Qj <- Q[-col_vec[1],-col_vec[1]]
for (i in 1:length(time_vec)) {
Qji <- diag(nrow(Qj))
base_result <- Qji
for (j in 1:(time_vec[i] - 1)) {
Qji <- Qji %*% Qj
base_result <- base_result + Qji
}
base_result <- base_result %*% qj
expect_equal((result[[i]])[-col_vec[1]], as.vector(base_result))
}
})
test_that("Testing dispersal(samc, init, dest, time)", {
result <- dispersal(samc_obj, init = test$init, dest = col_vec[1], time = time)
result_char <- dispersal(samc_obj, init = test$init, dest = as.character(col_vec[1]), time = time)
expect_equal(result, result_char)
qj <- Q[-col_vec[1], col_vec[1]]
Qj <- Q[-col_vec[1],-col_vec[1]]
Qji <- diag(nrow(Qj))
base_result <- Qji
for (i in 1:(time - 1)) {
Qji <- Qji %*% Qj
base_result <- base_result + Qji
}
base_result <- pv[-col_vec[1]] %*% (base_result %*% qj)
expect_equal(result, as.numeric(base_result))
})
test_that("Testing dispersal(samc, init, dest, time_vec)", {
result <- dispersal(samc_obj, init = test$init, dest = col_vec[1], time = time_vec)
result_char <- dispersal(samc_obj, init = test$init, dest = as.character(col_vec[1]), time = time_vec)
expect_equal(result, result_char)
qj <- Q[-col_vec[1], col_vec[1]]
for (i in 1:length(time_vec)) {
Qj <- Q[-col_vec[1],-col_vec[1]]
Qji <- diag(nrow(Qj))
base_result <- Qji
for (j in 1:(time_vec[i] - 1)) {
Qji <- Qji %*% Qj
base_result <- base_result + Qji
}
base_result <- pv[-col_vec[1]] %*% (base_result %*% qj)
expect_equal(result[[i]], as.numeric(base_result))
}
})
test_that("Testing dispersal(samc)", {
samc_obj$override <- TRUE
result <- dispersal(samc_obj)
samc_obj$override <- FALSE
base_result <- (f - I) %*% fdg
expect_equal(dim(result), dim(base_result))
expect_equal(as.vector(result), as.vector(base_result))
})
test_that("Testing dispersal(samc, origin)", {
result <- dispersal(samc_obj, origin = row_vec[1])
samc_obj@.cache$dgf_exists <- FALSE
samc_obj$threads <- 2
result_par <- dispersal(samc_obj, origin = row_vec[1])
samc_obj@.cache$dgf_exists <- FALSE
samc_obj$threads <- 1
expect_equal(result, result_par)
result_char <- dispersal(samc_obj, origin = as.character(row_vec[1]))
expect_equal(result, result_char)
base_result <- (f - I) %*% fdg
expect_equal(as.vector(result), as.vector(base_result[row_vec[1], ]))
})
test_that("Testing dispersal(samc, dest)", {
result <- dispersal(samc_obj, dest = col_vec[1])
result_char <- dispersal(samc_obj, dest = as.character(col_vec[1]))
expect_equal(result, result_char)
base_result <- (f - I) %*% fdg
# Verify
expect_equal(as.vector(result), as.vector(base_result[, col_vec[1]]))
})
test_that("Testing dispersal(samc, origin, dest)", {
base_result <- (f - I) %*% fdg
vector_result <- dispersal(samc_obj, origin = row_vec, dest = col_vec)
vector_result_char <- dispersal(samc_obj, origin = as.character(row_vec), dest = as.character(col_vec))
expect_equal(vector_result, vector_result_char)
for (i in 1:length(row_vec)) {
r <- dispersal(samc_obj, origin = row_vec[i], dest = col_vec[i])
expect_equal(vector_result[i], r)
expect_equal(r, base_result[row_vec[i], col_vec[i]], check.names = FALSE)
}
})
test_that("Testing dispersal(samc, init)", {
result <- dispersal(samc_obj, init = test$init)
samc_obj@.cache$dgf_exists <- FALSE
samc_obj$threads <- 2
result_par <- dispersal(samc_obj, init = test$init)
samc_obj@.cache$dgf_exists <- FALSE
samc_obj$threads <- 1
expect_equal(result, result_par)
base_result <- pv %*% (f - I) %*% fdg
# Verify
expect_equal(as.vector(result), as.vector(base_result))
})
test_that("Testing dispersal(samc, init, dest)", {
result <- dispersal(samc_obj, init = test$init, dest = col_vec[1])
result_char <- dispersal(samc_obj, init = test$init, dest = as.character(col_vec[1]))
expect_equal(result, result_char)
base_result <- pv %*% (f - I) %*% fdg
# Verify
expect_equal(result, as.vector(base_result)[col_vec[1]])
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.